summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto
diff options
context:
space:
mode:
authormarkus <>2002-09-05 12:51:52 +0000
committermarkus <>2002-09-05 12:51:52 +0000
commit5514995a9d5ed91db089875adb509c7781357c0e (patch)
tree2484410a46ba6c05ef94c253da36fbceef990b64 /src/lib/libcrypto
parentfd9566423b542798f5c8b06e68101a9ea5bb9885 (diff)
downloadopenbsd-5514995a9d5ed91db089875adb509c7781357c0e.tar.gz
openbsd-5514995a9d5ed91db089875adb509c7781357c0e.tar.bz2
openbsd-5514995a9d5ed91db089875adb509c7781357c0e.zip
import openssl-0.9.7-beta1
Diffstat (limited to 'src/lib/libcrypto')
-rw-r--r--src/lib/libcrypto/asn1/a_gentm.c39
-rw-r--r--src/lib/libcrypto/asn1/a_hdr.c33
-rw-r--r--src/lib/libcrypto/asn1/a_meth.c8
-rw-r--r--src/lib/libcrypto/asn1/a_utctm.c148
-rw-r--r--src/lib/libcrypto/asn1/p8_key.c4
-rw-r--r--src/lib/libcrypto/bf/asm/bf-686.pl1
-rw-r--r--src/lib/libcrypto/bf/bf_opts.c65
-rw-r--r--src/lib/libcrypto/bf/bfs.cpp2
-rw-r--r--src/lib/libcrypto/bf/bfspeed.c63
-rw-r--r--src/lib/libcrypto/bf/bftest.c61
-rw-r--r--src/lib/libcrypto/bio/bss_rtcp.c67
-rw-r--r--src/lib/libcrypto/bn/asm/README21
-rw-r--r--src/lib/libcrypto/bn/asm/alpha.s3161
-rw-r--r--src/lib/libcrypto/bn/asm/mips3.s573
-rw-r--r--src/lib/libcrypto/bn/asm/vms.mar697
-rw-r--r--src/lib/libcrypto/bn/bnspeed.c69
-rw-r--r--src/lib/libcrypto/bn/bntest.c1008
-rw-r--r--src/lib/libcrypto/bn/exp.c2
-rw-r--r--src/lib/libcrypto/bn/expspeed.c229
-rw-r--r--src/lib/libcrypto/bn/exptest.c77
-rw-r--r--src/lib/libcrypto/bn/vms-helper.c4
-rw-r--r--src/lib/libcrypto/cast/cast_spd.c63
-rw-r--r--src/lib/libcrypto/cast/castopts.c65
-rw-r--r--src/lib/libcrypto/cast/casts.cpp2
-rw-r--r--src/lib/libcrypto/cast/casttest.c199
-rw-r--r--src/lib/libcrypto/conf/cnf_save.c12
-rw-r--r--src/lib/libcrypto/conf/test.c11
-rw-r--r--src/lib/libcrypto/crypto-lib.com562
-rw-r--r--src/lib/libcrypto/des/VERSION1
-rw-r--r--src/lib/libcrypto/des/asm/des686.pl22
-rw-r--r--src/lib/libcrypto/des/asm/readme2
-rw-r--r--src/lib/libcrypto/des/cbc3_enc.c54
-rw-r--r--src/lib/libcrypto/des/des-lib.com4
-rw-r--r--src/lib/libcrypto/des/des.c220
-rw-r--r--src/lib/libcrypto/des/des3s.cpp2
-rw-r--r--src/lib/libcrypto/des/des_opts.c264
-rw-r--r--src/lib/libcrypto/des/des_ver.h11
-rw-r--r--src/lib/libcrypto/des/dess.cpp20
-rw-r--r--src/lib/libcrypto/des/destest.c410
-rw-r--r--src/lib/libcrypto/des/read2pwd.c77
-rw-r--r--src/lib/libcrypto/des/read_pwd.c218
-rw-r--r--src/lib/libcrypto/des/rpc_enc.c25
-rw-r--r--src/lib/libcrypto/des/rpw.c12
-rw-r--r--src/lib/libcrypto/des/speed.c117
-rw-r--r--src/lib/libcrypto/dh/dhtest.c84
-rw-r--r--src/lib/libcrypto/dh/p1024.c8
-rw-r--r--src/lib/libcrypto/dh/p192.c8
-rw-r--r--src/lib/libcrypto/dh/p512.c8
-rw-r--r--src/lib/libcrypto/dsa/dsagen.c5
-rw-r--r--src/lib/libcrypto/dsa/dsatest.c81
-rw-r--r--src/lib/libcrypto/dso/README24
-rw-r--r--src/lib/libcrypto/dso/dso_dl.c111
-rw-r--r--src/lib/libcrypto/dso/dso_vms.c86
-rw-r--r--src/lib/libcrypto/dso/dso_win32.c112
-rw-r--r--src/lib/libcrypto/ebcdic.c3
-rw-r--r--src/lib/libcrypto/ebcdic.h14
-rw-r--r--src/lib/libcrypto/engine/enginetest.c45
-rw-r--r--src/lib/libcrypto/engine/hw_4758_cca.c28
-rw-r--r--src/lib/libcrypto/engine/hw_atalla.c283
-rw-r--r--src/lib/libcrypto/engine/hw_cswift.c322
-rw-r--r--src/lib/libcrypto/engine/hw_ncipher.c662
-rw-r--r--src/lib/libcrypto/engine/vendor_defns/atalla.h13
-rw-r--r--src/lib/libcrypto/engine/vendor_defns/cswift.h45
-rw-r--r--src/lib/libcrypto/evp/bio_ok.c97
-rw-r--r--src/lib/libcrypto/evp/c_allc.c45
-rw-r--r--src/lib/libcrypto/evp/c_alld.c19
-rw-r--r--src/lib/libcrypto/evp/e_dsa.c6
-rw-r--r--src/lib/libcrypto/evp/e_rc5.c65
-rw-r--r--src/lib/libcrypto/evp/evp_test.c145
-rw-r--r--src/lib/libcrypto/evp/evptests.txt125
-rw-r--r--src/lib/libcrypto/evp/m_md2.c32
-rw-r--r--src/lib/libcrypto/evp/m_mdc2.c31
-rw-r--r--src/lib/libcrypto/evp/m_sha.c31
-rw-r--r--src/lib/libcrypto/hmac/hmactest.c37
-rw-r--r--src/lib/libcrypto/install.com28
-rw-r--r--src/lib/libcrypto/lhash/lh_test.c5
-rw-r--r--src/lib/libcrypto/lhash/num.pl2
-rw-r--r--src/lib/libcrypto/md2/md2.c20
-rw-r--r--src/lib/libcrypto/md2/md2.h18
-rw-r--r--src/lib/libcrypto/md2/md2_dgst.c39
-rw-r--r--src/lib/libcrypto/md2/md2_one.c23
-rw-r--r--src/lib/libcrypto/md2/md2test.c36
-rw-r--r--src/lib/libcrypto/md4/md4test.c7
-rw-r--r--src/lib/libcrypto/md5/asm/md5-sparcv9.S8
-rw-r--r--src/lib/libcrypto/md5/md5.c18
-rw-r--r--src/lib/libcrypto/md5/md5s.cpp2
-rw-r--r--src/lib/libcrypto/md5/md5test.c32
-rw-r--r--src/lib/libcrypto/mdc2/mdc2.h27
-rw-r--r--src/lib/libcrypto/mem.c454
-rw-r--r--src/lib/libcrypto/objects/obj_dat.h2646
-rw-r--r--src/lib/libcrypto/objects/obj_mac.h593
-rw-r--r--src/lib/libcrypto/opensslconf.h180
-rw-r--r--src/lib/libcrypto/opensslconf.h.in26
-rw-r--r--src/lib/libcrypto/perlasm/x86ms.pl21
-rw-r--r--src/lib/libcrypto/perlasm/x86unix.pl141
-rw-r--r--src/lib/libcrypto/pkcs7/bio_ber.c28
-rw-r--r--src/lib/libcrypto/pkcs7/dec.c12
-rw-r--r--src/lib/libcrypto/pkcs7/enc.c86
-rw-r--r--src/lib/libcrypto/pkcs7/example.c16
-rw-r--r--src/lib/libcrypto/pkcs7/pk7_dgst.c10
-rw-r--r--src/lib/libcrypto/pkcs7/pk7_enc.c10
-rw-r--r--src/lib/libcrypto/pkcs7/sign.c34
-rw-r--r--src/lib/libcrypto/pkcs7/verify.c66
-rw-r--r--src/lib/libcrypto/rand/md_rand.c639
-rw-r--r--src/lib/libcrypto/rand/rand_egd.c224
-rw-r--r--src/lib/libcrypto/rand/rand_lcl.h60
-rw-r--r--src/lib/libcrypto/rand/rand_unix.c38
-rw-r--r--src/lib/libcrypto/rand/rand_win.c67
-rw-r--r--src/lib/libcrypto/rand/randtest.c29
-rw-r--r--src/lib/libcrypto/rc2/rc2speed.c63
-rw-r--r--src/lib/libcrypto/rc2/rc2test.c33
-rw-r--r--src/lib/libcrypto/rc4/rc4.c12
-rw-r--r--src/lib/libcrypto/rc4/rc4s.cpp2
-rw-r--r--src/lib/libcrypto/rc4/rc4speed.c63
-rw-r--r--src/lib/libcrypto/rc4/rc4test.c24
-rw-r--r--src/lib/libcrypto/rc5/rc5.h36
-rw-r--r--src/lib/libcrypto/ripemd/asm/rips.cpp8
-rw-r--r--src/lib/libcrypto/ripemd/rmd160.c18
-rw-r--r--src/lib/libcrypto/ripemd/rmdtest.c40
-rw-r--r--src/lib/libcrypto/rsa/rsa_null.c23
-rw-r--r--src/lib/libcrypto/rsa/rsa_test.c14
-rw-r--r--src/lib/libcrypto/sha/sha.c19
-rw-r--r--src/lib/libcrypto/sha/sha1.c18
-rw-r--r--src/lib/libcrypto/sha/sha1s.cpp7
-rw-r--r--src/lib/libcrypto/sha/sha1test.c59
-rw-r--r--src/lib/libcrypto/sha/sha_dgst.c385
-rw-r--r--src/lib/libcrypto/sha/sha_one.c9
-rw-r--r--src/lib/libcrypto/sha/shatest.c59
-rw-r--r--src/lib/libcrypto/symhacks.h131
-rw-r--r--src/lib/libcrypto/threads/mttest.c247
-rw-r--r--src/lib/libcrypto/threads/th-lock.c138
-rw-r--r--src/lib/libcrypto/tmdiff.c138
-rw-r--r--src/lib/libcrypto/uid.c7
-rw-r--r--src/lib/libcrypto/util/add_cr.pl2
-rw-r--r--src/lib/libcrypto/util/ck_errf.pl3
-rw-r--r--src/lib/libcrypto/util/clean-depend.pl24
-rw-r--r--src/lib/libcrypto/util/deleof.pl2
-rw-r--r--src/lib/libcrypto/util/do_ms.sh8
-rw-r--r--src/lib/libcrypto/util/domd22
-rw-r--r--src/lib/libcrypto/util/err-ins.pl2
-rw-r--r--src/lib/libcrypto/util/files.pl2
-rw-r--r--src/lib/libcrypto/util/libeay.num3841
-rw-r--r--src/lib/libcrypto/util/mk1mf.pl432
-rw-r--r--src/lib/libcrypto/util/mkdef.pl1396
-rw-r--r--src/lib/libcrypto/util/mkfiles.pl9
-rw-r--r--src/lib/libcrypto/util/mklink.pl11
-rw-r--r--src/lib/libcrypto/util/perlpath.pl9
-rw-r--r--src/lib/libcrypto/util/pl/BC-16.pl18
-rw-r--r--src/lib/libcrypto/util/pl/BC-32.pl152
-rw-r--r--src/lib/libcrypto/util/pl/Mingw32.pl43
-rw-r--r--src/lib/libcrypto/util/pl/VC-16.pl17
-rw-r--r--src/lib/libcrypto/util/pl/VC-32.pl41
-rw-r--r--src/lib/libcrypto/util/pl/linux.pl20
-rw-r--r--src/lib/libcrypto/util/pl/unix.pl23
-rw-r--r--src/lib/libcrypto/util/pod2man.pl2
-rw-r--r--src/lib/libcrypto/util/pod2mantest53
-rw-r--r--src/lib/libcrypto/util/pod2mantest.pod15
-rw-r--r--src/lib/libcrypto/util/point.sh4
-rw-r--r--src/lib/libcrypto/util/selftest.pl31
-rw-r--r--src/lib/libcrypto/util/sp-diff.pl4
-rw-r--r--src/lib/libcrypto/util/src-dep.pl2
-rw-r--r--src/lib/libcrypto/util/ssleay.num373
-rw-r--r--src/lib/libcrypto/util/tab_num.pl2
-rw-r--r--src/lib/libcrypto/util/x86asm.sh4
-rw-r--r--src/lib/libcrypto/x509v3/v3conf.c1
-rw-r--r--src/lib/libcrypto/x509v3/v3prin.c2
166 files changed, 17929 insertions, 7119 deletions
diff --git a/src/lib/libcrypto/asn1/a_gentm.c b/src/lib/libcrypto/asn1/a_gentm.c
index 226474f057..cd09f68b38 100644
--- a/src/lib/libcrypto/asn1/a_gentm.c
+++ b/src/lib/libcrypto/asn1/a_gentm.c
@@ -61,8 +61,11 @@
61#include <stdio.h> 61#include <stdio.h>
62#include <time.h> 62#include <time.h>
63#include "cryptlib.h" 63#include "cryptlib.h"
64#include "o_time.h"
64#include <openssl/asn1.h> 65#include <openssl/asn1.h>
65 66
67#if 0
68
66int i2d_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME *a, unsigned char **pp) 69int i2d_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME *a, unsigned char **pp)
67 { 70 {
68#ifdef CHARSET_EBCDIC 71#ifdef CHARSET_EBCDIC
@@ -106,10 +109,12 @@ ASN1_GENERALIZEDTIME *d2i_ASN1_GENERALIZEDTIME(ASN1_GENERALIZEDTIME **a,
106 return(ret); 109 return(ret);
107err: 110err:
108 if ((ret != NULL) && ((a == NULL) || (*a != ret))) 111 if ((ret != NULL) && ((a == NULL) || (*a != ret)))
109 ASN1_GENERALIZEDTIME_free(ret); 112 M_ASN1_GENERALIZEDTIME_free(ret);
110 return(NULL); 113 return(NULL);
111 } 114 }
112 115
116#endif
117
113int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *d) 118int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *d)
114 { 119 {
115 static int min[9]={ 0, 0, 1, 1, 0, 0, 0, 0, 0}; 120 static int min[9]={ 0, 0, 1, 1, 0, 0, 0, 0, 0};
@@ -141,6 +146,19 @@ int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *d)
141 146
142 if ((n < min[i]) || (n > max[i])) goto err; 147 if ((n < min[i]) || (n > max[i])) goto err;
143 } 148 }
149 /* Optional fractional seconds: decimal point followed by one
150 * or more digits.
151 */
152 if (a[o] == '.')
153 {
154 if (++o > l) goto err;
155 i = o;
156 while ((a[o] >= '0') && (a[o] <= '9') && (o <= l))
157 o++;
158 /* Must have at least one digit after decimal point */
159 if (i == o) goto err;
160 }
161
144 if (a[o] == 'Z') 162 if (a[o] == 'Z')
145 o++; 163 o++;
146 else if ((a[o] == '+') || (a[o] == '-')) 164 else if ((a[o] == '+') || (a[o] == '-'))
@@ -176,6 +194,7 @@ int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, char *str)
176 { 194 {
177 ASN1_STRING_set((ASN1_STRING *)s, 195 ASN1_STRING_set((ASN1_STRING *)s,
178 (unsigned char *)str,t.length); 196 (unsigned char *)str,t.length);
197 s->type=V_ASN1_GENERALIZEDTIME;
179 } 198 }
180 return(1); 199 return(1);
181 } 200 }
@@ -188,28 +207,24 @@ ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s,
188 { 207 {
189 char *p; 208 char *p;
190 struct tm *ts; 209 struct tm *ts;
191#if defined(THREADS) && !defined(WIN32)
192 struct tm data; 210 struct tm data;
193#endif
194 211
195 if (s == NULL) 212 if (s == NULL)
196 s=ASN1_GENERALIZEDTIME_new(); 213 s=M_ASN1_GENERALIZEDTIME_new();
197 if (s == NULL) 214 if (s == NULL)
198 return(NULL); 215 return(NULL);
199 216
200#if defined(THREADS) && !defined(WIN32) 217 ts=OPENSSL_gmtime(&t, &data);
201 gmtime_r(&t,&data); /* should return &data, but doesn't on some systems, so we don't even look at the return value */ 218 if (ts == NULL)
202 ts=&data; 219 return(NULL);
203#else 220
204 ts=gmtime(&t);
205#endif
206 p=(char *)s->data; 221 p=(char *)s->data;
207 if ((p == NULL) || (s->length < 16)) 222 if ((p == NULL) || (s->length < 16))
208 { 223 {
209 p=Malloc(20); 224 p=OPENSSL_malloc(20);
210 if (p == NULL) return(NULL); 225 if (p == NULL) return(NULL);
211 if (s->data != NULL) 226 if (s->data != NULL)
212 Free(s->data); 227 OPENSSL_free(s->data);
213 s->data=(unsigned char *)p; 228 s->data=(unsigned char *)p;
214 } 229 }
215 230
diff --git a/src/lib/libcrypto/asn1/a_hdr.c b/src/lib/libcrypto/asn1/a_hdr.c
index 4fb7a5fa75..b1aad81f77 100644
--- a/src/lib/libcrypto/asn1/a_hdr.c
+++ b/src/lib/libcrypto/asn1/a_hdr.c
@@ -58,19 +58,10 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include "asn1_mac.h" 61#include <openssl/asn1_mac.h>
62#include "asn1.h" 62#include <openssl/asn1.h>
63 63
64/* 64int i2d_ASN1_HEADER(ASN1_HEADER *a, unsigned char **pp)
65 * ASN1err(ASN1_F_D2I_ASN1_HEADER,ASN1_R_LENGTH_MISMATCH);
66 * ASN1err(ASN1_F_I2D_ASN1_HEADER,ASN1_R_BAD_GET_OBJECT);
67 * ASN1err(ASN1_F_I2D_ASN1_HEADER,ASN1_R_BAD_GET_OBJECT);
68 * ASN1err(ASN1_F_ASN1_HEADER_NEW,ASN1_R_BAD_GET_OBJECT);
69 */
70
71int i2d_ASN1_HEADER(a,pp)
72ASN1_HEADER *a;
73unsigned char **pp;
74 { 65 {
75 M_ASN1_I2D_vars(a); 66 M_ASN1_I2D_vars(a);
76 67
@@ -85,10 +76,8 @@ unsigned char **pp;
85 M_ASN1_I2D_finish(); 76 M_ASN1_I2D_finish();
86 } 77 }
87 78
88ASN1_HEADER *d2i_ASN1_HEADER(a,pp,length) 79ASN1_HEADER *d2i_ASN1_HEADER(ASN1_HEADER **a, unsigned char **pp,
89ASN1_HEADER **a; 80 long length)
90unsigned char **pp;
91long length;
92 { 81 {
93 M_ASN1_D2I_vars(a,ASN1_HEADER *,ASN1_HEADER_new); 82 M_ASN1_D2I_vars(a,ASN1_HEADER *,ASN1_HEADER_new);
94 83
@@ -107,24 +96,24 @@ long length;
107 M_ASN1_D2I_Finish(a,ASN1_HEADER_free,ASN1_F_D2I_ASN1_HEADER); 96 M_ASN1_D2I_Finish(a,ASN1_HEADER_free,ASN1_F_D2I_ASN1_HEADER);
108 } 97 }
109 98
110ASN1_HEADER *ASN1_HEADER_new() 99ASN1_HEADER *ASN1_HEADER_new(void)
111 { 100 {
112 ASN1_HEADER *ret=NULL; 101 ASN1_HEADER *ret=NULL;
102 ASN1_CTX c;
113 103
114 M_ASN1_New_Malloc(ret,ASN1_HEADER); 104 M_ASN1_New_Malloc(ret,ASN1_HEADER);
115 M_ASN1_New(ret->header,ASN1_OCTET_STRING_new); 105 M_ASN1_New(ret->header,M_ASN1_OCTET_STRING_new);
116 ret->meth=NULL; 106 ret->meth=NULL;
117 ret->data=NULL; 107 ret->data=NULL;
118 return(ret); 108 return(ret);
119 M_ASN1_New_Error(ASN1_F_ASN1_HEADER_NEW); 109 M_ASN1_New_Error(ASN1_F_ASN1_HEADER_NEW);
120 } 110 }
121 111
122void ASN1_HEADER_free(a) 112void ASN1_HEADER_free(ASN1_HEADER *a)
123ASN1_HEADER *a;
124 { 113 {
125 if (a == NULL) return; 114 if (a == NULL) return;
126 ASN1_OCTET_STRING_free(a->header); 115 M_ASN1_OCTET_STRING_free(a->header);
127 if (a->meth != NULL) 116 if (a->meth != NULL)
128 a->meth->destroy(a->data); 117 a->meth->destroy(a->data);
129 Free((char *)a); 118 OPENSSL_free(a);
130 } 119 }
diff --git a/src/lib/libcrypto/asn1/a_meth.c b/src/lib/libcrypto/asn1/a_meth.c
index 513625c305..63158e9cab 100644
--- a/src/lib/libcrypto/asn1/a_meth.c
+++ b/src/lib/libcrypto/asn1/a_meth.c
@@ -58,8 +58,8 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include "buffer.h" 61#include <openssl/buffer.h>
62#include "x509.h" 62#include <openssl/asn1.h>
63 63
64static ASN1_METHOD ia5string_meth={ 64static ASN1_METHOD ia5string_meth={
65 (int (*)()) i2d_ASN1_IA5STRING, 65 (int (*)()) i2d_ASN1_IA5STRING,
@@ -73,12 +73,12 @@ static ASN1_METHOD bit_string_meth={
73 (char *(*)()) ASN1_STRING_new, 73 (char *(*)()) ASN1_STRING_new,
74 (void (*)()) ASN1_STRING_free}; 74 (void (*)()) ASN1_STRING_free};
75 75
76ASN1_METHOD *ASN1_IA5STRING_asn1_meth() 76ASN1_METHOD *ASN1_IA5STRING_asn1_meth(void)
77 { 77 {
78 return(&ia5string_meth); 78 return(&ia5string_meth);
79 } 79 }
80 80
81ASN1_METHOD *ASN1_BIT_STRING_asn1_meth() 81ASN1_METHOD *ASN1_BIT_STRING_asn1_meth(void)
82 { 82 {
83 return(&bit_string_meth); 83 return(&bit_string_meth);
84 } 84 }
diff --git a/src/lib/libcrypto/asn1/a_utctm.c b/src/lib/libcrypto/asn1/a_utctm.c
index 17a7abbb67..ed2d827db2 100644
--- a/src/lib/libcrypto/asn1/a_utctm.c
+++ b/src/lib/libcrypto/asn1/a_utctm.c
@@ -59,25 +59,31 @@
59#include <stdio.h> 59#include <stdio.h>
60#include <time.h> 60#include <time.h>
61#include "cryptlib.h" 61#include "cryptlib.h"
62#include "asn1.h" 62#include "o_time.h"
63#include <openssl/asn1.h>
63 64
64/* ASN1err(ASN1_F_ASN1_UTCTIME_NEW,ASN1_R_UTCTIME_TOO_LONG); 65#if 0
65 * ASN1err(ASN1_F_D2I_ASN1_UTCTIME,ASN1_R_EXPECTING_A_UTCTIME); 66int i2d_ASN1_UTCTIME(ASN1_UTCTIME *a, unsigned char **pp)
66 */
67
68int i2d_ASN1_UTCTIME(a,pp)
69ASN1_UTCTIME *a;
70unsigned char **pp;
71 { 67 {
68#ifndef CHARSET_EBCDIC
72 return(i2d_ASN1_bytes((ASN1_STRING *)a,pp, 69 return(i2d_ASN1_bytes((ASN1_STRING *)a,pp,
73 V_ASN1_UTCTIME,V_ASN1_UNIVERSAL)); 70 V_ASN1_UTCTIME,V_ASN1_UNIVERSAL));
71#else
72 /* KLUDGE! We convert to ascii before writing DER */
73 int len;
74 char tmp[24];
75 ASN1_STRING x = *(ASN1_STRING *)a;
76
77 len = x.length;
78 ebcdic2ascii(tmp, x.data, (len >= sizeof tmp) ? sizeof tmp : len);
79 x.data = tmp;
80 return i2d_ASN1_bytes(&x, pp, V_ASN1_UTCTIME,V_ASN1_UNIVERSAL);
81#endif
74 } 82 }
75 83
76 84
77ASN1_UTCTIME *d2i_ASN1_UTCTIME(a, pp, length) 85ASN1_UTCTIME *d2i_ASN1_UTCTIME(ASN1_UTCTIME **a, unsigned char **pp,
78ASN1_UTCTIME **a; 86 long length)
79unsigned char **pp;
80long length;
81 { 87 {
82 ASN1_UTCTIME *ret=NULL; 88 ASN1_UTCTIME *ret=NULL;
83 89
@@ -85,9 +91,12 @@ long length;
85 V_ASN1_UTCTIME,V_ASN1_UNIVERSAL); 91 V_ASN1_UTCTIME,V_ASN1_UNIVERSAL);
86 if (ret == NULL) 92 if (ret == NULL)
87 { 93 {
88 ASN1err(ASN1_F_D2I_ASN1_UTCTIME,ASN1_R_ERROR_STACK); 94 ASN1err(ASN1_F_D2I_ASN1_UTCTIME,ERR_R_NESTED_ASN1_ERROR);
89 return(NULL); 95 return(NULL);
90 } 96 }
97#ifdef CHARSET_EBCDIC
98 ascii2ebcdic(ret->data, ret->data, ret->length);
99#endif
91 if (!ASN1_UTCTIME_check(ret)) 100 if (!ASN1_UTCTIME_check(ret))
92 { 101 {
93 ASN1err(ASN1_F_D2I_ASN1_UTCTIME,ASN1_R_INVALID_TIME_FORMAT); 102 ASN1err(ASN1_F_D2I_ASN1_UTCTIME,ASN1_R_INVALID_TIME_FORMAT);
@@ -97,12 +106,13 @@ long length;
97 return(ret); 106 return(ret);
98err: 107err:
99 if ((ret != NULL) && ((a == NULL) || (*a != ret))) 108 if ((ret != NULL) && ((a == NULL) || (*a != ret)))
100 ASN1_UTCTIME_free(ret); 109 M_ASN1_UTCTIME_free(ret);
101 return(NULL); 110 return(NULL);
102 } 111 }
103 112
104int ASN1_UTCTIME_check(d) 113#endif
105ASN1_UTCTIME *d; 114
115int ASN1_UTCTIME_check(ASN1_UTCTIME *d)
106 { 116 {
107 static int min[8]={ 0, 1, 1, 0, 0, 0, 0, 0}; 117 static int min[8]={ 0, 1, 1, 0, 0, 0, 0, 0};
108 static int max[8]={99,12,31,23,59,59,12,59}; 118 static int max[8]={99,12,31,23,59,59,12,59};
@@ -152,9 +162,7 @@ err:
152 return(0); 162 return(0);
153 } 163 }
154 164
155int ASN1_UTCTIME_set_string(s,str) 165int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, char *str)
156ASN1_UTCTIME *s;
157char *str;
158 { 166 {
159 ASN1_UTCTIME t; 167 ASN1_UTCTIME t;
160 168
@@ -167,6 +175,7 @@ char *str;
167 { 175 {
168 ASN1_STRING_set((ASN1_STRING *)s, 176 ASN1_STRING_set((ASN1_STRING *)s,
169 (unsigned char *)str,t.length); 177 (unsigned char *)str,t.length);
178 s->type = V_ASN1_UTCTIME;
170 } 179 }
171 return(1); 180 return(1);
172 } 181 }
@@ -174,33 +183,28 @@ char *str;
174 return(0); 183 return(0);
175 } 184 }
176 185
177ASN1_UTCTIME *ASN1_UTCTIME_set(s, t) 186ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t)
178ASN1_UTCTIME *s;
179time_t t;
180 { 187 {
181 char *p; 188 char *p;
182 struct tm *ts; 189 struct tm *ts;
183#if defined(THREADS)
184 struct tm data; 190 struct tm data;
185#endif
186 191
187 if (s == NULL) 192 if (s == NULL)
188 s=ASN1_UTCTIME_new(); 193 s=M_ASN1_UTCTIME_new();
189 if (s == NULL) 194 if (s == NULL)
190 return(NULL); 195 return(NULL);
191 196
192#if defined(THREADS) 197 ts=OPENSSL_gmtime(&t, &data);
193 ts=(struct tm *)gmtime_r(&t,&data); 198 if (ts == NULL)
194#else 199 return(NULL);
195 ts=(struct tm *)gmtime(&t); 200
196#endif
197 p=(char *)s->data; 201 p=(char *)s->data;
198 if ((p == NULL) || (s->length < 14)) 202 if ((p == NULL) || (s->length < 14))
199 { 203 {
200 p=Malloc(20); 204 p=OPENSSL_malloc(20);
201 if (p == NULL) return(NULL); 205 if (p == NULL) return(NULL);
202 if (s->data != NULL) 206 if (s->data != NULL)
203 Free(s->data); 207 OPENSSL_free(s->data);
204 s->data=(unsigned char *)p; 208 s->data=(unsigned char *)p;
205 } 209 }
206 210
@@ -208,5 +212,85 @@ time_t t;
208 ts->tm_mon+1,ts->tm_mday,ts->tm_hour,ts->tm_min,ts->tm_sec); 212 ts->tm_mon+1,ts->tm_mday,ts->tm_hour,ts->tm_min,ts->tm_sec);
209 s->length=strlen(p); 213 s->length=strlen(p);
210 s->type=V_ASN1_UTCTIME; 214 s->type=V_ASN1_UTCTIME;
215#ifdef CHARSET_EBCDIC_not
216 ebcdic2ascii(s->data, s->data, s->length);
217#endif
211 return(s); 218 return(s);
212 } 219 }
220
221
222int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t)
223 {
224 struct tm *tm;
225 int offset;
226 int year;
227
228#define g2(p) (((p)[0]-'0')*10+(p)[1]-'0')
229
230 if (s->data[12] == 'Z')
231 offset=0;
232 else
233 {
234 offset = g2(s->data+13)*60+g2(s->data+15);
235 if (s->data[12] == '-')
236 offset = -offset;
237 }
238
239 t -= offset*60; /* FIXME: may overflow in extreme cases */
240
241 { struct tm data; tm = OPENSSL_gmtime(&t, &data); }
242
243#define return_cmp(a,b) if ((a)<(b)) return -1; else if ((a)>(b)) return 1
244 year = g2(s->data);
245 if (year < 50)
246 year += 100;
247 return_cmp(year, tm->tm_year);
248 return_cmp(g2(s->data+2) - 1, tm->tm_mon);
249 return_cmp(g2(s->data+4), tm->tm_mday);
250 return_cmp(g2(s->data+6), tm->tm_hour);
251 return_cmp(g2(s->data+8), tm->tm_min);
252 return_cmp(g2(s->data+10), tm->tm_sec);
253#undef g2
254#undef return_cmp
255
256 return 0;
257 }
258
259
260#if 0
261time_t ASN1_UTCTIME_get(const ASN1_UTCTIME *s)
262 {
263 struct tm tm;
264 int offset;
265
266 memset(&tm,'\0',sizeof tm);
267
268#define g2(p) (((p)[0]-'0')*10+(p)[1]-'0')
269 tm.tm_year=g2(s->data);
270 if(tm.tm_year < 50)
271 tm.tm_year+=100;
272 tm.tm_mon=g2(s->data+2)-1;
273 tm.tm_mday=g2(s->data+4);
274 tm.tm_hour=g2(s->data+6);
275 tm.tm_min=g2(s->data+8);
276 tm.tm_sec=g2(s->data+10);
277 if(s->data[12] == 'Z')
278 offset=0;
279 else
280 {
281 offset=g2(s->data+13)*60+g2(s->data+15);
282 if(s->data[12] == '-')
283 offset= -offset;
284 }
285#undef g2
286
287 return mktime(&tm)-offset*60; /* FIXME: mktime assumes the current timezone
288 * instead of UTC, and unless we rewrite OpenSSL
289 * in Lisp we cannot locally change the timezone
290 * without possibly interfering with other parts
291 * of the program. timegm, which uses UTC, is
292 * non-standard.
293 * Also time_t is inappropriate for general
294 * UTC times because it may a 32 bit type. */
295 }
296#endif
diff --git a/src/lib/libcrypto/asn1/p8_key.c b/src/lib/libcrypto/asn1/p8_key.c
index 0b24374627..3a31248e14 100644
--- a/src/lib/libcrypto/asn1/p8_key.c
+++ b/src/lib/libcrypto/asn1/p8_key.c
@@ -94,7 +94,7 @@ X509 *X509_KEY_new(void)
94 { 94 {
95 X509_KEY *ret=NULL; 95 X509_KEY *ret=NULL;
96 96
97 M_ASN1_New_Malloc(ret,X509_KEY); 97 M_ASN1_New_OPENSSL_malloc(ret,X509_KEY);
98 ret->references=1; 98 ret->references=1;
99 ret->type=NID 99 ret->type=NID
100 M_ASN1_New(ret->cert_info,X509_CINF_new); 100 M_ASN1_New(ret->cert_info,X509_CINF_new);
@@ -126,6 +126,6 @@ void X509_KEY_free(X509 *a)
126 X509_CINF_free(a->cert_info); 126 X509_CINF_free(a->cert_info);
127 X509_ALGOR_free(a->sig_alg); 127 X509_ALGOR_free(a->sig_alg);
128 ASN1_BIT_STRING_free(a->signature); 128 ASN1_BIT_STRING_free(a->signature);
129 Free(a); 129 OPENSSL_free(a);
130 } 130 }
131 131
diff --git a/src/lib/libcrypto/bf/asm/bf-686.pl b/src/lib/libcrypto/bf/asm/bf-686.pl
index bed303d786..8e4c25f598 100644
--- a/src/lib/libcrypto/bf/asm/bf-686.pl
+++ b/src/lib/libcrypto/bf/asm/bf-686.pl
@@ -1,4 +1,3 @@
1#!/usr/bin/perl
2#!/usr/local/bin/perl 1#!/usr/local/bin/perl
3 2
4push(@INC,"perlasm","../../perlasm"); 3push(@INC,"perlasm","../../perlasm");
diff --git a/src/lib/libcrypto/bf/bf_opts.c b/src/lib/libcrypto/bf/bf_opts.c
index 5cfa60c537..171dada2ca 100644
--- a/src/lib/libcrypto/bf/bf_opts.c
+++ b/src/lib/libcrypto/bf/bf_opts.c
@@ -59,19 +59,17 @@
59/* define PART1, PART2, PART3 or PART4 to build only with a few of the options. 59/* define PART1, PART2, PART3 or PART4 to build only with a few of the options.
60 * This is for machines with 64k code segment size restrictions. */ 60 * This is for machines with 64k code segment size restrictions. */
61 61
62#ifndef MSDOS 62#if !defined(OPENSSL_SYS_MSDOS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC)) && !defined(OPENSSL_SYS_MACOSX)
63#define TIMES 63#define TIMES
64#endif 64#endif
65 65
66#include <stdio.h> 66#include <stdio.h>
67#ifndef MSDOS 67
68#include <unistd.h> 68#include <openssl/e_os2.h>
69#else 69#include OPENSSL_UNISTD_IO
70#include <io.h> 70OPENSSL_DECLARE_EXIT
71extern void exit(); 71
72#endif
73#include <signal.h> 72#include <signal.h>
74#ifndef VMS
75#ifndef _IRIX 73#ifndef _IRIX
76#include <time.h> 74#include <time.h>
77#endif 75#endif
@@ -79,25 +77,26 @@ extern void exit();
79#include <sys/types.h> 77#include <sys/types.h>
80#include <sys/times.h> 78#include <sys/times.h>
81#endif 79#endif
82#else /* VMS */ 80
83#include <types.h> 81/* Depending on the VMS version, the tms structure is perhaps defined.
84struct tms { 82 The __TMS macro will show if it was. If it wasn't defined, we should
85 time_t tms_utime; 83 undefine TIMES, since that tells the rest of the program how things
86 time_t tms_stime; 84 should be handled. -- Richard Levitte */
87 time_t tms_uchild; /* I dunno... */ 85#if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS)
88 time_t tms_uchildsys; /* so these names are a guess :-) */ 86#undef TIMES
89 }
90#endif 87#endif
88
91#ifndef TIMES 89#ifndef TIMES
92#include <sys/timeb.h> 90#include <sys/timeb.h>
93#endif 91#endif
94 92
95#ifdef sun 93#if defined(sun) || defined(__ultrix)
94#define _POSIX_SOURCE
96#include <limits.h> 95#include <limits.h>
97#include <sys/param.h> 96#include <sys/param.h>
98#endif 97#endif
99 98
100#include "blowfish.h" 99#include <openssl/blowfish.h>
101 100
102#define BF_DEFAULT_OPTIONS 101#define BF_DEFAULT_OPTIONS
103 102
@@ -126,11 +125,7 @@ struct tms {
126#ifndef HZ 125#ifndef HZ
127# ifndef CLK_TCK 126# ifndef CLK_TCK
128# ifndef _BSD_CLK_TCK_ /* FreeBSD fix */ 127# ifndef _BSD_CLK_TCK_ /* FreeBSD fix */
129# ifndef VMS 128# define HZ 100.0
130# define HZ 100.0
131# else /* VMS */
132# define HZ 100.0
133# endif
134# else /* _BSD_CLK_TCK_ */ 129# else /* _BSD_CLK_TCK_ */
135# define HZ ((double)_BSD_CLK_TCK_) 130# define HZ ((double)_BSD_CLK_TCK_)
136# endif 131# endif
@@ -142,12 +137,7 @@ struct tms {
142#define BUFSIZE ((long)1024) 137#define BUFSIZE ((long)1024)
143long run=0; 138long run=0;
144 139
145#ifndef NOPROTO
146double Time_F(int s); 140double Time_F(int s);
147#else
148double Time_F();
149#endif
150
151#ifdef SIGALRM 141#ifdef SIGALRM
152#if defined(__STDC__) || defined(sgi) 142#if defined(__STDC__) || defined(sgi)
153#define SIGRETTYPE void 143#define SIGRETTYPE void
@@ -155,14 +145,8 @@ double Time_F();
155#define SIGRETTYPE int 145#define SIGRETTYPE int
156#endif 146#endif
157 147
158#ifndef NOPROTO
159SIGRETTYPE sig_done(int sig); 148SIGRETTYPE sig_done(int sig);
160#else 149SIGRETTYPE sig_done(int sig)
161SIGRETTYPE sig_done();
162#endif
163
164SIGRETTYPE sig_done(sig)
165int sig;
166 { 150 {
167 signal(SIGALRM,sig_done); 151 signal(SIGALRM,sig_done);
168 run=0; 152 run=0;
@@ -175,8 +159,7 @@ int sig;
175#define START 0 159#define START 0
176#define STOP 1 160#define STOP 1
177 161
178double Time_F(s) 162double Time_F(int s)
179int s;
180 { 163 {
181 double ret; 164 double ret;
182#ifdef TIMES 165#ifdef TIMES
@@ -237,9 +220,7 @@ int s;
237 fprintf(stderr,"%s bytes per sec = %12.2f (%5.1fuS)\n",name, \ 220 fprintf(stderr,"%s bytes per sec = %12.2f (%5.1fuS)\n",name, \
238 tm[index]*8,1.0e6/tm[index]); 221 tm[index]*8,1.0e6/tm[index]);
239 222
240int main(argc,argv) 223int main(int argc, char **argv)
241int argc;
242char **argv;
243 { 224 {
244 long count; 225 long count;
245 static unsigned char buf[BUFSIZE]; 226 static unsigned char buf[BUFSIZE];
@@ -261,7 +242,7 @@ char **argv;
261 } 242 }
262 243
263#ifndef TIMES 244#ifndef TIMES
264 fprintf(stderr,"To get the most acurate results, try to run this\n"); 245 fprintf(stderr,"To get the most accurate results, try to run this\n");
265 fprintf(stderr,"program when this computer is idle.\n"); 246 fprintf(stderr,"program when this computer is idle.\n");
266#endif 247#endif
267 248
@@ -341,7 +322,7 @@ char **argv;
341 break; 322 break;
342 } 323 }
343 exit(0); 324 exit(0);
344#if defined(LINT) || defined(MSDOS) 325#if defined(LINT) || defined(OPENSSL_SYS_MSDOS)
345 return(0); 326 return(0);
346#endif 327#endif
347 } 328 }
diff --git a/src/lib/libcrypto/bf/bfs.cpp b/src/lib/libcrypto/bf/bfs.cpp
index 272ed2f978..d74c457760 100644
--- a/src/lib/libcrypto/bf/bfs.cpp
+++ b/src/lib/libcrypto/bf/bfs.cpp
@@ -32,7 +32,7 @@ void GetTSC(unsigned long& tsc)
32 32
33#include <stdio.h> 33#include <stdio.h>
34#include <stdlib.h> 34#include <stdlib.h>
35#include "blowfish.h" 35#include <openssl/blowfish.h>
36 36
37void main(int argc,char *argv[]) 37void main(int argc,char *argv[])
38 { 38 {
diff --git a/src/lib/libcrypto/bf/bfspeed.c b/src/lib/libcrypto/bf/bfspeed.c
index 640d820dd3..f346af64f3 100644
--- a/src/lib/libcrypto/bf/bfspeed.c
+++ b/src/lib/libcrypto/bf/bfspeed.c
@@ -59,19 +59,17 @@
59/* 11-Sep-92 Andrew Daviel Support for Silicon Graphics IRIX added */ 59/* 11-Sep-92 Andrew Daviel Support for Silicon Graphics IRIX added */
60/* 06-Apr-92 Luke Brennan Support for VMS and add extra signal calls */ 60/* 06-Apr-92 Luke Brennan Support for VMS and add extra signal calls */
61 61
62#ifndef MSDOS 62#if !defined(OPENSSL_SYS_MSDOS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC)) && !defined(OPENSSL_SYS_MACOSX)
63#define TIMES 63#define TIMES
64#endif 64#endif
65 65
66#include <stdio.h> 66#include <stdio.h>
67#ifndef MSDOS 67
68#include <unistd.h> 68#include <openssl/e_os2.h>
69#else 69#include OPENSSL_UNISTD_IO
70#include <io.h> 70OPENSSL_DECLARE_EXIT
71extern int exit(); 71
72#endif
73#include <signal.h> 72#include <signal.h>
74#ifndef VMS
75#ifndef _IRIX 73#ifndef _IRIX
76#include <time.h> 74#include <time.h>
77#endif 75#endif
@@ -79,34 +77,31 @@ extern int exit();
79#include <sys/types.h> 77#include <sys/types.h>
80#include <sys/times.h> 78#include <sys/times.h>
81#endif 79#endif
82#else /* VMS */ 80
83#include <types.h> 81/* Depending on the VMS version, the tms structure is perhaps defined.
84struct tms { 82 The __TMS macro will show if it was. If it wasn't defined, we should
85 time_t tms_utime; 83 undefine TIMES, since that tells the rest of the program how things
86 time_t tms_stime; 84 should be handled. -- Richard Levitte */
87 time_t tms_uchild; /* I dunno... */ 85#if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS)
88 time_t tms_uchildsys; /* so these names are a guess :-) */ 86#undef TIMES
89 }
90#endif 87#endif
88
91#ifndef TIMES 89#ifndef TIMES
92#include <sys/timeb.h> 90#include <sys/timeb.h>
93#endif 91#endif
94 92
95#ifdef sun 93#if defined(sun) || defined(__ultrix)
94#define _POSIX_SOURCE
96#include <limits.h> 95#include <limits.h>
97#include <sys/param.h> 96#include <sys/param.h>
98#endif 97#endif
99 98
100#include "blowfish.h" 99#include <openssl/blowfish.h>
101 100
102/* The following if from times(3) man page. It may need to be changed */ 101/* The following if from times(3) man page. It may need to be changed */
103#ifndef HZ 102#ifndef HZ
104#ifndef CLK_TCK 103#ifndef CLK_TCK
105#ifndef VMS
106#define HZ 100.0
107#else /* VMS */
108#define HZ 100.0 104#define HZ 100.0
109#endif
110#else /* CLK_TCK */ 105#else /* CLK_TCK */
111#define HZ ((double)CLK_TCK) 106#define HZ ((double)CLK_TCK)
112#endif 107#endif
@@ -115,12 +110,7 @@ struct tms {
115#define BUFSIZE ((long)1024) 110#define BUFSIZE ((long)1024)
116long run=0; 111long run=0;
117 112
118#ifndef NOPROTO
119double Time_F(int s); 113double Time_F(int s);
120#else
121double Time_F();
122#endif
123
124#ifdef SIGALRM 114#ifdef SIGALRM
125#if defined(__STDC__) || defined(sgi) || defined(_AIX) 115#if defined(__STDC__) || defined(sgi) || defined(_AIX)
126#define SIGRETTYPE void 116#define SIGRETTYPE void
@@ -128,14 +118,8 @@ double Time_F();
128#define SIGRETTYPE int 118#define SIGRETTYPE int
129#endif 119#endif
130 120
131#ifndef NOPROTO
132SIGRETTYPE sig_done(int sig); 121SIGRETTYPE sig_done(int sig);
133#else 122SIGRETTYPE sig_done(int sig)
134SIGRETTYPE sig_done();
135#endif
136
137SIGRETTYPE sig_done(sig)
138int sig;
139 { 123 {
140 signal(SIGALRM,sig_done); 124 signal(SIGALRM,sig_done);
141 run=0; 125 run=0;
@@ -148,8 +132,7 @@ int sig;
148#define START 0 132#define START 0
149#define STOP 1 133#define STOP 1
150 134
151double Time_F(s) 135double Time_F(int s)
152int s;
153 { 136 {
154 double ret; 137 double ret;
155#ifdef TIMES 138#ifdef TIMES
@@ -185,9 +168,7 @@ int s;
185#endif 168#endif
186 } 169 }
187 170
188int main(argc,argv) 171int main(int argc, char **argv)
189int argc;
190char **argv;
191 { 172 {
192 long count; 173 long count;
193 static unsigned char buf[BUFSIZE]; 174 static unsigned char buf[BUFSIZE];
@@ -202,7 +183,7 @@ char **argv;
202#endif 183#endif
203 184
204#ifndef TIMES 185#ifndef TIMES
205 printf("To get the most acurate results, try to run this\n"); 186 printf("To get the most accurate results, try to run this\n");
206 printf("program when this computer is idle.\n"); 187 printf("program when this computer is idle.\n");
207#endif 188#endif
208 189
@@ -287,7 +268,7 @@ char **argv;
287 printf("Blowfish raw ecb bytes per sec = %12.3f (%9.3fuS)\n",b,8.0e6/b); 268 printf("Blowfish raw ecb bytes per sec = %12.3f (%9.3fuS)\n",b,8.0e6/b);
288 printf("Blowfish cbc bytes per sec = %12.3f (%9.3fuS)\n",c,8.0e6/c); 269 printf("Blowfish cbc bytes per sec = %12.3f (%9.3fuS)\n",c,8.0e6/c);
289 exit(0); 270 exit(0);
290#if defined(LINT) || defined(MSDOS) 271#if defined(LINT) || defined(OPENSSL_SYS_MSDOS)
291 return(0); 272 return(0);
292#endif 273#endif
293 } 274 }
diff --git a/src/lib/libcrypto/bf/bftest.c b/src/lib/libcrypto/bf/bftest.c
index 9266cf813a..09895f2542 100644
--- a/src/lib/libcrypto/bf/bftest.c
+++ b/src/lib/libcrypto/bf/bftest.c
@@ -62,20 +62,32 @@
62#include <stdio.h> 62#include <stdio.h>
63#include <string.h> 63#include <string.h>
64#include <stdlib.h> 64#include <stdlib.h>
65#include "blowfish.h"
66 65
67char *bf_key[2]={ 66#ifdef OPENSSL_NO_BF
67int main(int argc, char *argv[])
68{
69 printf("No BF support\n");
70 return(0);
71}
72#else
73#include <openssl/blowfish.h>
74
75#ifdef CHARSET_EBCDIC
76#include <openssl/ebcdic.h>
77#endif
78
79static char *bf_key[2]={
68 "abcdefghijklmnopqrstuvwxyz", 80 "abcdefghijklmnopqrstuvwxyz",
69 "Who is John Galt?" 81 "Who is John Galt?"
70 }; 82 };
71 83
72/* big endian */ 84/* big endian */
73BF_LONG bf_plain[2][2]={ 85static BF_LONG bf_plain[2][2]={
74 {0x424c4f57L,0x46495348L}, 86 {0x424c4f57L,0x46495348L},
75 {0xfedcba98L,0x76543210L} 87 {0xfedcba98L,0x76543210L}
76 }; 88 };
77 89
78BF_LONG bf_cipher[2][2]={ 90static BF_LONG bf_cipher[2][2]={
79 {0x324ed0feL,0xf413a203L}, 91 {0x324ed0feL,0xf413a203L},
80 {0xcc91732bL,0x8022f684L} 92 {0xcc91732bL,0x8022f684L}
81 }; 93 };
@@ -216,16 +228,16 @@ static unsigned char ofb64_ok[]={
216 0x63,0xC2,0xCF,0x80,0xDA}; 228 0x63,0xC2,0xCF,0x80,0xDA};
217 229
218#define KEY_TEST_NUM 25 230#define KEY_TEST_NUM 25
219unsigned char key_test[KEY_TEST_NUM]={ 231static unsigned char key_test[KEY_TEST_NUM]={
220 0xf0,0xe1,0xd2,0xc3,0xb4,0xa5,0x96,0x87, 232 0xf0,0xe1,0xd2,0xc3,0xb4,0xa5,0x96,0x87,
221 0x78,0x69,0x5a,0x4b,0x3c,0x2d,0x1e,0x0f, 233 0x78,0x69,0x5a,0x4b,0x3c,0x2d,0x1e,0x0f,
222 0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77, 234 0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,
223 0x88}; 235 0x88};
224 236
225unsigned char key_data[8]= 237static unsigned char key_data[8]=
226 {0xFE,0xDC,0xBA,0x98,0x76,0x54,0x32,0x10}; 238 {0xFE,0xDC,0xBA,0x98,0x76,0x54,0x32,0x10};
227 239
228unsigned char key_out[KEY_TEST_NUM][8]={ 240static unsigned char key_out[KEY_TEST_NUM][8]={
229 {0xF9,0xAD,0x59,0x7C,0x49,0xDB,0x00,0x5E}, 241 {0xF9,0xAD,0x59,0x7C,0x49,0xDB,0x00,0x5E},
230 {0xE9,0x1D,0x21,0xC1,0xD9,0x61,0xA6,0xD6}, 242 {0xE9,0x1D,0x21,0xC1,0xD9,0x61,0xA6,0xD6},
231 {0xE9,0xC2,0xB7,0x0A,0x1B,0xC6,0x5C,0xF3}, 243 {0xE9,0xC2,0xB7,0x0A,0x1B,0xC6,0x5C,0xF3},
@@ -252,17 +264,9 @@ unsigned char key_out[KEY_TEST_NUM][8]={
252 {0x05,0x04,0x4B,0x62,0xFA,0x52,0xD0,0x80}, 264 {0x05,0x04,0x4B,0x62,0xFA,0x52,0xD0,0x80},
253 }; 265 };
254 266
255#ifndef NOPROTO
256static int test(void ); 267static int test(void );
257static int print_test_data(void ); 268static int print_test_data(void );
258#else 269int main(int argc, char *argv[])
259static int test();
260static int print_test_data();
261#endif
262
263int main(argc,argv)
264int argc;
265char *argv[];
266 { 270 {
267 int ret; 271 int ret;
268 272
@@ -275,7 +279,7 @@ char *argv[];
275 return(0); 279 return(0);
276 } 280 }
277 281
278static int print_test_data() 282static int print_test_data(void)
279 { 283 {
280 unsigned int i,j; 284 unsigned int i,j;
281 285
@@ -304,7 +308,7 @@ static int print_test_data()
304 printf("c="); 308 printf("c=");
305 for (j=0; j<8; j++) 309 for (j=0; j<8; j++)
306 printf("%02X",key_out[i][j]); 310 printf("%02X",key_out[i][j]);
307 printf(" k[%2d]=",i+1); 311 printf(" k[%2u]=",i+1);
308 for (j=0; j<i+1; j++) 312 for (j=0; j<i+1; j++)
309 printf("%02X",key_test[j]); 313 printf("%02X",key_test[j]);
310 printf("\n"); 314 printf("\n");
@@ -342,7 +346,7 @@ static int print_test_data()
342 return(0); 346 return(0);
343 } 347 }
344 348
345static int test() 349static int test(void)
346 { 350 {
347 unsigned char cbc_in[40],cbc_out[40],iv[8]; 351 unsigned char cbc_in[40],cbc_out[40],iv[8];
348 int i,n,err=0; 352 int i,n,err=0;
@@ -351,9 +355,16 @@ static int test()
351 unsigned char out[8]; 355 unsigned char out[8];
352 BF_LONG len; 356 BF_LONG len;
353 357
358#ifdef CHARSET_EBCDIC
359 ebcdic2ascii(cbc_data, cbc_data, strlen(cbc_data));
360#endif
361
354 printf("testing blowfish in raw ecb mode\n"); 362 printf("testing blowfish in raw ecb mode\n");
355 for (n=0; n<2; n++) 363 for (n=0; n<2; n++)
356 { 364 {
365#ifdef CHARSET_EBCDIC
366 ebcdic2ascii(bf_key[n], bf_key[n], strlen(bf_key[n]));
367#endif
357 BF_set_key(&key,strlen(bf_key[n]),(unsigned char *)bf_key[n]); 368 BF_set_key(&key,strlen(bf_key[n]),(unsigned char *)bf_key[n]);
358 369
359 data[0]=bf_plain[n][0]; 370 data[0]=bf_plain[n][0];
@@ -364,11 +375,11 @@ static int test()
364 printf("BF_encrypt error encrypting\n"); 375 printf("BF_encrypt error encrypting\n");
365 printf("got :"); 376 printf("got :");
366 for (i=0; i<2; i++) 377 for (i=0; i<2; i++)
367 printf("%08lX ",data[i]); 378 printf("%08lX ",(unsigned long)data[i]);
368 printf("\n"); 379 printf("\n");
369 printf("expected:"); 380 printf("expected:");
370 for (i=0; i<2; i++) 381 for (i=0; i<2; i++)
371 printf("%08lX ",bf_cipher[n][i]); 382 printf("%08lX ",(unsigned long)bf_cipher[n][i]);
372 err=1; 383 err=1;
373 printf("\n"); 384 printf("\n");
374 } 385 }
@@ -379,11 +390,11 @@ static int test()
379 printf("BF_encrypt error decrypting\n"); 390 printf("BF_encrypt error decrypting\n");
380 printf("got :"); 391 printf("got :");
381 for (i=0; i<2; i++) 392 for (i=0; i<2; i++)
382 printf("%08lX ",data[i]); 393 printf("%08lX ",(unsigned long)data[i]);
383 printf("\n"); 394 printf("\n");
384 printf("expected:"); 395 printf("expected:");
385 for (i=0; i<2; i++) 396 for (i=0; i<2; i++)
386 printf("%08lX ",bf_plain[n][i]); 397 printf("%08lX ",(unsigned long)bf_plain[n][i]);
387 printf("\n"); 398 printf("\n");
388 err=1; 399 err=1;
389 } 400 }
@@ -431,7 +442,8 @@ static int test()
431 { 442 {
432 BF_set_key(&key,n,key_test); 443 BF_set_key(&key,n,key_test);
433 BF_ecb_encrypt(key_data,out,&key,BF_ENCRYPT); 444 BF_ecb_encrypt(key_data,out,&key,BF_ENCRYPT);
434 if (memcmp(out,&(key_out[n-1][0]),8) != 0) 445 /* mips-sgi-irix6.5-gcc vv -mabi=64 bug workaround */
446 if (memcmp(out,&(key_out[i=n-1][0]),8) != 0)
435 { 447 {
436 printf("blowfish setkey error\n"); 448 printf("blowfish setkey error\n");
437 err=1; 449 err=1;
@@ -519,3 +531,4 @@ static int test()
519 531
520 return(err); 532 return(err);
521 } 533 }
534#endif
diff --git a/src/lib/libcrypto/bio/bss_rtcp.c b/src/lib/libcrypto/bio/bss_rtcp.c
index 6eb434dee8..7dae485564 100644
--- a/src/lib/libcrypto/bio/bss_rtcp.c
+++ b/src/lib/libcrypto/bio/bss_rtcp.c
@@ -58,6 +58,7 @@
58 58
59/* Written by David L. Jones <jonesd@kcgl1.eng.ohio-state.edu> 59/* Written by David L. Jones <jonesd@kcgl1.eng.ohio-state.edu>
60 * Date: 22-JUL-1996 60 * Date: 22-JUL-1996
61 * Revised: 25-SEP-1997 Update for 0.8.1, BIO_CTRL_SET -> BIO_C_SET_FD
61 */ 62 */
62/* VMS */ 63/* VMS */
63#include <stdio.h> 64#include <stdio.h>
@@ -65,10 +66,11 @@
65#include <string.h> 66#include <string.h>
66#include <errno.h> 67#include <errno.h>
67#include "cryptlib.h" 68#include "cryptlib.h"
68#include "bio.h" 69#include <openssl/bio.h>
69 70
70#include <iodef.h> /* VMS IO$_ definitions */ 71#include <iodef.h> /* VMS IO$_ definitions */
71extern int SYS$QIOW(); 72#include <starlet.h>
73
72typedef unsigned short io_channel; 74typedef unsigned short io_channel;
73/*************************************************************************/ 75/*************************************************************************/
74struct io_status { short status, count; long flags; }; 76struct io_status { short status, count; long flags; };
@@ -86,11 +88,11 @@ struct rpc_ctx {
86 struct rpc_msg msg; 88 struct rpc_msg msg;
87}; 89};
88 90
89static int rtcp_write(BIO *h,char *buf,int num); 91static int rtcp_write(BIO *h,const char *buf,int num);
90static int rtcp_read(BIO *h,char *buf,int size); 92static int rtcp_read(BIO *h,char *buf,int size);
91static int rtcp_puts(BIO *h,char *str); 93static int rtcp_puts(BIO *h,const char *str);
92static int rtcp_gets(BIO *h,char *str,int size); 94static int rtcp_gets(BIO *h,char *str,int size);
93static long rtcp_ctrl(BIO *h,int cmd,long arg1,char *arg2); 95static long rtcp_ctrl(BIO *h,int cmd,long arg1,void *arg2);
94static int rtcp_new(BIO *h); 96static int rtcp_new(BIO *h);
95static int rtcp_free(BIO *data); 97static int rtcp_free(BIO *data);
96 98
@@ -105,20 +107,27 @@ static BIO_METHOD rtcp_method=
105 rtcp_ctrl, 107 rtcp_ctrl,
106 rtcp_new, 108 rtcp_new,
107 rtcp_free, 109 rtcp_free,
110 NULL,
108 }; 111 };
109 112
110BIO_METHOD *BIO_s_rtcp() 113BIO_METHOD *BIO_s_rtcp(void)
111 { 114 {
112 return(&rtcp_method); 115 return(&rtcp_method);
113 } 116 }
114/*****************************************************************************/ 117/*****************************************************************************/
115/* Decnet I/O routines. 118/* Decnet I/O routines.
116 */ 119 */
120
121#ifdef __DECC
122#pragma message save
123#pragma message disable DOLLARID
124#endif
125
117static int get ( io_channel chan, char *buffer, int maxlen, int *length ) 126static int get ( io_channel chan, char *buffer, int maxlen, int *length )
118{ 127{
119 int status; 128 int status;
120 struct io_status iosb; 129 struct io_status iosb;
121 status = SYS$QIOW ( 0, chan, IO$_READVBLK, &iosb, 0, 0, 130 status = sys$qiow ( 0, chan, IO$_READVBLK, &iosb, 0, 0,
122 buffer, maxlen, 0, 0, 0, 0 ); 131 buffer, maxlen, 0, 0, 0, 0 );
123 if ( (status&1) == 1 ) status = iosb.status; 132 if ( (status&1) == 1 ) status = iosb.status;
124 if ( (status&1) == 1 ) *length = iosb.count; 133 if ( (status&1) == 1 ) *length = iosb.count;
@@ -129,40 +138,40 @@ static int put ( io_channel chan, char *buffer, int length )
129{ 138{
130 int status; 139 int status;
131 struct io_status iosb; 140 struct io_status iosb;
132 status = SYS$QIOW ( 0, chan, IO$_WRITEVBLK, &iosb, 0, 0, 141 status = sys$qiow ( 0, chan, IO$_WRITEVBLK, &iosb, 0, 0,
133 buffer, length, 0, 0, 0, 0 ); 142 buffer, length, 0, 0, 0, 0 );
134 if ( (status&1) == 1 ) status = iosb.status; 143 if ( (status&1) == 1 ) status = iosb.status;
135 return status; 144 return status;
136} 145}
146
147#ifdef __DECC
148#pragma message restore
149#endif
150
137/***************************************************************************/ 151/***************************************************************************/
138 152
139static int rtcp_new(bi) 153static int rtcp_new(BIO *bi)
140BIO *bi;
141{ 154{
142 struct rpc_ctx *ctx; 155 struct rpc_ctx *ctx;
143 bi->init=1; 156 bi->init=1;
144 bi->num=0; 157 bi->num=0;
145 bi->flags = 0; 158 bi->flags = 0;
146 bi->ptr=Malloc(sizeof(struct rpc_ctx)); 159 bi->ptr=OPENSSL_malloc(sizeof(struct rpc_ctx));
147 ctx = (struct rpc_ctx *) bi->ptr; 160 ctx = (struct rpc_ctx *) bi->ptr;
148 ctx->filled = 0; 161 ctx->filled = 0;
149 ctx->pos = 0; 162 ctx->pos = 0;
150 return(1); 163 return(1);
151} 164}
152 165
153static int rtcp_free(a) 166static int rtcp_free(BIO *a)
154BIO *a;
155{ 167{
156 if (a == NULL) return(0); 168 if (a == NULL) return(0);
157 if ( a->ptr ) Free ( a->ptr ); 169 if ( a->ptr ) OPENSSL_free ( a->ptr );
158 a->ptr = NULL; 170 a->ptr = NULL;
159 return(1); 171 return(1);
160} 172}
161 173
162static int rtcp_read(b,out,outl) 174static int rtcp_read(BIO *b, char *out, int outl)
163BIO *b;
164char *out;
165int outl;
166{ 175{
167 int status, length; 176 int status, length;
168 struct rpc_ctx *ctx; 177 struct rpc_ctx *ctx;
@@ -209,10 +218,7 @@ int outl;
209 return length; 218 return length;
210} 219}
211 220
212static int rtcp_write(b,in,inl) 221static int rtcp_write(BIO *b, const char *in, int inl)
213BIO *b;
214char *in;
215int inl;
216{ 222{
217 int status, i, segment, length; 223 int status, i, segment, length;
218 struct rpc_ctx *ctx; 224 struct rpc_ctx *ctx;
@@ -241,11 +247,7 @@ int inl;
241 return(i); 247 return(i);
242} 248}
243 249
244static long rtcp_ctrl(b,cmd,num,ptr) 250static long rtcp_ctrl(BIO *b, int cmd, long num, void *ptr)
245BIO *b;
246int cmd;
247long num;
248char *ptr;
249 { 251 {
250 long ret=1; 252 long ret=1;
251 253
@@ -255,7 +257,7 @@ char *ptr;
255 case BIO_CTRL_EOF: 257 case BIO_CTRL_EOF:
256 ret = 1; 258 ret = 1;
257 break; 259 break;
258 case BIO_CTRL_SET: 260 case BIO_C_SET_FD:
259 b->num = num; 261 b->num = num;
260 ret = 1; 262 ret = 1;
261 break; 263 break;
@@ -276,17 +278,12 @@ char *ptr;
276 return(ret); 278 return(ret);
277 } 279 }
278 280
279static int rtcp_gets(bp,buf,size) 281static int rtcp_gets(BIO *bp, char *buf, int size)
280BIO *bp;
281char *buf;
282int size;
283 { 282 {
284 return(0); 283 return(0);
285 } 284 }
286 285
287static int rtcp_puts(bp,str) 286static int rtcp_puts(BIO *bp, const char *str)
288BIO *bp;
289char *str;
290{ 287{
291 int length; 288 int length;
292 if (str == NULL) return(0); 289 if (str == NULL) return(0);
diff --git a/src/lib/libcrypto/bn/asm/README b/src/lib/libcrypto/bn/asm/README
index d93fbff77f..b0f3a68a06 100644
--- a/src/lib/libcrypto/bn/asm/README
+++ b/src/lib/libcrypto/bn/asm/README
@@ -1,5 +1,7 @@
1<OBSOLETE>
2
1All assember in this directory are just version of the file 3All assember in this directory are just version of the file
2crypto/bn/bn_mulw.c. 4crypto/bn/bn_asm.c.
3 5
4Quite a few of these files are just the assember output from gcc since on 6Quite a few of these files are just the assember output from gcc since on
5quite a few machines they are 2 times faster than the system compiler. 7quite a few machines they are 2 times faster than the system compiler.
@@ -15,16 +17,11 @@ On the 2 alpha C compilers I had access to, it was not possible to do
15were 64 bits). So the hand assember gives access to the 128 bit result and 17were 64 bits). So the hand assember gives access to the 128 bit result and
16a 2 times speedup :-). 18a 2 times speedup :-).
17 19
18The x86xxxx.obj files are the assembled version of x86xxxx.asm files. 20There are 3 versions of assember for the HP PA-RISC.
19I had such a hard time finding a macro assember for Microsoft, I decided to 21
20include the object file to save others the hassle :-). 22pa-risc.s is the origional one which works fine and generated using gcc :-)
21 23
22I have also included uu encoded versions of the .obj incase they get 24pa-risc2W.s and pa-risc2.s are 64 and 32-bit PA-RISC 2.0 implementations
23trashed. 25by Chris Ruemmler from HP (with some help from the HP C compiler).
24 26
25There are 2 versions of assember for the HP PA-RISC. 27</OBSOLETE>
26pa-risc.s is the origional one which works fine.
27pa-risc2.s is a new version that often generates warnings but if the
28tests pass, it gives performance that is over 2 times faster than
29pa-risc.s.
30Both were generated using gcc :-)
diff --git a/src/lib/libcrypto/bn/asm/alpha.s b/src/lib/libcrypto/bn/asm/alpha.s
index 1d17b1d619..555ff0b92d 100644
--- a/src/lib/libcrypto/bn/asm/alpha.s
+++ b/src/lib/libcrypto/bn/asm/alpha.s
@@ -1,8 +1,14 @@
1 # DEC Alpha assember 1 # DEC Alpha assember
2 # The bn_div64 is actually gcc output but the other parts are hand done. 2 # The bn_div_words is actually gcc output but the other parts are hand done.
3 # Thanks to tzeruch@ceddec.com for sending me the gcc output for 3 # Thanks to tzeruch@ceddec.com for sending me the gcc output for
4 # bn_div64. 4 # bn_div_words.
5 .file 1 "bn_mulw.c" 5 # I've gone back and re-done most of routines.
6 # The key thing to remeber for the 164 CPU is that while a
7 # multiply operation takes 8 cycles, another one can only be issued
8 # after 4 cycles have elapsed. I've done modification to help
9 # improve this. Also, normally, a ld instruction will not be available
10 # for about 3 cycles.
11 .file 1 "bn_asm.c"
6 .set noat 12 .set noat
7gcc2_compiled.: 13gcc2_compiled.:
8__gnu_compiled_c: 14__gnu_compiled_c:
@@ -14,65 +20,91 @@ bn_mul_add_words:
14bn_mul_add_words..ng: 20bn_mul_add_words..ng:
15 .frame $30,0,$26,0 21 .frame $30,0,$26,0
16 .prologue 0 22 .prologue 0
17 subq $18,2,$25 # num=-2
18 bis $31,$31,$0
19 blt $25,$42
20 .align 5 23 .align 5
21$142: 24 subq $18,4,$18
22 subq $18,2,$18 # num-=2 25 bis $31,$31,$0
23 subq $25,2,$25 # num-=2 26 blt $18,$43 # if we are -1, -2, -3 or -4 goto tail code
24 27 ldq $20,0($17) # 1 1
25 ldq $1,0($17) # a[0] 28 ldq $1,0($16) # 1 1
26 ldq $2,8($17) # a[1] 29 .align 3
27 30$42:
28 mulq $19,$1,$3 # a[0]*w low part r3 31 mulq $20,$19,$5 # 1 2 1 ######
29 umulh $19,$1,$1 # a[0]*w high part r1 32 ldq $21,8($17) # 2 1
30 mulq $19,$2,$4 # a[1]*w low part r4 33 ldq $2,8($16) # 2 1
31 umulh $19,$2,$2 # a[1]*w high part r2 34 umulh $20,$19,$20 # 1 2 ######
32 35 ldq $27,16($17) # 3 1
33 ldq $22,0($16) # r[0] r22 36 ldq $3,16($16) # 3 1
34 ldq $23,8($16) # r[1] r23 37 mulq $21,$19,$6 # 2 2 1 ######
35 38 ldq $28,24($17) # 4 1
36 addq $3,$22,$3 # a0 low part + r[0] 39 addq $1,$5,$1 # 1 2 2
37 addq $4,$23,$4 # a1 low part + r[1] 40 ldq $4,24($16) # 4 1
38 cmpult $3,$22,$5 # overflow? 41 umulh $21,$19,$21 # 2 2 ######
39 cmpult $4,$23,$6 # overflow? 42 cmpult $1,$5,$22 # 1 2 3 1
40 addq $5,$1,$1 # high part + overflow 43 addq $20,$22,$20 # 1 3 1
41 addq $6,$2,$2 # high part + overflow 44 addq $1,$0,$1 # 1 2 3 1
42 45 mulq $27,$19,$7 # 3 2 1 ######
43 addq $3,$0,$3 # add c 46 cmpult $1,$0,$0 # 1 2 3 2
44 cmpult $3,$0,$5 # overflow? 47 addq $2,$6,$2 # 2 2 2
45 stq $3,0($16) 48 addq $20,$0,$0 # 1 3 2
46 addq $5,$1,$0 # c=high part + overflow 49 cmpult $2,$6,$23 # 2 2 3 1
47 50 addq $21,$23,$21 # 2 3 1
48 addq $4,$0,$4 # add c 51 umulh $27,$19,$27 # 3 2 ######
49 cmpult $4,$0,$5 # overflow? 52 addq $2,$0,$2 # 2 2 3 1
50 stq $4,8($16) 53 cmpult $2,$0,$0 # 2 2 3 2
51 addq $5,$2,$0 # c=high part + overflow 54 subq $18,4,$18
55 mulq $28,$19,$8 # 4 2 1 ######
56 addq $21,$0,$0 # 2 3 2
57 addq $3,$7,$3 # 3 2 2
58 addq $16,32,$16
59 cmpult $3,$7,$24 # 3 2 3 1
60 stq $1,-32($16) # 1 2 4
61 umulh $28,$19,$28 # 4 2 ######
62 addq $27,$24,$27 # 3 3 1
63 addq $3,$0,$3 # 3 2 3 1
64 stq $2,-24($16) # 2 2 4
65 cmpult $3,$0,$0 # 3 2 3 2
66 stq $3,-16($16) # 3 2 4
67 addq $4,$8,$4 # 4 2 2
68 addq $27,$0,$0 # 3 3 2
69 cmpult $4,$8,$25 # 4 2 3 1
70 addq $17,32,$17
71 addq $28,$25,$28 # 4 3 1
72 addq $4,$0,$4 # 4 2 3 1
73 cmpult $4,$0,$0 # 4 2 3 2
74 stq $4,-8($16) # 4 2 4
75 addq $28,$0,$0 # 4 3 2
76 blt $18,$43
52 77
53 ble $18,$43 78 ldq $20,0($17) # 1 1
79 ldq $1,0($16) # 1 1
54 80
55 addq $16,16,$16 81 br $42
56 addq $17,16,$17
57 blt $25,$42
58 82
59 br $31,$142 83 .align 4
60$42: 84$45:
61 ldq $1,0($17) # a[0] 85 ldq $20,0($17) # 4 1
62 umulh $19,$1,$3 # a[0]*w high part 86 ldq $1,0($16) # 4 1
63 mulq $19,$1,$1 # a[0]*w low part 87 mulq $20,$19,$5 # 4 2 1
64 ldq $2,0($16) # r[0] 88 subq $18,1,$18
65 addq $1,$2,$1 # low part + r[0] 89 addq $16,8,$16
66 cmpult $1,$2,$4 # overflow? 90 addq $17,8,$17
67 addq $4,$3,$3 # high part + overflow 91 umulh $20,$19,$20 # 4 2
68 addq $1,$0,$1 # add c 92 addq $1,$5,$1 # 4 2 2
69 cmpult $1,$0,$4 # overflow? 93 cmpult $1,$5,$22 # 4 2 3 1
70 addq $4,$3,$0 # c=high part + overflow 94 addq $20,$22,$20 # 4 3 1
71 stq $1,0($16) 95 addq $1,$0,$1 # 4 2 3 1
96 cmpult $1,$0,$0 # 4 2 3 2
97 addq $20,$0,$0 # 4 3 2
98 stq $1,-8($16) # 4 2 4
99 bgt $18,$45
100 ret $31,($26),1 # else exit
72 101
73 .align 4 102 .align 4
74$43: 103$43:
75 ret $31,($26),1 104 addq $18,4,$18
105 bgt $18,$45 # goto tail code
106 ret $31,($26),1 # else exit
107
76 .end bn_mul_add_words 108 .end bn_mul_add_words
77 .align 3 109 .align 3
78 .globl bn_mul_words 110 .globl bn_mul_words
@@ -81,49 +113,75 @@ bn_mul_words:
81bn_mul_words..ng: 113bn_mul_words..ng:
82 .frame $30,0,$26,0 114 .frame $30,0,$26,0
83 .prologue 0 115 .prologue 0
84 subq $18,2,$25 # num=-2
85 bis $31,$31,$0
86 blt $25,$242
87 .align 5 116 .align 5
88$342: 117 subq $18,4,$18
89 subq $18,2,$18 # num-=2 118 bis $31,$31,$0
90 subq $25,2,$25 # num-=2 119 blt $18,$143 # if we are -1, -2, -3 or -4 goto tail code
91 120 ldq $20,0($17) # 1 1
92 ldq $1,0($17) # a[0] 121 .align 3
93 ldq $2,8($17) # a[1] 122$142:
94 123
95 mulq $19,$1,$3 # a[0]*w low part r3 124 mulq $20,$19,$5 # 1 2 1 #####
96 umulh $19,$1,$1 # a[0]*w high part r1 125 ldq $21,8($17) # 2 1
97 mulq $19,$2,$4 # a[1]*w low part r4 126 ldq $27,16($17) # 3 1
98 umulh $19,$2,$2 # a[1]*w high part r2 127 umulh $20,$19,$20 # 1 2 #####
99 128 ldq $28,24($17) # 4 1
100 addq $3,$0,$3 # add c 129 mulq $21,$19,$6 # 2 2 1 #####
101 cmpult $3,$0,$5 # overflow? 130 addq $5,$0,$5 # 1 2 3 1
102 stq $3,0($16) 131 subq $18,4,$18
103 addq $5,$1,$0 # c=high part + overflow 132 cmpult $5,$0,$0 # 1 2 3 2
104 133 umulh $21,$19,$21 # 2 2 #####
105 addq $4,$0,$4 # add c 134 addq $20,$0,$0 # 1 3 2
106 cmpult $4,$0,$5 # overflow? 135 addq $17,32,$17
107 stq $4,8($16) 136 addq $6,$0,$6 # 2 2 3 1
108 addq $5,$2,$0 # c=high part + overflow 137 mulq $27,$19,$7 # 3 2 1 #####
109 138 cmpult $6,$0,$0 # 2 2 3 2
110 ble $18,$243 139 addq $21,$0,$0 # 2 3 2
111 140 addq $16,32,$16
112 addq $16,16,$16 141 umulh $27,$19,$27 # 3 2 #####
113 addq $17,16,$17 142 stq $5,-32($16) # 1 2 4
114 blt $25,$242 143 mulq $28,$19,$8 # 4 2 1 #####
115 144 addq $7,$0,$7 # 3 2 3 1
116 br $31,$342 145 stq $6,-24($16) # 2 2 4
117$242: 146 cmpult $7,$0,$0 # 3 2 3 2
118 ldq $1,0($17) # a[0] 147 umulh $28,$19,$28 # 4 2 #####
119 umulh $19,$1,$3 # a[0]*w high part 148 addq $27,$0,$0 # 3 3 2
120 mulq $19,$1,$1 # a[0]*w low part 149 stq $7,-16($16) # 3 2 4
121 addq $1,$0,$1 # add c 150 addq $8,$0,$8 # 4 2 3 1
122 cmpult $1,$0,$4 # overflow? 151 cmpult $8,$0,$0 # 4 2 3 2
123 addq $4,$3,$0 # c=high part + overflow 152
124 stq $1,0($16) 153 addq $28,$0,$0 # 4 3 2
125$243: 154
126 ret $31,($26),1 155 stq $8,-8($16) # 4 2 4
156
157 blt $18,$143
158
159 ldq $20,0($17) # 1 1
160
161 br $142
162
163 .align 4
164$145:
165 ldq $20,0($17) # 4 1
166 mulq $20,$19,$5 # 4 2 1
167 subq $18,1,$18
168 umulh $20,$19,$20 # 4 2
169 addq $5,$0,$5 # 4 2 3 1
170 addq $16,8,$16
171 cmpult $5,$0,$0 # 4 2 3 2
172 addq $17,8,$17
173 addq $20,$0,$0 # 4 3 2
174 stq $5,-8($16) # 4 2 4
175
176 bgt $18,$145
177 ret $31,($26),1 # else exit
178
179 .align 4
180$143:
181 addq $18,4,$18
182 bgt $18,$145 # goto tail code
183 ret $31,($26),1 # else exit
184
127 .end bn_mul_words 185 .end bn_mul_words
128 .align 3 186 .align 3
129 .globl bn_sqr_words 187 .globl bn_sqr_words
@@ -132,44 +190,58 @@ bn_sqr_words:
132bn_sqr_words..ng: 190bn_sqr_words..ng:
133 .frame $30,0,$26,0 191 .frame $30,0,$26,0
134 .prologue 0 192 .prologue 0
135
136 subq $18,2,$25 # num=-2
137 blt $25,$442
138 .align 5
139$542:
140 subq $18,2,$18 # num-=2
141 subq $25,2,$25 # num-=2
142 193
143 ldq $1,0($17) # a[0] 194 subq $18,4,$18
144 ldq $4,8($17) # a[1] 195 blt $18,$543 # if we are -1, -2, -3 or -4 goto tail code
145 196 ldq $20,0($17) # 1 1
146 mulq $1,$1,$2 # a[0]*w low part r2 197 .align 3
147 umulh $1,$1,$3 # a[0]*w high part r3 198$542:
148 mulq $4,$4,$5 # a[1]*w low part r5 199 mulq $20,$20,$5 ######
149 umulh $4,$4,$6 # a[1]*w high part r6 200 ldq $21,8($17) # 1 1
150 201 subq $18,4
151 stq $2,0($16) # r[0] 202 umulh $20,$20,$1 ######
152 stq $3,8($16) # r[1] 203 ldq $27,16($17) # 1 1
153 stq $5,16($16) # r[3] 204 mulq $21,$21,$6 ######
154 stq $6,24($16) # r[4] 205 ldq $28,24($17) # 1 1
206 stq $5,0($16) # r[0]
207 umulh $21,$21,$2 ######
208 stq $1,8($16) # r[1]
209 mulq $27,$27,$7 ######
210 stq $6,16($16) # r[0]
211 umulh $27,$27,$3 ######
212 stq $2,24($16) # r[1]
213 mulq $28,$28,$8 ######
214 stq $7,32($16) # r[0]
215 umulh $28,$28,$4 ######
216 stq $3,40($16) # r[1]
155 217
156 ble $18,$443 218 addq $16,64,$16
219 addq $17,32,$17
220 stq $8,-16($16) # r[0]
221 stq $4,-8($16) # r[1]
157 222
158 addq $16,32,$16 223 blt $18,$543
159 addq $17,16,$17 224 ldq $20,0($17) # 1 1
160 blt $25,$442 225 br $542
161 br $31,$542
162 226
163$442: 227$442:
164 ldq $1,0($17) # a[0] 228 ldq $20,0($17) # a[0]
165 mulq $1,$1,$2 # a[0]*w low part r2 229 mulq $20,$20,$5 # a[0]*w low part r2
166 umulh $1,$1,$3 # a[0]*w high part r3 230 addq $16,16,$16
167 stq $2,0($16) # r[0] 231 addq $17,8,$17
168 stq $3,8($16) # r[1] 232 subq $18,1,$18
233 umulh $20,$20,$1 # a[0]*w high part r3
234 stq $5,-16($16) # r[0]
235 stq $1,-8($16) # r[1]
236
237 bgt $18,$442
238 ret $31,($26),1 # else exit
169 239
170 .align 4 240 .align 4
171$443: 241$543:
172 ret $31,($26),1 242 addq $18,4,$18
243 bgt $18,$442 # goto tail code
244 ret $31,($26),1 # else exit
173 .end bn_sqr_words 245 .end bn_sqr_words
174 246
175 .align 3 247 .align 3
@@ -180,31 +252,74 @@ bn_add_words..ng:
180 .frame $30,0,$26,0 252 .frame $30,0,$26,0
181 .prologue 0 253 .prologue 0
182 254
183 bis $31,$31,$8 # carry = 0 255 subq $19,4,$19
184 ble $19,$900 256 bis $31,$31,$0 # carry = 0
257 blt $19,$900
258 ldq $5,0($17) # a[0]
259 ldq $1,0($18) # b[1]
260 .align 3
185$901: 261$901:
186 ldq $0,0($17) # a[0] 262 addq $1,$5,$1 # r=a+b;
187 ldq $1,0($18) # a[1] 263 ldq $6,8($17) # a[1]
264 cmpult $1,$5,$22 # did we overflow?
265 ldq $2,8($18) # b[1]
266 addq $1,$0,$1 # c+= overflow
267 ldq $7,16($17) # a[2]
268 cmpult $1,$0,$0 # overflow?
269 ldq $3,16($18) # b[2]
270 addq $0,$22,$0
271 ldq $8,24($17) # a[3]
272 addq $2,$6,$2 # r=a+b;
273 ldq $4,24($18) # b[3]
274 cmpult $2,$6,$23 # did we overflow?
275 addq $3,$7,$3 # r=a+b;
276 addq $2,$0,$2 # c+= overflow
277 cmpult $3,$7,$24 # did we overflow?
278 cmpult $2,$0,$0 # overflow?
279 addq $4,$8,$4 # r=a+b;
280 addq $0,$23,$0
281 cmpult $4,$8,$25 # did we overflow?
282 addq $3,$0,$3 # c+= overflow
283 stq $1,0($16) # r[0]=c
284 cmpult $3,$0,$0 # overflow?
285 stq $2,8($16) # r[1]=c
286 addq $0,$24,$0
287 stq $3,16($16) # r[2]=c
288 addq $4,$0,$4 # c+= overflow
289 subq $19,4,$19 # loop--
290 cmpult $4,$0,$0 # overflow?
291 addq $17,32,$17 # a++
292 addq $0,$25,$0
293 stq $4,24($16) # r[3]=c
294 addq $18,32,$18 # b++
295 addq $16,32,$16 # r++
188 296
189 addq $0,$1,$3 # c=a+b; 297 blt $19,$900
298 ldq $5,0($17) # a[0]
299 ldq $1,0($18) # b[1]
300 br $901
301 .align 4
302$945:
303 ldq $5,0($17) # a[0]
304 ldq $1,0($18) # b[1]
305 addq $1,$5,$1 # r=a+b;
306 subq $19,1,$19 # loop--
307 addq $1,$0,$1 # c+= overflow
190 addq $17,8,$17 # a++ 308 addq $17,8,$17 # a++
309 cmpult $1,$5,$22 # did we overflow?
310 cmpult $1,$0,$0 # overflow?
311 addq $18,8,$18 # b++
312 stq $1,0($16) # r[0]=c
313 addq $0,$22,$0
314 addq $16,8,$16 # r++
191 315
192 cmpult $3,$1,$7 # did we overflow? 316 bgt $19,$945
193 addq $18,8,$18 # b++ 317 ret $31,($26),1 # else exit
194
195 addq $8,$3,$3 # c+=carry
196
197 cmpult $3,$8,$8 # did we overflow?
198 stq $3,($16) # r[0]=c
199
200 addq $7,$8,$8 # add into overflow
201 subq $19,1,$19 # loop--
202 318
203 addq $16,8,$16 # r++
204 bgt $19,$901
205$900: 319$900:
206 bis $8,$8,$0 # return carry 320 addq $19,4,$19
207 ret $31,($26),1 321 bgt $19,$945 # goto tail code
322 ret $31,($26),1 # else exit
208 .end bn_add_words 323 .end bn_add_words
209 324
210 # 325 #
@@ -213,11 +328,11 @@ $900:
213 # 328 #
214.text 329.text
215 .align 3 330 .align 3
216 .globl bn_div64 331 .globl bn_div_words
217 .ent bn_div64 332 .ent bn_div_words
218bn_div64: 333bn_div_words:
219 ldgp $29,0($27) 334 ldgp $29,0($27)
220bn_div64..ng: 335bn_div_words..ng:
221 lda $30,-48($30) 336 lda $30,-48($30)
222 .frame $30,48,$26,0 337 .frame $30,48,$26,0
223 stq $26,0($30) 338 stq $26,0($30)
@@ -338,7 +453,2747 @@ $136:
338 ldq $13,40($30) 453 ldq $13,40($30)
339 addq $30,48,$30 454 addq $30,48,$30
340 ret $31,($26),1 455 ret $31,($26),1
341 .end bn_div64 456 .end bn_div_words
342 .ident "GCC: (GNU) 2.7.2.1" 457
458 .set noat
459 .text
460 .align 3
461 .globl bn_sub_words
462 .ent bn_sub_words
463bn_sub_words:
464bn_sub_words..ng:
465 .frame $30,0,$26,0
466 .prologue 0
467
468 subq $19, 4, $19
469 bis $31, $31, $0
470 blt $19, $100
471 ldq $1, 0($17)
472 ldq $2, 0($18)
473$101:
474 ldq $3, 8($17)
475 cmpult $1, $2, $4
476 ldq $5, 8($18)
477 subq $1, $2, $1
478 ldq $6, 16($17)
479 cmpult $1, $0, $2
480 ldq $7, 16($18)
481 subq $1, $0, $23
482 ldq $8, 24($17)
483 addq $2, $4, $0
484 cmpult $3, $5, $24
485 subq $3, $5, $3
486 ldq $22, 24($18)
487 cmpult $3, $0, $5
488 subq $3, $0, $25
489 addq $5, $24, $0
490 cmpult $6, $7, $27
491 subq $6, $7, $6
492 stq $23, 0($16)
493 cmpult $6, $0, $7
494 subq $6, $0, $28
495 addq $7, $27, $0
496 cmpult $8, $22, $21
497 subq $8, $22, $8
498 stq $25, 8($16)
499 cmpult $8, $0, $22
500 subq $8, $0, $20
501 addq $22, $21, $0
502 stq $28, 16($16)
503 subq $19, 4, $19
504 stq $20, 24($16)
505 addq $17, 32, $17
506 addq $18, 32, $18
507 addq $16, 32, $16
508 blt $19, $100
509 ldq $1, 0($17)
510 ldq $2, 0($18)
511 br $101
512$102:
513 ldq $1, 0($17)
514 ldq $2, 0($18)
515 cmpult $1, $2, $27
516 subq $1, $2, $1
517 cmpult $1, $0, $2
518 subq $1, $0, $1
519 stq $1, 0($16)
520 addq $2, $27, $0
521 addq $17, 8, $17
522 addq $18, 8, $18
523 addq $16, 8, $16
524 subq $19, 1, $19
525 bgt $19, $102
526 ret $31,($26),1
527$100:
528 addq $19, 4, $19
529 bgt $19, $102
530$103:
531 ret $31,($26),1
532 .end bn_sub_words
533 .text
534 .align 3
535 .globl bn_mul_comba4
536 .ent bn_mul_comba4
537bn_mul_comba4:
538bn_mul_comba4..ng:
539 .frame $30,0,$26,0
540 .prologue 0
343 541
542 ldq $0, 0($17)
543 ldq $1, 0($18)
544 ldq $2, 8($17)
545 ldq $3, 8($18)
546 ldq $4, 16($17)
547 ldq $5, 16($18)
548 ldq $6, 24($17)
549 ldq $7, 24($18)
550 bis $31, $31, $23
551 mulq $0, $1, $8
552 umulh $0, $1, $22
553 stq $8, 0($16)
554 bis $31, $31, $8
555 mulq $0, $3, $24
556 umulh $0, $3, $25
557 addq $22, $24, $22
558 cmpult $22, $24, $27
559 addq $27, $25, $25
560 addq $23, $25, $23
561 cmpult $23, $25, $28
562 addq $8, $28, $8
563 mulq $2, $1, $21
564 umulh $2, $1, $20
565 addq $22, $21, $22
566 cmpult $22, $21, $19
567 addq $19, $20, $20
568 addq $23, $20, $23
569 cmpult $23, $20, $17
570 addq $8, $17, $8
571 stq $22, 8($16)
572 bis $31, $31, $22
573 mulq $2, $3, $18
574 umulh $2, $3, $24
575 addq $23, $18, $23
576 cmpult $23, $18, $27
577 addq $27, $24, $24
578 addq $8, $24, $8
579 cmpult $8, $24, $25
580 addq $22, $25, $22
581 mulq $0, $5, $28
582 umulh $0, $5, $21
583 addq $23, $28, $23
584 cmpult $23, $28, $19
585 addq $19, $21, $21
586 addq $8, $21, $8
587 cmpult $8, $21, $20
588 addq $22, $20, $22
589 mulq $4, $1, $17
590 umulh $4, $1, $18
591 addq $23, $17, $23
592 cmpult $23, $17, $27
593 addq $27, $18, $18
594 addq $8, $18, $8
595 cmpult $8, $18, $24
596 addq $22, $24, $22
597 stq $23, 16($16)
598 bis $31, $31, $23
599 mulq $0, $7, $25
600 umulh $0, $7, $28
601 addq $8, $25, $8
602 cmpult $8, $25, $19
603 addq $19, $28, $28
604 addq $22, $28, $22
605 cmpult $22, $28, $21
606 addq $23, $21, $23
607 mulq $2, $5, $20
608 umulh $2, $5, $17
609 addq $8, $20, $8
610 cmpult $8, $20, $27
611 addq $27, $17, $17
612 addq $22, $17, $22
613 cmpult $22, $17, $18
614 addq $23, $18, $23
615 mulq $4, $3, $24
616 umulh $4, $3, $25
617 addq $8, $24, $8
618 cmpult $8, $24, $19
619 addq $19, $25, $25
620 addq $22, $25, $22
621 cmpult $22, $25, $28
622 addq $23, $28, $23
623 mulq $6, $1, $21
624 umulh $6, $1, $0
625 addq $8, $21, $8
626 cmpult $8, $21, $20
627 addq $20, $0, $0
628 addq $22, $0, $22
629 cmpult $22, $0, $27
630 addq $23, $27, $23
631 stq $8, 24($16)
632 bis $31, $31, $8
633 mulq $2, $7, $17
634 umulh $2, $7, $18
635 addq $22, $17, $22
636 cmpult $22, $17, $24
637 addq $24, $18, $18
638 addq $23, $18, $23
639 cmpult $23, $18, $19
640 addq $8, $19, $8
641 mulq $4, $5, $25
642 umulh $4, $5, $28
643 addq $22, $25, $22
644 cmpult $22, $25, $21
645 addq $21, $28, $28
646 addq $23, $28, $23
647 cmpult $23, $28, $20
648 addq $8, $20, $8
649 mulq $6, $3, $0
650 umulh $6, $3, $27
651 addq $22, $0, $22
652 cmpult $22, $0, $1
653 addq $1, $27, $27
654 addq $23, $27, $23
655 cmpult $23, $27, $17
656 addq $8, $17, $8
657 stq $22, 32($16)
658 bis $31, $31, $22
659 mulq $4, $7, $24
660 umulh $4, $7, $18
661 addq $23, $24, $23
662 cmpult $23, $24, $19
663 addq $19, $18, $18
664 addq $8, $18, $8
665 cmpult $8, $18, $2
666 addq $22, $2, $22
667 mulq $6, $5, $25
668 umulh $6, $5, $21
669 addq $23, $25, $23
670 cmpult $23, $25, $28
671 addq $28, $21, $21
672 addq $8, $21, $8
673 cmpult $8, $21, $20
674 addq $22, $20, $22
675 stq $23, 40($16)
676 bis $31, $31, $23
677 mulq $6, $7, $0
678 umulh $6, $7, $1
679 addq $8, $0, $8
680 cmpult $8, $0, $27
681 addq $27, $1, $1
682 addq $22, $1, $22
683 cmpult $22, $1, $17
684 addq $23, $17, $23
685 stq $8, 48($16)
686 stq $22, 56($16)
687 ret $31,($26),1
688 .end bn_mul_comba4
689 .text
690 .align 3
691 .globl bn_mul_comba8
692 .ent bn_mul_comba8
693bn_mul_comba8:
694bn_mul_comba8..ng:
695 .frame $30,0,$26,0
696 .prologue 0
697 ldq $1, 0($17)
698 ldq $2, 0($18)
699 zapnot $1, 15, $7
700 srl $2, 32, $8
701 mulq $8, $7, $22
702 srl $1, 32, $6
703 zapnot $2, 15, $5
704 mulq $5, $6, $4
705 mulq $7, $5, $24
706 addq $22, $4, $22
707 cmpult $22, $4, $1
708 mulq $6, $8, $3
709 beq $1, $173
710 bis $31, 1, $1
711 sll $1, 32, $1
712 addq $3, $1, $3
713$173:
714 sll $22, 32, $4
715 addq $24, $4, $24
716 stq $24, 0($16)
717 ldq $2, 0($17)
718 ldq $1, 8($18)
719 zapnot $2, 15, $7
720 srl $1, 32, $8
721 mulq $8, $7, $25
722 zapnot $1, 15, $5
723 mulq $7, $5, $0
724 srl $2, 32, $6
725 mulq $5, $6, $23
726 mulq $6, $8, $6
727 srl $22, 32, $1
728 cmpult $24, $4, $2
729 addq $3, $1, $3
730 addq $2, $3, $22
731 addq $25, $23, $25
732 cmpult $25, $23, $1
733 bis $31, 1, $2
734 beq $1, $177
735 sll $2, 32, $1
736 addq $6, $1, $6
737$177:
738 sll $25, 32, $23
739 ldq $1, 0($18)
740 addq $0, $23, $0
741 bis $0, $0, $7
742 ldq $3, 8($17)
743 addq $22, $7, $22
744 srl $1, 32, $8
745 cmpult $22, $7, $4
746 zapnot $3, 15, $7
747 mulq $8, $7, $28
748 zapnot $1, 15, $5
749 mulq $7, $5, $21
750 srl $25, 32, $1
751 cmpult $0, $23, $2
752 addq $6, $1, $6
753 addq $2, $6, $6
754 addq $4, $6, $24
755 srl $3, 32, $6
756 mulq $5, $6, $2
757 mulq $6, $8, $6
758 addq $28, $2, $28
759 cmpult $28, $2, $1
760 bis $31, 1, $2
761 beq $1, $181
762 sll $2, 32, $1
763 addq $6, $1, $6
764$181:
765 sll $28, 32, $2
766 addq $21, $2, $21
767 bis $21, $21, $7
768 addq $22, $7, $22
769 stq $22, 8($16)
770 ldq $3, 16($17)
771 ldq $1, 0($18)
772 cmpult $22, $7, $4
773 zapnot $3, 15, $7
774 srl $1, 32, $8
775 mulq $8, $7, $22
776 zapnot $1, 15, $5
777 mulq $7, $5, $20
778 srl $28, 32, $1
779 cmpult $21, $2, $2
780 addq $6, $1, $6
781 addq $2, $6, $6
782 addq $4, $6, $6
783 addq $24, $6, $24
784 cmpult $24, $6, $23
785 srl $3, 32, $6
786 mulq $5, $6, $2
787 mulq $6, $8, $6
788 addq $22, $2, $22
789 cmpult $22, $2, $1
790 bis $31, 1, $2
791 beq $1, $185
792 sll $2, 32, $1
793 addq $6, $1, $6
794$185:
795 sll $22, 32, $2
796 ldq $1, 8($18)
797 addq $20, $2, $20
798 bis $20, $20, $7
799 ldq $4, 8($17)
800 addq $24, $7, $24
801 srl $1, 32, $8
802 cmpult $24, $7, $3
803 zapnot $4, 15, $7
804 mulq $8, $7, $25
805 zapnot $1, 15, $5
806 mulq $7, $5, $0
807 srl $22, 32, $1
808 cmpult $20, $2, $2
809 addq $6, $1, $6
810 addq $2, $6, $6
811 addq $3, $6, $6
812 addq $23, $6, $23
813 cmpult $23, $6, $22
814 srl $4, 32, $6
815 mulq $5, $6, $5
816 bis $31, 1, $21
817 addq $25, $5, $25
818 cmpult $25, $5, $1
819 mulq $6, $8, $6
820 beq $1, $189
821 sll $21, 32, $1
822 addq $6, $1, $6
823$189:
824 sll $25, 32, $5
825 ldq $2, 16($18)
826 addq $0, $5, $0
827 bis $0, $0, $7
828 ldq $4, 0($17)
829 addq $24, $7, $24
830 srl $2, 32, $8
831 cmpult $24, $7, $3
832 zapnot $4, 15, $7
833 mulq $8, $7, $28
834 srl $25, 32, $1
835 addq $6, $1, $6
836 cmpult $0, $5, $1
837 zapnot $2, 15, $5
838 addq $1, $6, $6
839 addq $3, $6, $6
840 addq $23, $6, $23
841 cmpult $23, $6, $1
842 srl $4, 32, $6
843 mulq $5, $6, $25
844 mulq $7, $5, $2
845 addq $1, $22, $22
846 addq $28, $25, $28
847 cmpult $28, $25, $1
848 mulq $6, $8, $6
849 beq $1, $193
850 sll $21, 32, $1
851 addq $6, $1, $6
852$193:
853 sll $28, 32, $25
854 addq $2, $25, $2
855 bis $2, $2, $7
856 addq $24, $7, $24
857 stq $24, 16($16)
858 ldq $4, 0($17)
859 ldq $5, 24($18)
860 cmpult $24, $7, $3
861 zapnot $4, 15, $7
862 srl $5, 32, $8
863 mulq $8, $7, $0
864 srl $28, 32, $1
865 cmpult $2, $25, $2
866 addq $6, $1, $6
867 addq $2, $6, $6
868 addq $3, $6, $6
869 addq $23, $6, $23
870 cmpult $23, $6, $1
871 srl $4, 32, $6
872 zapnot $5, 15, $5
873 mulq $5, $6, $24
874 mulq $7, $5, $2
875 addq $1, $22, $22
876 addq $0, $24, $0
877 cmpult $0, $24, $1
878 mulq $6, $8, $6
879 beq $1, $197
880 sll $21, 32, $1
881 addq $6, $1, $6
882$197:
883 sll $0, 32, $24
884 ldq $1, 16($18)
885 addq $2, $24, $2
886 bis $2, $2, $7
887 ldq $4, 8($17)
888 addq $23, $7, $23
889 srl $1, 32, $8
890 cmpult $23, $7, $3
891 zapnot $4, 15, $7
892 mulq $8, $7, $25
893 zapnot $1, 15, $5
894 mulq $7, $5, $21
895 srl $0, 32, $1
896 cmpult $2, $24, $2
897 addq $6, $1, $6
898 addq $2, $6, $6
899 addq $3, $6, $6
900 addq $22, $6, $22
901 cmpult $22, $6, $24
902 srl $4, 32, $6
903 mulq $5, $6, $5
904 bis $31, 1, $20
905 addq $25, $5, $25
906 cmpult $25, $5, $1
907 mulq $6, $8, $6
908 beq $1, $201
909 sll $20, 32, $1
910 addq $6, $1, $6
911$201:
912 sll $25, 32, $5
913 ldq $2, 8($18)
914 addq $21, $5, $21
915 bis $21, $21, $7
916 ldq $4, 16($17)
917 addq $23, $7, $23
918 srl $2, 32, $8
919 cmpult $23, $7, $3
920 zapnot $4, 15, $7
921 mulq $8, $7, $28
922 srl $25, 32, $1
923 addq $6, $1, $6
924 cmpult $21, $5, $1
925 zapnot $2, 15, $5
926 addq $1, $6, $6
927 addq $3, $6, $6
928 addq $22, $6, $22
929 cmpult $22, $6, $1
930 srl $4, 32, $6
931 mulq $5, $6, $25
932 mulq $7, $5, $5
933 addq $1, $24, $24
934 addq $28, $25, $28
935 cmpult $28, $25, $1
936 mulq $6, $8, $6
937 beq $1, $205
938 sll $20, 32, $1
939 addq $6, $1, $6
940$205:
941 sll $28, 32, $25
942 ldq $2, 0($18)
943 addq $5, $25, $5
944 bis $5, $5, $7
945 ldq $4, 24($17)
946 addq $23, $7, $23
947 srl $2, 32, $8
948 cmpult $23, $7, $3
949 zapnot $4, 15, $7
950 mulq $8, $7, $0
951 srl $28, 32, $1
952 addq $6, $1, $6
953 cmpult $5, $25, $1
954 zapnot $2, 15, $5
955 addq $1, $6, $6
956 addq $3, $6, $6
957 addq $22, $6, $22
958 cmpult $22, $6, $1
959 srl $4, 32, $6
960 mulq $5, $6, $25
961 mulq $7, $5, $2
962 addq $1, $24, $24
963 addq $0, $25, $0
964 cmpult $0, $25, $1
965 mulq $6, $8, $6
966 beq $1, $209
967 sll $20, 32, $1
968 addq $6, $1, $6
969$209:
970 sll $0, 32, $25
971 addq $2, $25, $2
972 bis $2, $2, $7
973 addq $23, $7, $23
974 stq $23, 24($16)
975 ldq $4, 32($17)
976 ldq $5, 0($18)
977 cmpult $23, $7, $3
978 zapnot $4, 15, $7
979 srl $5, 32, $8
980 mulq $8, $7, $28
981 srl $0, 32, $1
982 cmpult $2, $25, $2
983 addq $6, $1, $6
984 addq $2, $6, $6
985 addq $3, $6, $6
986 addq $22, $6, $22
987 cmpult $22, $6, $1
988 srl $4, 32, $6
989 zapnot $5, 15, $5
990 mulq $5, $6, $23
991 mulq $7, $5, $2
992 addq $1, $24, $24
993 addq $28, $23, $28
994 cmpult $28, $23, $1
995 mulq $6, $8, $6
996 beq $1, $213
997 sll $20, 32, $1
998 addq $6, $1, $6
999$213:
1000 sll $28, 32, $23
1001 ldq $1, 8($18)
1002 addq $2, $23, $2
1003 bis $2, $2, $7
1004 ldq $4, 24($17)
1005 addq $22, $7, $22
1006 srl $1, 32, $8
1007 cmpult $22, $7, $3
1008 zapnot $4, 15, $7
1009 mulq $8, $7, $25
1010 zapnot $1, 15, $5
1011 mulq $7, $5, $0
1012 srl $28, 32, $1
1013 cmpult $2, $23, $2
1014 addq $6, $1, $6
1015 addq $2, $6, $6
1016 addq $3, $6, $6
1017 addq $24, $6, $24
1018 cmpult $24, $6, $23
1019 srl $4, 32, $6
1020 mulq $5, $6, $5
1021 bis $31, 1, $21
1022 addq $25, $5, $25
1023 cmpult $25, $5, $1
1024 mulq $6, $8, $6
1025 beq $1, $217
1026 sll $21, 32, $1
1027 addq $6, $1, $6
1028$217:
1029 sll $25, 32, $5
1030 ldq $2, 16($18)
1031 addq $0, $5, $0
1032 bis $0, $0, $7
1033 ldq $4, 16($17)
1034 addq $22, $7, $22
1035 srl $2, 32, $8
1036 cmpult $22, $7, $3
1037 zapnot $4, 15, $7
1038 mulq $8, $7, $28
1039 srl $25, 32, $1
1040 addq $6, $1, $6
1041 cmpult $0, $5, $1
1042 zapnot $2, 15, $5
1043 addq $1, $6, $6
1044 addq $3, $6, $6
1045 addq $24, $6, $24
1046 cmpult $24, $6, $1
1047 srl $4, 32, $6
1048 mulq $5, $6, $25
1049 mulq $7, $5, $5
1050 addq $1, $23, $23
1051 addq $28, $25, $28
1052 cmpult $28, $25, $1
1053 mulq $6, $8, $6
1054 beq $1, $221
1055 sll $21, 32, $1
1056 addq $6, $1, $6
1057$221:
1058 sll $28, 32, $25
1059 ldq $2, 24($18)
1060 addq $5, $25, $5
1061 bis $5, $5, $7
1062 ldq $4, 8($17)
1063 addq $22, $7, $22
1064 srl $2, 32, $8
1065 cmpult $22, $7, $3
1066 zapnot $4, 15, $7
1067 mulq $8, $7, $0
1068 srl $28, 32, $1
1069 addq $6, $1, $6
1070 cmpult $5, $25, $1
1071 zapnot $2, 15, $5
1072 addq $1, $6, $6
1073 addq $3, $6, $6
1074 addq $24, $6, $24
1075 cmpult $24, $6, $1
1076 srl $4, 32, $6
1077 mulq $5, $6, $25
1078 mulq $7, $5, $5
1079 addq $1, $23, $23
1080 addq $0, $25, $0
1081 cmpult $0, $25, $1
1082 mulq $6, $8, $6
1083 beq $1, $225
1084 sll $21, 32, $1
1085 addq $6, $1, $6
1086$225:
1087 sll $0, 32, $25
1088 ldq $2, 32($18)
1089 addq $5, $25, $5
1090 bis $5, $5, $7
1091 ldq $4, 0($17)
1092 addq $22, $7, $22
1093 srl $2, 32, $8
1094 cmpult $22, $7, $3
1095 zapnot $4, 15, $7
1096 mulq $8, $7, $28
1097 srl $0, 32, $1
1098 addq $6, $1, $6
1099 cmpult $5, $25, $1
1100 zapnot $2, 15, $5
1101 addq $1, $6, $6
1102 addq $3, $6, $6
1103 addq $24, $6, $24
1104 cmpult $24, $6, $1
1105 srl $4, 32, $6
1106 mulq $5, $6, $25
1107 mulq $7, $5, $2
1108 addq $1, $23, $23
1109 addq $28, $25, $28
1110 cmpult $28, $25, $1
1111 mulq $6, $8, $6
1112 beq $1, $229
1113 sll $21, 32, $1
1114 addq $6, $1, $6
1115$229:
1116 sll $28, 32, $25
1117 addq $2, $25, $2
1118 bis $2, $2, $7
1119 addq $22, $7, $22
1120 stq $22, 32($16)
1121 ldq $4, 0($17)
1122 ldq $5, 40($18)
1123 cmpult $22, $7, $3
1124 zapnot $4, 15, $7
1125 srl $5, 32, $8
1126 mulq $8, $7, $0
1127 srl $28, 32, $1
1128 cmpult $2, $25, $2
1129 addq $6, $1, $6
1130 addq $2, $6, $6
1131 addq $3, $6, $6
1132 addq $24, $6, $24
1133 cmpult $24, $6, $1
1134 srl $4, 32, $6
1135 zapnot $5, 15, $5
1136 mulq $5, $6, $22
1137 mulq $7, $5, $2
1138 addq $1, $23, $23
1139 addq $0, $22, $0
1140 cmpult $0, $22, $1
1141 mulq $6, $8, $6
1142 beq $1, $233
1143 sll $21, 32, $1
1144 addq $6, $1, $6
1145$233:
1146 sll $0, 32, $22
1147 ldq $1, 32($18)
1148 addq $2, $22, $2
1149 bis $2, $2, $7
1150 ldq $4, 8($17)
1151 addq $24, $7, $24
1152 srl $1, 32, $8
1153 cmpult $24, $7, $3
1154 zapnot $4, 15, $7
1155 mulq $8, $7, $25
1156 zapnot $1, 15, $5
1157 mulq $7, $5, $21
1158 srl $0, 32, $1
1159 cmpult $2, $22, $2
1160 addq $6, $1, $6
1161 addq $2, $6, $6
1162 addq $3, $6, $6
1163 addq $23, $6, $23
1164 cmpult $23, $6, $22
1165 srl $4, 32, $6
1166 mulq $5, $6, $5
1167 bis $31, 1, $20
1168 addq $25, $5, $25
1169 cmpult $25, $5, $1
1170 mulq $6, $8, $6
1171 beq $1, $237
1172 sll $20, 32, $1
1173 addq $6, $1, $6
1174$237:
1175 sll $25, 32, $5
1176 ldq $2, 24($18)
1177 addq $21, $5, $21
1178 bis $21, $21, $7
1179 ldq $4, 16($17)
1180 addq $24, $7, $24
1181 srl $2, 32, $8
1182 cmpult $24, $7, $3
1183 zapnot $4, 15, $7
1184 mulq $8, $7, $28
1185 srl $25, 32, $1
1186 addq $6, $1, $6
1187 cmpult $21, $5, $1
1188 zapnot $2, 15, $5
1189 addq $1, $6, $6
1190 addq $3, $6, $6
1191 addq $23, $6, $23
1192 cmpult $23, $6, $1
1193 srl $4, 32, $6
1194 mulq $5, $6, $25
1195 mulq $7, $5, $5
1196 addq $1, $22, $22
1197 addq $28, $25, $28
1198 cmpult $28, $25, $1
1199 mulq $6, $8, $6
1200 beq $1, $241
1201 sll $20, 32, $1
1202 addq $6, $1, $6
1203$241:
1204 sll $28, 32, $25
1205 ldq $2, 16($18)
1206 addq $5, $25, $5
1207 bis $5, $5, $7
1208 ldq $4, 24($17)
1209 addq $24, $7, $24
1210 srl $2, 32, $8
1211 cmpult $24, $7, $3
1212 zapnot $4, 15, $7
1213 mulq $8, $7, $0
1214 srl $28, 32, $1
1215 addq $6, $1, $6
1216 cmpult $5, $25, $1
1217 zapnot $2, 15, $5
1218 addq $1, $6, $6
1219 addq $3, $6, $6
1220 addq $23, $6, $23
1221 cmpult $23, $6, $1
1222 srl $4, 32, $6
1223 mulq $5, $6, $25
1224 mulq $7, $5, $5
1225 addq $1, $22, $22
1226 addq $0, $25, $0
1227 cmpult $0, $25, $1
1228 mulq $6, $8, $6
1229 beq $1, $245
1230 sll $20, 32, $1
1231 addq $6, $1, $6
1232$245:
1233 sll $0, 32, $25
1234 ldq $2, 8($18)
1235 addq $5, $25, $5
1236 bis $5, $5, $7
1237 ldq $4, 32($17)
1238 addq $24, $7, $24
1239 srl $2, 32, $8
1240 cmpult $24, $7, $3
1241 zapnot $4, 15, $7
1242 mulq $8, $7, $28
1243 srl $0, 32, $1
1244 addq $6, $1, $6
1245 cmpult $5, $25, $1
1246 zapnot $2, 15, $5
1247 addq $1, $6, $6
1248 addq $3, $6, $6
1249 addq $23, $6, $23
1250 cmpult $23, $6, $1
1251 srl $4, 32, $6
1252 mulq $5, $6, $25
1253 mulq $7, $5, $5
1254 addq $1, $22, $22
1255 addq $28, $25, $28
1256 cmpult $28, $25, $1
1257 mulq $6, $8, $6
1258 beq $1, $249
1259 sll $20, 32, $1
1260 addq $6, $1, $6
1261$249:
1262 sll $28, 32, $25
1263 ldq $2, 0($18)
1264 addq $5, $25, $5
1265 bis $5, $5, $7
1266 ldq $4, 40($17)
1267 addq $24, $7, $24
1268 srl $2, 32, $8
1269 cmpult $24, $7, $3
1270 zapnot $4, 15, $7
1271 mulq $8, $7, $0
1272 srl $28, 32, $1
1273 addq $6, $1, $6
1274 cmpult $5, $25, $1
1275 zapnot $2, 15, $5
1276 addq $1, $6, $6
1277 addq $3, $6, $6
1278 addq $23, $6, $23
1279 cmpult $23, $6, $1
1280 srl $4, 32, $6
1281 mulq $5, $6, $25
1282 mulq $7, $5, $2
1283 addq $1, $22, $22
1284 addq $0, $25, $0
1285 cmpult $0, $25, $1
1286 mulq $6, $8, $6
1287 beq $1, $253
1288 sll $20, 32, $1
1289 addq $6, $1, $6
1290$253:
1291 sll $0, 32, $25
1292 addq $2, $25, $2
1293 bis $2, $2, $7
1294 addq $24, $7, $24
1295 stq $24, 40($16)
1296 ldq $4, 48($17)
1297 ldq $5, 0($18)
1298 cmpult $24, $7, $3
1299 zapnot $4, 15, $7
1300 srl $5, 32, $8
1301 mulq $8, $7, $28
1302 srl $0, 32, $1
1303 cmpult $2, $25, $2
1304 addq $6, $1, $6
1305 addq $2, $6, $6
1306 addq $3, $6, $6
1307 addq $23, $6, $23
1308 cmpult $23, $6, $1
1309 srl $4, 32, $6
1310 zapnot $5, 15, $5
1311 mulq $5, $6, $24
1312 mulq $7, $5, $2
1313 addq $1, $22, $22
1314 addq $28, $24, $28
1315 cmpult $28, $24, $1
1316 mulq $6, $8, $6
1317 beq $1, $257
1318 sll $20, 32, $1
1319 addq $6, $1, $6
1320$257:
1321 sll $28, 32, $24
1322 ldq $1, 8($18)
1323 addq $2, $24, $2
1324 bis $2, $2, $7
1325 ldq $4, 40($17)
1326 addq $23, $7, $23
1327 srl $1, 32, $8
1328 cmpult $23, $7, $3
1329 zapnot $4, 15, $7
1330 mulq $8, $7, $25
1331 zapnot $1, 15, $5
1332 mulq $7, $5, $0
1333 srl $28, 32, $1
1334 cmpult $2, $24, $2
1335 addq $6, $1, $6
1336 addq $2, $6, $6
1337 addq $3, $6, $6
1338 addq $22, $6, $22
1339 cmpult $22, $6, $24
1340 srl $4, 32, $6
1341 mulq $5, $6, $5
1342 bis $31, 1, $21
1343 addq $25, $5, $25
1344 cmpult $25, $5, $1
1345 mulq $6, $8, $6
1346 beq $1, $261
1347 sll $21, 32, $1
1348 addq $6, $1, $6
1349$261:
1350 sll $25, 32, $5
1351 ldq $2, 16($18)
1352 addq $0, $5, $0
1353 bis $0, $0, $7
1354 ldq $4, 32($17)
1355 addq $23, $7, $23
1356 srl $2, 32, $8
1357 cmpult $23, $7, $3
1358 zapnot $4, 15, $7
1359 mulq $8, $7, $28
1360 srl $25, 32, $1
1361 addq $6, $1, $6
1362 cmpult $0, $5, $1
1363 zapnot $2, 15, $5
1364 addq $1, $6, $6
1365 addq $3, $6, $6
1366 addq $22, $6, $22
1367 cmpult $22, $6, $1
1368 srl $4, 32, $6
1369 mulq $5, $6, $25
1370 mulq $7, $5, $5
1371 addq $1, $24, $24
1372 addq $28, $25, $28
1373 cmpult $28, $25, $1
1374 mulq $6, $8, $6
1375 beq $1, $265
1376 sll $21, 32, $1
1377 addq $6, $1, $6
1378$265:
1379 sll $28, 32, $25
1380 ldq $2, 24($18)
1381 addq $5, $25, $5
1382 bis $5, $5, $7
1383 ldq $4, 24($17)
1384 addq $23, $7, $23
1385 srl $2, 32, $8
1386 cmpult $23, $7, $3
1387 zapnot $4, 15, $7
1388 mulq $8, $7, $0
1389 srl $28, 32, $1
1390 addq $6, $1, $6
1391 cmpult $5, $25, $1
1392 zapnot $2, 15, $5
1393 addq $1, $6, $6
1394 addq $3, $6, $6
1395 addq $22, $6, $22
1396 cmpult $22, $6, $1
1397 srl $4, 32, $6
1398 mulq $5, $6, $25
1399 mulq $7, $5, $5
1400 addq $1, $24, $24
1401 addq $0, $25, $0
1402 cmpult $0, $25, $1
1403 mulq $6, $8, $6
1404 beq $1, $269
1405 sll $21, 32, $1
1406 addq $6, $1, $6
1407$269:
1408 sll $0, 32, $25
1409 ldq $2, 32($18)
1410 addq $5, $25, $5
1411 bis $5, $5, $7
1412 ldq $4, 16($17)
1413 addq $23, $7, $23
1414 srl $2, 32, $8
1415 cmpult $23, $7, $3
1416 zapnot $4, 15, $7
1417 mulq $8, $7, $28
1418 srl $0, 32, $1
1419 addq $6, $1, $6
1420 cmpult $5, $25, $1
1421 zapnot $2, 15, $5
1422 addq $1, $6, $6
1423 addq $3, $6, $6
1424 addq $22, $6, $22
1425 cmpult $22, $6, $1
1426 srl $4, 32, $6
1427 mulq $5, $6, $25
1428 mulq $7, $5, $5
1429 addq $1, $24, $24
1430 addq $28, $25, $28
1431 cmpult $28, $25, $1
1432 mulq $6, $8, $6
1433 beq $1, $273
1434 sll $21, 32, $1
1435 addq $6, $1, $6
1436$273:
1437 sll $28, 32, $25
1438 ldq $2, 40($18)
1439 addq $5, $25, $5
1440 bis $5, $5, $7
1441 ldq $4, 8($17)
1442 addq $23, $7, $23
1443 srl $2, 32, $8
1444 cmpult $23, $7, $3
1445 zapnot $4, 15, $7
1446 mulq $8, $7, $0
1447 srl $28, 32, $1
1448 addq $6, $1, $6
1449 cmpult $5, $25, $1
1450 zapnot $2, 15, $5
1451 addq $1, $6, $6
1452 addq $3, $6, $6
1453 addq $22, $6, $22
1454 cmpult $22, $6, $1
1455 srl $4, 32, $6
1456 mulq $5, $6, $25
1457 mulq $7, $5, $5
1458 addq $1, $24, $24
1459 addq $0, $25, $0
1460 cmpult $0, $25, $1
1461 mulq $6, $8, $6
1462 beq $1, $277
1463 sll $21, 32, $1
1464 addq $6, $1, $6
1465$277:
1466 sll $0, 32, $25
1467 ldq $2, 48($18)
1468 addq $5, $25, $5
1469 bis $5, $5, $7
1470 ldq $4, 0($17)
1471 addq $23, $7, $23
1472 srl $2, 32, $8
1473 cmpult $23, $7, $3
1474 zapnot $4, 15, $7
1475 mulq $8, $7, $28
1476 srl $0, 32, $1
1477 addq $6, $1, $6
1478 cmpult $5, $25, $1
1479 zapnot $2, 15, $5
1480 addq $1, $6, $6
1481 addq $3, $6, $6
1482 addq $22, $6, $22
1483 cmpult $22, $6, $1
1484 srl $4, 32, $6
1485 mulq $5, $6, $25
1486 mulq $7, $5, $2
1487 addq $1, $24, $24
1488 addq $28, $25, $28
1489 cmpult $28, $25, $1
1490 mulq $6, $8, $6
1491 beq $1, $281
1492 sll $21, 32, $1
1493 addq $6, $1, $6
1494$281:
1495 sll $28, 32, $25
1496 addq $2, $25, $2
1497 bis $2, $2, $7
1498 addq $23, $7, $23
1499 stq $23, 48($16)
1500 ldq $4, 0($17)
1501 ldq $5, 56($18)
1502 cmpult $23, $7, $3
1503 zapnot $4, 15, $7
1504 srl $5, 32, $8
1505 mulq $8, $7, $0
1506 srl $28, 32, $1
1507 cmpult $2, $25, $2
1508 addq $6, $1, $6
1509 addq $2, $6, $6
1510 addq $3, $6, $6
1511 addq $22, $6, $22
1512 cmpult $22, $6, $1
1513 srl $4, 32, $6
1514 zapnot $5, 15, $5
1515 mulq $5, $6, $23
1516 mulq $7, $5, $2
1517 addq $1, $24, $24
1518 addq $0, $23, $0
1519 cmpult $0, $23, $1
1520 mulq $6, $8, $6
1521 beq $1, $285
1522 sll $21, 32, $1
1523 addq $6, $1, $6
1524$285:
1525 sll $0, 32, $23
1526 ldq $1, 48($18)
1527 addq $2, $23, $2
1528 bis $2, $2, $7
1529 ldq $4, 8($17)
1530 addq $22, $7, $22
1531 srl $1, 32, $8
1532 cmpult $22, $7, $3
1533 zapnot $4, 15, $7
1534 mulq $8, $7, $25
1535 zapnot $1, 15, $5
1536 mulq $7, $5, $21
1537 srl $0, 32, $1
1538 cmpult $2, $23, $2
1539 addq $6, $1, $6
1540 addq $2, $6, $6
1541 addq $3, $6, $6
1542 addq $24, $6, $24
1543 cmpult $24, $6, $23
1544 srl $4, 32, $6
1545 mulq $5, $6, $5
1546 bis $31, 1, $20
1547 addq $25, $5, $25
1548 cmpult $25, $5, $1
1549 mulq $6, $8, $6
1550 beq $1, $289
1551 sll $20, 32, $1
1552 addq $6, $1, $6
1553$289:
1554 sll $25, 32, $5
1555 ldq $2, 40($18)
1556 addq $21, $5, $21
1557 bis $21, $21, $7
1558 ldq $4, 16($17)
1559 addq $22, $7, $22
1560 srl $2, 32, $8
1561 cmpult $22, $7, $3
1562 zapnot $4, 15, $7
1563 mulq $8, $7, $28
1564 srl $25, 32, $1
1565 addq $6, $1, $6
1566 cmpult $21, $5, $1
1567 zapnot $2, 15, $5
1568 addq $1, $6, $6
1569 addq $3, $6, $6
1570 addq $24, $6, $24
1571 cmpult $24, $6, $1
1572 srl $4, 32, $6
1573 mulq $5, $6, $25
1574 mulq $7, $5, $5
1575 addq $1, $23, $23
1576 addq $28, $25, $28
1577 cmpult $28, $25, $1
1578 mulq $6, $8, $6
1579 beq $1, $293
1580 sll $20, 32, $1
1581 addq $6, $1, $6
1582$293:
1583 sll $28, 32, $25
1584 ldq $2, 32($18)
1585 addq $5, $25, $5
1586 bis $5, $5, $7
1587 ldq $4, 24($17)
1588 addq $22, $7, $22
1589 srl $2, 32, $8
1590 cmpult $22, $7, $3
1591 zapnot $4, 15, $7
1592 mulq $8, $7, $0
1593 srl $28, 32, $1
1594 addq $6, $1, $6
1595 cmpult $5, $25, $1
1596 zapnot $2, 15, $5
1597 addq $1, $6, $6
1598 addq $3, $6, $6
1599 addq $24, $6, $24
1600 cmpult $24, $6, $1
1601 srl $4, 32, $6
1602 mulq $5, $6, $25
1603 mulq $7, $5, $5
1604 addq $1, $23, $23
1605 addq $0, $25, $0
1606 cmpult $0, $25, $1
1607 mulq $6, $8, $6
1608 beq $1, $297
1609 sll $20, 32, $1
1610 addq $6, $1, $6
1611$297:
1612 sll $0, 32, $25
1613 ldq $2, 24($18)
1614 addq $5, $25, $5
1615 bis $5, $5, $7
1616 ldq $4, 32($17)
1617 addq $22, $7, $22
1618 srl $2, 32, $8
1619 cmpult $22, $7, $3
1620 zapnot $4, 15, $7
1621 mulq $8, $7, $28
1622 srl $0, 32, $1
1623 addq $6, $1, $6
1624 cmpult $5, $25, $1
1625 zapnot $2, 15, $5
1626 addq $1, $6, $6
1627 addq $3, $6, $6
1628 addq $24, $6, $24
1629 cmpult $24, $6, $1
1630 srl $4, 32, $6
1631 mulq $5, $6, $25
1632 mulq $7, $5, $5
1633 addq $1, $23, $23
1634 addq $28, $25, $28
1635 cmpult $28, $25, $1
1636 mulq $6, $8, $6
1637 beq $1, $301
1638 sll $20, 32, $1
1639 addq $6, $1, $6
1640$301:
1641 sll $28, 32, $25
1642 ldq $2, 16($18)
1643 addq $5, $25, $5
1644 bis $5, $5, $7
1645 ldq $4, 40($17)
1646 addq $22, $7, $22
1647 srl $2, 32, $8
1648 cmpult $22, $7, $3
1649 zapnot $4, 15, $7
1650 mulq $8, $7, $0
1651 srl $28, 32, $1
1652 addq $6, $1, $6
1653 cmpult $5, $25, $1
1654 zapnot $2, 15, $5
1655 addq $1, $6, $6
1656 addq $3, $6, $6
1657 addq $24, $6, $24
1658 cmpult $24, $6, $1
1659 srl $4, 32, $6
1660 mulq $5, $6, $25
1661 mulq $7, $5, $5
1662 addq $1, $23, $23
1663 addq $0, $25, $0
1664 cmpult $0, $25, $1
1665 mulq $6, $8, $6
1666 beq $1, $305
1667 sll $20, 32, $1
1668 addq $6, $1, $6
1669$305:
1670 sll $0, 32, $25
1671 ldq $2, 8($18)
1672 addq $5, $25, $5
1673 bis $5, $5, $7
1674 ldq $4, 48($17)
1675 addq $22, $7, $22
1676 srl $2, 32, $8
1677 cmpult $22, $7, $3
1678 zapnot $4, 15, $7
1679 mulq $8, $7, $28
1680 srl $0, 32, $1
1681 addq $6, $1, $6
1682 cmpult $5, $25, $1
1683 zapnot $2, 15, $5
1684 addq $1, $6, $6
1685 addq $3, $6, $6
1686 addq $24, $6, $24
1687 cmpult $24, $6, $1
1688 srl $4, 32, $6
1689 mulq $5, $6, $25
1690 mulq $7, $5, $5
1691 addq $1, $23, $23
1692 addq $28, $25, $28
1693 cmpult $28, $25, $1
1694 mulq $6, $8, $6
1695 beq $1, $309
1696 sll $20, 32, $1
1697 addq $6, $1, $6
1698$309:
1699 sll $28, 32, $25
1700 ldq $2, 0($18)
1701 addq $5, $25, $5
1702 bis $5, $5, $7
1703 ldq $4, 56($17)
1704 addq $22, $7, $22
1705 srl $2, 32, $8
1706 cmpult $22, $7, $3
1707 zapnot $4, 15, $7
1708 mulq $8, $7, $0
1709 srl $28, 32, $1
1710 addq $6, $1, $6
1711 cmpult $5, $25, $1
1712 zapnot $2, 15, $5
1713 addq $1, $6, $6
1714 addq $3, $6, $6
1715 addq $24, $6, $24
1716 cmpult $24, $6, $1
1717 srl $4, 32, $6
1718 mulq $5, $6, $25
1719 mulq $7, $5, $2
1720 addq $1, $23, $23
1721 addq $0, $25, $0
1722 cmpult $0, $25, $1
1723 mulq $6, $8, $6
1724 beq $1, $313
1725 sll $20, 32, $1
1726 addq $6, $1, $6
1727$313:
1728 sll $0, 32, $25
1729 addq $2, $25, $2
1730 bis $2, $2, $7
1731 addq $22, $7, $22
1732 stq $22, 56($16)
1733 ldq $4, 56($17)
1734 ldq $5, 8($18)
1735 cmpult $22, $7, $3
1736 zapnot $4, 15, $7
1737 srl $5, 32, $8
1738 mulq $8, $7, $28
1739 srl $0, 32, $1
1740 cmpult $2, $25, $2
1741 addq $6, $1, $6
1742 addq $2, $6, $6
1743 addq $3, $6, $6
1744 addq $24, $6, $24
1745 cmpult $24, $6, $1
1746 srl $4, 32, $6
1747 zapnot $5, 15, $5
1748 mulq $5, $6, $22
1749 mulq $7, $5, $2
1750 addq $1, $23, $23
1751 addq $28, $22, $28
1752 cmpult $28, $22, $1
1753 mulq $6, $8, $6
1754 beq $1, $317
1755 sll $20, 32, $1
1756 addq $6, $1, $6
1757$317:
1758 sll $28, 32, $22
1759 ldq $1, 16($18)
1760 addq $2, $22, $2
1761 bis $2, $2, $7
1762 ldq $4, 48($17)
1763 addq $24, $7, $24
1764 srl $1, 32, $8
1765 cmpult $24, $7, $3
1766 zapnot $4, 15, $7
1767 mulq $8, $7, $25
1768 zapnot $1, 15, $5
1769 mulq $7, $5, $0
1770 srl $28, 32, $1
1771 cmpult $2, $22, $2
1772 addq $6, $1, $6
1773 addq $2, $6, $6
1774 addq $3, $6, $6
1775 addq $23, $6, $23
1776 cmpult $23, $6, $22
1777 srl $4, 32, $6
1778 mulq $5, $6, $5
1779 bis $31, 1, $21
1780 addq $25, $5, $25
1781 cmpult $25, $5, $1
1782 mulq $6, $8, $6
1783 beq $1, $321
1784 sll $21, 32, $1
1785 addq $6, $1, $6
1786$321:
1787 sll $25, 32, $5
1788 ldq $2, 24($18)
1789 addq $0, $5, $0
1790 bis $0, $0, $7
1791 ldq $4, 40($17)
1792 addq $24, $7, $24
1793 srl $2, 32, $8
1794 cmpult $24, $7, $3
1795 zapnot $4, 15, $7
1796 mulq $8, $7, $28
1797 srl $25, 32, $1
1798 addq $6, $1, $6
1799 cmpult $0, $5, $1
1800 zapnot $2, 15, $5
1801 addq $1, $6, $6
1802 addq $3, $6, $6
1803 addq $23, $6, $23
1804 cmpult $23, $6, $1
1805 srl $4, 32, $6
1806 mulq $5, $6, $25
1807 mulq $7, $5, $5
1808 addq $1, $22, $22
1809 addq $28, $25, $28
1810 cmpult $28, $25, $1
1811 mulq $6, $8, $6
1812 beq $1, $325
1813 sll $21, 32, $1
1814 addq $6, $1, $6
1815$325:
1816 sll $28, 32, $25
1817 ldq $2, 32($18)
1818 addq $5, $25, $5
1819 bis $5, $5, $7
1820 ldq $4, 32($17)
1821 addq $24, $7, $24
1822 srl $2, 32, $8
1823 cmpult $24, $7, $3
1824 zapnot $4, 15, $7
1825 mulq $8, $7, $0
1826 srl $28, 32, $1
1827 addq $6, $1, $6
1828 cmpult $5, $25, $1
1829 zapnot $2, 15, $5
1830 addq $1, $6, $6
1831 addq $3, $6, $6
1832 addq $23, $6, $23
1833 cmpult $23, $6, $1
1834 srl $4, 32, $6
1835 mulq $5, $6, $25
1836 mulq $7, $5, $5
1837 addq $1, $22, $22
1838 addq $0, $25, $0
1839 cmpult $0, $25, $1
1840 mulq $6, $8, $6
1841 beq $1, $329
1842 sll $21, 32, $1
1843 addq $6, $1, $6
1844$329:
1845 sll $0, 32, $25
1846 ldq $2, 40($18)
1847 addq $5, $25, $5
1848 bis $5, $5, $7
1849 ldq $4, 24($17)
1850 addq $24, $7, $24
1851 srl $2, 32, $8
1852 cmpult $24, $7, $3
1853 zapnot $4, 15, $7
1854 mulq $8, $7, $28
1855 srl $0, 32, $1
1856 addq $6, $1, $6
1857 cmpult $5, $25, $1
1858 zapnot $2, 15, $5
1859 addq $1, $6, $6
1860 addq $3, $6, $6
1861 addq $23, $6, $23
1862 cmpult $23, $6, $1
1863 srl $4, 32, $6
1864 mulq $5, $6, $25
1865 mulq $7, $5, $5
1866 addq $1, $22, $22
1867 addq $28, $25, $28
1868 cmpult $28, $25, $1
1869 mulq $6, $8, $6
1870 beq $1, $333
1871 sll $21, 32, $1
1872 addq $6, $1, $6
1873$333:
1874 sll $28, 32, $25
1875 ldq $2, 48($18)
1876 addq $5, $25, $5
1877 bis $5, $5, $7
1878 ldq $4, 16($17)
1879 addq $24, $7, $24
1880 srl $2, 32, $8
1881 cmpult $24, $7, $3
1882 zapnot $4, 15, $7
1883 mulq $8, $7, $0
1884 srl $28, 32, $1
1885 addq $6, $1, $6
1886 cmpult $5, $25, $1
1887 zapnot $2, 15, $5
1888 addq $1, $6, $6
1889 addq $3, $6, $6
1890 addq $23, $6, $23
1891 cmpult $23, $6, $1
1892 srl $4, 32, $6
1893 mulq $5, $6, $25
1894 mulq $7, $5, $5
1895 addq $1, $22, $22
1896 addq $0, $25, $0
1897 cmpult $0, $25, $1
1898 mulq $6, $8, $6
1899 beq $1, $337
1900 sll $21, 32, $1
1901 addq $6, $1, $6
1902$337:
1903 sll $0, 32, $25
1904 ldq $2, 56($18)
1905 addq $5, $25, $5
1906 bis $5, $5, $7
1907 ldq $4, 8($17)
1908 addq $24, $7, $24
1909 srl $2, 32, $8
1910 cmpult $24, $7, $3
1911 zapnot $4, 15, $7
1912 mulq $8, $7, $28
1913 srl $0, 32, $1
1914 addq $6, $1, $6
1915 cmpult $5, $25, $1
1916 zapnot $2, 15, $5
1917 addq $1, $6, $6
1918 addq $3, $6, $6
1919 addq $23, $6, $23
1920 cmpult $23, $6, $1
1921 srl $4, 32, $6
1922 mulq $5, $6, $25
1923 mulq $7, $5, $2
1924 addq $1, $22, $22
1925 addq $28, $25, $28
1926 cmpult $28, $25, $1
1927 mulq $6, $8, $6
1928 beq $1, $341
1929 sll $21, 32, $1
1930 addq $6, $1, $6
1931$341:
1932 sll $28, 32, $25
1933 addq $2, $25, $2
1934 bis $2, $2, $7
1935 addq $24, $7, $24
1936 stq $24, 64($16)
1937 ldq $4, 16($17)
1938 ldq $5, 56($18)
1939 cmpult $24, $7, $3
1940 zapnot $4, 15, $7
1941 srl $5, 32, $8
1942 mulq $8, $7, $0
1943 srl $28, 32, $1
1944 cmpult $2, $25, $2
1945 addq $6, $1, $6
1946 addq $2, $6, $6
1947 addq $3, $6, $6
1948 addq $23, $6, $23
1949 cmpult $23, $6, $1
1950 srl $4, 32, $6
1951 zapnot $5, 15, $5
1952 mulq $5, $6, $24
1953 mulq $7, $5, $2
1954 addq $1, $22, $22
1955 addq $0, $24, $0
1956 cmpult $0, $24, $1
1957 mulq $6, $8, $6
1958 beq $1, $345
1959 sll $21, 32, $1
1960 addq $6, $1, $6
1961$345:
1962 sll $0, 32, $24
1963 ldq $1, 48($18)
1964 addq $2, $24, $2
1965 bis $2, $2, $7
1966 ldq $4, 24($17)
1967 addq $23, $7, $23
1968 srl $1, 32, $8
1969 cmpult $23, $7, $3
1970 zapnot $4, 15, $7
1971 mulq $8, $7, $25
1972 zapnot $1, 15, $5
1973 mulq $7, $5, $21
1974 srl $0, 32, $1
1975 cmpult $2, $24, $2
1976 addq $6, $1, $6
1977 addq $2, $6, $6
1978 addq $3, $6, $6
1979 addq $22, $6, $22
1980 cmpult $22, $6, $24
1981 srl $4, 32, $6
1982 mulq $5, $6, $5
1983 bis $31, 1, $20
1984 addq $25, $5, $25
1985 cmpult $25, $5, $1
1986 mulq $6, $8, $6
1987 beq $1, $349
1988 sll $20, 32, $1
1989 addq $6, $1, $6
1990$349:
1991 sll $25, 32, $5
1992 ldq $2, 40($18)
1993 addq $21, $5, $21
1994 bis $21, $21, $7
1995 ldq $4, 32($17)
1996 addq $23, $7, $23
1997 srl $2, 32, $8
1998 cmpult $23, $7, $3
1999 zapnot $4, 15, $7
2000 mulq $8, $7, $28
2001 srl $25, 32, $1
2002 addq $6, $1, $6
2003 cmpult $21, $5, $1
2004 zapnot $2, 15, $5
2005 addq $1, $6, $6
2006 addq $3, $6, $6
2007 addq $22, $6, $22
2008 cmpult $22, $6, $1
2009 srl $4, 32, $6
2010 mulq $5, $6, $25
2011 mulq $7, $5, $5
2012 addq $1, $24, $24
2013 addq $28, $25, $28
2014 cmpult $28, $25, $1
2015 mulq $6, $8, $6
2016 beq $1, $353
2017 sll $20, 32, $1
2018 addq $6, $1, $6
2019$353:
2020 sll $28, 32, $25
2021 ldq $2, 32($18)
2022 addq $5, $25, $5
2023 bis $5, $5, $7
2024 ldq $4, 40($17)
2025 addq $23, $7, $23
2026 srl $2, 32, $8
2027 cmpult $23, $7, $3
2028 zapnot $4, 15, $7
2029 mulq $8, $7, $0
2030 srl $28, 32, $1
2031 addq $6, $1, $6
2032 cmpult $5, $25, $1
2033 zapnot $2, 15, $5
2034 addq $1, $6, $6
2035 addq $3, $6, $6
2036 addq $22, $6, $22
2037 cmpult $22, $6, $1
2038 srl $4, 32, $6
2039 mulq $5, $6, $25
2040 mulq $7, $5, $5
2041 addq $1, $24, $24
2042 addq $0, $25, $0
2043 cmpult $0, $25, $1
2044 mulq $6, $8, $6
2045 beq $1, $357
2046 sll $20, 32, $1
2047 addq $6, $1, $6
2048$357:
2049 sll $0, 32, $25
2050 ldq $2, 24($18)
2051 addq $5, $25, $5
2052 bis $5, $5, $7
2053 ldq $4, 48($17)
2054 addq $23, $7, $23
2055 srl $2, 32, $8
2056 cmpult $23, $7, $3
2057 zapnot $4, 15, $7
2058 mulq $8, $7, $28
2059 srl $0, 32, $1
2060 addq $6, $1, $6
2061 cmpult $5, $25, $1
2062 zapnot $2, 15, $5
2063 addq $1, $6, $6
2064 addq $3, $6, $6
2065 addq $22, $6, $22
2066 cmpult $22, $6, $1
2067 srl $4, 32, $6
2068 mulq $5, $6, $25
2069 mulq $7, $5, $5
2070 addq $1, $24, $24
2071 addq $28, $25, $28
2072 cmpult $28, $25, $1
2073 mulq $6, $8, $6
2074 beq $1, $361
2075 sll $20, 32, $1
2076 addq $6, $1, $6
2077$361:
2078 sll $28, 32, $25
2079 ldq $2, 16($18)
2080 addq $5, $25, $5
2081 bis $5, $5, $7
2082 ldq $4, 56($17)
2083 addq $23, $7, $23
2084 srl $2, 32, $8
2085 cmpult $23, $7, $3
2086 zapnot $4, 15, $7
2087 mulq $8, $7, $0
2088 srl $28, 32, $1
2089 addq $6, $1, $6
2090 cmpult $5, $25, $1
2091 zapnot $2, 15, $5
2092 addq $1, $6, $6
2093 addq $3, $6, $6
2094 addq $22, $6, $22
2095 cmpult $22, $6, $1
2096 srl $4, 32, $6
2097 mulq $5, $6, $25
2098 mulq $7, $5, $2
2099 addq $1, $24, $24
2100 addq $0, $25, $0
2101 cmpult $0, $25, $1
2102 mulq $6, $8, $6
2103 beq $1, $365
2104 sll $20, 32, $1
2105 addq $6, $1, $6
2106$365:
2107 sll $0, 32, $25
2108 addq $2, $25, $2
2109 bis $2, $2, $7
2110 addq $23, $7, $23
2111 stq $23, 72($16)
2112 ldq $4, 56($17)
2113 ldq $5, 24($18)
2114 cmpult $23, $7, $3
2115 zapnot $4, 15, $7
2116 srl $5, 32, $8
2117 mulq $8, $7, $28
2118 srl $0, 32, $1
2119 cmpult $2, $25, $2
2120 addq $6, $1, $6
2121 addq $2, $6, $6
2122 addq $3, $6, $6
2123 addq $22, $6, $22
2124 cmpult $22, $6, $1
2125 srl $4, 32, $6
2126 zapnot $5, 15, $5
2127 mulq $5, $6, $23
2128 mulq $7, $5, $2
2129 addq $1, $24, $24
2130 addq $28, $23, $28
2131 cmpult $28, $23, $1
2132 mulq $6, $8, $6
2133 beq $1, $369
2134 sll $20, 32, $1
2135 addq $6, $1, $6
2136$369:
2137 sll $28, 32, $23
2138 ldq $1, 32($18)
2139 addq $2, $23, $2
2140 bis $2, $2, $7
2141 ldq $4, 48($17)
2142 addq $22, $7, $22
2143 srl $1, 32, $8
2144 cmpult $22, $7, $3
2145 zapnot $4, 15, $7
2146 mulq $8, $7, $25
2147 zapnot $1, 15, $5
2148 mulq $7, $5, $0
2149 srl $28, 32, $1
2150 cmpult $2, $23, $2
2151 addq $6, $1, $6
2152 addq $2, $6, $6
2153 addq $3, $6, $6
2154 addq $24, $6, $24
2155 cmpult $24, $6, $23
2156 srl $4, 32, $6
2157 mulq $5, $6, $5
2158 bis $31, 1, $21
2159 addq $25, $5, $25
2160 cmpult $25, $5, $1
2161 mulq $6, $8, $6
2162 beq $1, $373
2163 sll $21, 32, $1
2164 addq $6, $1, $6
2165$373:
2166 sll $25, 32, $5
2167 ldq $2, 40($18)
2168 addq $0, $5, $0
2169 bis $0, $0, $7
2170 ldq $4, 40($17)
2171 addq $22, $7, $22
2172 srl $2, 32, $8
2173 cmpult $22, $7, $3
2174 zapnot $4, 15, $7
2175 mulq $8, $7, $28
2176 srl $25, 32, $1
2177 addq $6, $1, $6
2178 cmpult $0, $5, $1
2179 zapnot $2, 15, $5
2180 addq $1, $6, $6
2181 addq $3, $6, $6
2182 addq $24, $6, $24
2183 cmpult $24, $6, $1
2184 srl $4, 32, $6
2185 mulq $5, $6, $25
2186 mulq $7, $5, $5
2187 addq $1, $23, $23
2188 addq $28, $25, $28
2189 cmpult $28, $25, $1
2190 mulq $6, $8, $6
2191 beq $1, $377
2192 sll $21, 32, $1
2193 addq $6, $1, $6
2194$377:
2195 sll $28, 32, $25
2196 ldq $2, 48($18)
2197 addq $5, $25, $5
2198 bis $5, $5, $7
2199 ldq $4, 32($17)
2200 addq $22, $7, $22
2201 srl $2, 32, $8
2202 cmpult $22, $7, $3
2203 zapnot $4, 15, $7
2204 mulq $8, $7, $0
2205 srl $28, 32, $1
2206 addq $6, $1, $6
2207 cmpult $5, $25, $1
2208 zapnot $2, 15, $5
2209 addq $1, $6, $6
2210 addq $3, $6, $6
2211 addq $24, $6, $24
2212 cmpult $24, $6, $1
2213 srl $4, 32, $6
2214 mulq $5, $6, $25
2215 mulq $7, $5, $5
2216 addq $1, $23, $23
2217 addq $0, $25, $0
2218 cmpult $0, $25, $1
2219 mulq $6, $8, $6
2220 beq $1, $381
2221 sll $21, 32, $1
2222 addq $6, $1, $6
2223$381:
2224 sll $0, 32, $25
2225 ldq $2, 56($18)
2226 addq $5, $25, $5
2227 bis $5, $5, $7
2228 ldq $4, 24($17)
2229 addq $22, $7, $22
2230 srl $2, 32, $8
2231 cmpult $22, $7, $3
2232 zapnot $4, 15, $7
2233 mulq $8, $7, $28
2234 srl $0, 32, $1
2235 addq $6, $1, $6
2236 cmpult $5, $25, $1
2237 zapnot $2, 15, $5
2238 addq $1, $6, $6
2239 addq $3, $6, $6
2240 addq $24, $6, $24
2241 cmpult $24, $6, $1
2242 srl $4, 32, $6
2243 mulq $5, $6, $25
2244 mulq $7, $5, $2
2245 addq $1, $23, $23
2246 addq $28, $25, $28
2247 cmpult $28, $25, $1
2248 mulq $6, $8, $6
2249 beq $1, $385
2250 sll $21, 32, $1
2251 addq $6, $1, $6
2252$385:
2253 sll $28, 32, $25
2254 addq $2, $25, $2
2255 bis $2, $2, $7
2256 addq $22, $7, $22
2257 stq $22, 80($16)
2258 ldq $4, 32($17)
2259 ldq $5, 56($18)
2260 cmpult $22, $7, $3
2261 zapnot $4, 15, $7
2262 srl $5, 32, $8
2263 mulq $8, $7, $0
2264 srl $28, 32, $1
2265 cmpult $2, $25, $2
2266 addq $6, $1, $6
2267 addq $2, $6, $6
2268 addq $3, $6, $6
2269 addq $24, $6, $24
2270 cmpult $24, $6, $1
2271 srl $4, 32, $6
2272 zapnot $5, 15, $5
2273 mulq $5, $6, $22
2274 mulq $7, $5, $2
2275 addq $1, $23, $23
2276 addq $0, $22, $0
2277 cmpult $0, $22, $1
2278 mulq $6, $8, $6
2279 beq $1, $389
2280 sll $21, 32, $1
2281 addq $6, $1, $6
2282$389:
2283 sll $0, 32, $22
2284 ldq $1, 48($18)
2285 addq $2, $22, $2
2286 bis $2, $2, $7
2287 ldq $4, 40($17)
2288 addq $24, $7, $24
2289 srl $1, 32, $8
2290 cmpult $24, $7, $3
2291 zapnot $4, 15, $7
2292 mulq $8, $7, $25
2293 zapnot $1, 15, $5
2294 mulq $7, $5, $21
2295 srl $0, 32, $1
2296 cmpult $2, $22, $2
2297 addq $6, $1, $6
2298 addq $2, $6, $6
2299 addq $3, $6, $6
2300 addq $23, $6, $23
2301 cmpult $23, $6, $22
2302 srl $4, 32, $6
2303 mulq $5, $6, $5
2304 bis $31, 1, $20
2305 addq $25, $5, $25
2306 cmpult $25, $5, $1
2307 mulq $6, $8, $6
2308 beq $1, $393
2309 sll $20, 32, $1
2310 addq $6, $1, $6
2311$393:
2312 sll $25, 32, $5
2313 ldq $2, 40($18)
2314 addq $21, $5, $21
2315 bis $21, $21, $7
2316 ldq $4, 48($17)
2317 addq $24, $7, $24
2318 srl $2, 32, $8
2319 cmpult $24, $7, $3
2320 zapnot $4, 15, $7
2321 mulq $8, $7, $28
2322 srl $25, 32, $1
2323 addq $6, $1, $6
2324 cmpult $21, $5, $1
2325 zapnot $2, 15, $5
2326 addq $1, $6, $6
2327 addq $3, $6, $6
2328 addq $23, $6, $23
2329 cmpult $23, $6, $1
2330 srl $4, 32, $6
2331 mulq $5, $6, $25
2332 mulq $7, $5, $5
2333 addq $1, $22, $22
2334 addq $28, $25, $28
2335 cmpult $28, $25, $1
2336 mulq $6, $8, $6
2337 beq $1, $397
2338 sll $20, 32, $1
2339 addq $6, $1, $6
2340$397:
2341 sll $28, 32, $25
2342 ldq $2, 32($18)
2343 addq $5, $25, $5
2344 bis $5, $5, $7
2345 ldq $4, 56($17)
2346 addq $24, $7, $24
2347 srl $2, 32, $8
2348 cmpult $24, $7, $3
2349 zapnot $4, 15, $7
2350 mulq $8, $7, $21
2351 srl $28, 32, $1
2352 addq $6, $1, $6
2353 cmpult $5, $25, $1
2354 zapnot $2, 15, $5
2355 addq $1, $6, $6
2356 addq $3, $6, $6
2357 addq $23, $6, $23
2358 cmpult $23, $6, $1
2359 srl $4, 32, $6
2360 mulq $5, $6, $25
2361 mulq $7, $5, $2
2362 addq $1, $22, $22
2363 addq $21, $25, $21
2364 cmpult $21, $25, $1
2365 mulq $6, $8, $6
2366 beq $1, $401
2367 sll $20, 32, $1
2368 addq $6, $1, $6
2369$401:
2370 sll $21, 32, $25
2371 addq $2, $25, $2
2372 bis $2, $2, $7
2373 addq $24, $7, $24
2374 stq $24, 88($16)
2375 ldq $4, 56($17)
2376 ldq $5, 40($18)
2377 cmpult $24, $7, $3
2378 zapnot $4, 15, $7
2379 srl $5, 32, $8
2380 mulq $8, $7, $0
2381 srl $21, 32, $1
2382 cmpult $2, $25, $2
2383 addq $6, $1, $6
2384 addq $2, $6, $6
2385 addq $3, $6, $6
2386 addq $23, $6, $23
2387 cmpult $23, $6, $1
2388 srl $4, 32, $6
2389 zapnot $5, 15, $5
2390 mulq $5, $6, $24
2391 mulq $7, $5, $5
2392 addq $1, $22, $22
2393 addq $0, $24, $0
2394 cmpult $0, $24, $1
2395 mulq $6, $8, $6
2396 beq $1, $405
2397 sll $20, 32, $1
2398 addq $6, $1, $6
2399$405:
2400 sll $0, 32, $24
2401 ldq $2, 48($18)
2402 addq $5, $24, $5
2403 bis $5, $5, $7
2404 ldq $4, 48($17)
2405 addq $23, $7, $23
2406 srl $2, 32, $8
2407 cmpult $23, $7, $3
2408 zapnot $4, 15, $7
2409 mulq $8, $7, $28
2410 srl $0, 32, $1
2411 addq $6, $1, $6
2412 cmpult $5, $24, $1
2413 zapnot $2, 15, $5
2414 addq $1, $6, $6
2415 addq $3, $6, $6
2416 addq $22, $6, $22
2417 cmpult $22, $6, $24
2418 srl $4, 32, $6
2419 mulq $5, $6, $25
2420 mulq $7, $5, $5
2421 addq $28, $25, $28
2422 cmpult $28, $25, $1
2423 mulq $6, $8, $6
2424 beq $1, $409
2425 sll $20, 32, $1
2426 addq $6, $1, $6
2427$409:
2428 sll $28, 32, $25
2429 ldq $2, 56($18)
2430 addq $5, $25, $5
2431 bis $5, $5, $7
2432 ldq $4, 40($17)
2433 addq $23, $7, $23
2434 srl $2, 32, $8
2435 cmpult $23, $7, $3
2436 zapnot $4, 15, $7
2437 mulq $8, $7, $0
2438 srl $28, 32, $1
2439 addq $6, $1, $6
2440 cmpult $5, $25, $1
2441 zapnot $2, 15, $5
2442 addq $1, $6, $6
2443 addq $3, $6, $6
2444 addq $22, $6, $22
2445 cmpult $22, $6, $1
2446 srl $4, 32, $6
2447 mulq $5, $6, $25
2448 mulq $7, $5, $2
2449 addq $1, $24, $24
2450 addq $0, $25, $0
2451 cmpult $0, $25, $1
2452 mulq $6, $8, $6
2453 beq $1, $413
2454 sll $20, 32, $1
2455 addq $6, $1, $6
2456$413:
2457 sll $0, 32, $25
2458 addq $2, $25, $2
2459 bis $2, $2, $7
2460 addq $23, $7, $23
2461 stq $23, 96($16)
2462 ldq $4, 48($17)
2463 ldq $5, 56($18)
2464 cmpult $23, $7, $3
2465 zapnot $4, 15, $7
2466 srl $5, 32, $8
2467 mulq $8, $7, $28
2468 srl $0, 32, $1
2469 cmpult $2, $25, $2
2470 addq $6, $1, $6
2471 addq $2, $6, $6
2472 addq $3, $6, $6
2473 addq $22, $6, $22
2474 cmpult $22, $6, $1
2475 srl $4, 32, $6
2476 zapnot $5, 15, $5
2477 mulq $5, $6, $23
2478 mulq $7, $5, $5
2479 addq $1, $24, $24
2480 addq $28, $23, $28
2481 cmpult $28, $23, $1
2482 mulq $6, $8, $6
2483 beq $1, $417
2484 sll $20, 32, $1
2485 addq $6, $1, $6
2486$417:
2487 sll $28, 32, $23
2488 ldq $2, 48($18)
2489 addq $5, $23, $5
2490 bis $5, $5, $7
2491 ldq $4, 56($17)
2492 addq $22, $7, $22
2493 srl $2, 32, $8
2494 cmpult $22, $7, $3
2495 zapnot $4, 15, $7
2496 mulq $8, $7, $0
2497 srl $28, 32, $1
2498 addq $6, $1, $6
2499 cmpult $5, $23, $1
2500 zapnot $2, 15, $5
2501 addq $1, $6, $6
2502 addq $3, $6, $6
2503 addq $24, $6, $24
2504 cmpult $24, $6, $23
2505 srl $4, 32, $6
2506 mulq $5, $6, $25
2507 mulq $7, $5, $2
2508 addq $0, $25, $0
2509 cmpult $0, $25, $1
2510 mulq $6, $8, $6
2511 beq $1, $421
2512 sll $20, 32, $1
2513 addq $6, $1, $6
2514$421:
2515 sll $0, 32, $25
2516 addq $2, $25, $2
2517 bis $2, $2, $7
2518 addq $22, $7, $22
2519 stq $22, 104($16)
2520 ldq $4, 56($17)
2521 ldq $5, 56($18)
2522 cmpult $22, $7, $3
2523 zapnot $4, 15, $7
2524 srl $5, 32, $8
2525 mulq $8, $7, $28
2526 srl $0, 32, $1
2527 cmpult $2, $25, $2
2528 addq $6, $1, $6
2529 addq $2, $6, $6
2530 addq $3, $6, $6
2531 addq $24, $6, $24
2532 cmpult $24, $6, $1
2533 srl $4, 32, $6
2534 zapnot $5, 15, $5
2535 mulq $5, $6, $22
2536 mulq $7, $5, $2
2537 addq $1, $23, $23
2538 addq $28, $22, $28
2539 cmpult $28, $22, $1
2540 mulq $6, $8, $3
2541 beq $1, $425
2542 sll $20, 32, $1
2543 addq $3, $1, $3
2544$425:
2545 sll $28, 32, $22
2546 srl $28, 32, $1
2547 addq $2, $22, $2
2548 addq $3, $1, $3
2549 bis $2, $2, $7
2550 addq $24, $7, $24
2551 cmpult $7, $22, $1
2552 cmpult $24, $7, $2
2553 addq $1, $3, $6
2554 addq $2, $6, $6
2555 stq $24, 112($16)
2556 addq $23, $6, $23
2557 stq $23, 120($16)
2558 ret $31, ($26), 1
2559 .end bn_mul_comba8
2560 .text
2561 .align 3
2562 .globl bn_sqr_comba4
2563 .ent bn_sqr_comba4
2564bn_sqr_comba4:
2565bn_sqr_comba4..ng:
2566 .frame $30,0,$26,0
2567 .prologue 0
2568
2569 ldq $0, 0($17)
2570 ldq $1, 8($17)
2571 ldq $2, 16($17)
2572 ldq $3, 24($17)
2573 bis $31, $31, $6
2574 mulq $0, $0, $4
2575 umulh $0, $0, $5
2576 stq $4, 0($16)
2577 bis $31, $31, $4
2578 mulq $0, $1, $7
2579 umulh $0, $1, $8
2580 cmplt $7, $31, $22
2581 cmplt $8, $31, $23
2582 addq $7, $7, $7
2583 addq $8, $8, $8
2584 addq $8, $22, $8
2585 addq $4, $23, $4
2586 addq $5, $7, $5
2587 addq $6, $8, $6
2588 cmpult $5, $7, $24
2589 cmpult $6, $8, $25
2590 addq $6, $24, $6
2591 addq $4, $25, $4
2592 stq $5, 8($16)
2593 bis $31, $31, $5
2594 mulq $1, $1, $27
2595 umulh $1, $1, $28
2596 addq $6, $27, $6
2597 addq $4, $28, $4
2598 cmpult $6, $27, $21
2599 cmpult $4, $28, $20
2600 addq $4, $21, $4
2601 addq $5, $20, $5
2602 mulq $2, $0, $19
2603 umulh $2, $0, $18
2604 cmplt $19, $31, $17
2605 cmplt $18, $31, $22
2606 addq $19, $19, $19
2607 addq $18, $18, $18
2608 addq $18, $17, $18
2609 addq $5, $22, $5
2610 addq $6, $19, $6
2611 addq $4, $18, $4
2612 cmpult $6, $19, $23
2613 cmpult $4, $18, $7
2614 addq $4, $23, $4
2615 addq $5, $7, $5
2616 stq $6, 16($16)
2617 bis $31, $31, $6
2618 mulq $3, $0, $8
2619 umulh $3, $0, $24
2620 cmplt $8, $31, $25
2621 cmplt $24, $31, $27
2622 addq $8, $8, $8
2623 addq $24, $24, $24
2624 addq $24, $25, $24
2625 addq $6, $27, $6
2626 addq $4, $8, $4
2627 addq $5, $24, $5
2628 cmpult $4, $8, $28
2629 cmpult $5, $24, $21
2630 addq $5, $28, $5
2631 addq $6, $21, $6
2632 mulq $2, $1, $20
2633 umulh $2, $1, $17
2634 cmplt $20, $31, $22
2635 cmplt $17, $31, $19
2636 addq $20, $20, $20
2637 addq $17, $17, $17
2638 addq $17, $22, $17
2639 addq $6, $19, $6
2640 addq $4, $20, $4
2641 addq $5, $17, $5
2642 cmpult $4, $20, $18
2643 cmpult $5, $17, $23
2644 addq $5, $18, $5
2645 addq $6, $23, $6
2646 stq $4, 24($16)
2647 bis $31, $31, $4
2648 mulq $2, $2, $7
2649 umulh $2, $2, $25
2650 addq $5, $7, $5
2651 addq $6, $25, $6
2652 cmpult $5, $7, $27
2653 cmpult $6, $25, $8
2654 addq $6, $27, $6
2655 addq $4, $8, $4
2656 mulq $3, $1, $24
2657 umulh $3, $1, $28
2658 cmplt $24, $31, $21
2659 cmplt $28, $31, $22
2660 addq $24, $24, $24
2661 addq $28, $28, $28
2662 addq $28, $21, $28
2663 addq $4, $22, $4
2664 addq $5, $24, $5
2665 addq $6, $28, $6
2666 cmpult $5, $24, $19
2667 cmpult $6, $28, $20
2668 addq $6, $19, $6
2669 addq $4, $20, $4
2670 stq $5, 32($16)
2671 bis $31, $31, $5
2672 mulq $3, $2, $17
2673 umulh $3, $2, $18
2674 cmplt $17, $31, $23
2675 cmplt $18, $31, $7
2676 addq $17, $17, $17
2677 addq $18, $18, $18
2678 addq $18, $23, $18
2679 addq $5, $7, $5
2680 addq $6, $17, $6
2681 addq $4, $18, $4
2682 cmpult $6, $17, $25
2683 cmpult $4, $18, $27
2684 addq $4, $25, $4
2685 addq $5, $27, $5
2686 stq $6, 40($16)
2687 bis $31, $31, $6
2688 mulq $3, $3, $8
2689 umulh $3, $3, $21
2690 addq $4, $8, $4
2691 addq $5, $21, $5
2692 cmpult $4, $8, $22
2693 cmpult $5, $21, $24
2694 addq $5, $22, $5
2695 addq $6, $24, $6
2696 stq $4, 48($16)
2697 stq $5, 56($16)
2698 ret $31,($26),1
2699 .end bn_sqr_comba4
2700 .text
2701 .align 3
2702 .globl bn_sqr_comba8
2703 .ent bn_sqr_comba8
2704bn_sqr_comba8:
2705bn_sqr_comba8..ng:
2706 .frame $30,0,$26,0
2707 .prologue 0
344 2708
2709 ldq $0, 0($17)
2710 ldq $1, 8($17)
2711 ldq $2, 16($17)
2712 ldq $3, 24($17)
2713 ldq $4, 32($17)
2714 ldq $5, 40($17)
2715 ldq $6, 48($17)
2716 ldq $7, 56($17)
2717 bis $31, $31, $23
2718 mulq $0, $0, $8
2719 umulh $0, $0, $22
2720 stq $8, 0($16)
2721 bis $31, $31, $8
2722 mulq $1, $0, $24
2723 umulh $1, $0, $25
2724 cmplt $24, $31, $27
2725 cmplt $25, $31, $28
2726 addq $24, $24, $24
2727 addq $25, $25, $25
2728 addq $25, $27, $25
2729 addq $8, $28, $8
2730 addq $22, $24, $22
2731 addq $23, $25, $23
2732 cmpult $22, $24, $21
2733 cmpult $23, $25, $20
2734 addq $23, $21, $23
2735 addq $8, $20, $8
2736 stq $22, 8($16)
2737 bis $31, $31, $22
2738 mulq $1, $1, $19
2739 umulh $1, $1, $18
2740 addq $23, $19, $23
2741 addq $8, $18, $8
2742 cmpult $23, $19, $17
2743 cmpult $8, $18, $27
2744 addq $8, $17, $8
2745 addq $22, $27, $22
2746 mulq $2, $0, $28
2747 umulh $2, $0, $24
2748 cmplt $28, $31, $25
2749 cmplt $24, $31, $21
2750 addq $28, $28, $28
2751 addq $24, $24, $24
2752 addq $24, $25, $24
2753 addq $22, $21, $22
2754 addq $23, $28, $23
2755 addq $8, $24, $8
2756 cmpult $23, $28, $20
2757 cmpult $8, $24, $19
2758 addq $8, $20, $8
2759 addq $22, $19, $22
2760 stq $23, 16($16)
2761 bis $31, $31, $23
2762 mulq $2, $1, $18
2763 umulh $2, $1, $17
2764 cmplt $18, $31, $27
2765 cmplt $17, $31, $25
2766 addq $18, $18, $18
2767 addq $17, $17, $17
2768 addq $17, $27, $17
2769 addq $23, $25, $23
2770 addq $8, $18, $8
2771 addq $22, $17, $22
2772 cmpult $8, $18, $21
2773 cmpult $22, $17, $28
2774 addq $22, $21, $22
2775 addq $23, $28, $23
2776 mulq $3, $0, $24
2777 umulh $3, $0, $20
2778 cmplt $24, $31, $19
2779 cmplt $20, $31, $27
2780 addq $24, $24, $24
2781 addq $20, $20, $20
2782 addq $20, $19, $20
2783 addq $23, $27, $23
2784 addq $8, $24, $8
2785 addq $22, $20, $22
2786 cmpult $8, $24, $25
2787 cmpult $22, $20, $18
2788 addq $22, $25, $22
2789 addq $23, $18, $23
2790 stq $8, 24($16)
2791 bis $31, $31, $8
2792 mulq $2, $2, $17
2793 umulh $2, $2, $21
2794 addq $22, $17, $22
2795 addq $23, $21, $23
2796 cmpult $22, $17, $28
2797 cmpult $23, $21, $19
2798 addq $23, $28, $23
2799 addq $8, $19, $8
2800 mulq $3, $1, $27
2801 umulh $3, $1, $24
2802 cmplt $27, $31, $20
2803 cmplt $24, $31, $25
2804 addq $27, $27, $27
2805 addq $24, $24, $24
2806 addq $24, $20, $24
2807 addq $8, $25, $8
2808 addq $22, $27, $22
2809 addq $23, $24, $23
2810 cmpult $22, $27, $18
2811 cmpult $23, $24, $17
2812 addq $23, $18, $23
2813 addq $8, $17, $8
2814 mulq $4, $0, $21
2815 umulh $4, $0, $28
2816 cmplt $21, $31, $19
2817 cmplt $28, $31, $20
2818 addq $21, $21, $21
2819 addq $28, $28, $28
2820 addq $28, $19, $28
2821 addq $8, $20, $8
2822 addq $22, $21, $22
2823 addq $23, $28, $23
2824 cmpult $22, $21, $25
2825 cmpult $23, $28, $27
2826 addq $23, $25, $23
2827 addq $8, $27, $8
2828 stq $22, 32($16)
2829 bis $31, $31, $22
2830 mulq $3, $2, $24
2831 umulh $3, $2, $18
2832 cmplt $24, $31, $17
2833 cmplt $18, $31, $19
2834 addq $24, $24, $24
2835 addq $18, $18, $18
2836 addq $18, $17, $18
2837 addq $22, $19, $22
2838 addq $23, $24, $23
2839 addq $8, $18, $8
2840 cmpult $23, $24, $20
2841 cmpult $8, $18, $21
2842 addq $8, $20, $8
2843 addq $22, $21, $22
2844 mulq $4, $1, $28
2845 umulh $4, $1, $25
2846 cmplt $28, $31, $27
2847 cmplt $25, $31, $17
2848 addq $28, $28, $28
2849 addq $25, $25, $25
2850 addq $25, $27, $25
2851 addq $22, $17, $22
2852 addq $23, $28, $23
2853 addq $8, $25, $8
2854 cmpult $23, $28, $19
2855 cmpult $8, $25, $24
2856 addq $8, $19, $8
2857 addq $22, $24, $22
2858 mulq $5, $0, $18
2859 umulh $5, $0, $20
2860 cmplt $18, $31, $21
2861 cmplt $20, $31, $27
2862 addq $18, $18, $18
2863 addq $20, $20, $20
2864 addq $20, $21, $20
2865 addq $22, $27, $22
2866 addq $23, $18, $23
2867 addq $8, $20, $8
2868 cmpult $23, $18, $17
2869 cmpult $8, $20, $28
2870 addq $8, $17, $8
2871 addq $22, $28, $22
2872 stq $23, 40($16)
2873 bis $31, $31, $23
2874 mulq $3, $3, $25
2875 umulh $3, $3, $19
2876 addq $8, $25, $8
2877 addq $22, $19, $22
2878 cmpult $8, $25, $24
2879 cmpult $22, $19, $21
2880 addq $22, $24, $22
2881 addq $23, $21, $23
2882 mulq $4, $2, $27
2883 umulh $4, $2, $18
2884 cmplt $27, $31, $20
2885 cmplt $18, $31, $17
2886 addq $27, $27, $27
2887 addq $18, $18, $18
2888 addq $18, $20, $18
2889 addq $23, $17, $23
2890 addq $8, $27, $8
2891 addq $22, $18, $22
2892 cmpult $8, $27, $28
2893 cmpult $22, $18, $25
2894 addq $22, $28, $22
2895 addq $23, $25, $23
2896 mulq $5, $1, $19
2897 umulh $5, $1, $24
2898 cmplt $19, $31, $21
2899 cmplt $24, $31, $20
2900 addq $19, $19, $19
2901 addq $24, $24, $24
2902 addq $24, $21, $24
2903 addq $23, $20, $23
2904 addq $8, $19, $8
2905 addq $22, $24, $22
2906 cmpult $8, $19, $17
2907 cmpult $22, $24, $27
2908 addq $22, $17, $22
2909 addq $23, $27, $23
2910 mulq $6, $0, $18
2911 umulh $6, $0, $28
2912 cmplt $18, $31, $25
2913 cmplt $28, $31, $21
2914 addq $18, $18, $18
2915 addq $28, $28, $28
2916 addq $28, $25, $28
2917 addq $23, $21, $23
2918 addq $8, $18, $8
2919 addq $22, $28, $22
2920 cmpult $8, $18, $20
2921 cmpult $22, $28, $19
2922 addq $22, $20, $22
2923 addq $23, $19, $23
2924 stq $8, 48($16)
2925 bis $31, $31, $8
2926 mulq $4, $3, $24
2927 umulh $4, $3, $17
2928 cmplt $24, $31, $27
2929 cmplt $17, $31, $25
2930 addq $24, $24, $24
2931 addq $17, $17, $17
2932 addq $17, $27, $17
2933 addq $8, $25, $8
2934 addq $22, $24, $22
2935 addq $23, $17, $23
2936 cmpult $22, $24, $21
2937 cmpult $23, $17, $18
2938 addq $23, $21, $23
2939 addq $8, $18, $8
2940 mulq $5, $2, $28
2941 umulh $5, $2, $20
2942 cmplt $28, $31, $19
2943 cmplt $20, $31, $27
2944 addq $28, $28, $28
2945 addq $20, $20, $20
2946 addq $20, $19, $20
2947 addq $8, $27, $8
2948 addq $22, $28, $22
2949 addq $23, $20, $23
2950 cmpult $22, $28, $25
2951 cmpult $23, $20, $24
2952 addq $23, $25, $23
2953 addq $8, $24, $8
2954 mulq $6, $1, $17
2955 umulh $6, $1, $21
2956 cmplt $17, $31, $18
2957 cmplt $21, $31, $19
2958 addq $17, $17, $17
2959 addq $21, $21, $21
2960 addq $21, $18, $21
2961 addq $8, $19, $8
2962 addq $22, $17, $22
2963 addq $23, $21, $23
2964 cmpult $22, $17, $27
2965 cmpult $23, $21, $28
2966 addq $23, $27, $23
2967 addq $8, $28, $8
2968 mulq $7, $0, $20
2969 umulh $7, $0, $25
2970 cmplt $20, $31, $24
2971 cmplt $25, $31, $18
2972 addq $20, $20, $20
2973 addq $25, $25, $25
2974 addq $25, $24, $25
2975 addq $8, $18, $8
2976 addq $22, $20, $22
2977 addq $23, $25, $23
2978 cmpult $22, $20, $19
2979 cmpult $23, $25, $17
2980 addq $23, $19, $23
2981 addq $8, $17, $8
2982 stq $22, 56($16)
2983 bis $31, $31, $22
2984 mulq $4, $4, $21
2985 umulh $4, $4, $27
2986 addq $23, $21, $23
2987 addq $8, $27, $8
2988 cmpult $23, $21, $28
2989 cmpult $8, $27, $24
2990 addq $8, $28, $8
2991 addq $22, $24, $22
2992 mulq $5, $3, $18
2993 umulh $5, $3, $20
2994 cmplt $18, $31, $25
2995 cmplt $20, $31, $19
2996 addq $18, $18, $18
2997 addq $20, $20, $20
2998 addq $20, $25, $20
2999 addq $22, $19, $22
3000 addq $23, $18, $23
3001 addq $8, $20, $8
3002 cmpult $23, $18, $17
3003 cmpult $8, $20, $21
3004 addq $8, $17, $8
3005 addq $22, $21, $22
3006 mulq $6, $2, $27
3007 umulh $6, $2, $28
3008 cmplt $27, $31, $24
3009 cmplt $28, $31, $25
3010 addq $27, $27, $27
3011 addq $28, $28, $28
3012 addq $28, $24, $28
3013 addq $22, $25, $22
3014 addq $23, $27, $23
3015 addq $8, $28, $8
3016 cmpult $23, $27, $19
3017 cmpult $8, $28, $18
3018 addq $8, $19, $8
3019 addq $22, $18, $22
3020 mulq $7, $1, $20
3021 umulh $7, $1, $17
3022 cmplt $20, $31, $21
3023 cmplt $17, $31, $24
3024 addq $20, $20, $20
3025 addq $17, $17, $17
3026 addq $17, $21, $17
3027 addq $22, $24, $22
3028 addq $23, $20, $23
3029 addq $8, $17, $8
3030 cmpult $23, $20, $25
3031 cmpult $8, $17, $27
3032 addq $8, $25, $8
3033 addq $22, $27, $22
3034 stq $23, 64($16)
3035 bis $31, $31, $23
3036 mulq $5, $4, $28
3037 umulh $5, $4, $19
3038 cmplt $28, $31, $18
3039 cmplt $19, $31, $21
3040 addq $28, $28, $28
3041 addq $19, $19, $19
3042 addq $19, $18, $19
3043 addq $23, $21, $23
3044 addq $8, $28, $8
3045 addq $22, $19, $22
3046 cmpult $8, $28, $24
3047 cmpult $22, $19, $20
3048 addq $22, $24, $22
3049 addq $23, $20, $23
3050 mulq $6, $3, $17
3051 umulh $6, $3, $25
3052 cmplt $17, $31, $27
3053 cmplt $25, $31, $18
3054 addq $17, $17, $17
3055 addq $25, $25, $25
3056 addq $25, $27, $25
3057 addq $23, $18, $23
3058 addq $8, $17, $8
3059 addq $22, $25, $22
3060 cmpult $8, $17, $21
3061 cmpult $22, $25, $28
3062 addq $22, $21, $22
3063 addq $23, $28, $23
3064 mulq $7, $2, $19
3065 umulh $7, $2, $24
3066 cmplt $19, $31, $20
3067 cmplt $24, $31, $27
3068 addq $19, $19, $19
3069 addq $24, $24, $24
3070 addq $24, $20, $24
3071 addq $23, $27, $23
3072 addq $8, $19, $8
3073 addq $22, $24, $22
3074 cmpult $8, $19, $18
3075 cmpult $22, $24, $17
3076 addq $22, $18, $22
3077 addq $23, $17, $23
3078 stq $8, 72($16)
3079 bis $31, $31, $8
3080 mulq $5, $5, $25
3081 umulh $5, $5, $21
3082 addq $22, $25, $22
3083 addq $23, $21, $23
3084 cmpult $22, $25, $28
3085 cmpult $23, $21, $20
3086 addq $23, $28, $23
3087 addq $8, $20, $8
3088 mulq $6, $4, $27
3089 umulh $6, $4, $19
3090 cmplt $27, $31, $24
3091 cmplt $19, $31, $18
3092 addq $27, $27, $27
3093 addq $19, $19, $19
3094 addq $19, $24, $19
3095 addq $8, $18, $8
3096 addq $22, $27, $22
3097 addq $23, $19, $23
3098 cmpult $22, $27, $17
3099 cmpult $23, $19, $25
3100 addq $23, $17, $23
3101 addq $8, $25, $8
3102 mulq $7, $3, $21
3103 umulh $7, $3, $28
3104 cmplt $21, $31, $20
3105 cmplt $28, $31, $24
3106 addq $21, $21, $21
3107 addq $28, $28, $28
3108 addq $28, $20, $28
3109 addq $8, $24, $8
3110 addq $22, $21, $22
3111 addq $23, $28, $23
3112 cmpult $22, $21, $18
3113 cmpult $23, $28, $27
3114 addq $23, $18, $23
3115 addq $8, $27, $8
3116 stq $22, 80($16)
3117 bis $31, $31, $22
3118 mulq $6, $5, $19
3119 umulh $6, $5, $17
3120 cmplt $19, $31, $25
3121 cmplt $17, $31, $20
3122 addq $19, $19, $19
3123 addq $17, $17, $17
3124 addq $17, $25, $17
3125 addq $22, $20, $22
3126 addq $23, $19, $23
3127 addq $8, $17, $8
3128 cmpult $23, $19, $24
3129 cmpult $8, $17, $21
3130 addq $8, $24, $8
3131 addq $22, $21, $22
3132 mulq $7, $4, $28
3133 umulh $7, $4, $18
3134 cmplt $28, $31, $27
3135 cmplt $18, $31, $25
3136 addq $28, $28, $28
3137 addq $18, $18, $18
3138 addq $18, $27, $18
3139 addq $22, $25, $22
3140 addq $23, $28, $23
3141 addq $8, $18, $8
3142 cmpult $23, $28, $20
3143 cmpult $8, $18, $19
3144 addq $8, $20, $8
3145 addq $22, $19, $22
3146 stq $23, 88($16)
3147 bis $31, $31, $23
3148 mulq $6, $6, $17
3149 umulh $6, $6, $24
3150 addq $8, $17, $8
3151 addq $22, $24, $22
3152 cmpult $8, $17, $21
3153 cmpult $22, $24, $27
3154 addq $22, $21, $22
3155 addq $23, $27, $23
3156 mulq $7, $5, $25
3157 umulh $7, $5, $28
3158 cmplt $25, $31, $18
3159 cmplt $28, $31, $20
3160 addq $25, $25, $25
3161 addq $28, $28, $28
3162 addq $28, $18, $28
3163 addq $23, $20, $23
3164 addq $8, $25, $8
3165 addq $22, $28, $22
3166 cmpult $8, $25, $19
3167 cmpult $22, $28, $17
3168 addq $22, $19, $22
3169 addq $23, $17, $23
3170 stq $8, 96($16)
3171 bis $31, $31, $8
3172 mulq $7, $6, $24
3173 umulh $7, $6, $21
3174 cmplt $24, $31, $27
3175 cmplt $21, $31, $18
3176 addq $24, $24, $24
3177 addq $21, $21, $21
3178 addq $21, $27, $21
3179 addq $8, $18, $8
3180 addq $22, $24, $22
3181 addq $23, $21, $23
3182 cmpult $22, $24, $20
3183 cmpult $23, $21, $25
3184 addq $23, $20, $23
3185 addq $8, $25, $8
3186 stq $22, 104($16)
3187 bis $31, $31, $22
3188 mulq $7, $7, $28
3189 umulh $7, $7, $19
3190 addq $23, $28, $23
3191 addq $8, $19, $8
3192 cmpult $23, $28, $17
3193 cmpult $8, $19, $27
3194 addq $8, $17, $8
3195 addq $22, $27, $22
3196 stq $23, 112($16)
3197 stq $8, 120($16)
3198 ret $31,($26),1
3199 .end bn_sqr_comba8
diff --git a/src/lib/libcrypto/bn/asm/mips3.s b/src/lib/libcrypto/bn/asm/mips3.s
index 191345d920..dca4105c7d 100644
--- a/src/lib/libcrypto/bn/asm/mips3.s
+++ b/src/lib/libcrypto/bn/asm/mips3.s
@@ -1,5 +1,5 @@
1.rdata 1.rdata
2.asciiz "mips3.s, Version 1.0" 2.asciiz "mips3.s, Version 1.1"
3.asciiz "MIPS III/IV ISA artwork by Andy Polyakov <appro@fy.chalmers.se>" 3.asciiz "MIPS III/IV ISA artwork by Andy Polyakov <appro@fy.chalmers.se>"
4 4
5/* 5/*
@@ -395,32 +395,32 @@ LEAF(bn_add_words)
395 395
396.L_bn_add_words_loop: 396.L_bn_add_words_loop:
397 ld ta0,0(a2) 397 ld ta0,0(a2)
398 subu a3,4
398 ld t1,8(a1) 399 ld t1,8(a1)
399 ld ta1,8(a2) 400 and AT,a3,MINUS4
400 ld t2,16(a1) 401 ld t2,16(a1)
401 ld ta2,16(a2) 402 PTR_ADD a2,32
402 ld t3,24(a1) 403 ld t3,24(a1)
403 ld ta3,24(a2) 404 PTR_ADD a0,32
405 ld ta1,-24(a2)
406 PTR_ADD a1,32
407 ld ta2,-16(a2)
408 ld ta3,-8(a2)
404 daddu ta0,t0 409 daddu ta0,t0
405 subu a3,4
406 sltu t8,ta0,t0 410 sltu t8,ta0,t0
407 daddu t0,ta0,v0 411 daddu t0,ta0,v0
408 PTR_ADD a0,32
409 sltu v0,t0,ta0 412 sltu v0,t0,ta0
410 sd t0,-32(a0) 413 sd t0,-32(a0)
411 daddu v0,t8 414 daddu v0,t8
412 415
413 daddu ta1,t1 416 daddu ta1,t1
414 PTR_ADD a1,32
415 sltu t9,ta1,t1 417 sltu t9,ta1,t1
416 daddu t1,ta1,v0 418 daddu t1,ta1,v0
417 PTR_ADD a2,32
418 sltu v0,t1,ta1 419 sltu v0,t1,ta1
419 sd t1,-24(a0) 420 sd t1,-24(a0)
420 daddu v0,t9 421 daddu v0,t9
421 422
422 daddu ta2,t2 423 daddu ta2,t2
423 and AT,a3,MINUS4
424 sltu t8,ta2,t2 424 sltu t8,ta2,t2
425 daddu t2,ta2,v0 425 daddu t2,ta2,v0
426 sltu v0,t2,ta2 426 sltu v0,t2,ta2
@@ -495,25 +495,26 @@ LEAF(bn_sub_words)
495 495
496.L_bn_sub_words_loop: 496.L_bn_sub_words_loop:
497 ld ta0,0(a2) 497 ld ta0,0(a2)
498 subu a3,4
498 ld t1,8(a1) 499 ld t1,8(a1)
499 ld ta1,8(a2) 500 and AT,a3,MINUS4
500 ld t2,16(a1) 501 ld t2,16(a1)
501 ld ta2,16(a2) 502 PTR_ADD a2,32
502 ld t3,24(a1) 503 ld t3,24(a1)
503 ld ta3,24(a2) 504 PTR_ADD a0,32
505 ld ta1,-24(a2)
506 PTR_ADD a1,32
507 ld ta2,-16(a2)
508 ld ta3,-8(a2)
504 sltu t8,t0,ta0 509 sltu t8,t0,ta0
505 dsubu t0,ta0 510 dsubu t0,ta0
506 subu a3,4
507 dsubu ta0,t0,v0 511 dsubu ta0,t0,v0
508 and AT,a3,MINUS4 512 sd ta0,-32(a0)
509 sd ta0,0(a0)
510 MOVNZ (t0,v0,t8) 513 MOVNZ (t0,v0,t8)
511 514
512 sltu t9,t1,ta1 515 sltu t9,t1,ta1
513 dsubu t1,ta1 516 dsubu t1,ta1
514 PTR_ADD a0,32
515 dsubu ta1,t1,v0 517 dsubu ta1,t1,v0
516 PTR_ADD a1,32
517 sd ta1,-24(a0) 518 sd ta1,-24(a0)
518 MOVNZ (t1,v0,t9) 519 MOVNZ (t1,v0,t9)
519 520
@@ -521,7 +522,6 @@ LEAF(bn_sub_words)
521 sltu t8,t2,ta2 522 sltu t8,t2,ta2
522 dsubu t2,ta2 523 dsubu t2,ta2
523 dsubu ta2,t2,v0 524 dsubu ta2,t2,v0
524 PTR_ADD a2,32
525 sd ta2,-16(a0) 525 sd ta2,-16(a0)
526 MOVNZ (t2,v0,t8) 526 MOVNZ (t2,v0,t8)
527 527
@@ -574,6 +574,51 @@ END(bn_sub_words)
574 574
575#undef MINUS4 575#undef MINUS4
576 576
577.align 5
578LEAF(bn_div_3_words)
579 .set reorder
580 move a3,a0 /* we know that bn_div_words doesn't
581 * touch a3, ta2, ta3 and preserves a2
582 * so that we can save two arguments
583 * and return address in registers
584 * instead of stack:-)
585 */
586 ld a0,(a3)
587 move ta2,a1
588 ld a1,-8(a3)
589 bne a0,a2,.L_bn_div_3_words_proceed
590 li v0,-1
591 jr ra
592.L_bn_div_3_words_proceed:
593 move ta3,ra
594 bal bn_div_words
595 move ra,ta3
596 dmultu ta2,v0
597 ld t2,-16(a3)
598 move ta0,zero
599 mfhi t1
600 mflo t0
601 sltu t8,t1,v1
602.L_bn_div_3_words_inner_loop:
603 bnez t8,.L_bn_div_3_words_inner_loop_done
604 sgeu AT,t2,t0
605 seq t9,t1,v1
606 and AT,t9
607 sltu t3,t0,ta2
608 daddu v1,a2
609 dsubu t1,t3
610 dsubu t0,ta2
611 sltu t8,t1,v1
612 sltu ta0,v1,a2
613 or t8,ta0
614 .set noreorder
615 beqzl AT,.L_bn_div_3_words_inner_loop
616 dsubu v0,1
617 .set reorder
618.L_bn_div_3_words_inner_loop_done:
619 jr ra
620END(bn_div_3_words)
621
577.align 5 622.align 5
578LEAF(bn_div_words) 623LEAF(bn_div_words)
579 .set noreorder 624 .set noreorder
@@ -633,16 +678,16 @@ LEAF(bn_div_words)
633 seq t8,HH,t1 678 seq t8,HH,t1
634 sltu AT,HH,t1 679 sltu AT,HH,t1
635 and t2,t8 680 and t2,t8
681 sltu v0,t0,a2
636 or AT,t2 682 or AT,t2
637 .set noreorder 683 .set noreorder
638 beqz AT,.L_bn_div_words_inner_loop1_done 684 beqz AT,.L_bn_div_words_inner_loop1_done
639 sltu t2,t0,a2 685 dsubu t1,v0
640 .set reorder
641 dsubu QT,1
642 dsubu t0,a2 686 dsubu t0,a2
643 dsubu t1,t2
644 b .L_bn_div_words_inner_loop1 687 b .L_bn_div_words_inner_loop1
645.L_bn_div_words_inner_loop1_done: 688 dsubu QT,1
689 .set reorder
690.L_bn_div_words_inner_loop1_done:
646 691
647 dsll a1,32 692 dsll a1,32
648 dsubu a0,t3,t0 693 dsubu a0,t3,t0
@@ -655,6 +700,7 @@ LEAF(bn_div_words)
655 ddivu zero,a0,DH 700 ddivu zero,a0,DH
656 mflo QT 701 mflo QT
657.L_bn_div_words_skip_div2: 702.L_bn_div_words_skip_div2:
703#undef DH
658 dmultu a2,QT 704 dmultu a2,QT
659 dsll t3,a0,32 705 dsll t3,a0,32
660 dsrl AT,a1,32 706 dsrl AT,a1,32
@@ -666,69 +712,26 @@ LEAF(bn_div_words)
666 seq t8,HH,t1 712 seq t8,HH,t1
667 sltu AT,HH,t1 713 sltu AT,HH,t1
668 and t2,t8 714 and t2,t8
715 sltu v1,t0,a2
669 or AT,t2 716 or AT,t2
670 .set noreorder 717 .set noreorder
671 beqz AT,.L_bn_div_words_inner_loop2_done 718 beqz AT,.L_bn_div_words_inner_loop2_done
672 sltu t2,t0,a2 719 dsubu t1,v1
673 .set reorder
674 dsubu QT,1
675 dsubu t0,a2 720 dsubu t0,a2
676 dsubu t1,t2
677 b .L_bn_div_words_inner_loop2 721 b .L_bn_div_words_inner_loop2
722 dsubu QT,1
723 .set reorder
678.L_bn_div_words_inner_loop2_done: 724.L_bn_div_words_inner_loop2_done:
725#undef HH
679 726
680 dsubu a0,t3,t0 727 dsubu a0,t3,t0
681 or v0,QT 728 or v0,QT
682 dsrl v1,a0,t9 /* v1 contains remainder if anybody wants it */ 729 dsrl v1,a0,t9 /* v1 contains remainder if anybody wants it */
683 dsrl a2,t9 /* restore a2 */ 730 dsrl a2,t9 /* restore a2 */
684 jr ra 731 jr ra
685#undef HH
686#undef DH
687#undef QT 732#undef QT
688END(bn_div_words) 733END(bn_div_words)
689 734
690.align 5
691LEAF(bn_div_3_words)
692 .set reorder
693 move a3,a0 /* we know that bn_div_words doesn't
694 * touch a3, ta2, ta3 and preserves a2
695 * so that we can save two arguments
696 * and return address in registers
697 * instead of stack:-)
698 */
699 ld a0,(a3)
700 move ta2,a2
701 move a2,a1
702 ld a1,-8(a3)
703 move ta3,ra
704 move v1,zero
705 li v0,-1
706 beq a0,a2,.L_bn_div_3_words_skip_div
707 jal bn_div_words
708 move ra,ta3
709.L_bn_div_3_words_skip_div:
710 dmultu ta2,v0
711 ld t2,-16(a3)
712 mflo t0
713 mfhi t1
714.L_bn_div_3_words_inner_loop:
715 sgeu AT,t2,t0
716 seq t9,t1,v1
717 sltu t8,t1,v1
718 and AT,t9
719 or AT,t8
720 bnez AT,.L_bn_div_3_words_inner_loop_done
721 daddu v1,a2
722 sltu t3,t0,ta2
723 sltu AT,v1,a2
724 dsubu v0,1
725 dsubu t0,ta2
726 dsubu t1,t3
727 beqz AT,.L_bn_div_3_words_inner_loop
728.L_bn_div_3_words_inner_loop_done:
729 jr ra
730END(bn_div_3_words)
731
732#define a_0 t0 735#define a_0 t0
733#define a_1 t1 736#define a_1 t1
734#define a_2 t2 737#define a_2 t2
@@ -846,6 +849,7 @@ LEAF(bn_mul_comba8)
846 sltu AT,c_1,t_1 849 sltu AT,c_1,t_1
847 daddu t_2,AT 850 daddu t_2,AT
848 daddu c_2,t_2 851 daddu c_2,t_2
852 sltu c_3,c_2,t_2
849 dmultu a_1,b_2 /* mul_add_c(a[1],b[2],c1,c2,c3); */ 853 dmultu a_1,b_2 /* mul_add_c(a[1],b[2],c1,c2,c3); */
850 mflo t_1 854 mflo t_1
851 mfhi t_2 855 mfhi t_2
@@ -853,7 +857,8 @@ LEAF(bn_mul_comba8)
853 sltu AT,c_1,t_1 857 sltu AT,c_1,t_1
854 daddu t_2,AT 858 daddu t_2,AT
855 daddu c_2,t_2 859 daddu c_2,t_2
856 sltu c_3,c_2,t_2 860 sltu AT,c_2,t_2
861 daddu c_3,AT
857 dmultu a_2,b_1 /* mul_add_c(a[2],b[1],c1,c2,c3); */ 862 dmultu a_2,b_1 /* mul_add_c(a[2],b[1],c1,c2,c3); */
858 mflo t_1 863 mflo t_1
859 mfhi t_2 864 mfhi t_2
@@ -881,6 +886,7 @@ LEAF(bn_mul_comba8)
881 sltu AT,c_2,t_1 886 sltu AT,c_2,t_1
882 daddu t_2,AT 887 daddu t_2,AT
883 daddu c_3,t_2 888 daddu c_3,t_2
889 sltu c_1,c_3,t_2
884 dmultu a_3,b_1 /* mul_add_c(a[3],b[1],c2,c3,c1); */ 890 dmultu a_3,b_1 /* mul_add_c(a[3],b[1],c2,c3,c1); */
885 mflo t_1 891 mflo t_1
886 mfhi t_2 892 mfhi t_2
@@ -888,7 +894,8 @@ LEAF(bn_mul_comba8)
888 sltu AT,c_2,t_1 894 sltu AT,c_2,t_1
889 daddu t_2,AT 895 daddu t_2,AT
890 daddu c_3,t_2 896 daddu c_3,t_2
891 sltu c_1,c_3,t_2 897 sltu AT,c_3,t_2
898 daddu c_1,AT
892 dmultu a_2,b_2 /* mul_add_c(a[2],b[2],c2,c3,c1); */ 899 dmultu a_2,b_2 /* mul_add_c(a[2],b[2],c2,c3,c1); */
893 mflo t_1 900 mflo t_1
894 mfhi t_2 901 mfhi t_2
@@ -925,6 +932,7 @@ LEAF(bn_mul_comba8)
925 sltu AT,c_3,t_1 932 sltu AT,c_3,t_1
926 daddu t_2,AT 933 daddu t_2,AT
927 daddu c_1,t_2 934 daddu c_1,t_2
935 sltu c_2,c_1,t_2
928 dmultu a_1,b_4 /* mul_add_c(a[1],b[4],c3,c1,c2); */ 936 dmultu a_1,b_4 /* mul_add_c(a[1],b[4],c3,c1,c2); */
929 mflo t_1 937 mflo t_1
930 mfhi t_2 938 mfhi t_2
@@ -932,7 +940,8 @@ LEAF(bn_mul_comba8)
932 sltu AT,c_3,t_1 940 sltu AT,c_3,t_1
933 daddu t_2,AT 941 daddu t_2,AT
934 daddu c_1,t_2 942 daddu c_1,t_2
935 sltu c_2,c_1,t_2 943 sltu AT,c_1,t_2
944 daddu c_2,AT
936 dmultu a_2,b_3 /* mul_add_c(a[2],b[3],c3,c1,c2); */ 945 dmultu a_2,b_3 /* mul_add_c(a[2],b[3],c3,c1,c2); */
937 mflo t_1 946 mflo t_1
938 mfhi t_2 947 mfhi t_2
@@ -978,6 +987,7 @@ LEAF(bn_mul_comba8)
978 sltu AT,c_1,t_1 987 sltu AT,c_1,t_1
979 daddu t_2,AT 988 daddu t_2,AT
980 daddu c_2,t_2 989 daddu c_2,t_2
990 sltu c_3,c_2,t_2
981 dmultu a_5,b_1 /* mul_add_c(a[5],b[1],c1,c2,c3); */ 991 dmultu a_5,b_1 /* mul_add_c(a[5],b[1],c1,c2,c3); */
982 mflo t_1 992 mflo t_1
983 mfhi t_2 993 mfhi t_2
@@ -985,7 +995,8 @@ LEAF(bn_mul_comba8)
985 sltu AT,c_1,t_1 995 sltu AT,c_1,t_1
986 daddu t_2,AT 996 daddu t_2,AT
987 daddu c_2,t_2 997 daddu c_2,t_2
988 sltu c_3,c_2,t_2 998 sltu AT,c_2,t_2
999 daddu c_3,AT
989 dmultu a_4,b_2 /* mul_add_c(a[4],b[2],c1,c2,c3); */ 1000 dmultu a_4,b_2 /* mul_add_c(a[4],b[2],c1,c2,c3); */
990 mflo t_1 1001 mflo t_1
991 mfhi t_2 1002 mfhi t_2
@@ -1040,6 +1051,7 @@ LEAF(bn_mul_comba8)
1040 sltu AT,c_2,t_1 1051 sltu AT,c_2,t_1
1041 daddu t_2,AT 1052 daddu t_2,AT
1042 daddu c_3,t_2 1053 daddu c_3,t_2
1054 sltu c_1,c_3,t_2
1043 dmultu a_1,b_6 /* mul_add_c(a[1],b[6],c2,c3,c1); */ 1055 dmultu a_1,b_6 /* mul_add_c(a[1],b[6],c2,c3,c1); */
1044 mflo t_1 1056 mflo t_1
1045 mfhi t_2 1057 mfhi t_2
@@ -1047,7 +1059,8 @@ LEAF(bn_mul_comba8)
1047 sltu AT,c_2,t_1 1059 sltu AT,c_2,t_1
1048 daddu t_2,AT 1060 daddu t_2,AT
1049 daddu c_3,t_2 1061 daddu c_3,t_2
1050 sltu c_1,c_3,t_2 1062 sltu AT,c_3,t_2
1063 daddu c_1,AT
1051 dmultu a_2,b_5 /* mul_add_c(a[2],b[5],c2,c3,c1); */ 1064 dmultu a_2,b_5 /* mul_add_c(a[2],b[5],c2,c3,c1); */
1052 mflo t_1 1065 mflo t_1
1053 mfhi t_2 1066 mfhi t_2
@@ -1111,6 +1124,7 @@ LEAF(bn_mul_comba8)
1111 sltu AT,c_3,t_1 1124 sltu AT,c_3,t_1
1112 daddu t_2,AT 1125 daddu t_2,AT
1113 daddu c_1,t_2 1126 daddu c_1,t_2
1127 sltu c_2,c_1,t_2
1114 dmultu a_6,b_2 /* mul_add_c(a[6],b[2],c3,c1,c2); */ 1128 dmultu a_6,b_2 /* mul_add_c(a[6],b[2],c3,c1,c2); */
1115 mflo t_1 1129 mflo t_1
1116 mfhi t_2 1130 mfhi t_2
@@ -1118,7 +1132,8 @@ LEAF(bn_mul_comba8)
1118 sltu AT,c_3,t_1 1132 sltu AT,c_3,t_1
1119 daddu t_2,AT 1133 daddu t_2,AT
1120 daddu c_1,t_2 1134 daddu c_1,t_2
1121 sltu c_2,c_1,t_2 1135 sltu AT,c_1,t_2
1136 daddu c_2,AT
1122 dmultu a_5,b_3 /* mul_add_c(a[5],b[3],c3,c1,c2); */ 1137 dmultu a_5,b_3 /* mul_add_c(a[5],b[3],c3,c1,c2); */
1123 mflo t_1 1138 mflo t_1
1124 mfhi t_2 1139 mfhi t_2
@@ -1173,6 +1188,7 @@ LEAF(bn_mul_comba8)
1173 sltu AT,c_1,t_1 1188 sltu AT,c_1,t_1
1174 daddu t_2,AT 1189 daddu t_2,AT
1175 daddu c_2,t_2 1190 daddu c_2,t_2
1191 sltu c_3,c_2,t_2
1176 dmultu a_3,b_6 /* mul_add_c(a[3],b[6],c1,c2,c3); */ 1192 dmultu a_3,b_6 /* mul_add_c(a[3],b[6],c1,c2,c3); */
1177 mflo t_1 1193 mflo t_1
1178 mfhi t_2 1194 mfhi t_2
@@ -1180,7 +1196,8 @@ LEAF(bn_mul_comba8)
1180 sltu AT,c_1,t_1 1196 sltu AT,c_1,t_1
1181 daddu t_2,AT 1197 daddu t_2,AT
1182 daddu c_2,t_2 1198 daddu c_2,t_2
1183 sltu c_3,c_2,t_2 1199 sltu AT,c_2,t_2
1200 daddu c_3,AT
1184 dmultu a_4,b_5 /* mul_add_c(a[4],b[5],c1,c2,c3); */ 1201 dmultu a_4,b_5 /* mul_add_c(a[4],b[5],c1,c2,c3); */
1185 mflo t_1 1202 mflo t_1
1186 mfhi t_2 1203 mfhi t_2
@@ -1226,6 +1243,7 @@ LEAF(bn_mul_comba8)
1226 sltu AT,c_2,t_1 1243 sltu AT,c_2,t_1
1227 daddu t_2,AT 1244 daddu t_2,AT
1228 daddu c_3,t_2 1245 daddu c_3,t_2
1246 sltu c_1,c_3,t_2
1229 dmultu a_6,b_4 /* mul_add_c(a[6],b[4],c2,c3,c1); */ 1247 dmultu a_6,b_4 /* mul_add_c(a[6],b[4],c2,c3,c1); */
1230 mflo t_1 1248 mflo t_1
1231 mfhi t_2 1249 mfhi t_2
@@ -1233,7 +1251,8 @@ LEAF(bn_mul_comba8)
1233 sltu AT,c_2,t_1 1251 sltu AT,c_2,t_1
1234 daddu t_2,AT 1252 daddu t_2,AT
1235 daddu c_3,t_2 1253 daddu c_3,t_2
1236 sltu c_1,c_3,t_2 1254 sltu AT,c_3,t_2
1255 daddu c_1,AT
1237 dmultu a_5,b_5 /* mul_add_c(a[5],b[5],c2,c3,c1); */ 1256 dmultu a_5,b_5 /* mul_add_c(a[5],b[5],c2,c3,c1); */
1238 mflo t_1 1257 mflo t_1
1239 mfhi t_2 1258 mfhi t_2
@@ -1270,6 +1289,7 @@ LEAF(bn_mul_comba8)
1270 sltu AT,c_3,t_1 1289 sltu AT,c_3,t_1
1271 daddu t_2,AT 1290 daddu t_2,AT
1272 daddu c_1,t_2 1291 daddu c_1,t_2
1292 sltu c_2,c_1,t_2
1273 dmultu a_5,b_6 /* mul_add_c(a[5],b[6],c3,c1,c2); */ 1293 dmultu a_5,b_6 /* mul_add_c(a[5],b[6],c3,c1,c2); */
1274 mflo t_1 1294 mflo t_1
1275 mfhi t_2 1295 mfhi t_2
@@ -1277,7 +1297,8 @@ LEAF(bn_mul_comba8)
1277 sltu AT,c_3,t_1 1297 sltu AT,c_3,t_1
1278 daddu t_2,AT 1298 daddu t_2,AT
1279 daddu c_1,t_2 1299 daddu c_1,t_2
1280 sltu c_2,c_1,t_2 1300 sltu AT,c_1,t_2
1301 daddu c_2,AT
1281 dmultu a_6,b_5 /* mul_add_c(a[6],b[5],c3,c1,c2); */ 1302 dmultu a_6,b_5 /* mul_add_c(a[6],b[5],c3,c1,c2); */
1282 mflo t_1 1303 mflo t_1
1283 mfhi t_2 1304 mfhi t_2
@@ -1305,6 +1326,7 @@ LEAF(bn_mul_comba8)
1305 sltu AT,c_1,t_1 1326 sltu AT,c_1,t_1
1306 daddu t_2,AT 1327 daddu t_2,AT
1307 daddu c_2,t_2 1328 daddu c_2,t_2
1329 sltu c_3,c_2,t_2
1308 dmultu a_6,b_6 /* mul_add_c(a[6],b[6],c1,c2,c3); */ 1330 dmultu a_6,b_6 /* mul_add_c(a[6],b[6],c1,c2,c3); */
1309 mflo t_1 1331 mflo t_1
1310 mfhi t_2 1332 mfhi t_2
@@ -1312,7 +1334,8 @@ LEAF(bn_mul_comba8)
1312 sltu AT,c_1,t_1 1334 sltu AT,c_1,t_1
1313 daddu t_2,AT 1335 daddu t_2,AT
1314 daddu c_2,t_2 1336 daddu c_2,t_2
1315 sltu c_3,c_2,t_2 1337 sltu AT,c_2,t_2
1338 daddu c_3,AT
1316 dmultu a_5,b_7 /* mul_add_c(a[5],b[7],c1,c2,c3); */ 1339 dmultu a_5,b_7 /* mul_add_c(a[5],b[7],c1,c2,c3); */
1317 mflo t_1 1340 mflo t_1
1318 mfhi t_2 1341 mfhi t_2
@@ -1331,6 +1354,7 @@ LEAF(bn_mul_comba8)
1331 sltu AT,c_2,t_1 1354 sltu AT,c_2,t_1
1332 daddu t_2,AT 1355 daddu t_2,AT
1333 daddu c_3,t_2 1356 daddu c_3,t_2
1357 sltu c_1,c_3,t_2
1334 dmultu a_7,b_6 /* mul_add_c(a[7],b[6],c2,c3,c1); */ 1358 dmultu a_7,b_6 /* mul_add_c(a[7],b[6],c2,c3,c1); */
1335 mflo t_1 1359 mflo t_1
1336 mfhi t_2 1360 mfhi t_2
@@ -1338,7 +1362,8 @@ LEAF(bn_mul_comba8)
1338 sltu AT,c_2,t_1 1362 sltu AT,c_2,t_1
1339 daddu t_2,AT 1363 daddu t_2,AT
1340 daddu c_3,t_2 1364 daddu c_3,t_2
1341 sltu c_1,c_3,t_2 1365 sltu AT,c_3,t_2
1366 daddu c_1,AT
1342 sd c_2,104(a0) /* r[13]=c2; */ 1367 sd c_2,104(a0) /* r[13]=c2; */
1343 1368
1344 dmultu a_7,b_7 /* mul_add_c(a[7],b[7],c3,c1,c2); */ 1369 dmultu a_7,b_7 /* mul_add_c(a[7],b[7],c3,c1,c2); */
@@ -1427,6 +1452,7 @@ LEAF(bn_mul_comba4)
1427 sltu AT,c_1,t_1 1452 sltu AT,c_1,t_1
1428 daddu t_2,AT 1453 daddu t_2,AT
1429 daddu c_2,t_2 1454 daddu c_2,t_2
1455 sltu c_3,c_2,t_2
1430 dmultu a_1,b_2 /* mul_add_c(a[1],b[2],c1,c2,c3); */ 1456 dmultu a_1,b_2 /* mul_add_c(a[1],b[2],c1,c2,c3); */
1431 mflo t_1 1457 mflo t_1
1432 mfhi t_2 1458 mfhi t_2
@@ -1434,7 +1460,8 @@ LEAF(bn_mul_comba4)
1434 sltu AT,c_1,t_1 1460 sltu AT,c_1,t_1
1435 daddu t_2,AT 1461 daddu t_2,AT
1436 daddu c_2,t_2 1462 daddu c_2,t_2
1437 sltu c_3,c_2,t_2 1463 sltu AT,c_2,t_2
1464 daddu c_3,AT
1438 dmultu a_2,b_1 /* mul_add_c(a[2],b[1],c1,c2,c3); */ 1465 dmultu a_2,b_1 /* mul_add_c(a[2],b[1],c1,c2,c3); */
1439 mflo t_1 1466 mflo t_1
1440 mfhi t_2 1467 mfhi t_2
@@ -1462,6 +1489,7 @@ LEAF(bn_mul_comba4)
1462 sltu AT,c_2,t_1 1489 sltu AT,c_2,t_1
1463 daddu t_2,AT 1490 daddu t_2,AT
1464 daddu c_3,t_2 1491 daddu c_3,t_2
1492 sltu c_1,c_3,t_2
1465 dmultu a_2,b_2 /* mul_add_c(a[2],b[2],c2,c3,c1); */ 1493 dmultu a_2,b_2 /* mul_add_c(a[2],b[2],c2,c3,c1); */
1466 mflo t_1 1494 mflo t_1
1467 mfhi t_2 1495 mfhi t_2
@@ -1469,7 +1497,8 @@ LEAF(bn_mul_comba4)
1469 sltu AT,c_2,t_1 1497 sltu AT,c_2,t_1
1470 daddu t_2,AT 1498 daddu t_2,AT
1471 daddu c_3,t_2 1499 daddu c_3,t_2
1472 sltu c_1,c_3,t_2 1500 sltu AT,c_3,t_2
1501 daddu c_1,AT
1473 dmultu a_1,b_3 /* mul_add_c(a[1],b[3],c2,c3,c1); */ 1502 dmultu a_1,b_3 /* mul_add_c(a[1],b[3],c2,c3,c1); */
1474 mflo t_1 1503 mflo t_1
1475 mfhi t_2 1504 mfhi t_2
@@ -1488,6 +1517,7 @@ LEAF(bn_mul_comba4)
1488 sltu AT,c_3,t_1 1517 sltu AT,c_3,t_1
1489 daddu t_2,AT 1518 daddu t_2,AT
1490 daddu c_1,t_2 1519 daddu c_1,t_2
1520 sltu c_2,c_1,t_2
1491 dmultu a_3,b_2 /* mul_add_c(a[3],b[2],c3,c1,c2); */ 1521 dmultu a_3,b_2 /* mul_add_c(a[3],b[2],c3,c1,c2); */
1492 mflo t_1 1522 mflo t_1
1493 mfhi t_2 1523 mfhi t_2
@@ -1495,7 +1525,8 @@ LEAF(bn_mul_comba4)
1495 sltu AT,c_3,t_1 1525 sltu AT,c_3,t_1
1496 daddu t_2,AT 1526 daddu t_2,AT
1497 daddu c_1,t_2 1527 daddu c_1,t_2
1498 sltu c_2,c_1,t_2 1528 sltu AT,c_1,t_2
1529 daddu c_2,AT
1499 sd c_3,40(a0) 1530 sd c_3,40(a0)
1500 1531
1501 dmultu a_3,b_3 /* mul_add_c(a[3],b[3],c1,c2,c3); */ 1532 dmultu a_3,b_3 /* mul_add_c(a[3],b[3],c1,c2,c3); */
@@ -1540,28 +1571,30 @@ LEAF(bn_sqr_comba8)
1540 dmultu a_0,a_1 /* mul_add_c2(a[0],b[1],c2,c3,c1); */ 1571 dmultu a_0,a_1 /* mul_add_c2(a[0],b[1],c2,c3,c1); */
1541 mflo t_1 1572 mflo t_1
1542 mfhi t_2 1573 mfhi t_2
1574 slt c_1,t_2,zero
1575 dsll t_2,1
1576 slt a2,t_1,zero
1577 daddu t_2,a2
1578 dsll t_1,1
1543 daddu c_2,t_1 1579 daddu c_2,t_1
1544 sltu AT,c_2,t_1 1580 sltu AT,c_2,t_1
1545 daddu c_3,t_2,AT 1581 daddu c_3,t_2,AT
1546 daddu c_2,t_1
1547 sltu AT,c_2,t_1
1548 daddu t_2,AT
1549 daddu c_3,t_2
1550 sltu c_1,c_3,t_2
1551 sd c_2,8(a0) 1582 sd c_2,8(a0)
1552 1583
1553 dmultu a_2,a_0 /* mul_add_c2(a[2],b[0],c3,c1,c2); */ 1584 dmultu a_2,a_0 /* mul_add_c2(a[2],b[0],c3,c1,c2); */
1554 mflo t_1 1585 mflo t_1
1555 mfhi t_2 1586 mfhi t_2
1556 daddu c_3,t_1 1587 slt c_2,t_2,zero
1557 sltu AT,c_3,t_1 1588 dsll t_2,1
1558 daddu a2,t_2,AT 1589 slt a2,t_1,zero
1559 daddu c_1,a2 1590 daddu t_2,a2
1591 dsll t_1,1
1560 daddu c_3,t_1 1592 daddu c_3,t_1
1561 sltu AT,c_3,t_1 1593 sltu AT,c_3,t_1
1562 daddu t_2,AT 1594 daddu t_2,AT
1563 daddu c_1,t_2 1595 daddu c_1,t_2
1564 sltu c_2,c_1,t_2 1596 sltu AT,c_1,t_2
1597 daddu c_2,AT
1565 dmultu a_1,a_1 /* mul_add_c(a[1],b[1],c3,c1,c2); */ 1598 dmultu a_1,a_1 /* mul_add_c(a[1],b[1],c3,c1,c2); */
1566 mflo t_1 1599 mflo t_1
1567 mfhi t_2 1600 mfhi t_2
@@ -1576,24 +1609,26 @@ LEAF(bn_sqr_comba8)
1576 dmultu a_0,a_3 /* mul_add_c2(a[0],b[3],c1,c2,c3); */ 1609 dmultu a_0,a_3 /* mul_add_c2(a[0],b[3],c1,c2,c3); */
1577 mflo t_1 1610 mflo t_1
1578 mfhi t_2 1611 mfhi t_2
1579 daddu c_1,t_1 1612 slt c_3,t_2,zero
1580 sltu AT,c_1,t_1 1613 dsll t_2,1
1581 daddu a2,t_2,AT 1614 slt a2,t_1,zero
1582 daddu c_2,a2 1615 daddu t_2,a2
1616 dsll t_1,1
1583 daddu c_1,t_1 1617 daddu c_1,t_1
1584 sltu AT,c_1,t_1 1618 sltu AT,c_1,t_1
1585 daddu t_2,AT 1619 daddu t_2,AT
1586 daddu c_2,t_2 1620 daddu c_2,t_2
1587 sltu c_3,c_2,t_2 1621 sltu AT,c_2,t_2
1622 daddu c_3,AT
1588 dmultu a_1,a_2 /* mul_add_c2(a[1],b[2],c1,c2,c3); */ 1623 dmultu a_1,a_2 /* mul_add_c2(a[1],b[2],c1,c2,c3); */
1589 mflo t_1 1624 mflo t_1
1590 mfhi t_2 1625 mfhi t_2
1591 daddu c_1,t_1 1626 slt AT,t_2,zero
1592 sltu AT,c_1,t_1
1593 daddu a2,t_2,AT
1594 daddu c_2,a2
1595 sltu AT,c_2,a2
1596 daddu c_3,AT 1627 daddu c_3,AT
1628 dsll t_2,1
1629 slt a2,t_1,zero
1630 daddu t_2,a2
1631 dsll t_1,1
1597 daddu c_1,t_1 1632 daddu c_1,t_1
1598 sltu AT,c_1,t_1 1633 sltu AT,c_1,t_1
1599 daddu t_2,AT 1634 daddu t_2,AT
@@ -1605,24 +1640,26 @@ LEAF(bn_sqr_comba8)
1605 dmultu a_4,a_0 /* mul_add_c2(a[4],b[0],c2,c3,c1); */ 1640 dmultu a_4,a_0 /* mul_add_c2(a[4],b[0],c2,c3,c1); */
1606 mflo t_1 1641 mflo t_1
1607 mfhi t_2 1642 mfhi t_2
1608 daddu c_2,t_1 1643 slt c_1,t_2,zero
1609 sltu AT,c_2,t_1 1644 dsll t_2,1
1610 daddu a2,t_2,AT 1645 slt a2,t_1,zero
1611 daddu c_3,a2 1646 daddu t_2,a2
1647 dsll t_1,1
1612 daddu c_2,t_1 1648 daddu c_2,t_1
1613 sltu AT,c_2,t_1 1649 sltu AT,c_2,t_1
1614 daddu t_2,AT 1650 daddu t_2,AT
1615 daddu c_3,t_2 1651 daddu c_3,t_2
1616 sltu c_1,c_3,t_2 1652 sltu AT,c_3,t_2
1653 daddu c_1,AT
1617 dmultu a_3,a_1 /* mul_add_c2(a[3],b[1],c2,c3,c1); */ 1654 dmultu a_3,a_1 /* mul_add_c2(a[3],b[1],c2,c3,c1); */
1618 mflo t_1 1655 mflo t_1
1619 mfhi t_2 1656 mfhi t_2
1620 daddu c_2,t_1 1657 slt AT,t_2,zero
1621 sltu AT,c_2,t_1
1622 daddu a2,t_2,AT
1623 daddu c_3,a2
1624 sltu AT,c_3,a2
1625 daddu c_1,AT 1658 daddu c_1,AT
1659 dsll t_2,1
1660 slt a2,t_1,zero
1661 daddu t_2,a2
1662 dsll t_1,1
1626 daddu c_2,t_1 1663 daddu c_2,t_1
1627 sltu AT,c_2,t_1 1664 sltu AT,c_2,t_1
1628 daddu t_2,AT 1665 daddu t_2,AT
@@ -1643,24 +1680,26 @@ LEAF(bn_sqr_comba8)
1643 dmultu a_0,a_5 /* mul_add_c2(a[0],b[5],c3,c1,c2); */ 1680 dmultu a_0,a_5 /* mul_add_c2(a[0],b[5],c3,c1,c2); */
1644 mflo t_1 1681 mflo t_1
1645 mfhi t_2 1682 mfhi t_2
1646 daddu c_3,t_1 1683 slt c_2,t_2,zero
1647 sltu AT,c_3,t_1 1684 dsll t_2,1
1648 daddu a2,t_2,AT 1685 slt a2,t_1,zero
1649 daddu c_1,a2 1686 daddu t_2,a2
1687 dsll t_1,1
1650 daddu c_3,t_1 1688 daddu c_3,t_1
1651 sltu AT,c_3,t_1 1689 sltu AT,c_3,t_1
1652 daddu t_2,AT 1690 daddu t_2,AT
1653 daddu c_1,t_2 1691 daddu c_1,t_2
1654 sltu c_2,c_1,t_2 1692 sltu AT,c_1,t_2
1693 daddu c_2,AT
1655 dmultu a_1,a_4 /* mul_add_c2(a[1],b[4],c3,c1,c2); */ 1694 dmultu a_1,a_4 /* mul_add_c2(a[1],b[4],c3,c1,c2); */
1656 mflo t_1 1695 mflo t_1
1657 mfhi t_2 1696 mfhi t_2
1658 daddu c_3,t_1 1697 slt AT,t_2,zero
1659 sltu AT,c_3,t_1
1660 daddu a2,t_2,AT
1661 daddu c_1,a2
1662 sltu AT,c_1,a2
1663 daddu c_2,AT 1698 daddu c_2,AT
1699 dsll t_2,1
1700 slt a2,t_1,zero
1701 daddu t_2,a2
1702 dsll t_1,1
1664 daddu c_3,t_1 1703 daddu c_3,t_1
1665 sltu AT,c_3,t_1 1704 sltu AT,c_3,t_1
1666 daddu t_2,AT 1705 daddu t_2,AT
@@ -1670,12 +1709,12 @@ LEAF(bn_sqr_comba8)
1670 dmultu a_2,a_3 /* mul_add_c2(a[2],b[3],c3,c1,c2); */ 1709 dmultu a_2,a_3 /* mul_add_c2(a[2],b[3],c3,c1,c2); */
1671 mflo t_1 1710 mflo t_1
1672 mfhi t_2 1711 mfhi t_2
1673 daddu c_3,t_1 1712 slt AT,t_2,zero
1674 sltu AT,c_3,t_1
1675 daddu a2,t_2,AT
1676 daddu c_1,a2
1677 sltu AT,c_1,a2
1678 daddu c_2,AT 1713 daddu c_2,AT
1714 dsll t_2,1
1715 slt a2,t_1,zero
1716 daddu t_2,a2
1717 dsll t_1,1
1679 daddu c_3,t_1 1718 daddu c_3,t_1
1680 sltu AT,c_3,t_1 1719 sltu AT,c_3,t_1
1681 daddu t_2,AT 1720 daddu t_2,AT
@@ -1687,24 +1726,26 @@ LEAF(bn_sqr_comba8)
1687 dmultu a_6,a_0 /* mul_add_c2(a[6],b[0],c1,c2,c3); */ 1726 dmultu a_6,a_0 /* mul_add_c2(a[6],b[0],c1,c2,c3); */
1688 mflo t_1 1727 mflo t_1
1689 mfhi t_2 1728 mfhi t_2
1690 daddu c_1,t_1 1729 slt c_3,t_2,zero
1691 sltu AT,c_1,t_1 1730 dsll t_2,1
1692 daddu a2,t_2,AT 1731 slt a2,t_1,zero
1693 daddu c_2,a2 1732 daddu t_2,a2
1733 dsll t_1,1
1694 daddu c_1,t_1 1734 daddu c_1,t_1
1695 sltu AT,c_1,t_1 1735 sltu AT,c_1,t_1
1696 daddu t_2,AT 1736 daddu t_2,AT
1697 daddu c_2,t_2 1737 daddu c_2,t_2
1698 sltu c_3,c_2,t_2 1738 sltu AT,c_2,t_2
1739 daddu c_3,AT
1699 dmultu a_5,a_1 /* mul_add_c2(a[5],b[1],c1,c2,c3); */ 1740 dmultu a_5,a_1 /* mul_add_c2(a[5],b[1],c1,c2,c3); */
1700 mflo t_1 1741 mflo t_1
1701 mfhi t_2 1742 mfhi t_2
1702 daddu c_1,t_1 1743 slt AT,t_2,zero
1703 sltu AT,c_1,t_1
1704 daddu a2,t_2,AT
1705 daddu c_2,a2
1706 sltu AT,c_2,a2
1707 daddu c_3,AT 1744 daddu c_3,AT
1745 dsll t_2,1
1746 slt a2,t_1,zero
1747 daddu t_2,a2
1748 dsll t_1,1
1708 daddu c_1,t_1 1749 daddu c_1,t_1
1709 sltu AT,c_1,t_1 1750 sltu AT,c_1,t_1
1710 daddu t_2,AT 1751 daddu t_2,AT
@@ -1714,12 +1755,12 @@ LEAF(bn_sqr_comba8)
1714 dmultu a_4,a_2 /* mul_add_c2(a[4],b[2],c1,c2,c3); */ 1755 dmultu a_4,a_2 /* mul_add_c2(a[4],b[2],c1,c2,c3); */
1715 mflo t_1 1756 mflo t_1
1716 mfhi t_2 1757 mfhi t_2
1717 daddu c_1,t_1 1758 slt AT,t_2,zero
1718 sltu AT,c_1,t_1
1719 daddu a2,t_2,AT
1720 daddu c_2,a2
1721 sltu AT,c_2,a2
1722 daddu c_3,AT 1759 daddu c_3,AT
1760 dsll t_2,1
1761 slt a2,t_1,zero
1762 daddu t_2,a2
1763 dsll t_1,1
1723 daddu c_1,t_1 1764 daddu c_1,t_1
1724 sltu AT,c_1,t_1 1765 sltu AT,c_1,t_1
1725 daddu t_2,AT 1766 daddu t_2,AT
@@ -1740,24 +1781,26 @@ LEAF(bn_sqr_comba8)
1740 dmultu a_0,a_7 /* mul_add_c2(a[0],b[7],c2,c3,c1); */ 1781 dmultu a_0,a_7 /* mul_add_c2(a[0],b[7],c2,c3,c1); */
1741 mflo t_1 1782 mflo t_1
1742 mfhi t_2 1783 mfhi t_2
1743 daddu c_2,t_1 1784 slt c_1,t_2,zero
1744 sltu AT,c_2,t_1 1785 dsll t_2,1
1745 daddu a2,t_2,AT 1786 slt a2,t_1,zero
1746 daddu c_3,a2 1787 daddu t_2,a2
1788 dsll t_1,1
1747 daddu c_2,t_1 1789 daddu c_2,t_1
1748 sltu AT,c_2,t_1 1790 sltu AT,c_2,t_1
1749 daddu t_2,AT 1791 daddu t_2,AT
1750 daddu c_3,t_2 1792 daddu c_3,t_2
1751 sltu c_1,c_3,t_2 1793 sltu AT,c_3,t_2
1794 daddu c_1,AT
1752 dmultu a_1,a_6 /* mul_add_c2(a[1],b[6],c2,c3,c1); */ 1795 dmultu a_1,a_6 /* mul_add_c2(a[1],b[6],c2,c3,c1); */
1753 mflo t_1 1796 mflo t_1
1754 mfhi t_2 1797 mfhi t_2
1755 daddu c_2,t_1 1798 slt AT,t_2,zero
1756 sltu AT,c_2,t_1
1757 daddu a2,t_2,AT
1758 daddu c_3,a2
1759 sltu AT,c_3,a2
1760 daddu c_1,AT 1799 daddu c_1,AT
1800 dsll t_2,1
1801 slt a2,t_1,zero
1802 daddu t_2,a2
1803 dsll t_1,1
1761 daddu c_2,t_1 1804 daddu c_2,t_1
1762 sltu AT,c_2,t_1 1805 sltu AT,c_2,t_1
1763 daddu t_2,AT 1806 daddu t_2,AT
@@ -1767,12 +1810,12 @@ LEAF(bn_sqr_comba8)
1767 dmultu a_2,a_5 /* mul_add_c2(a[2],b[5],c2,c3,c1); */ 1810 dmultu a_2,a_5 /* mul_add_c2(a[2],b[5],c2,c3,c1); */
1768 mflo t_1 1811 mflo t_1
1769 mfhi t_2 1812 mfhi t_2
1770 daddu c_2,t_1 1813 slt AT,t_2,zero
1771 sltu AT,c_2,t_1
1772 daddu a2,t_2,AT
1773 daddu c_3,a2
1774 sltu AT,c_3,a2
1775 daddu c_1,AT 1814 daddu c_1,AT
1815 dsll t_2,1
1816 slt a2,t_1,zero
1817 daddu t_2,a2
1818 dsll t_1,1
1776 daddu c_2,t_1 1819 daddu c_2,t_1
1777 sltu AT,c_2,t_1 1820 sltu AT,c_2,t_1
1778 daddu t_2,AT 1821 daddu t_2,AT
@@ -1782,12 +1825,12 @@ LEAF(bn_sqr_comba8)
1782 dmultu a_3,a_4 /* mul_add_c2(a[3],b[4],c2,c3,c1); */ 1825 dmultu a_3,a_4 /* mul_add_c2(a[3],b[4],c2,c3,c1); */
1783 mflo t_1 1826 mflo t_1
1784 mfhi t_2 1827 mfhi t_2
1785 daddu c_2,t_1 1828 slt AT,t_2,zero
1786 sltu AT,c_2,t_1
1787 daddu a2,t_2,AT
1788 daddu c_3,a2
1789 sltu AT,c_3,a2
1790 daddu c_1,AT 1829 daddu c_1,AT
1830 dsll t_2,1
1831 slt a2,t_1,zero
1832 daddu t_2,a2
1833 dsll t_1,1
1791 daddu c_2,t_1 1834 daddu c_2,t_1
1792 sltu AT,c_2,t_1 1835 sltu AT,c_2,t_1
1793 daddu t_2,AT 1836 daddu t_2,AT
@@ -1799,24 +1842,26 @@ LEAF(bn_sqr_comba8)
1799 dmultu a_7,a_1 /* mul_add_c2(a[7],b[1],c3,c1,c2); */ 1842 dmultu a_7,a_1 /* mul_add_c2(a[7],b[1],c3,c1,c2); */
1800 mflo t_1 1843 mflo t_1
1801 mfhi t_2 1844 mfhi t_2
1802 daddu c_3,t_1 1845 slt c_2,t_2,zero
1803 sltu AT,c_3,t_1 1846 dsll t_2,1
1804 daddu a2,t_2,AT 1847 slt a2,t_1,zero
1805 daddu c_1,a2 1848 daddu t_2,a2
1849 dsll t_1,1
1806 daddu c_3,t_1 1850 daddu c_3,t_1
1807 sltu AT,c_3,t_1 1851 sltu AT,c_3,t_1
1808 daddu t_2,AT 1852 daddu t_2,AT
1809 daddu c_1,t_2 1853 daddu c_1,t_2
1810 sltu c_2,c_1,t_2 1854 sltu AT,c_1,t_2
1855 daddu c_2,AT
1811 dmultu a_6,a_2 /* mul_add_c2(a[6],b[2],c3,c1,c2); */ 1856 dmultu a_6,a_2 /* mul_add_c2(a[6],b[2],c3,c1,c2); */
1812 mflo t_1 1857 mflo t_1
1813 mfhi t_2 1858 mfhi t_2
1814 daddu c_3,t_1 1859 slt AT,t_2,zero
1815 sltu AT,c_3,t_1
1816 daddu a2,t_2,AT
1817 daddu c_1,a2
1818 sltu AT,c_1,a2
1819 daddu c_2,AT 1860 daddu c_2,AT
1861 dsll t_2,1
1862 slt a2,t_1,zero
1863 daddu t_2,a2
1864 dsll t_1,1
1820 daddu c_3,t_1 1865 daddu c_3,t_1
1821 sltu AT,c_3,t_1 1866 sltu AT,c_3,t_1
1822 daddu t_2,AT 1867 daddu t_2,AT
@@ -1826,12 +1871,12 @@ LEAF(bn_sqr_comba8)
1826 dmultu a_5,a_3 /* mul_add_c2(a[5],b[3],c3,c1,c2); */ 1871 dmultu a_5,a_3 /* mul_add_c2(a[5],b[3],c3,c1,c2); */
1827 mflo t_1 1872 mflo t_1
1828 mfhi t_2 1873 mfhi t_2
1829 daddu c_3,t_1 1874 slt AT,t_2,zero
1830 sltu AT,c_3,t_1
1831 daddu a2,t_2,AT
1832 daddu c_1,a2
1833 sltu AT,c_1,a2
1834 daddu c_2,AT 1875 daddu c_2,AT
1876 dsll t_2,1
1877 slt a2,t_1,zero
1878 daddu t_2,a2
1879 dsll t_1,1
1835 daddu c_3,t_1 1880 daddu c_3,t_1
1836 sltu AT,c_3,t_1 1881 sltu AT,c_3,t_1
1837 daddu t_2,AT 1882 daddu t_2,AT
@@ -1852,24 +1897,26 @@ LEAF(bn_sqr_comba8)
1852 dmultu a_2,a_7 /* mul_add_c2(a[2],b[7],c1,c2,c3); */ 1897 dmultu a_2,a_7 /* mul_add_c2(a[2],b[7],c1,c2,c3); */
1853 mflo t_1 1898 mflo t_1
1854 mfhi t_2 1899 mfhi t_2
1855 daddu c_1,t_1 1900 slt c_3,t_2,zero
1856 sltu AT,c_1,t_1 1901 dsll t_2,1
1857 daddu a2,t_2,AT 1902 slt a2,t_1,zero
1858 daddu c_2,a2 1903 daddu t_2,a2
1904 dsll t_1,1
1859 daddu c_1,t_1 1905 daddu c_1,t_1
1860 sltu AT,c_1,t_1 1906 sltu AT,c_1,t_1
1861 daddu t_2,AT 1907 daddu t_2,AT
1862 daddu c_2,t_2 1908 daddu c_2,t_2
1863 sltu c_3,c_2,t_2 1909 sltu AT,c_2,t_2
1910 daddu c_3,AT
1864 dmultu a_3,a_6 /* mul_add_c2(a[3],b[6],c1,c2,c3); */ 1911 dmultu a_3,a_6 /* mul_add_c2(a[3],b[6],c1,c2,c3); */
1865 mflo t_1 1912 mflo t_1
1866 mfhi t_2 1913 mfhi t_2
1867 daddu c_1,t_1 1914 slt AT,t_2,zero
1868 sltu AT,c_1,t_1
1869 daddu a2,t_2,AT
1870 daddu c_2,a2
1871 sltu AT,c_2,a2
1872 daddu c_3,AT 1915 daddu c_3,AT
1916 dsll t_2,1
1917 slt a2,t_1,zero
1918 daddu t_2,a2
1919 dsll t_1,1
1873 daddu c_1,t_1 1920 daddu c_1,t_1
1874 sltu AT,c_1,t_1 1921 sltu AT,c_1,t_1
1875 daddu t_2,AT 1922 daddu t_2,AT
@@ -1879,12 +1926,12 @@ LEAF(bn_sqr_comba8)
1879 dmultu a_4,a_5 /* mul_add_c2(a[4],b[5],c1,c2,c3); */ 1926 dmultu a_4,a_5 /* mul_add_c2(a[4],b[5],c1,c2,c3); */
1880 mflo t_1 1927 mflo t_1
1881 mfhi t_2 1928 mfhi t_2
1882 daddu c_1,t_1 1929 slt AT,t_2,zero
1883 sltu AT,c_1,t_1
1884 daddu a2,t_2,AT
1885 daddu c_2,a2
1886 sltu AT,c_2,a2
1887 daddu c_3,AT 1930 daddu c_3,AT
1931 dsll t_2,1
1932 slt a2,t_1,zero
1933 daddu t_2,a2
1934 dsll t_1,1
1888 daddu c_1,t_1 1935 daddu c_1,t_1
1889 sltu AT,c_1,t_1 1936 sltu AT,c_1,t_1
1890 daddu t_2,AT 1937 daddu t_2,AT
@@ -1896,24 +1943,26 @@ LEAF(bn_sqr_comba8)
1896 dmultu a_7,a_3 /* mul_add_c2(a[7],b[3],c2,c3,c1); */ 1943 dmultu a_7,a_3 /* mul_add_c2(a[7],b[3],c2,c3,c1); */
1897 mflo t_1 1944 mflo t_1
1898 mfhi t_2 1945 mfhi t_2
1899 daddu c_2,t_1 1946 slt c_1,t_2,zero
1900 sltu AT,c_2,t_1 1947 dsll t_2,1
1901 daddu a2,t_2,AT 1948 slt a2,t_1,zero
1902 daddu c_3,a2 1949 daddu t_2,a2
1950 dsll t_1,1
1903 daddu c_2,t_1 1951 daddu c_2,t_1
1904 sltu AT,c_2,t_1 1952 sltu AT,c_2,t_1
1905 daddu t_2,AT 1953 daddu t_2,AT
1906 daddu c_3,t_2 1954 daddu c_3,t_2
1907 sltu c_1,c_3,t_2 1955 sltu AT,c_3,t_2
1956 daddu c_1,AT
1908 dmultu a_6,a_4 /* mul_add_c2(a[6],b[4],c2,c3,c1); */ 1957 dmultu a_6,a_4 /* mul_add_c2(a[6],b[4],c2,c3,c1); */
1909 mflo t_1 1958 mflo t_1
1910 mfhi t_2 1959 mfhi t_2
1911 daddu c_2,t_1 1960 slt AT,t_2,zero
1912 sltu AT,c_2,t_1
1913 daddu a2,t_2,AT
1914 daddu c_3,a2
1915 sltu AT,c_3,a2
1916 daddu c_1,AT 1961 daddu c_1,AT
1962 dsll t_2,1
1963 slt a2,t_1,zero
1964 daddu t_2,a2
1965 dsll t_1,1
1917 daddu c_2,t_1 1966 daddu c_2,t_1
1918 sltu AT,c_2,t_1 1967 sltu AT,c_2,t_1
1919 daddu t_2,AT 1968 daddu t_2,AT
@@ -1934,24 +1983,26 @@ LEAF(bn_sqr_comba8)
1934 dmultu a_4,a_7 /* mul_add_c2(a[4],b[7],c3,c1,c2); */ 1983 dmultu a_4,a_7 /* mul_add_c2(a[4],b[7],c3,c1,c2); */
1935 mflo t_1 1984 mflo t_1
1936 mfhi t_2 1985 mfhi t_2
1937 daddu c_3,t_1 1986 slt c_2,t_2,zero
1938 sltu AT,c_3,t_1 1987 dsll t_2,1
1939 daddu a2,t_2,AT 1988 slt a2,t_1,zero
1940 daddu c_1,a2 1989 daddu t_2,a2
1990 dsll t_1,1
1941 daddu c_3,t_1 1991 daddu c_3,t_1
1942 sltu AT,c_3,t_1 1992 sltu AT,c_3,t_1
1943 daddu t_2,AT 1993 daddu t_2,AT
1944 daddu c_1,t_2 1994 daddu c_1,t_2
1945 sltu c_2,c_1,t_2 1995 sltu AT,c_1,t_2
1996 daddu c_2,AT
1946 dmultu a_5,a_6 /* mul_add_c2(a[5],b[6],c3,c1,c2); */ 1997 dmultu a_5,a_6 /* mul_add_c2(a[5],b[6],c3,c1,c2); */
1947 mflo t_1 1998 mflo t_1
1948 mfhi t_2 1999 mfhi t_2
1949 daddu c_3,t_1 2000 slt AT,t_2,zero
1950 sltu AT,c_3,t_1
1951 daddu a2,t_2,AT
1952 daddu c_1,a2
1953 sltu AT,c_1,a2
1954 daddu c_2,AT 2001 daddu c_2,AT
2002 dsll t_2,1
2003 slt a2,t_1,zero
2004 daddu t_2,a2
2005 dsll t_1,1
1955 daddu c_3,t_1 2006 daddu c_3,t_1
1956 sltu AT,c_3,t_1 2007 sltu AT,c_3,t_1
1957 daddu t_2,AT 2008 daddu t_2,AT
@@ -1963,15 +2014,17 @@ LEAF(bn_sqr_comba8)
1963 dmultu a_7,a_5 /* mul_add_c2(a[7],b[5],c1,c2,c3); */ 2014 dmultu a_7,a_5 /* mul_add_c2(a[7],b[5],c1,c2,c3); */
1964 mflo t_1 2015 mflo t_1
1965 mfhi t_2 2016 mfhi t_2
1966 daddu c_1,t_1 2017 slt c_3,t_2,zero
1967 sltu AT,c_1,t_1 2018 dsll t_2,1
1968 daddu a2,t_2,AT 2019 slt a2,t_1,zero
1969 daddu c_2,a2 2020 daddu t_2,a2
2021 dsll t_1,1
1970 daddu c_1,t_1 2022 daddu c_1,t_1
1971 sltu AT,c_1,t_1 2023 sltu AT,c_1,t_1
1972 daddu t_2,AT 2024 daddu t_2,AT
1973 daddu c_2,t_2 2025 daddu c_2,t_2
1974 sltu c_3,c_2,t_2 2026 sltu AT,c_2,t_2
2027 daddu c_3,AT
1975 dmultu a_6,a_6 /* mul_add_c(a[6],b[6],c1,c2,c3); */ 2028 dmultu a_6,a_6 /* mul_add_c(a[6],b[6],c1,c2,c3); */
1976 mflo t_1 2029 mflo t_1
1977 mfhi t_2 2030 mfhi t_2
@@ -1986,15 +2039,17 @@ LEAF(bn_sqr_comba8)
1986 dmultu a_6,a_7 /* mul_add_c2(a[6],b[7],c2,c3,c1); */ 2039 dmultu a_6,a_7 /* mul_add_c2(a[6],b[7],c2,c3,c1); */
1987 mflo t_1 2040 mflo t_1
1988 mfhi t_2 2041 mfhi t_2
1989 daddu c_2,t_1 2042 slt c_1,t_2,zero
1990 sltu AT,c_2,t_1 2043 dsll t_2,1
1991 daddu a2,t_2,AT 2044 slt a2,t_1,zero
1992 daddu c_3,a2 2045 daddu t_2,a2
2046 dsll t_1,1
1993 daddu c_2,t_1 2047 daddu c_2,t_1
1994 sltu AT,c_2,t_1 2048 sltu AT,c_2,t_1
1995 daddu t_2,AT 2049 daddu t_2,AT
1996 daddu c_3,t_2 2050 daddu c_3,t_2
1997 sltu c_1,c_3,t_2 2051 sltu AT,c_3,t_2
2052 daddu c_1,AT
1998 sd c_2,104(a0) 2053 sd c_2,104(a0)
1999 2054
2000 dmultu a_7,a_7 /* mul_add_c(a[7],b[7],c3,c1,c2); */ 2055 dmultu a_7,a_7 /* mul_add_c(a[7],b[7],c3,c1,c2); */
@@ -2025,28 +2080,30 @@ LEAF(bn_sqr_comba4)
2025 dmultu a_0,a_1 /* mul_add_c2(a[0],b[1],c2,c3,c1); */ 2080 dmultu a_0,a_1 /* mul_add_c2(a[0],b[1],c2,c3,c1); */
2026 mflo t_1 2081 mflo t_1
2027 mfhi t_2 2082 mfhi t_2
2083 slt c_1,t_2,zero
2084 dsll t_2,1
2085 slt a2,t_1,zero
2086 daddu t_2,a2
2087 dsll t_1,1
2028 daddu c_2,t_1 2088 daddu c_2,t_1
2029 sltu AT,c_2,t_1 2089 sltu AT,c_2,t_1
2030 daddu c_3,t_2,AT 2090 daddu c_3,t_2,AT
2031 daddu c_2,t_1
2032 sltu AT,c_2,t_1
2033 daddu t_2,AT
2034 daddu c_3,t_2
2035 sltu c_1,c_3,t_2
2036 sd c_2,8(a0) 2091 sd c_2,8(a0)
2037 2092
2038 dmultu a_2,a_0 /* mul_add_c2(a[2],b[0],c3,c1,c2); */ 2093 dmultu a_2,a_0 /* mul_add_c2(a[2],b[0],c3,c1,c2); */
2039 mflo t_1 2094 mflo t_1
2040 mfhi t_2 2095 mfhi t_2
2041 daddu c_3,t_1 2096 slt c_2,t_2,zero
2042 sltu AT,c_3,t_1 2097 dsll t_2,1
2043 daddu a2,t_2,AT 2098 slt a2,t_1,zero
2044 daddu c_1,a2 2099 daddu t_2,a2
2100 dsll t_1,1
2045 daddu c_3,t_1 2101 daddu c_3,t_1
2046 sltu AT,c_3,t_1 2102 sltu AT,c_3,t_1
2047 daddu t_2,AT 2103 daddu t_2,AT
2048 daddu c_1,t_2 2104 daddu c_1,t_2
2049 sltu c_2,c_1,t_2 2105 sltu AT,c_1,t_2
2106 daddu c_2,AT
2050 dmultu a_1,a_1 /* mul_add_c(a[1],b[1],c3,c1,c2); */ 2107 dmultu a_1,a_1 /* mul_add_c(a[1],b[1],c3,c1,c2); */
2051 mflo t_1 2108 mflo t_1
2052 mfhi t_2 2109 mfhi t_2
@@ -2061,24 +2118,26 @@ LEAF(bn_sqr_comba4)
2061 dmultu a_0,a_3 /* mul_add_c2(a[0],b[3],c1,c2,c3); */ 2118 dmultu a_0,a_3 /* mul_add_c2(a[0],b[3],c1,c2,c3); */
2062 mflo t_1 2119 mflo t_1
2063 mfhi t_2 2120 mfhi t_2
2064 daddu c_1,t_1 2121 slt c_3,t_2,zero
2065 sltu AT,c_1,t_1 2122 dsll t_2,1
2066 daddu a2,t_2,AT 2123 slt a2,t_1,zero
2067 daddu c_2,a2 2124 daddu t_2,a2
2125 dsll t_1,1
2068 daddu c_1,t_1 2126 daddu c_1,t_1
2069 sltu AT,c_1,t_1 2127 sltu AT,c_1,t_1
2070 daddu t_2,AT 2128 daddu t_2,AT
2071 daddu c_2,t_2 2129 daddu c_2,t_2
2072 sltu c_3,c_2,t_2 2130 sltu AT,c_2,t_2
2131 daddu c_3,AT
2073 dmultu a_1,a_2 /* mul_add_c(a2[1],b[2],c1,c2,c3); */ 2132 dmultu a_1,a_2 /* mul_add_c(a2[1],b[2],c1,c2,c3); */
2074 mflo t_1 2133 mflo t_1
2075 mfhi t_2 2134 mfhi t_2
2076 daddu c_1,t_1 2135 slt AT,t_2,zero
2077 sltu AT,c_1,t_1
2078 daddu a2,t_2,AT
2079 daddu c_2,a2
2080 sltu AT,c_2,a2
2081 daddu c_3,AT 2136 daddu c_3,AT
2137 dsll t_2,1
2138 slt a2,t_1,zero
2139 daddu t_2,a2
2140 dsll t_1,1
2082 daddu c_1,t_1 2141 daddu c_1,t_1
2083 sltu AT,c_1,t_1 2142 sltu AT,c_1,t_1
2084 daddu t_2,AT 2143 daddu t_2,AT
@@ -2090,15 +2149,17 @@ LEAF(bn_sqr_comba4)
2090 dmultu a_3,a_1 /* mul_add_c2(a[3],b[1],c2,c3,c1); */ 2149 dmultu a_3,a_1 /* mul_add_c2(a[3],b[1],c2,c3,c1); */
2091 mflo t_1 2150 mflo t_1
2092 mfhi t_2 2151 mfhi t_2
2093 daddu c_2,t_1 2152 slt c_1,t_2,zero
2094 sltu AT,c_2,t_1 2153 dsll t_2,1
2095 daddu a2,t_2,AT 2154 slt a2,t_1,zero
2096 daddu c_3,a2 2155 daddu t_2,a2
2156 dsll t_1,1
2097 daddu c_2,t_1 2157 daddu c_2,t_1
2098 sltu AT,c_2,t_1 2158 sltu AT,c_2,t_1
2099 daddu t_2,AT 2159 daddu t_2,AT
2100 daddu c_3,t_2 2160 daddu c_3,t_2
2101 sltu c_1,c_3,t_2 2161 sltu AT,c_3,t_2
2162 daddu c_1,AT
2102 dmultu a_2,a_2 /* mul_add_c(a[2],b[2],c2,c3,c1); */ 2163 dmultu a_2,a_2 /* mul_add_c(a[2],b[2],c2,c3,c1); */
2103 mflo t_1 2164 mflo t_1
2104 mfhi t_2 2165 mfhi t_2
@@ -2113,15 +2174,17 @@ LEAF(bn_sqr_comba4)
2113 dmultu a_2,a_3 /* mul_add_c2(a[2],b[3],c3,c1,c2); */ 2174 dmultu a_2,a_3 /* mul_add_c2(a[2],b[3],c3,c1,c2); */
2114 mflo t_1 2175 mflo t_1
2115 mfhi t_2 2176 mfhi t_2
2116 daddu c_3,t_1 2177 slt c_2,t_2,zero
2117 sltu AT,c_3,t_1 2178 dsll t_2,1
2118 daddu a2,t_2,AT 2179 slt a2,t_1,zero
2119 daddu c_1,a2 2180 daddu t_2,a2
2181 dsll t_1,1
2120 daddu c_3,t_1 2182 daddu c_3,t_1
2121 sltu AT,c_3,t_1 2183 sltu AT,c_3,t_1
2122 daddu t_2,AT 2184 daddu t_2,AT
2123 daddu c_1,t_2 2185 daddu c_1,t_2
2124 sltu c_2,c_1,t_2 2186 sltu AT,c_1,t_2
2187 daddu c_2,AT
2125 sd c_3,40(a0) 2188 sd c_3,40(a0)
2126 2189
2127 dmultu a_3,a_3 /* mul_add_c(a[3],b[3],c1,c2,c3); */ 2190 dmultu a_3,a_3 /* mul_add_c(a[3],b[3],c1,c2,c3); */
diff --git a/src/lib/libcrypto/bn/asm/vms.mar b/src/lib/libcrypto/bn/asm/vms.mar
index ac9d57d7b0..465f2774b6 100644
--- a/src/lib/libcrypto/bn/asm/vms.mar
+++ b/src/lib/libcrypto/bn/asm/vms.mar
@@ -162,442 +162,237 @@ n=12 ;(AP) n by value (input)
162 movl #1,r0 ; return SS$_NORMAL 162 movl #1,r0 ; return SS$_NORMAL
163 ret 163 ret
164 164
165 .title (generated) 165 .title vax_bn_div_words unsigned divide
166 166;
167 .psect code,nowrt 167; Richard Levitte 20-Nov-2000
168 168;
169.entry BN_DIV_WORDS,^m<r2,r3,r4,r5,r6,r7,r8,r9,r10> 169; ULONG bn_div_words(ULONG h, ULONG l, ULONG d)
170 subl2 #4,sp 170; {
171 171; return ((ULONG)((((ULLONG)h)<<32)|l) / (ULLONG)d);
172 clrl r9 172; }
173 movl #2,r8 173;
174 174; Using EDIV would be very easy, if it didn't do signed calculations.
175 tstl 12(ap) 175; Therefore, som extra things have to happen around it. The way to
176 bneq noname.2 176; handle that is to shift all operands right one step (basically dividing
177 mnegl #1,r10 177; them by 2) and handle the different cases depending on what the lowest
178 brw noname.3 178; bit of each operand was.
179 tstl r0 179;
180 nop 180; To start with, let's define the following:
181noname.2: 181;
182 182; a' = l & 1
183 pushl 12(ap) 183; a2 = <h,l> >> 1 # UNSIGNED shift!
184 calls #1,BN_NUM_BITS_WORD 184; b' = d & 1
185 movl r0,r7 185; b2 = d >> 1 # UNSIGNED shift!
186 186;
187 cmpl r7,#32 187; Now, use EDIV to calculate a quotient and a remainder:
188 beql noname.4 188;
189 ashl r7,#1,r2 189; q'' = a2/b2
190 cmpl 4(ap),r2 190; r'' = a2 - q''*b2
191 blequ noname.4 191;
192 192; If b' is 0, the quotient is already correct, we just need to adjust the
193 pushl r7 193; remainder:
194 calls #1,BN_DIV_WORDS_ABORT 194;
195noname.4: 195; if (b' == 0)
196 196; {
197 subl3 r7,#32,r7 197; r = 2*r'' + a'
198 198; q = q''
199 movl 12(ap),r2 199; }
200 cmpl 4(ap),r2 200;
201 blssu noname.5 201; If b' is 1, we need to do other adjustements. The first thought is the
202 subl2 r2,4(ap) 202; following (note that r' will not always have the right value, but an
203noname.5: 203; adjustement follows further down):
204 204;
205 tstl r7 205; if (b' == 1)
206 beql noname.6 206; {
207 207; q' = q''
208 ashl r7,r2,12(ap) 208; r' = a - q'*b
209 209;
210 ashl r7,4(ap),r4 210; However, one can note the folowing relationship:
211 subl3 r7,#32,r3 211;
212 subl3 r3,#32,r2 212; r'' = a2 - q''*b2
213 extzv r3,r2,8(ap),r2 213; => 2*r'' = 2*a2 - 2*q''*b2
214 bisl3 r4,r2,4(ap) 214; = { a = 2*a2 + a', b = 2*b2 + b' = 2*b2 + 1,
215 215; q' = q'' }
216 ashl r7,8(ap),8(ap) 216; = a - a' - q'*(b - 1)
217noname.6: 217; = a - q'*b - a' + q'
218 218; = r' - a' + q'
219 bicl3 #65535,12(ap),r2 219; => r' = 2*r'' - q' + a'
220 extzv #16,#16,r2,r5 220;
221 221; This enables us to use r'' instead of discarding and calculating another
222 bicl3 #-65536,12(ap),r6 222; modulo:
223 223;
224noname.7: 224; if (b' == 1)
225 225; {
226 moval 4(ap),r2 226; q' = q''
227 movzwl 2(r2),r0 227; r' = (r'' << 1) - q' + a'
228 cmpl r0,r5 228;
229 bneq noname.8 229; Now, all we have to do is adjust r', because it might be < 0:
230 230;
231 movzwl #65535,r4 231; while (r' < 0)
232 brb noname.9 232; {
233noname.8: 233; r' = r' + b
234 234; q' = q' - 1
235 clrl r1 235; }
236 movl (r2),r0 236; }
237 movl r5,r2 237;
238 bgeq vcg.1 238; return q'
239 cmpl r2,r0
240 bgtru vcg.2
241 incl r1
242 brb vcg.2
243 nop
244vcg.1:
245 ediv r2,r0,r1,r0
246vcg.2:
247 movl r1,r4
248noname.9:
249
250noname.10:
251
252 mull3 r5,r4,r0
253 subl3 r0,4(ap),r3
254
255 bicl3 #65535,r3,r0
256 bneq noname.13
257 mull3 r6,r4,r2
258 ashl #16,r3,r1
259 bicl3 #65535,8(ap),r0
260 extzv #16,#16,r0,r0
261 addl2 r0,r1
262 cmpl r2,r1
263 bgtru noname.12
264noname.11:
265
266 brb noname.13
267 nop
268noname.12:
269
270 decl r4
271 brb noname.10
272noname.13:
273
274 mull3 r5,r4,r1
275
276 mull3 r6,r4,r0
277
278 extzv #16,#16,r0,r3
279
280 ashl #16,r0,r2
281 bicl3 #65535,r2,r0
282
283 addl2 r3,r1
284
285 moval 8(ap),r3
286 cmpl (r3),r0
287 bgequ noname.15
288 incl r1
289noname.15:
290
291 subl2 r0,(r3)
292
293 cmpl 4(ap),r1
294 bgequ noname.16
295
296 addl2 12(ap),4(ap)
297
298 decl r4
299noname.16:
300
301 subl2 r1,4(ap)
302
303 decl r8
304 beql noname.18
305noname.17:
306
307 ashl #16,r4,r9
308 239
309 ashl #16,4(ap),r2 240h=4 ;(AP) h by value (input)
310 movzwl 2(r3),r0 241l=8 ;(AP) l by value (input)
311 bisl2 r0,r2 242d=12 ;(AP) d by value (input)
312 bicl3 #0,r2,4(ap)
313 243
314 bicl3 #-65536,(r3),r0 244;aprim=r5
315 ashl #16,r0,(r3) 245;a2=r6
316 brw noname.7 246;a20=r6
317 nop 247;a21=r7
318noname.18: 248;bprim=r8
249;b2=r9
250;qprim=r10 ; initially used as q''
251;rprim=r11 ; initially used as r''
319 252
320 bisl2 r4,r9
321 253
322 movl r9,r10 254 .psect code,nowrt
323 255
324noname.3: 256.entry bn_div_words,^m<r2,r3,r4,r5,r6,r7,r8,r9,r10,r11>
257 movl l(ap),r2
258 movl h(ap),r3
259 movl d(ap),r4
260
261 movl #0,r5
262 movl #0,r8
263 movl #0,r0
264; movl #0,r1
265
266 rotl #-1,r2,r6 ; a20 = l >> 1 (almost)
267 rotl #-1,r3,r7 ; a21 = h >> 1 (almost)
268 rotl #-1,r4,r9 ; b2 = d >> 1 (almost)
269
270 tstl r6
271 bgeq 1$
272 xorl2 #^X80000000,r6 ; fixup a20 so highest bit is 0
273 incl r5 ; a' = 1
2741$:
275 tstl r7
276 bgeq 2$
277 xorl2 #^X80000000,r6 ; fixup a20 so highest bit is 1,
278 ; since that's what was lowest in a21
279 xorl2 #^X80000000,r7 ; fixup a21 so highest bit is 1
2802$:
281 tstl r9
282 beql 666$ ; Uh-oh, the divisor is 0...
283 bgtr 3$
284 xorl2 #^X80000000,r9 ; fixup b2 so highest bit is 0
285 incl r8 ; b' = 1
2863$:
287 tstl r9
288 bneq 4$ ; if b2 is 0, we know that b' is 1
289 tstl r3
290 bneq 666$ ; if higher half isn't 0, we overflow
291 movl r2,r10 ; otherwise, we have our result
292 brb 42$ ; This is a success, really.
2934$:
294 ediv r9,r6,r10,r11
295
296 tstl r8
297 bneq 5$ ; If b' != 0, go to the other part
298; addl3 r11,r11,r1
299; addl2 r5,r1
300 brb 42$
3015$:
302 ashl #1,r11,r11
303 subl2 r10,r11
304 addl2 r5,r11
305 bgeq 7$
3066$:
307 decl r10
308 addl2 r4,r11
309 blss 6$
3107$:
311; movl r11,r1
31242$:
325 movl r10,r0 313 movl r10,r0
326 ret 314666$:
327 tstl r0 315 ret
328
329 316
330 .psect code,nowrt 317 .title vax_bn_add_words unsigned add of two arrays
331 318;
332.entry BN_ADD_WORDS,^m<r2,r3,r4,r5,r6,r7> 319; Richard Levitte 20-Nov-2000
333 320;
334 tstl 16(ap) 321; ULONG bn_add_words(ULONG r[], ULONG a[], ULONG b[], int n) {
335 bgtr noname.21 322; ULONG c = 0;
336 clrl r7 323; int i;
337 brw noname.22 324; for (i = 0; i < n; i++) <c,r[i]> = a[i] + b[i] + c;
338noname.21: 325; return(c);
339 326; }
340 clrl r4
341
342 tstl r0
343noname.23:
344
345 movl 8(ap),r6
346 addl3 r4,(r6),r2
347
348 bicl2 #0,r2
349
350 clrl r0
351 cmpl r2,r4
352 bgequ vcg.3
353 incl r0
354vcg.3:
355 movl r0,r4
356
357 movl 12(ap),r5
358 addl3 (r5),r2,r1
359 bicl2 #0,r1
360
361 clrl r0
362 cmpl r1,r2
363 bgequ vcg.4
364 incl r0
365vcg.4:
366 addl2 r0,r4
367
368 movl 4(ap),r3
369 movl r1,(r3)
370
371 decl 16(ap)
372 bgtr gen.1
373 brw noname.25
374gen.1:
375noname.24:
376
377 addl3 r4,4(r6),r2
378
379 bicl2 #0,r2
380
381 clrl r0
382 cmpl r2,r4
383 bgequ vcg.5
384 incl r0
385vcg.5:
386 movl r0,r4
387
388 addl3 4(r5),r2,r1
389 bicl2 #0,r1
390
391 clrl r0
392 cmpl r1,r2
393 bgequ vcg.6
394 incl r0
395vcg.6:
396 addl2 r0,r4
397
398 movl r1,4(r3)
399
400 decl 16(ap)
401 bleq noname.25
402noname.26:
403
404 addl3 r4,8(r6),r2
405
406 bicl2 #0,r2
407
408 clrl r0
409 cmpl r2,r4
410 bgequ vcg.7
411 incl r0
412vcg.7:
413 movl r0,r4
414
415 addl3 8(r5),r2,r1
416 bicl2 #0,r1
417
418 clrl r0
419 cmpl r1,r2
420 bgequ vcg.8
421 incl r0
422vcg.8:
423 addl2 r0,r4
424
425 movl r1,8(r3)
426
427 decl 16(ap)
428 bleq noname.25
429noname.27:
430
431 addl3 r4,12(r6),r2
432
433 bicl2 #0,r2
434
435 clrl r0
436 cmpl r2,r4
437 bgequ vcg.9
438 incl r0
439vcg.9:
440 movl r0,r4
441
442 addl3 12(r5),r2,r1
443 bicl2 #0,r1
444
445 clrl r0
446 cmpl r1,r2
447 bgequ vcg.10
448 incl r0
449vcg.10:
450 addl2 r0,r4
451 327
452 movl r1,12(r3) 328r=4 ;(AP) r by reference (output)
329a=8 ;(AP) a by reference (input)
330b=12 ;(AP) b by reference (input)
331n=16 ;(AP) n by value (input)
453 332
454 decl 16(ap)
455 bleq noname.25
456noname.28:
457 333
458 addl3 #16,r6,8(ap) 334 .psect code,nowrt
459 335
460 addl3 #16,r5,12(ap) 336.entry bn_add_words,^m<r2,r3,r4,r5,r6>
461 337
462 addl3 #16,r3,4(ap) 338 moval @r(ap),r2
463 brw noname.23 339 moval @a(ap),r3
464 tstl r0 340 moval @b(ap),r4
465noname.25: 341 movl n(ap),r5 ; assumed >0 by C code
342 clrl r0 ; c
466 343
467 movl r4,r7 344 tstl r5 ; carry = 0
345 bleq 666$
468 346
469noname.22: 3470$:
470 movl r7,r0 348 movl (r3)+,r6 ; carry untouched
471 ret 349 adwc (r4)+,r6 ; carry used and touched
472 nop 350 movl r6,(r2)+ ; carry untouched
351 sobgtr r5,0$ ; carry untouched
473 352
353 adwc #0,r0
354666$:
355 ret
474 356
357 .title vax_bn_sub_words unsigned add of two arrays
358;
359; Richard Levitte 20-Nov-2000
360;
361; ULONG bn_sub_words(ULONG r[], ULONG a[], ULONG b[], int n) {
362; ULONG c = 0;
363; int i;
364; for (i = 0; i < n; i++) <c,r[i]> = a[i] - b[i] - c;
365; return(c);
366; }
475 367
476;r=4 ;(AP) 368r=4 ;(AP) r by reference (output)
477;a=8 ;(AP) 369a=8 ;(AP) a by reference (input)
478;b=12 ;(AP) 370b=12 ;(AP) b by reference (input)
479;n=16 ;(AP) n by value (input) 371n=16 ;(AP) n by value (input)
480 372
481 .psect code,nowrt
482 373
483.entry BN_SUB_WORDS,^m<r2,r3,r4,r5,r6,r7> 374 .psect code,nowrt
484 375
485 clrl r6 376.entry bn_sub_words,^m<r2,r3,r4,r5,r6>
486 377
487 tstl 16(ap) 378 moval @r(ap),r2
488 bgtr noname.31 379 moval @a(ap),r3
489 clrl r7 380 moval @b(ap),r4
490 brw noname.32 381 movl n(ap),r5 ; assumed >0 by C code
491 tstl r0 382 clrl r0 ; c
492noname.31:
493 383
494noname.33: 384 tstl r5 ; carry = 0
385 bleq 666$
495 386
496 movl 8(ap),r5 3870$:
497 movl (r5),r1 388 movl (r3)+,r6 ; carry untouched
498 movl 12(ap),r4 389 sbwc (r4)+,r6 ; carry used and touched
499 movl (r4),r2 390 movl r6,(r2)+ ; carry untouched
500 391 sobgtr r5,0$ ; carry untouched
501 movl 4(ap),r3
502 subl3 r2,r1,r0
503 subl2 r6,r0
504 bicl3 #0,r0,(r3)
505
506 cmpl r1,r2
507 beql noname.34
508 clrl r0
509 cmpl r1,r2
510 bgequ vcg.11
511 incl r0
512vcg.11:
513 movl r0,r6
514noname.34:
515
516 decl 16(ap)
517 bgtr gen.2
518 brw noname.36
519gen.2:
520noname.35:
521
522 movl 4(r5),r2
523 movl 4(r4),r1
524
525 subl3 r1,r2,r0
526 subl2 r6,r0
527 bicl3 #0,r0,4(r3)
528
529 cmpl r2,r1
530 beql noname.37
531 clrl r0
532 cmpl r2,r1
533 bgequ vcg.12
534 incl r0
535vcg.12:
536 movl r0,r6
537noname.37:
538
539 decl 16(ap)
540 bleq noname.36
541noname.38:
542
543 movl 8(r5),r1
544 movl 8(r4),r2
545
546 subl3 r2,r1,r0
547 subl2 r6,r0
548 bicl3 #0,r0,8(r3)
549
550 cmpl r1,r2
551 beql noname.39
552 clrl r0
553 cmpl r1,r2
554 bgequ vcg.13
555 incl r0
556vcg.13:
557 movl r0,r6
558noname.39:
559
560 decl 16(ap)
561 bleq noname.36
562noname.40:
563
564 movl 12(r5),r1
565 movl 12(r4),r2
566
567 subl3 r2,r1,r0
568 subl2 r6,r0
569 bicl3 #0,r0,12(r3)
570
571 cmpl r1,r2
572 beql noname.41
573 clrl r0
574 cmpl r1,r2
575 bgequ vcg.14
576 incl r0
577vcg.14:
578 movl r0,r6
579noname.41:
580
581 decl 16(ap)
582 bleq noname.36
583noname.42:
584
585 addl3 #16,r5,8(ap)
586
587 addl3 #16,r4,12(ap)
588
589 addl3 #16,r3,4(ap)
590 brw noname.33
591 tstl r0
592noname.36:
593
594 movl r6,r7
595
596noname.32:
597 movl r7,r0
598 ret
599 nop
600 392
393 adwc #0,r0
394666$:
395 ret
601 396
602 397
603;r=4 ;(AP) 398;r=4 ;(AP)
@@ -6615,81 +6410,3 @@ noname.610:
6615 6410
6616; For now, the code below doesn't work, so I end this prematurely. 6411; For now, the code below doesn't work, so I end this prematurely.
6617.end 6412.end
6618
6619 .title vax_bn_div64 division 64/32=>32
6620;
6621; r.l. 16-jan-1998
6622;
6623; unsigned int bn_div64(unsigned long h, unsigned long l, unsigned long d)
6624; return <h,l>/d;
6625;
6626
6627 .psect code,nowrt
6628
6629h=4 ;(AP) by value (input)
6630l=8 ;(AP) by value (input)
6631d=12 ;(AP) by value (input)
6632
6633.entry bn_div64,^m<r2,r3,r4,r5,r6,r7,r8,r9>
6634
6635 movl l(ap),r2 ; l
6636 movl h(ap),r3 ; h
6637 movl d(ap),r4 ; d
6638 clrl r5 ; q
6639 clrl r6 ; r
6640
6641 ; Treat "negative" specially
6642 tstl r3
6643 blss 30$
6644
6645 tstl r4
6646 beql 90$
6647
6648 ediv r4,r2,r5,r6
6649 bvs 666$
6650
6651 movl r5,r0
6652 ret
6653
665430$:
6655 ; The theory here is to do some harmless shifting and a little
6656 ; bit of rounding (brackets are to designate when decimals are
6657 ; cut off):
6658 ;
6659 ; result = 2 * [ ([<h,0>/2] + [d/2]) / d ] + [ l / d ]
6660
6661 movl #0,r7
6662 movl r3,r8 ; copy h
6663 ashq #-1,r7,r7 ; [<h,0>/2] => <r8,r7>
6664 bicl2 #^X80000000,r8 ; Remove "sign"
6665
6666 movl r4,r9 ; copy d
6667 ashl #-1,r9,r9 ; [d/2] => r9
6668 bicl2 #^X80000000,r9 ; Remove "sign"
6669
6670 addl2 r9,r7
6671 adwc #0,r8 ; [<h,0>/2] + [d/2] => <r8,r7>
6672
6673 ediv r4,r7,r5,r6 ; [ ([<h,0>/2] + [d/2]) / d ] => <r5,r6>
6674 bvs 666$
6675
6676 movl #0,r6
6677 ashq #1,r5,r5 ; 2 * [ ([<h,0>/2] + [d/2]) / d ] => r5
6678
6679 movl #0,r3
6680 ediv r4,r2,r8,r9 ; [ l / d ] => <r8,r9>
6681
6682 addl2 r8,r5 ;
6683 bcs 666$
6684
6685 movl r5,r0
6686 ret
6687
668890$:
6689 movl #-1,r0
6690 ret
6691
6692666$:
6693
6694
6695.end
diff --git a/src/lib/libcrypto/bn/bnspeed.c b/src/lib/libcrypto/bn/bnspeed.c
index f7c2790fff..b554ac8cf8 100644
--- a/src/lib/libcrypto/bn/bnspeed.c
+++ b/src/lib/libcrypto/bn/bnspeed.c
@@ -1,3 +1,5 @@
1/* unused */
2
1/* crypto/bn/bnspeed.c */ 3/* crypto/bn/bnspeed.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 4/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 5 * All rights reserved.
@@ -66,14 +68,13 @@
66#include <stdlib.h> 68#include <stdlib.h>
67#include <signal.h> 69#include <signal.h>
68#include <string.h> 70#include <string.h>
69#include "crypto.h" 71#include <openssl/crypto.h>
70#include "err.h" 72#include <openssl/err.h>
71 73
72#ifndef MSDOS 74#if !defined(OPENSSL_SYS_MSDOS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC)) && !defined(OPENSSL_SYS_MACOSX)
73#define TIMES 75#define TIMES
74#endif 76#endif
75 77
76#ifndef VMS
77#ifndef _IRIX 78#ifndef _IRIX
78#include <time.h> 79#include <time.h>
79#endif 80#endif
@@ -81,36 +82,33 @@
81#include <sys/types.h> 82#include <sys/types.h>
82#include <sys/times.h> 83#include <sys/times.h>
83#endif 84#endif
84#else /* VMS */ 85
85#include <types.h> 86/* Depending on the VMS version, the tms structure is perhaps defined.
86struct tms { 87 The __TMS macro will show if it was. If it wasn't defined, we should
87 time_t tms_utime; 88 undefine TIMES, since that tells the rest of the program how things
88 time_t tms_stime; 89 should be handled. -- Richard Levitte */
89 time_t tms_uchild; /* I dunno... */ 90#if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS)
90 time_t tms_uchildsys; /* so these names are a guess :-) */ 91#undef TIMES
91 }
92#endif 92#endif
93
93#ifndef TIMES 94#ifndef TIMES
94#include <sys/timeb.h> 95#include <sys/timeb.h>
95#endif 96#endif
96 97
97#ifdef sun 98#if defined(sun) || defined(__ultrix)
99#define _POSIX_SOURCE
98#include <limits.h> 100#include <limits.h>
99#include <sys/param.h> 101#include <sys/param.h>
100#endif 102#endif
101 103
102#include "bn.h" 104#include <openssl/bn.h>
103#include "x509.h" 105#include <openssl/x509.h>
104 106
105/* The following if from times(3) man page. It may need to be changed */ 107/* The following if from times(3) man page. It may need to be changed */
106#ifndef HZ 108#ifndef HZ
107# ifndef CLK_TCK 109# ifndef CLK_TCK
108# ifndef _BSD_CLK_TCK_ /* FreeBSD hack */ 110# ifndef _BSD_CLK_TCK_ /* FreeBSD hack */
109# ifndef VMS 111# define HZ 100.0
110# define HZ 100.0
111# else /* VMS */
112# define HZ 100.0
113# endif
114# else /* _BSD_CLK_TCK_ */ 112# else /* _BSD_CLK_TCK_ */
115# define HZ ((double)_BSD_CLK_TCK_) 113# define HZ ((double)_BSD_CLK_TCK_)
116# endif 114# endif
@@ -123,17 +121,11 @@ struct tms {
123#define BUFSIZE ((long)1024*8) 121#define BUFSIZE ((long)1024*8)
124int run=0; 122int run=0;
125 123
126#ifndef NOPROTO
127static double Time_F(int s); 124static double Time_F(int s);
128#else
129static double Time_F();
130#endif
131
132#define START 0 125#define START 0
133#define STOP 1 126#define STOP 1
134 127
135static double Time_F(s) 128static double Time_F(int s)
136int s;
137 { 129 {
138 double ret; 130 double ret;
139#ifdef TIMES 131#ifdef TIMES
@@ -175,27 +167,20 @@ static int sizes[NUM_SIZES]={128,256,512,1024,2048};
175 167
176void do_mul(BIGNUM *r,BIGNUM *a,BIGNUM *b,BN_CTX *ctx); 168void do_mul(BIGNUM *r,BIGNUM *a,BIGNUM *b,BN_CTX *ctx);
177 169
178int main(argc,argv) 170int main(int argc, char **argv)
179int argc;
180char **argv;
181 { 171 {
182 BN_CTX *ctx; 172 BN_CTX *ctx;
183 BIGNUM *a,*b,*c,*r; 173 BIGNUM a,b,c;
184 174
185 ctx=BN_CTX_new(); 175 ctx=BN_CTX_new();
186 a=BN_new(); 176 BN_init(&a);
187 b=BN_new(); 177 BN_init(&b);
188 c=BN_new(); 178 BN_init(&c);
189 r=BN_new();
190 179
191 do_mul(a,b,c,ctx); 180 do_mul(&a,&b,&c,ctx);
192 } 181 }
193 182
194void do_mul(r,a,b,ctx) 183void do_mul(BIGNUM *r, BIGNUM *a, BIGNUM *b, BN_CTX *ctx)
195BIGNUM *r;
196BIGNUM *a;
197BIGNUM *b;
198BN_CTX *ctx;
199 { 184 {
200 int i,j,k; 185 int i,j,k;
201 double tm; 186 double tm;
@@ -211,7 +196,7 @@ BN_CTX *ctx;
211 BN_rand(b,sizes[j],1,0); 196 BN_rand(b,sizes[j],1,0);
212 Time_F(START); 197 Time_F(START);
213 for (k=0; k<num; k++) 198 for (k=0; k<num; k++)
214 BN_mul(r,b,a); 199 BN_mul(r,b,a,ctx);
215 tm=Time_F(STOP); 200 tm=Time_F(STOP);
216 printf("mul %4d x %4d -> %8.3fms\n",sizes[i],sizes[j],tm*1000.0/num); 201 printf("mul %4d x %4d -> %8.3fms\n",sizes[i],sizes[j],tm*1000.0/num);
217 } 202 }
diff --git a/src/lib/libcrypto/bn/bntest.c b/src/lib/libcrypto/bn/bntest.c
index 9ebd68b429..443cf420e5 100644
--- a/src/lib/libcrypto/bn/bntest.c
+++ b/src/lib/libcrypto/bn/bntest.c
@@ -59,65 +59,70 @@
59#include <stdio.h> 59#include <stdio.h>
60#include <stdlib.h> 60#include <stdlib.h>
61#include <string.h> 61#include <string.h>
62
62#include "e_os.h" 63#include "e_os.h"
63#include "bio.h"
64#include "bn.h"
65#include "rand.h"
66#include "x509.h"
67#include "err.h"
68 64
69#ifdef WINDOWS 65#include <openssl/bio.h>
66#include <openssl/bn.h>
67#include <openssl/rand.h>
68#include <openssl/x509.h>
69#include <openssl/err.h>
70
71#ifdef OPENSSL_SYS_WINDOWS
70#include "../bio/bss_file.c" 72#include "../bio/bss_file.c"
71#endif 73#endif
72 74
73#ifndef NOPROTO 75const int num0 = 100; /* number of tests */
74int test_add (BIO *bp); 76const int num1 = 50; /* additional tests for some functions */
75int test_sub (BIO *bp); 77const int num2 = 5; /* number of tests for slow functions */
76int test_lshift1 (BIO *bp); 78
77int test_lshift (BIO *bp); 79int test_add(BIO *bp);
78int test_rshift1 (BIO *bp); 80int test_sub(BIO *bp);
79int test_rshift (BIO *bp); 81int test_lshift1(BIO *bp);
80int test_div (BIO *bp,BN_CTX *ctx); 82int test_lshift(BIO *bp,BN_CTX *ctx,BIGNUM *a_);
81int test_mul (BIO *bp); 83int test_rshift1(BIO *bp);
82int test_sqr (BIO *bp,BN_CTX *ctx); 84int test_rshift(BIO *bp,BN_CTX *ctx);
83int test_mont (BIO *bp,BN_CTX *ctx); 85int test_div(BIO *bp,BN_CTX *ctx);
84int test_mod (BIO *bp,BN_CTX *ctx); 86int test_div_recp(BIO *bp,BN_CTX *ctx);
85int test_mod_mul (BIO *bp,BN_CTX *ctx); 87int test_mul(BIO *bp);
86int test_mod_exp (BIO *bp,BN_CTX *ctx); 88int test_sqr(BIO *bp,BN_CTX *ctx);
89int test_mont(BIO *bp,BN_CTX *ctx);
90int test_mod(BIO *bp,BN_CTX *ctx);
91int test_mod_mul(BIO *bp,BN_CTX *ctx);
92int test_mod_exp(BIO *bp,BN_CTX *ctx);
93int test_exp(BIO *bp,BN_CTX *ctx);
94int test_kron(BIO *bp,BN_CTX *ctx);
95int test_sqrt(BIO *bp,BN_CTX *ctx);
87int rand_neg(void); 96int rand_neg(void);
88#else
89int test_add ();
90int test_sub ();
91int test_lshift1 ();
92int test_lshift ();
93int test_rshift1 ();
94int test_rshift ();
95int test_div ();
96int test_mul ();
97int test_sqr ();
98int test_mont ();
99int test_mod ();
100int test_mod_mul ();
101int test_mod_exp ();
102int rand_neg();
103#endif
104
105static int results=0; 97static int results=0;
106 98
107#ifdef NO_STDIO 99#ifdef OPENSSL_NO_STDIO
108#define APPS_WIN16 100#define APPS_WIN16
109#include "bss_file.c" 101#include "bss_file.c"
110#endif 102#endif
111 103
112int main(argc,argv) 104static unsigned char lst[]="\xC6\x4F\x43\x04\x2A\xEA\xCA\x6E\x58\x36\x80\x5B\xE8\xC9"
113int argc; 105"\x9B\x04\x5D\x48\x36\xC2\xFD\x16\xC9\x64\xF0";
114char *argv[]; 106
107static const char rnd_seed[] = "string to make the random number generator think it has entropy";
108
109static void message(BIO *out, char *m)
110 {
111 fprintf(stderr, "test %s\n", m);
112 BIO_puts(out, "print \"test ");
113 BIO_puts(out, m);
114 BIO_puts(out, "\\n\"\n");
115 }
116
117int main(int argc, char *argv[])
115 { 118 {
116 BN_CTX *ctx; 119 BN_CTX *ctx;
117 BIO *out; 120 BIO *out;
118 char *outfile=NULL; 121 char *outfile=NULL;
119 122
120 srand((unsigned int)time(NULL)); 123 results = 0;
124
125 RAND_seed(rnd_seed, sizeof rnd_seed); /* or BN_generate_prime may fail */
121 126
122 argc--; 127 argc--;
123 argv++; 128 argv++;
@@ -156,361 +161,516 @@ char *argv[];
156 if (!results) 161 if (!results)
157 BIO_puts(out,"obase=16\nibase=16\n"); 162 BIO_puts(out,"obase=16\nibase=16\n");
158 163
159 fprintf(stderr,"test BN_add\n"); 164 message(out,"BN_add");
160 if (!test_add(out)) goto err; 165 if (!test_add(out)) goto err;
161 fflush(stdout); 166 BIO_flush(out);
162 167
163 fprintf(stderr,"test BN_sub\n"); 168 message(out,"BN_sub");
164 if (!test_sub(out)) goto err; 169 if (!test_sub(out)) goto err;
165 fflush(stdout); 170 BIO_flush(out);
166 171
167 fprintf(stderr,"test BN_lshift1\n"); 172 message(out,"BN_lshift1");
168 if (!test_lshift1(out)) goto err; 173 if (!test_lshift1(out)) goto err;
169 fflush(stdout); 174 BIO_flush(out);
175
176 message(out,"BN_lshift (fixed)");
177 if (!test_lshift(out,ctx,BN_bin2bn(lst,sizeof(lst)-1,NULL)))
178 goto err;
179 BIO_flush(out);
170 180
171 fprintf(stderr,"test BN_lshift\n"); 181 message(out,"BN_lshift");
172 if (!test_lshift(out)) goto err; 182 if (!test_lshift(out,ctx,NULL)) goto err;
173 fflush(stdout); 183 BIO_flush(out);
174 184
175 fprintf(stderr,"test BN_rshift1\n"); 185 message(out,"BN_rshift1");
176 if (!test_rshift1(out)) goto err; 186 if (!test_rshift1(out)) goto err;
177 fflush(stdout); 187 BIO_flush(out);
178 188
179 fprintf(stderr,"test BN_rshift\n"); 189 message(out,"BN_rshift");
180 if (!test_rshift(out)) goto err; 190 if (!test_rshift(out,ctx)) goto err;
181 fflush(stdout); 191 BIO_flush(out);
182 192
183 fprintf(stderr,"test BN_sqr\n"); 193 message(out,"BN_sqr");
184 if (!test_sqr(out,ctx)) goto err; 194 if (!test_sqr(out,ctx)) goto err;
185 fflush(stdout); 195 BIO_flush(out);
186 196
187 fprintf(stderr,"test BN_mul\n"); 197 message(out,"BN_mul");
188 if (!test_mul(out)) goto err; 198 if (!test_mul(out)) goto err;
189 fflush(stdout); 199 BIO_flush(out);
190 200
191 fprintf(stderr,"test BN_div\n"); 201 message(out,"BN_div");
192 if (!test_div(out,ctx)) goto err; 202 if (!test_div(out,ctx)) goto err;
193 fflush(stdout); 203 BIO_flush(out);
194 204
195 fprintf(stderr,"test BN_mod\n"); 205 message(out,"BN_div_recp");
206 if (!test_div_recp(out,ctx)) goto err;
207 BIO_flush(out);
208
209 message(out,"BN_mod");
196 if (!test_mod(out,ctx)) goto err; 210 if (!test_mod(out,ctx)) goto err;
197 fflush(stdout); 211 BIO_flush(out);
198 212
199 fprintf(stderr,"test BN_mod_mul\n"); 213 message(out,"BN_mod_mul");
200 if (!test_mod_mul(out,ctx)) goto err; 214 if (!test_mod_mul(out,ctx)) goto err;
201 fflush(stdout); 215 BIO_flush(out);
202 216
203/* 217 message(out,"BN_mont");
204 fprintf(stderr,"test BN_mont\n");
205 if (!test_mont(out,ctx)) goto err; 218 if (!test_mont(out,ctx)) goto err;
206 fflush(stdout); 219 BIO_flush(out);
207*/ 220
208 fprintf(stderr,"test BN_mod_exp\n"); 221 message(out,"BN_mod_exp");
209 if (!test_mod_exp(out,ctx)) goto err; 222 if (!test_mod_exp(out,ctx)) goto err;
210 fflush(stdout); 223 BIO_flush(out);
224
225 message(out,"BN_exp");
226 if (!test_exp(out,ctx)) goto err;
227 BIO_flush(out);
228
229 message(out,"BN_kronecker");
230 if (!test_kron(out,ctx)) goto err;
231 BIO_flush(out);
232
233 message(out,"BN_mod_sqrt");
234 if (!test_sqrt(out,ctx)) goto err;
235 BIO_flush(out);
236
237 BN_CTX_free(ctx);
238 BIO_free(out);
211 239
212/**/ 240/**/
213 exit(0); 241 exit(0);
214err: 242err:
243 BIO_puts(out,"1\n"); /* make sure the Perl script fed by bc notices
244 * the failure, see test_bn in test/Makefile.ssl*/
245 BIO_flush(out);
215 ERR_load_crypto_strings(); 246 ERR_load_crypto_strings();
216 ERR_print_errors(out); 247 ERR_print_errors_fp(stderr);
217 exit(1); 248 exit(1);
218 return(1); 249 return(1);
219 } 250 }
220 251
221int test_add(bp) 252int test_add(BIO *bp)
222BIO *bp;
223 { 253 {
224 BIGNUM *a,*b,*c; 254 BIGNUM a,b,c;
225 int i; 255 int i;
226 int j;
227 256
228 a=BN_new(); 257 BN_init(&a);
229 b=BN_new(); 258 BN_init(&b);
230 c=BN_new(); 259 BN_init(&c);
231 260
232 BN_rand(a,512,0,0); 261 BN_bntest_rand(&a,512,0,0);
233 for (i=0; i<100; i++) 262 for (i=0; i<num0; i++)
234 { 263 {
235 BN_rand(b,450+i,0,0); 264 BN_bntest_rand(&b,450+i,0,0);
236 a->neg=rand_neg(); 265 a.neg=rand_neg();
237 b->neg=rand_neg(); 266 b.neg=rand_neg();
238 if (bp == NULL) 267 BN_add(&c,&a,&b);
239 for (j=0; j<10000; j++)
240 BN_add(c,a,b);
241 BN_add(c,a,b);
242 if (bp != NULL) 268 if (bp != NULL)
243 { 269 {
244 if (!results) 270 if (!results)
245 { 271 {
246 BN_print(bp,a); 272 BN_print(bp,&a);
247 BIO_puts(bp," + "); 273 BIO_puts(bp," + ");
248 BN_print(bp,b); 274 BN_print(bp,&b);
249 BIO_puts(bp," - "); 275 BIO_puts(bp," - ");
250 } 276 }
251 BN_print(bp,c); 277 BN_print(bp,&c);
252 BIO_puts(bp,"\n"); 278 BIO_puts(bp,"\n");
253 } 279 }
280 a.neg=!a.neg;
281 b.neg=!b.neg;
282 BN_add(&c,&c,&b);
283 BN_add(&c,&c,&a);
284 if(!BN_is_zero(&c))
285 {
286 fprintf(stderr,"Add test failed!\n");
287 return 0;
288 }
254 } 289 }
255 BN_free(a); 290 BN_free(&a);
256 BN_free(b); 291 BN_free(&b);
257 BN_free(c); 292 BN_free(&c);
258 return(1); 293 return(1);
259 } 294 }
260 295
261int test_sub(bp) 296int test_sub(BIO *bp)
262BIO *bp;
263 { 297 {
264 BIGNUM *a,*b,*c; 298 BIGNUM a,b,c;
265 int i; 299 int i;
266 int j;
267 300
268 a=BN_new(); 301 BN_init(&a);
269 b=BN_new(); 302 BN_init(&b);
270 c=BN_new(); 303 BN_init(&c);
271 304
272 BN_rand(a,512,0,0); 305 for (i=0; i<num0+num1; i++)
273 for (i=0; i<100; i++)
274 { 306 {
275 BN_rand(b,400+i,0,0); 307 if (i < num1)
276 a->neg=rand_neg(); 308 {
277 b->neg=rand_neg(); 309 BN_bntest_rand(&a,512,0,0);
278 if (bp == NULL) 310 BN_copy(&b,&a);
279 for (j=0; j<10000; j++) 311 if (BN_set_bit(&a,i)==0) return(0);
280 BN_sub(c,a,b); 312 BN_add_word(&b,i);
281 BN_sub(c,a,b); 313 }
314 else
315 {
316 BN_bntest_rand(&b,400+i-num1,0,0);
317 a.neg=rand_neg();
318 b.neg=rand_neg();
319 }
320 BN_sub(&c,&a,&b);
282 if (bp != NULL) 321 if (bp != NULL)
283 { 322 {
284 if (!results) 323 if (!results)
285 { 324 {
286 BN_print(bp,a); 325 BN_print(bp,&a);
287 BIO_puts(bp," - "); 326 BIO_puts(bp," - ");
288 BN_print(bp,b); 327 BN_print(bp,&b);
289 BIO_puts(bp," - "); 328 BIO_puts(bp," - ");
290 } 329 }
291 BN_print(bp,c); 330 BN_print(bp,&c);
292 BIO_puts(bp,"\n"); 331 BIO_puts(bp,"\n");
293 } 332 }
333 BN_add(&c,&c,&b);
334 BN_sub(&c,&c,&a);
335 if(!BN_is_zero(&c))
336 {
337 fprintf(stderr,"Subtract test failed!\n");
338 return 0;
339 }
294 } 340 }
295 BN_free(a); 341 BN_free(&a);
296 BN_free(b); 342 BN_free(&b);
297 BN_free(c); 343 BN_free(&c);
298 return(1); 344 return(1);
299 } 345 }
300 346
301int test_div(bp,ctx) 347int test_div(BIO *bp, BN_CTX *ctx)
302BIO *bp;
303BN_CTX *ctx;
304 { 348 {
305 BIGNUM *a,*b,*c,*d; 349 BIGNUM a,b,c,d,e;
306 int i; 350 int i;
307 int j;
308 351
309 a=BN_new(); 352 BN_init(&a);
310 b=BN_new(); 353 BN_init(&b);
311 c=BN_new(); 354 BN_init(&c);
312 d=BN_new(); 355 BN_init(&d);
356 BN_init(&e);
313 357
314 BN_rand(a,400,0,0); 358 for (i=0; i<num0+num1; i++)
315 for (i=0; i<100; i++)
316 { 359 {
317 BN_rand(b,50+i,0,0); 360 if (i < num1)
318 a->neg=rand_neg(); 361 {
319 b->neg=rand_neg(); 362 BN_bntest_rand(&a,400,0,0);
320 if (bp == NULL) 363 BN_copy(&b,&a);
321 for (j=0; j<100; j++) 364 BN_lshift(&a,&a,i);
322 BN_div(d,c,a,b,ctx); 365 BN_add_word(&a,i);
323 BN_div(d,c,a,b,ctx); 366 }
367 else
368 BN_bntest_rand(&b,50+3*(i-num1),0,0);
369 a.neg=rand_neg();
370 b.neg=rand_neg();
371 BN_div(&d,&c,&a,&b,ctx);
324 if (bp != NULL) 372 if (bp != NULL)
325 { 373 {
326 if (!results) 374 if (!results)
327 { 375 {
328 BN_print(bp,a); 376 BN_print(bp,&a);
329 BIO_puts(bp," / "); 377 BIO_puts(bp," / ");
330 BN_print(bp,b); 378 BN_print(bp,&b);
331 BIO_puts(bp," - "); 379 BIO_puts(bp," - ");
332 } 380 }
333 BN_print(bp,d); 381 BN_print(bp,&d);
334 BIO_puts(bp,"\n"); 382 BIO_puts(bp,"\n");
335 383
336 if (!results) 384 if (!results)
337 { 385 {
338 BN_print(bp,a); 386 BN_print(bp,&a);
339 BIO_puts(bp," % "); 387 BIO_puts(bp," % ");
340 BN_print(bp,b); 388 BN_print(bp,&b);
341 BIO_puts(bp," - "); 389 BIO_puts(bp," - ");
342 } 390 }
343 BN_print(bp,c); 391 BN_print(bp,&c);
344 BIO_puts(bp,"\n"); 392 BIO_puts(bp,"\n");
345 } 393 }
394 BN_mul(&e,&d,&b,ctx);
395 BN_add(&d,&e,&c);
396 BN_sub(&d,&d,&a);
397 if(!BN_is_zero(&d))
398 {
399 fprintf(stderr,"Division test failed!\n");
400 return 0;
401 }
346 } 402 }
347 BN_free(a); 403 BN_free(&a);
348 BN_free(b); 404 BN_free(&b);
349 BN_free(c); 405 BN_free(&c);
350 BN_free(d); 406 BN_free(&d);
407 BN_free(&e);
351 return(1); 408 return(1);
352 } 409 }
353 410
354int test_mul(bp) 411int test_div_recp(BIO *bp, BN_CTX *ctx)
355BIO *bp;
356 { 412 {
357 BIGNUM *a,*b,*c; 413 BIGNUM a,b,c,d,e;
414 BN_RECP_CTX recp;
358 int i; 415 int i;
359 int j;
360 416
361 a=BN_new(); 417 BN_RECP_CTX_init(&recp);
362 b=BN_new(); 418 BN_init(&a);
363 c=BN_new(); 419 BN_init(&b);
420 BN_init(&c);
421 BN_init(&d);
422 BN_init(&e);
364 423
365 BN_rand(a,200,0,0); 424 for (i=0; i<num0+num1; i++)
366 for (i=0; i<100; i++)
367 { 425 {
368 BN_rand(b,250+i,0,0); 426 if (i < num1)
369 a->neg=rand_neg(); 427 {
370 b->neg=rand_neg(); 428 BN_bntest_rand(&a,400,0,0);
371 if (bp == NULL) 429 BN_copy(&b,&a);
372 for (j=0; j<100; j++) 430 BN_lshift(&a,&a,i);
373 BN_mul(c,a,b); 431 BN_add_word(&a,i);
374 BN_mul(c,a,b); 432 }
433 else
434 BN_bntest_rand(&b,50+3*(i-num1),0,0);
435 a.neg=rand_neg();
436 b.neg=rand_neg();
437 BN_RECP_CTX_set(&recp,&b,ctx);
438 BN_div_recp(&d,&c,&a,&recp,ctx);
375 if (bp != NULL) 439 if (bp != NULL)
376 { 440 {
377 if (!results) 441 if (!results)
378 { 442 {
379 BN_print(bp,a); 443 BN_print(bp,&a);
444 BIO_puts(bp," / ");
445 BN_print(bp,&b);
446 BIO_puts(bp," - ");
447 }
448 BN_print(bp,&d);
449 BIO_puts(bp,"\n");
450
451 if (!results)
452 {
453 BN_print(bp,&a);
454 BIO_puts(bp," % ");
455 BN_print(bp,&b);
456 BIO_puts(bp," - ");
457 }
458 BN_print(bp,&c);
459 BIO_puts(bp,"\n");
460 }
461 BN_mul(&e,&d,&b,ctx);
462 BN_add(&d,&e,&c);
463 BN_sub(&d,&d,&a);
464 if(!BN_is_zero(&d))
465 {
466 fprintf(stderr,"Reciprocal division test failed!\n");
467 fprintf(stderr,"a=");
468 BN_print_fp(stderr,&a);
469 fprintf(stderr,"\nb=");
470 BN_print_fp(stderr,&b);
471 fprintf(stderr,"\n");
472 return 0;
473 }
474 }
475 BN_free(&a);
476 BN_free(&b);
477 BN_free(&c);
478 BN_free(&d);
479 BN_free(&e);
480 BN_RECP_CTX_free(&recp);
481 return(1);
482 }
483
484int test_mul(BIO *bp)
485 {
486 BIGNUM a,b,c,d,e;
487 int i;
488 BN_CTX *ctx;
489
490 ctx = BN_CTX_new();
491 if (ctx == NULL) exit(1);
492
493 BN_init(&a);
494 BN_init(&b);
495 BN_init(&c);
496 BN_init(&d);
497 BN_init(&e);
498
499 for (i=0; i<num0+num1; i++)
500 {
501 if (i <= num1)
502 {
503 BN_bntest_rand(&a,100,0,0);
504 BN_bntest_rand(&b,100,0,0);
505 }
506 else
507 BN_bntest_rand(&b,i-num1,0,0);
508 a.neg=rand_neg();
509 b.neg=rand_neg();
510 BN_mul(&c,&a,&b,ctx);
511 if (bp != NULL)
512 {
513 if (!results)
514 {
515 BN_print(bp,&a);
380 BIO_puts(bp," * "); 516 BIO_puts(bp," * ");
381 BN_print(bp,b); 517 BN_print(bp,&b);
382 BIO_puts(bp," - "); 518 BIO_puts(bp," - ");
383 } 519 }
384 BN_print(bp,c); 520 BN_print(bp,&c);
385 BIO_puts(bp,"\n"); 521 BIO_puts(bp,"\n");
386 } 522 }
523 BN_div(&d,&e,&c,&a,ctx);
524 BN_sub(&d,&d,&b);
525 if(!BN_is_zero(&d) || !BN_is_zero(&e))
526 {
527 fprintf(stderr,"Multiplication test failed!\n");
528 return 0;
529 }
387 } 530 }
388 BN_free(a); 531 BN_free(&a);
389 BN_free(b); 532 BN_free(&b);
390 BN_free(c); 533 BN_free(&c);
534 BN_free(&d);
535 BN_free(&e);
536 BN_CTX_free(ctx);
391 return(1); 537 return(1);
392 } 538 }
393 539
394int test_sqr(bp,ctx) 540int test_sqr(BIO *bp, BN_CTX *ctx)
395BIO *bp;
396BN_CTX *ctx;
397 { 541 {
398 BIGNUM *a,*c; 542 BIGNUM a,c,d,e;
399 int i; 543 int i;
400 int j;
401 544
402 a=BN_new(); 545 BN_init(&a);
403 c=BN_new(); 546 BN_init(&c);
547 BN_init(&d);
548 BN_init(&e);
404 549
405 for (i=0; i<40; i++) 550 for (i=0; i<num0; i++)
406 { 551 {
407 BN_rand(a,40+i*10,0,0); 552 BN_bntest_rand(&a,40+i*10,0,0);
408 a->neg=rand_neg(); 553 a.neg=rand_neg();
409 if (bp == NULL) 554 BN_sqr(&c,&a,ctx);
410 for (j=0; j<100; j++)
411 BN_sqr(c,a,ctx);
412 BN_sqr(c,a,ctx);
413 if (bp != NULL) 555 if (bp != NULL)
414 { 556 {
415 if (!results) 557 if (!results)
416 { 558 {
417 BN_print(bp,a); 559 BN_print(bp,&a);
418 BIO_puts(bp," * "); 560 BIO_puts(bp," * ");
419 BN_print(bp,a); 561 BN_print(bp,&a);
420 BIO_puts(bp," - "); 562 BIO_puts(bp," - ");
421 } 563 }
422 BN_print(bp,c); 564 BN_print(bp,&c);
423 BIO_puts(bp,"\n"); 565 BIO_puts(bp,"\n");
424 } 566 }
567 BN_div(&d,&e,&c,&a,ctx);
568 BN_sub(&d,&d,&a);
569 if(!BN_is_zero(&d) || !BN_is_zero(&e))
570 {
571 fprintf(stderr,"Square test failed!\n");
572 return 0;
573 }
425 } 574 }
426 BN_free(a); 575 BN_free(&a);
427 BN_free(c); 576 BN_free(&c);
577 BN_free(&d);
578 BN_free(&e);
428 return(1); 579 return(1);
429 } 580 }
430 581
431int test_mont(bp,ctx) 582int test_mont(BIO *bp, BN_CTX *ctx)
432BIO *bp;
433BN_CTX *ctx;
434 { 583 {
435 BIGNUM *a,*b,*c,*A,*B; 584 BIGNUM a,b,c,d,A,B;
436 BIGNUM *n; 585 BIGNUM n;
437 int i; 586 int i;
438 int j;
439 BN_MONT_CTX *mont; 587 BN_MONT_CTX *mont;
440 588
441 a=BN_new(); 589 BN_init(&a);
442 b=BN_new(); 590 BN_init(&b);
443 c=BN_new(); 591 BN_init(&c);
444 A=BN_new(); 592 BN_init(&d);
445 B=BN_new(); 593 BN_init(&A);
446 n=BN_new(); 594 BN_init(&B);
595 BN_init(&n);
447 596
448 mont=BN_MONT_CTX_new(); 597 mont=BN_MONT_CTX_new();
449 598
450 BN_rand(a,100,0,0); /**/ 599 BN_bntest_rand(&a,100,0,0); /**/
451 BN_rand(b,100,0,0); /**/ 600 BN_bntest_rand(&b,100,0,0); /**/
452 for (i=0; i<10; i++) 601 for (i=0; i<num2; i++)
453 { 602 {
454 BN_rand(n,(100%BN_BITS2+1)*BN_BITS2*i*BN_BITS2,0,1); /**/ 603 int bits = (200*(i+1))/num2;
455 BN_MONT_CTX_set(mont,n,ctx); 604
605 if (bits == 0)
606 continue;
607 BN_bntest_rand(&n,bits,0,1);
608 BN_MONT_CTX_set(mont,&n,ctx);
456 609
457 BN_to_montgomery(A,a,mont,ctx); 610 BN_nnmod(&a,&a,&n,ctx);
458 BN_to_montgomery(B,b,mont,ctx); 611 BN_nnmod(&b,&b,&n,ctx);
459 612
460 if (bp == NULL) 613 BN_to_montgomery(&A,&a,mont,ctx);
461 for (j=0; j<100; j++) 614 BN_to_montgomery(&B,&b,mont,ctx);
462 BN_mod_mul_montgomery(c,A,B,mont,ctx);/**/ 615
463 BN_mod_mul_montgomery(c,A,B,mont,ctx);/**/ 616 BN_mod_mul_montgomery(&c,&A,&B,mont,ctx);/**/
464 BN_from_montgomery(A,c,mont,ctx);/**/ 617 BN_from_montgomery(&A,&c,mont,ctx);/**/
465 if (bp != NULL) 618 if (bp != NULL)
466 { 619 {
467 if (!results) 620 if (!results)
468 { 621 {
469#ifdef undef 622#ifdef undef
470fprintf(stderr,"%d * %d %% %d\n", 623fprintf(stderr,"%d * %d %% %d\n",
471BN_num_bits(a), 624BN_num_bits(&a),
472BN_num_bits(b), 625BN_num_bits(&b),
473BN_num_bits(mont->N)); 626BN_num_bits(mont->N));
474#endif 627#endif
475 BN_print(bp,a); 628 BN_print(bp,&a);
476 BIO_puts(bp," * "); 629 BIO_puts(bp," * ");
477 BN_print(bp,b); 630 BN_print(bp,&b);
478 BIO_puts(bp," % "); 631 BIO_puts(bp," % ");
479 BN_print(bp,mont->N); 632 BN_print(bp,&(mont->N));
480 BIO_puts(bp," - "); 633 BIO_puts(bp," - ");
481 } 634 }
482 BN_print(bp,A); 635 BN_print(bp,&A);
483 BIO_puts(bp,"\n"); 636 BIO_puts(bp,"\n");
484 } 637 }
638 BN_mod_mul(&d,&a,&b,&n,ctx);
639 BN_sub(&d,&d,&A);
640 if(!BN_is_zero(&d))
641 {
642 fprintf(stderr,"Montgomery multiplication test failed!\n");
643 return 0;
644 }
485 } 645 }
486 BN_MONT_CTX_free(mont); 646 BN_MONT_CTX_free(mont);
487 BN_free(a); 647 BN_free(&a);
488 BN_free(b); 648 BN_free(&b);
489 BN_free(c); 649 BN_free(&c);
650 BN_free(&d);
651 BN_free(&A);
652 BN_free(&B);
653 BN_free(&n);
490 return(1); 654 return(1);
491 } 655 }
492 656
493int test_mod(bp,ctx) 657int test_mod(BIO *bp, BN_CTX *ctx)
494BIO *bp;
495BN_CTX *ctx;
496 { 658 {
497 BIGNUM *a,*b,*c; 659 BIGNUM *a,*b,*c,*d,*e;
498 int i; 660 int i;
499 int j;
500 661
501 a=BN_new(); 662 a=BN_new();
502 b=BN_new(); 663 b=BN_new();
503 c=BN_new(); 664 c=BN_new();
665 d=BN_new();
666 e=BN_new();
504 667
505 BN_rand(a,1024,0,0); /**/ 668 BN_bntest_rand(a,1024,0,0); /**/
506 for (i=0; i<20; i++) 669 for (i=0; i<num0; i++)
507 { 670 {
508 BN_rand(b,450+i*10,0,0); /**/ 671 BN_bntest_rand(b,450+i*10,0,0); /**/
509 a->neg=rand_neg(); 672 a->neg=rand_neg();
510 b->neg=rand_neg(); 673 b->neg=rand_neg();
511 if (bp == NULL)
512 for (j=0; j<100; j++)
513 BN_mod(c,a,b,ctx);/**/
514 BN_mod(c,a,b,ctx);/**/ 674 BN_mod(c,a,b,ctx);/**/
515 if (bp != NULL) 675 if (bp != NULL)
516 { 676 {
@@ -524,19 +684,26 @@ BN_CTX *ctx;
524 BN_print(bp,c); 684 BN_print(bp,c);
525 BIO_puts(bp,"\n"); 685 BIO_puts(bp,"\n");
526 } 686 }
687 BN_div(d,e,a,b,ctx);
688 BN_sub(e,e,c);
689 if(!BN_is_zero(e))
690 {
691 fprintf(stderr,"Modulo test failed!\n");
692 return 0;
693 }
527 } 694 }
528 BN_free(a); 695 BN_free(a);
529 BN_free(b); 696 BN_free(b);
530 BN_free(c); 697 BN_free(c);
698 BN_free(d);
699 BN_free(e);
531 return(1); 700 return(1);
532 } 701 }
533 702
534int test_mod_mul(bp,ctx) 703int test_mod_mul(BIO *bp, BN_CTX *ctx)
535BIO *bp;
536BN_CTX *ctx;
537 { 704 {
538 BIGNUM *a,*b,*c,*d,*e; 705 BIGNUM *a,*b,*c,*d,*e;
539 int i; 706 int i,j;
540 707
541 a=BN_new(); 708 a=BN_new();
542 b=BN_new(); 709 b=BN_new();
@@ -544,17 +711,14 @@ BN_CTX *ctx;
544 d=BN_new(); 711 d=BN_new();
545 e=BN_new(); 712 e=BN_new();
546 713
547 BN_rand(c,1024,0,0); /**/ 714 for (j=0; j<3; j++) {
548 for (i=0; i<10; i++) 715 BN_bntest_rand(c,1024,0,0); /**/
716 for (i=0; i<num0; i++)
549 { 717 {
550 BN_rand(a,475+i*10,0,0); /**/ 718 BN_bntest_rand(a,475+i*10,0,0); /**/
551 BN_rand(b,425+i*10,0,0); /**/ 719 BN_bntest_rand(b,425+i*11,0,0); /**/
552 a->neg=rand_neg(); 720 a->neg=rand_neg();
553 b->neg=rand_neg(); 721 b->neg=rand_neg();
554 /* if (bp == NULL)
555 for (j=0; j<100; j++)
556 BN_mod_mul(d,a,b,c,ctx);*/ /**/
557
558 if (!BN_mod_mul(e,a,b,c,ctx)) 722 if (!BN_mod_mul(e,a,b,c,ctx))
559 { 723 {
560 unsigned long l; 724 unsigned long l;
@@ -573,12 +737,32 @@ BN_CTX *ctx;
573 BN_print(bp,b); 737 BN_print(bp,b);
574 BIO_puts(bp," % "); 738 BIO_puts(bp," % ");
575 BN_print(bp,c); 739 BN_print(bp,c);
740 if ((a->neg ^ b->neg) && !BN_is_zero(e))
741 {
742 /* If (a*b) % c is negative, c must be added
743 * in order to obtain the normalized remainder
744 * (new with OpenSSL 0.9.7, previous versions of
745 * BN_mod_mul could generate negative results)
746 */
747 BIO_puts(bp," + ");
748 BN_print(bp,c);
749 }
576 BIO_puts(bp," - "); 750 BIO_puts(bp," - ");
577 } 751 }
578 BN_print(bp,e); 752 BN_print(bp,e);
579 BIO_puts(bp,"\n"); 753 BIO_puts(bp,"\n");
580 } 754 }
755 BN_mul(d,a,b,ctx);
756 BN_sub(d,d,e);
757 BN_div(a,b,d,c,ctx);
758 if(!BN_is_zero(b))
759 {
760 fprintf(stderr,"Modulo multiply test failed!\n");
761 ERR_print_errors_fp(stderr);
762 return 0;
763 }
581 } 764 }
765 }
582 BN_free(a); 766 BN_free(a);
583 BN_free(b); 767 BN_free(b);
584 BN_free(c); 768 BN_free(c);
@@ -587,9 +771,7 @@ BN_CTX *ctx;
587 return(1); 771 return(1);
588 } 772 }
589 773
590int test_mod_exp(bp,ctx) 774int test_mod_exp(BIO *bp, BN_CTX *ctx)
591BIO *bp;
592BN_CTX *ctx;
593 { 775 {
594 BIGNUM *a,*b,*c,*d,*e; 776 BIGNUM *a,*b,*c,*d,*e;
595 int i; 777 int i;
@@ -600,11 +782,11 @@ BN_CTX *ctx;
600 d=BN_new(); 782 d=BN_new();
601 e=BN_new(); 783 e=BN_new();
602 784
603 BN_rand(c,30,0,1); /* must be odd for montgomery */ 785 BN_bntest_rand(c,30,0,1); /* must be odd for montgomery */
604 for (i=0; i<6; i++) 786 for (i=0; i<num2; i++)
605 { 787 {
606 BN_rand(a,20+i*5,0,0); /**/ 788 BN_bntest_rand(a,20+i*5,0,0); /**/
607 BN_rand(b,2+i,0,0); /**/ 789 BN_bntest_rand(b,2+i,0,0); /**/
608 790
609 if (!BN_mod_exp(d,a,b,c,ctx)) 791 if (!BN_mod_exp(d,a,b,c,ctx))
610 return(00); 792 return(00);
@@ -623,6 +805,14 @@ BN_CTX *ctx;
623 BN_print(bp,d); 805 BN_print(bp,d);
624 BIO_puts(bp,"\n"); 806 BIO_puts(bp,"\n");
625 } 807 }
808 BN_exp(e,a,b,ctx);
809 BN_sub(e,e,d);
810 BN_div(a,b,e,c,ctx);
811 if(!BN_is_zero(b))
812 {
813 fprintf(stderr,"Modulo exponentiation test failed!\n");
814 return 0;
815 }
626 } 816 }
627 BN_free(a); 817 BN_free(a);
628 BN_free(b); 818 BN_free(b);
@@ -632,20 +822,252 @@ BN_CTX *ctx;
632 return(1); 822 return(1);
633 } 823 }
634 824
635int test_lshift(bp) 825int test_exp(BIO *bp, BN_CTX *ctx)
636BIO *bp;
637 { 826 {
638 BIGNUM *a,*b,*c; 827 BIGNUM *a,*b,*d,*e,*one;
639 int i; 828 int i;
640 829
641 a=BN_new(); 830 a=BN_new();
642 b=BN_new(); 831 b=BN_new();
832 d=BN_new();
833 e=BN_new();
834 one=BN_new();
835 BN_one(one);
836
837 for (i=0; i<num2; i++)
838 {
839 BN_bntest_rand(a,20+i*5,0,0); /**/
840 BN_bntest_rand(b,2+i,0,0); /**/
841
842 if (!BN_exp(d,a,b,ctx))
843 return(00);
844
845 if (bp != NULL)
846 {
847 if (!results)
848 {
849 BN_print(bp,a);
850 BIO_puts(bp," ^ ");
851 BN_print(bp,b);
852 BIO_puts(bp," - ");
853 }
854 BN_print(bp,d);
855 BIO_puts(bp,"\n");
856 }
857 BN_one(e);
858 for( ; !BN_is_zero(b) ; BN_sub(b,b,one))
859 BN_mul(e,e,a,ctx);
860 BN_sub(e,e,d);
861 if(!BN_is_zero(e))
862 {
863 fprintf(stderr,"Exponentiation test failed!\n");
864 return 0;
865 }
866 }
867 BN_free(a);
868 BN_free(b);
869 BN_free(d);
870 BN_free(e);
871 BN_free(one);
872 return(1);
873 }
874
875static void genprime_cb(int p, int n, void *arg)
876 {
877 char c='*';
878
879 if (p == 0) c='.';
880 if (p == 1) c='+';
881 if (p == 2) c='*';
882 if (p == 3) c='\n';
883 putc(c, stderr);
884 fflush(stderr);
885 (void)n;
886 (void)arg;
887 }
888
889int test_kron(BIO *bp, BN_CTX *ctx)
890 {
891 BIGNUM *a,*b,*r,*t;
892 int i;
893 int legendre, kronecker;
894 int ret = 0;
895
896 a = BN_new();
897 b = BN_new();
898 r = BN_new();
899 t = BN_new();
900 if (a == NULL || b == NULL || r == NULL || t == NULL) goto err;
901
902 /* We test BN_kronecker(a, b, ctx) just for b odd (Jacobi symbol).
903 * In this case we know that if b is prime, then BN_kronecker(a, b, ctx)
904 * is congruent to $a^{(b-1)/2}$, modulo $b$ (Legendre symbol).
905 * So we generate a random prime b and compare these values
906 * for a number of random a's. (That is, we run the Solovay-Strassen
907 * primality test to confirm that b is prime, except that we
908 * don't want to test whether b is prime but whether BN_kronecker
909 * works.) */
910
911 if (!BN_generate_prime(b, 512, 0, NULL, NULL, genprime_cb, NULL)) goto err;
912 b->neg = rand_neg();
913 putc('\n', stderr);
914
915 for (i = 0; i < num0; i++)
916 {
917 if (!BN_bntest_rand(a, 512, 0, 0)) goto err;
918 a->neg = rand_neg();
919
920 /* t := (|b|-1)/2 (note that b is odd) */
921 if (!BN_copy(t, b)) goto err;
922 t->neg = 0;
923 if (!BN_sub_word(t, 1)) goto err;
924 if (!BN_rshift1(t, t)) goto err;
925 /* r := a^t mod b */
926 b->neg=0;
927
928 if (!BN_mod_exp_recp(r, a, t, b, ctx)) goto err; /* XXX should be BN_mod_exp_recp, but ..._recp triggers a bug that must be fixed */
929 b->neg=1;
930
931 if (BN_is_word(r, 1))
932 legendre = 1;
933 else if (BN_is_zero(r))
934 legendre = 0;
935 else
936 {
937 if (!BN_add_word(r, 1)) goto err;
938 if (0 != BN_ucmp(r, b))
939 {
940 fprintf(stderr, "Legendre symbol computation failed\n");
941 goto err;
942 }
943 legendre = -1;
944 }
945
946 kronecker = BN_kronecker(a, b, ctx);
947 if (kronecker < -1) goto err;
948 /* we actually need BN_kronecker(a, |b|) */
949 if (a->neg && b->neg)
950 kronecker = -kronecker;
951
952 if (legendre != kronecker)
953 {
954 fprintf(stderr, "legendre != kronecker; a = ");
955 BN_print_fp(stderr, a);
956 fprintf(stderr, ", b = ");
957 BN_print_fp(stderr, b);
958 fprintf(stderr, "\n");
959 goto err;
960 }
961
962 putc('.', stderr);
963 fflush(stderr);
964 }
965
966 putc('\n', stderr);
967 fflush(stderr);
968 ret = 1;
969 err:
970 if (a != NULL) BN_free(a);
971 if (b != NULL) BN_free(b);
972 if (r != NULL) BN_free(r);
973 if (t != NULL) BN_free(t);
974 return ret;
975 }
976
977int test_sqrt(BIO *bp, BN_CTX *ctx)
978 {
979 BIGNUM *a,*p,*r;
980 int i, j;
981 int ret = 0;
982
983 a = BN_new();
984 p = BN_new();
985 r = BN_new();
986 if (a == NULL || p == NULL || r == NULL) goto err;
987
988 for (i = 0; i < 16; i++)
989 {
990 if (i < 8)
991 {
992 unsigned primes[8] = { 2, 3, 5, 7, 11, 13, 17, 19 };
993
994 if (!BN_set_word(p, primes[i])) goto err;
995 }
996 else
997 {
998 if (!BN_set_word(a, 32)) goto err;
999 if (!BN_set_word(r, 2*i + 1)) goto err;
1000
1001 if (!BN_generate_prime(p, 256, 0, a, r, genprime_cb, NULL)) goto err;
1002 putc('\n', stderr);
1003 }
1004 p->neg = rand_neg();
1005
1006 for (j = 0; j < num2; j++)
1007 {
1008 /* construct 'a' such that it is a square modulo p,
1009 * but in general not a proper square and not reduced modulo p */
1010 if (!BN_bntest_rand(r, 256, 0, 3)) goto err;
1011 if (!BN_nnmod(r, r, p, ctx)) goto err;
1012 if (!BN_mod_sqr(r, r, p, ctx)) goto err;
1013 if (!BN_bntest_rand(a, 256, 0, 3)) goto err;
1014 if (!BN_nnmod(a, a, p, ctx)) goto err;
1015 if (!BN_mod_sqr(a, a, p, ctx)) goto err;
1016 if (!BN_mul(a, a, r, ctx)) goto err;
1017 if (rand_neg())
1018 if (!BN_sub(a, a, p)) goto err;
1019
1020 if (!BN_mod_sqrt(r, a, p, ctx)) goto err;
1021 if (!BN_mod_sqr(r, r, p, ctx)) goto err;
1022
1023 if (!BN_nnmod(a, a, p, ctx)) goto err;
1024
1025 if (BN_cmp(a, r) != 0)
1026 {
1027 fprintf(stderr, "BN_mod_sqrt failed: a = ");
1028 BN_print_fp(stderr, a);
1029 fprintf(stderr, ", r = ");
1030 BN_print_fp(stderr, r);
1031 fprintf(stderr, ", p = ");
1032 BN_print_fp(stderr, p);
1033 fprintf(stderr, "\n");
1034 goto err;
1035 }
1036
1037 putc('.', stderr);
1038 fflush(stderr);
1039 }
1040
1041 putc('\n', stderr);
1042 fflush(stderr);
1043 }
1044 ret = 1;
1045 err:
1046 if (a != NULL) BN_free(a);
1047 if (p != NULL) BN_free(p);
1048 if (r != NULL) BN_free(r);
1049 return ret;
1050 }
1051
1052int test_lshift(BIO *bp,BN_CTX *ctx,BIGNUM *a_)
1053 {
1054 BIGNUM *a,*b,*c,*d;
1055 int i;
1056
1057 b=BN_new();
643 c=BN_new(); 1058 c=BN_new();
1059 d=BN_new();
644 BN_one(c); 1060 BN_one(c);
645 1061
646 BN_rand(a,200,0,0); /**/ 1062 if(a_)
647 a->neg=rand_neg(); 1063 a=a_;
648 for (i=0; i<70; i++) 1064 else
1065 {
1066 a=BN_new();
1067 BN_bntest_rand(a,200,0,0); /**/
1068 a->neg=rand_neg();
1069 }
1070 for (i=0; i<num0; i++)
649 { 1071 {
650 BN_lshift(b,a,i+1); 1072 BN_lshift(b,a,i+1);
651 BN_add(c,c,c); 1073 BN_add(c,c,c);
@@ -661,25 +1083,42 @@ BIO *bp;
661 BN_print(bp,b); 1083 BN_print(bp,b);
662 BIO_puts(bp,"\n"); 1084 BIO_puts(bp,"\n");
663 } 1085 }
1086 BN_mul(d,a,c,ctx);
1087 BN_sub(d,d,b);
1088 if(!BN_is_zero(d))
1089 {
1090 fprintf(stderr,"Left shift test failed!\n");
1091 fprintf(stderr,"a=");
1092 BN_print_fp(stderr,a);
1093 fprintf(stderr,"\nb=");
1094 BN_print_fp(stderr,b);
1095 fprintf(stderr,"\nc=");
1096 BN_print_fp(stderr,c);
1097 fprintf(stderr,"\nd=");
1098 BN_print_fp(stderr,d);
1099 fprintf(stderr,"\n");
1100 return 0;
1101 }
664 } 1102 }
665 BN_free(a); 1103 BN_free(a);
666 BN_free(b); 1104 BN_free(b);
667 BN_free(c); 1105 BN_free(c);
1106 BN_free(d);
668 return(1); 1107 return(1);
669 } 1108 }
670 1109
671int test_lshift1(bp) 1110int test_lshift1(BIO *bp)
672BIO *bp;
673 { 1111 {
674 BIGNUM *a,*b; 1112 BIGNUM *a,*b,*c;
675 int i; 1113 int i;
676 1114
677 a=BN_new(); 1115 a=BN_new();
678 b=BN_new(); 1116 b=BN_new();
1117 c=BN_new();
679 1118
680 BN_rand(a,200,0,0); /**/ 1119 BN_bntest_rand(a,200,0,0); /**/
681 a->neg=rand_neg(); 1120 a->neg=rand_neg();
682 for (i=0; i<70; i++) 1121 for (i=0; i<num0; i++)
683 { 1122 {
684 BN_lshift1(b,a); 1123 BN_lshift1(b,a);
685 if (bp != NULL) 1124 if (bp != NULL)
@@ -693,27 +1132,37 @@ BIO *bp;
693 BN_print(bp,b); 1132 BN_print(bp,b);
694 BIO_puts(bp,"\n"); 1133 BIO_puts(bp,"\n");
695 } 1134 }
1135 BN_add(c,a,a);
1136 BN_sub(a,b,c);
1137 if(!BN_is_zero(a))
1138 {
1139 fprintf(stderr,"Left shift one test failed!\n");
1140 return 0;
1141 }
1142
696 BN_copy(a,b); 1143 BN_copy(a,b);
697 } 1144 }
698 BN_free(a); 1145 BN_free(a);
699 BN_free(b); 1146 BN_free(b);
1147 BN_free(c);
700 return(1); 1148 return(1);
701 } 1149 }
702 1150
703int test_rshift(bp) 1151int test_rshift(BIO *bp,BN_CTX *ctx)
704BIO *bp;
705 { 1152 {
706 BIGNUM *a,*b,*c; 1153 BIGNUM *a,*b,*c,*d,*e;
707 int i; 1154 int i;
708 1155
709 a=BN_new(); 1156 a=BN_new();
710 b=BN_new(); 1157 b=BN_new();
711 c=BN_new(); 1158 c=BN_new();
1159 d=BN_new();
1160 e=BN_new();
712 BN_one(c); 1161 BN_one(c);
713 1162
714 BN_rand(a,200,0,0); /**/ 1163 BN_bntest_rand(a,200,0,0); /**/
715 a->neg=rand_neg(); 1164 a->neg=rand_neg();
716 for (i=0; i<70; i++) 1165 for (i=0; i<num0; i++)
717 { 1166 {
718 BN_rshift(b,a,i+1); 1167 BN_rshift(b,a,i+1);
719 BN_add(c,c,c); 1168 BN_add(c,c,c);
@@ -729,25 +1178,34 @@ BIO *bp;
729 BN_print(bp,b); 1178 BN_print(bp,b);
730 BIO_puts(bp,"\n"); 1179 BIO_puts(bp,"\n");
731 } 1180 }
1181 BN_div(d,e,a,c,ctx);
1182 BN_sub(d,d,b);
1183 if(!BN_is_zero(d))
1184 {
1185 fprintf(stderr,"Right shift test failed!\n");
1186 return 0;
1187 }
732 } 1188 }
733 BN_free(a); 1189 BN_free(a);
734 BN_free(b); 1190 BN_free(b);
735 BN_free(c); 1191 BN_free(c);
1192 BN_free(d);
1193 BN_free(e);
736 return(1); 1194 return(1);
737 } 1195 }
738 1196
739int test_rshift1(bp) 1197int test_rshift1(BIO *bp)
740BIO *bp;
741 { 1198 {
742 BIGNUM *a,*b; 1199 BIGNUM *a,*b,*c;
743 int i; 1200 int i;
744 1201
745 a=BN_new(); 1202 a=BN_new();
746 b=BN_new(); 1203 b=BN_new();
1204 c=BN_new();
747 1205
748 BN_rand(a,200,0,0); /**/ 1206 BN_bntest_rand(a,200,0,0); /**/
749 a->neg=rand_neg(); 1207 a->neg=rand_neg();
750 for (i=0; i<70; i++) 1208 for (i=0; i<num0; i++)
751 { 1209 {
752 BN_rshift1(b,a); 1210 BN_rshift1(b,a);
753 if (bp != NULL) 1211 if (bp != NULL)
@@ -761,14 +1219,22 @@ BIO *bp;
761 BN_print(bp,b); 1219 BN_print(bp,b);
762 BIO_puts(bp,"\n"); 1220 BIO_puts(bp,"\n");
763 } 1221 }
1222 BN_sub(c,a,b);
1223 BN_sub(c,c,b);
1224 if(!BN_is_zero(c) && !BN_abs_is_word(c, 1))
1225 {
1226 fprintf(stderr,"Right shift one test failed!\n");
1227 return 0;
1228 }
764 BN_copy(a,b); 1229 BN_copy(a,b);
765 } 1230 }
766 BN_free(a); 1231 BN_free(a);
767 BN_free(b); 1232 BN_free(b);
1233 BN_free(c);
768 return(1); 1234 return(1);
769 } 1235 }
770 1236
771int rand_neg() 1237int rand_neg(void)
772 { 1238 {
773 static unsigned int neg=0; 1239 static unsigned int neg=0;
774 static int sign[8]={0,0,0,1,1,0,1,1}; 1240 static int sign[8]={0,0,0,1,1,0,1,1};
diff --git a/src/lib/libcrypto/bn/exp.c b/src/lib/libcrypto/bn/exp.c
index ec443459d8..4865b0ef74 100644
--- a/src/lib/libcrypto/bn/exp.c
+++ b/src/lib/libcrypto/bn/exp.c
@@ -1,3 +1,5 @@
1/* unused */
2
1#include <stdio.h> 3#include <stdio.h>
2#include <openssl/tmdiff.h> 4#include <openssl/tmdiff.h>
3#include "bn_lcl.h" 5#include "bn_lcl.h"
diff --git a/src/lib/libcrypto/bn/expspeed.c b/src/lib/libcrypto/bn/expspeed.c
index 344f883d35..07a1bcf51c 100644
--- a/src/lib/libcrypto/bn/expspeed.c
+++ b/src/lib/libcrypto/bn/expspeed.c
@@ -1,3 +1,5 @@
1/* unused */
2
1/* crypto/bn/expspeed.c */ 3/* crypto/bn/expspeed.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 4/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 5 * All rights reserved.
@@ -59,6 +61,31 @@
59/* most of this code has been pilfered from my libdes speed.c program */ 61/* most of this code has been pilfered from my libdes speed.c program */
60 62
61#define BASENUM 5000 63#define BASENUM 5000
64#define NUM_START 0
65
66
67/* determine timings for modexp, modmul, modsqr, gcd, Kronecker symbol,
68 * modular inverse, or modular square roots */
69#define TEST_EXP
70#undef TEST_MUL
71#undef TEST_SQR
72#undef TEST_GCD
73#undef TEST_KRON
74#undef TEST_INV
75#undef TEST_SQRT
76#define P_MOD_64 9 /* least significant 6 bits for prime to be used for BN_sqrt timings */
77
78#if defined(TEST_EXP) + defined(TEST_MUL) + defined(TEST_SQR) + defined(TEST_GCD) + defined(TEST_KRON) + defined(TEST_INV) +defined(TEST_SQRT) != 1
79# error "choose one test"
80#endif
81
82#if defined(TEST_INV) || defined(TEST_SQRT)
83# define C_PRIME
84static void genprime_cb(int p, int n, void *arg);
85#endif
86
87
88
62#undef PROG 89#undef PROG
63#define PROG bnspeed_main 90#define PROG bnspeed_main
64 91
@@ -66,14 +93,14 @@
66#include <stdlib.h> 93#include <stdlib.h>
67#include <signal.h> 94#include <signal.h>
68#include <string.h> 95#include <string.h>
69#include "crypto.h" 96#include <openssl/crypto.h>
70#include "err.h" 97#include <openssl/err.h>
98#include <openssl/rand.h>
71 99
72#ifndef MSDOS 100#if !defined(OPENSSL_SYS_MSDOS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC)) && !defined(OPENSSL_SYS_MACOSX)
73#define TIMES 101#define TIMES
74#endif 102#endif
75 103
76#ifndef VMS
77#ifndef _IRIX 104#ifndef _IRIX
78#include <time.h> 105#include <time.h>
79#endif 106#endif
@@ -81,36 +108,33 @@
81#include <sys/types.h> 108#include <sys/types.h>
82#include <sys/times.h> 109#include <sys/times.h>
83#endif 110#endif
84#else /* VMS */ 111
85#include <types.h> 112/* Depending on the VMS version, the tms structure is perhaps defined.
86struct tms { 113 The __TMS macro will show if it was. If it wasn't defined, we should
87 time_t tms_utime; 114 undefine TIMES, since that tells the rest of the program how things
88 time_t tms_stime; 115 should be handled. -- Richard Levitte */
89 time_t tms_uchild; /* I dunno... */ 116#if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS)
90 time_t tms_uchildsys; /* so these names are a guess :-) */ 117#undef TIMES
91 }
92#endif 118#endif
119
93#ifndef TIMES 120#ifndef TIMES
94#include <sys/timeb.h> 121#include <sys/timeb.h>
95#endif 122#endif
96 123
97#ifdef sun 124#if defined(sun) || defined(__ultrix)
125#define _POSIX_SOURCE
98#include <limits.h> 126#include <limits.h>
99#include <sys/param.h> 127#include <sys/param.h>
100#endif 128#endif
101 129
102#include "bn.h" 130#include <openssl/bn.h>
103#include "x509.h" 131#include <openssl/x509.h>
104 132
105/* The following if from times(3) man page. It may need to be changed */ 133/* The following if from times(3) man page. It may need to be changed */
106#ifndef HZ 134#ifndef HZ
107# ifndef CLK_TCK 135# ifndef CLK_TCK
108# ifndef _BSD_CLK_TCK_ /* FreeBSD hack */ 136# ifndef _BSD_CLK_TCK_ /* FreeBSD hack */
109# ifndef VMS 137# define HZ 100.0
110# define HZ 100.0
111# else /* VMS */
112# define HZ 100.0
113# endif
114# else /* _BSD_CLK_TCK_ */ 138# else /* _BSD_CLK_TCK_ */
115# define HZ ((double)_BSD_CLK_TCK_) 139# define HZ ((double)_BSD_CLK_TCK_)
116# endif 140# endif
@@ -123,17 +147,11 @@ struct tms {
123#define BUFSIZE ((long)1024*8) 147#define BUFSIZE ((long)1024*8)
124int run=0; 148int run=0;
125 149
126#ifndef NOPROTO
127static double Time_F(int s); 150static double Time_F(int s);
128#else
129static double Time_F();
130#endif
131
132#define START 0 151#define START 0
133#define STOP 1 152#define STOP 1
134 153
135static double Time_F(s) 154static double Time_F(int s)
136int s;
137 { 155 {
138 double ret; 156 double ret;
139#ifdef TIMES 157#ifdef TIMES
@@ -169,62 +187,167 @@ int s;
169#endif 187#endif
170 } 188 }
171 189
172#define NUM_SIZES 6 190#define NUM_SIZES 7
173static int sizes[NUM_SIZES]={256,512,1024,2048,4096,8192}; 191#if NUM_START > NUM_SIZES
174static int mul_c[NUM_SIZES]={8*8*8*8*8,8*8*8*8,8*8*8,8*8,8,1}; 192# error "NUM_START > NUM_SIZES"
193#endif
194static int sizes[NUM_SIZES]={128,256,512,1024,2048,4096,8192};
195static int mul_c[NUM_SIZES]={8*8*8*8*8*8,8*8*8*8*8,8*8*8*8,8*8*8,8*8,8,1};
175/*static int sizes[NUM_SIZES]={59,179,299,419,539}; */ 196/*static int sizes[NUM_SIZES]={59,179,299,419,539}; */
176 197
198#define RAND_SEED(string) { const char str[] = string; RAND_seed(string, sizeof str); }
199
177void do_mul_exp(BIGNUM *r,BIGNUM *a,BIGNUM *b,BIGNUM *c,BN_CTX *ctx); 200void do_mul_exp(BIGNUM *r,BIGNUM *a,BIGNUM *b,BIGNUM *c,BN_CTX *ctx);
178 201
179int main(argc,argv) 202int main(int argc, char **argv)
180int argc;
181char **argv;
182 { 203 {
183 BN_CTX *ctx; 204 BN_CTX *ctx;
184 BIGNUM *a,*b,*c,*r; 205 BIGNUM *a,*b,*c,*r;
185 206
207#if 1
208 if (!CRYPTO_set_mem_debug_functions(0,0,0,0,0))
209 abort();
210#endif
211
186 ctx=BN_CTX_new(); 212 ctx=BN_CTX_new();
187 a=BN_new(); 213 a=BN_new();
188 b=BN_new(); 214 b=BN_new();
189 c=BN_new(); 215 c=BN_new();
190 r=BN_new(); 216 r=BN_new();
191 217
218 while (!RAND_status())
219 /* not enough bits */
220 RAND_SEED("I demand a manual recount!");
221
192 do_mul_exp(r,a,b,c,ctx); 222 do_mul_exp(r,a,b,c,ctx);
223 return 0;
193 } 224 }
194 225
195void do_mul_exp(r,a,b,c,ctx) 226void do_mul_exp(BIGNUM *r, BIGNUM *a, BIGNUM *b, BIGNUM *c, BN_CTX *ctx)
196BIGNUM *r;
197BIGNUM *a;
198BIGNUM *b;
199BIGNUM *c;
200BN_CTX *ctx;
201 { 227 {
202 int i,k; 228 int i,k;
203 double tm; 229 double tm;
204 long num; 230 long num;
205 BN_MONT_CTX m;
206
207 memset(&m,0,sizeof(m));
208 231
209 num=BASENUM; 232 num=BASENUM;
210 for (i=0; i<NUM_SIZES; i++) 233 for (i=NUM_START; i<NUM_SIZES; i++)
211 { 234 {
212 BN_rand(a,sizes[i],1,0); 235#ifdef C_PRIME
213 BN_rand(b,sizes[i],1,0); 236# ifdef TEST_SQRT
214 BN_rand(c,sizes[i],1,1); 237 if (!BN_set_word(a, 64)) goto err;
215 BN_mod(a,a,c,ctx); 238 if (!BN_set_word(b, P_MOD_64)) goto err;
216 BN_mod(b,b,c,ctx); 239# define ADD a
217 240# define REM b
218 BN_MONT_CTX_set(&m,c,ctx); 241# else
242# define ADD NULL
243# define REM NULL
244# endif
245 if (!BN_generate_prime(c,sizes[i],0,ADD,REM,genprime_cb,NULL)) goto err;
246 putc('\n', stderr);
247 fflush(stderr);
248#endif
219 249
220 Time_F(START);
221 for (k=0; k<num; k++) 250 for (k=0; k<num; k++)
222 BN_mod_exp_mont(r,a,b,c,ctx,&m); 251 {
252 if (k%50 == 0) /* Average over num/50 different choices of random numbers. */
253 {
254 if (!BN_pseudo_rand(a,sizes[i],1,0)) goto err;
255
256 if (!BN_pseudo_rand(b,sizes[i],1,0)) goto err;
257
258#ifndef C_PRIME
259 if (!BN_pseudo_rand(c,sizes[i],1,1)) goto err;
260#endif
261
262#ifdef TEST_SQRT
263 if (!BN_mod_sqr(a,a,c,ctx)) goto err;
264 if (!BN_mod_sqr(b,b,c,ctx)) goto err;
265#else
266 if (!BN_nnmod(a,a,c,ctx)) goto err;
267 if (!BN_nnmod(b,b,c,ctx)) goto err;
268#endif
269
270 if (k == 0)
271 Time_F(START);
272 }
273
274#if defined(TEST_EXP)
275 if (!BN_mod_exp(r,a,b,c,ctx)) goto err;
276#elif defined(TEST_MUL)
277 {
278 int i = 0;
279 for (i = 0; i < 50; i++)
280 if (!BN_mod_mul(r,a,b,c,ctx)) goto err;
281 }
282#elif defined(TEST_SQR)
283 {
284 int i = 0;
285 for (i = 0; i < 50; i++)
286 {
287 if (!BN_mod_sqr(r,a,c,ctx)) goto err;
288 if (!BN_mod_sqr(r,b,c,ctx)) goto err;
289 }
290 }
291#elif defined(TEST_GCD)
292 if (!BN_gcd(r,a,b,ctx)) goto err;
293 if (!BN_gcd(r,b,c,ctx)) goto err;
294 if (!BN_gcd(r,c,a,ctx)) goto err;
295#elif defined(TEST_KRON)
296 if (-2 == BN_kronecker(a,b,ctx)) goto err;
297 if (-2 == BN_kronecker(b,c,ctx)) goto err;
298 if (-2 == BN_kronecker(c,a,ctx)) goto err;
299#elif defined(TEST_INV)
300 if (!BN_mod_inverse(r,a,c,ctx)) goto err;
301 if (!BN_mod_inverse(r,b,c,ctx)) goto err;
302#else /* TEST_SQRT */
303 if (!BN_mod_sqrt(r,a,c,ctx)) goto err;
304 if (!BN_mod_sqrt(r,b,c,ctx)) goto err;
305#endif
306 }
223 tm=Time_F(STOP); 307 tm=Time_F(STOP);
224 printf("mul %4d ^ %4d %% %d -> %8.3fms %5.1f\n",sizes[i],sizes[i],sizes[i],tm*1000.0/num,tm*mul_c[i]/num); 308 printf(
309#if defined(TEST_EXP)
310 "modexp %4d ^ %4d %% %4d"
311#elif defined(TEST_MUL)
312 "50*modmul %4d %4d %4d"
313#elif defined(TEST_SQR)
314 "100*modsqr %4d %4d %4d"
315#elif defined(TEST_GCD)
316 "3*gcd %4d %4d %4d"
317#elif defined(TEST_KRON)
318 "3*kronecker %4d %4d %4d"
319#elif defined(TEST_INV)
320 "2*inv %4d %4d mod %4d"
321#else /* TEST_SQRT */
322 "2*sqrt [prime == %d (mod 64)] %4d %4d mod %4d"
323#endif
324 " -> %8.3fms %5.1f (%ld)\n",
325#ifdef TEST_SQRT
326 P_MOD_64,
327#endif
328 sizes[i],sizes[i],sizes[i],tm*1000.0/num,tm*mul_c[i]/num, num);
225 num/=7; 329 num/=7;
226 if (num <= 0) num=1; 330 if (num <= 0) num=1;
227 } 331 }
332 return;
228 333
334 err:
335 ERR_print_errors_fp(stderr);
229 } 336 }
230 337
338
339#ifdef C_PRIME
340static void genprime_cb(int p, int n, void *arg)
341 {
342 char c='*';
343
344 if (p == 0) c='.';
345 if (p == 1) c='+';
346 if (p == 2) c='*';
347 if (p == 3) c='\n';
348 putc(c, stderr);
349 fflush(stderr);
350 (void)n;
351 (void)arg;
352 }
353#endif
diff --git a/src/lib/libcrypto/bn/exptest.c b/src/lib/libcrypto/bn/exptest.c
index 67dc95d726..5ca570d1a8 100644
--- a/src/lib/libcrypto/bn/exptest.c
+++ b/src/lib/libcrypto/bn/exptest.c
@@ -59,30 +59,37 @@
59#include <stdio.h> 59#include <stdio.h>
60#include <stdlib.h> 60#include <stdlib.h>
61#include <string.h> 61#include <string.h>
62#include "bio.h" 62#include <openssl/bio.h>
63#include "bn.h" 63#include <openssl/bn.h>
64#include "rand.h" 64#include <openssl/rand.h>
65#include "err.h" 65#include <openssl/err.h>
66#ifdef WINDOWS 66#ifdef OPENSSL_SYS_WINDOWS
67#include "../bio/bss_file.c" 67#include "../bio/bss_file.c"
68#endif 68#endif
69 69
70#define NUM_BITS (BN_BITS*2) 70#define NUM_BITS (BN_BITS*2)
71 71
72int main(argc,argv) 72static const char rnd_seed[] = "string to make the random number generator think it has entropy";
73int argc; 73
74char *argv[]; 74int main(int argc, char *argv[])
75 { 75 {
76 BN_CTX *ctx; 76 BN_CTX *ctx;
77 BIO *out=NULL; 77 BIO *out=NULL;
78 int i,ret; 78 int i,ret;
79 unsigned char c; 79 unsigned char c;
80 BIGNUM *r_mont,*r_recp,*a,*b,*m; 80 BIGNUM *r_mont,*r_recp,*r_simple,*a,*b,*m;
81
82 RAND_seed(rnd_seed, sizeof rnd_seed); /* or BN_rand may fail, and we don't
83 * even check its return value
84 * (which we should) */
85
86 ERR_load_BN_strings();
81 87
82 ctx=BN_CTX_new(); 88 ctx=BN_CTX_new();
83 if (ctx == NULL) exit(1); 89 if (ctx == NULL) exit(1);
84 r_mont=BN_new(); 90 r_mont=BN_new();
85 r_recp=BN_new(); 91 r_recp=BN_new();
92 r_simple=BN_new();
86 a=BN_new(); 93 a=BN_new();
87 b=BN_new(); 94 b=BN_new();
88 m=BN_new(); 95 m=BN_new();
@@ -114,29 +121,61 @@ char *argv[];
114 121
115 ret=BN_mod_exp_mont(r_mont,a,b,m,ctx,NULL); 122 ret=BN_mod_exp_mont(r_mont,a,b,m,ctx,NULL);
116 if (ret <= 0) 123 if (ret <= 0)
117 { printf("BN_mod_exp_mont() problems\n"); exit(1); } 124 {
125 printf("BN_mod_exp_mont() problems\n");
126 ERR_print_errors(out);
127 exit(1);
128 }
118 129
119 ret=BN_mod_exp_recp(r_recp,a,b,m,ctx); 130 ret=BN_mod_exp_recp(r_recp,a,b,m,ctx);
120 if (ret <= 0) 131 if (ret <= 0)
121 { printf("BN_mod_exp_recp() problems\n"); exit(1); }
122
123 if (BN_cmp(r_mont,r_recp) != 0)
124 { 132 {
125 printf("\nmont and recp results differ\n"); 133 printf("BN_mod_exp_recp() problems\n");
134 ERR_print_errors(out);
135 exit(1);
136 }
137
138 ret=BN_mod_exp_simple(r_simple,a,b,m,ctx);
139 if (ret <= 0)
140 {
141 printf("BN_mod_exp_simple() problems\n");
142 ERR_print_errors(out);
143 exit(1);
144 }
145
146 if (BN_cmp(r_simple, r_mont) == 0
147 && BN_cmp(r_simple,r_recp) == 0)
148 {
149 printf(".");
150 fflush(stdout);
151 }
152 else
153 {
154 if (BN_cmp(r_simple,r_mont) != 0)
155 printf("\nsimple and mont results differ\n");
156 if (BN_cmp(r_simple,r_recp) != 0)
157 printf("\nsimple and recp results differ\n");
158
126 printf("a (%3d) = ",BN_num_bits(a)); BN_print(out,a); 159 printf("a (%3d) = ",BN_num_bits(a)); BN_print(out,a);
127 printf("\nb (%3d) = ",BN_num_bits(b)); BN_print(out,b); 160 printf("\nb (%3d) = ",BN_num_bits(b)); BN_print(out,b);
128 printf("\nm (%3d) = ",BN_num_bits(m)); BN_print(out,m); 161 printf("\nm (%3d) = ",BN_num_bits(m)); BN_print(out,m);
162 printf("\nsimple ="); BN_print(out,r_simple);
129 printf("\nrecp ="); BN_print(out,r_recp); 163 printf("\nrecp ="); BN_print(out,r_recp);
130 printf("\nmont ="); BN_print(out,r_mont); 164 printf("\nmont ="); BN_print(out,r_mont);
131 printf("\n"); 165 printf("\n");
132 exit(1); 166 exit(1);
133 } 167 }
134 else
135 {
136 printf(".");
137 fflush(stdout);
138 }
139 } 168 }
169 BN_free(r_mont);
170 BN_free(r_recp);
171 BN_free(r_simple);
172 BN_free(a);
173 BN_free(b);
174 BN_free(m);
175 BN_CTX_free(ctx);
176 ERR_remove_state(0);
177 CRYPTO_mem_leaks(out);
178 BIO_free(out);
140 printf(" done\n"); 179 printf(" done\n");
141 exit(0); 180 exit(0);
142err: 181err:
diff --git a/src/lib/libcrypto/bn/vms-helper.c b/src/lib/libcrypto/bn/vms-helper.c
index 73af337069..4b63149bf3 100644
--- a/src/lib/libcrypto/bn/vms-helper.c
+++ b/src/lib/libcrypto/bn/vms-helper.c
@@ -59,8 +59,10 @@
59 59
60bn_div_words_abort(int i) 60bn_div_words_abort(int i)
61{ 61{
62#if !defined(NO_STDIO) && !defined(WIN16) 62#ifdef BN_DEBUG
63#if !defined(OPENSSL_NO_STDIO) && !defined(OPENSSL_SYS_WIN16)
63 fprintf(stderr,"Division would overflow (%d)\n",i); 64 fprintf(stderr,"Division would overflow (%d)\n",i);
64#endif 65#endif
65 abort(); 66 abort();
67#endif
66} 68}
diff --git a/src/lib/libcrypto/cast/cast_spd.c b/src/lib/libcrypto/cast/cast_spd.c
index ab75e65386..76abf50d98 100644
--- a/src/lib/libcrypto/cast/cast_spd.c
+++ b/src/lib/libcrypto/cast/cast_spd.c
@@ -59,19 +59,17 @@
59/* 11-Sep-92 Andrew Daviel Support for Silicon Graphics IRIX added */ 59/* 11-Sep-92 Andrew Daviel Support for Silicon Graphics IRIX added */
60/* 06-Apr-92 Luke Brennan Support for VMS and add extra signal calls */ 60/* 06-Apr-92 Luke Brennan Support for VMS and add extra signal calls */
61 61
62#ifndef MSDOS 62#if !defined(OPENSSL_SYS_MSDOS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC)) && !defined(OPENSSL_SYS_MACOSX)
63#define TIMES 63#define TIMES
64#endif 64#endif
65 65
66#include <stdio.h> 66#include <stdio.h>
67#ifndef MSDOS 67
68#include <unistd.h> 68#include <openssl/e_os2.h>
69#else 69#include OPENSSL_UNISTD_IO
70#include <io.h> 70OPENSSL_DECLARE_EXIT
71extern int exit(); 71
72#endif
73#include <signal.h> 72#include <signal.h>
74#ifndef VMS
75#ifndef _IRIX 73#ifndef _IRIX
76#include <time.h> 74#include <time.h>
77#endif 75#endif
@@ -79,34 +77,31 @@ extern int exit();
79#include <sys/types.h> 77#include <sys/types.h>
80#include <sys/times.h> 78#include <sys/times.h>
81#endif 79#endif
82#else /* VMS */ 80
83#include <types.h> 81/* Depending on the VMS version, the tms structure is perhaps defined.
84struct tms { 82 The __TMS macro will show if it was. If it wasn't defined, we should
85 time_t tms_utime; 83 undefine TIMES, since that tells the rest of the program how things
86 time_t tms_stime; 84 should be handled. -- Richard Levitte */
87 time_t tms_uchild; /* I dunno... */ 85#if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS)
88 time_t tms_uchildsys; /* so these names are a guess :-) */ 86#undef TIMES
89 }
90#endif 87#endif
88
91#ifndef TIMES 89#ifndef TIMES
92#include <sys/timeb.h> 90#include <sys/timeb.h>
93#endif 91#endif
94 92
95#ifdef sun 93#if defined(sun) || defined(__ultrix)
94#define _POSIX_SOURCE
96#include <limits.h> 95#include <limits.h>
97#include <sys/param.h> 96#include <sys/param.h>
98#endif 97#endif
99 98
100#include "cast.h" 99#include <openssl/cast.h>
101 100
102/* The following if from times(3) man page. It may need to be changed */ 101/* The following if from times(3) man page. It may need to be changed */
103#ifndef HZ 102#ifndef HZ
104#ifndef CLK_TCK 103#ifndef CLK_TCK
105#ifndef VMS
106#define HZ 100.0
107#else /* VMS */
108#define HZ 100.0 104#define HZ 100.0
109#endif
110#else /* CLK_TCK */ 105#else /* CLK_TCK */
111#define HZ ((double)CLK_TCK) 106#define HZ ((double)CLK_TCK)
112#endif 107#endif
@@ -115,12 +110,7 @@ struct tms {
115#define BUFSIZE ((long)1024) 110#define BUFSIZE ((long)1024)
116long run=0; 111long run=0;
117 112
118#ifndef NOPROTO
119double Time_F(int s); 113double Time_F(int s);
120#else
121double Time_F();
122#endif
123
124#ifdef SIGALRM 114#ifdef SIGALRM
125#if defined(__STDC__) || defined(sgi) || defined(_AIX) 115#if defined(__STDC__) || defined(sgi) || defined(_AIX)
126#define SIGRETTYPE void 116#define SIGRETTYPE void
@@ -128,14 +118,8 @@ double Time_F();
128#define SIGRETTYPE int 118#define SIGRETTYPE int
129#endif 119#endif
130 120
131#ifndef NOPROTO
132SIGRETTYPE sig_done(int sig); 121SIGRETTYPE sig_done(int sig);
133#else 122SIGRETTYPE sig_done(int sig)
134SIGRETTYPE sig_done();
135#endif
136
137SIGRETTYPE sig_done(sig)
138int sig;
139 { 123 {
140 signal(SIGALRM,sig_done); 124 signal(SIGALRM,sig_done);
141 run=0; 125 run=0;
@@ -148,8 +132,7 @@ int sig;
148#define START 0 132#define START 0
149#define STOP 1 133#define STOP 1
150 134
151double Time_F(s) 135double Time_F(int s)
152int s;
153 { 136 {
154 double ret; 137 double ret;
155#ifdef TIMES 138#ifdef TIMES
@@ -185,9 +168,7 @@ int s;
185#endif 168#endif
186 } 169 }
187 170
188int main(argc,argv) 171int main(int argc, char **argv)
189int argc;
190char **argv;
191 { 172 {
192 long count; 173 long count;
193 static unsigned char buf[BUFSIZE]; 174 static unsigned char buf[BUFSIZE];
@@ -202,7 +183,7 @@ char **argv;
202#endif 183#endif
203 184
204#ifndef TIMES 185#ifndef TIMES
205 printf("To get the most acurate results, try to run this\n"); 186 printf("To get the most accurate results, try to run this\n");
206 printf("program when this computer is idle.\n"); 187 printf("program when this computer is idle.\n");
207#endif 188#endif
208 189
@@ -287,7 +268,7 @@ char **argv;
287 printf("CAST raw ecb bytes per sec = %12.2f (%9.3fuS)\n",b,8.0e6/b); 268 printf("CAST raw ecb bytes per sec = %12.2f (%9.3fuS)\n",b,8.0e6/b);
288 printf("CAST cbc bytes per sec = %12.2f (%9.3fuS)\n",c,8.0e6/c); 269 printf("CAST cbc bytes per sec = %12.2f (%9.3fuS)\n",c,8.0e6/c);
289 exit(0); 270 exit(0);
290#if defined(LINT) || defined(MSDOS) 271#if defined(LINT) || defined(OPENSSL_SYS_MSDOS)
291 return(0); 272 return(0);
292#endif 273#endif
293 } 274 }
diff --git a/src/lib/libcrypto/cast/castopts.c b/src/lib/libcrypto/cast/castopts.c
index 68cf5a4a60..1b858d153b 100644
--- a/src/lib/libcrypto/cast/castopts.c
+++ b/src/lib/libcrypto/cast/castopts.c
@@ -59,19 +59,17 @@
59/* define PART1, PART2, PART3 or PART4 to build only with a few of the options. 59/* define PART1, PART2, PART3 or PART4 to build only with a few of the options.
60 * This is for machines with 64k code segment size restrictions. */ 60 * This is for machines with 64k code segment size restrictions. */
61 61
62#ifndef MSDOS 62#if !defined(OPENSSL_SYS_MSDOS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC))
63#define TIMES 63#define TIMES
64#endif 64#endif
65 65
66#include <stdio.h> 66#include <stdio.h>
67#ifndef MSDOS 67
68#include <unistd.h> 68#include <openssl/e_os2.h>
69#else 69#include OPENSSL_UNISTD_IO
70#include <io.h> 70OPENSSL_DECLARE_EXIT
71extern void exit(); 71
72#endif
73#include <signal.h> 72#include <signal.h>
74#ifndef VMS
75#ifndef _IRIX 73#ifndef _IRIX
76#include <time.h> 74#include <time.h>
77#endif 75#endif
@@ -79,25 +77,26 @@ extern void exit();
79#include <sys/types.h> 77#include <sys/types.h>
80#include <sys/times.h> 78#include <sys/times.h>
81#endif 79#endif
82#else /* VMS */ 80
83#include <types.h> 81/* Depending on the VMS version, the tms structure is perhaps defined.
84struct tms { 82 The __TMS macro will show if it was. If it wasn't defined, we should
85 time_t tms_utime; 83 undefine TIMES, since that tells the rest of the program how things
86 time_t tms_stime; 84 should be handled. -- Richard Levitte */
87 time_t tms_uchild; /* I dunno... */ 85#if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS)
88 time_t tms_uchildsys; /* so these names are a guess :-) */ 86#undef TIMES
89 }
90#endif 87#endif
88
91#ifndef TIMES 89#ifndef TIMES
92#include <sys/timeb.h> 90#include <sys/timeb.h>
93#endif 91#endif
94 92
95#ifdef sun 93#if defined(sun) || defined(__ultrix)
94#define _POSIX_SOURCE
96#include <limits.h> 95#include <limits.h>
97#include <sys/param.h> 96#include <sys/param.h>
98#endif 97#endif
99 98
100#include "cast.h" 99#include <openssl/cast.h>
101 100
102#define CAST_DEFAULT_OPTIONS 101#define CAST_DEFAULT_OPTIONS
103 102
@@ -136,11 +135,7 @@ struct tms {
136#ifndef HZ 135#ifndef HZ
137# ifndef CLK_TCK 136# ifndef CLK_TCK
138# ifndef _BSD_CLK_TCK_ /* FreeBSD fix */ 137# ifndef _BSD_CLK_TCK_ /* FreeBSD fix */
139# ifndef VMS 138# define HZ 100.0
140# define HZ 100.0
141# else /* VMS */
142# define HZ 100.0
143# endif
144# else /* _BSD_CLK_TCK_ */ 139# else /* _BSD_CLK_TCK_ */
145# define HZ ((double)_BSD_CLK_TCK_) 140# define HZ ((double)_BSD_CLK_TCK_)
146# endif 141# endif
@@ -152,12 +147,7 @@ struct tms {
152#define BUFSIZE ((long)1024) 147#define BUFSIZE ((long)1024)
153long run=0; 148long run=0;
154 149
155#ifndef NOPROTO
156double Time_F(int s); 150double Time_F(int s);
157#else
158double Time_F();
159#endif
160
161#ifdef SIGALRM 151#ifdef SIGALRM
162#if defined(__STDC__) || defined(sgi) 152#if defined(__STDC__) || defined(sgi)
163#define SIGRETTYPE void 153#define SIGRETTYPE void
@@ -165,14 +155,8 @@ double Time_F();
165#define SIGRETTYPE int 155#define SIGRETTYPE int
166#endif 156#endif
167 157
168#ifndef NOPROTO
169SIGRETTYPE sig_done(int sig); 158SIGRETTYPE sig_done(int sig);
170#else 159SIGRETTYPE sig_done(int sig)
171SIGRETTYPE sig_done();
172#endif
173
174SIGRETTYPE sig_done(sig)
175int sig;
176 { 160 {
177 signal(SIGALRM,sig_done); 161 signal(SIGALRM,sig_done);
178 run=0; 162 run=0;
@@ -185,8 +169,7 @@ int sig;
185#define START 0 169#define START 0
186#define STOP 1 170#define STOP 1
187 171
188double Time_F(s) 172double Time_F(int s)
189int s;
190 { 173 {
191 double ret; 174 double ret;
192#ifdef TIMES 175#ifdef TIMES
@@ -247,9 +230,7 @@ int s;
247 fprintf(stderr,"%s bytes per sec = %12.2f (%5.1fuS)\n",name, \ 230 fprintf(stderr,"%s bytes per sec = %12.2f (%5.1fuS)\n",name, \
248 tm[index]*8,1.0e6/tm[index]); 231 tm[index]*8,1.0e6/tm[index]);
249 232
250int main(argc,argv) 233int main(int argc, char **argv)
251int argc;
252char **argv;
253 { 234 {
254 long count; 235 long count;
255 static unsigned char buf[BUFSIZE]; 236 static unsigned char buf[BUFSIZE];
@@ -271,7 +252,7 @@ char **argv;
271 } 252 }
272 253
273#ifndef TIMES 254#ifndef TIMES
274 fprintf(stderr,"To get the most acurate results, try to run this\n"); 255 fprintf(stderr,"To get the most accurate results, try to run this\n");
275 fprintf(stderr,"program when this computer is idle.\n"); 256 fprintf(stderr,"program when this computer is idle.\n");
276#endif 257#endif
277 258
@@ -351,7 +332,7 @@ char **argv;
351 break; 332 break;
352 } 333 }
353 exit(0); 334 exit(0);
354#if defined(LINT) || defined(MSDOS) 335#if defined(LINT) || defined(OPENSSL_SYS_MSDOS)
355 return(0); 336 return(0);
356#endif 337#endif
357 } 338 }
diff --git a/src/lib/libcrypto/cast/casts.cpp b/src/lib/libcrypto/cast/casts.cpp
index bac7be2c9c..8d7bd468d2 100644
--- a/src/lib/libcrypto/cast/casts.cpp
+++ b/src/lib/libcrypto/cast/casts.cpp
@@ -32,7 +32,7 @@ void GetTSC(unsigned long& tsc)
32 32
33#include <stdio.h> 33#include <stdio.h>
34#include <stdlib.h> 34#include <stdlib.h>
35#include "cast.h" 35#include <openssl/cast.h>
36 36
37void main(int argc,char *argv[]) 37void main(int argc,char *argv[])
38 { 38 {
diff --git a/src/lib/libcrypto/cast/casttest.c b/src/lib/libcrypto/cast/casttest.c
index 8b009bc249..099e790886 100644
--- a/src/lib/libcrypto/cast/casttest.c
+++ b/src/lib/libcrypto/cast/casttest.c
@@ -59,36 +59,44 @@
59#include <stdio.h> 59#include <stdio.h>
60#include <string.h> 60#include <string.h>
61#include <stdlib.h> 61#include <stdlib.h>
62#include "cast.h"
63 62
64/* #define FULL_TEST */ 63#ifdef OPENSSL_NO_CAST
64int main(int argc, char *argv[])
65{
66 printf("No CAST support\n");
67 return(0);
68}
69#else
70#include <openssl/cast.h>
65 71
66unsigned char k[16]={ 72#define FULL_TEST
73
74static unsigned char k[16]={
67 0x01,0x23,0x45,0x67,0x12,0x34,0x56,0x78, 75 0x01,0x23,0x45,0x67,0x12,0x34,0x56,0x78,
68 0x23,0x45,0x67,0x89,0x34,0x56,0x78,0x9A 76 0x23,0x45,0x67,0x89,0x34,0x56,0x78,0x9A
69 }; 77 };
70 78
71unsigned char in[8]={ 0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF}; 79static unsigned char in[8]={ 0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF};
72 80
73int k_len[3]={16,10}; 81static int k_len[3]={16,10,5};
74unsigned char c[3][8]={ 82static unsigned char c[3][8]={
75 {0x23,0x8B,0x4F,0xE5,0x84,0x7E,0x44,0xB2}, 83 {0x23,0x8B,0x4F,0xE5,0x84,0x7E,0x44,0xB2},
76 {0xEB,0x6A,0x71,0x1A,0x2C,0x02,0x27,0x1B}, 84 {0xEB,0x6A,0x71,0x1A,0x2C,0x02,0x27,0x1B},
77 {0x7A,0xC8,0x16,0xD1,0x6E,0x9B,0x30,0x2E}, 85 {0x7A,0xC8,0x16,0xD1,0x6E,0x9B,0x30,0x2E},
78 }; 86 };
79unsigned char out[80]; 87static unsigned char out[80];
80 88
81unsigned char in_a[16]={ 89static unsigned char in_a[16]={
82 0x01,0x23,0x45,0x67,0x12,0x34,0x56,0x78, 90 0x01,0x23,0x45,0x67,0x12,0x34,0x56,0x78,
83 0x23,0x45,0x67,0x89,0x34,0x56,0x78,0x9A}; 91 0x23,0x45,0x67,0x89,0x34,0x56,0x78,0x9A};
84unsigned char in_b[16]={ 92static unsigned char in_b[16]={
85 0x01,0x23,0x45,0x67,0x12,0x34,0x56,0x78, 93 0x01,0x23,0x45,0x67,0x12,0x34,0x56,0x78,
86 0x23,0x45,0x67,0x89,0x34,0x56,0x78,0x9A}; 94 0x23,0x45,0x67,0x89,0x34,0x56,0x78,0x9A};
87 95
88unsigned char c_a[16]={ 96static unsigned char c_a[16]={
89 0xEE,0xA9,0xD0,0xA2,0x49,0xFD,0x3B,0xA6, 97 0xEE,0xA9,0xD0,0xA2,0x49,0xFD,0x3B,0xA6,
90 0xB3,0x43,0x6F,0xB8,0x9D,0x6D,0xCA,0x92}; 98 0xB3,0x43,0x6F,0xB8,0x9D,0x6D,0xCA,0x92};
91unsigned char c_b[16]={ 99static unsigned char c_b[16]={
92 0xB2,0xC9,0x5E,0xB0,0x0C,0x31,0xAD,0x71, 100 0xB2,0xC9,0x5E,0xB0,0x0C,0x31,0xAD,0x71,
93 0x80,0xAC,0x05,0xB8,0xE8,0x3D,0x69,0x6E}; 101 0x80,0xAC,0x05,0xB8,0xE8,0x3D,0x69,0x6E};
94 102
@@ -120,104 +128,103 @@ static unsigned char cfb_cipher64[CFB_TEST_SIZE]={
120 }; 128 };
121#endif 129#endif
122 130
123int main(argc,argv) 131int main(int argc, char *argv[])
124int argc; 132 {
125char *argv[];
126 {
127#ifdef FULL_TEST 133#ifdef FULL_TEST
128 long l; 134 long l;
129 CAST_KEY key_b; 135 CAST_KEY key_b;
130#endif 136#endif
131 int i,z,err=0; 137 int i,z,err=0;
132 CAST_KEY key; 138 CAST_KEY key;
133 139
134 for (z=0; z<1; z++) 140 for (z=0; z<3; z++)
135 { 141 {
136 CAST_set_key(&key,k_len[z],k); 142 CAST_set_key(&key,k_len[z],k);
137 143
138 CAST_ecb_encrypt(in,out,&key,CAST_ENCRYPT); 144 CAST_ecb_encrypt(in,out,&key,CAST_ENCRYPT);
139 if (memcmp(out,&(c[z][0]),8) != 0) 145 if (memcmp(out,&(c[z][0]),8) != 0)
140 { 146 {
141 printf("ecb cast error encrypting\n"); 147 printf("ecb cast error encrypting for keysize %d\n",k_len[z]*8);
142 printf("got :"); 148 printf("got :");
143 for (i=0; i<8; i++) 149 for (i=0; i<8; i++)
144 printf("%02X ",out[i]); 150 printf("%02X ",out[i]);
145 printf("\n"); 151 printf("\n");
146 printf("expected:"); 152 printf("expected:");
147 for (i=0; i<8; i++) 153 for (i=0; i<8; i++)
148 printf("%02X ",c[z][i]); 154 printf("%02X ",c[z][i]);
149 err=20; 155 err=20;
150 printf("\n"); 156 printf("\n");
151 } 157 }
152 158
153 CAST_ecb_encrypt(out,out,&key,CAST_DECRYPT); 159 CAST_ecb_encrypt(out,out,&key,CAST_DECRYPT);
154 if (memcmp(out,in,8) != 0) 160 if (memcmp(out,in,8) != 0)
155 { 161 {
156 printf("ecb cast error decrypting\n"); 162 printf("ecb cast error decrypting for keysize %d\n",k_len[z]*8);
157 printf("got :"); 163 printf("got :");
158 for (i=0; i<8; i++) 164 for (i=0; i<8; i++)
159 printf("%02X ",out[i]); 165 printf("%02X ",out[i]);
160 printf("\n"); 166 printf("\n");
161 printf("expected:"); 167 printf("expected:");
162 for (i=0; i<8; i++) 168 for (i=0; i<8; i++)
163 printf("%02X ",in[i]); 169 printf("%02X ",in[i]);
164 printf("\n"); 170 printf("\n");
165 err=3; 171 err=3;
166 } 172 }
167 } 173 }
168 if (err == 0) printf("ecb cast5 ok\n"); 174 if (err == 0)
175 printf("ecb cast5 ok\n");
169 176
170#ifdef FULL_TEST 177#ifdef FULL_TEST
171 { 178 {
172 unsigned char out_a[16],out_b[16]; 179 unsigned char out_a[16],out_b[16];
173 static char *hex="0123456789ABCDEF"; 180 static char *hex="0123456789ABCDEF";
174 181
175 printf("This test will take some time...."); 182 printf("This test will take some time....");
176 fflush(stdout); 183 fflush(stdout);
177 memcpy(out_a,in_a,sizeof(in_a)); 184 memcpy(out_a,in_a,sizeof(in_a));
178 memcpy(out_b,in_b,sizeof(in_b)); 185 memcpy(out_b,in_b,sizeof(in_b));
179 i=1; 186 i=1;
180 187
181 for (l=0; l<1000000L; l++) 188 for (l=0; l<1000000L; l++)
182 { 189 {
183 CAST_set_key(&key_b,16,out_b); 190 CAST_set_key(&key_b,16,out_b);
184 CAST_ecb_encrypt(&(out_a[0]),&(out_a[0]),&key_b,CAST_ENCRYPT); 191 CAST_ecb_encrypt(&(out_a[0]),&(out_a[0]),&key_b,CAST_ENCRYPT);
185 CAST_ecb_encrypt(&(out_a[8]),&(out_a[8]),&key_b,CAST_ENCRYPT); 192 CAST_ecb_encrypt(&(out_a[8]),&(out_a[8]),&key_b,CAST_ENCRYPT);
186 CAST_set_key(&key,16,out_a); 193 CAST_set_key(&key,16,out_a);
187 CAST_ecb_encrypt(&(out_b[0]),&(out_b[0]),&key,CAST_ENCRYPT); 194 CAST_ecb_encrypt(&(out_b[0]),&(out_b[0]),&key,CAST_ENCRYPT);
188 CAST_ecb_encrypt(&(out_b[8]),&(out_b[8]),&key,CAST_ENCRYPT); 195 CAST_ecb_encrypt(&(out_b[8]),&(out_b[8]),&key,CAST_ENCRYPT);
189 if ((l & 0xffff) == 0xffff) 196 if ((l & 0xffff) == 0xffff)
190 { 197 {
191 printf("%c",hex[i&0x0f]); 198 printf("%c",hex[i&0x0f]);
192 fflush(stdout); 199 fflush(stdout);
193 i++; 200 i++;
194 } 201 }
195 } 202 }
196 203
197 if ( (memcmp(out_a,c_a,sizeof(c_a)) != 0) || 204 if ( (memcmp(out_a,c_a,sizeof(c_a)) != 0) ||
198 (memcmp(out_b,c_b,sizeof(c_b)) != 0)) 205 (memcmp(out_b,c_b,sizeof(c_b)) != 0))
199 { 206 {
200 printf("\n"); 207 printf("\n");
201 printf("Error\n"); 208 printf("Error\n");
202 209
203 printf("A out ="); 210 printf("A out =");
204 for (i=0; i<16; i++) printf("%02X ",out_a[i]); 211 for (i=0; i<16; i++) printf("%02X ",out_a[i]);
205 printf("\nactual="); 212 printf("\nactual=");
206 for (i=0; i<16; i++) printf("%02X ",c_a[i]); 213 for (i=0; i<16; i++) printf("%02X ",c_a[i]);
207 printf("\n"); 214 printf("\n");
208 215
209 printf("B out ="); 216 printf("B out =");
210 for (i=0; i<16; i++) printf("%02X ",out_b[i]); 217 for (i=0; i<16; i++) printf("%02X ",out_b[i]);
211 printf("\nactual="); 218 printf("\nactual=");
212 for (i=0; i<16; i++) printf("%02X ",c_b[i]); 219 for (i=0; i<16; i++) printf("%02X ",c_b[i]);
213 printf("\n"); 220 printf("\n");
214 } 221 }
215 else 222 else
216 printf(" ok\n"); 223 printf(" ok\n");
217 } 224 }
218#endif 225#endif
219 226
220 exit(err); 227 exit(err);
221 return(err); 228 return(err);
222 } 229 }
223 230#endif
diff --git a/src/lib/libcrypto/conf/cnf_save.c b/src/lib/libcrypto/conf/cnf_save.c
index c9018de10e..1439487526 100644
--- a/src/lib/libcrypto/conf/cnf_save.c
+++ b/src/lib/libcrypto/conf/cnf_save.c
@@ -57,28 +57,28 @@
57 */ 57 */
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "conf.h" 60#include <openssl/conf.h>
61 61
62void print_conf(CONF_VALUE *cv); 62static void print_conf(CONF_VALUE *cv);
63static IMPLEMENT_LHASH_DOALL_FN(print_conf, CONF_VALUE *);
63 64
64main() 65main()
65 { 66 {
66 LHASH *conf; 67 LHASH *conf;
67 long l; 68 long l;
68 69
69 conf=CONF_load(NULL,"../../apps/ssleay.cnf",&l); 70 conf=CONF_load(NULL,"../../apps/openssl.cnf",&l);
70 if (conf == NULL) 71 if (conf == NULL)
71 { 72 {
72 fprintf(stderr,"error loading config, line %ld\n",l); 73 fprintf(stderr,"error loading config, line %ld\n",l);
73 exit(1); 74 exit(1);
74 } 75 }
75 76
76 lh_doall(conf,print_conf); 77 lh_doall(conf,LHASH_DOALL_FN(print_conf));
77 } 78 }
78 79
79 80
80void print_conf(cv) 81static void print_conf(CONF_VALUE *cv)
81CONF_VALUE *cv;
82 { 82 {
83 int i; 83 int i;
84 CONF_VALUE *v; 84 CONF_VALUE *v;
diff --git a/src/lib/libcrypto/conf/test.c b/src/lib/libcrypto/conf/test.c
index 899ee2a067..7fab85053e 100644
--- a/src/lib/libcrypto/conf/test.c
+++ b/src/lib/libcrypto/conf/test.c
@@ -58,7 +58,8 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include <stdlib.h> 60#include <stdlib.h>
61#include "conf.h" 61#include <openssl/conf.h>
62#include <openssl/err.h>
62 63
63main() 64main()
64 { 65 {
@@ -66,7 +67,10 @@ main()
66 long eline; 67 long eline;
67 char *s,*s2; 68 char *s,*s2;
68 69
69 conf=CONF_load(NULL,"ssleay.conf",&eline); 70#ifdef USE_WIN32
71 CONF_set_default_method(CONF_WIN32);
72#endif
73 conf=CONF_load(NULL,"ssleay.cnf",&eline);
70 if (conf == NULL) 74 if (conf == NULL)
71 { 75 {
72 ERR_load_crypto_strings(); 76 ERR_load_crypto_strings();
@@ -87,5 +91,8 @@ main()
87 s=CONF_get_string(conf,"s_client","cipher1"); 91 s=CONF_get_string(conf,"s_client","cipher1");
88 printf("s_client:cipher1=%s\n",(s == NULL)?"NULL":s); 92 printf("s_client:cipher1=%s\n",(s == NULL)?"NULL":s);
89 93
94 printf("---------------------------- DUMP ------------------------\n");
95 CONF_dump_fp(conf, stdout);
96
90 exit(0); 97 exit(0);
91 } 98 }
diff --git a/src/lib/libcrypto/crypto-lib.com b/src/lib/libcrypto/crypto-lib.com
index bf916528eb..4847a69a71 100644
--- a/src/lib/libcrypto/crypto-lib.com
+++ b/src/lib/libcrypto/crypto-lib.com
@@ -14,7 +14,14 @@ $!
14$! It was re-written so it would try to determine what "C" compiler to use 14$! It was re-written so it would try to determine what "C" compiler to use
15$! or you can specify which "C" compiler to use. 15$! or you can specify which "C" compiler to use.
16$! 16$!
17$! Specify RSAREF as P1 to compile with the RSAREF library instead of 17$! Specify the following as P1 to build just that part or ALL to just
18$! build everything.
19$!
20$! LIBRARY To just compile the [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library.
21$! APPS To just compile the [.xxx.EXE.CRYPTO]*.EXE
22$! ALL To do both LIBRARY and APPS
23$!
24$! Specify RSAREF as P2 to compile with the RSAREF library instead of
18$! the regular one. If you specify NORSAREF it will compile with the 25$! the regular one. If you specify NORSAREF it will compile with the
19$! regular RSAREF routines. (Note: If you are in the United States 26$! regular RSAREF routines. (Note: If you are in the United States
20$! you MUST compile with RSAREF unless you have a license from RSA). 27$! you MUST compile with RSAREF unless you have a license from RSA).
@@ -26,10 +33,10 @@ $! directory structure stored. You have to extract the file
26$! into the [.RSAREF] directory under the root directory as that 33$! into the [.RSAREF] directory under the root directory as that
27$! is where the scripts will look for the files. 34$! is where the scripts will look for the files.
28$! 35$!
29$! Specify DEBUG or NODEBUG as P2 to compile with or without debugger 36$! Specify DEBUG or NODEBUG as P3 to compile with or without debugger
30$! information. 37$! information.
31$! 38$!
32$! Specify which compiler at P3 to try to compile under. 39$! Specify which compiler at P4 to try to compile under.
33$! 40$!
34$! VAXC For VAX C. 41$! VAXC For VAX C.
35$! DECC For DEC C. 42$! DECC For DEC C.
@@ -38,15 +45,16 @@ $!
38$! If you don't speficy a compiler, it will try to determine which 45$! If you don't speficy a compiler, it will try to determine which
39$! "C" compiler to use. 46$! "C" compiler to use.
40$! 47$!
41$! P4, if defined, sets a TCP/IP library to use, through one of the following 48$! P5, if defined, sets a TCP/IP library to use, through one of the following
42$! keywords: 49$! keywords:
43$! 50$!
44$! UCX for UCX 51$! UCX for UCX
52$! TCPIP for TCPIP (post UCX)
45$! SOCKETSHR for SOCKETSHR+NETLIB 53$! SOCKETSHR for SOCKETSHR+NETLIB
46$! 54$!
47$! P5, if defined, sets a compiler thread NOT needed on OpenVMS 7.1 (and up) 55$! P6, if defined, sets a compiler thread NOT needed on OpenVMS 7.1 (and up)
48$! 56$!
49$! P6, if defined, sets a choice of crypto methods to compile. 57$! P7, if defined, sets a choice of crypto methods to compile.
50$! WARNING: this should only be done to recompile some part of an already 58$! WARNING: this should only be done to recompile some part of an already
51$! fully compiled library. 59$! fully compiled library.
52$! 60$!
@@ -79,12 +87,13 @@ $ ENDIF
79$! 87$!
80$! Define The Different Encryption Types. 88$! Define The Different Encryption Types.
81$! 89$!
82$ ENCRYPT_TYPES = ",MD2,MD5,SHA,MDC2,HMAC,RIPEMD,"+ - 90$ ENCRYPT_TYPES = "Basic,MD2,MD4,MD5,SHA,MDC2,HMAC,RIPEMD,"+ -
83 "DES,RC2,RC4,RC5,IDEA,BF,CAST,"+ - 91 "DES,RC2,RC4,RC5,IDEA,BF,CAST,"+ -
84 "BN,RSA,DSA,DH,"+ - 92 "BN,EC,RSA,DSA,DH,DSO,ENGINE,AES,"+ -
85 "BUFFER,BIO,STACK,LHASH,RAND,ERR,OBJECTS,"+ - 93 "BUFFER,BIO,STACK,LHASH,RAND,ERR,OBJECTS,"+ -
86 "EVP,EVP_2,ASN1,ASN1_2,PEM,X509,X509V3,"+ - 94 "EVP,EVP_2,ASN1,ASN1_2,PEM,X509,X509V3,"+ -
87 "CONF,TXT_DB,PKCS7,PKCS12,COMP" 95 "CONF,TXT_DB,PKCS7,PKCS12,COMP,OCSP,UI,KRB5"
96$ ENCRYPT_PROGRAMS = "DES,PKCS7"
88$! 97$!
89$! Check To Make Sure We Have Valid Command Line Parameters. 98$! Check To Make Sure We Have Valid Command Line Parameters.
90$! 99$!
@@ -136,6 +145,14 @@ $! Define The Library Name.
136$! 145$!
137$ LIB_NAME := 'EXE_DIR'LIBCRYPTO.OLB 146$ LIB_NAME := 'EXE_DIR'LIBCRYPTO.OLB
138$! 147$!
148$! Define The CRYPTO-LIB We Are To Use.
149$!
150$ CRYPTO_LIB := 'EXE_DIR'LIBCRYPTO.OLB
151$!
152$! Define The RSAREF-LIB We Are To Use.
153$!
154$ RSAREF_LIB := SYS$DISK:[-.'ARCH'.EXE.RSAREF]LIBRSAGLUE.OLB
155$!
139$! Check To See If We Already Have A "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB" Library... 156$! Check To See If We Already Have A "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB" Library...
140$! 157$!
141$ IF (F$SEARCH(LIB_NAME).EQS."") 158$ IF (F$SEARCH(LIB_NAME).EQS."")
@@ -149,10 +166,18 @@ $! End The Library Check.
149$! 166$!
150$ ENDIF 167$ ENDIF
151$! 168$!
169$! Build our options file for the application
170$!
171$ GOSUB CHECK_OPT_FILE
172$!
152$! Define The Different Encryption "library" Strings. 173$! Define The Different Encryption "library" Strings.
153$! 174$!
154$ LIB_ = "cryptlib,mem,cversion,ex_data,tmdiff,cpt_err" 175$ APPS_DES = "DES/DES,CBC3_ENC"
176$ APPS_PKCS7 = "ENC/ENC;DEC/DEC;SIGN/SIGN;VERIFY/VERIFY,EXAMPLE"
177$
178$ LIB_ = "cryptlib,mem,mem_dbg,cversion,ex_data,tmdiff,cpt_err,ebcdic,uid,o_time"
155$ LIB_MD2 = "md2_dgst,md2_one" 179$ LIB_MD2 = "md2_dgst,md2_one"
180$ LIB_MD4 = "md4_dgst,md4_one"
156$ LIB_MD5 = "md5_dgst,md5_one" 181$ LIB_MD5 = "md5_dgst,md5_one"
157$ LIB_SHA = "sha_dgst,sha1dgst,sha_one,sha1_one" 182$ LIB_SHA = "sha_dgst,sha1dgst,sha_one,sha1_one"
158$ LIB_MDC2 = "mdc2dgst,mdc2_one" 183$ LIB_MDC2 = "mdc2dgst,mdc2_one"
@@ -162,8 +187,9 @@ $ LIB_DES = "set_key,ecb_enc,cbc_enc,"+ -
162 "ecb3_enc,cfb64enc,cfb64ede,cfb_enc,ofb64ede,"+ - 187 "ecb3_enc,cfb64enc,cfb64ede,cfb_enc,ofb64ede,"+ -
163 "enc_read,enc_writ,ofb64enc,"+ - 188 "enc_read,enc_writ,ofb64enc,"+ -
164 "ofb_enc,str2key,pcbc_enc,qud_cksm,rand_key,"+ - 189 "ofb_enc,str2key,pcbc_enc,qud_cksm,rand_key,"+ -
165 "des_enc,fcrypt_b,read2pwd,"+ - 190 "des_enc,fcrypt_b,"+ -
166 "fcrypt,xcbc_enc,read_pwd,rpc_enc,cbc_cksm,supp,ede_cbcm_enc" 191 "fcrypt,xcbc_enc,rpc_enc,cbc_cksm,"+ -
192 "ede_cbcm_enc,des_old,des_old2,read2pwd"
167$ LIB_RC2 = "rc2_ecb,rc2_skey,rc2_cbc,rc2cfb64,rc2ofb64" 193$ LIB_RC2 = "rc2_ecb,rc2_skey,rc2_cbc,rc2cfb64,rc2ofb64"
168$ LIB_RC4 = "rc4_skey,rc4_enc" 194$ LIB_RC4 = "rc4_skey,rc4_enc"
169$ LIB_RC5 = "rc5_skey,rc5_ecb,rc5_enc,rc5cfb64,rc5ofb64" 195$ LIB_RC5 = "rc5_skey,rc5_ecb,rc5_enc,rc5cfb64,rc5ofb64"
@@ -171,84 +197,100 @@ $ LIB_IDEA = "i_cbc,i_cfb64,i_ofb64,i_ecb,i_skey"
171$ LIB_BF = "bf_skey,bf_ecb,bf_enc,bf_cfb64,bf_ofb64" 197$ LIB_BF = "bf_skey,bf_ecb,bf_enc,bf_cfb64,bf_ofb64"
172$ LIB_CAST = "c_skey,c_ecb,c_enc,c_cfb64,c_ofb64" 198$ LIB_CAST = "c_skey,c_ecb,c_enc,c_cfb64,c_ofb64"
173$ LIB_BN_ASM = "[.asm]vms.mar,vms-helper" 199$ LIB_BN_ASM = "[.asm]vms.mar,vms-helper"
174$ IF F$TRNLNM("OPENSSL_NO_ASM") .NES. "" THEN LIB_BN_ASM = "bn_asm" 200$ IF F$TRNLNM("OPENSSL_NO_ASM").OR.ARCH.EQS."AXP" THEN LIB_BN_ASM = "bn_asm"
175$ LIB_BN = "bn_add,bn_div,bn_exp,bn_lib,bn_mul,"+ - 201$ LIB_BN = "bn_add,bn_div,bn_exp,bn_lib,bn_ctx,bn_mul,bn_mod,"+ -
176 "bn_print,bn_rand,bn_shift,bn_word,bn_blind,"+ - 202 "bn_print,bn_rand,bn_shift,bn_word,bn_blind,"+ -
177 "bn_gcd,bn_prime,bn_err,bn_sqr,"+LIB_BN_ASM+",bn_recp,bn_mont,"+ - 203 "bn_kron,bn_sqrt,bn_gcd,bn_prime,bn_err,bn_sqr,"+LIB_BN_ASM+","+ -
178 "bn_mpi,bn_exp2" 204 "bn_recp,bn_mont,bn_mpi,bn_exp2"
179$ LIB_RSA = "rsa_eay,rsa_gen,rsa_lib,rsa_sign,rsa_saos,rsa_err,"+ - 205$ LIB_RSA = "rsa_eay,rsa_gen,rsa_lib,rsa_sign,rsa_saos,rsa_err,"+ -
180 "rsa_pk1,rsa_ssl,rsa_none,rsa_oaep,rsa_chk" 206 "rsa_pk1,rsa_ssl,rsa_none,rsa_oaep,rsa_chk,rsa_null,"+ -
181$ LIB_DSA = "dsa_gen,dsa_key,dsa_lib,dsa_asn1,dsa_vrf,dsa_sign,dsa_err" 207 "rsa_asn1"
182$ LIB_DH = "dh_gen,dh_key,dh_lib,dh_check,dh_err" 208$ LIB_EC = "ec_lib,ecp_smpl,ecp_mont,ecp_recp,ecp_nist,ec_cvt,ec_mult,"+ -
209 "ec_err"
210$ LIB_DSA = "dsa_gen,dsa_key,dsa_lib,dsa_asn1,dsa_vrf,dsa_sign,dsa_err,dsa_ossl"
211$ LIB_DH = "dh_asn1,dh_gen,dh_key,dh_lib,dh_check,dh_err"
212$ LIB_DSO = "dso_dl,dso_dlfcn,dso_err,dso_lib,dso_null,"+ -
213 "dso_openssl,dso_win32,dso_vms"
214$ LIB_ENGINE = "eng_err,eng_lib,eng_list,eng_init,eng_ctrl,"+ -
215 "eng_table,eng_pkey,eng_fat,eng_all,"+ -
216 "tb_rsa,tb_dsa,tb_dh,tb_rand,tb_cipher,tb_digest,"+ -
217 "eng_openssl,eng_dyn,eng_cnf,"+ -
218 "hw_atalla,hw_cswift,hw_ncipher,hw_nuron,hw_ubsec,"+ -
219 "hw_openbsd_dev_crypto,hw_aep,hw_sureware,hw_4758_cca"
220$ LIB_AES = "aes_core,aes_misc,aes_ecb,aes_cbc,aes_cfb,aes_ofb,aes_ctr"
183$ LIB_BUFFER = "buffer,buf_err" 221$ LIB_BUFFER = "buffer,buf_err"
184$ LIB_BIO = "bio_lib,bio_cb,bio_err,"+ - 222$ LIB_BIO = "bio_lib,bio_cb,bio_err,"+ -
185 "bss_mem,bss_null,bss_fd,"+ - 223 "bss_mem,bss_null,bss_fd,"+ -
186 "bss_file,bss_sock,bss_conn,"+ - 224 "bss_file,bss_sock,bss_conn,"+ -
187 "bf_null,bf_buff,b_print,b_dump,"+ - 225 "bf_null,bf_buff,b_print,b_dump,"+ -
188 "b_sock,bss_acpt,bf_nbio,bss_rtcp,bss_bio" ! + ",bss_log" for syslog 226 "b_sock,bss_acpt,bf_nbio,bss_rtcp,bss_bio,bss_log,"+ -
227 "bf_lbuf"
189$ LIB_STACK = "stack" 228$ LIB_STACK = "stack"
190$ LIB_LHASH = "lhash,lh_stats" 229$ LIB_LHASH = "lhash,lh_stats"
191$ LIB_RAND = "md_rand,randfile,rand_lib" 230$ LIB_RAND = "md_rand,randfile,rand_lib,rand_err,rand_egd,"+ -
231 "rand_vms"
192$ LIB_ERR = "err,err_all,err_prn" 232$ LIB_ERR = "err,err_all,err_prn"
193$ LIB_OBJECTS = "o_names,obj_dat,obj_lib,obj_err" 233$ LIB_OBJECTS = "o_names,obj_dat,obj_lib,obj_err"
194$ LIB_EVP = "encode,digest,evp_enc,evp_key,"+ - 234$ LIB_EVP = "encode,digest,evp_enc,evp_key,"+ -
195 "e_ecb_d,e_cbc_d,e_cfb_d,e_ofb_d,"+ - 235 "e_des,e_bf,e_idea,e_des3,"+ -
196 "e_ecb_i,e_cbc_i,e_cfb_i,e_ofb_i,"+ - 236 "e_rc4,e_aes,names,"+ -
197 "e_ecb_3d,e_cbc_3d,e_rc4,names,"+ - 237 "e_xcbc_d,e_rc2,e_cast,e_rc5"
198 "e_cfb_3d,e_ofb_3d,e_xcbc_d,"+ - 238$ LIB_EVP_2 = "m_null,m_md2,m_md4,m_md5,m_sha,m_sha1," + -
199 "e_ecb_r2,e_cbc_r2,e_cfb_r2,e_ofb_r2,"+ - 239 "m_dss,m_dss1,m_mdc2,m_ripemd,"+ -
200 "e_ecb_bf,e_cbc_bf,e_cfb_bf,e_ofb_bf"
201$ LIB_EVP_2 = "e_ecb_c,e_cbc_c,e_cfb_c,e_ofb_c,"+ -
202 "e_ecb_r5,e_cbc_r5,e_cfb_r5,e_ofb_r5,"+ -
203 "m_null,m_md2,m_md5,m_sha,m_sha1,m_dss,m_dss1,m_mdc2,"+ -
204 "m_ripemd,"+ -
205 "p_open,p_seal,p_sign,p_verify,p_lib,p_enc,p_dec,"+ - 240 "p_open,p_seal,p_sign,p_verify,p_lib,p_enc,p_dec,"+ -
206 "bio_md,bio_b64,bio_enc,evp_err,e_null,"+ - 241 "bio_md,bio_b64,bio_enc,evp_err,e_null,"+ -
207 "c_all,evp_lib,bio_ok,evp_pkey,evp_pbe,p5_crpt,p5_crpt2" 242 "c_all,c_allc,c_alld,evp_lib,bio_ok,"+-
243 "evp_pkey,evp_pbe,p5_crpt,p5_crpt2"
208$ LIB_ASN1 = "a_object,a_bitstr,a_utctm,a_gentm,a_time,a_int,a_octet,"+ - 244$ LIB_ASN1 = "a_object,a_bitstr,a_utctm,a_gentm,a_time,a_int,a_octet,"+ -
209 "a_print,a_type,a_set,a_dup,a_d2i_fp,a_i2d_fp,a_bmp,"+ - 245 "a_print,a_type,a_set,a_dup,a_d2i_fp,a_i2d_fp,"+ -
210 "a_enum,a_vis,a_utf8,a_sign,a_digest,a_verify,"+ - 246 "a_enum,a_utf8,a_sign,a_digest,a_verify,a_mbstr,a_strex,"+ -
211 "x_algor,x_val,x_pubkey,x_sig,x_req,x_attrib,"+ - 247 "x_algor,x_val,x_pubkey,x_sig,x_req,x_attrib,x_bignum,"+ -
212 "x_name,x_cinf,x_x509,x_crl,x_info,x_spki,nsseq,"+ - 248 "x_long,x_name,x_x509,x_x509a,x_crl,x_info,x_spki,nsseq,"+ -
213 "d2i_r_pr,i2d_r_pr,d2i_r_pu,i2d_r_pu,"+ -
214 "d2i_s_pr,i2d_s_pr,d2i_s_pu,i2d_s_pu,"+ -
215 "d2i_pu,d2i_pr,i2d_pu,i2d_pr" 249 "d2i_pu,d2i_pr,i2d_pu,i2d_pr"
216$ LIB_ASN1_2 = "t_req,t_x509,t_crl,t_pkey,"+ - 250$ LIB_ASN1_2 = "t_req,t_x509,t_x509a,t_crl,t_pkey,t_spki,t_bitst,"+ -
217 "p7_i_s,p7_signi,p7_signd,p7_recip,p7_enc_c,p7_evp,"+ - 251 "tasn_new,tasn_fre,tasn_enc,tasn_dec,tasn_utl,tasn_typ,"+ -
218 "p7_dgst,p7_s_e,p7_enc,p7_lib,"+ - 252 "f_int,f_string,n_pkey,"+ -
219 "f_int,f_string,i2d_dhp,i2d_dsap,d2i_dhp,d2i_dsap,n_pkey,"+ -
220 "f_enum,a_hdr,x_pkey,a_bool,x_exten,"+ - 253 "f_enum,a_hdr,x_pkey,a_bool,x_exten,"+ -
221 "asn1_par,asn1_lib,asn1_err,a_meth,a_bytes,"+ - 254 "asn1_par,asn1_lib,asn1_err,a_meth,a_bytes,a_strnid,"+ -
222 "evp_asn1,asn_pack,p5_pbe,p5_pbev2,p8_pkey" 255 "evp_asn1,asn_pack,p5_pbe,p5_pbev2,p8_pkey,asn_moid"
223$ LIB_PEM = "pem_sign,pem_seal,pem_info,pem_lib,pem_all,pem_err" 256$ LIB_PEM = "pem_sign,pem_seal,pem_info,pem_lib,pem_all,pem_err,"+ -
257 "pem_x509,pem_xaux,pem_oth,pem_pk8,pem_pkey"
224$ LIB_X509 = "x509_def,x509_d2,x509_r2x,x509_cmp,"+ - 258$ LIB_X509 = "x509_def,x509_d2,x509_r2x,x509_cmp,"+ -
225 "x509_obj,x509_req,x509_vfy,"+ - 259 "x509_obj,x509_req,x509spki,x509_vfy,"+ -
226 "x509_set,x509rset,x509_err,"+ - 260 "x509_set,x509cset,x509rset,x509_err,"+ -
227 "x509name,x509_v3,x509_ext,"+ - 261 "x509name,x509_v3,x509_ext,x509_att,"+ -
228 "x509type,x509_lu,x_all,x509_txt,"+ - 262 "x509type,x509_lu,x_all,x509_txt,"+ -
229 "by_file,by_dir" 263 "x509_trs,by_file,by_dir"
230$ LIB_X509V3 = "v3_bcons,v3_bitst,v3_conf,v3_extku,v3_ia5,v3_lib,"+ - 264$ LIB_X509V3 = "v3_bcons,v3_bitst,v3_conf,v3_extku,v3_ia5,v3_lib,"+ -
231 "v3_prn,v3_utl,v3err,v3_genn,v3_alt,v3_skey,v3_akey,v3_pku,"+ - 265 "v3_prn,v3_utl,v3err,v3_genn,v3_alt,v3_skey,v3_akey,v3_pku,"+ -
232 "v3_int,v3_enum,v3_sxnet,v3_cpols,v3_crld" 266 "v3_int,v3_enum,v3_sxnet,v3_cpols,v3_crld,v3_purp,v3_info,"+ -
233$ LIB_CONF = "conf,conf_err" 267 "v3_ocsp,v3_akeya"
268$ LIB_CONF = "conf_err,conf_lib,conf_api,conf_def,conf_mod,conf_mall"
234$ LIB_TXT_DB = "txt_db" 269$ LIB_TXT_DB = "txt_db"
235$ LIB_PKCS7 = "pk7_lib,pkcs7err,pk7_doit" 270$ LIB_PKCS7 = "pk7_asn1,pk7_lib,pkcs7err,pk7_doit,pk7_smime,pk7_attr,"+ -
236$ LIB_PKCS12 = "p12_add,p12_attr,p12_bags,p12_crpt,p12_crt,p12_decr,"+ - 271 "pk7_mime"
237 "p12_init,p12_key,p12_kiss,p12_lib,p12_mac,p12_mutl,"+ - 272$ LIB_PKCS12 = "p12_add,p12_asn,p12_attr,p12_crpt,p12_crt,p12_decr,"+ -
238 "p12_sbag,p12_utl,pk12err" 273 "p12_init,p12_key,p12_kiss,p12_mutl,"+ -
274 "p12_utl,p12_npas,pk12err,p12_p8d,p12_p8e"
239$ LIB_COMP = "comp_lib,"+ - 275$ LIB_COMP = "comp_lib,"+ -
240 "c_rle,c_zlib" 276 "c_rle,c_zlib"
277$ LIB_OCSP = "ocsp_asn,ocsp_ext,ocsp_ht,ocsp_lib,ocsp_cl,"+ -
278 "ocsp_srv,ocsp_prn,ocsp_vfy,ocsp_err"
279$ LIB_UI_COMPAT = ",ui_compat"
280$ LIB_UI = "ui_err,ui_lib,ui_openssl,ui_util"+LIB_UI_COMPAT
281$ LIB_KRB5 = "krb5_asn"
241$! 282$!
242$! Setup exceptional compilations 283$! Setup exceptional compilations
243$! 284$!
244$ COMPILEWITH_CC3 = ",bss_rtcp," 285$ COMPILEWITH_CC3 = ",bss_rtcp,"
245$ COMPILEWITH_CC4 = ",a_utctm," 286$ COMPILEWITH_CC4 = ",a_utctm,bss_log,o_time,"
246$ COMPILEWITH_CC5 = ",md2_dgst,md5_dgst,mdc2dgst,sha_dgst,sha1dgst," + - 287$ COMPILEWITH_CC5 = ",md2_dgst,md4_dgst,md5_dgst,mdc2dgst," + -
247 "rmd_dgst,bf_enc," 288 "sha_dgst,sha1dgst,rmd_dgst,bf_enc,"
248$! 289$!
249$! Check To See If We Are Going To Use RSAREF. 290$! Check To See If We Are Going To Use RSAREF.
250$! 291$!
251$ IF (RSAREF.EQS."TRUE" .AND. ENCRYPT_TYPES - "RSA".NES.ENCRYPT_TYPES) 292$ IF (RSAREF.EQS."TRUE" .AND. ENCRYPT_TYPES - "RSA".NES.ENCRYPT_TYPES -
293 .AND. (BUILDALL .EQS. "TRUE" .OR. BUILDALL .EQS. "LIBRARY"))
252$ THEN 294$ THEN
253$! 295$!
254$! Check To See If The File [-.RSAREF]RSAREF.C Is Actually There. 296$! Check To See If The File [-.RSAREF]RSAREF.C Is Actually There.
@@ -256,10 +298,10 @@ $!
256$ IF (F$SEARCH("SYS$DISK:[-.RSAREF]RSAREF.C").EQS."") 298$ IF (F$SEARCH("SYS$DISK:[-.RSAREF]RSAREF.C").EQS."")
257$ THEN 299$ THEN
258$! 300$!
259$! Tell The User That The File Dosen't Exist. 301$! Tell The User That The File Doesn't Exist.
260$! 302$!
261$ WRITE SYS$OUTPUT "" 303$ WRITE SYS$OUTPUT ""
262$ WRITE SYS$OUTPUT "The File [-.RSAREF]RSAREF.C Dosen't Exist." 304$ WRITE SYS$OUTPUT "The File [-.RSAREF]RSAREF.C Doesn't Exist."
263$ WRITE SYS$OUTPUT "" 305$ WRITE SYS$OUTPUT ""
264$! 306$!
265$! Exit The Build. 307$! Exit The Build.
@@ -291,10 +333,10 @@ $!
291$ IF (F$SEARCH("SYS$DISK:[-.RSAREF]RSAR_ERR.C").EQS."") 333$ IF (F$SEARCH("SYS$DISK:[-.RSAREF]RSAR_ERR.C").EQS."")
292$ THEN 334$ THEN
293$! 335$!
294$! Tell The User That The File Dosen't Exist. 336$! Tell The User That The File Doesn't Exist.
295$! 337$!
296$ WRITE SYS$OUTPUT "" 338$ WRITE SYS$OUTPUT ""
297$ WRITE SYS$OUTPUT "The File [-.RSAREF]RSAR_ERR.C Dosen't Exist." 339$ WRITE SYS$OUTPUT "The File [-.RSAREF]RSAR_ERR.C Doesn't Exist."
298$ WRITE SYS$OUTPUT "" 340$ WRITE SYS$OUTPUT ""
299$! 341$!
300$! Exit The Build. 342$! Exit The Build.
@@ -340,6 +382,8 @@ $!
340$! Extract The Module Name From The Encryption List. 382$! Extract The Module Name From The Encryption List.
341$! 383$!
342$ MODULE_NAME = F$ELEMENT(MODULE_COUNTER,",",ENCRYPT_TYPES) 384$ MODULE_NAME = F$ELEMENT(MODULE_COUNTER,",",ENCRYPT_TYPES)
385$ IF MODULE_NAME.EQS."Basic" THEN MODULE_NAME = ""
386$ MODULE_NAME1 = MODULE_NAME
343$! 387$!
344$! Check To See If We Are At The End Of The Module List. 388$! Check To See If We Are At The End Of The Module List.
345$! 389$!
@@ -358,20 +402,10 @@ $! Increment The Moudle Counter.
358$! 402$!
359$ MODULE_COUNTER = MODULE_COUNTER + 1 403$ MODULE_COUNTER = MODULE_COUNTER + 1
360$! 404$!
361$! Tell The User What Module We Are Building. 405$! Create The Library and Apps Module Names.
362$!
363$ IF (MODULE_NAME.NES."")
364$ THEN
365$ WRITE SYS$OUTPUT "Compiling The ",MODULE_NAME," Files."
366$ ENDIF
367$!
368$! Define A File Counter And Set It To "0".
369$!
370$ FILE_COUNTER = 0
371$!
372$! Create The Library Module Name.
373$! 406$!
374$ LIB_MODULE = "LIB_" + MODULE_NAME 407$ LIB_MODULE = "LIB_" + MODULE_NAME
408$ APPS_MODULE = "APPS_" + MODULE_NAME
375$ IF (MODULE_NAME.EQS."ASN1_2") 409$ IF (MODULE_NAME.EQS."ASN1_2")
376$ THEN 410$ THEN
377$ MODULE_NAME = "ASN1" 411$ MODULE_NAME = "ASN1"
@@ -381,6 +415,11 @@ $ THEN
381$ MODULE_NAME = "EVP" 415$ MODULE_NAME = "EVP"
382$ ENDIF 416$ ENDIF
383$! 417$!
418$! Set state (can be LIB and APPS)
419$!
420$ STATE = "LIB"
421$ IF BUILDALL .EQS. "APPS" THEN STATE = "APPS"
422$!
384$! Check if the library module name actually is defined 423$! Check if the library module name actually is defined
385$! 424$!
386$ IF F$TYPE('LIB_MODULE') .EQS. "" 425$ IF F$TYPE('LIB_MODULE') .EQS. ""
@@ -391,22 +430,92 @@ $ WRITE SYS$ERROR ""
391$ GOTO MODULE_NEXT 430$ GOTO MODULE_NEXT
392$ ENDIF 431$ ENDIF
393$! 432$!
433$! Top Of The Module Loop.
434$!
435$ MODULE_AGAIN:
436$!
437$! Tell The User What Module We Are Building.
438$!
439$ IF (MODULE_NAME1.NES."")
440$ THEN
441$ IF STATE .EQS. "LIB"
442$ THEN
443$ WRITE SYS$OUTPUT "Compiling The ",MODULE_NAME1," Library Files. (",BUILDALL,",",STATE,")"
444$ ELSE IF F$TYPE('APPS_MODULE') .NES. ""
445$ THEN
446$ WRITE SYS$OUTPUT "Compiling The ",MODULE_NAME1," Applications. (",BUILDALL,",",STATE,")"
447$ ENDIF
448$ ENDIF
449$ ENDIF
450$!
451$! Define A File Counter And Set It To "0".
452$!
453$ FILE_COUNTER = 0
454$ APPLICATION = ""
455$ APPLICATION_COUNTER = 0
456$!
394$! Top Of The File Loop. 457$! Top Of The File Loop.
395$! 458$!
396$ NEXT_FILE: 459$ NEXT_FILE:
397$! 460$!
398$! O.K, Extract The File Name From The File List. 461$! Look in the LIB_MODULE is we're in state LIB
399$! 462$!
400$ FILE_NAME = F$ELEMENT(FILE_COUNTER,",",'LIB_MODULE') 463$ IF STATE .EQS. "LIB"
464$ THEN
465$!
466$! O.K, Extract The File Name From The File List.
467$!
468$ FILE_NAME = F$ELEMENT(FILE_COUNTER,",",'LIB_MODULE')
469$!
470$! else
471$!
472$ ELSE
473$ FILE_NAME = ","
474$!
475$ IF F$TYPE('APPS_MODULE') .NES. ""
476$ THEN
477$!
478$! Extract The File Name From The File List.
479$! This part is a bit more complicated.
480$!
481$ IF APPLICATION .EQS. ""
482$ THEN
483$ APPLICATION = F$ELEMENT(APPLICATION_COUNTER,";",'APPS_MODULE')
484$ APPLICATION_COUNTER = APPLICATION_COUNTER + 1
485$ APPLICATION_OBJECTS = F$ELEMENT(1,"/",APPLICATION)
486$ APPLICATION = F$ELEMENT(0,"/",APPLICATION)
487$ FILE_COUNTER = 0
488$ ENDIF
489$
490$! WRITE SYS$OUTPUT "DEBUG: SHOW SYMBOL APPLICATION*"
491$! SHOW SYMBOL APPLICATION*
492$!
493$ IF APPLICATION .NES. ";"
494$ THEN
495$ FILE_NAME = F$ELEMENT(FILE_COUNTER,",",APPLICATION_OBJECTS)
496$ IF FILE_NAME .EQS. ","
497$ THEN
498$ APPLICATION = ""
499$ GOTO NEXT_FILE
500$ ENDIF
501$ ENDIF
502$ ENDIF
503$ ENDIF
401$! 504$!
402$! Check To See If We Are At The End Of The File List. 505$! Check To See If We Are At The End Of The File List.
403$! 506$!
404$ IF (FILE_NAME.EQS.",") 507$ IF (FILE_NAME.EQS.",")
405$ THEN 508$ THEN
406$! 509$!
407$! We Are At The End Of The File List, Goto FILE_DONE. 510$! We Are At The End Of The File List, Change State Or Goto FILE_DONE.
408$! 511$!
409$ GOTO FILE_DONE 512$ IF STATE .EQS. "LIB" .AND. BUILDALL .NES. "LIBRARY"
513$ THEN
514$ STATE = "APPS"
515$ GOTO MODULE_AGAIN
516$ ELSE
517$ GOTO FILE_DONE
518$ ENDIF
410$! 519$!
411$! End The File List Check. 520$! End The File List Check.
412$! 521$!
@@ -440,10 +549,10 @@ $!
440$ IF (F$SEARCH(SOURCE_FILE).EQS."") 549$ IF (F$SEARCH(SOURCE_FILE).EQS."")
441$ THEN 550$ THEN
442$! 551$!
443$! Tell The User That The File Dosen't Exist. 552$! Tell The User That The File Doesn't Exist.
444$! 553$!
445$ WRITE SYS$OUTPUT "" 554$ WRITE SYS$OUTPUT ""
446$ WRITE SYS$OUTPUT "The File ",SOURCE_FILE," Dosen't Exist." 555$ WRITE SYS$OUTPUT "The File ",SOURCE_FILE," Doesn't Exist."
447$ WRITE SYS$OUTPUT "" 556$ WRITE SYS$OUTPUT ""
448$! 557$!
449$! Exit The Build. 558$! Exit The Build.
@@ -458,7 +567,7 @@ $! Tell The User We Are Compiling The File.
458$! 567$!
459$ IF (MODULE_NAME.EQS."") 568$ IF (MODULE_NAME.EQS."")
460$ THEN 569$ THEN
461 WRITE SYS$OUTPUT "Compiling The ",FILE_NAME," File." 570$ WRITE SYS$OUTPUT "Compiling The ",FILE_NAME," File. (",BUILDALL,",",STATE,")"
462$ ENDIF 571$ ENDIF
463$ IF (MODULE_NAME.NES."") 572$ IF (MODULE_NAME.NES."")
464$ THEN 573$ THEN
@@ -490,14 +599,17 @@ $ ENDIF
490$ ENDIF 599$ ENDIF
491$ ENDIF 600$ ENDIF
492$ ENDIF 601$ ENDIF
602$ IF STATE .EQS. "LIB"
603$ THEN
493$! 604$!
494$! Add It To The Library. 605$! Add It To The Library.
495$! 606$!
496$ LIBRARY/REPLACE 'LIB_NAME' 'OBJECT_FILE' 607$ LIBRARY/REPLACE 'LIB_NAME' 'OBJECT_FILE'
497$! 608$!
498$! Time To Clean Up The Object File. 609$! Time To Clean Up The Object File.
499$! 610$!
500$ DELETE 'OBJECT_FILE';* 611$ DELETE 'OBJECT_FILE';*
612$ ENDIF
501$! 613$!
502$! Go Back And Do It Again. 614$! Go Back And Do It Again.
503$! 615$!
@@ -507,6 +619,100 @@ $! All Done With This Library Part.
507$! 619$!
508$ FILE_DONE: 620$ FILE_DONE:
509$! 621$!
622$! Time To Build Some Applications
623$!
624$ IF F$TYPE('APPS_MODULE') .NES. "" .AND. BUILDALL .NES. "LIBRARY"
625$ THEN
626$ APPLICATION_COUNTER = 0
627$ NEXT_APPLICATION:
628$ APPLICATION = F$ELEMENT(APPLICATION_COUNTER,";",'APPS_MODULE')
629$ IF APPLICATION .EQS. ";" THEN GOTO APPLICATION_DONE
630$
631$ APPLICATION_COUNTER = APPLICATION_COUNTER + 1
632$ APPLICATION_OBJECTS = F$ELEMENT(1,"/",APPLICATION)
633$ APPLICATION = F$ELEMENT(0,"/",APPLICATION)
634$
635$! WRITE SYS$OUTPUT "DEBUG: SHOW SYMBOL APPLICATION*"
636$! SHOW SYMBOL APPLICATION*
637$!
638$! Tell the user what happens
639$!
640$ WRITE SYS$OUTPUT " ",APPLICATION,".exe"
641$!
642$! Link The Program, Check To See If We Need To Link With RSAREF Or Not.
643$!
644$ ON ERROR THEN GOTO NEXT_APPLICATION
645$ IF (RSAREF.EQS."TRUE")
646$ THEN
647$!
648$! Check To See If We Are To Link With A Specific TCP/IP Library.
649$!
650$ IF (TCPIP_LIB.NES."")
651$ THEN
652$!
653$! Link With The RSAREF Library And A Specific TCP/IP Library.
654$!
655$ LINK/'DEBUGGER'/'TRACEBACK'/EXE='EXE_DIR''APPLICATION'.EXE -
656 'OBJ_DIR''APPLICATION_OBJECTS', -
657 'CRYPTO_LIB'/LIBRARY,'RSAREF_LIB'/LIBRARY, -
658 'TCPIP_LIB','OPT_FILE'/OPTION
659$!
660$! Else...
661$!
662$ ELSE
663$!
664$! Link With The RSAREF Library And NO TCP/IP Library.
665$!
666$ LINK/'DEBUGGER'/'TRACEBACK'/EXE='EXE_DIR''APPLICATION'.EXE -
667 'OBJ_DIR''APPLICATION_OBJECTS', -
668 'CRYPTO_LIB'/LIBRARY,'RSAREF_LIB'/LIBRARY, -
669 'OPT_FILE'/OPTION
670$!
671$! End The TCP/IP Library Check.
672$!
673$ ENDIF
674$!
675$! Else...
676$!
677$ ELSE
678$!
679$! Don't Link With The RSAREF Routines.
680$!
681$!
682$! Check To See If We Are To Link With A Specific TCP/IP Library.
683$!
684$ IF (TCPIP_LIB.NES."")
685$ THEN
686$!
687$! Don't Link With The RSAREF Routines And TCP/IP Library.
688$!
689$ LINK/'DEBUGGER'/'TRACEBACK'/EXE='EXE_DIR''APPLICATION'.EXE -
690 'OBJ_DIR''APPLICATION_OBJECTS', -
691 'CRYPTO_LIB'/LIBRARY, -
692 'TCPIP_LIB','OPT_FILE'/OPTION
693$!
694$! Else...
695$!
696$ ELSE
697$!
698$! Don't Link With The RSAREF Routines And Link With A TCP/IP Library.
699$!
700$ LINK/'DEBUGGER'/'TRACEBACK'/EXE='EXE_DIR''APPLICATION'.EXE -
701 'OBJ_DIR''APPLICATION_OBJECTS',-
702 'CRYPTO_LIB'/LIBRARY, -
703 'OPT_FILE'/OPTION
704$!
705$! End The TCP/IP Library Check.
706$!
707$ ENDIF
708$!
709$! End The RSAREF Link Check.
710$!
711$ ENDIF
712$ GOTO NEXT_APPLICATION
713$ APPLICATION_DONE:
714$ ENDIF
715$!
510$! Go Back And Get The Next Module. 716$! Go Back And Get The Next Module.
511$! 717$!
512$ GOTO MODULE_NEXT 718$ GOTO MODULE_NEXT
@@ -653,17 +859,71 @@ $ CHECK_OPTIONS:
653$! 859$!
654$! Check To See If P1 Is Blank. 860$! Check To See If P1 Is Blank.
655$! 861$!
656$ IF (P1.EQS."NORSAREF") 862$ IF (P1.EQS."ALL")
657$ THEN 863$ THEN
658$! 864$!
659$! P1 Is NORSAREF, So Compile With The Regular RSA Libraries. 865$! P1 Is Blank, So Build Everything.
866$!
867$ BUILDALL = "TRUE"
868$!
869$! Else...
870$!
871$ ELSE
872$!
873$! Else, Check To See If P1 Has A Valid Arguement.
874$!
875$ IF (P1.EQS."LIBRARY").OR.(P1.EQS."APPS")
876$ THEN
877$!
878$! A Valid Arguement.
879$!
880$ BUILDALL = P1
881$!
882$! Else...
883$!
884$ ELSE
885$!
886$! Tell The User We Don't Know What They Want.
887$!
888$ WRITE SYS$OUTPUT ""
889$ WRITE SYS$OUTPUT "The Option ",P1," Is Invalid. The Valid Options Are:"
890$ WRITE SYS$OUTPUT ""
891$ WRITE SYS$OUTPUT " ALL : Just Build Everything."
892$ WRITE SYS$OUTPUT " LIBRARY : To Compile Just The [.xxx.EXE.SSL]LIBCRYPTO.OLB Library."
893$ WRITE SYS$OUTPUT " APPS : To Compile Just The [.xxx.EXE.SSL]*.EXE Programs."
894$ WRITE SYS$OUTPUT ""
895$ WRITE SYS$OUTPUT " Where 'xxx' Stands For:"
896$ WRITE SYS$OUTPUT ""
897$ WRITE SYS$OUTPUT " AXP : Alpha Architecture."
898$ WRITE SYS$OUTPUT " VAX : VAX Architecture."
899$ WRITE SYS$OUTPUT ""
900$!
901$! Time To EXIT.
902$!
903$ EXIT
904$!
905$! End The Valid Arguement Check.
906$!
907$ ENDIF
908$!
909$! End The P1 Check.
910$!
911$ ENDIF
912$!
913$! Check To See If P2 Is Blank.
914$!
915$ P2 = "NORSAREF"
916$ IF (P2.EQS."NORSAREF")
917$ THEN
918$!
919$! P2 Is NORSAREF, So Compile With The Regular RSA Libraries.
660$! 920$!
661$ RSAREF = "FALSE" 921$ RSAREF = "FALSE"
662$ ELSE 922$ ELSE
663$! 923$!
664$! Check To See If We Are To Use The RSAREF Library. 924$! Check To See If We Are To Use The RSAREF Library.
665$! 925$!
666$ IF (P1.EQS."RSAREF") 926$ IF (P2.EQS."RSAREF")
667$ THEN 927$ THEN
668$! 928$!
669$! Check To Make Sure We Have The RSAREF Source Code Directory. 929$! Check To Make Sure We Have The RSAREF Source Code Directory.
@@ -677,7 +937,7 @@ $!
677$ WRITE SYS$OUTPUT "" 937$ WRITE SYS$OUTPUT ""
678$ WRITE SYS$OUTPUT "It appears that you don't have the RSAREF Souce Code." 938$ WRITE SYS$OUTPUT "It appears that you don't have the RSAREF Souce Code."
679$ WRITE SYS$OUTPUT "You need to go to 'ftp://ftp.rsa.com/rsaref'. You have to" 939$ WRITE SYS$OUTPUT "You need to go to 'ftp://ftp.rsa.com/rsaref'. You have to"
680$ WRITE SYS$OUTPUT "get the '.tar-Z' file as the '.zip' file dosen't have the" 940$ WRITE SYS$OUTPUT "get the '.tar-Z' file as the '.zip' file doesn't have the"
681$ WRITE SYS$OUTPUT "directory structure stored. You have to extract the file" 941$ WRITE SYS$OUTPUT "directory structure stored. You have to extract the file"
682$ WRITE SYS$OUTPUT "into the [.RSAREF] directory under the root directory" 942$ WRITE SYS$OUTPUT "into the [.RSAREF] directory under the root directory"
683$ WRITE SYS$OUTPUT "as that is where the scripts will look for the files." 943$ WRITE SYS$OUTPUT "as that is where the scripts will look for the files."
@@ -697,7 +957,7 @@ $!
697$! They Entered An Invalid Option.. 957$! They Entered An Invalid Option..
698$! 958$!
699$ WRITE SYS$OUTPUT "" 959$ WRITE SYS$OUTPUT ""
700$ WRITE SYS$OUTPUT "The Option ",P1," Is Invalid. The Valid Options Are:" 960$ WRITE SYS$OUTPUT "The Option ",P2," Is Invalid. The Valid Options Are:"
701$ WRITE SYS$OUTPUT "" 961$ WRITE SYS$OUTPUT ""
702$ WRITE SYS$OUTPUT " RSAREF : Compile With The RSAREF Library." 962$ WRITE SYS$OUTPUT " RSAREF : Compile With The RSAREF Library."
703$ WRITE SYS$OUTPUT " NORSAREF : Compile With The Regular RSA Library." 963$ WRITE SYS$OUTPUT " NORSAREF : Compile With The Regular RSA Library."
@@ -711,16 +971,16 @@ $! End The Valid Arguement Check.
711$! 971$!
712$ ENDIF 972$ ENDIF
713$! 973$!
714$! End The P1 Check. 974$! End The P2 Check.
715$! 975$!
716$ ENDIF 976$ ENDIF
717$! 977$!
718$! Check To See If P2 Is Blank. 978$! Check To See If P3 Is Blank.
719$! 979$!
720$ IF (P2.EQS."NODEBUG") 980$ IF (P3.EQS."NODEBUG")
721$ THEN 981$ THEN
722$! 982$!
723$! P2 Is NODEBUG, So Compile Without The Debugger Information. 983$! P3 Is NODEBUG, So Compile Without The Debugger Information.
724$! 984$!
725$ DEBUGGER = "NODEBUG" 985$ DEBUGGER = "NODEBUG"
726$ TRACEBACK = "NOTRACEBACK" 986$ TRACEBACK = "NOTRACEBACK"
@@ -733,7 +993,7 @@ $ ELSE
733$! 993$!
734$! Check To See If We Are To Compile With Debugger Information. 994$! Check To See If We Are To Compile With Debugger Information.
735$! 995$!
736$ IF (P2.EQS."DEBUG") 996$ IF (P3.EQS."DEBUG")
737$ THEN 997$ THEN
738$! 998$!
739$! Compile With Debugger Information. 999$! Compile With Debugger Information.
@@ -750,7 +1010,7 @@ $!
750$! They Entered An Invalid Option.. 1010$! They Entered An Invalid Option..
751$! 1011$!
752$ WRITE SYS$OUTPUT "" 1012$ WRITE SYS$OUTPUT ""
753$ WRITE SYS$OUTPUT "The Option ",P2," Is Invalid. The Valid Options Are:" 1013$ WRITE SYS$OUTPUT "The Option ",P3," Is Invalid. The Valid Options Are:"
754$ WRITE SYS$OUTPUT "" 1014$ WRITE SYS$OUTPUT ""
755$ WRITE SYS$OUTPUT " DEBUG : Compile With The Debugger Information." 1015$ WRITE SYS$OUTPUT " DEBUG : Compile With The Debugger Information."
756$ WRITE SYS$OUTPUT " NODEBUG : Compile Without The Debugger Information." 1016$ WRITE SYS$OUTPUT " NODEBUG : Compile Without The Debugger Information."
@@ -764,7 +1024,7 @@ $! End The Valid Arguement Check.
764$! 1024$!
765$ ENDIF 1025$ ENDIF
766$! 1026$!
767$! End The P2 Check. 1027$! End The P3 Check.
768$! 1028$!
769$ ENDIF 1029$ ENDIF
770$! 1030$!
@@ -774,9 +1034,9 @@ $! Written By: Richard Levitte
774$! richard@levitte.org 1034$! richard@levitte.org
775$! 1035$!
776$! 1036$!
777$! Check To See If We Have A Option For P5. 1037$! Check To See If We Have A Option For P6.
778$! 1038$!
779$ IF (P5.EQS."") 1039$ IF (P6.EQS."")
780$ THEN 1040$ THEN
781$! 1041$!
782$! Get The Version Of VMS We Are Using. 1042$! Get The Version Of VMS We Are Using.
@@ -798,13 +1058,13 @@ $! End The VMS Version Check.
798$! 1058$!
799$ ENDIF 1059$ ENDIF
800$! 1060$!
801$! End The P5 Check. 1061$! End The P6 Check.
802$! 1062$!
803$ ENDIF 1063$ ENDIF
804$! 1064$!
805$! Check To See If P3 Is Blank. 1065$! Check To See If P4 Is Blank.
806$! 1066$!
807$ IF (P3.EQS."") 1067$ IF (P4.EQS."")
808$ THEN 1068$ THEN
809$! 1069$!
810$! O.K., The User Didn't Specify A Compiler, Let's Try To 1070$! O.K., The User Didn't Specify A Compiler, Let's Try To
@@ -817,7 +1077,7 @@ $ THEN
817$! 1077$!
818$! Looks Like GNUC, Set To Use GNUC. 1078$! Looks Like GNUC, Set To Use GNUC.
819$! 1079$!
820$ P3 = "GNUC" 1080$ P4 = "GNUC"
821$! 1081$!
822$! Else... 1082$! Else...
823$! 1083$!
@@ -830,7 +1090,7 @@ $ THEN
830$! 1090$!
831$! Looks Like DECC, Set To Use DECC. 1091$! Looks Like DECC, Set To Use DECC.
832$! 1092$!
833$ P3 = "DECC" 1093$ P4 = "DECC"
834$! 1094$!
835$! Else... 1095$! Else...
836$! 1096$!
@@ -838,7 +1098,7 @@ $ ELSE
838$! 1098$!
839$! Looks Like VAXC, Set To Use VAXC. 1099$! Looks Like VAXC, Set To Use VAXC.
840$! 1100$!
841$ P3 = "VAXC" 1101$ P4 = "VAXC"
842$! 1102$!
843$! End The VAXC Compiler Check. 1103$! End The VAXC Compiler Check.
844$! 1104$!
@@ -852,9 +1112,9 @@ $! End The Compiler Check.
852$! 1112$!
853$ ENDIF 1113$ ENDIF
854$! 1114$!
855$! Check To See If We Have A Option For P4. 1115$! Check To See If We Have A Option For P5.
856$! 1116$!
857$ IF (P4.EQS."") 1117$ IF (P5.EQS."")
858$ THEN 1118$ THEN
859$! 1119$!
860$! Find out what socket library we have available 1120$! Find out what socket library we have available
@@ -864,7 +1124,7 @@ $ THEN
864$! 1124$!
865$! We have SOCKETSHR, and it is my opinion that it's the best to use. 1125$! We have SOCKETSHR, and it is my opinion that it's the best to use.
866$! 1126$!
867$ P4 = "SOCKETSHR" 1127$ P5 = "SOCKETSHR"
868$! 1128$!
869$! Tell the user 1129$! Tell the user
870$! 1130$!
@@ -884,7 +1144,7 @@ $ THEN
884$! 1144$!
885$! Last resort: a UCX or UCX-compatible library 1145$! Last resort: a UCX or UCX-compatible library
886$! 1146$!
887$ P4 = "UCX" 1147$ P5 = "UCX"
888$! 1148$!
889$! Tell the user 1149$! Tell the user
890$! 1150$!
@@ -898,22 +1158,22 @@ $ ENDIF
898$! 1158$!
899$! Set Up Initial CC Definitions, Possibly With User Ones 1159$! Set Up Initial CC Definitions, Possibly With User Ones
900$! 1160$!
901$ CCDEFS = "VMS=1,TCPIP_TYPE_''P4'" 1161$ CCDEFS = "TCPIP_TYPE_''P5',DSO_VMS"
902$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS 1162$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS
903$ CCEXTRAFLAGS = "" 1163$ CCEXTRAFLAGS = ""
904$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS 1164$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS
905$ CCDISABLEWARNINGS = "" 1165$ CCDISABLEWARNINGS = "LONGLONGTYPE,LONGLONGSUFX"
906$ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN - 1166$ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN -
907 CCDISABLEWARNINGS = USER_CCDISABLEWARNINGS 1167 CCDISABLEWARNINGS = CCDISABLEWARNINGS + "," + USER_CCDISABLEWARNINGS
908$! 1168$!
909$! Check To See If The User Entered A Valid Paramter. 1169$! Check To See If The User Entered A Valid Paramter.
910$! 1170$!
911$ IF (P3.EQS."VAXC").OR.(P3.EQS."DECC").OR.(P3.EQS."GNUC") 1171$ IF (P4.EQS."VAXC").OR.(P4.EQS."DECC").OR.(P4.EQS."GNUC")
912$ THEN 1172$ THEN
913$! 1173$!
914$! Check To See If The User Wanted DECC. 1174$! Check To See If The User Wanted DECC.
915$! 1175$!
916$ IF (P3.EQS."DECC") 1176$ IF (P4.EQS."DECC")
917$ THEN 1177$ THEN
918$! 1178$!
919$! Looks Like DECC, Set To Use DECC. 1179$! Looks Like DECC, Set To Use DECC.
@@ -930,7 +1190,9 @@ $ CC = "CC"
930$ IF ARCH.EQS."VAX" .AND. F$TRNLNM("DECC$CC_DEFAULT").NES."/DECC" - 1190$ IF ARCH.EQS."VAX" .AND. F$TRNLNM("DECC$CC_DEFAULT").NES."/DECC" -
931 THEN CC = "CC/DECC" 1191 THEN CC = "CC/DECC"
932$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=ANSI89" + - 1192$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=ANSI89" + -
933 "/NOLIST/PREFIX=ALL/INCLUDE=SYS$DISK:[]" + CCEXTRAFLAGS 1193 "/NOLIST/PREFIX=ALL" + -
1194 "/INCLUDE=(SYS$DISK:[],SYS$DISK:[-],SYS$DISK:[.ENGINE.VENDOR_DEFNS],SYS$DISK:[.EVP])" + -
1195 CCEXTRAFLAGS
934$! 1196$!
935$! Define The Linker Options File Name. 1197$! Define The Linker Options File Name.
936$! 1198$!
@@ -942,7 +1204,7 @@ $ ENDIF
942$! 1204$!
943$! Check To See If We Are To Use VAXC. 1205$! Check To See If We Are To Use VAXC.
944$! 1206$!
945$ IF (P3.EQS."VAXC") 1207$ IF (P4.EQS."VAXC")
946$ THEN 1208$ THEN
947$! 1209$!
948$! Looks Like VAXC, Set To Use VAXC. 1210$! Looks Like VAXC, Set To Use VAXC.
@@ -962,7 +1224,8 @@ $ WRITE SYS$OUTPUT "There is no VAX C on Alpha!"
962$ EXIT 1224$ EXIT
963$ ENDIF 1225$ ENDIF
964$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC" 1226$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC"
965$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/NOLIST/INCLUDE=SYS$DISK:[]" + - 1227$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
1228 "/INCLUDE=(SYS$DISK:[],SYS$DISK:[-],SYS$DISK:[.ENGINE.VENDOR_DEFNS])" + -
966 CCEXTRAFLAGS 1229 CCEXTRAFLAGS
967$ CCDEFS = """VAXC""," + CCDEFS 1230$ CCDEFS = """VAXC""," + CCDEFS
968$! 1231$!
@@ -980,7 +1243,7 @@ $ ENDIF
980$! 1243$!
981$! Check To See If We Are To Use GNU C. 1244$! Check To See If We Are To Use GNU C.
982$! 1245$!
983$ IF (P3.EQS."GNUC") 1246$ IF (P4.EQS."GNUC")
984$ THEN 1247$ THEN
985$! 1248$!
986$! Looks Like GNUC, Set To Use GNUC. 1249$! Looks Like GNUC, Set To Use GNUC.
@@ -994,7 +1257,8 @@ $!
994$! Use GNU C... 1257$! Use GNU C...
995$! 1258$!
996$ CC = "GCC/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + - 1259$ CC = "GCC/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
997 "/INCLUDE=SYS$DISK:[]" + CCEXTRAFLAGS 1260 "/INCLUDE=(SYS$DISK:[],SYS$DISK:[-],SYS$DISK:[.ENGINE.VENDOR_DEFNS])" + -
1261 CCEXTRAFLAGS
998$! 1262$!
999$! Define The Linker Options File Name. 1263$! Define The Linker Options File Name.
1000$! 1264$!
@@ -1051,7 +1315,7 @@ $ CC4DISABLEWARNINGS = ""
1051$ ENDIF 1315$ ENDIF
1052$ CC3 = CC + "/DEFINE=(" + CCDEFS + ISSEVEN + ")" + CCDISABLEWARNINGS 1316$ CC3 = CC + "/DEFINE=(" + CCDEFS + ISSEVEN + ")" + CCDISABLEWARNINGS
1053$ CC = CC + "/DEFINE=(" + CCDEFS + ")" + CCDISABLEWARNINGS 1317$ CC = CC + "/DEFINE=(" + CCDEFS + ")" + CCDISABLEWARNINGS
1054$ IF ARCH .EQS. "VAX" .AND. COMPILER .EQS. "DECC" .AND. P2 .NES. "DEBUG" 1318$ IF ARCH .EQS. "VAX" .AND. COMPILER .EQS. "DECC" .AND. P3 .NES. "DEBUG"
1055$ THEN 1319$ THEN
1056$ CC5 = CC + "/OPTIMIZE=NODISJOINT" 1320$ CC5 = CC + "/OPTIMIZE=NODISJOINT"
1057$ ELSE 1321$ ELSE
@@ -1070,7 +1334,7 @@ $!
1070$! Tell The User We Don't Know What They Want. 1334$! Tell The User We Don't Know What They Want.
1071$! 1335$!
1072$ WRITE SYS$OUTPUT "" 1336$ WRITE SYS$OUTPUT ""
1073$ WRITE SYS$OUTPUT "The Option ",P3," Is Invalid. The Valid Options Are:" 1337$ WRITE SYS$OUTPUT "The Option ",P4," Is Invalid. The Valid Options Are:"
1074$ WRITE SYS$OUTPUT "" 1338$ WRITE SYS$OUTPUT ""
1075$ WRITE SYS$OUTPUT " VAXC : To Compile With VAX C." 1339$ WRITE SYS$OUTPUT " VAXC : To Compile With VAX C."
1076$ WRITE SYS$OUTPUT " DECC : To Compile With DEC C." 1340$ WRITE SYS$OUTPUT " DECC : To Compile With DEC C."
@@ -1096,17 +1360,18 @@ $ WRITE SYS$OUTPUT "Main MACRO Compiling Command: ",MACRO
1096$! 1360$!
1097$! Time to check the contents, and to make sure we get the correct library. 1361$! Time to check the contents, and to make sure we get the correct library.
1098$! 1362$!
1099$ IF P4.EQS."SOCKETSHR" .OR. P4.EQS."MULTINET" .OR. P4.EQS."UCX" 1363$ IF P5.EQS."SOCKETSHR" .OR. P5.EQS."MULTINET" .OR. P5.EQS."UCX" -
1364 .OR. P5.EQS."TCPIP" .OR. P5.EQS."NONE"
1100$ THEN 1365$ THEN
1101$! 1366$!
1102$! Check to see if SOCKETSHR was chosen 1367$! Check to see if SOCKETSHR was chosen
1103$! 1368$!
1104$ IF P4.EQS."SOCKETSHR" 1369$ IF P5.EQS."SOCKETSHR"
1105$ THEN 1370$ THEN
1106$! 1371$!
1107$! Set the library to use SOCKETSHR 1372$! Set the library to use SOCKETSHR
1108$! 1373$!
1109$ TCPIP_LIB = "[-.VMS]SOCKETSHR_SHR.OPT/OPT" 1374$ TCPIP_LIB = "SYS$DISK:[-.VMS]SOCKETSHR_SHR.OPT/OPT"
1110$! 1375$!
1111$! Done with SOCKETSHR 1376$! Done with SOCKETSHR
1112$! 1377$!
@@ -1114,12 +1379,12 @@ $ ENDIF
1114$! 1379$!
1115$! Check to see if MULTINET was chosen 1380$! Check to see if MULTINET was chosen
1116$! 1381$!
1117$ IF P4.EQS."MULTINET" 1382$ IF P5.EQS."MULTINET"
1118$ THEN 1383$ THEN
1119$! 1384$!
1120$! Set the library to use UCX emulation. 1385$! Set the library to use UCX emulation.
1121$! 1386$!
1122$ P4 = "UCX" 1387$ P5 = "UCX"
1123$! 1388$!
1124$! Done with MULTINET 1389$! Done with MULTINET
1125$! 1390$!
@@ -1127,24 +1392,50 @@ $ ENDIF
1127$! 1392$!
1128$! Check to see if UCX was chosen 1393$! Check to see if UCX was chosen
1129$! 1394$!
1130$ IF P4.EQS."UCX" 1395$ IF P5.EQS."UCX"
1131$ THEN 1396$ THEN
1132$! 1397$!
1133$! Set the library to use UCX. 1398$! Set the library to use UCX.
1134$! 1399$!
1135$ TCPIP_LIB = "[-.VMS]UCX_SHR_DECC.OPT/OPT" 1400$ TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC.OPT/OPT"
1136$ IF F$TRNLNM("UCX$IPC_SHR") .NES. "" 1401$ IF F$TRNLNM("UCX$IPC_SHR") .NES. ""
1137$ THEN 1402$ THEN
1138$ TCPIP_LIB = "[-.VMS]UCX_SHR_DECC_LOG.OPT/OPT" 1403$ TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC_LOG.OPT/OPT"
1139$ ELSE 1404$ ELSE
1140$ IF COMPILER .NES. "DECC" .AND. ARCH .EQS. "VAX" THEN - 1405$ IF COMPILER .NES. "DECC" .AND. ARCH .EQS. "VAX" THEN -
1141 TCPIP_LIB = "[-.VMS]UCX_SHR_VAXC.OPT/OPT" 1406 TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_VAXC.OPT/OPT"
1142$ ENDIF 1407$ ENDIF
1143$! 1408$!
1144$! Done with UCX 1409$! Done with UCX
1145$! 1410$!
1146$ ENDIF 1411$ ENDIF
1147$! 1412$!
1413$! Check to see if TCPIP was chosen
1414$!
1415$ IF P5.EQS."TCPIP"
1416$ THEN
1417$!
1418$! Set the library to use TCPIP (post UCX).
1419$!
1420$ TCPIP_LIB = "SYS$DISK:[-.VMS]TCPIP_SHR_DECC.OPT/OPT"
1421$!
1422$! Done with TCPIP
1423$!
1424$ ENDIF
1425$!
1426$! Check to see if NONE was chosen
1427$!
1428$ IF P5.EQS."NONE"
1429$ THEN
1430$!
1431$! Do not use a TCPIP library.
1432$!
1433$ TCPIP_LIB = ""
1434$!
1435$! Done with TCPIP
1436$!
1437$ ENDIF
1438$!
1148$! Print info 1439$! Print info
1149$! 1440$!
1150$ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB 1441$ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB
@@ -1156,10 +1447,11 @@ $!
1156$! Tell The User We Don't Know What They Want. 1447$! Tell The User We Don't Know What They Want.
1157$! 1448$!
1158$ WRITE SYS$OUTPUT "" 1449$ WRITE SYS$OUTPUT ""
1159$ WRITE SYS$OUTPUT "The Option ",P4," Is Invalid. The Valid Options Are:" 1450$ WRITE SYS$OUTPUT "The Option ",P5," Is Invalid. The Valid Options Are:"
1160$ WRITE SYS$OUTPUT "" 1451$ WRITE SYS$OUTPUT ""
1161$ WRITE SYS$OUTPUT " SOCKETSHR : To link with SOCKETSHR TCP/IP library." 1452$ WRITE SYS$OUTPUT " SOCKETSHR : To link with SOCKETSHR TCP/IP library."
1162$ WRITE SYS$OUTPUT " UCX : To link with UCX TCP/IP library." 1453$ WRITE SYS$OUTPUT " UCX : To link with UCX TCP/IP library."
1454$ WRITE SYS$OUTPUT " TCPIP : To link with TCPIP (post UCX) TCP/IP library."
1163$ WRITE SYS$OUTPUT "" 1455$ WRITE SYS$OUTPUT ""
1164$! 1456$!
1165$! Time To EXIT. 1457$! Time To EXIT.
@@ -1173,9 +1465,10 @@ $!
1173$! Check if the user wanted to compile just a subset of all the encryption 1465$! Check if the user wanted to compile just a subset of all the encryption
1174$! methods. 1466$! methods.
1175$! 1467$!
1176$ IF P6 .NES. "" 1468$ IF P7 .NES. ""
1177$ THEN 1469$ THEN
1178$ ENCRYPT_TYPES = P6 1470$ ENCRYPT_TYPES = P7
1471$! NYI: ENCRYPT_PROGRAMS = P7
1179$ ENDIF 1472$ ENDIF
1180$! 1473$!
1181$! Time To RETURN... 1474$! Time To RETURN...
@@ -1191,6 +1484,7 @@ $!
1191$! Save directory information 1484$! Save directory information
1192$! 1485$!
1193$ __HERE = F$PARSE(F$PARSE("A.;",F$ENVIRONMENT("PROCEDURE"))-"A.;","[]A.;") - "A.;" 1486$ __HERE = F$PARSE(F$PARSE("A.;",F$ENVIRONMENT("PROCEDURE"))-"A.;","[]A.;") - "A.;"
1487$ __HERE = F$EDIT(__HERE,"UPCASE")
1194$ __TOP = __HERE - "CRYPTO]" 1488$ __TOP = __HERE - "CRYPTO]"
1195$ __INCLUDE = __TOP + "INCLUDE.OPENSSL]" 1489$ __INCLUDE = __TOP + "INCLUDE.OPENSSL]"
1196$! 1490$!
diff --git a/src/lib/libcrypto/des/VERSION b/src/lib/libcrypto/des/VERSION
index f62d8bdac0..c7d01542bc 100644
--- a/src/lib/libcrypto/des/VERSION
+++ b/src/lib/libcrypto/des/VERSION
@@ -1,3 +1,4 @@
1 Fixed the weak key values which were wrong :-(
1 Defining SIGACTION causes sigaction() to be used instead of signal(). 2 Defining SIGACTION causes sigaction() to be used instead of signal().
2 SIGUSR1/SIGUSR2 are no longer mapped in the read tty stuff because it 3 SIGUSR1/SIGUSR2 are no longer mapped in the read tty stuff because it
3 can cause problems. This should hopefully not affect normal 4 can cause problems. This should hopefully not affect normal
diff --git a/src/lib/libcrypto/des/asm/des686.pl b/src/lib/libcrypto/des/asm/des686.pl
index cf1a82fb5c..d3ad5d5edd 100644
--- a/src/lib/libcrypto/des/asm/des686.pl
+++ b/src/lib/libcrypto/des/asm/des686.pl
@@ -1,4 +1,4 @@
1#!/usr/bin/perl 1#!/usr/local/bin/perl
2 2
3$prog="des686.pl"; 3$prog="des686.pl";
4 4
@@ -46,19 +46,19 @@ EOF
46$L="edi"; 46$L="edi";
47$R="esi"; 47$R="esi";
48 48
49&des_encrypt("des_encrypt",1); 49&DES_encrypt("DES_encrypt1",1);
50&des_encrypt("des_encrypt2",0); 50&DES_encrypt("DES_encrypt2",0);
51 51
52&des_encrypt3("des_encrypt3",1); 52&DES_encrypt3("DES_encrypt3",1);
53&des_encrypt3("des_decrypt3",0); 53&DES_encrypt3("DES_decrypt3",0);
54 54
55&file_end(); 55&file_end();
56 56
57sub des_encrypt 57sub DES_encrypt
58 { 58 {
59 local($name,$do_ip)=@_; 59 local($name,$do_ip)=@_;
60 60
61 &function_begin($name,"EXTRN _des_SPtrans:DWORD"); 61 &function_begin($name,"EXTRN _DES_SPtrans:DWORD");
62 62
63 &comment(""); 63 &comment("");
64 &comment("Load the 2 words"); 64 &comment("Load the 2 words");
@@ -94,11 +94,11 @@ sub des_encrypt
94 { 94 {
95 &comment(""); 95 &comment("");
96 &comment("Round $i"); 96 &comment("Round $i");
97 &D_ENCRYPT($L,$R,$i*2,"ebp","des_SPtrans","ecx","edx","eax","ebx"); 97 &D_ENCRYPT($L,$R,$i*2,"ebp","DES_SPtrans","ecx","edx","eax","ebx");
98 98
99 &comment(""); 99 &comment("");
100 &comment("Round ".sprintf("%d",$i+1)); 100 &comment("Round ".sprintf("%d",$i+1));
101 &D_ENCRYPT($R,$L,($i+1)*2,"ebp","des_SPtrans","ecx","edx","eax","ebx"); 101 &D_ENCRYPT($R,$L,($i+1)*2,"ebp","DES_SPtrans","ecx","edx","eax","ebx");
102 } 102 }
103 &jmp(&label("end")); 103 &jmp(&label("end"));
104 104
@@ -108,10 +108,10 @@ sub des_encrypt
108 { 108 {
109 &comment(""); 109 &comment("");
110 &comment("Round $i"); 110 &comment("Round $i");
111 &D_ENCRYPT($L,$R,$i*2,"ebp","des_SPtrans","ecx","edx","eax","ebx"); 111 &D_ENCRYPT($L,$R,$i*2,"ebp","DES_SPtrans","ecx","edx","eax","ebx");
112 &comment(""); 112 &comment("");
113 &comment("Round ".sprintf("%d",$i-1)); 113 &comment("Round ".sprintf("%d",$i-1));
114 &D_ENCRYPT($R,$L,($i-1)*2,"ebp","des_SPtrans","ecx","edx","eax","ebx"); 114 &D_ENCRYPT($R,$L,($i-1)*2,"ebp","DES_SPtrans","ecx","edx","eax","ebx");
115 } 115 }
116 116
117 &set_label("end"); 117 &set_label("end");
diff --git a/src/lib/libcrypto/des/asm/readme b/src/lib/libcrypto/des/asm/readme
index f8529d9307..1beafe253b 100644
--- a/src/lib/libcrypto/des/asm/readme
+++ b/src/lib/libcrypto/des/asm/readme
@@ -8,7 +8,7 @@ assembler for the inner DES routines in libdes :-).
8 8
9The file to implement in assembler is des_enc.c. Replace the following 9The file to implement in assembler is des_enc.c. Replace the following
104 functions 104 functions
11des_encrypt(DES_LONG data[2],des_key_schedule ks, int encrypt); 11des_encrypt1(DES_LONG data[2],des_key_schedule ks, int encrypt);
12des_encrypt2(DES_LONG data[2],des_key_schedule ks, int encrypt); 12des_encrypt2(DES_LONG data[2],des_key_schedule ks, int encrypt);
13des_encrypt3(DES_LONG data[2],des_key_schedule ks1,ks2,ks3); 13des_encrypt3(DES_LONG data[2],des_key_schedule ks1,ks2,ks3);
14des_decrypt3(DES_LONG data[2],des_key_schedule ks1,ks2,ks3); 14des_decrypt3(DES_LONG data[2],des_key_schedule ks1,ks2,ks3);
diff --git a/src/lib/libcrypto/des/cbc3_enc.c b/src/lib/libcrypto/des/cbc3_enc.c
index 92a78b05d6..b5db4e14f7 100644
--- a/src/lib/libcrypto/des/cbc3_enc.c
+++ b/src/lib/libcrypto/des/cbc3_enc.c
@@ -58,42 +58,42 @@
58 58
59#include "des_locl.h" 59#include "des_locl.h"
60 60
61/* HAS BUGS? DON'T USE - this is only present for use in des.c */ 61/* HAS BUGS! DON'T USE - this is only present for use in des.c */
62void des_3cbc_encrypt(input, output, length, ks1, ks2, iv1, iv2, enc) 62void DES_3cbc_encrypt(DES_cblock *input, DES_cblock *output, long length,
63des_cblock (*input); 63 DES_key_schedule ks1, DES_key_schedule ks2, DES_cblock *iv1,
64des_cblock (*output); 64 DES_cblock *iv2, int enc)
65long length;
66des_key_schedule ks1;
67des_key_schedule ks2;
68des_cblock (*iv1);
69des_cblock (*iv2);
70int enc;
71 { 65 {
72 int off=((int)length-1)/8; 66 int off=((int)length-1)/8;
73 long l8=((length+7)/8)*8; 67 long l8=((length+7)/8)*8;
74 des_cblock niv1,niv2; 68 DES_cblock niv1,niv2;
75 69
76 if (enc == DES_ENCRYPT) 70 if (enc == DES_ENCRYPT)
77 { 71 {
78 des_cbc_encrypt(input,output,length,ks1,iv1,enc); 72 DES_cbc_encrypt((unsigned char*)input,
79 if (length >= sizeof(des_cblock)) 73 (unsigned char*)output,length,&ks1,iv1,enc);
80 memcpy(niv1,output[off],sizeof(des_cblock)); 74 if (length >= sizeof(DES_cblock))
81 des_cbc_encrypt(output,output,l8,ks2,iv1,!enc); 75 memcpy(niv1,output[off],sizeof(DES_cblock));
82 des_cbc_encrypt(output,output,l8,ks1,iv2, enc); 76 DES_cbc_encrypt((unsigned char*)output,
83 if (length >= sizeof(des_cblock)) 77 (unsigned char*)output,l8,&ks2,iv1,!enc);
84 memcpy(niv2,output[off],sizeof(des_cblock)); 78 DES_cbc_encrypt((unsigned char*)output,
79 (unsigned char*)output,l8,&ks1,iv2,enc);
80 if (length >= sizeof(DES_cblock))
81 memcpy(niv2,output[off],sizeof(DES_cblock));
85 } 82 }
86 else 83 else
87 { 84 {
88 if (length >= sizeof(des_cblock)) 85 if (length >= sizeof(DES_cblock))
89 memcpy(niv2,input[off],sizeof(des_cblock)); 86 memcpy(niv2,input[off],sizeof(DES_cblock));
90 des_cbc_encrypt(input,output,l8,ks1,iv2,enc); 87 DES_cbc_encrypt((unsigned char*)input,
91 des_cbc_encrypt(output,output,l8,ks2,iv1,!enc); 88 (unsigned char*)output,l8,&ks1,iv2,enc);
92 if (length >= sizeof(des_cblock)) 89 DES_cbc_encrypt((unsigned char*)output,
93 memcpy(niv1,output[off],sizeof(des_cblock)); 90 (unsigned char*)output,l8,&ks2,iv1,!enc);
94 des_cbc_encrypt(output,output,length,ks1,iv1, enc); 91 if (length >= sizeof(DES_cblock))
92 memcpy(niv1,output[off],sizeof(DES_cblock));
93 DES_cbc_encrypt((unsigned char*)output,
94 (unsigned char*)output,length,&ks1,iv1,enc);
95 } 95 }
96 memcpy(*iv1,niv1,sizeof(des_cblock)); 96 memcpy(*iv1,niv1,sizeof(DES_cblock));
97 memcpy(*iv2,niv2,sizeof(des_cblock)); 97 memcpy(*iv2,niv2,sizeof(DES_cblock));
98 } 98 }
99 99
diff --git a/src/lib/libcrypto/des/des-lib.com b/src/lib/libcrypto/des/des-lib.com
index 2aea7a0dea..fc2c35a1ce 100644
--- a/src/lib/libcrypto/des/des-lib.com
+++ b/src/lib/libcrypto/des/des-lib.com
@@ -846,8 +846,8 @@ $ ENDIF
846$! 846$!
847$! Set Up Initial CC Definitions, Possibly With User Ones 847$! Set Up Initial CC Definitions, Possibly With User Ones
848$! 848$!
849$ CCDEFS = "VMS=1" 849$ CCDEFS = ""
850$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS 850$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = USER_CCDEFS
851$ CCEXTRAFLAGS = "" 851$ CCEXTRAFLAGS = ""
852$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS 852$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS
853$ CCDISABLEWARNINGS = "" 853$ CCDISABLEWARNINGS = ""
diff --git a/src/lib/libcrypto/des/des.c b/src/lib/libcrypto/des/des.c
index c1e5005474..d8c846b23d 100644
--- a/src/lib/libcrypto/des/des.c
+++ b/src/lib/libcrypto/des/des.c
@@ -58,17 +58,26 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include <stdlib.h> 60#include <stdlib.h>
61#ifndef MSDOS 61#include <string.h>
62#include <openssl/opensslconf.h>
63#ifndef OPENSSL_SYS_MSDOS
64#ifndef OPENSSL_SYS_VMS
65#include OPENSSL_UNISTD
66#else /* OPENSSL_SYS_VMS */
67#ifdef __DECC
62#include <unistd.h> 68#include <unistd.h>
63#else 69#else /* not __DECC */
70#include <math.h>
71#endif /* __DECC */
72#endif /* OPENSSL_SYS_VMS */
73#else /* OPENSSL_SYS_MSDOS */
64#include <io.h> 74#include <io.h>
65#define RAND
66#endif 75#endif
67 76
68#include <time.h> 77#include <time.h>
69#include "des_ver.h" 78#include "des_ver.h"
70 79
71#ifdef VMS 80#ifdef OPENSSL_SYS_VMS
72#include <types.h> 81#include <types.h>
73#include <stat.h> 82#include <stat.h>
74#else 83#else
@@ -77,21 +86,10 @@
77#endif 86#endif
78#include <sys/stat.h> 87#include <sys/stat.h>
79#endif 88#endif
80#if defined(NOCONST) 89#include <openssl/des.h>
81#define const 90#include <openssl/rand.h>
82#endif 91#include <openssl/ui_compat.h>
83#include "des.h"
84
85#if defined(__STDC__) || defined(VMS) || defined(M_XENIX) || defined(MSDOS)
86#include <string.h>
87#endif
88 92
89#ifdef RAND
90#define random rand
91#define srandom(s) srand(s)
92#endif
93
94#ifndef NOPROTO
95void usage(void); 93void usage(void);
96void doencryption(void); 94void doencryption(void);
97int uufwrite(unsigned char *data, int size, unsigned int num, FILE *fp); 95int uufwrite(unsigned char *data, int size, unsigned int num, FILE *fp);
@@ -99,21 +97,10 @@ void uufwriteEnd(FILE *fp);
99int uufread(unsigned char *out,int size,unsigned int num,FILE *fp); 97int uufread(unsigned char *out,int size,unsigned int num,FILE *fp);
100int uuencode(unsigned char *in,int num,unsigned char *out); 98int uuencode(unsigned char *in,int num,unsigned char *out);
101int uudecode(unsigned char *in,int num,unsigned char *out); 99int uudecode(unsigned char *in,int num,unsigned char *out);
102void des_3cbc_encrypt(des_cblock *input,des_cblock *output,long length, 100void DES_3cbc_encrypt(DES_cblock *input,DES_cblock *output,long length,
103 des_key_schedule sk1,des_key_schedule sk2, 101 DES_key_schedule sk1,DES_key_schedule sk2,
104 des_cblock *ivec1,des_cblock *ivec2,int enc); 102 DES_cblock *ivec1,DES_cblock *ivec2,int enc);
105#else 103#ifdef OPENSSL_SYS_VMS
106void usage();
107void doencryption();
108int uufwrite();
109void uufwriteEnd();
110int uufread();
111int uuencode();
112int uudecode();
113void des_3cbc_encrypt();
114#endif
115
116#ifdef VMS
117#define EXIT(a) exit(a&0x10000000L) 104#define EXIT(a) exit(a&0x10000000L)
118#else 105#else
119#define EXIT(a) exit(a) 106#define EXIT(a) exit(a)
@@ -133,14 +120,12 @@ int uubufnum=0;
133#define OUTUUBUF (65*100) 120#define OUTUUBUF (65*100)
134unsigned char b[OUTUUBUF]; 121unsigned char b[OUTUUBUF];
135unsigned char bb[300]; 122unsigned char bb[300];
136des_cblock cksum={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; 123DES_cblock cksum={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
137char cksumname[200]=""; 124char cksumname[200]="";
138 125
139int vflag,cflag,eflag,dflag,kflag,bflag,fflag,sflag,uflag,flag3,hflag,error; 126int vflag,cflag,eflag,dflag,kflag,bflag,fflag,sflag,uflag,flag3,hflag,error;
140 127
141int main(argc, argv) 128int main(int argc, char **argv)
142int argc;
143char **argv;
144 { 129 {
145 int i; 130 int i;
146 struct stat ins,outs; 131 struct stat ins,outs;
@@ -168,12 +153,14 @@ char **argv;
168 case 'c': 153 case 'c':
169 cflag=1; 154 cflag=1;
170 strncpy(cksumname,p,200); 155 strncpy(cksumname,p,200);
156 cksumname[sizeof(cksumname)-1]='\0';
171 p+=strlen(cksumname); 157 p+=strlen(cksumname);
172 break; 158 break;
173 case 'C': 159 case 'C':
174 cflag=1; 160 cflag=1;
175 longk=1; 161 longk=1;
176 strncpy(cksumname,p,200); 162 strncpy(cksumname,p,200);
163 cksumname[sizeof(cksumname)-1]='\0';
177 p+=strlen(cksumname); 164 p+=strlen(cksumname);
178 break; 165 break;
179 case 'e': 166 case 'e':
@@ -205,6 +192,7 @@ char **argv;
205 case 'u': 192 case 'u':
206 uflag=1; 193 uflag=1;
207 strncpy(uuname,p,200); 194 strncpy(uuname,p,200);
195 uuname[sizeof(uuname)-1]='\0';
208 p+=strlen(uuname); 196 p+=strlen(uuname);
209 break; 197 break;
210 case 'h': 198 case 'h':
@@ -274,12 +262,12 @@ char **argv;
274#endif 262#endif
275 if ( (in != NULL) && 263 if ( (in != NULL) &&
276 (out != NULL) && 264 (out != NULL) &&
277#ifndef MSDOS 265#ifndef OPENSSL_SYS_MSDOS
278 (stat(in,&ins) != -1) && 266 (stat(in,&ins) != -1) &&
279 (stat(out,&outs) != -1) && 267 (stat(out,&outs) != -1) &&
280 (ins.st_dev == outs.st_dev) && 268 (ins.st_dev == outs.st_dev) &&
281 (ins.st_ino == outs.st_ino)) 269 (ins.st_ino == outs.st_ino))
282#else /* MSDOS */ 270#else /* OPENSSL_SYS_MSDOS */
283 (strcmp(in,out) == 0)) 271 (strcmp(in,out) == 0))
284#endif 272#endif
285 { 273 {
@@ -314,7 +302,7 @@ char **argv;
314 EXIT(5); 302 EXIT(5);
315 } 303 }
316 304
317#ifdef MSDOS 305#ifdef OPENSSL_SYS_MSDOS
318 /* This should set the file to binary mode. */ 306 /* This should set the file to binary mode. */
319 { 307 {
320#include <fcntl.h> 308#include <fcntl.h>
@@ -331,33 +319,33 @@ char **argv;
331 EXIT(0); 319 EXIT(0);
332 } 320 }
333 321
334void usage() 322void usage(void)
335 { 323 {
336 char **u; 324 char **u;
337 static const char *Usage[]={ 325 static const char *Usage[]={
338"des <options> [input-file [output-file]]", 326"des <options> [input-file [output-file]]",
339"options:", 327"options:",
340"-v : des(1) version number", 328"-v : des(1) version number",
341"-e : encrypt using sunOS compatible user key to DES key conversion.", 329"-e : encrypt using SunOS compatible user key to DES key conversion.",
342"-E : encrypt ", 330"-E : encrypt ",
343"-d : decrypt using sunOS compatible user key to DES key conversion.", 331"-d : decrypt using SunOS compatible user key to DES key conversion.",
344"-D : decrypt ", 332"-D : decrypt ",
345"-c[ckname] : generate a cbc_cksum using sunOS compatible user key to", 333"-c[ckname] : generate a cbc_cksum using SunOS compatible user key to",
346" DES key conversion and output to ckname (stdout default,", 334" DES key conversion and output to ckname (stdout default,",
347" stderr if data being output on stdout). The checksum is", 335" stderr if data being output on stdout). The checksum is",
348" generated before encryption and after decryption if used", 336" generated before encryption and after decryption if used",
349" in conjunction with -[eEdD].", 337" in conjunction with -[eEdD].",
350"-C[ckname] : generate a cbc_cksum as for -c but compatible with -[ED].", 338"-C[ckname] : generate a cbc_cksum as for -c but compatible with -[ED].",
351"-k key : use key 'key'", 339"-k key : use key 'key'",
352"-h : the key that is entered will be a hexidecimal number", 340"-h : the key that is entered will be a hexadecimal number",
353" that is used directly as the des key", 341" that is used directly as the des key",
354"-u[uuname] : input file is uudecoded if -[dD] or output uuencoded data if -[eE]", 342"-u[uuname] : input file is uudecoded if -[dD] or output uuencoded data if -[eE]",
355" (uuname is the filename to put in the uuencode header).", 343" (uuname is the filename to put in the uuencode header).",
356"-b : encrypt using DES in ecb encryption mode, the defaut is cbc mode.", 344"-b : encrypt using DES in ecb encryption mode, the default is cbc mode.",
357"-3 : encrypt using tripple DES encryption. This uses 2 keys", 345"-3 : encrypt using triple DES encryption. This uses 2 keys",
358" generated from the input key. If the input key is less", 346" generated from the input key. If the input key is less",
359" than 8 characters long, this is equivelent to normal", 347" than 8 characters long, this is equivalent to normal",
360" encryption. Default is tripple cbc, -b makes it tripple ecb.", 348" encryption. Default is triple cbc, -b makes it triple ecb.",
361NULL 349NULL
362}; 350};
363 for (u=(char **)Usage; *u; u++) 351 for (u=(char **)Usage; *u; u++)
@@ -369,31 +357,29 @@ NULL
369 EXIT(1); 357 EXIT(1);
370 } 358 }
371 359
372void doencryption() 360void doencryption(void)
373 { 361 {
374#ifdef _LIBC 362#ifdef _LIBC
375 extern int srandom();
376 extern int random();
377 extern unsigned long time(); 363 extern unsigned long time();
378#endif 364#endif
379 365
380 register int i; 366 register int i;
381 des_key_schedule ks,ks2; 367 DES_key_schedule ks,ks2;
382 unsigned char iv[8],iv2[8]; 368 DES_cblock iv,iv2;
383 char *p; 369 char *p;
384 int num=0,j,k,l,rem,ll,len,last,ex=0; 370 int num=0,j,k,l,rem,ll,len,last,ex=0;
385 des_cblock kk,k2; 371 DES_cblock kk,k2;
386 FILE *O; 372 FILE *O;
387 int Exit=0; 373 int Exit=0;
388#ifndef MSDOS 374#ifndef OPENSSL_SYS_MSDOS
389 static unsigned char buf[BUFSIZE+8],obuf[BUFSIZE+8]; 375 static unsigned char buf[BUFSIZE+8],obuf[BUFSIZE+8];
390#else 376#else
391 static unsigned char *buf=NULL,*obuf=NULL; 377 static unsigned char *buf=NULL,*obuf=NULL;
392 378
393 if (buf == NULL) 379 if (buf == NULL)
394 { 380 {
395 if ( (( buf=(unsigned char *)Malloc(BUFSIZE+8)) == NULL) || 381 if ( (( buf=OPENSSL_malloc(BUFSIZE+8)) == NULL) ||
396 ((obuf=(unsigned char *)Malloc(BUFSIZE+8)) == NULL)) 382 ((obuf=OPENSSL_malloc(BUFSIZE+8)) == NULL))
397 { 383 {
398 fputs("Not enough memory\n",stderr); 384 fputs("Not enough memory\n",stderr);
399 Exit=10; 385 Exit=10;
@@ -440,19 +426,19 @@ void doencryption()
440 else 426 else
441 k2[i-8]=k; 427 k2[i-8]=k;
442 } 428 }
443 des_set_key((C_Block *)k2,ks2); 429 DES_set_key_unchecked(&k2,&ks2);
444 memset(k2,0,sizeof(k2)); 430 memset(k2,0,sizeof(k2));
445 } 431 }
446 else if (longk || flag3) 432 else if (longk || flag3)
447 { 433 {
448 if (flag3) 434 if (flag3)
449 { 435 {
450 des_string_to_2keys(key,(C_Block *)kk,(C_Block *)k2); 436 DES_string_to_2keys(key,&kk,&k2);
451 des_set_key((C_Block *)k2,ks2); 437 DES_set_key_unchecked(&k2,&ks2);
452 memset(k2,0,sizeof(k2)); 438 memset(k2,0,sizeof(k2));
453 } 439 }
454 else 440 else
455 des_string_to_key(key,(C_Block *)kk); 441 DES_string_to_key(key,&kk);
456 } 442 }
457 else 443 else
458 for (i=0; i<KEYSIZ; i++) 444 for (i=0; i<KEYSIZ; i++)
@@ -470,7 +456,7 @@ void doencryption()
470 kk[i]=key[i]|0x80; 456 kk[i]=key[i]|0x80;
471 } 457 }
472 458
473 des_set_key((C_Block *)kk,ks); 459 DES_set_key_unchecked(&kk,&ks);
474 memset(key,0,sizeof(key)); 460 memset(key,0,sizeof(key));
475 memset(kk,0,sizeof(kk)); 461 memset(kk,0,sizeof(kk));
476 /* woops - A bug that does not showup under unix :-( */ 462 /* woops - A bug that does not showup under unix :-( */
@@ -498,9 +484,8 @@ void doencryption()
498 len=l-rem; 484 len=l-rem;
499 if (feof(DES_IN)) 485 if (feof(DES_IN))
500 { 486 {
501 srandom((unsigned int)time(NULL));
502 for (i=7-rem; i>0; i--) 487 for (i=7-rem; i>0; i--)
503 buf[l++]=random()&0xff; 488 RAND_pseudo_bytes(buf + l++, 1);
504 buf[l++]=rem; 489 buf[l++]=rem;
505 ex=1; 490 ex=1;
506 len+=rem; 491 len+=rem;
@@ -510,8 +495,8 @@ void doencryption()
510 495
511 if (cflag) 496 if (cflag)
512 { 497 {
513 des_cbc_cksum((C_Block *)buf,(C_Block *)cksum, 498 DES_cbc_cksum(buf,&cksum,
514 (long)len,ks,(C_Block *)cksum); 499 (long)len,&ks,&cksum);
515 if (!eflag) 500 if (!eflag)
516 { 501 {
517 if (feof(DES_IN)) break; 502 if (feof(DES_IN)) break;
@@ -521,34 +506,34 @@ void doencryption()
521 506
522 if (bflag && !flag3) 507 if (bflag && !flag3)
523 for (i=0; i<l; i+=8) 508 for (i=0; i<l; i+=8)
524 des_ecb_encrypt( 509 DES_ecb_encrypt(
525 (des_cblock *)&(buf[i]), 510 (DES_cblock *)&(buf[i]),
526 (des_cblock *)&(obuf[i]), 511 (DES_cblock *)&(obuf[i]),
527 ks,do_encrypt); 512 &ks,do_encrypt);
528 else if (flag3 && bflag) 513 else if (flag3 && bflag)
529 for (i=0; i<l; i+=8) 514 for (i=0; i<l; i+=8)
530 des_ecb2_encrypt( 515 DES_ecb2_encrypt(
531 (des_cblock *)&(buf[i]), 516 (DES_cblock *)&(buf[i]),
532 (des_cblock *)&(obuf[i]), 517 (DES_cblock *)&(obuf[i]),
533 ks,ks2,do_encrypt); 518 &ks,&ks2,do_encrypt);
534 else if (flag3 && !bflag) 519 else if (flag3 && !bflag)
535 { 520 {
536 char tmpbuf[8]; 521 char tmpbuf[8];
537 522
538 if (rem) memcpy(tmpbuf,&(buf[l]), 523 if (rem) memcpy(tmpbuf,&(buf[l]),
539 (unsigned int)rem); 524 (unsigned int)rem);
540 des_3cbc_encrypt( 525 DES_3cbc_encrypt(
541 (des_cblock *)buf,(des_cblock *)obuf, 526 (DES_cblock *)buf,(DES_cblock *)obuf,
542 (long)l,ks,ks2,(des_cblock *)iv, 527 (long)l,ks,ks2,&iv,
543 (des_cblock *)iv2,do_encrypt); 528 &iv2,do_encrypt);
544 if (rem) memcpy(&(buf[l]),tmpbuf, 529 if (rem) memcpy(&(buf[l]),tmpbuf,
545 (unsigned int)rem); 530 (unsigned int)rem);
546 } 531 }
547 else 532 else
548 { 533 {
549 des_cbc_encrypt( 534 DES_cbc_encrypt(
550 (des_cblock *)buf,(des_cblock *)obuf, 535 buf,obuf,
551 (long)l,ks,(des_cblock *)iv,do_encrypt); 536 (long)l,&ks,&iv,do_encrypt);
552 if (l >= 8) memcpy(iv,&(obuf[l-8]),8); 537 if (l >= 8) memcpy(iv,&(obuf[l-8]),8);
553 } 538 }
554 if (rem) memcpy(buf,&(buf[l]),(unsigned int)rem); 539 if (rem) memcpy(buf,&(buf[l]),(unsigned int)rem);
@@ -600,28 +585,28 @@ void doencryption()
600 585
601 if (bflag && !flag3) 586 if (bflag && !flag3)
602 for (i=0; i<l; i+=8) 587 for (i=0; i<l; i+=8)
603 des_ecb_encrypt( 588 DES_ecb_encrypt(
604 (des_cblock *)&(buf[i]), 589 (DES_cblock *)&(buf[i]),
605 (des_cblock *)&(obuf[i]), 590 (DES_cblock *)&(obuf[i]),
606 ks,do_encrypt); 591 &ks,do_encrypt);
607 else if (flag3 && bflag) 592 else if (flag3 && bflag)
608 for (i=0; i<l; i+=8) 593 for (i=0; i<l; i+=8)
609 des_ecb2_encrypt( 594 DES_ecb2_encrypt(
610 (des_cblock *)&(buf[i]), 595 (DES_cblock *)&(buf[i]),
611 (des_cblock *)&(obuf[i]), 596 (DES_cblock *)&(obuf[i]),
612 ks,ks2,do_encrypt); 597 &ks,&ks2,do_encrypt);
613 else if (flag3 && !bflag) 598 else if (flag3 && !bflag)
614 { 599 {
615 des_3cbc_encrypt( 600 DES_3cbc_encrypt(
616 (des_cblock *)buf,(des_cblock *)obuf, 601 (DES_cblock *)buf,(DES_cblock *)obuf,
617 (long)l,ks,ks2,(des_cblock *)iv, 602 (long)l,ks,ks2,&iv,
618 (des_cblock *)iv2,do_encrypt); 603 &iv2,do_encrypt);
619 } 604 }
620 else 605 else
621 { 606 {
622 des_cbc_encrypt( 607 DES_cbc_encrypt(
623 (des_cblock *)buf,(des_cblock *)obuf, 608 buf,obuf,
624 (long)l,ks,(des_cblock *)iv,do_encrypt); 609 (long)l,&ks,&iv,do_encrypt);
625 if (l >= 8) memcpy(iv,&(buf[l-8]),8); 610 if (l >= 8) memcpy(iv,&(buf[l-8]),8);
626 } 611 }
627 612
@@ -646,9 +631,9 @@ void doencryption()
646 l=l-8+last; 631 l=l-8+last;
647 } 632 }
648 i=0; 633 i=0;
649 if (cflag) des_cbc_cksum((C_Block *)obuf, 634 if (cflag) DES_cbc_cksum(obuf,
650 (C_Block *)cksum,(long)l/8*8,ks, 635 (DES_cblock *)cksum,(long)l/8*8,&ks,
651 (C_Block *)cksum); 636 (DES_cblock *)cksum);
652 while (i != l) 637 while (i != l)
653 { 638 {
654 j=fwrite(obuf,1,(unsigned int)l-i,DES_OUT); 639 j=fwrite(obuf,1,(unsigned int)l-i,DES_OUT);
@@ -683,8 +668,8 @@ void doencryption()
683problems: 668problems:
684 memset(buf,0,sizeof(buf)); 669 memset(buf,0,sizeof(buf));
685 memset(obuf,0,sizeof(obuf)); 670 memset(obuf,0,sizeof(obuf));
686 memset(ks,0,sizeof(ks)); 671 memset(&ks,0,sizeof(ks));
687 memset(ks2,0,sizeof(ks2)); 672 memset(&ks2,0,sizeof(ks2));
688 memset(iv,0,sizeof(iv)); 673 memset(iv,0,sizeof(iv));
689 memset(iv2,0,sizeof(iv2)); 674 memset(iv2,0,sizeof(iv2));
690 memset(kk,0,sizeof(kk)); 675 memset(kk,0,sizeof(kk));
@@ -696,15 +681,8 @@ problems:
696 if (Exit) EXIT(Exit); 681 if (Exit) EXIT(Exit);
697 } 682 }
698 683
699int uufwrite(data, size, num, fp) 684/* We ignore this parameter but it should be > ~50 I believe */
700unsigned char *data; 685int uufwrite(unsigned char *data, int size, unsigned int num, FILE *fp)
701int size;
702unsigned int num;
703FILE *fp;
704
705 /* We ignore this parameter but it should be > ~50 I believe */
706
707
708 { 686 {
709 int i,j,left,rem,ret=num; 687 int i,j,left,rem,ret=num;
710 static int start=1; 688 static int start=1;
@@ -757,8 +735,7 @@ FILE *fp;
757 return(ret); 735 return(ret);
758 } 736 }
759 737
760void uufwriteEnd(fp) 738void uufwriteEnd(FILE *fp)
761FILE *fp;
762 { 739 {
763 int j; 740 int j;
764 static const char *end=" \nend\n"; 741 static const char *end=" \nend\n";
@@ -774,11 +751,8 @@ FILE *fp;
774 fwrite(end,1,strlen(end),fp); 751 fwrite(end,1,strlen(end),fp);
775 } 752 }
776 753
777int uufread(out, size, num, fp) 754/* int size: should always be > ~ 60; I actually ignore this parameter :-) */
778unsigned char *out; 755int uufread(unsigned char *out, int size, unsigned int num, FILE *fp)
779int size; /* should always be > ~ 60; I actually ignore this parameter :-) */
780unsigned int num;
781FILE *fp;
782 { 756 {
783 int i,j,tot; 757 int i,j,tot;
784 static int done=0; 758 static int done=0;
@@ -850,10 +824,7 @@ FILE *fp;
850 *((c)++)=(unsigned char)(((l) )&0xff)) 824 *((c)++)=(unsigned char)(((l) )&0xff))
851 825
852 826
853int uuencode(in, num, out) 827int uuencode(unsigned char *in, int num, unsigned char *out)
854unsigned char *in;
855int num;
856unsigned char *out;
857 { 828 {
858 int j,i,n,tot=0; 829 int j,i,n,tot=0;
859 DES_LONG l; 830 DES_LONG l;
@@ -883,10 +854,7 @@ unsigned char *out;
883 return(tot); 854 return(tot);
884 } 855 }
885 856
886int uudecode(in, num, out) 857int uudecode(unsigned char *in, int num, unsigned char *out)
887unsigned char *in;
888int num;
889unsigned char *out;
890 { 858 {
891 int j,i,k; 859 int j,i,k;
892 unsigned int n=0,space=0; 860 unsigned int n=0,space=0;
diff --git a/src/lib/libcrypto/des/des3s.cpp b/src/lib/libcrypto/des/des3s.cpp
index 9aff6494d9..02d527c057 100644
--- a/src/lib/libcrypto/des/des3s.cpp
+++ b/src/lib/libcrypto/des/des3s.cpp
@@ -32,7 +32,7 @@ void GetTSC(unsigned long& tsc)
32 32
33#include <stdio.h> 33#include <stdio.h>
34#include <stdlib.h> 34#include <stdlib.h>
35#include "des.h" 35#include <openssl/des.h>
36 36
37void main(int argc,char *argv[]) 37void main(int argc,char *argv[])
38 { 38 {
diff --git a/src/lib/libcrypto/des/des_opts.c b/src/lib/libcrypto/des/des_opts.c
index fdf0fbf461..79278b920e 100644
--- a/src/lib/libcrypto/des/des_opts.c
+++ b/src/lib/libcrypto/des/des_opts.c
@@ -59,19 +59,19 @@
59/* define PART1, PART2, PART3 or PART4 to build only with a few of the options. 59/* define PART1, PART2, PART3 or PART4 to build only with a few of the options.
60 * This is for machines with 64k code segment size restrictions. */ 60 * This is for machines with 64k code segment size restrictions. */
61 61
62#ifndef MSDOS 62#if !defined(OPENSSL_SYS_MSDOS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC)) && !defined(OPENSSL_SYS_MACOSX)
63#define TIMES 63#define TIMES
64#endif 64#endif
65 65
66#include <stdio.h> 66#include <stdio.h>
67#ifndef MSDOS 67#ifndef OPENSSL_SYS_MSDOS
68#include <unistd.h> 68#include <openssl/e_os2.h>
69#include OPENSSL_UNISTD
69#else 70#else
70#include <io.h> 71#include <io.h>
71extern void exit(); 72extern void exit();
72#endif 73#endif
73#include <signal.h> 74#include <signal.h>
74#ifndef VMS
75#ifndef _IRIX 75#ifndef _IRIX
76#include <time.h> 76#include <time.h>
77#endif 77#endif
@@ -79,25 +79,27 @@ extern void exit();
79#include <sys/types.h> 79#include <sys/types.h>
80#include <sys/times.h> 80#include <sys/times.h>
81#endif 81#endif
82#else /* VMS */ 82
83#include <types.h> 83/* Depending on the VMS version, the tms structure is perhaps defined.
84struct tms { 84 The __TMS macro will show if it was. If it wasn't defined, we should
85 time_t tms_utime; 85 undefine TIMES, since that tells the rest of the program how things
86 time_t tms_stime; 86 should be handled. -- Richard Levitte */
87 time_t tms_uchild; /* I dunno... */ 87#if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS)
88 time_t tms_uchildsys; /* so these names are a guess :-) */ 88#undef TIMES
89 }
90#endif 89#endif
90
91#ifndef TIMES 91#ifndef TIMES
92#include <sys/timeb.h> 92#include <sys/timeb.h>
93#endif 93#endif
94 94
95#ifdef sun 95
96#if defined(sun) || defined(__ultrix)
97#define _POSIX_SOURCE
96#include <limits.h> 98#include <limits.h>
97#include <sys/param.h> 99#include <sys/param.h>
98#endif 100#endif
99 101
100#include "des.h" 102#include <openssl/des.h>
101#include "spr.h" 103#include "spr.h"
102 104
103#define DES_DEFAULT_OPTIONS 105#define DES_DEFAULT_OPTIONS
@@ -116,10 +118,10 @@ struct tms {
116#undef DES_RISC2 118#undef DES_RISC2
117#undef DES_PTR 119#undef DES_PTR
118#undef D_ENCRYPT 120#undef D_ENCRYPT
119#define des_encrypt des_encrypt_u4_cisc_idx 121#define DES_encrypt1 des_encrypt_u4_cisc_idx
120#define des_encrypt2 des_encrypt2_u4_cisc_idx 122#define DES_encrypt2 des_encrypt2_u4_cisc_idx
121#define des_encrypt3 des_encrypt3_u4_cisc_idx 123#define DES_encrypt3 des_encrypt3_u4_cisc_idx
122#define des_decrypt3 des_decrypt3_u4_cisc_idx 124#define DES_decrypt3 des_decrypt3_u4_cisc_idx
123#undef HEADER_DES_LOCL_H 125#undef HEADER_DES_LOCL_H
124#include "des_enc.c" 126#include "des_enc.c"
125 127
@@ -128,14 +130,14 @@ struct tms {
128#undef DES_RISC2 130#undef DES_RISC2
129#undef DES_PTR 131#undef DES_PTR
130#undef D_ENCRYPT 132#undef D_ENCRYPT
131#undef des_encrypt 133#undef DES_encrypt1
132#undef des_encrypt2 134#undef DES_encrypt2
133#undef des_encrypt3 135#undef DES_encrypt3
134#undef des_decrypt3 136#undef DES_decrypt3
135#define des_encrypt des_encrypt_u16_cisc_idx 137#define DES_encrypt1 des_encrypt_u16_cisc_idx
136#define des_encrypt2 des_encrypt2_u16_cisc_idx 138#define DES_encrypt2 des_encrypt2_u16_cisc_idx
137#define des_encrypt3 des_encrypt3_u16_cisc_idx 139#define DES_encrypt3 des_encrypt3_u16_cisc_idx
138#define des_decrypt3 des_decrypt3_u16_cisc_idx 140#define DES_decrypt3 des_decrypt3_u16_cisc_idx
139#undef HEADER_DES_LOCL_H 141#undef HEADER_DES_LOCL_H
140#include "des_enc.c" 142#include "des_enc.c"
141 143
@@ -144,14 +146,14 @@ struct tms {
144#undef DES_RISC2 146#undef DES_RISC2
145#undef DES_PTR 147#undef DES_PTR
146#undef D_ENCRYPT 148#undef D_ENCRYPT
147#undef des_encrypt 149#undef DES_encrypt1
148#undef des_encrypt2 150#undef DES_encrypt2
149#undef des_encrypt3 151#undef DES_encrypt3
150#undef des_decrypt3 152#undef DES_decrypt3
151#define des_encrypt des_encrypt_u4_risc1_idx 153#define DES_encrypt1 des_encrypt_u4_risc1_idx
152#define des_encrypt2 des_encrypt2_u4_risc1_idx 154#define DES_encrypt2 des_encrypt2_u4_risc1_idx
153#define des_encrypt3 des_encrypt3_u4_risc1_idx 155#define DES_encrypt3 des_encrypt3_u4_risc1_idx
154#define des_decrypt3 des_decrypt3_u4_risc1_idx 156#define DES_decrypt3 des_decrypt3_u4_risc1_idx
155#undef HEADER_DES_LOCL_H 157#undef HEADER_DES_LOCL_H
156#include "des_enc.c" 158#include "des_enc.c"
157 159
@@ -164,14 +166,14 @@ struct tms {
164#define DES_RISC2 166#define DES_RISC2
165#undef DES_PTR 167#undef DES_PTR
166#undef D_ENCRYPT 168#undef D_ENCRYPT
167#undef des_encrypt 169#undef DES_encrypt1
168#undef des_encrypt2 170#undef DES_encrypt2
169#undef des_encrypt3 171#undef DES_encrypt3
170#undef des_decrypt3 172#undef DES_decrypt3
171#define des_encrypt des_encrypt_u4_risc2_idx 173#define DES_encrypt1 des_encrypt_u4_risc2_idx
172#define des_encrypt2 des_encrypt2_u4_risc2_idx 174#define DES_encrypt2 des_encrypt2_u4_risc2_idx
173#define des_encrypt3 des_encrypt3_u4_risc2_idx 175#define DES_encrypt3 des_encrypt3_u4_risc2_idx
174#define des_decrypt3 des_decrypt3_u4_risc2_idx 176#define DES_decrypt3 des_decrypt3_u4_risc2_idx
175#undef HEADER_DES_LOCL_H 177#undef HEADER_DES_LOCL_H
176#include "des_enc.c" 178#include "des_enc.c"
177 179
@@ -180,14 +182,14 @@ struct tms {
180#undef DES_RISC2 182#undef DES_RISC2
181#undef DES_PTR 183#undef DES_PTR
182#undef D_ENCRYPT 184#undef D_ENCRYPT
183#undef des_encrypt 185#undef DES_encrypt1
184#undef des_encrypt2 186#undef DES_encrypt2
185#undef des_encrypt3 187#undef DES_encrypt3
186#undef des_decrypt3 188#undef DES_decrypt3
187#define des_encrypt des_encrypt_u16_risc1_idx 189#define DES_encrypt1 des_encrypt_u16_risc1_idx
188#define des_encrypt2 des_encrypt2_u16_risc1_idx 190#define DES_encrypt2 des_encrypt2_u16_risc1_idx
189#define des_encrypt3 des_encrypt3_u16_risc1_idx 191#define DES_encrypt3 des_encrypt3_u16_risc1_idx
190#define des_decrypt3 des_decrypt3_u16_risc1_idx 192#define DES_decrypt3 des_decrypt3_u16_risc1_idx
191#undef HEADER_DES_LOCL_H 193#undef HEADER_DES_LOCL_H
192#include "des_enc.c" 194#include "des_enc.c"
193 195
@@ -196,14 +198,14 @@ struct tms {
196#define DES_RISC2 198#define DES_RISC2
197#undef DES_PTR 199#undef DES_PTR
198#undef D_ENCRYPT 200#undef D_ENCRYPT
199#undef des_encrypt 201#undef DES_encrypt1
200#undef des_encrypt2 202#undef DES_encrypt2
201#undef des_encrypt3 203#undef DES_encrypt3
202#undef des_decrypt3 204#undef DES_decrypt3
203#define des_encrypt des_encrypt_u16_risc2_idx 205#define DES_encrypt1 des_encrypt_u16_risc2_idx
204#define des_encrypt2 des_encrypt2_u16_risc2_idx 206#define DES_encrypt2 des_encrypt2_u16_risc2_idx
205#define des_encrypt3 des_encrypt3_u16_risc2_idx 207#define DES_encrypt3 des_encrypt3_u16_risc2_idx
206#define des_decrypt3 des_decrypt3_u16_risc2_idx 208#define DES_decrypt3 des_decrypt3_u16_risc2_idx
207#undef HEADER_DES_LOCL_H 209#undef HEADER_DES_LOCL_H
208#include "des_enc.c" 210#include "des_enc.c"
209 211
@@ -216,14 +218,14 @@ struct tms {
216#undef DES_RISC2 218#undef DES_RISC2
217#define DES_PTR 219#define DES_PTR
218#undef D_ENCRYPT 220#undef D_ENCRYPT
219#undef des_encrypt 221#undef DES_encrypt1
220#undef des_encrypt2 222#undef DES_encrypt2
221#undef des_encrypt3 223#undef DES_encrypt3
222#undef des_decrypt3 224#undef DES_decrypt3
223#define des_encrypt des_encrypt_u4_cisc_ptr 225#define DES_encrypt1 des_encrypt_u4_cisc_ptr
224#define des_encrypt2 des_encrypt2_u4_cisc_ptr 226#define DES_encrypt2 des_encrypt2_u4_cisc_ptr
225#define des_encrypt3 des_encrypt3_u4_cisc_ptr 227#define DES_encrypt3 des_encrypt3_u4_cisc_ptr
226#define des_decrypt3 des_decrypt3_u4_cisc_ptr 228#define DES_decrypt3 des_decrypt3_u4_cisc_ptr
227#undef HEADER_DES_LOCL_H 229#undef HEADER_DES_LOCL_H
228#include "des_enc.c" 230#include "des_enc.c"
229 231
@@ -232,14 +234,14 @@ struct tms {
232#undef DES_RISC2 234#undef DES_RISC2
233#define DES_PTR 235#define DES_PTR
234#undef D_ENCRYPT 236#undef D_ENCRYPT
235#undef des_encrypt 237#undef DES_encrypt1
236#undef des_encrypt2 238#undef DES_encrypt2
237#undef des_encrypt3 239#undef DES_encrypt3
238#undef des_decrypt3 240#undef DES_decrypt3
239#define des_encrypt des_encrypt_u16_cisc_ptr 241#define DES_encrypt1 des_encrypt_u16_cisc_ptr
240#define des_encrypt2 des_encrypt2_u16_cisc_ptr 242#define DES_encrypt2 des_encrypt2_u16_cisc_ptr
241#define des_encrypt3 des_encrypt3_u16_cisc_ptr 243#define DES_encrypt3 des_encrypt3_u16_cisc_ptr
242#define des_decrypt3 des_decrypt3_u16_cisc_ptr 244#define DES_decrypt3 des_decrypt3_u16_cisc_ptr
243#undef HEADER_DES_LOCL_H 245#undef HEADER_DES_LOCL_H
244#include "des_enc.c" 246#include "des_enc.c"
245 247
@@ -248,14 +250,14 @@ struct tms {
248#undef DES_RISC2 250#undef DES_RISC2
249#define DES_PTR 251#define DES_PTR
250#undef D_ENCRYPT 252#undef D_ENCRYPT
251#undef des_encrypt 253#undef DES_encrypt1
252#undef des_encrypt2 254#undef DES_encrypt2
253#undef des_encrypt3 255#undef DES_encrypt3
254#undef des_decrypt3 256#undef DES_decrypt3
255#define des_encrypt des_encrypt_u4_risc1_ptr 257#define DES_encrypt1 des_encrypt_u4_risc1_ptr
256#define des_encrypt2 des_encrypt2_u4_risc1_ptr 258#define DES_encrypt2 des_encrypt2_u4_risc1_ptr
257#define des_encrypt3 des_encrypt3_u4_risc1_ptr 259#define DES_encrypt3 des_encrypt3_u4_risc1_ptr
258#define des_decrypt3 des_decrypt3_u4_risc1_ptr 260#define DES_decrypt3 des_decrypt3_u4_risc1_ptr
259#undef HEADER_DES_LOCL_H 261#undef HEADER_DES_LOCL_H
260#include "des_enc.c" 262#include "des_enc.c"
261 263
@@ -268,14 +270,14 @@ struct tms {
268#define DES_RISC2 270#define DES_RISC2
269#define DES_PTR 271#define DES_PTR
270#undef D_ENCRYPT 272#undef D_ENCRYPT
271#undef des_encrypt 273#undef DES_encrypt1
272#undef des_encrypt2 274#undef DES_encrypt2
273#undef des_encrypt3 275#undef DES_encrypt3
274#undef des_decrypt3 276#undef DES_decrypt3
275#define des_encrypt des_encrypt_u4_risc2_ptr 277#define DES_encrypt1 des_encrypt_u4_risc2_ptr
276#define des_encrypt2 des_encrypt2_u4_risc2_ptr 278#define DES_encrypt2 des_encrypt2_u4_risc2_ptr
277#define des_encrypt3 des_encrypt3_u4_risc2_ptr 279#define DES_encrypt3 des_encrypt3_u4_risc2_ptr
278#define des_decrypt3 des_decrypt3_u4_risc2_ptr 280#define DES_decrypt3 des_decrypt3_u4_risc2_ptr
279#undef HEADER_DES_LOCL_H 281#undef HEADER_DES_LOCL_H
280#include "des_enc.c" 282#include "des_enc.c"
281 283
@@ -284,14 +286,14 @@ struct tms {
284#undef DES_RISC2 286#undef DES_RISC2
285#define DES_PTR 287#define DES_PTR
286#undef D_ENCRYPT 288#undef D_ENCRYPT
287#undef des_encrypt 289#undef DES_encrypt1
288#undef des_encrypt2 290#undef DES_encrypt2
289#undef des_encrypt3 291#undef DES_encrypt3
290#undef des_decrypt3 292#undef DES_decrypt3
291#define des_encrypt des_encrypt_u16_risc1_ptr 293#define DES_encrypt1 des_encrypt_u16_risc1_ptr
292#define des_encrypt2 des_encrypt2_u16_risc1_ptr 294#define DES_encrypt2 des_encrypt2_u16_risc1_ptr
293#define des_encrypt3 des_encrypt3_u16_risc1_ptr 295#define DES_encrypt3 des_encrypt3_u16_risc1_ptr
294#define des_decrypt3 des_decrypt3_u16_risc1_ptr 296#define DES_decrypt3 des_decrypt3_u16_risc1_ptr
295#undef HEADER_DES_LOCL_H 297#undef HEADER_DES_LOCL_H
296#include "des_enc.c" 298#include "des_enc.c"
297 299
@@ -300,14 +302,14 @@ struct tms {
300#define DES_RISC2 302#define DES_RISC2
301#define DES_PTR 303#define DES_PTR
302#undef D_ENCRYPT 304#undef D_ENCRYPT
303#undef des_encrypt 305#undef DES_encrypt1
304#undef des_encrypt2 306#undef DES_encrypt2
305#undef des_encrypt3 307#undef DES_encrypt3
306#undef des_decrypt3 308#undef DES_decrypt3
307#define des_encrypt des_encrypt_u16_risc2_ptr 309#define DES_encrypt1 des_encrypt_u16_risc2_ptr
308#define des_encrypt2 des_encrypt2_u16_risc2_ptr 310#define DES_encrypt2 des_encrypt2_u16_risc2_ptr
309#define des_encrypt3 des_encrypt3_u16_risc2_ptr 311#define DES_encrypt3 des_encrypt3_u16_risc2_ptr
310#define des_decrypt3 des_decrypt3_u16_risc2_ptr 312#define DES_decrypt3 des_decrypt3_u16_risc2_ptr
311#undef HEADER_DES_LOCL_H 313#undef HEADER_DES_LOCL_H
312#include "des_enc.c" 314#include "des_enc.c"
313 315
@@ -317,11 +319,7 @@ struct tms {
317#ifndef HZ 319#ifndef HZ
318# ifndef CLK_TCK 320# ifndef CLK_TCK
319# ifndef _BSD_CLK_TCK_ /* FreeBSD fix */ 321# ifndef _BSD_CLK_TCK_ /* FreeBSD fix */
320# ifndef VMS 322# define HZ 100.0
321# define HZ 100.0
322# else /* VMS */
323# define HZ 100.0
324# endif
325# else /* _BSD_CLK_TCK_ */ 323# else /* _BSD_CLK_TCK_ */
326# define HZ ((double)_BSD_CLK_TCK_) 324# define HZ ((double)_BSD_CLK_TCK_)
327# endif 325# endif
@@ -333,12 +331,7 @@ struct tms {
333#define BUFSIZE ((long)1024) 331#define BUFSIZE ((long)1024)
334long run=0; 332long run=0;
335 333
336#ifndef NOPROTO
337double Time_F(int s); 334double Time_F(int s);
338#else
339double Time_F();
340#endif
341
342#ifdef SIGALRM 335#ifdef SIGALRM
343#if defined(__STDC__) || defined(sgi) 336#if defined(__STDC__) || defined(sgi)
344#define SIGRETTYPE void 337#define SIGRETTYPE void
@@ -346,14 +339,8 @@ double Time_F();
346#define SIGRETTYPE int 339#define SIGRETTYPE int
347#endif 340#endif
348 341
349#ifndef NOPROTO
350SIGRETTYPE sig_done(int sig); 342SIGRETTYPE sig_done(int sig);
351#else 343SIGRETTYPE sig_done(int sig)
352SIGRETTYPE sig_done();
353#endif
354
355SIGRETTYPE sig_done(sig)
356int sig;
357 { 344 {
358 signal(SIGALRM,sig_done); 345 signal(SIGALRM,sig_done);
359 run=0; 346 run=0;
@@ -366,8 +353,7 @@ int sig;
366#define START 0 353#define START 0
367#define STOP 1 354#define STOP 1
368 355
369double Time_F(s) 356double Time_F(int s)
370int s;
371 { 357 {
372 double ret; 358 double ret;
373#ifdef TIMES 359#ifdef TIMES
@@ -415,7 +401,7 @@ int s;
415 for (count=0,run=1; COND(cb); count++) \ 401 for (count=0,run=1; COND(cb); count++) \
416 { \ 402 { \
417 unsigned long d[2]; \ 403 unsigned long d[2]; \
418 func(d,&(sch[0]),DES_ENCRYPT); \ 404 func(d,&sch,DES_ENCRYPT); \
419 } \ 405 } \
420 tm[index]=Time_F(STOP); \ 406 tm[index]=Time_F(STOP); \
421 fprintf(stderr,"%ld %s's in %.2f second\n",count,name,tm[index]); \ 407 fprintf(stderr,"%ld %s's in %.2f second\n",count,name,tm[index]); \
@@ -425,16 +411,14 @@ int s;
425 fprintf(stderr,"%s bytes per sec = %12.2f (%5.1fuS)\n",name, \ 411 fprintf(stderr,"%s bytes per sec = %12.2f (%5.1fuS)\n",name, \
426 tm[index]*8,1.0e6/tm[index]); 412 tm[index]*8,1.0e6/tm[index]);
427 413
428int main(argc,argv) 414int main(int argc, char **argv)
429int argc;
430char **argv;
431 { 415 {
432 long count; 416 long count;
433 static unsigned char buf[BUFSIZE]; 417 static unsigned char buf[BUFSIZE];
434 static des_cblock key ={0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0}; 418 static DES_cblock key ={0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0};
435 static des_cblock key2={0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12}; 419 static DES_cblock key2={0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12};
436 static des_cblock key3={0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34}; 420 static DES_cblock key3={0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34};
437 des_key_schedule sch,sch2,sch3; 421 DES_key_schedule sch,sch2,sch3;
438 double d,tm[16],max=0; 422 double d,tm[16],max=0;
439 int rank[16]; 423 int rank[16];
440 char *str[16]; 424 char *str[16];
@@ -450,17 +434,17 @@ char **argv;
450 } 434 }
451 435
452#ifndef TIMES 436#ifndef TIMES
453 fprintf(stderr,"To get the most acurate results, try to run this\n"); 437 fprintf(stderr,"To get the most accurate results, try to run this\n");
454 fprintf(stderr,"program when this computer is idle.\n"); 438 fprintf(stderr,"program when this computer is idle.\n");
455#endif 439#endif
456 440
457 des_set_key((C_Block *)key,sch); 441 DES_set_key_unchecked(&key,&sch);
458 des_set_key((C_Block *)key2,sch2); 442 DES_set_key_unchecked(&key2,&sch2);
459 des_set_key((C_Block *)key3,sch3); 443 DES_set_key_unchecked(&key3,&sch3);
460 444
461#ifndef SIGALRM 445#ifndef SIGALRM
462 fprintf(stderr,"First we calculate the approximate speed ...\n"); 446 fprintf(stderr,"First we calculate the approximate speed ...\n");
463 des_set_key((C_Block *)key,sch); 447 DES_set_key_unchecked(&key,sch);
464 count=10; 448 count=10;
465 do { 449 do {
466 long i; 450 long i;
@@ -469,7 +453,7 @@ char **argv;
469 count*=2; 453 count*=2;
470 Time_F(START); 454 Time_F(START);
471 for (i=count; i; i--) 455 for (i=count; i; i--)
472 des_encrypt(data,&(sch[0]),DES_ENCRYPT); 456 DES_encrypt1(data,&(sch[0]),DES_ENCRYPT);
473 d=Time_F(STOP); 457 d=Time_F(STOP);
474 } while (d < 3.0); 458 } while (d < 3.0);
475 ca=count; 459 ca=count;
@@ -614,7 +598,7 @@ char **argv;
614 break; 598 break;
615 } 599 }
616 exit(0); 600 exit(0);
617#if defined(LINT) || defined(MSDOS) 601#if defined(LINT) || defined(OPENSSL_SYS_MSDOS)
618 return(0); 602 return(0);
619#endif 603#endif
620 } 604 }
diff --git a/src/lib/libcrypto/des/des_ver.h b/src/lib/libcrypto/des/des_ver.h
index 7041a9271d..0fa94d5368 100644
--- a/src/lib/libcrypto/des/des_ver.h
+++ b/src/lib/libcrypto/des/des_ver.h
@@ -56,5 +56,12 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58 58
59extern char *DES_version; /* SSLeay version string */ 59#include <openssl/e_os2.h>
60extern char *libdes_version; /* old libdes version string */ 60
61#ifdef OPENSSL_BUILD_SHLIBCRYPTO
62# undef OPENSSL_EXTERN
63# define OPENSSL_EXTERN OPENSSL_EXPORT
64#endif
65
66OPENSSL_EXTERN char *DES_version; /* SSLeay version string */
67OPENSSL_EXTERN char *libdes_version; /* old libdes version string */
diff --git a/src/lib/libcrypto/des/dess.cpp b/src/lib/libcrypto/des/dess.cpp
index 7fb5987314..5549bab90a 100644
--- a/src/lib/libcrypto/des/dess.cpp
+++ b/src/lib/libcrypto/des/dess.cpp
@@ -32,7 +32,7 @@ void GetTSC(unsigned long& tsc)
32 32
33#include <stdio.h> 33#include <stdio.h>
34#include <stdlib.h> 34#include <stdlib.h>
35#include "des.h" 35#include <openssl/des.h>
36 36
37void main(int argc,char *argv[]) 37void main(int argc,char *argv[])
38 { 38 {
@@ -45,19 +45,19 @@ void main(int argc,char *argv[])
45 { 45 {
46 for (i=0; i<1000; i++) /**/ 46 for (i=0; i<1000; i++) /**/
47 { 47 {
48 des_encrypt(&data[0],key,1); 48 des_encrypt1(&data[0],key,1);
49 GetTSC(s1); 49 GetTSC(s1);
50 des_encrypt(&data[0],key,1); 50 des_encrypt1(&data[0],key,1);
51 des_encrypt(&data[0],key,1); 51 des_encrypt1(&data[0],key,1);
52 des_encrypt(&data[0],key,1); 52 des_encrypt1(&data[0],key,1);
53 GetTSC(e1); 53 GetTSC(e1);
54 GetTSC(s2); 54 GetTSC(s2);
55 des_encrypt(&data[0],key,1); 55 des_encrypt1(&data[0],key,1);
56 des_encrypt(&data[0],key,1); 56 des_encrypt1(&data[0],key,1);
57 des_encrypt(&data[0],key,1); 57 des_encrypt1(&data[0],key,1);
58 des_encrypt(&data[0],key,1); 58 des_encrypt1(&data[0],key,1);
59 GetTSC(e2); 59 GetTSC(e2);
60 des_encrypt(&data[0],key,1); 60 des_encrypt1(&data[0],key,1);
61 } 61 }
62 62
63 printf("des %d %d (%d)\n", 63 printf("des %d %d (%d)\n",
diff --git a/src/lib/libcrypto/des/destest.c b/src/lib/libcrypto/des/destest.c
index 620c13ba6f..58e8c35dcb 100644
--- a/src/lib/libcrypto/des/destest.c
+++ b/src/lib/libcrypto/des/destest.c
@@ -56,21 +56,37 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58 58
59#if defined(WIN32) || defined(WIN16) || defined(WINDOWS) 59#include <stdio.h>
60#ifndef MSDOS 60#include <stdlib.h>
61#define MSDOS 61
62#include <openssl/e_os2.h>
63#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN16) || defined(OPENSSL_SYS_WINDOWS)
64#ifndef OPENSSL_SYS_MSDOS
65#define OPENSSL_SYS_MSDOS
62#endif 66#endif
63#endif 67#endif
64 68
65#include <stdio.h> 69#ifndef OPENSSL_SYS_MSDOS
66#include <stdlib.h> 70#if !defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_VMS_DECC)
67#ifndef MSDOS 71#include OPENSSL_UNISTD
68#include <unistd.h> 72#endif
69#else 73#else
70#include <io.h> 74#include <io.h>
71#endif 75#endif
72#include <string.h> 76#include <string.h>
73#include "des.h" 77
78#ifdef OPENSSL_NO_DES
79int main(int argc, char *argv[])
80{
81 printf("No DES support\n");
82 return(0);
83}
84#else
85#include <openssl/des.h>
86
87#if defined(PERL5) || defined(__FreeBSD__) || defined(NeXT)
88#define crypt(c,s) (des_crypt((c),(s)))
89#endif
74 90
75/* tisk tisk - the test keys don't all have odd parity :-( */ 91/* tisk tisk - the test keys don't all have odd parity :-( */
76/* test data */ 92/* test data */
@@ -219,13 +235,13 @@ static unsigned char cipher_ecb2[NUM_TESTS-1][8]={
219 {0x08,0xD7,0xB4,0xFB,0x62,0x9D,0x08,0x85}}; 235 {0x08,0xD7,0xB4,0xFB,0x62,0x9D,0x08,0x85}};
220 236
221static unsigned char cbc_key [8]={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef}; 237static unsigned char cbc_key [8]={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef};
222static unsigned char cbc2_key[8]={0xf0,0xe1,0xd2,0xc3,0xb4,0xa5,0x96,0x87}; 238static unsigned char cbc2_key[8]={0xf1,0xe0,0xd3,0xc2,0xb5,0xa4,0x97,0x86};
223static unsigned char cbc3_key[8]={0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10}; 239static unsigned char cbc3_key[8]={0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10};
224static unsigned char cbc_iv [8]={0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10}; 240static unsigned char cbc_iv [8]={0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10};
225/* Changed the following text constant to binary so it will work on ebcdic 241/* Changed the following text constant to binary so it will work on ebcdic
226 * machines :-) */ 242 * machines :-) */
227/* static char cbc_data[40]="7654321 Now is the time for \0001"; */ 243/* static char cbc_data[40]="7654321 Now is the time for \0001"; */
228static char cbc_data[40]={ 244static unsigned char cbc_data[40]={
229 0x37,0x36,0x35,0x34,0x33,0x32,0x31,0x20, 245 0x37,0x36,0x35,0x34,0x33,0x32,0x31,0x20,
230 0x4E,0x6F,0x77,0x20,0x69,0x73,0x20,0x74, 246 0x4E,0x6F,0x77,0x20,0x69,0x73,0x20,0x74,
231 0x68,0x65,0x20,0x74,0x69,0x6D,0x65,0x20, 247 0x68,0x65,0x20,0x74,0x69,0x6D,0x65,0x20,
@@ -239,12 +255,24 @@ static unsigned char cbc_ok[32]={
239 0x46,0x8e,0x91,0x15,0x78,0x88,0xba,0x68, 255 0x46,0x8e,0x91,0x15,0x78,0x88,0xba,0x68,
240 0x1d,0x26,0x93,0x97,0xf7,0xfe,0x62,0xb4}; 256 0x1d,0x26,0x93,0x97,0xf7,0xfe,0x62,0xb4};
241 257
258#ifdef SCREW_THE_PARITY
259#error "SCREW_THE_PARITY is not ment to be defined."
260#error "Original vectors are preserved for reference only."
261static unsigned char cbc2_key[8]={0xf0,0xe1,0xd2,0xc3,0xb4,0xa5,0x96,0x87};
242static unsigned char xcbc_ok[32]={ 262static unsigned char xcbc_ok[32]={
243 0x86,0x74,0x81,0x0D,0x61,0xA4,0xA5,0x48, 263 0x86,0x74,0x81,0x0D,0x61,0xA4,0xA5,0x48,
244 0xB9,0x93,0x03,0xE1,0xB8,0xBB,0xBD,0xBD, 264 0xB9,0x93,0x03,0xE1,0xB8,0xBB,0xBD,0xBD,
245 0x64,0x30,0x0B,0xB9,0x06,0x65,0x81,0x76, 265 0x64,0x30,0x0B,0xB9,0x06,0x65,0x81,0x76,
246 0x04,0x1D,0x77,0x62,0x17,0xCA,0x2B,0xD2, 266 0x04,0x1D,0x77,0x62,0x17,0xCA,0x2B,0xD2,
247 }; 267 };
268#else
269static unsigned char xcbc_ok[32]={
270 0x84,0x6B,0x29,0x14,0x85,0x1E,0x9A,0x29,
271 0x54,0x73,0x2F,0x8A,0xA0,0xA6,0x11,0xC1,
272 0x15,0xCD,0xC2,0xD7,0x95,0x1B,0x10,0x53,
273 0xA6,0x3C,0x5E,0x03,0xB2,0x1A,0xA3,0xC4,
274 };
275#endif
248 276
249static unsigned char cbc3_ok[32]={ 277static unsigned char cbc3_ok[32]={
250 0x3F,0xE3,0x01,0xC9,0x62,0xAC,0x01,0xD0, 278 0x3F,0xE3,0x01,0xC9,0x62,0xAC,0x01,0xD0,
@@ -294,49 +322,95 @@ static unsigned char ofb_cipher[24]=
294 0x3d,0x6d,0x5b,0xe3,0x25,0x5a,0xf8,0xc3 322 0x3d,0x6d,0x5b,0xe3,0x25,0x5a,0xf8,0xc3
295 }; 323 };
296 324
297DES_LONG cbc_cksum_ret=0xB462FEF7L; 325static DES_LONG cbc_cksum_ret=0xB462FEF7L;
298unsigned char cbc_cksum_data[8]={0x1D,0x26,0x93,0x97,0xf7,0xfe,0x62,0xb4}; 326static unsigned char cbc_cksum_data[8]={0x1D,0x26,0x93,0x97,0xf7,0xfe,0x62,0xb4};
299 327
300#ifndef NOPROTO
301static char *pt(unsigned char *p); 328static char *pt(unsigned char *p);
302static int cfb_test(int bits, unsigned char *cfb_cipher); 329static int cfb_test(int bits, unsigned char *cfb_cipher);
303static int cfb64_test(unsigned char *cfb_cipher); 330static int cfb64_test(unsigned char *cfb_cipher);
304static int ede_cfb64_test(unsigned char *cfb_cipher); 331static int ede_cfb64_test(unsigned char *cfb_cipher);
305#else 332int main(int argc, char *argv[])
306static char *pt();
307static int cfb_test();
308static int cfb64_test();
309static int ede_cfb64_test();
310#endif
311
312int main(argc,argv)
313int argc;
314char *argv[];
315 { 333 {
316 int i,j,err=0; 334 int i,j,err=0;
317 des_cblock in,out,outin,iv3; 335 des_cblock in,out,outin,iv3,iv2;
318 des_key_schedule ks,ks2,ks3; 336 des_key_schedule ks,ks2,ks3;
319 unsigned char cbc_in[40]; 337 unsigned char cbc_in[40];
320 unsigned char cbc_out[40]; 338 unsigned char cbc_out[40];
321 DES_LONG cs; 339 DES_LONG cs;
322 unsigned char qret[4][4],cret[8]; 340 unsigned char cret[8];
323 DES_LONG lqret[4]; 341#ifdef _CRAY
342 struct {
343 int a:32;
344 int b:32;
345 } lqret[2];
346#else
347 DES_LONG lqret[4];
348#endif
324 int num; 349 int num;
325 char *str; 350 char *str;
326 351
352#ifndef OPENSSL_NO_DESCBCM
353 printf("Doing cbcm\n");
354 if ((j=DES_set_key_checked(&cbc_key,&ks)) != 0)
355 {
356 printf("Key error %d\n",j);
357 err=1;
358 }
359 if ((j=DES_set_key_checked(&cbc2_key,&ks2)) != 0)
360 {
361 printf("Key error %d\n",j);
362 err=1;
363 }
364 if ((j=DES_set_key_checked(&cbc3_key,&ks3)) != 0)
365 {
366 printf("Key error %d\n",j);
367 err=1;
368 }
369 memset(cbc_out,0,40);
370 memset(cbc_in,0,40);
371 i=strlen((char *)cbc_data)+1;
372 /* i=((i+7)/8)*8; */
373 memcpy(iv3,cbc_iv,sizeof(cbc_iv));
374 memset(iv2,'\0',sizeof iv2);
375
376 DES_ede3_cbcm_encrypt(cbc_data,cbc_out,16L,&ks,&ks2,&ks3,&iv3,&iv2,
377 DES_ENCRYPT);
378 DES_ede3_cbcm_encrypt(&cbc_data[16],&cbc_out[16],i-16,&ks,&ks2,&ks3,
379 &iv3,&iv2,DES_ENCRYPT);
380 /* if (memcmp(cbc_out,cbc3_ok,
381 (unsigned int)(strlen((char *)cbc_data)+1+7)/8*8) != 0)
382 {
383 printf("des_ede3_cbc_encrypt encrypt error\n");
384 err=1;
385 }
386 */
387 memcpy(iv3,cbc_iv,sizeof(cbc_iv));
388 memset(iv2,'\0',sizeof iv2);
389 DES_ede3_cbcm_encrypt(cbc_out,cbc_in,i,&ks,&ks2,&ks3,&iv3,&iv2,DES_DECRYPT);
390 if (memcmp(cbc_in,cbc_data,strlen((char *)cbc_data)+1) != 0)
391 {
392 int n;
393
394 printf("des_ede3_cbcm_encrypt decrypt error\n");
395 for(n=0 ; n < i ; ++n)
396 printf(" %02x",cbc_data[n]);
397 printf("\n");
398 for(n=0 ; n < i ; ++n)
399 printf(" %02x",cbc_in[n]);
400 printf("\n");
401 err=1;
402 }
403#endif
404
327 printf("Doing ecb\n"); 405 printf("Doing ecb\n");
328 for (i=0; i<NUM_TESTS; i++) 406 for (i=0; i<NUM_TESTS; i++)
329 { 407 {
330 if ((j=des_key_sched((C_Block *)(key_data[i]),ks)) != 0) 408 DES_set_key_unchecked(&key_data[i],&ks);
331 {
332 printf("Key error %2d:%d\n",i+1,j);
333 err=1;
334 }
335 memcpy(in,plain_data[i],8); 409 memcpy(in,plain_data[i],8);
336 memset(out,0,8); 410 memset(out,0,8);
337 memset(outin,0,8); 411 memset(outin,0,8);
338 des_ecb_encrypt((C_Block *)in,(C_Block *)out,ks,DES_ENCRYPT); 412 des_ecb_encrypt(&in,&out,ks,DES_ENCRYPT);
339 des_ecb_encrypt((C_Block *)out,(C_Block *)outin,ks,DES_DECRYPT); 413 des_ecb_encrypt(&out,&outin,ks,DES_DECRYPT);
340 414
341 if (memcmp(out,cipher_data[i],8) != 0) 415 if (memcmp(out,cipher_data[i],8) != 0)
342 { 416 {
@@ -357,28 +431,14 @@ char *argv[];
357 printf("Doing ede ecb\n"); 431 printf("Doing ede ecb\n");
358 for (i=0; i<(NUM_TESTS-1); i++) 432 for (i=0; i<(NUM_TESTS-1); i++)
359 { 433 {
360 if ((j=des_key_sched((C_Block *)(key_data[i]),ks)) != 0) 434 DES_set_key_unchecked(&key_data[i],&ks);
361 { 435 DES_set_key_unchecked(&key_data[i+1],&ks2);
362 err=1; 436 DES_set_key_unchecked(&key_data[i+2],&ks3);
363 printf("Key error %2d:%d\n",i+1,j);
364 }
365 if ((j=des_key_sched((C_Block *)(key_data[i+1]),ks2)) != 0)
366 {
367 printf("Key error %2d:%d\n",i+2,j);
368 err=1;
369 }
370 if ((j=des_key_sched((C_Block *)(key_data[i+2]),ks3)) != 0)
371 {
372 printf("Key error %2d:%d\n",i+3,j);
373 err=1;
374 }
375 memcpy(in,plain_data[i],8); 437 memcpy(in,plain_data[i],8);
376 memset(out,0,8); 438 memset(out,0,8);
377 memset(outin,0,8); 439 memset(outin,0,8);
378 des_ecb2_encrypt((C_Block *)in,(C_Block *)out,ks,ks2, 440 des_ecb2_encrypt(&in,&out,ks,ks2,DES_ENCRYPT);
379 DES_ENCRYPT); 441 des_ecb2_encrypt(&out,&outin,ks,ks2,DES_DECRYPT);
380 des_ecb2_encrypt((C_Block *)out,(C_Block *)outin,ks,ks2,
381 DES_DECRYPT);
382 442
383 if (memcmp(out,cipher_ecb2[i],8) != 0) 443 if (memcmp(out,cipher_ecb2[i],8) != 0)
384 { 444 {
@@ -397,7 +457,7 @@ char *argv[];
397#endif 457#endif
398 458
399 printf("Doing cbc\n"); 459 printf("Doing cbc\n");
400 if ((j=des_key_sched((C_Block *)cbc_key,ks)) != 0) 460 if ((j=DES_set_key_checked(&cbc_key,&ks)) != 0)
401 { 461 {
402 printf("Key error %d\n",j); 462 printf("Key error %d\n",j);
403 err=1; 463 err=1;
@@ -405,16 +465,17 @@ char *argv[];
405 memset(cbc_out,0,40); 465 memset(cbc_out,0,40);
406 memset(cbc_in,0,40); 466 memset(cbc_in,0,40);
407 memcpy(iv3,cbc_iv,sizeof(cbc_iv)); 467 memcpy(iv3,cbc_iv,sizeof(cbc_iv));
408 des_ncbc_encrypt((C_Block *)cbc_data,(C_Block *)cbc_out, 468 des_ncbc_encrypt(cbc_data,cbc_out,strlen((char *)cbc_data)+1,ks,
409 (long)strlen((char *)cbc_data)+1,ks, 469 &iv3,DES_ENCRYPT);
410 (C_Block *)iv3,DES_ENCRYPT);
411 if (memcmp(cbc_out,cbc_ok,32) != 0) 470 if (memcmp(cbc_out,cbc_ok,32) != 0)
471 {
412 printf("cbc_encrypt encrypt error\n"); 472 printf("cbc_encrypt encrypt error\n");
473 err=1;
474 }
413 475
414 memcpy(iv3,cbc_iv,sizeof(cbc_iv)); 476 memcpy(iv3,cbc_iv,sizeof(cbc_iv));
415 des_ncbc_encrypt((C_Block *)cbc_out,(C_Block *)cbc_in, 477 des_ncbc_encrypt(cbc_out,cbc_in,strlen((char *)cbc_data)+1,ks,
416 (long)strlen((char *)cbc_data)+1,ks, 478 &iv3,DES_DECRYPT);
417 (C_Block *)iv3,DES_DECRYPT);
418 if (memcmp(cbc_in,cbc_data,strlen((char *)cbc_data)) != 0) 479 if (memcmp(cbc_in,cbc_data,strlen((char *)cbc_data)) != 0)
419 { 480 {
420 printf("cbc_encrypt decrypt error\n"); 481 printf("cbc_encrypt decrypt error\n");
@@ -423,7 +484,7 @@ char *argv[];
423 484
424#ifndef LIBDES_LIT 485#ifndef LIBDES_LIT
425 printf("Doing desx cbc\n"); 486 printf("Doing desx cbc\n");
426 if ((j=des_key_sched((C_Block *)cbc_key,ks)) != 0) 487 if ((j=DES_set_key_checked(&cbc_key,&ks)) != 0)
427 { 488 {
428 printf("Key error %d\n",j); 489 printf("Key error %d\n",j);
429 err=1; 490 err=1;
@@ -431,19 +492,16 @@ char *argv[];
431 memset(cbc_out,0,40); 492 memset(cbc_out,0,40);
432 memset(cbc_in,0,40); 493 memset(cbc_in,0,40);
433 memcpy(iv3,cbc_iv,sizeof(cbc_iv)); 494 memcpy(iv3,cbc_iv,sizeof(cbc_iv));
434 des_xcbc_encrypt((C_Block *)cbc_data,(C_Block *)cbc_out, 495 des_xcbc_encrypt(cbc_data,cbc_out,strlen((char *)cbc_data)+1,ks,
435 (long)strlen((char *)cbc_data)+1,ks, 496 &iv3,&cbc2_key,&cbc3_key, DES_ENCRYPT);
436 (C_Block *)iv3,
437 (C_Block *)cbc2_key, (C_Block *)cbc3_key, DES_ENCRYPT);
438 if (memcmp(cbc_out,xcbc_ok,32) != 0) 497 if (memcmp(cbc_out,xcbc_ok,32) != 0)
439 { 498 {
440 printf("des_xcbc_encrypt encrypt error\n"); 499 printf("des_xcbc_encrypt encrypt error\n");
500 err=1;
441 } 501 }
442 memcpy(iv3,cbc_iv,sizeof(cbc_iv)); 502 memcpy(iv3,cbc_iv,sizeof(cbc_iv));
443 des_xcbc_encrypt((C_Block *)cbc_out,(C_Block *)cbc_in, 503 des_xcbc_encrypt(cbc_out,cbc_in,strlen((char *)cbc_data)+1,ks,
444 (long)strlen((char *)cbc_data)+1,ks, 504 &iv3,&cbc2_key,&cbc3_key, DES_DECRYPT);
445 (C_Block *)iv3,
446 (C_Block *)cbc2_key, (C_Block *)cbc3_key, DES_DECRYPT);
447 if (memcmp(cbc_in,cbc_data,strlen((char *)cbc_data)+1) != 0) 505 if (memcmp(cbc_in,cbc_data,strlen((char *)cbc_data)+1) != 0)
448 { 506 {
449 printf("des_xcbc_encrypt decrypt error\n"); 507 printf("des_xcbc_encrypt decrypt error\n");
@@ -452,17 +510,17 @@ char *argv[];
452#endif 510#endif
453 511
454 printf("Doing ede cbc\n"); 512 printf("Doing ede cbc\n");
455 if ((j=des_key_sched((C_Block *)cbc_key,ks)) != 0) 513 if ((j=DES_set_key_checked(&cbc_key,&ks)) != 0)
456 { 514 {
457 printf("Key error %d\n",j); 515 printf("Key error %d\n",j);
458 err=1; 516 err=1;
459 } 517 }
460 if ((j=des_key_sched((C_Block *)cbc2_key,ks2)) != 0) 518 if ((j=DES_set_key_checked(&cbc2_key,&ks2)) != 0)
461 { 519 {
462 printf("Key error %d\n",j); 520 printf("Key error %d\n",j);
463 err=1; 521 err=1;
464 } 522 }
465 if ((j=des_key_sched((C_Block *)cbc3_key,ks3)) != 0) 523 if ((j=DES_set_key_checked(&cbc3_key,&ks3)) != 0)
466 { 524 {
467 printf("Key error %d\n",j); 525 printf("Key error %d\n",j);
468 err=1; 526 err=1;
@@ -473,46 +531,60 @@ char *argv[];
473 /* i=((i+7)/8)*8; */ 531 /* i=((i+7)/8)*8; */
474 memcpy(iv3,cbc_iv,sizeof(cbc_iv)); 532 memcpy(iv3,cbc_iv,sizeof(cbc_iv));
475 533
476 des_ede3_cbc_encrypt((C_Block *)cbc_data,(C_Block *)cbc_out, 534 des_ede3_cbc_encrypt(cbc_data,cbc_out,16L,ks,ks2,ks3,&iv3,
477 16L,ks,ks2,ks3,(C_Block *)iv3,DES_ENCRYPT); 535 DES_ENCRYPT);
478 des_ede3_cbc_encrypt((C_Block *)&(cbc_data[16]), 536 des_ede3_cbc_encrypt(&(cbc_data[16]),&(cbc_out[16]),i-16,ks,ks2,ks3,
479 (C_Block *)&(cbc_out[16]), 537 &iv3,DES_ENCRYPT);
480 (long)i-16,ks,ks2,ks3,(C_Block *)iv3,DES_ENCRYPT);
481 if (memcmp(cbc_out,cbc3_ok, 538 if (memcmp(cbc_out,cbc3_ok,
482 (unsigned int)(strlen((char *)cbc_data)+1+7)/8*8) != 0) 539 (unsigned int)(strlen((char *)cbc_data)+1+7)/8*8) != 0)
483 { 540 {
541 int n;
542
484 printf("des_ede3_cbc_encrypt encrypt error\n"); 543 printf("des_ede3_cbc_encrypt encrypt error\n");
544 for(n=0 ; n < i ; ++n)
545 printf(" %02x",cbc_out[n]);
546 printf("\n");
547 for(n=0 ; n < i ; ++n)
548 printf(" %02x",cbc3_ok[n]);
549 printf("\n");
485 err=1; 550 err=1;
486 } 551 }
487 552
488 memcpy(iv3,cbc_iv,sizeof(cbc_iv)); 553 memcpy(iv3,cbc_iv,sizeof(cbc_iv));
489 des_ede3_cbc_encrypt((C_Block *)cbc_out,(C_Block *)cbc_in, 554 des_ede3_cbc_encrypt(cbc_out,cbc_in,i,ks,ks2,ks3,&iv3,DES_DECRYPT);
490 (long)i,ks,ks2,ks3,(C_Block *)iv3,DES_DECRYPT); 555 if (memcmp(cbc_in,cbc_data,strlen((char *)cbc_data)+1) != 0)
491 if (memcmp(cbc_in,cbc_data,strlen(cbc_data)+1) != 0)
492 { 556 {
557 int n;
558
493 printf("des_ede3_cbc_encrypt decrypt error\n"); 559 printf("des_ede3_cbc_encrypt decrypt error\n");
560 for(n=0 ; n < i ; ++n)
561 printf(" %02x",cbc_data[n]);
562 printf("\n");
563 for(n=0 ; n < i ; ++n)
564 printf(" %02x",cbc_in[n]);
565 printf("\n");
494 err=1; 566 err=1;
495 } 567 }
496 568
497#ifndef LIBDES_LIT 569#ifndef LIBDES_LIT
498 printf("Doing pcbc\n"); 570 printf("Doing pcbc\n");
499 if ((j=des_key_sched((C_Block *)cbc_key,ks)) != 0) 571 if ((j=DES_set_key_checked(&cbc_key,&ks)) != 0)
500 { 572 {
501 printf("Key error %d\n",j); 573 printf("Key error %d\n",j);
502 err=1; 574 err=1;
503 } 575 }
504 memset(cbc_out,0,40); 576 memset(cbc_out,0,40);
505 memset(cbc_in,0,40); 577 memset(cbc_in,0,40);
506 des_pcbc_encrypt((C_Block *)cbc_data,(C_Block *)cbc_out, 578 des_pcbc_encrypt(cbc_data,cbc_out,strlen((char *)cbc_data)+1,ks,
507 (long)strlen(cbc_data)+1,ks,(C_Block *)cbc_iv,DES_ENCRYPT); 579 &cbc_iv,DES_ENCRYPT);
508 if (memcmp(cbc_out,pcbc_ok,32) != 0) 580 if (memcmp(cbc_out,pcbc_ok,32) != 0)
509 { 581 {
510 printf("pcbc_encrypt encrypt error\n"); 582 printf("pcbc_encrypt encrypt error\n");
511 err=1; 583 err=1;
512 } 584 }
513 des_pcbc_encrypt((C_Block *)cbc_out,(C_Block *)cbc_in, 585 des_pcbc_encrypt(cbc_out,cbc_in,strlen((char *)cbc_data)+1,ks,&cbc_iv,
514 (long)strlen(cbc_data)+1,ks,(C_Block *)cbc_iv,DES_DECRYPT); 586 DES_DECRYPT);
515 if (memcmp(cbc_in,cbc_data,strlen(cbc_data)+1) != 0) 587 if (memcmp(cbc_in,cbc_data,strlen((char *)cbc_data)+1) != 0)
516 { 588 {
517 printf("pcbc_encrypt decrypt error\n"); 589 printf("pcbc_encrypt decrypt error\n");
518 err=1; 590 err=1;
@@ -536,7 +608,7 @@ char *argv[];
536 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv)); 608 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
537 for (i=0; i<sizeof(plain); i++) 609 for (i=0; i<sizeof(plain); i++)
538 des_cfb_encrypt(&(plain[i]),&(cfb_buf1[i]), 610 des_cfb_encrypt(&(plain[i]),&(cfb_buf1[i]),
539 8,(long)1,ks,(C_Block *)cfb_tmp,DES_ENCRYPT); 611 8,1,ks,&cfb_tmp,DES_ENCRYPT);
540 if (memcmp(cfb_cipher8,cfb_buf1,sizeof(plain)) != 0) 612 if (memcmp(cfb_cipher8,cfb_buf1,sizeof(plain)) != 0)
541 { 613 {
542 printf("cfb_encrypt small encrypt error\n"); 614 printf("cfb_encrypt small encrypt error\n");
@@ -546,7 +618,7 @@ char *argv[];
546 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv)); 618 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
547 for (i=0; i<sizeof(plain); i++) 619 for (i=0; i<sizeof(plain); i++)
548 des_cfb_encrypt(&(cfb_buf1[i]),&(cfb_buf2[i]), 620 des_cfb_encrypt(&(cfb_buf1[i]),&(cfb_buf2[i]),
549 8,(long)1,ks,(C_Block *)cfb_tmp,DES_DECRYPT); 621 8,1,ks,&cfb_tmp,DES_DECRYPT);
550 if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0) 622 if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0)
551 { 623 {
552 printf("cfb_encrypt small decrypt error\n"); 624 printf("cfb_encrypt small decrypt error\n");
@@ -559,10 +631,9 @@ char *argv[];
559 printf("done\n"); 631 printf("done\n");
560 632
561 printf("Doing ofb\n"); 633 printf("Doing ofb\n");
562 des_key_sched((C_Block *)ofb_key,ks); 634 DES_set_key_checked(&ofb_key,&ks);
563 memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv)); 635 memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
564 des_ofb_encrypt(plain,ofb_buf1,64,(long)sizeof(plain)/8,ks, 636 des_ofb_encrypt(plain,ofb_buf1,64,sizeof(plain)/8,ks,&ofb_tmp);
565 (C_Block *)ofb_tmp);
566 if (memcmp(ofb_cipher,ofb_buf1,sizeof(ofb_buf1)) != 0) 637 if (memcmp(ofb_cipher,ofb_buf1,sizeof(ofb_buf1)) != 0)
567 { 638 {
568 printf("ofb_encrypt encrypt error\n"); 639 printf("ofb_encrypt encrypt error\n");
@@ -575,8 +646,7 @@ ofb_buf1[8+4], ofb_cipher[8+5], ofb_cipher[8+6], ofb_cipher[8+7]);
575 err=1; 646 err=1;
576 } 647 }
577 memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv)); 648 memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
578 des_ofb_encrypt(ofb_buf1,ofb_buf2,64,(long)sizeof(ofb_buf1)/8,ks, 649 des_ofb_encrypt(ofb_buf1,ofb_buf2,64,sizeof(ofb_buf1)/8,ks,&ofb_tmp);
579 (C_Block *)ofb_tmp);
580 if (memcmp(plain,ofb_buf2,sizeof(ofb_buf2)) != 0) 650 if (memcmp(plain,ofb_buf2,sizeof(ofb_buf2)) != 0)
581 { 651 {
582 printf("ofb_encrypt decrypt error\n"); 652 printf("ofb_encrypt decrypt error\n");
@@ -590,15 +660,15 @@ plain[8+4], plain[8+5], plain[8+6], plain[8+7]);
590 } 660 }
591 661
592 printf("Doing ofb64\n"); 662 printf("Doing ofb64\n");
593 des_key_sched((C_Block *)ofb_key,ks); 663 DES_set_key_checked(&ofb_key,&ks);
594 memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv)); 664 memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
595 memset(ofb_buf1,0,sizeof(ofb_buf1)); 665 memset(ofb_buf1,0,sizeof(ofb_buf1));
596 memset(ofb_buf2,0,sizeof(ofb_buf1)); 666 memset(ofb_buf2,0,sizeof(ofb_buf1));
597 num=0; 667 num=0;
598 for (i=0; i<sizeof(plain); i++) 668 for (i=0; i<sizeof(plain); i++)
599 { 669 {
600 des_ofb64_encrypt(&(plain[i]),&(ofb_buf1[i]),1,ks, 670 des_ofb64_encrypt(&(plain[i]),&(ofb_buf1[i]),1,ks,&ofb_tmp,
601 (C_Block *)ofb_tmp,&num); 671 &num);
602 } 672 }
603 if (memcmp(ofb_cipher,ofb_buf1,sizeof(ofb_buf1)) != 0) 673 if (memcmp(ofb_cipher,ofb_buf1,sizeof(ofb_buf1)) != 0)
604 { 674 {
@@ -607,8 +677,8 @@ plain[8+4], plain[8+5], plain[8+6], plain[8+7]);
607 } 677 }
608 memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv)); 678 memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
609 num=0; 679 num=0;
610 des_ofb64_encrypt(ofb_buf1,ofb_buf2,(long)sizeof(ofb_buf1),ks, 680 des_ofb64_encrypt(ofb_buf1,ofb_buf2,sizeof(ofb_buf1),ks,&ofb_tmp,
611 (C_Block *)ofb_tmp,&num); 681 &num);
612 if (memcmp(plain,ofb_buf2,sizeof(ofb_buf2)) != 0) 682 if (memcmp(plain,ofb_buf2,sizeof(ofb_buf2)) != 0)
613 { 683 {
614 printf("ofb64_encrypt decrypt error\n"); 684 printf("ofb64_encrypt decrypt error\n");
@@ -616,15 +686,15 @@ plain[8+4], plain[8+5], plain[8+6], plain[8+7]);
616 } 686 }
617 687
618 printf("Doing ede_ofb64\n"); 688 printf("Doing ede_ofb64\n");
619 des_key_sched((C_Block *)ofb_key,ks); 689 DES_set_key_checked(&ofb_key,&ks);
620 memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv)); 690 memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
621 memset(ofb_buf1,0,sizeof(ofb_buf1)); 691 memset(ofb_buf1,0,sizeof(ofb_buf1));
622 memset(ofb_buf2,0,sizeof(ofb_buf1)); 692 memset(ofb_buf2,0,sizeof(ofb_buf1));
623 num=0; 693 num=0;
624 for (i=0; i<sizeof(plain); i++) 694 for (i=0; i<sizeof(plain); i++)
625 { 695 {
626 des_ede3_ofb64_encrypt(&(plain[i]),&(ofb_buf1[i]),1,ks,ks,ks, 696 des_ede3_ofb64_encrypt(&(plain[i]),&(ofb_buf1[i]),1,ks,ks,
627 (C_Block *)ofb_tmp,&num); 697 ks,&ofb_tmp,&num);
628 } 698 }
629 if (memcmp(ofb_cipher,ofb_buf1,sizeof(ofb_buf1)) != 0) 699 if (memcmp(ofb_cipher,ofb_buf1,sizeof(ofb_buf1)) != 0)
630 { 700 {
@@ -633,8 +703,8 @@ plain[8+4], plain[8+5], plain[8+6], plain[8+7]);
633 } 703 }
634 memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv)); 704 memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
635 num=0; 705 num=0;
636 des_ede3_ofb64_encrypt(ofb_buf1,ofb_buf2,(long)sizeof(ofb_buf1),ks, 706 des_ede3_ofb64_encrypt(ofb_buf1,ofb_buf2,sizeof(ofb_buf1),ks,ks,ks,
637 ks,ks,(C_Block *)ofb_tmp,&num); 707 &ofb_tmp,&num);
638 if (memcmp(plain,ofb_buf2,sizeof(ofb_buf2)) != 0) 708 if (memcmp(plain,ofb_buf2,sizeof(ofb_buf2)) != 0)
639 { 709 {
640 printf("ede_ofb64_encrypt decrypt error\n"); 710 printf("ede_ofb64_encrypt decrypt error\n");
@@ -642,9 +712,8 @@ plain[8+4], plain[8+5], plain[8+6], plain[8+7]);
642 } 712 }
643 713
644 printf("Doing cbc_cksum\n"); 714 printf("Doing cbc_cksum\n");
645 des_key_sched((C_Block *)cbc_key,ks); 715 DES_set_key_checked(&cbc_key,&ks);
646 cs=des_cbc_cksum((C_Block *)cbc_data,(C_Block *)cret, 716 cs=des_cbc_cksum(cbc_data,&cret,strlen((char *)cbc_data),ks,&cbc_iv);
647 (long)strlen(cbc_data),ks,(C_Block *)cbc_iv);
648 if (cs != cbc_cksum_ret) 717 if (cs != cbc_cksum_ret)
649 { 718 {
650 printf("bad return value (%08lX), should be %08lX\n", 719 printf("bad return value (%08lX), should be %08lX\n",
@@ -658,77 +727,82 @@ plain[8+4], plain[8+5], plain[8+6], plain[8+7]);
658 } 727 }
659 728
660 printf("Doing quad_cksum\n"); 729 printf("Doing quad_cksum\n");
661 cs=quad_cksum((C_Block *)cbc_data,(C_Block *)qret, 730 cs=des_quad_cksum(cbc_data,(des_cblock *)lqret,
662 (long)strlen(cbc_data),2,(C_Block *)cbc_iv); 731 (long)strlen((char *)cbc_data),2,(des_cblock *)cbc_iv);
663 j=sizeof(lqret[0])-4; 732 if (cs != 0x70d7a63aL)
664 for (i=0; i<4; i++) 733 {
734 printf("quad_cksum error, ret %08lx should be 70d7a63a\n",
735 (unsigned long)cs);
736 err=1;
737 }
738#ifdef _CRAY
739 if (lqret[0].a != 0x327eba8dL)
665 { 740 {
666 lqret[i]=0; 741 printf("quad_cksum error, out[0] %08lx is not %08lx\n",
667 memcpy(&(lqret[i]),&(qret[i][0]),4); 742 (unsigned long)lqret[0].a,0x327eba8dUL);
668 if (j > 0) lqret[i]=lqret[i]>>(j*8); /* For Cray */ 743 err=1;
669 } 744 }
670 { /* Big-endian fix */ 745 if (lqret[0].b != 0x201a49ccL)
671 static DES_LONG l=1;
672 static unsigned char *c=(unsigned char *)&l;
673 DES_LONG ll;
674
675 if (!c[0])
676 { 746 {
677 ll=lqret[0]^lqret[3]; 747 printf("quad_cksum error, out[1] %08lx is not %08lx\n",
678 lqret[0]^=ll; 748 (unsigned long)lqret[0].b,0x201a49ccUL);
679 lqret[3]^=ll; 749 err=1;
680 ll=lqret[1]^lqret[2];
681 lqret[1]^=ll;
682 lqret[2]^=ll;
683 } 750 }
684 } 751 if (lqret[1].a != 0x70d7a63aL)
685 if (cs != 0x70d7a63aL)
686 { 752 {
687 printf("quad_cksum error, ret %08lx should be 70d7a63a\n", 753 printf("quad_cksum error, out[2] %08lx is not %08lx\n",
688 (unsigned long)cs); 754 (unsigned long)lqret[1].a,0x70d7a63aUL);
689 err=1; 755 err=1;
690 } 756 }
757 if (lqret[1].b != 0x501c2c26L)
758 {
759 printf("quad_cksum error, out[3] %08lx is not %08lx\n",
760 (unsigned long)lqret[1].b,0x501c2c26UL);
761 err=1;
762 }
763#else
691 if (lqret[0] != 0x327eba8dL) 764 if (lqret[0] != 0x327eba8dL)
692 { 765 {
693 printf("quad_cksum error, out[0] %08lx is not %08lx\n", 766 printf("quad_cksum error, out[0] %08lx is not %08lx\n",
694 (unsigned long)lqret[0],0x327eba8dL); 767 (unsigned long)lqret[0],0x327eba8dUL);
695 err=1; 768 err=1;
696 } 769 }
697 if (lqret[1] != 0x201a49ccL) 770 if (lqret[1] != 0x201a49ccL)
698 { 771 {
699 printf("quad_cksum error, out[1] %08lx is not %08lx\n", 772 printf("quad_cksum error, out[1] %08lx is not %08lx\n",
700 (unsigned long)lqret[1],0x201a49ccL); 773 (unsigned long)lqret[1],0x201a49ccUL);
701 err=1; 774 err=1;
702 } 775 }
703 if (lqret[2] != 0x70d7a63aL) 776 if (lqret[2] != 0x70d7a63aL)
704 { 777 {
705 printf("quad_cksum error, out[2] %08lx is not %08lx\n", 778 printf("quad_cksum error, out[2] %08lx is not %08lx\n",
706 (unsigned long)lqret[2],0x70d7a63aL); 779 (unsigned long)lqret[2],0x70d7a63aUL);
707 err=1; 780 err=1;
708 } 781 }
709 if (lqret[3] != 0x501c2c26L) 782 if (lqret[3] != 0x501c2c26L)
710 { 783 {
711 printf("quad_cksum error, out[3] %08lx is not %08lx\n", 784 printf("quad_cksum error, out[3] %08lx is not %08lx\n",
712 (unsigned long)lqret[3],0x501c2c26L); 785 (unsigned long)lqret[3],0x501c2c26UL);
713 err=1; 786 err=1;
714 } 787 }
715#endif 788#endif
789#endif
716 790
717 printf("input word alignment test"); 791 printf("input word alignment test");
718 for (i=0; i<4; i++) 792 for (i=0; i<4; i++)
719 { 793 {
720 printf(" %d",i); 794 printf(" %d",i);
721 des_ncbc_encrypt((C_Block *)&(cbc_out[i]),(C_Block *)cbc_in, 795 des_ncbc_encrypt(&(cbc_out[i]),cbc_in,
722 (long)strlen(cbc_data)+1,ks,(C_Block *)cbc_iv, 796 strlen((char *)cbc_data)+1,ks,
723 DES_ENCRYPT); 797 &cbc_iv,DES_ENCRYPT);
724 } 798 }
725 printf("\noutput word alignment test"); 799 printf("\noutput word alignment test");
726 for (i=0; i<4; i++) 800 for (i=0; i<4; i++)
727 { 801 {
728 printf(" %d",i); 802 printf(" %d",i);
729 des_ncbc_encrypt((C_Block *)cbc_out,(C_Block *)&(cbc_in[i]), 803 des_ncbc_encrypt(cbc_out,&(cbc_in[i]),
730 (long)strlen(cbc_data)+1,ks,(C_Block *)cbc_iv, 804 strlen((char *)cbc_data)+1,ks,
731 DES_ENCRYPT); 805 &cbc_iv,DES_ENCRYPT);
732 } 806 }
733 printf("\n"); 807 printf("\n");
734 printf("fast crypt test "); 808 printf("fast crypt test ");
@@ -745,12 +819,10 @@ plain[8+4], plain[8+5], plain[8+6], plain[8+7]);
745 err=1; 819 err=1;
746 } 820 }
747 printf("\n"); 821 printf("\n");
748 exit(err); 822 return(err);
749 return(0);
750 } 823 }
751 824
752static char *pt(p) 825static char *pt(unsigned char *p)
753unsigned char *p;
754 { 826 {
755 static char bufs[10][20]; 827 static char bufs[10][20];
756 static int bnum=0; 828 static int bnum=0;
@@ -771,17 +843,15 @@ unsigned char *p;
771 843
772#ifndef LIBDES_LIT 844#ifndef LIBDES_LIT
773 845
774static int cfb_test(bits, cfb_cipher) 846static int cfb_test(int bits, unsigned char *cfb_cipher)
775int bits;
776unsigned char *cfb_cipher;
777 { 847 {
778 des_key_schedule ks; 848 des_key_schedule ks;
779 int i,err=0; 849 int i,err=0;
780 850
781 des_key_sched((C_Block *)cfb_key,ks); 851 DES_set_key_checked(&cfb_key,&ks);
782 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv)); 852 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
783 des_cfb_encrypt(plain,cfb_buf1,bits,(long)sizeof(plain),ks, 853 des_cfb_encrypt(plain,cfb_buf1,bits,sizeof(plain),ks,&cfb_tmp,
784 (C_Block *)cfb_tmp,DES_ENCRYPT); 854 DES_ENCRYPT);
785 if (memcmp(cfb_cipher,cfb_buf1,sizeof(plain)) != 0) 855 if (memcmp(cfb_cipher,cfb_buf1,sizeof(plain)) != 0)
786 { 856 {
787 err=1; 857 err=1;
@@ -790,8 +860,8 @@ unsigned char *cfb_cipher;
790 printf("%s\n",pt(&(cfb_buf1[i]))); 860 printf("%s\n",pt(&(cfb_buf1[i])));
791 } 861 }
792 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv)); 862 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
793 des_cfb_encrypt(cfb_buf1,cfb_buf2,bits,(long)sizeof(plain),ks, 863 des_cfb_encrypt(cfb_buf1,cfb_buf2,bits,sizeof(plain),ks,&cfb_tmp,
794 (C_Block *)cfb_tmp,DES_DECRYPT); 864 DES_DECRYPT);
795 if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0) 865 if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0)
796 { 866 {
797 err=1; 867 err=1;
@@ -802,20 +872,17 @@ unsigned char *cfb_cipher;
802 return(err); 872 return(err);
803 } 873 }
804 874
805static int cfb64_test(cfb_cipher) 875static int cfb64_test(unsigned char *cfb_cipher)
806unsigned char *cfb_cipher;
807 { 876 {
808 des_key_schedule ks; 877 des_key_schedule ks;
809 int err=0,i,n; 878 int err=0,i,n;
810 879
811 des_key_sched((C_Block *)cfb_key,ks); 880 DES_set_key_checked(&cfb_key,&ks);
812 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv)); 881 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
813 n=0; 882 n=0;
814 des_cfb64_encrypt(plain,cfb_buf1,(long)12,ks, 883 des_cfb64_encrypt(plain,cfb_buf1,12,ks,&cfb_tmp,&n,DES_ENCRYPT);
815 (C_Block *)cfb_tmp,&n,DES_ENCRYPT); 884 des_cfb64_encrypt(&(plain[12]),&(cfb_buf1[12]),sizeof(plain)-12,ks,
816 des_cfb64_encrypt(&(plain[12]),&(cfb_buf1[12]), 885 &cfb_tmp,&n,DES_ENCRYPT);
817 (long)sizeof(plain)-12,ks,
818 (C_Block *)cfb_tmp,&n,DES_ENCRYPT);
819 if (memcmp(cfb_cipher,cfb_buf1,sizeof(plain)) != 0) 886 if (memcmp(cfb_cipher,cfb_buf1,sizeof(plain)) != 0)
820 { 887 {
821 err=1; 888 err=1;
@@ -825,11 +892,9 @@ unsigned char *cfb_cipher;
825 } 892 }
826 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv)); 893 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
827 n=0; 894 n=0;
828 des_cfb64_encrypt(cfb_buf1,cfb_buf2,(long)17,ks, 895 des_cfb64_encrypt(cfb_buf1,cfb_buf2,17,ks,&cfb_tmp,&n,DES_DECRYPT);
829 (C_Block *)cfb_tmp,&n,DES_DECRYPT);
830 des_cfb64_encrypt(&(cfb_buf1[17]),&(cfb_buf2[17]), 896 des_cfb64_encrypt(&(cfb_buf1[17]),&(cfb_buf2[17]),
831 (long)sizeof(plain)-17,ks, 897 sizeof(plain)-17,ks,&cfb_tmp,&n,DES_DECRYPT);
832 (C_Block *)cfb_tmp,&n,DES_DECRYPT);
833 if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0) 898 if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0)
834 { 899 {
835 err=1; 900 err=1;
@@ -840,20 +905,19 @@ unsigned char *cfb_cipher;
840 return(err); 905 return(err);
841 } 906 }
842 907
843static int ede_cfb64_test(cfb_cipher) 908static int ede_cfb64_test(unsigned char *cfb_cipher)
844unsigned char *cfb_cipher;
845 { 909 {
846 des_key_schedule ks; 910 des_key_schedule ks;
847 int err=0,i,n; 911 int err=0,i,n;
848 912
849 des_key_sched((C_Block *)cfb_key,ks); 913 DES_set_key_checked(&cfb_key,&ks);
850 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv)); 914 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
851 n=0; 915 n=0;
852 des_ede3_cfb64_encrypt(plain,cfb_buf1,(long)12,ks,ks,ks, 916 des_ede3_cfb64_encrypt(plain,cfb_buf1,12,ks,ks,ks,&cfb_tmp,&n,
853 (C_Block *)cfb_tmp,&n,DES_ENCRYPT); 917 DES_ENCRYPT);
854 des_ede3_cfb64_encrypt(&(plain[12]),&(cfb_buf1[12]), 918 des_ede3_cfb64_encrypt(&(plain[12]),&(cfb_buf1[12]),
855 (long)sizeof(plain)-12,ks,ks,ks, 919 sizeof(plain)-12,ks,ks,ks,
856 (C_Block *)cfb_tmp,&n,DES_ENCRYPT); 920 &cfb_tmp,&n,DES_ENCRYPT);
857 if (memcmp(cfb_cipher,cfb_buf1,sizeof(plain)) != 0) 921 if (memcmp(cfb_cipher,cfb_buf1,sizeof(plain)) != 0)
858 { 922 {
859 err=1; 923 err=1;
@@ -864,10 +928,10 @@ unsigned char *cfb_cipher;
864 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv)); 928 memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
865 n=0; 929 n=0;
866 des_ede3_cfb64_encrypt(cfb_buf1,cfb_buf2,(long)17,ks,ks,ks, 930 des_ede3_cfb64_encrypt(cfb_buf1,cfb_buf2,(long)17,ks,ks,ks,
867 (C_Block *)cfb_tmp,&n,DES_DECRYPT); 931 &cfb_tmp,&n,DES_DECRYPT);
868 des_ede3_cfb64_encrypt(&(cfb_buf1[17]),&(cfb_buf2[17]), 932 des_ede3_cfb64_encrypt(&(cfb_buf1[17]),&(cfb_buf2[17]),
869 (long)sizeof(plain)-17,ks,ks,ks, 933 sizeof(plain)-17,ks,ks,ks,
870 (C_Block *)cfb_tmp,&n,DES_DECRYPT); 934 &cfb_tmp,&n,DES_DECRYPT);
871 if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0) 935 if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0)
872 { 936 {
873 err=1; 937 err=1;
@@ -879,4 +943,4 @@ unsigned char *cfb_cipher;
879 } 943 }
880 944
881#endif 945#endif
882 946#endif
diff --git a/src/lib/libcrypto/des/read2pwd.c b/src/lib/libcrypto/des/read2pwd.c
index a0d53793e4..b4720c3a98 100644
--- a/src/lib/libcrypto/des/read2pwd.c
+++ b/src/lib/libcrypto/des/read2pwd.c
@@ -1,4 +1,57 @@
1/* crypto/des/read2pwd.c */ 1/* crypto/des/read2pwd.c */
2/* ====================================================================
3 * Copyright (c) 2001-2002 The OpenSSL Project. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in
14 * the documentation and/or other materials provided with the
15 * distribution.
16 *
17 * 3. All advertising materials mentioning features or use of this
18 * software must display the following acknowledgment:
19 * "This product includes software developed by the OpenSSL Project
20 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
21 *
22 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
23 * endorse or promote products derived from this software without
24 * prior written permission. For written permission, please contact
25 * openssl-core@openssl.org.
26 *
27 * 5. Products derived from this software may not be called "OpenSSL"
28 * nor may "OpenSSL" appear in their names without prior written
29 * permission of the OpenSSL Project.
30 *
31 * 6. Redistributions of any form whatsoever must retain the following
32 * acknowledgment:
33 * "This product includes software developed by the OpenSSL Project
34 * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
35 *
36 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
37 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
38 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
39 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
40 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
42 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
43 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
44 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
45 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
46 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
47 * OF THE POSSIBILITY OF SUCH DAMAGE.
48 * ====================================================================
49 *
50 * This product includes cryptographic software written by Eric Young
51 * (eay@cryptsoft.com). This product includes software written by Tim
52 * Hudson (tjh@cryptsoft.com).
53 *
54 */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 55/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 56 * All rights reserved.
4 * 57 *
@@ -56,34 +109,30 @@
56 * [including the GNU Public Licence.] 109 * [including the GNU Public Licence.]
57 */ 110 */
58 111
59#include "des_locl.h" 112#include <string.h>
113#include <openssl/des.h>
114#include <openssl/ui.h>
60 115
61int des_read_password(key, prompt, verify) 116int DES_read_password(DES_cblock *key, const char *prompt, int verify)
62des_cblock (*key);
63char *prompt;
64int verify;
65 { 117 {
66 int ok; 118 int ok;
67 char buf[BUFSIZ],buff[BUFSIZ]; 119 char buf[BUFSIZ],buff[BUFSIZ];
68 120
69 if ((ok=des_read_pw(buf,buff,BUFSIZ,prompt,verify)) == 0) 121 if ((ok=UI_UTIL_read_pw(buf,buff,BUFSIZ,prompt,verify)) == 0)
70 des_string_to_key(buf,key); 122 DES_string_to_key(buf,key);
71 memset(buf,0,BUFSIZ); 123 memset(buf,0,BUFSIZ);
72 memset(buff,0,BUFSIZ); 124 memset(buff,0,BUFSIZ);
73 return(ok); 125 return(ok);
74 } 126 }
75 127
76int des_read_2passwords(key1, key2, prompt, verify) 128int DES_read_2passwords(DES_cblock *key1, DES_cblock *key2, const char *prompt,
77des_cblock (*key1); 129 int verify)
78des_cblock (*key2);
79char *prompt;
80int verify;
81 { 130 {
82 int ok; 131 int ok;
83 char buf[BUFSIZ],buff[BUFSIZ]; 132 char buf[BUFSIZ],buff[BUFSIZ];
84 133
85 if ((ok=des_read_pw(buf,buff,BUFSIZ,prompt,verify)) == 0) 134 if ((ok=UI_UTIL_read_pw(buf,buff,BUFSIZ,prompt,verify)) == 0)
86 des_string_to_2keys(buf,key1,key2); 135 DES_string_to_2keys(buf,key1,key2);
87 memset(buf,0,BUFSIZ); 136 memset(buf,0,BUFSIZ);
88 memset(buff,0,BUFSIZ); 137 memset(buff,0,BUFSIZ);
89 return(ok); 138 return(ok);
diff --git a/src/lib/libcrypto/des/read_pwd.c b/src/lib/libcrypto/des/read_pwd.c
index 99920f2f86..00000190f8 100644
--- a/src/lib/libcrypto/des/read_pwd.c
+++ b/src/lib/libcrypto/des/read_pwd.c
@@ -56,20 +56,55 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58 58
59#include <openssl/e_os2.h>
60#if !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_VMS) && !defined(OPENSSL_SYS_WIN32)
61#ifdef OPENSSL_UNISTD
62# include OPENSSL_UNISTD
63#else
64# include <unistd.h>
65#endif
66/* If unistd.h defines _POSIX_VERSION, we conclude that we
67 * are on a POSIX system and have sigaction and termios. */
68#if defined(_POSIX_VERSION)
69
70# define SIGACTION
71# if !defined(TERMIOS) && !defined(TERMIO) && !defined(SGTTY)
72# define TERMIOS
73# endif
74
75#endif
76#endif
77
59/* #define SIGACTION */ /* Define this if you have sigaction() */ 78/* #define SIGACTION */ /* Define this if you have sigaction() */
79
60#ifdef WIN16TTY 80#ifdef WIN16TTY
61#undef WIN16 81#undef OPENSSL_SYS_WIN16
62#undef _WINDOWS 82#undef _WINDOWS
63#include <graph.h> 83#include <graph.h>
64#endif 84#endif
65 85
66/* 06-Apr-92 Luke Brennan Support for VMS */ 86/* 06-Apr-92 Luke Brennan Support for VMS */
67#include "des_locl.h" 87#include "des_locl.h"
88#include "cryptlib.h"
68#include <signal.h> 89#include <signal.h>
90#include <stdio.h>
69#include <string.h> 91#include <string.h>
70#include <setjmp.h> 92#include <setjmp.h>
71#include <errno.h> 93#include <errno.h>
72 94
95#ifdef OPENSSL_SYS_VMS /* prototypes for sys$whatever */
96#include <starlet.h>
97#ifdef __DECC
98#pragma message disable DOLLARID
99#endif
100#endif
101
102#ifdef WIN_CONSOLE_BUG
103#include <windows.h>
104#include <wincon.h>
105#endif
106
107
73/* There are 5 types of terminal interface supported, 108/* There are 5 types of terminal interface supported,
74 * TERMIO, TERMIOS, VMS, MSDOS and SGTTY 109 * TERMIO, TERMIOS, VMS, MSDOS and SGTTY
75 */ 110 */
@@ -92,12 +127,18 @@
92#undef SGTTY 127#undef SGTTY
93#endif 128#endif
94 129
95#if !defined(TERMIO) && !defined(TERMIOS) && !defined(VMS) && !defined(MSDOS) 130#if !defined(TERMIO) && !defined(TERMIOS) && !defined(OPENSSL_SYS_VMS) && !defined(OPENSSL_SYS_MSDOS) && !defined(MAC_OS_pre_X) && !defined(MAC_OS_GUSI_SOURCE)
96#undef TERMIOS 131#undef TERMIOS
97#undef TERMIO 132#undef TERMIO
98#define SGTTY 133#define SGTTY
99#endif 134#endif
100 135
136#if defined(OPENSSL_SYS_VSWORKS)
137#undef TERMIOS
138#undef TERMIO
139#undef SGTTY
140#endif
141
101#ifdef TERMIOS 142#ifdef TERMIOS
102#include <termios.h> 143#include <termios.h>
103#define TTY_STRUCT struct termios 144#define TTY_STRUCT struct termios
@@ -122,16 +163,16 @@
122#define TTY_set(tty,data) ioctl(tty,TIOCSETP,data) 163#define TTY_set(tty,data) ioctl(tty,TIOCSETP,data)
123#endif 164#endif
124 165
125#if !defined(_LIBC) && !defined(MSDOS) && !defined(VMS) 166#if !defined(_LIBC) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_VMS) && !defined(MAC_OS_pre_X)
126#include <sys/ioctl.h> 167#include <sys/ioctl.h>
127#endif 168#endif
128 169
129#ifdef MSDOS 170#if defined(OPENSSL_SYS_MSDOS) && !defined(__CYGWIN32__)
130#include <conio.h> 171#include <conio.h>
131#define fgets(a,b,c) noecho_fgets(a,b,c) 172#define fgets(a,b,c) noecho_fgets(a,b,c)
132#endif 173#endif
133 174
134#ifdef VMS 175#ifdef OPENSSL_SYS_VMS
135#include <ssdef.h> 176#include <ssdef.h>
136#include <iodef.h> 177#include <iodef.h>
137#include <ttdef.h> 178#include <ttdef.h>
@@ -143,44 +184,35 @@ struct IOSB {
143 }; 184 };
144#endif 185#endif
145 186
187#if defined(MAC_OS_pre_X) || defined(MAC_OS_GUSI_SOURCE)
188/*
189 * This one needs work. As a matter of fact the code is unoperational
190 * and this is only a trick to get it compiled.
191 * <appro@fy.chalmers.se>
192 */
193#define TTY_STRUCT int
194#endif
195
146#ifndef NX509_SIG 196#ifndef NX509_SIG
147#define NX509_SIG 32 197#define NX509_SIG 32
148#endif 198#endif
149 199
150#ifndef NOPROTO
151static void read_till_nl(FILE *); 200static void read_till_nl(FILE *);
152static void recsig(int); 201static void recsig(int);
153static void pushsig(void); 202static void pushsig(void);
154static void popsig(void); 203static void popsig(void);
155#if defined(MSDOS) && !defined(WIN16) 204#if defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_WIN16)
156static int noecho_fgets(char *buf, int size, FILE *tty); 205static int noecho_fgets(char *buf, int size, FILE *tty);
157#endif 206#endif
158#else
159static void read_till_nl();
160static void recsig();
161static void pushsig();
162static void popsig();
163#if defined(MSDOS) && !defined(WIN16)
164static int noecho_fgets();
165#endif
166#endif
167
168#ifdef SIGACTION 207#ifdef SIGACTION
169 static struct sigaction savsig[NX509_SIG]; 208 static struct sigaction savsig[NX509_SIG];
170#else 209#else
171# ifndef NOPROTO
172 static void (*savsig[NX509_SIG])(int ); 210 static void (*savsig[NX509_SIG])(int );
173# else
174 static void (*savsig[NX509_SIG])();
175# endif
176#endif 211#endif
177static jmp_buf save; 212static jmp_buf save;
178 213
179int des_read_pw_string(buf, length, prompt, verify) 214int des_read_pw_string(char *buf, int length, const char *prompt,
180char *buf; 215 int verify)
181int length;
182char *prompt;
183int verify;
184 { 216 {
185 char buff[BUFSIZ]; 217 char buff[BUFSIZ];
186 int ret; 218 int ret;
@@ -190,10 +222,9 @@ int verify;
190 return(ret); 222 return(ret);
191 } 223 }
192 224
193#ifndef WIN16 225#ifndef OPENSSL_SYS_WIN16
194 226
195static void read_till_nl(in) 227static void read_till_nl(FILE *in)
196FILE *in;
197 { 228 {
198#define SIZE 4 229#define SIZE 4
199 char buf[SIZE+1]; 230 char buf[SIZE+1];
@@ -205,41 +236,54 @@ FILE *in;
205 236
206 237
207/* return 0 if ok, 1 (or -1) otherwise */ 238/* return 0 if ok, 1 (or -1) otherwise */
208int des_read_pw(buf, buff, size, prompt, verify) 239int des_read_pw(char *buf, char *buff, int size, const char *prompt,
209char *buf; 240 int verify)
210char *buff;
211int size;
212char *prompt;
213int verify;
214 { 241 {
215#ifdef VMS 242#ifdef OPENSSL_SYS_VMS
216 struct IOSB iosb; 243 struct IOSB iosb;
217 $DESCRIPTOR(terminal,"TT"); 244 $DESCRIPTOR(terminal,"TT");
218 long tty_orig[3], tty_new[3]; 245 long tty_orig[3], tty_new[3];
219 long status; 246 long status;
220 unsigned short channel = 0; 247 unsigned short channel = 0;
221#else 248#else
222#ifndef MSDOS 249#ifndef OPENSSL_SYS_MSDOS
223 TTY_STRUCT tty_orig,tty_new; 250 TTY_STRUCT tty_orig,tty_new;
224#endif 251#endif
225#endif 252#endif
226 int number=5; 253 int number;
227 int ok=0; 254 int ok;
228 int ps=0; 255 /* statics are simply to avoid warnings about longjmp clobbering
229 int is_a_tty=1; 256 things */
230 257 static int ps;
231 FILE *tty=NULL; 258 int is_a_tty;
259 static FILE *tty;
232 char *p; 260 char *p;
233 261
234#ifndef MSDOS 262 if (setjmp(save))
235 if ((tty=fopen("/dev/tty","r")) == NULL) 263 {
236 tty=stdin; 264 ok=0;
237#else /* MSDOS */ 265 goto error;
266 }
267
268 number=5;
269 ok=0;
270 ps=0;
271 is_a_tty=1;
272 tty=NULL;
273
274#ifdef OPENSSL_SYS_MSDOS
238 if ((tty=fopen("con","r")) == NULL) 275 if ((tty=fopen("con","r")) == NULL)
239 tty=stdin; 276 tty=stdin;
240#endif /* MSDOS */ 277#elif defined(MAC_OS_pre_X) || defined(OPENSSL_SYS_VSWORKS)
278 tty=stdin;
279#else
280#ifndef OPENSSL_SYS_MPE
281 if ((tty=fopen("/dev/tty","r")) == NULL)
282#endif
283 tty=stdin;
284#endif
241 285
242#if defined(TTY_get) && !defined(VMS) 286#if defined(TTY_get) && !defined(OPENSSL_SYS_VMS)
243 if (TTY_get(fileno(tty),&tty_orig) == -1) 287 if (TTY_get(fileno(tty),&tty_orig) == -1)
244 { 288 {
245#ifdef ENOTTY 289#ifdef ENOTTY
@@ -258,20 +302,15 @@ int verify;
258 } 302 }
259 memcpy(&(tty_new),&(tty_orig),sizeof(tty_orig)); 303 memcpy(&(tty_new),&(tty_orig),sizeof(tty_orig));
260#endif 304#endif
261#ifdef VMS 305#ifdef OPENSSL_SYS_VMS
262 status = SYS$ASSIGN(&terminal,&channel,0,0); 306 status = sys$assign(&terminal,&channel,0,0);
263 if (status != SS$_NORMAL) 307 if (status != SS$_NORMAL)
264 return(-1); 308 return(-1);
265 status=SYS$QIOW(0,channel,IO$_SENSEMODE,&iosb,0,0,tty_orig,12,0,0,0,0); 309 status=sys$qiow(0,channel,IO$_SENSEMODE,&iosb,0,0,tty_orig,12,0,0,0,0);
266 if ((status != SS$_NORMAL) || (iosb.iosb$w_value != SS$_NORMAL)) 310 if ((status != SS$_NORMAL) || (iosb.iosb$w_value != SS$_NORMAL))
267 return(-1); 311 return(-1);
268#endif 312#endif
269 313
270 if (setjmp(save))
271 {
272 ok=0;
273 goto error;
274 }
275 pushsig(); 314 pushsig();
276 ps=1; 315 ps=1;
277 316
@@ -279,15 +318,19 @@ int verify;
279 tty_new.TTY_FLAGS &= ~ECHO; 318 tty_new.TTY_FLAGS &= ~ECHO;
280#endif 319#endif
281 320
282#if defined(TTY_set) && !defined(VMS) 321#if defined(TTY_set) && !defined(OPENSSL_SYS_VMS)
283 if (is_a_tty && (TTY_set(fileno(tty),&tty_new) == -1)) 322 if (is_a_tty && (TTY_set(fileno(tty),&tty_new) == -1))
323#ifdef OPENSSL_SYS_MPE
324 ; /* MPE lies -- echo really has been disabled */
325#else
284 return(-1); 326 return(-1);
285#endif 327#endif
286#ifdef VMS 328#endif
329#ifdef OPENSSL_SYS_VMS
287 tty_new[0] = tty_orig[0]; 330 tty_new[0] = tty_orig[0];
288 tty_new[1] = tty_orig[1] | TT$M_NOECHO; 331 tty_new[1] = tty_orig[1] | TT$M_NOECHO;
289 tty_new[2] = tty_orig[2]; 332 tty_new[2] = tty_orig[2];
290 status = SYS$QIOW(0,channel,IO$_SETMODE,&iosb,0,0,tty_new,12,0,0,0,0); 333 status = sys$qiow(0,channel,IO$_SETMODE,&iosb,0,0,tty_new,12,0,0,0,0);
291 if ((status != SS$_NORMAL) || (iosb.iosb$w_value != SS$_NORMAL)) 334 if ((status != SS$_NORMAL) || (iosb.iosb$w_value != SS$_NORMAL))
292 return(-1); 335 return(-1);
293#endif 336#endif
@@ -329,35 +372,30 @@ int verify;
329 372
330error: 373error:
331 fprintf(stderr,"\n"); 374 fprintf(stderr,"\n");
332#ifdef DEBUG 375#if 0
333 perror("fgets(tty)"); 376 perror("fgets(tty)");
334#endif 377#endif
335 /* What can we do if there is an error? */ 378 /* What can we do if there is an error? */
336#if defined(TTY_set) && !defined(VMS) 379#if defined(TTY_set) && !defined(OPENSSL_SYS_VMS)
337 if (ps >= 2) TTY_set(fileno(tty),&tty_orig); 380 if (ps >= 2) TTY_set(fileno(tty),&tty_orig);
338#endif 381#endif
339#ifdef VMS 382#ifdef OPENSSL_SYS_VMS
340 if (ps >= 2) 383 if (ps >= 2)
341 status = SYS$QIOW(0,channel,IO$_SETMODE,&iosb,0,0 384 status = sys$qiow(0,channel,IO$_SETMODE,&iosb,0,0
342 ,tty_orig,12,0,0,0,0); 385 ,tty_orig,12,0,0,0,0);
343#endif 386#endif
344 387
345 if (ps >= 1) popsig(); 388 if (ps >= 1) popsig();
346 if (stdin != tty) fclose(tty); 389 if (stdin != tty) fclose(tty);
347#ifdef VMS 390#ifdef OPENSSL_SYS_VMS
348 status = SYS$DASSGN(channel); 391 status = sys$dassgn(channel);
349#endif 392#endif
350 return(!ok); 393 return(!ok);
351 } 394 }
352 395
353#else /* WIN16 */ 396#else /* OPENSSL_SYS_WIN16 */
354 397
355int des_read_pw(buf, buff, size, prompt, verify) 398int des_read_pw(char *buf, char *buff, int size, char *prompt, int verify)
356char *buf;
357char *buff;
358int size;
359char *prompt;
360int verify;
361 { 399 {
362 memset(buf,0,size); 400 memset(buf,0,size);
363 memset(buff,0,size); 401 memset(buff,0,size);
@@ -366,9 +404,15 @@ int verify;
366 404
367#endif 405#endif
368 406
369static void pushsig() 407static void pushsig(void)
370 { 408 {
371 int i; 409 int i;
410#ifdef SIGACTION
411 struct sigaction sa;
412
413 memset(&sa,0,sizeof sa);
414 sa.sa_handler=recsig;
415#endif
372 416
373 for (i=1; i<NX509_SIG; i++) 417 for (i=1; i<NX509_SIG; i++)
374 { 418 {
@@ -381,7 +425,7 @@ static void pushsig()
381 continue; 425 continue;
382#endif 426#endif
383#ifdef SIGACTION 427#ifdef SIGACTION
384 sigaction(i,NULL,&savsig[i]); 428 sigaction(i,&sa,&savsig[i]);
385#else 429#else
386 savsig[i]=signal(i,recsig); 430 savsig[i]=signal(i,recsig);
387#endif 431#endif
@@ -392,7 +436,7 @@ static void pushsig()
392#endif 436#endif
393 } 437 }
394 438
395static void popsig() 439static void popsig(void)
396 { 440 {
397 int i; 441 int i;
398 442
@@ -414,8 +458,7 @@ static void popsig()
414 } 458 }
415 } 459 }
416 460
417static void recsig(i) 461static void recsig(int i)
418int i;
419 { 462 {
420 longjmp(save,1); 463 longjmp(save,1);
421#ifdef LINT 464#ifdef LINT
@@ -423,11 +466,8 @@ int i;
423#endif 466#endif
424 } 467 }
425 468
426#if defined(MSDOS) && !defined(WIN16) 469#if defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_WIN16)
427static int noecho_fgets(buf,size,tty) 470static int noecho_fgets(char *buf, int size, FILE *tty)
428char *buf;
429int size;
430FILE *tty;
431 { 471 {
432 int i; 472 int i;
433 char *p; 473 char *p;
@@ -454,6 +494,18 @@ FILE *tty;
454 break; 494 break;
455 } 495 }
456 } 496 }
497#ifdef WIN_CONSOLE_BUG
498/* Win95 has several evil console bugs: one of these is that the
499 * last character read using getch() is passed to the next read: this is
500 * usually a CR so this can be trouble. No STDIO fix seems to work but
501 * flushing the console appears to do the trick.
502 */
503 {
504 HANDLE inh;
505 inh = GetStdHandle(STD_INPUT_HANDLE);
506 FlushConsoleInputBuffer(inh);
507 }
508#endif
457 return(strlen(buf)); 509 return(strlen(buf));
458 } 510 }
459#endif 511#endif
diff --git a/src/lib/libcrypto/des/rpc_enc.c b/src/lib/libcrypto/des/rpc_enc.c
index 7c1da1f538..d937d08da5 100644
--- a/src/lib/libcrypto/des/rpc_enc.c
+++ b/src/lib/libcrypto/des/rpc_enc.c
@@ -60,32 +60,23 @@
60#include "des_locl.h" 60#include "des_locl.h"
61#include "des_ver.h" 61#include "des_ver.h"
62 62
63#ifndef NOPROTO
64int _des_crypt(char *buf,int len,struct desparams *desp); 63int _des_crypt(char *buf,int len,struct desparams *desp);
65#else 64int _des_crypt(char *buf, int len, struct desparams *desp)
66int _des_crypt();
67#endif
68
69int _des_crypt(buf, len, desp)
70char *buf;
71int len;
72struct desparams *desp;
73 { 65 {
74 des_key_schedule ks; 66 DES_key_schedule ks;
75 int enc; 67 int enc;
76 68
77 des_set_key((des_cblock *)desp->des_key,ks); 69 DES_set_key_unchecked(&desp->des_key,&ks);
78 enc=(desp->des_dir == ENCRYPT)?DES_ENCRYPT:DES_DECRYPT; 70 enc=(desp->des_dir == ENCRYPT)?DES_ENCRYPT:DES_DECRYPT;
79 71
80 if (desp->des_mode == CBC) 72 if (desp->des_mode == CBC)
81 des_ecb_encrypt((des_cblock *)desp->UDES.UDES_buf, 73 DES_ecb_encrypt((const_DES_cblock *)desp->UDES.UDES_buf,
82 (des_cblock *)desp->UDES.UDES_buf,ks,enc); 74 (DES_cblock *)desp->UDES.UDES_buf,&ks,
75 enc);
83 else 76 else
84 { 77 {
85 des_ncbc_encrypt((des_cblock *)desp->UDES.UDES_buf, 78 DES_ncbc_encrypt(desp->UDES.UDES_buf,desp->UDES.UDES_buf,
86 (des_cblock *)desp->UDES.UDES_buf, 79 len,&ks,&desp->des_ivec,enc);
87 (long)len,ks,
88 (des_cblock *)desp->des_ivec,enc);
89#ifdef undef 80#ifdef undef
90 /* len will always be %8 if called from common_crypt 81 /* len will always be %8 if called from common_crypt
91 * in secure_rpc. 82 * in secure_rpc.
diff --git a/src/lib/libcrypto/des/rpw.c b/src/lib/libcrypto/des/rpw.c
index 6447ed9cf0..8a9473c4f9 100644
--- a/src/lib/libcrypto/des/rpw.c
+++ b/src/lib/libcrypto/des/rpw.c
@@ -57,17 +57,15 @@
57 */ 57 */
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "des.h" 60#include <openssl/des.h>
61 61
62int main(argc,argv) 62int main(int argc, char *argv[])
63int argc;
64char *argv[];
65 { 63 {
66 des_cblock k,k1; 64 DES_cblock k,k1;
67 int i; 65 int i;
68 66
69 printf("read passwd\n"); 67 printf("read passwd\n");
70 if ((i=des_read_password((C_Block *)k,"Enter password:",0)) == 0) 68 if ((i=des_read_password(&k,"Enter password:",0)) == 0)
71 { 69 {
72 printf("password = "); 70 printf("password = ");
73 for (i=0; i<8; i++) 71 for (i=0; i<8; i++)
@@ -77,7 +75,7 @@ char *argv[];
77 printf("error %d\n",i); 75 printf("error %d\n",i);
78 printf("\n"); 76 printf("\n");
79 printf("read 2passwds and verify\n"); 77 printf("read 2passwds and verify\n");
80 if ((i=des_read_2passwords((C_Block *)k,(C_Block *)k1, 78 if ((i=des_read_2passwords(&k,&k1,
81 "Enter verified password:",1)) == 0) 79 "Enter verified password:",1)) == 0)
82 { 80 {
83 printf("password1 = "); 81 printf("password1 = ");
diff --git a/src/lib/libcrypto/des/speed.c b/src/lib/libcrypto/des/speed.c
index 5bbe8b01d6..48fc1d49fc 100644
--- a/src/lib/libcrypto/des/speed.c
+++ b/src/lib/libcrypto/des/speed.c
@@ -59,19 +59,17 @@
59/* 11-Sep-92 Andrew Daviel Support for Silicon Graphics IRIX added */ 59/* 11-Sep-92 Andrew Daviel Support for Silicon Graphics IRIX added */
60/* 06-Apr-92 Luke Brennan Support for VMS and add extra signal calls */ 60/* 06-Apr-92 Luke Brennan Support for VMS and add extra signal calls */
61 61
62#ifndef MSDOS 62#if !defined(OPENSSL_SYS_MSDOS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC)) && !defined(OPENSSL_SYS_MACOSX)
63#define TIMES 63#define TIMES
64#endif 64#endif
65 65
66#include <stdio.h> 66#include <stdio.h>
67#ifndef MSDOS 67
68#include <unistd.h> 68#include <openssl/e_os2.h>
69#else 69#include OPENSSL_UNISTD_IO
70#include <io.h> 70OPENSSL_DECLARE_EXIT
71extern int exit(); 71
72#endif
73#include <signal.h> 72#include <signal.h>
74#ifndef VMS
75#ifndef _IRIX 73#ifndef _IRIX
76#include <time.h> 74#include <time.h>
77#endif 75#endif
@@ -79,35 +77,32 @@ extern int exit();
79#include <sys/types.h> 77#include <sys/types.h>
80#include <sys/times.h> 78#include <sys/times.h>
81#endif 79#endif
82#else /* VMS */ 80
83#include <types.h> 81/* Depending on the VMS version, the tms structure is perhaps defined.
84struct tms { 82 The __TMS macro will show if it was. If it wasn't defined, we should
85 time_t tms_utime; 83 undefine TIMES, since that tells the rest of the program how things
86 time_t tms_stime; 84 should be handled. -- Richard Levitte */
87 time_t tms_uchild; /* I dunno... */ 85#if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS)
88 time_t tms_uchildsys; /* so these names are a guess :-) */ 86#undef TIMES
89 }
90#endif 87#endif
88
91#ifndef TIMES 89#ifndef TIMES
92#include <sys/timeb.h> 90#include <sys/timeb.h>
93#endif 91#endif
94 92
95#ifdef sun 93#if defined(sun) || defined(__ultrix)
94#define _POSIX_SOURCE
96#include <limits.h> 95#include <limits.h>
97#include <sys/param.h> 96#include <sys/param.h>
98#endif 97#endif
99 98
100#include "des.h" 99#include <openssl/des.h>
101 100
102/* The following if from times(3) man page. It may need to be changed */ 101/* The following if from times(3) man page. It may need to be changed */
103#ifndef HZ 102#ifndef HZ
104# ifndef CLK_TCK 103# ifndef CLK_TCK
105# ifndef _BSD_CLK_TCK_ /* FreeBSD fix */ 104# ifndef _BSD_CLK_TCK_ /* FreeBSD fix */
106# ifndef VMS 105# define HZ 100.0
107# define HZ 100.0
108# else /* VMS */
109# define HZ 100.0
110# endif
111# else /* _BSD_CLK_TCK_ */ 106# else /* _BSD_CLK_TCK_ */
112# define HZ ((double)_BSD_CLK_TCK_) 107# define HZ ((double)_BSD_CLK_TCK_)
113# endif 108# endif
@@ -119,12 +114,7 @@ struct tms {
119#define BUFSIZE ((long)1024) 114#define BUFSIZE ((long)1024)
120long run=0; 115long run=0;
121 116
122#ifndef NOPROTO
123double Time_F(int s); 117double Time_F(int s);
124#else
125double Time_F();
126#endif
127
128#ifdef SIGALRM 118#ifdef SIGALRM
129#if defined(__STDC__) || defined(sgi) || defined(_AIX) 119#if defined(__STDC__) || defined(sgi) || defined(_AIX)
130#define SIGRETTYPE void 120#define SIGRETTYPE void
@@ -132,14 +122,8 @@ double Time_F();
132#define SIGRETTYPE int 122#define SIGRETTYPE int
133#endif 123#endif
134 124
135#ifndef NOPROTO
136SIGRETTYPE sig_done(int sig); 125SIGRETTYPE sig_done(int sig);
137#else 126SIGRETTYPE sig_done(int sig)
138SIGRETTYPE sig_done();
139#endif
140
141SIGRETTYPE sig_done(sig)
142int sig;
143 { 127 {
144 signal(SIGALRM,sig_done); 128 signal(SIGALRM,sig_done);
145 run=0; 129 run=0;
@@ -152,8 +136,7 @@ int sig;
152#define START 0 136#define START 0
153#define STOP 1 137#define STOP 1
154 138
155double Time_F(s) 139double Time_F(int s)
156int s;
157 { 140 {
158 double ret; 141 double ret;
159#ifdef TIMES 142#ifdef TIMES
@@ -189,32 +172,30 @@ int s;
189#endif 172#endif
190 } 173 }
191 174
192int main(argc,argv) 175int main(int argc, char **argv)
193int argc;
194char **argv;
195 { 176 {
196 long count; 177 long count;
197 static unsigned char buf[BUFSIZE]; 178 static unsigned char buf[BUFSIZE];
198 static des_cblock key ={0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0}; 179 static DES_cblock key ={0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0};
199 static des_cblock key2={0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12}; 180 static DES_cblock key2={0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12};
200 static des_cblock key3={0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34}; 181 static DES_cblock key3={0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34};
201 des_key_schedule sch,sch2,sch3; 182 DES_key_schedule sch,sch2,sch3;
202 double a,b,c,d,e; 183 double a,b,c,d,e;
203#ifndef SIGALRM 184#ifndef SIGALRM
204 long ca,cb,cc,cd,ce; 185 long ca,cb,cc,cd,ce;
205#endif 186#endif
206 187
207#ifndef TIMES 188#ifndef TIMES
208 printf("To get the most acurate results, try to run this\n"); 189 printf("To get the most accurate results, try to run this\n");
209 printf("program when this computer is idle.\n"); 190 printf("program when this computer is idle.\n");
210#endif 191#endif
211 192
212 des_set_key((C_Block *)key2,sch2); 193 DES_set_key_unchecked(&key2,&sch2);
213 des_set_key((C_Block *)key3,sch3); 194 DES_set_key_unchecked(&key3,&sch3);
214 195
215#ifndef SIGALRM 196#ifndef SIGALRM
216 printf("First we calculate the approximate speed ...\n"); 197 printf("First we calculate the approximate speed ...\n");
217 des_set_key((C_Block *)key,sch); 198 DES_set_key_unchecked(&key,&sch);
218 count=10; 199 count=10;
219 do { 200 do {
220 long i; 201 long i;
@@ -223,7 +204,7 @@ char **argv;
223 count*=2; 204 count*=2;
224 Time_F(START); 205 Time_F(START);
225 for (i=count; i; i--) 206 for (i=count; i; i--)
226 des_encrypt(data,&(sch[0]),DES_ENCRYPT); 207 DES_encrypt1(data,&sch,DES_ENCRYPT);
227 d=Time_F(STOP); 208 d=Time_F(STOP);
228 } while (d < 3.0); 209 } while (d < 3.0);
229 ca=count; 210 ca=count;
@@ -244,63 +225,63 @@ char **argv;
244 225
245 Time_F(START); 226 Time_F(START);
246 for (count=0,run=1; COND(ca); count++) 227 for (count=0,run=1; COND(ca); count++)
247 des_set_key((C_Block *)key,sch); 228 DES_set_key_unchecked(&key,&sch);
248 d=Time_F(STOP); 229 d=Time_F(STOP);
249 printf("%ld set_key's in %.2f seconds\n",count,d); 230 printf("%ld set_key's in %.2f seconds\n",count,d);
250 a=((double)COUNT(ca))/d; 231 a=((double)COUNT(ca))/d;
251 232
252#ifdef SIGALRM 233#ifdef SIGALRM
253 printf("Doing des_encrypt's for 10 seconds\n"); 234 printf("Doing DES_encrypt's for 10 seconds\n");
254 alarm(10); 235 alarm(10);
255#else 236#else
256 printf("Doing des_encrypt %ld times\n",cb); 237 printf("Doing DES_encrypt %ld times\n",cb);
257#endif 238#endif
258 Time_F(START); 239 Time_F(START);
259 for (count=0,run=1; COND(cb); count++) 240 for (count=0,run=1; COND(cb); count++)
260 { 241 {
261 DES_LONG data[2]; 242 DES_LONG data[2];
262 243
263 des_encrypt(data,&(sch[0]),DES_ENCRYPT); 244 DES_encrypt1(data,&sch,DES_ENCRYPT);
264 } 245 }
265 d=Time_F(STOP); 246 d=Time_F(STOP);
266 printf("%ld des_encrypt's in %.2f second\n",count,d); 247 printf("%ld DES_encrypt's in %.2f second\n",count,d);
267 b=((double)COUNT(cb)*8)/d; 248 b=((double)COUNT(cb)*8)/d;
268 249
269#ifdef SIGALRM 250#ifdef SIGALRM
270 printf("Doing des_cbc_encrypt on %ld byte blocks for 10 seconds\n", 251 printf("Doing DES_cbc_encrypt on %ld byte blocks for 10 seconds\n",
271 BUFSIZE); 252 BUFSIZE);
272 alarm(10); 253 alarm(10);
273#else 254#else
274 printf("Doing des_cbc_encrypt %ld times on %ld byte blocks\n",cc, 255 printf("Doing DES_cbc_encrypt %ld times on %ld byte blocks\n",cc,
275 BUFSIZE); 256 BUFSIZE);
276#endif 257#endif
277 Time_F(START); 258 Time_F(START);
278 for (count=0,run=1; COND(cc); count++) 259 for (count=0,run=1; COND(cc); count++)
279 des_ncbc_encrypt((C_Block *)buf,(C_Block *)buf,BUFSIZE,&(sch[0]), 260 DES_ncbc_encrypt(buf,buf,BUFSIZE,&sch,
280 (C_Block *)&(key[0]),DES_ENCRYPT); 261 &key,DES_ENCRYPT);
281 d=Time_F(STOP); 262 d=Time_F(STOP);
282 printf("%ld des_cbc_encrypt's of %ld byte blocks in %.2f second\n", 263 printf("%ld DES_cbc_encrypt's of %ld byte blocks in %.2f second\n",
283 count,BUFSIZE,d); 264 count,BUFSIZE,d);
284 c=((double)COUNT(cc)*BUFSIZE)/d; 265 c=((double)COUNT(cc)*BUFSIZE)/d;
285 266
286#ifdef SIGALRM 267#ifdef SIGALRM
287 printf("Doing des_ede_cbc_encrypt on %ld byte blocks for 10 seconds\n", 268 printf("Doing DES_ede_cbc_encrypt on %ld byte blocks for 10 seconds\n",
288 BUFSIZE); 269 BUFSIZE);
289 alarm(10); 270 alarm(10);
290#else 271#else
291 printf("Doing des_ede_cbc_encrypt %ld times on %ld byte blocks\n",cd, 272 printf("Doing DES_ede_cbc_encrypt %ld times on %ld byte blocks\n",cd,
292 BUFSIZE); 273 BUFSIZE);
293#endif 274#endif
294 Time_F(START); 275 Time_F(START);
295 for (count=0,run=1; COND(cd); count++) 276 for (count=0,run=1; COND(cd); count++)
296 des_ede3_cbc_encrypt((C_Block *)buf,(C_Block *)buf,BUFSIZE, 277 DES_ede3_cbc_encrypt(buf,buf,BUFSIZE,
297 &(sch[0]), 278 &sch,
298 &(sch2[0]), 279 &sch2,
299 &(sch3[0]), 280 &sch3,
300 (C_Block *)&(key[0]), 281 &key,
301 DES_ENCRYPT); 282 DES_ENCRYPT);
302 d=Time_F(STOP); 283 d=Time_F(STOP);
303 printf("%ld des_ede_cbc_encrypt's of %ld byte blocks in %.2f second\n", 284 printf("%ld DES_ede_cbc_encrypt's of %ld byte blocks in %.2f second\n",
304 count,BUFSIZE,d); 285 count,BUFSIZE,d);
305 d=((double)COUNT(cd)*BUFSIZE)/d; 286 d=((double)COUNT(cd)*BUFSIZE)/d;
306 287
@@ -323,7 +304,7 @@ char **argv;
323 printf("DES ede cbc bytes per sec = %12.2f (%9.3fuS)\n",d,8.0e6/d); 304 printf("DES ede cbc bytes per sec = %12.2f (%9.3fuS)\n",d,8.0e6/d);
324 printf("crypt per sec = %12.2f (%9.3fuS)\n",e,1.0e6/e); 305 printf("crypt per sec = %12.2f (%9.3fuS)\n",e,1.0e6/e);
325 exit(0); 306 exit(0);
326#if defined(LINT) || defined(MSDOS) 307#if defined(LINT) || defined(OPENSSL_SYS_MSDOS)
327 return(0); 308 return(0);
328#endif 309#endif
329 } 310 }
diff --git a/src/lib/libcrypto/dh/dhtest.c b/src/lib/libcrypto/dh/dhtest.c
index 488f10fd41..34894ced73 100644
--- a/src/lib/libcrypto/dh/dhtest.c
+++ b/src/lib/libcrypto/dh/dhtest.c
@@ -59,53 +59,74 @@
59#include <stdio.h> 59#include <stdio.h>
60#include <stdlib.h> 60#include <stdlib.h>
61#include <string.h> 61#include <string.h>
62#ifdef WINDOWS 62#ifdef OPENSSL_SYS_WINDOWS
63#include "../bio/bss_file.c" 63#include "../bio/bss_file.c"
64#endif 64#endif
65#include "crypto.h" 65#include <openssl/crypto.h>
66#include "bio.h" 66#include <openssl/bio.h>
67#include "bn.h" 67#include <openssl/bn.h>
68#include "dh.h" 68#include <openssl/rand.h>
69#include <openssl/err.h>
70
71#ifdef OPENSSL_NO_DH
72int main(int argc, char *argv[])
73{
74 printf("No DH support\n");
75 return(0);
76}
77#else
78#include <openssl/dh.h>
69 79
70#ifdef WIN16 80#ifdef OPENSSL_SYS_WIN16
71#define MS_CALLBACK _far _loadds 81#define MS_CALLBACK _far _loadds
72#else 82#else
73#define MS_CALLBACK 83#define MS_CALLBACK
74#endif 84#endif
75 85
76#ifndef NOPROTO 86static void MS_CALLBACK cb(int p, int n, void *arg);
77static void MS_CALLBACK cb(int p, int n, char *arg); 87#ifdef OPENSSL_NO_STDIO
78#else
79static void MS_CALLBACK cb();
80#endif
81
82#ifdef NO_STDIO
83#define APPS_WIN16 88#define APPS_WIN16
84#include "bss_file.c" 89#include "bss_file.c"
85#endif 90#endif
86 91
87BIO *out=NULL; 92static const char rnd_seed[] = "string to make the random number generator think it has entropy";
88 93
89int main(argc,argv) 94int main(int argc, char *argv[])
90int argc;
91char *argv[];
92 { 95 {
93 DH *a,*b; 96 DH *a;
97 DH *b=NULL;
94 char buf[12]; 98 char buf[12];
95 unsigned char *abuf=NULL,*bbuf=NULL; 99 unsigned char *abuf=NULL,*bbuf=NULL;
96 int i,alen,blen,aout,bout,ret=1; 100 int i,alen,blen,aout,bout,ret=1;
101 BIO *out;
97 102
98#ifdef WIN32 103 CRYPTO_malloc_debug_init();
104 CRYPTO_dbg_set_options(V_CRYPTO_MDEBUG_ALL);
105 CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
106
107#ifdef OPENSSL_SYS_WIN32
99 CRYPTO_malloc_init(); 108 CRYPTO_malloc_init();
100#endif 109#endif
101 110
111 RAND_seed(rnd_seed, sizeof rnd_seed);
112
102 out=BIO_new(BIO_s_file()); 113 out=BIO_new(BIO_s_file());
103 if (out == NULL) exit(1); 114 if (out == NULL) exit(1);
104 BIO_set_fp(out,stdout,BIO_NOCLOSE); 115 BIO_set_fp(out,stdout,BIO_NOCLOSE);
105 116
106 a=DH_generate_parameters(64,DH_GENERATOR_5,cb,(char *)out); 117 a=DH_generate_parameters(64,DH_GENERATOR_5,cb,out);
107 if (a == NULL) goto err; 118 if (a == NULL) goto err;
108 119
120 if (!DH_check(a, &i)) goto err;
121 if (i & DH_CHECK_P_NOT_PRIME)
122 BIO_puts(out, "p value is not prime\n");
123 if (i & DH_CHECK_P_NOT_SAFE_PRIME)
124 BIO_puts(out, "p value is not a safe prime\n");
125 if (i & DH_UNABLE_TO_CHECK_GENERATOR)
126 BIO_puts(out, "unable to check the generator value\n");
127 if (i & DH_NOT_SUITABLE_GENERATOR)
128 BIO_puts(out, "the g value is not a generator\n");
129
109 BIO_puts(out,"\np ="); 130 BIO_puts(out,"\np =");
110 BN_print(out,a->p); 131 BN_print(out,a->p);
111 BIO_puts(out,"\ng ="); 132 BIO_puts(out,"\ng =");
@@ -134,7 +155,7 @@ char *argv[];
134 BIO_puts(out,"\n"); 155 BIO_puts(out,"\n");
135 156
136 alen=DH_size(a); 157 alen=DH_size(a);
137 abuf=(unsigned char *)Malloc(alen); 158 abuf=(unsigned char *)OPENSSL_malloc(alen);
138 aout=DH_compute_key(abuf,b->pub_key,a); 159 aout=DH_compute_key(abuf,b->pub_key,a);
139 160
140 BIO_puts(out,"key1 ="); 161 BIO_puts(out,"key1 =");
@@ -146,7 +167,7 @@ char *argv[];
146 BIO_puts(out,"\n"); 167 BIO_puts(out,"\n");
147 168
148 blen=DH_size(b); 169 blen=DH_size(b);
149 bbuf=(unsigned char *)Malloc(blen); 170 bbuf=(unsigned char *)OPENSSL_malloc(blen);
150 bout=DH_compute_key(bbuf,a->pub_key,b); 171 bout=DH_compute_key(bbuf,a->pub_key,b);
151 172
152 BIO_puts(out,"key2 ="); 173 BIO_puts(out,"key2 =");
@@ -164,16 +185,21 @@ char *argv[];
164 else 185 else
165 ret=0; 186 ret=0;
166err: 187err:
167 if (abuf != NULL) Free(abuf); 188 ERR_print_errors_fp(stderr);
168 if (bbuf != NULL) Free(bbuf); 189
190 if (abuf != NULL) OPENSSL_free(abuf);
191 if (bbuf != NULL) OPENSSL_free(bbuf);
192 if(b != NULL) DH_free(b);
193 if(a != NULL) DH_free(a);
194 BIO_free(out);
195 CRYPTO_cleanup_all_ex_data();
196 ERR_remove_state(0);
197 CRYPTO_mem_leaks_fp(stderr);
169 exit(ret); 198 exit(ret);
170 return(ret); 199 return(ret);
171 } 200 }
172 201
173static void MS_CALLBACK cb(p, n,arg) 202static void MS_CALLBACK cb(int p, int n, void *arg)
174int p;
175int n;
176char *arg;
177 { 203 {
178 char c='*'; 204 char c='*';
179 205
@@ -182,7 +208,9 @@ char *arg;
182 if (p == 2) c='*'; 208 if (p == 2) c='*';
183 if (p == 3) c='\n'; 209 if (p == 3) c='\n';
184 BIO_write((BIO *)arg,&c,1); 210 BIO_write((BIO *)arg,&c,1);
211 (void)BIO_flush((BIO *)arg);
185#ifdef LINT 212#ifdef LINT
186 p=n; 213 p=n;
187#endif 214#endif
188 } 215 }
216#endif
diff --git a/src/lib/libcrypto/dh/p1024.c b/src/lib/libcrypto/dh/p1024.c
index 0c50c24cfb..368ceca4eb 100644
--- a/src/lib/libcrypto/dh/p1024.c
+++ b/src/lib/libcrypto/dh/p1024.c
@@ -57,10 +57,10 @@
57 */ 57 */
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "bn.h" 60#include <openssl/bn.h>
61#include "asn1.h" 61#include <openssl/asn1.h>
62#include "dh.h" 62#include <openssl/dh.h>
63#include "pem.h" 63#include <openssl/pem.h>
64 64
65unsigned char data[]={0x97,0xF6,0x42,0x61,0xCA,0xB5,0x05,0xDD, 65unsigned char data[]={0x97,0xF6,0x42,0x61,0xCA,0xB5,0x05,0xDD,
66 0x28,0x28,0xE1,0x3F,0x1D,0x68,0xB6,0xD3, 66 0x28,0x28,0xE1,0x3F,0x1D,0x68,0xB6,0xD3,
diff --git a/src/lib/libcrypto/dh/p192.c b/src/lib/libcrypto/dh/p192.c
index 881908169a..7bdf40410e 100644
--- a/src/lib/libcrypto/dh/p192.c
+++ b/src/lib/libcrypto/dh/p192.c
@@ -57,10 +57,10 @@
57 */ 57 */
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "bn.h" 60#include <openssl/bn.h>
61#include "asn1.h" 61#include <openssl/asn1.h>
62#include "dh.h" 62#include <openssl/dh.h>
63#include "pem.h" 63#include <openssl/pem.h>
64 64
65unsigned char data[]={ 65unsigned char data[]={
660xD4,0xA0,0xBA,0x02,0x50,0xB6,0xFD,0x2E, 660xD4,0xA0,0xBA,0x02,0x50,0xB6,0xFD,0x2E,
diff --git a/src/lib/libcrypto/dh/p512.c b/src/lib/libcrypto/dh/p512.c
index cc84e8e50e..a9b6aa83f0 100644
--- a/src/lib/libcrypto/dh/p512.c
+++ b/src/lib/libcrypto/dh/p512.c
@@ -57,10 +57,10 @@
57 */ 57 */
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "bn.h" 60#include <openssl/bn.h>
61#include "asn1.h" 61#include <openssl/asn1.h>
62#include "dh.h" 62#include <openssl/dh.h>
63#include "pem.h" 63#include <openssl/pem.h>
64 64
65unsigned char data[]={ 65unsigned char data[]={
660xDA,0x58,0x3C,0x16,0xD9,0x85,0x22,0x89, 660xDA,0x58,0x3C,0x16,0xD9,0x85,0x22,0x89,
diff --git a/src/lib/libcrypto/dsa/dsagen.c b/src/lib/libcrypto/dsa/dsagen.c
index 20335de250..a0b0976640 100644
--- a/src/lib/libcrypto/dsa/dsagen.c
+++ b/src/lib/libcrypto/dsa/dsagen.c
@@ -57,7 +57,7 @@
57 */ 57 */
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "dsa.h" 60#include <openssl/dsa.h>
61 61
62#define TEST 62#define TEST
63#define GENUINE_DSA 63#define GENUINE_DSA
@@ -77,8 +77,7 @@ unsigned char seed[20]={
77 0xe0,0x42,0x7d,LAST_VALUE}; 77 0xe0,0x42,0x7d,LAST_VALUE};
78#endif 78#endif
79 79
80int cb(p,n) 80int cb(int p, int n)
81int p,n;
82 { 81 {
83 char c='*'; 82 char c='*';
84 83
diff --git a/src/lib/libcrypto/dsa/dsatest.c b/src/lib/libcrypto/dsa/dsatest.c
index 39bb712c4a..12da64f9f4 100644
--- a/src/lib/libcrypto/dsa/dsatest.c
+++ b/src/lib/libcrypto/dsa/dsatest.c
@@ -61,27 +61,34 @@
61#include <string.h> 61#include <string.h>
62#include <sys/types.h> 62#include <sys/types.h>
63#include <sys/stat.h> 63#include <sys/stat.h>
64#include "crypto.h" 64#include <openssl/crypto.h>
65#include "rand.h" 65#include <openssl/rand.h>
66#include "bio.h" 66#include <openssl/bio.h>
67#include "err.h" 67#include <openssl/err.h>
68#include "dsa.h" 68#include <openssl/engine.h>
69#ifdef WINDOWS 69#ifdef OPENSSL_SYS_WINDOWS
70#include "../bio/bss_file.c" 70#include "../bio/bss_file.c"
71#endif 71#endif
72 72
73#ifdef WIN16 73#ifdef OPENSSL_NO_DSA
74int main(int argc, char *argv[])
75{
76 printf("No DSA support\n");
77 return(0);
78}
79#else
80#include <openssl/dsa.h>
81
82#ifdef OPENSSL_SYS_WIN16
74#define MS_CALLBACK _far _loadds 83#define MS_CALLBACK _far _loadds
75#else 84#else
76#define MS_CALLBACK 85#define MS_CALLBACK
77#endif 86#endif
78 87
79#ifndef NOPROTO 88static void MS_CALLBACK dsa_cb(int p, int n, void *arg);
80static void MS_CALLBACK dsa_cb(int p, int n, char *arg);
81#else
82static void MS_CALLBACK dsa_cb();
83#endif
84 89
90/* seed, out_p, out_q, out_g are taken from the updated Appendix 5 to
91 * FIPS PUB 186 and also appear in Appendix 5 to FIPS PIB 186-1 */
85static unsigned char seed[20]={ 92static unsigned char seed[20]={
86 0xd5,0x01,0x4e,0x4b,0x60,0xef,0x2b,0xa8,0xb6,0x21,0x1b,0x40, 93 0xd5,0x01,0x4e,0x4b,0x60,0xef,0x2b,0xa8,0xb6,0x21,0x1b,0x40,
87 0x62,0xba,0x32,0x24,0xe0,0x42,0x7d,0xd3, 94 0x62,0xba,0x32,0x24,0xe0,0x42,0x7d,0xd3,
@@ -115,24 +122,34 @@ static unsigned char out_g[]={
115 0xc5,0x72,0xaf,0x53,0xe6,0xd7,0x88,0x02, 122 0xc5,0x72,0xaf,0x53,0xe6,0xd7,0x88,0x02,
116 }; 123 };
117 124
125static const unsigned char str1[]="12345678901234567890";
126
127static const char rnd_seed[] = "string to make the random number generator think it has entropy";
128
118static BIO *bio_err=NULL; 129static BIO *bio_err=NULL;
119 130
120int main(argc, argv) 131int main(int argc, char **argv)
121int argc;
122char **argv;
123 { 132 {
124 DSA *dsa=NULL; 133 DSA *dsa=NULL;
125 int counter,ret=0,i,j; 134 int counter,ret=0,i,j;
126 unsigned char buf[256]; 135 unsigned char buf[256];
127 unsigned long h; 136 unsigned long h;
137 unsigned char sig[256];
138 unsigned int siglen;
128 139
129 if (bio_err == NULL) 140 if (bio_err == NULL)
130 bio_err=BIO_new_fp(stderr,BIO_NOCLOSE); 141 bio_err=BIO_new_fp(stderr,BIO_NOCLOSE);
131 142
143 CRYPTO_malloc_debug_init();
144 CRYPTO_dbg_set_options(V_CRYPTO_MDEBUG_ALL);
145 CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
146
147 ERR_load_crypto_strings();
148 RAND_seed(rnd_seed, sizeof rnd_seed);
149
132 BIO_printf(bio_err,"test generation of DSA parameters\n"); 150 BIO_printf(bio_err,"test generation of DSA parameters\n");
133 BIO_printf(bio_err,"expect '.*' followed by 5 lines of '.'s and '+'s\n"); 151
134 dsa=DSA_generate_parameters(512,seed,20,&counter,&h,dsa_cb, 152 dsa=DSA_generate_parameters(512,seed,20,&counter,&h,dsa_cb,bio_err);
135 (char *)bio_err);
136 153
137 BIO_printf(bio_err,"seed\n"); 154 BIO_printf(bio_err,"seed\n");
138 for (i=0; i<20; i+=4) 155 for (i=0; i<20; i+=4)
@@ -178,21 +195,28 @@ char **argv;
178 BIO_printf(bio_err,"g value is wrong\n"); 195 BIO_printf(bio_err,"g value is wrong\n");
179 goto end; 196 goto end;
180 } 197 }
181 198 DSA_generate_key(dsa);
182 ret=1; 199 DSA_sign(0, str1, 20, sig, &siglen, dsa);
200 if (DSA_verify(0, str1, 20, sig, siglen, dsa) == 1)
201 ret=1;
183end: 202end:
184 if (!ret) 203 if (!ret)
185 ERR_print_errors(bio_err); 204 ERR_print_errors(bio_err);
186 if (bio_err != NULL) BIO_free(bio_err);
187 if (dsa != NULL) DSA_free(dsa); 205 if (dsa != NULL) DSA_free(dsa);
206 CRYPTO_cleanup_all_ex_data();
207 ERR_remove_state(0);
208 ERR_free_strings();
209 CRYPTO_mem_leaks(bio_err);
210 if (bio_err != NULL)
211 {
212 BIO_free(bio_err);
213 bio_err = NULL;
214 }
188 exit(!ret); 215 exit(!ret);
189 return(0); 216 return(0);
190 } 217 }
191 218
192static void MS_CALLBACK dsa_cb(p, n, arg) 219static void MS_CALLBACK dsa_cb(int p, int n, void *arg)
193int p;
194int n;
195char *arg;
196 { 220 {
197 char c='*'; 221 char c='*';
198 static int ok=0,num=0; 222 static int ok=0,num=0;
@@ -201,8 +225,8 @@ char *arg;
201 if (p == 1) c='+'; 225 if (p == 1) c='+';
202 if (p == 2) { c='*'; ok++; } 226 if (p == 2) { c='*'; ok++; }
203 if (p == 3) c='\n'; 227 if (p == 3) c='\n';
204 BIO_write((BIO *)arg,&c,1); 228 BIO_write(arg,&c,1);
205 BIO_flush((BIO *)arg); 229 (void)BIO_flush(arg);
206 230
207 if (!ok && (p == 0) && (num > 1)) 231 if (!ok && (p == 0) && (num > 1))
208 { 232 {
@@ -210,5 +234,4 @@ char *arg;
210 exit(1); 234 exit(1);
211 } 235 }
212 } 236 }
213 237#endif
214
diff --git a/src/lib/libcrypto/dso/README b/src/lib/libcrypto/dso/README
index 6ba03c5631..d0bc9a89fb 100644
--- a/src/lib/libcrypto/dso/README
+++ b/src/lib/libcrypto/dso/README
@@ -1,16 +1,3 @@
1TODO
2----
3
4Find a way where name-translation can be done in a way that is
5sensitive to particular methods (ie. generic code could still do
6different path/filename substitutions on win32 to what it does on
7*nix) but doesn't assume some canonical form. Already one case
8exists where the "blah -> (libblah.so,blah.dll)" mapping doesn't
9suffice. I suspect a callback with an enumerated (or string?)
10parameter could be the way to go here ... DSO_ctrl the callback
11into place and it can be invoked to handle name translation with
12some clue to the calling code as to what kind of system it is.
13
14NOTES 1NOTES
15----- 2-----
16 3
@@ -21,4 +8,15 @@ according to their man page, prefer developers to move to that.
21I'll leave Richard's changes there as I guess dso_dl is needed 8I'll leave Richard's changes there as I guess dso_dl is needed
22for HPUX10.20. 9for HPUX10.20.
23 10
11There is now a callback scheme in place where filename conversion can
12(a) be turned off altogether through the use of the
13 DSO_FLAG_NO_NAME_TRANSLATION flag,
14(b) be handled by default using the default DSO_METHOD's converter
15(c) overriden per-DSO by setting the override callback
16(d) a mix of (b) and (c) - eg. implement an override callback that;
17 (i) checks if we're win32 (if(strstr(dso->meth->name, "win32")....)
18 and if so, convert "blah" into "blah32.dll" (the default is
19 otherwise to make it "blah.dll").
20 (ii) default to the normal behaviour - we're not on win32, eg.
21 finish with (return dso->meth->dso_name_converter(dso,NULL)).
24 22
diff --git a/src/lib/libcrypto/dso/dso_dl.c b/src/lib/libcrypto/dso/dso_dl.c
index 69810fc3bb..195717e993 100644
--- a/src/lib/libcrypto/dso/dso_dl.c
+++ b/src/lib/libcrypto/dso/dso_dl.c
@@ -1,5 +1,5 @@
1/* dso_dl.c */ 1/* dso_dl.c */
2/* Written by Richard Levitte (levitte@openssl.org) for the OpenSSL 2/* Written by Richard Levitte (richard@levitte.org) for the OpenSSL
3 * project 2000. 3 * project 2000.
4 */ 4 */
5/* ==================================================================== 5/* ====================================================================
@@ -72,7 +72,7 @@ DSO_METHOD *DSO_METHOD_dl(void)
72/* Part of the hack in "dl_load" ... */ 72/* Part of the hack in "dl_load" ... */
73#define DSO_MAX_TRANSLATED_SIZE 256 73#define DSO_MAX_TRANSLATED_SIZE 256
74 74
75static int dl_load(DSO *dso, const char *filename); 75static int dl_load(DSO *dso);
76static int dl_unload(DSO *dso); 76static int dl_unload(DSO *dso);
77static void *dl_bind_var(DSO *dso, const char *symname); 77static void *dl_bind_var(DSO *dso, const char *symname);
78static DSO_FUNC_TYPE dl_bind_func(DSO *dso, const char *symname); 78static DSO_FUNC_TYPE dl_bind_func(DSO *dso, const char *symname);
@@ -81,8 +81,9 @@ static int dl_unbind_var(DSO *dso, char *symname, void *symptr);
81static int dl_unbind_func(DSO *dso, char *symname, DSO_FUNC_TYPE symptr); 81static int dl_unbind_func(DSO *dso, char *symname, DSO_FUNC_TYPE symptr);
82static int dl_init(DSO *dso); 82static int dl_init(DSO *dso);
83static int dl_finish(DSO *dso); 83static int dl_finish(DSO *dso);
84#endif
85static int dl_ctrl(DSO *dso, int cmd, long larg, void *parg); 84static int dl_ctrl(DSO *dso, int cmd, long larg, void *parg);
85#endif
86static char *dl_name_converter(DSO *dso, const char *filename);
86 87
87static DSO_METHOD dso_meth_dl = { 88static DSO_METHOD dso_meth_dl = {
88 "OpenSSL 'dl' shared library method", 89 "OpenSSL 'dl' shared library method",
@@ -95,7 +96,8 @@ static DSO_METHOD dso_meth_dl = {
95 NULL, /* unbind_var */ 96 NULL, /* unbind_var */
96 NULL, /* unbind_func */ 97 NULL, /* unbind_func */
97#endif 98#endif
98 dl_ctrl, 99 NULL, /* ctrl */
100 dl_name_converter,
99 NULL, /* init */ 101 NULL, /* init */
100 NULL /* finish */ 102 NULL /* finish */
101 }; 103 };
@@ -111,35 +113,43 @@ DSO_METHOD *DSO_METHOD_dl(void)
111 * type so the cast is safe. 113 * type so the cast is safe.
112 */ 114 */
113 115
114static int dl_load(DSO *dso, const char *filename) 116static int dl_load(DSO *dso)
115 { 117 {
116 shl_t ptr; 118 shl_t ptr = NULL;
117 char translated[DSO_MAX_TRANSLATED_SIZE]; 119 /* We don't do any fancy retries or anything, just take the method's
118 int len; 120 * (or DSO's if it has the callback set) best translation of the
121 * platform-independant filename and try once with that. */
122 char *filename= DSO_convert_filename(dso, NULL);
119 123
120 /* The same comment as in dlfcn_load applies here. bleurgh. */ 124 if(filename == NULL)
121 len = strlen(filename);
122 if((dso->flags & DSO_FLAG_NAME_TRANSLATION) &&
123 (len + 6 < DSO_MAX_TRANSLATED_SIZE) &&
124 (strstr(filename, "/") == NULL))
125 { 125 {
126 sprintf(translated, "lib%s.so", filename); 126 DSOerr(DSO_F_DL_LOAD,DSO_R_NO_FILENAME);
127 ptr = shl_load(translated, BIND_IMMEDIATE, NULL); 127 goto err;
128 } 128 }
129 else 129 ptr = shl_load(filename, BIND_IMMEDIATE|DYNAMIC_PATH, NULL);
130 ptr = shl_load(filename, BIND_IMMEDIATE, NULL);
131 if(ptr == NULL) 130 if(ptr == NULL)
132 { 131 {
133 DSOerr(DSO_F_DL_LOAD,DSO_R_LOAD_FAILED); 132 DSOerr(DSO_F_DL_LOAD,DSO_R_LOAD_FAILED);
134 return(0); 133 ERR_add_error_data(4, "filename(", filename, "): ",
134 strerror(errno));
135 goto err;
135 } 136 }
136 if(!sk_push(dso->meth_data, (char *)ptr)) 137 if(!sk_push(dso->meth_data, (char *)ptr))
137 { 138 {
138 DSOerr(DSO_F_DL_LOAD,DSO_R_STACK_ERROR); 139 DSOerr(DSO_F_DL_LOAD,DSO_R_STACK_ERROR);
139 shl_unload(ptr); 140 goto err;
140 return(0);
141 } 141 }
142 /* Success, stick the converted filename we've loaded under into the DSO
143 * (it also serves as the indicator that we are currently loaded). */
144 dso->loaded_filename = filename;
142 return(1); 145 return(1);
146err:
147 /* Cleanup! */
148 if(filename != NULL)
149 OPENSSL_free(filename);
150 if(ptr != NULL)
151 shl_unload(ptr);
152 return(0);
143 } 153 }
144 154
145static int dl_unload(DSO *dso) 155static int dl_unload(DSO *dso)
@@ -187,9 +197,11 @@ static void *dl_bind_var(DSO *dso, const char *symname)
187 DSOerr(DSO_F_DL_BIND_VAR,DSO_R_NULL_HANDLE); 197 DSOerr(DSO_F_DL_BIND_VAR,DSO_R_NULL_HANDLE);
188 return(NULL); 198 return(NULL);
189 } 199 }
190 if (shl_findsym(ptr, symname, TYPE_UNDEFINED, &sym) < 0) 200 if (shl_findsym(&ptr, symname, TYPE_UNDEFINED, &sym) < 0)
191 { 201 {
192 DSOerr(DSO_F_DL_BIND_VAR,DSO_R_SYM_FAILURE); 202 DSOerr(DSO_F_DL_BIND_VAR,DSO_R_SYM_FAILURE);
203 ERR_add_error_data(4, "symname(", symname, "): ",
204 strerror(errno));
193 return(NULL); 205 return(NULL);
194 } 206 }
195 return(sym); 207 return(sym);
@@ -216,36 +228,57 @@ static DSO_FUNC_TYPE dl_bind_func(DSO *dso, const char *symname)
216 DSOerr(DSO_F_DL_BIND_FUNC,DSO_R_NULL_HANDLE); 228 DSOerr(DSO_F_DL_BIND_FUNC,DSO_R_NULL_HANDLE);
217 return(NULL); 229 return(NULL);
218 } 230 }
219 if (shl_findsym(ptr, symname, TYPE_UNDEFINED, &sym) < 0) 231 if (shl_findsym(&ptr, symname, TYPE_UNDEFINED, &sym) < 0)
220 { 232 {
221 DSOerr(DSO_F_DL_BIND_FUNC,DSO_R_SYM_FAILURE); 233 DSOerr(DSO_F_DL_BIND_FUNC,DSO_R_SYM_FAILURE);
234 ERR_add_error_data(4, "symname(", symname, "): ",
235 strerror(errno));
222 return(NULL); 236 return(NULL);
223 } 237 }
224 return((DSO_FUNC_TYPE)sym); 238 return((DSO_FUNC_TYPE)sym);
225 } 239 }
226 240
227static int dl_ctrl(DSO *dso, int cmd, long larg, void *parg) 241/* This function is identical to the one in dso_dlfcn.c, but as it is highly
242 * unlikely that both the "dl" *and* "dlfcn" variants are being compiled at the
243 * same time, there's no great duplicating the code. Figuring out an elegant
244 * way to share one copy of the code would be more difficult and would not
245 * leave the implementations independant. */
246#if defined(__hpux)
247static const char extension[] = ".sl";
248#else
249static const char extension[] = ".so";
250#endif
251static char *dl_name_converter(DSO *dso, const char *filename)
228 { 252 {
229 if(dso == NULL) 253 char *translated;
254 int len, rsize, transform;
255
256 len = strlen(filename);
257 rsize = len + 1;
258 transform = (strstr(filename, "/") == NULL);
230 { 259 {
231 DSOerr(DSO_F_DL_CTRL,ERR_R_PASSED_NULL_PARAMETER); 260 /* We will convert this to "%s.s?" or "lib%s.s?" */
232 return(-1); 261 rsize += strlen(extension);/* The length of ".s?" */
262 if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0)
263 rsize += 3; /* The length of "lib" */
233 } 264 }
234 switch(cmd) 265 translated = OPENSSL_malloc(rsize);
266 if(translated == NULL)
235 { 267 {
236 case DSO_CTRL_GET_FLAGS: 268 DSOerr(DSO_F_DL_NAME_CONVERTER,
237 return dso->flags; 269 DSO_R_NAME_TRANSLATION_FAILED);
238 case DSO_CTRL_SET_FLAGS: 270 return(NULL);
239 dso->flags = (int)larg; 271 }
240 return(0); 272 if(transform)
241 case DSO_CTRL_OR_FLAGS: 273 {
242 dso->flags |= (int)larg; 274 if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0)
243 return(0); 275 sprintf(translated, "lib%s%s", filename, extension);
244 default: 276 else
245 break; 277 sprintf(translated, "%s%s", filename, extension);
246 } 278 }
247 DSOerr(DSO_F_DL_CTRL,DSO_R_UNKNOWN_COMMAND); 279 else
248 return(-1); 280 sprintf(translated, "%s", filename);
281 return(translated);
249 } 282 }
250 283
251#endif /* DSO_DL */ 284#endif /* DSO_DL */
diff --git a/src/lib/libcrypto/dso/dso_vms.c b/src/lib/libcrypto/dso/dso_vms.c
index 8ff7090129..1674619d17 100644
--- a/src/lib/libcrypto/dso/dso_vms.c
+++ b/src/lib/libcrypto/dso/dso_vms.c
@@ -59,18 +59,17 @@
59#include <stdio.h> 59#include <stdio.h>
60#include <string.h> 60#include <string.h>
61#include <errno.h> 61#include <errno.h>
62#ifdef VMS 62#include "cryptlib.h"
63#include <openssl/dso.h>
64#ifdef OPENSSL_SYS_VMS
63#pragma message disable DOLLARID 65#pragma message disable DOLLARID
64#include <lib$routines.h> 66#include <lib$routines.h>
65#include <libfisdef.h>
66#include <stsdef.h> 67#include <stsdef.h>
67#include <descrip.h> 68#include <descrip.h>
68#include <starlet.h> 69#include <starlet.h>
69#endif 70#endif
70#include "cryptlib.h"
71#include <openssl/dso.h>
72 71
73#ifndef VMS 72#ifndef OPENSSL_SYS_VMS
74DSO_METHOD *DSO_METHOD_vms(void) 73DSO_METHOD *DSO_METHOD_vms(void)
75 { 74 {
76 return NULL; 75 return NULL;
@@ -78,7 +77,7 @@ DSO_METHOD *DSO_METHOD_vms(void)
78#else 77#else
79#pragma message disable DOLLARID 78#pragma message disable DOLLARID
80 79
81static int vms_load(DSO *dso, const char *filename); 80static int vms_load(DSO *dso);
82static int vms_unload(DSO *dso); 81static int vms_unload(DSO *dso);
83static void *vms_bind_var(DSO *dso, const char *symname); 82static void *vms_bind_var(DSO *dso, const char *symname);
84static DSO_FUNC_TYPE vms_bind_func(DSO *dso, const char *symname); 83static DSO_FUNC_TYPE vms_bind_func(DSO *dso, const char *symname);
@@ -87,8 +86,9 @@ static int vms_unbind_var(DSO *dso, char *symname, void *symptr);
87static int vms_unbind_func(DSO *dso, char *symname, DSO_FUNC_TYPE symptr); 86static int vms_unbind_func(DSO *dso, char *symname, DSO_FUNC_TYPE symptr);
88static int vms_init(DSO *dso); 87static int vms_init(DSO *dso);
89static int vms_finish(DSO *dso); 88static int vms_finish(DSO *dso);
90#endif
91static long vms_ctrl(DSO *dso, int cmd, long larg, void *parg); 89static long vms_ctrl(DSO *dso, int cmd, long larg, void *parg);
90#endif
91static char *vms_name_converter(DSO *dso, const char *filename);
92 92
93static DSO_METHOD dso_meth_vms = { 93static DSO_METHOD dso_meth_vms = {
94 "OpenSSL 'VMS' shared library method", 94 "OpenSSL 'VMS' shared library method",
@@ -101,7 +101,8 @@ static DSO_METHOD dso_meth_vms = {
101 NULL, /* unbind_var */ 101 NULL, /* unbind_var */
102 NULL, /* unbind_func */ 102 NULL, /* unbind_func */
103#endif 103#endif
104 vms_ctrl, 104 NULL, /* ctrl */
105 vms_name_converter,
105 NULL, /* init */ 106 NULL, /* init */
106 NULL /* finish */ 107 NULL /* finish */
107 }; 108 };
@@ -129,11 +130,20 @@ DSO_METHOD *DSO_METHOD_vms(void)
129 return(&dso_meth_vms); 130 return(&dso_meth_vms);
130 } 131 }
131 132
132static int vms_load(DSO *dso, const char *filename) 133static int vms_load(DSO *dso)
133 { 134 {
135 void *ptr = NULL;
136 /* See applicable comments in dso_dl.c */
137 char *filename = DSO_convert_filename(dso, NULL);
134 DSO_VMS_INTERNAL *p; 138 DSO_VMS_INTERNAL *p;
135 const char *sp1, *sp2; /* Search result */ 139 const char *sp1, *sp2; /* Search result */
136 140
141 if(filename == NULL)
142 {
143 DSOerr(DSO_F_DLFCN_LOAD,DSO_R_NO_FILENAME);
144 goto err;
145 }
146
137 /* A file specification may look like this: 147 /* A file specification may look like this:
138 * 148 *
139 * node::dev:[dir-spec]name.type;ver 149 * node::dev:[dir-spec]name.type;ver
@@ -175,14 +185,14 @@ static int vms_load(DSO *dso, const char *filename)
175 || (sp1 - filename) + strlen(sp2) > FILENAME_MAX) 185 || (sp1 - filename) + strlen(sp2) > FILENAME_MAX)
176 { 186 {
177 DSOerr(DSO_F_VMS_LOAD,DSO_R_FILENAME_TOO_BIG); 187 DSOerr(DSO_F_VMS_LOAD,DSO_R_FILENAME_TOO_BIG);
178 return(0); 188 goto err;
179 } 189 }
180 190
181 p = (DSO_VMS_INTERNAL *)OPENSSL_malloc(sizeof(DSO_VMS_INTERNAL)); 191 p = (DSO_VMS_INTERNAL *)OPENSSL_malloc(sizeof(DSO_VMS_INTERNAL));
182 if(p == NULL) 192 if(p == NULL)
183 { 193 {
184 DSOerr(DSO_F_VMS_LOAD,ERR_R_MALLOC_FAILURE); 194 DSOerr(DSO_F_VMS_LOAD,ERR_R_MALLOC_FAILURE);
185 return(0); 195 goto err;
186 } 196 }
187 197
188 strncpy(p->filename, sp1, sp2-sp1); 198 strncpy(p->filename, sp1, sp2-sp1);
@@ -204,10 +214,19 @@ static int vms_load(DSO *dso, const char *filename)
204 if(!sk_push(dso->meth_data, (char *)p)) 214 if(!sk_push(dso->meth_data, (char *)p))
205 { 215 {
206 DSOerr(DSO_F_VMS_LOAD,DSO_R_STACK_ERROR); 216 DSOerr(DSO_F_VMS_LOAD,DSO_R_STACK_ERROR);
207 OPENSSL_free(p); 217 goto err;
208 return(0);
209 } 218 }
219
220 /* Success (for now, we lie. We actually do not know...) */
221 dso->loaded_filename = filename;
210 return(1); 222 return(1);
223err:
224 /* Cleanup! */
225 if(p != NULL)
226 OPENSSL_free(p);
227 if(filename != NULL)
228 OPENSSL_free(filename);
229 return(0);
211 } 230 }
212 231
213/* Note that this doesn't actually unload the shared image, as there is no 232/* Note that this doesn't actually unload the shared image, as there is no
@@ -260,7 +279,12 @@ void vms_bind_sym(DSO *dso, const char *symname, void **sym)
260 { 279 {
261 DSO_VMS_INTERNAL *ptr; 280 DSO_VMS_INTERNAL *ptr;
262 int status; 281 int status;
263 int flags = LIB$M_FIS_MIXEDCASE; 282#if 0
283 int flags = (1<<4); /* LIB$M_FIS_MIXEDCASE, but this symbol isn't
284 defined in VMS older than 7.0 or so */
285#else
286 int flags = 0;
287#endif
264 struct dsc$descriptor_s symname_dsc; 288 struct dsc$descriptor_s symname_dsc;
265 *sym = NULL; 289 *sym = NULL;
266 290
@@ -344,28 +368,12 @@ static DSO_FUNC_TYPE vms_bind_func(DSO *dso, const char *symname)
344 return sym; 368 return sym;
345 } 369 }
346 370
347static long vms_ctrl(DSO *dso, int cmd, long larg, void *parg) 371static char *vms_name_converter(DSO *dso, const char *filename)
348 { 372 {
349 if(dso == NULL) 373 int len = strlen(filename);
350 { 374 char *not_translated = OPENSSL_malloc(len+1);
351 DSOerr(DSO_F_VMS_CTRL,ERR_R_PASSED_NULL_PARAMETER); 375 strcpy(not_translated,filename);
352 return(-1); 376 return(not_translated);
353 } 377 }
354 switch(cmd) 378
355 { 379#endif /* OPENSSL_SYS_VMS */
356 case DSO_CTRL_GET_FLAGS:
357 return dso->flags;
358 case DSO_CTRL_SET_FLAGS:
359 dso->flags = (int)larg;
360 return(0);
361 case DSO_CTRL_OR_FLAGS:
362 dso->flags |= (int)larg;
363 return(0);
364 default:
365 break;
366 }
367 DSOerr(DSO_F_VMS_CTRL,DSO_R_UNKNOWN_COMMAND);
368 return(-1);
369 }
370
371#endif /* VMS */
diff --git a/src/lib/libcrypto/dso/dso_win32.c b/src/lib/libcrypto/dso/dso_win32.c
index 7f1d904806..af8586d754 100644
--- a/src/lib/libcrypto/dso/dso_win32.c
+++ b/src/lib/libcrypto/dso/dso_win32.c
@@ -61,7 +61,7 @@
61#include "cryptlib.h" 61#include "cryptlib.h"
62#include <openssl/dso.h> 62#include <openssl/dso.h>
63 63
64#ifndef WIN32 64#ifndef OPENSSL_SYS_WIN32
65DSO_METHOD *DSO_METHOD_win32(void) 65DSO_METHOD *DSO_METHOD_win32(void)
66 { 66 {
67 return NULL; 67 return NULL;
@@ -71,7 +71,7 @@ DSO_METHOD *DSO_METHOD_win32(void)
71/* Part of the hack in "win32_load" ... */ 71/* Part of the hack in "win32_load" ... */
72#define DSO_MAX_TRANSLATED_SIZE 256 72#define DSO_MAX_TRANSLATED_SIZE 256
73 73
74static int win32_load(DSO *dso, const char *filename); 74static int win32_load(DSO *dso);
75static int win32_unload(DSO *dso); 75static int win32_unload(DSO *dso);
76static void *win32_bind_var(DSO *dso, const char *symname); 76static void *win32_bind_var(DSO *dso, const char *symname);
77static DSO_FUNC_TYPE win32_bind_func(DSO *dso, const char *symname); 77static DSO_FUNC_TYPE win32_bind_func(DSO *dso, const char *symname);
@@ -80,8 +80,9 @@ static int win32_unbind_var(DSO *dso, char *symname, void *symptr);
80static int win32_unbind_func(DSO *dso, char *symname, DSO_FUNC_TYPE symptr); 80static int win32_unbind_func(DSO *dso, char *symname, DSO_FUNC_TYPE symptr);
81static int win32_init(DSO *dso); 81static int win32_init(DSO *dso);
82static int win32_finish(DSO *dso); 82static int win32_finish(DSO *dso);
83#endif
84static long win32_ctrl(DSO *dso, int cmd, long larg, void *parg); 83static long win32_ctrl(DSO *dso, int cmd, long larg, void *parg);
84#endif
85static char *win32_name_converter(DSO *dso, const char *filename);
85 86
86static DSO_METHOD dso_meth_win32 = { 87static DSO_METHOD dso_meth_win32 = {
87 "OpenSSL 'win32' shared library method", 88 "OpenSSL 'win32' shared library method",
@@ -94,7 +95,8 @@ static DSO_METHOD dso_meth_win32 = {
94 NULL, /* unbind_var */ 95 NULL, /* unbind_var */
95 NULL, /* unbind_func */ 96 NULL, /* unbind_func */
96#endif 97#endif
97 win32_ctrl, 98 NULL, /* ctrl */
99 win32_name_converter,
98 NULL, /* init */ 100 NULL, /* init */
99 NULL /* finish */ 101 NULL /* finish */
100 }; 102 };
@@ -109,50 +111,48 @@ DSO_METHOD *DSO_METHOD_win32(void)
109 * LoadLibrary(), and copied. 111 * LoadLibrary(), and copied.
110 */ 112 */
111 113
112static int win32_load(DSO *dso, const char *filename) 114static int win32_load(DSO *dso)
113 { 115 {
114 HINSTANCE h, *p; 116 HINSTANCE h = NULL, *p = NULL;
115 char translated[DSO_MAX_TRANSLATED_SIZE]; 117 /* See applicable comments from dso_dl.c */
116 int len; 118 char *filename = DSO_convert_filename(dso, NULL);
117 119
118 /* NB: This is a hideous hack, but I'm not yet sure what 120 if(filename == NULL)
119 * to replace it with. This attempts to convert any filename,
120 * that looks like it has no path information, into a
121 * translated form, e. "blah" -> "blah.dll" ... I'm more
122 * comfortable putting hacks into win32 code though ;-) */
123 len = strlen(filename);
124 if((dso->flags & DSO_FLAG_NAME_TRANSLATION) &&
125 (len + 4 < DSO_MAX_TRANSLATED_SIZE) &&
126 (strstr(filename, "/") == NULL) &&
127 (strstr(filename, "\\") == NULL) &&
128 (strstr(filename, ":") == NULL))
129 { 121 {
130 sprintf(translated, "%s.dll", filename); 122 DSOerr(DSO_F_WIN32_LOAD,DSO_R_NO_FILENAME);
131 h = LoadLibrary(translated); 123 goto err;
132 } 124 }
133 else 125 h = LoadLibrary(filename);
134 h = LoadLibrary(filename);
135 if(h == NULL) 126 if(h == NULL)
136 { 127 {
137 DSOerr(DSO_F_WIN32_LOAD,DSO_R_LOAD_FAILED); 128 DSOerr(DSO_F_WIN32_LOAD,DSO_R_LOAD_FAILED);
138 return(0); 129 ERR_add_error_data(3, "filename(", filename, ")");
130 goto err;
139 } 131 }
140 p = (HINSTANCE *)OPENSSL_malloc(sizeof(HINSTANCE)); 132 p = (HINSTANCE *)OPENSSL_malloc(sizeof(HINSTANCE));
141 if(p == NULL) 133 if(p == NULL)
142 { 134 {
143 DSOerr(DSO_F_WIN32_LOAD,ERR_R_MALLOC_FAILURE); 135 DSOerr(DSO_F_WIN32_LOAD,ERR_R_MALLOC_FAILURE);
144 FreeLibrary(h); 136 goto err;
145 return(0);
146 } 137 }
147 *p = h; 138 *p = h;
148 if(!sk_push(dso->meth_data, (char *)p)) 139 if(!sk_push(dso->meth_data, (char *)p))
149 { 140 {
150 DSOerr(DSO_F_WIN32_LOAD,DSO_R_STACK_ERROR); 141 DSOerr(DSO_F_WIN32_LOAD,DSO_R_STACK_ERROR);
151 FreeLibrary(h); 142 goto err;
152 OPENSSL_free(p);
153 return(0);
154 } 143 }
144 /* Success */
145 dso->loaded_filename = filename;
155 return(1); 146 return(1);
147err:
148 /* Cleanup !*/
149 if(filename != NULL)
150 OPENSSL_free(filename);
151 if(p != NULL)
152 OPENSSL_free(p);
153 if(h != NULL)
154 FreeLibrary(h);
155 return(0);
156 } 156 }
157 157
158static int win32_unload(DSO *dso) 158static int win32_unload(DSO *dso)
@@ -211,6 +211,7 @@ static void *win32_bind_var(DSO *dso, const char *symname)
211 if(sym == NULL) 211 if(sym == NULL)
212 { 212 {
213 DSOerr(DSO_F_WIN32_BIND_VAR,DSO_R_SYM_FAILURE); 213 DSOerr(DSO_F_WIN32_BIND_VAR,DSO_R_SYM_FAILURE);
214 ERR_add_error_data(3, "symname(", symname, ")");
214 return(NULL); 215 return(NULL);
215 } 216 }
216 return(sym); 217 return(sym);
@@ -241,33 +242,38 @@ static DSO_FUNC_TYPE win32_bind_func(DSO *dso, const char *symname)
241 if(sym == NULL) 242 if(sym == NULL)
242 { 243 {
243 DSOerr(DSO_F_WIN32_BIND_FUNC,DSO_R_SYM_FAILURE); 244 DSOerr(DSO_F_WIN32_BIND_FUNC,DSO_R_SYM_FAILURE);
245 ERR_add_error_data(3, "symname(", symname, ")");
244 return(NULL); 246 return(NULL);
245 } 247 }
246 return((DSO_FUNC_TYPE)sym); 248 return((DSO_FUNC_TYPE)sym);
247 } 249 }
248 250
249static long win32_ctrl(DSO *dso, int cmd, long larg, void *parg) 251static char *win32_name_converter(DSO *dso, const char *filename)
250 { 252 {
251 if(dso == NULL) 253 char *translated;
252 { 254 int len, transform;
253 DSOerr(DSO_F_WIN32_CTRL,ERR_R_PASSED_NULL_PARAMETER); 255
254 return(-1); 256 len = strlen(filename);
255 } 257 transform = ((strstr(filename, "/") == NULL) &&
256 switch(cmd) 258 (strstr(filename, "\\") == NULL) &&
257 { 259 (strstr(filename, ":") == NULL));
258 case DSO_CTRL_GET_FLAGS: 260 if(transform)
259 return dso->flags; 261 /* We will convert this to "%s.dll" */
260 case DSO_CTRL_SET_FLAGS: 262 translated = OPENSSL_malloc(len + 5);
261 dso->flags = (int)larg; 263 else
262 return(0); 264 /* We will simply duplicate filename */
263 case DSO_CTRL_OR_FLAGS: 265 translated = OPENSSL_malloc(len + 1);
264 dso->flags |= (int)larg; 266 if(translated == NULL)
265 return(0); 267 {
266 default: 268 DSOerr(DSO_F_WIN32_NAME_CONVERTER,
267 break; 269 DSO_R_NAME_TRANSLATION_FAILED);
268 } 270 return(NULL);
269 DSOerr(DSO_F_WIN32_CTRL,DSO_R_UNKNOWN_COMMAND); 271 }
270 return(-1); 272 if(transform)
271 } 273 sprintf(translated, "%s.dll", filename);
274 else
275 sprintf(translated, "%s", filename);
276 return(translated);
277 }
272 278
273#endif /* WIN32 */ 279#endif /* OPENSSL_SYS_WIN32 */
diff --git a/src/lib/libcrypto/ebcdic.c b/src/lib/libcrypto/ebcdic.c
index 31397b2add..bc968ea807 100644
--- a/src/lib/libcrypto/ebcdic.c
+++ b/src/lib/libcrypto/ebcdic.c
@@ -211,7 +211,8 @@ ascii2ebcdic(void *dest, const void *srce, size_t count)
211} 211}
212 212
213#else /*CHARSET_EBCDIC*/ 213#else /*CHARSET_EBCDIC*/
214#ifdef PEDANTIC 214#include <openssl/opensslconf.h>
215#if defined(PEDANTIC) || defined(__DECC)
215static void *dummy=&dummy; 216static void *dummy=&dummy;
216#endif 217#endif
217#endif 218#endif
diff --git a/src/lib/libcrypto/ebcdic.h b/src/lib/libcrypto/ebcdic.h
index d3b4e98b12..6d65afcf9e 100644
--- a/src/lib/libcrypto/ebcdic.h
+++ b/src/lib/libcrypto/ebcdic.h
@@ -1,17 +1,19 @@
1/* crypto/ebcdic.h */
2
1#ifndef HEADER_EBCDIC_H 3#ifndef HEADER_EBCDIC_H
2#define HEADER_EBCDIC_H 4#define HEADER_EBCDIC_H
3 5
4#include <sys/types.h> 6#include <sys/types.h>
5 7
6/* Avoid name clashes with other applications */ 8/* Avoid name clashes with other applications */
7#define os_toascii _eay2000_os_toascii 9#define os_toascii _openssl_os_toascii
8#define os_toebcdic _eay2000_os_toebcdic 10#define os_toebcdic _openssl_os_toebcdic
9#define ebcdic2ascii _eay2000_ebcdic2ascii 11#define ebcdic2ascii _openssl_ebcdic2ascii
10#define ascii2ebcdic _eay2000_ascii2ebcdic 12#define ascii2ebcdic _openssl_ascii2ebcdic
11 13
12extern const unsigned char os_toascii[256]; 14extern const unsigned char os_toascii[256];
13extern const unsigned char os_toebcdic[256]; 15extern const unsigned char os_toebcdic[256];
14void ebcdic2ascii(unsigned char *dest, const unsigned char *srce, size_t count); 16void *ebcdic2ascii(void *dest, const void *srce, size_t count);
15void ascii2ebcdic(unsigned char *dest, const unsigned char *srce, size_t count); 17void *ascii2ebcdic(void *dest, const void *srce, size_t count);
16 18
17#endif 19#endif
diff --git a/src/lib/libcrypto/engine/enginetest.c b/src/lib/libcrypto/engine/enginetest.c
index a5a3c47fcb..87fa8c57b7 100644
--- a/src/lib/libcrypto/engine/enginetest.c
+++ b/src/lib/libcrypto/engine/enginetest.c
@@ -3,7 +3,7 @@
3 * project 2000. 3 * project 2000.
4 */ 4 */
5/* ==================================================================== 5/* ====================================================================
6 * Copyright (c) 1999 The OpenSSL Project. All rights reserved. 6 * Copyright (c) 1999-2001 The OpenSSL Project. All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
@@ -56,8 +56,11 @@
56 * 56 *
57 */ 57 */
58 58
59#include <openssl/e_os2.h>
59#include <stdio.h> 60#include <stdio.h>
60#include <string.h> 61#include <string.h>
62#include <openssl/buffer.h>
63#include <openssl/crypto.h>
61#include <openssl/engine.h> 64#include <openssl/engine.h>
62#include <openssl/err.h> 65#include <openssl/err.h>
63 66
@@ -76,6 +79,9 @@ static void display_engine_list()
76 h = ENGINE_get_next(h); 79 h = ENGINE_get_next(h);
77 } 80 }
78 printf("end of list\n"); 81 printf("end of list\n");
82 /* ENGINE_get_first() increases the struct_ref counter, so we
83 must call ENGINE_free() to decrease it again */
84 ENGINE_free(h);
79 } 85 }
80 86
81int main(int argc, char *argv[]) 87int main(int argc, char *argv[])
@@ -91,6 +97,18 @@ int main(int argc, char *argv[])
91 ENGINE *new_h3 = NULL; 97 ENGINE *new_h3 = NULL;
92 ENGINE *new_h4 = NULL; 98 ENGINE *new_h4 = NULL;
93 99
100 /* enable memory leak checking unless explicitly disabled */
101 if (!((getenv("OPENSSL_DEBUG_MEMORY") != NULL) && (0 == strcmp(getenv("OPENSSL_DEBUG_MEMORY"), "off"))))
102 {
103 CRYPTO_malloc_debug_init();
104 CRYPTO_set_mem_debug_options(V_CRYPTO_MDEBUG_ALL);
105 }
106 else
107 {
108 /* OPENSSL_DEBUG_MEMORY=off */
109 CRYPTO_set_mem_debug_functions(0, 0, 0, 0, 0);
110 }
111 CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
94 ERR_load_crypto_strings(); 112 ERR_load_crypto_strings();
95 113
96 memset(block, 0, 512 * sizeof(ENGINE *)); 114 memset(block, 0, 512 * sizeof(ENGINE *));
@@ -124,6 +142,8 @@ int main(int argc, char *argv[])
124 printf("Remove failed!\n"); 142 printf("Remove failed!\n");
125 goto end; 143 goto end;
126 } 144 }
145 if (ptr)
146 ENGINE_free(ptr);
127 display_engine_list(); 147 display_engine_list();
128 if(!ENGINE_add(new_h3) || !ENGINE_add(new_h2)) 148 if(!ENGINE_add(new_h3) || !ENGINE_add(new_h2))
129 { 149 {
@@ -158,12 +178,7 @@ int main(int argc, char *argv[])
158 } 178 }
159 else 179 else
160 printf("Remove that should fail did.\n"); 180 printf("Remove that should fail did.\n");
161 if(!ENGINE_remove(new_h1)) 181 ERR_clear_error();
162 {
163 printf("Remove failed!\n");
164 goto end;
165 }
166 display_engine_list();
167 if(!ENGINE_remove(new_h3)) 182 if(!ENGINE_remove(new_h3))
168 { 183 {
169 printf("Remove failed!\n"); 184 printf("Remove failed!\n");
@@ -183,6 +198,8 @@ int main(int argc, char *argv[])
183 if(!ENGINE_remove(ptr)) 198 if(!ENGINE_remove(ptr))
184 printf("Remove failed!i - probably no hardware " 199 printf("Remove failed!i - probably no hardware "
185 "support present.\n"); 200 "support present.\n");
201 if (ptr)
202 ENGINE_free(ptr);
186 display_engine_list(); 203 display_engine_list();
187 if(!ENGINE_add(new_h1) || !ENGINE_remove(new_h1)) 204 if(!ENGINE_add(new_h1) || !ENGINE_remove(new_h1))
188 { 205 {
@@ -195,9 +212,9 @@ int main(int argc, char *argv[])
195 for(loop = 0; loop < 512; loop++) 212 for(loop = 0; loop < 512; loop++)
196 { 213 {
197 sprintf(buf, "id%i", loop); 214 sprintf(buf, "id%i", loop);
198 id = strdup(buf); 215 id = BUF_strdup(buf);
199 sprintf(buf, "Fake engine type %i", loop); 216 sprintf(buf, "Fake engine type %i", loop);
200 name = strdup(buf); 217 name = BUF_strdup(buf);
201 if(((block[loop] = ENGINE_new()) == NULL) || 218 if(((block[loop] = ENGINE_new()) == NULL) ||
202 !ENGINE_set_id(block[loop], id) || 219 !ENGINE_set_id(block[loop], id) ||
203 !ENGINE_set_name(block[loop], name)) 220 !ENGINE_set_name(block[loop], name))
@@ -228,12 +245,13 @@ cleanup_loop:
228 printf("\nRemove failed!\n"); 245 printf("\nRemove failed!\n");
229 goto end; 246 goto end;
230 } 247 }
248 ENGINE_free(ptr);
231 printf("."); fflush(stdout); 249 printf("."); fflush(stdout);
232 } 250 }
233 for(loop = 0; loop < 512; loop++) 251 for(loop = 0; loop < 512; loop++)
234 { 252 {
235 free((char *)(ENGINE_get_id(block[loop]))); 253 OPENSSL_free((void *)ENGINE_get_id(block[loop]));
236 free((char *)(ENGINE_get_name(block[loop]))); 254 OPENSSL_free((void *)ENGINE_get_name(block[loop]));
237 } 255 }
238 printf("\nTests completed happily\n"); 256 printf("\nTests completed happily\n");
239 to_return = 0; 257 to_return = 0;
@@ -247,5 +265,10 @@ end:
247 for(loop = 0; loop < 512; loop++) 265 for(loop = 0; loop < 512; loop++)
248 if(block[loop]) 266 if(block[loop])
249 ENGINE_free(block[loop]); 267 ENGINE_free(block[loop]);
268 ENGINE_cleanup();
269 CRYPTO_cleanup_all_ex_data();
270 ERR_free_strings();
271 ERR_remove_state(0);
272 CRYPTO_mem_leaks_fp(stderr);
250 return to_return; 273 return to_return;
251 } 274 }
diff --git a/src/lib/libcrypto/engine/hw_4758_cca.c b/src/lib/libcrypto/engine/hw_4758_cca.c
index 959d8f1a61..77d3d2ffdf 100644
--- a/src/lib/libcrypto/engine/hw_4758_cca.c
+++ b/src/lib/libcrypto/engine/hw_4758_cca.c
@@ -287,13 +287,13 @@ err:
287 DSO_free(dso); 287 DSO_free(dso);
288 dso = NULL; 288 dso = NULL;
289 289
290 keyRecordRead = (F_KEYRECORDREAD)NULL; 290 keyRecordRead = (F_KEYRECORDREAD)0;
291 randomNumberGenerate = (F_RANDOMNUMBERGENERATE)NULL; 291 randomNumberGenerate = (F_RANDOMNUMBERGENERATE)0;
292 digitalSignatureGenerate = (F_DIGITALSIGNATUREGENERATE)NULL; 292 digitalSignatureGenerate = (F_DIGITALSIGNATUREGENERATE)0;
293 digitalSignatureVerify = (F_DIGITALSIGNATUREVERIFY)NULL; 293 digitalSignatureVerify = (F_DIGITALSIGNATUREVERIFY)0;
294 publicKeyExtract = (F_PUBLICKEYEXTRACT)NULL; 294 publicKeyExtract = (F_PUBLICKEYEXTRACT)0;
295 pkaEncrypt = (F_PKAENCRYPT)NULL; 295 pkaEncrypt = (F_PKAENCRYPT)0;
296 pkaDecrypt = (F_PKADECRYPT)NULL; 296 pkaDecrypt = (F_PKADECRYPT)0;
297 return 0; 297 return 0;
298 } 298 }
299 299
@@ -312,13 +312,13 @@ static int ibm_4758_cca_finish(ENGINE *e)
312 return 0; 312 return 0;
313 } 313 }
314 dso = NULL; 314 dso = NULL;
315 keyRecordRead = (F_KEYRECORDREAD)NULL; 315 keyRecordRead = (F_KEYRECORDREAD)0;
316 randomNumberGenerate = (F_RANDOMNUMBERGENERATE)NULL; 316 randomNumberGenerate = (F_RANDOMNUMBERGENERATE)0;
317 digitalSignatureGenerate = (F_DIGITALSIGNATUREGENERATE)NULL; 317 digitalSignatureGenerate = (F_DIGITALSIGNATUREGENERATE)0;
318 digitalSignatureVerify = (F_DIGITALSIGNATUREVERIFY)NULL; 318 digitalSignatureVerify = (F_DIGITALSIGNATUREVERIFY)0;
319 publicKeyExtract = (F_PUBLICKEYEXTRACT)NULL; 319 publicKeyExtract = (F_PUBLICKEYEXTRACT)0;
320 pkaEncrypt = (F_PKAENCRYPT)NULL; 320 pkaEncrypt = (F_PKAENCRYPT)0;
321 pkaDecrypt = (F_PKADECRYPT)NULL; 321 pkaDecrypt = (F_PKADECRYPT)0;
322 return 1; 322 return 1;
323 } 323 }
324 324
diff --git a/src/lib/libcrypto/engine/hw_atalla.c b/src/lib/libcrypto/engine/hw_atalla.c
index 3bb992a193..696cfcf156 100644
--- a/src/lib/libcrypto/engine/hw_atalla.c
+++ b/src/lib/libcrypto/engine/hw_atalla.c
@@ -3,7 +3,7 @@
3 * project 2000. 3 * project 2000.
4 */ 4 */
5/* ==================================================================== 5/* ====================================================================
6 * Copyright (c) 1999 The OpenSSL Project. All rights reserved. 6 * Copyright (c) 1999-2001 The OpenSSL Project. All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
@@ -60,11 +60,10 @@
60#include <openssl/crypto.h> 60#include <openssl/crypto.h>
61#include "cryptlib.h" 61#include "cryptlib.h"
62#include <openssl/dso.h> 62#include <openssl/dso.h>
63#include "engine_int.h"
64#include <openssl/engine.h> 63#include <openssl/engine.h>
65 64
66#ifndef NO_HW 65#ifndef OPENSSL_NO_HW
67#ifndef NO_HW_ATALLA 66#ifndef OPENSSL_NO_HW_ATALLA
68 67
69#ifdef FLAT_INC 68#ifdef FLAT_INC
70#include "atalla.h" 69#include "atalla.h"
@@ -72,19 +71,27 @@
72#include "vendor_defns/atalla.h" 71#include "vendor_defns/atalla.h"
73#endif 72#endif
74 73
75static int atalla_init(void); 74#define ATALLA_LIB_NAME "atalla engine"
76static int atalla_finish(void); 75#include "hw_atalla_err.c"
76
77static int atalla_destroy(ENGINE *e);
78static int atalla_init(ENGINE *e);
79static int atalla_finish(ENGINE *e);
80static int atalla_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)());
77 81
78/* BIGNUM stuff */ 82/* BIGNUM stuff */
79static int atalla_mod_exp(BIGNUM *r, BIGNUM *a, const BIGNUM *p, 83static int atalla_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
80 const BIGNUM *m, BN_CTX *ctx); 84 const BIGNUM *m, BN_CTX *ctx);
81 85
86#ifndef OPENSSL_NO_RSA
82/* RSA stuff */ 87/* RSA stuff */
83static int atalla_rsa_mod_exp(BIGNUM *r0, BIGNUM *I, RSA *rsa); 88static int atalla_rsa_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa);
89#endif
84/* This function is aliased to mod_exp (with the mont stuff dropped). */ 90/* This function is aliased to mod_exp (with the mont stuff dropped). */
85static int atalla_mod_exp_mont(BIGNUM *r, BIGNUM *a, const BIGNUM *p, 91static int atalla_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
86 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); 92 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
87 93
94#ifndef OPENSSL_NO_DSA
88/* DSA stuff */ 95/* DSA stuff */
89static int atalla_dsa_mod_exp(DSA *dsa, BIGNUM *rr, BIGNUM *a1, 96static int atalla_dsa_mod_exp(DSA *dsa, BIGNUM *rr, BIGNUM *a1,
90 BIGNUM *p1, BIGNUM *a2, BIGNUM *p2, BIGNUM *m, 97 BIGNUM *p1, BIGNUM *a2, BIGNUM *p2, BIGNUM *m,
@@ -92,13 +99,27 @@ static int atalla_dsa_mod_exp(DSA *dsa, BIGNUM *rr, BIGNUM *a1,
92static int atalla_mod_exp_dsa(DSA *dsa, BIGNUM *r, BIGNUM *a, 99static int atalla_mod_exp_dsa(DSA *dsa, BIGNUM *r, BIGNUM *a,
93 const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx, 100 const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx,
94 BN_MONT_CTX *m_ctx); 101 BN_MONT_CTX *m_ctx);
102#endif
95 103
104#ifndef OPENSSL_NO_DH
96/* DH stuff */ 105/* DH stuff */
97/* This function is alised to mod_exp (with the DH and mont dropped). */ 106/* This function is alised to mod_exp (with the DH and mont dropped). */
98static int atalla_mod_exp_dh(DH *dh, BIGNUM *r, BIGNUM *a, const BIGNUM *p, 107static int atalla_mod_exp_dh(const DH *dh, BIGNUM *r,
108 const BIGNUM *a, const BIGNUM *p,
99 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); 109 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
110#endif
100 111
112/* The definitions for control commands specific to this engine */
113#define ATALLA_CMD_SO_PATH ENGINE_CMD_BASE
114static const ENGINE_CMD_DEFN atalla_cmd_defns[] = {
115 {ATALLA_CMD_SO_PATH,
116 "SO_PATH",
117 "Specifies the path to the 'atasi' shared library",
118 ENGINE_CMD_FLAG_STRING},
119 {0, NULL, NULL, 0}
120 };
101 121
122#ifndef OPENSSL_NO_RSA
102/* Our internal RSA_METHOD that we provide pointers to */ 123/* Our internal RSA_METHOD that we provide pointers to */
103static RSA_METHOD atalla_rsa = 124static RSA_METHOD atalla_rsa =
104 { 125 {
@@ -116,7 +137,9 @@ static RSA_METHOD atalla_rsa =
116 NULL, 137 NULL,
117 NULL 138 NULL
118 }; 139 };
140#endif
119 141
142#ifndef OPENSSL_NO_DSA
120/* Our internal DSA_METHOD that we provide pointers to */ 143/* Our internal DSA_METHOD that we provide pointers to */
121static DSA_METHOD atalla_dsa = 144static DSA_METHOD atalla_dsa =
122 { 145 {
@@ -131,7 +154,9 @@ static DSA_METHOD atalla_dsa =
131 0, /* flags */ 154 0, /* flags */
132 NULL /* app_data */ 155 NULL /* app_data */
133 }; 156 };
157#endif
134 158
159#ifndef OPENSSL_NO_DH
135/* Our internal DH_METHOD that we provide pointers to */ 160/* Our internal DH_METHOD that we provide pointers to */
136static DH_METHOD atalla_dh = 161static DH_METHOD atalla_dh =
137 { 162 {
@@ -144,36 +169,44 @@ static DH_METHOD atalla_dh =
144 0, 169 0,
145 NULL 170 NULL
146 }; 171 };
172#endif
147 173
148/* Our ENGINE structure. */ 174/* Constants used when creating the ENGINE */
149static ENGINE engine_atalla = 175static const char *engine_atalla_id = "atalla";
150 { 176static const char *engine_atalla_name = "Atalla hardware engine support";
151 "atalla", 177
152 "Atalla hardware engine support", 178/* This internal function is used by ENGINE_atalla() and possibly by the
153 &atalla_rsa, 179 * "dynamic" ENGINE support too */
154 &atalla_dsa, 180static int bind_helper(ENGINE *e)
155 &atalla_dh,
156 NULL,
157 atalla_mod_exp,
158 NULL,
159 atalla_init,
160 atalla_finish,
161 NULL, /* no ctrl() */
162 NULL, /* no load_privkey() */
163 NULL, /* no load_pubkey() */
164 0, /* no flags */
165 0, 0, /* no references */
166 NULL, NULL /* unlinked */
167 };
168
169/* As this is only ever called once, there's no need for locking
170 * (indeed - the lock will already be held by our caller!!!) */
171ENGINE *ENGINE_atalla()
172 { 181 {
173 RSA_METHOD *meth1; 182#ifndef OPENSSL_NO_RSA
174 DSA_METHOD *meth2; 183 const RSA_METHOD *meth1;
175 DH_METHOD *meth3; 184#endif
185#ifndef OPENSSL_NO_DSA
186 const DSA_METHOD *meth2;
187#endif
188#ifndef OPENSSL_NO_DH
189 const DH_METHOD *meth3;
190#endif
191 if(!ENGINE_set_id(e, engine_atalla_id) ||
192 !ENGINE_set_name(e, engine_atalla_name) ||
193#ifndef OPENSSL_NO_RSA
194 !ENGINE_set_RSA(e, &atalla_rsa) ||
195#endif
196#ifndef OPENSSL_NO_DSA
197 !ENGINE_set_DSA(e, &atalla_dsa) ||
198#endif
199#ifndef OPENSSL_NO_DH
200 !ENGINE_set_DH(e, &atalla_dh) ||
201#endif
202 !ENGINE_set_destroy_function(e, atalla_destroy) ||
203 !ENGINE_set_init_function(e, atalla_init) ||
204 !ENGINE_set_finish_function(e, atalla_finish) ||
205 !ENGINE_set_ctrl_function(e, atalla_ctrl) ||
206 !ENGINE_set_cmd_defns(e, atalla_cmd_defns))
207 return 0;
176 208
209#ifndef OPENSSL_NO_RSA
177 /* We know that the "PKCS1_SSLeay()" functions hook properly 210 /* We know that the "PKCS1_SSLeay()" functions hook properly
178 * to the atalla-specific mod_exp and mod_exp_crt so we use 211 * to the atalla-specific mod_exp and mod_exp_crt so we use
179 * those functions. NB: We don't use ENGINE_openssl() or 212 * those functions. NB: We don't use ENGINE_openssl() or
@@ -186,19 +219,50 @@ ENGINE *ENGINE_atalla()
186 atalla_rsa.rsa_pub_dec = meth1->rsa_pub_dec; 219 atalla_rsa.rsa_pub_dec = meth1->rsa_pub_dec;
187 atalla_rsa.rsa_priv_enc = meth1->rsa_priv_enc; 220 atalla_rsa.rsa_priv_enc = meth1->rsa_priv_enc;
188 atalla_rsa.rsa_priv_dec = meth1->rsa_priv_dec; 221 atalla_rsa.rsa_priv_dec = meth1->rsa_priv_dec;
222#endif
189 223
224#ifndef OPENSSL_NO_DSA
190 /* Use the DSA_OpenSSL() method and just hook the mod_exp-ish 225 /* Use the DSA_OpenSSL() method and just hook the mod_exp-ish
191 * bits. */ 226 * bits. */
192 meth2 = DSA_OpenSSL(); 227 meth2 = DSA_OpenSSL();
193 atalla_dsa.dsa_do_sign = meth2->dsa_do_sign; 228 atalla_dsa.dsa_do_sign = meth2->dsa_do_sign;
194 atalla_dsa.dsa_sign_setup = meth2->dsa_sign_setup; 229 atalla_dsa.dsa_sign_setup = meth2->dsa_sign_setup;
195 atalla_dsa.dsa_do_verify = meth2->dsa_do_verify; 230 atalla_dsa.dsa_do_verify = meth2->dsa_do_verify;
231#endif
196 232
233#ifndef OPENSSL_NO_DH
197 /* Much the same for Diffie-Hellman */ 234 /* Much the same for Diffie-Hellman */
198 meth3 = DH_OpenSSL(); 235 meth3 = DH_OpenSSL();
199 atalla_dh.generate_key = meth3->generate_key; 236 atalla_dh.generate_key = meth3->generate_key;
200 atalla_dh.compute_key = meth3->compute_key; 237 atalla_dh.compute_key = meth3->compute_key;
201 return &engine_atalla; 238#endif
239
240 /* Ensure the atalla error handling is set up */
241 ERR_load_ATALLA_strings();
242 return 1;
243 }
244
245static ENGINE *engine_atalla(void)
246 {
247 ENGINE *ret = ENGINE_new();
248 if(!ret)
249 return NULL;
250 if(!bind_helper(ret))
251 {
252 ENGINE_free(ret);
253 return NULL;
254 }
255 return ret;
256 }
257
258void ENGINE_load_atalla(void)
259 {
260 /* Copied from eng_[openssl|dyn].c */
261 ENGINE *toadd = engine_atalla();
262 if(!toadd) return;
263 ENGINE_add(toadd);
264 ENGINE_free(toadd);
265 ERR_clear_error();
202 } 266 }
203 267
204/* This is a process-global DSO handle used for loading and unloading 268/* This is a process-global DSO handle used for loading and unloading
@@ -214,8 +278,32 @@ static tfnASI_GetHardwareConfig *p_Atalla_GetHardwareConfig = NULL;
214static tfnASI_RSAPrivateKeyOpFn *p_Atalla_RSAPrivateKeyOpFn = NULL; 278static tfnASI_RSAPrivateKeyOpFn *p_Atalla_RSAPrivateKeyOpFn = NULL;
215static tfnASI_GetPerformanceStatistics *p_Atalla_GetPerformanceStatistics = NULL; 279static tfnASI_GetPerformanceStatistics *p_Atalla_GetPerformanceStatistics = NULL;
216 280
281/* These are the static string constants for the DSO file name and the function
282 * symbol names to bind to. Regrettably, the DSO name on *nix appears to be
283 * "atasi.so" rather than something more consistent like "libatasi.so". At the
284 * time of writing, I'm not sure what the file name on win32 is but clearly
285 * native name translation is not possible (eg libatasi.so on *nix, and
286 * atasi.dll on win32). For the purposes of testing, I have created a symbollic
287 * link called "libatasi.so" so that we can use native name-translation - a
288 * better solution will be needed. */
289static const char def_ATALLA_LIBNAME[] = "atasi";
290static const char *ATALLA_LIBNAME = def_ATALLA_LIBNAME;
291static const char *ATALLA_F1 = "ASI_GetHardwareConfig";
292static const char *ATALLA_F2 = "ASI_RSAPrivateKeyOpFn";
293static const char *ATALLA_F3 = "ASI_GetPerformanceStatistics";
294
295/* Destructor (complements the "ENGINE_atalla()" constructor) */
296static int atalla_destroy(ENGINE *e)
297 {
298 /* Unload the atalla error strings so any error state including our
299 * functs or reasons won't lead to a segfault (they simply get displayed
300 * without corresponding string data because none will be found). */
301 ERR_unload_ATALLA_strings();
302 return 1;
303 }
304
217/* (de)initialisation functions. */ 305/* (de)initialisation functions. */
218static int atalla_init() 306static int atalla_init(ENGINE *e)
219 { 307 {
220 tfnASI_GetHardwareConfig *p1; 308 tfnASI_GetHardwareConfig *p1;
221 tfnASI_RSAPrivateKeyOpFn *p2; 309 tfnASI_RSAPrivateKeyOpFn *p2;
@@ -226,7 +314,7 @@ static int atalla_init()
226 314
227 if(atalla_dso != NULL) 315 if(atalla_dso != NULL)
228 { 316 {
229 ENGINEerr(ENGINE_F_ATALLA_INIT,ENGINE_R_ALREADY_LOADED); 317 ATALLAerr(ATALLA_F_ATALLA_INIT,ATALLA_R_ALREADY_LOADED);
230 goto err; 318 goto err;
231 } 319 }
232 /* Attempt to load libatasi.so/atasi.dll/whatever. Needs to be 320 /* Attempt to load libatasi.so/atasi.dll/whatever. Needs to be
@@ -236,11 +324,10 @@ static int atalla_init()
236 * drivers really use - for now a symbollic link needs to be 324 * drivers really use - for now a symbollic link needs to be
237 * created on the host system from libatasi.so to atasi.so on 325 * created on the host system from libatasi.so to atasi.so on
238 * unix variants. */ 326 * unix variants. */
239 atalla_dso = DSO_load(NULL, ATALLA_LIBNAME, NULL, 327 atalla_dso = DSO_load(NULL, ATALLA_LIBNAME, NULL, 0);
240 DSO_FLAG_NAME_TRANSLATION);
241 if(atalla_dso == NULL) 328 if(atalla_dso == NULL)
242 { 329 {
243 ENGINEerr(ENGINE_F_ATALLA_INIT,ENGINE_R_DSO_FAILURE); 330 ATALLAerr(ATALLA_F_ATALLA_INIT,ATALLA_R_NOT_LOADED);
244 goto err; 331 goto err;
245 } 332 }
246 if(!(p1 = (tfnASI_GetHardwareConfig *)DSO_bind_func( 333 if(!(p1 = (tfnASI_GetHardwareConfig *)DSO_bind_func(
@@ -250,7 +337,7 @@ static int atalla_init()
250 !(p3 = (tfnASI_GetPerformanceStatistics *)DSO_bind_func( 337 !(p3 = (tfnASI_GetPerformanceStatistics *)DSO_bind_func(
251 atalla_dso, ATALLA_F3))) 338 atalla_dso, ATALLA_F3)))
252 { 339 {
253 ENGINEerr(ENGINE_F_ATALLA_INIT,ENGINE_R_DSO_FAILURE); 340 ATALLAerr(ATALLA_F_ATALLA_INIT,ATALLA_R_NOT_LOADED);
254 goto err; 341 goto err;
255 } 342 }
256 /* Copy the pointers */ 343 /* Copy the pointers */
@@ -261,7 +348,7 @@ static int atalla_init()
261 * running. */ 348 * running. */
262 if(p1(0L, config_buf) != 0) 349 if(p1(0L, config_buf) != 0)
263 { 350 {
264 ENGINEerr(ENGINE_F_ATALLA_INIT,ENGINE_R_UNIT_FAILURE); 351 ATALLAerr(ATALLA_F_ATALLA_INIT,ATALLA_R_UNIT_FAILURE);
265 goto err; 352 goto err;
266 } 353 }
267 /* Everything's fine. */ 354 /* Everything's fine. */
@@ -275,16 +362,16 @@ err:
275 return 0; 362 return 0;
276 } 363 }
277 364
278static int atalla_finish() 365static int atalla_finish(ENGINE *e)
279 { 366 {
280 if(atalla_dso == NULL) 367 if(atalla_dso == NULL)
281 { 368 {
282 ENGINEerr(ENGINE_F_ATALLA_FINISH,ENGINE_R_NOT_LOADED); 369 ATALLAerr(ATALLA_F_ATALLA_FINISH,ATALLA_R_NOT_LOADED);
283 return 0; 370 return 0;
284 } 371 }
285 if(!DSO_free(atalla_dso)) 372 if(!DSO_free(atalla_dso))
286 { 373 {
287 ENGINEerr(ENGINE_F_ATALLA_FINISH,ENGINE_R_DSO_FAILURE); 374 ATALLAerr(ATALLA_F_ATALLA_FINISH,ATALLA_R_UNIT_FAILURE);
288 return 0; 375 return 0;
289 } 376 }
290 atalla_dso = NULL; 377 atalla_dso = NULL;
@@ -294,7 +381,32 @@ static int atalla_finish()
294 return 1; 381 return 1;
295 } 382 }
296 383
297static int atalla_mod_exp(BIGNUM *r, BIGNUM *a, const BIGNUM *p, 384static int atalla_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)())
385 {
386 int initialised = ((atalla_dso == NULL) ? 0 : 1);
387 switch(cmd)
388 {
389 case ATALLA_CMD_SO_PATH:
390 if(p == NULL)
391 {
392 ATALLAerr(ATALLA_F_ATALLA_CTRL,ERR_R_PASSED_NULL_PARAMETER);
393 return 0;
394 }
395 if(initialised)
396 {
397 ATALLAerr(ATALLA_F_ATALLA_CTRL,ATALLA_R_ALREADY_LOADED);
398 return 0;
399 }
400 ATALLA_LIBNAME = (const char *)p;
401 return 1;
402 default:
403 break;
404 }
405 ATALLAerr(ATALLA_F_ATALLA_CTRL,ATALLA_R_CTRL_COMMAND_NOT_IMPLEMENTED);
406 return 0;
407 }
408
409static int atalla_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
298 const BIGNUM *m, BN_CTX *ctx) 410 const BIGNUM *m, BN_CTX *ctx)
299 { 411 {
300 /* I need somewhere to store temporary serialised values for 412 /* I need somewhere to store temporary serialised values for
@@ -313,26 +425,27 @@ static int atalla_mod_exp(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
313 to_return = 0; /* expect failure */ 425 to_return = 0; /* expect failure */
314 426
315 if(!atalla_dso) 427 if(!atalla_dso)
316 { 428 {
317 ENGINEerr(ENGINE_F_ATALLA_MOD_EXP,ENGINE_R_NOT_LOADED); 429 ATALLAerr(ATALLA_F_ATALLA_MOD_EXP,ATALLA_R_NOT_LOADED);
318 goto err; 430 goto err;
319 } 431 }
320 /* Prepare the params */ 432 /* Prepare the params */
433 BN_CTX_start(ctx);
321 modulus = BN_CTX_get(ctx); 434 modulus = BN_CTX_get(ctx);
322 exponent = BN_CTX_get(ctx); 435 exponent = BN_CTX_get(ctx);
323 argument = BN_CTX_get(ctx); 436 argument = BN_CTX_get(ctx);
324 result = BN_CTX_get(ctx); 437 result = BN_CTX_get(ctx);
325 if(!modulus || !exponent || !argument || !result) 438 if (!result)
326 { 439 {
327 ENGINEerr(ENGINE_F_ATALLA_MOD_EXP,ENGINE_R_BN_CTX_FULL); 440 ATALLAerr(ATALLA_F_ATALLA_MOD_EXP,ATALLA_R_BN_CTX_FULL);
328 goto err; 441 goto err;
329 } 442 }
330 if(!bn_wexpand(modulus, m->top) || !bn_wexpand(exponent, m->top) || 443 if(!bn_wexpand(modulus, m->top) || !bn_wexpand(exponent, m->top) ||
331 !bn_wexpand(argument, m->top) || !bn_wexpand(result, m->top)) 444 !bn_wexpand(argument, m->top) || !bn_wexpand(result, m->top))
332 { 445 {
333 ENGINEerr(ENGINE_F_ATALLA_MOD_EXP,ENGINE_R_BN_EXPAND_FAIL); 446 ATALLAerr(ATALLA_F_ATALLA_MOD_EXP,ATALLA_R_BN_EXPAND_FAIL);
334 goto err; 447 goto err;
335 } 448 }
336 /* Prepare the key-data */ 449 /* Prepare the key-data */
337 memset(&keydata, 0,sizeof keydata); 450 memset(&keydata, 0,sizeof keydata);
338 numbytes = BN_num_bytes(m); 451 numbytes = BN_num_bytes(m);
@@ -352,36 +465,34 @@ static int atalla_mod_exp(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
352 if(p_Atalla_RSAPrivateKeyOpFn(&keydata, (unsigned char *)result->d, 465 if(p_Atalla_RSAPrivateKeyOpFn(&keydata, (unsigned char *)result->d,
353 (unsigned char *)argument->d, 466 (unsigned char *)argument->d,
354 keydata.modulus.len) != 0) 467 keydata.modulus.len) != 0)
355 { 468 {
356 ENGINEerr(ENGINE_F_ATALLA_MOD_EXP,ENGINE_R_REQUEST_FAILED); 469 ATALLAerr(ATALLA_F_ATALLA_MOD_EXP,ATALLA_R_REQUEST_FAILED);
357 goto err; 470 goto err;
358 } 471 }
359 /* Convert the response */ 472 /* Convert the response */
360 BN_bin2bn((unsigned char *)result->d, numbytes, r); 473 BN_bin2bn((unsigned char *)result->d, numbytes, r);
361 to_return = 1; 474 to_return = 1;
362err: 475err:
363 if(modulus) ctx->tos--; 476 BN_CTX_end(ctx);
364 if(exponent) ctx->tos--;
365 if(argument) ctx->tos--;
366 if(result) ctx->tos--;
367 return to_return; 477 return to_return;
368 } 478 }
369 479
370static int atalla_rsa_mod_exp(BIGNUM *r0, BIGNUM *I, RSA *rsa) 480#ifndef OPENSSL_NO_RSA
481static int atalla_rsa_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa)
371 { 482 {
372 BN_CTX *ctx = NULL; 483 BN_CTX *ctx = NULL;
373 int to_return = 0; 484 int to_return = 0;
374 485
375 if(!atalla_dso) 486 if(!atalla_dso)
376 { 487 {
377 ENGINEerr(ENGINE_F_ATALLA_RSA_MOD_EXP,ENGINE_R_NOT_LOADED); 488 ATALLAerr(ATALLA_F_ATALLA_RSA_MOD_EXP,ATALLA_R_NOT_LOADED);
378 goto err; 489 goto err;
379 } 490 }
380 if((ctx = BN_CTX_new()) == NULL) 491 if((ctx = BN_CTX_new()) == NULL)
381 goto err; 492 goto err;
382 if(!rsa->d || !rsa->n) 493 if(!rsa->d || !rsa->n)
383 { 494 {
384 ENGINEerr(ENGINE_F_ATALLA_RSA_MOD_EXP,ENGINE_R_MISSING_KEY_COMPONENTS); 495 ATALLAerr(ATALLA_F_ATALLA_RSA_MOD_EXP,ATALLA_R_MISSING_KEY_COMPONENTS);
385 goto err; 496 goto err;
386 } 497 }
387 to_return = atalla_mod_exp(r0, I, rsa->d, rsa->n, ctx); 498 to_return = atalla_mod_exp(r0, I, rsa->d, rsa->n, ctx);
@@ -390,7 +501,9 @@ err:
390 BN_CTX_free(ctx); 501 BN_CTX_free(ctx);
391 return to_return; 502 return to_return;
392 } 503 }
504#endif
393 505
506#ifndef OPENSSL_NO_DSA
394/* This code was liberated and adapted from the commented-out code in 507/* This code was liberated and adapted from the commented-out code in
395 * dsa_ossl.c. Because of the unoptimised form of the Atalla acceleration 508 * dsa_ossl.c. Because of the unoptimised form of the Atalla acceleration
396 * (it doesn't have a CRT form for RSA), this function means that an 509 * (it doesn't have a CRT form for RSA), this function means that an
@@ -418,27 +531,45 @@ end:
418 return to_return; 531 return to_return;
419 } 532 }
420 533
421
422static int atalla_mod_exp_dsa(DSA *dsa, BIGNUM *r, BIGNUM *a, 534static int atalla_mod_exp_dsa(DSA *dsa, BIGNUM *r, BIGNUM *a,
423 const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx, 535 const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx,
424 BN_MONT_CTX *m_ctx) 536 BN_MONT_CTX *m_ctx)
425 { 537 {
426 return atalla_mod_exp(r, a, p, m, ctx); 538 return atalla_mod_exp(r, a, p, m, ctx);
427 } 539 }
540#endif
428 541
429/* This function is aliased to mod_exp (with the mont stuff dropped). */ 542/* This function is aliased to mod_exp (with the mont stuff dropped). */
430static int atalla_mod_exp_mont(BIGNUM *r, BIGNUM *a, const BIGNUM *p, 543static int atalla_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
431 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx) 544 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx)
432 { 545 {
433 return atalla_mod_exp(r, a, p, m, ctx); 546 return atalla_mod_exp(r, a, p, m, ctx);
434 } 547 }
435 548
549#ifndef OPENSSL_NO_DH
436/* This function is aliased to mod_exp (with the dh and mont dropped). */ 550/* This function is aliased to mod_exp (with the dh and mont dropped). */
437static int atalla_mod_exp_dh(DH *dh, BIGNUM *r, BIGNUM *a, const BIGNUM *p, 551static int atalla_mod_exp_dh(const DH *dh, BIGNUM *r,
552 const BIGNUM *a, const BIGNUM *p,
438 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx) 553 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx)
439 { 554 {
440 return atalla_mod_exp(r, a, p, m, ctx); 555 return atalla_mod_exp(r, a, p, m, ctx);
441 } 556 }
557#endif
558
559/* This stuff is needed if this ENGINE is being compiled into a self-contained
560 * shared-library. */
561#ifdef ENGINE_DYNAMIC_SUPPORT
562static int bind_fn(ENGINE *e, const char *id)
563 {
564 if(id && (strcmp(id, engine_atalla_id) != 0))
565 return 0;
566 if(!bind_helper(e))
567 return 0;
568 return 1;
569 }
570IMPLEMENT_DYNAMIC_CHECK_FN()
571IMPLEMENT_DYNAMIC_BIND_FN(bind_fn)
572#endif /* ENGINE_DYNAMIC_SUPPORT */
442 573
443#endif /* !NO_HW_ATALLA */ 574#endif /* !OPENSSL_NO_HW_ATALLA */
444#endif /* !NO_HW */ 575#endif /* !OPENSSL_NO_HW */
diff --git a/src/lib/libcrypto/engine/hw_cswift.c b/src/lib/libcrypto/engine/hw_cswift.c
index 77608b8983..d8b380550f 100644
--- a/src/lib/libcrypto/engine/hw_cswift.c
+++ b/src/lib/libcrypto/engine/hw_cswift.c
@@ -3,7 +3,7 @@
3 * project 2000. 3 * project 2000.
4 */ 4 */
5/* ==================================================================== 5/* ====================================================================
6 * Copyright (c) 1999 The OpenSSL Project. All rights reserved. 6 * Copyright (c) 1999-2001 The OpenSSL Project. All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
@@ -60,11 +60,10 @@
60#include <openssl/crypto.h> 60#include <openssl/crypto.h>
61#include "cryptlib.h" 61#include "cryptlib.h"
62#include <openssl/dso.h> 62#include <openssl/dso.h>
63#include "engine_int.h"
64#include <openssl/engine.h> 63#include <openssl/engine.h>
65 64
66#ifndef NO_HW 65#ifndef OPENSSL_NO_HW
67#ifndef NO_HW_CSWIFT 66#ifndef OPENSSL_NO_HW_CSWIFT
68 67
69/* Attribution notice: Rainbow have generously allowed me to reproduce 68/* Attribution notice: Rainbow have generously allowed me to reproduce
70 * the necessary definitions here from their API. This means the support 69 * the necessary definitions here from their API. This means the support
@@ -84,33 +83,55 @@
84#include "vendor_defns/cswift.h" 83#include "vendor_defns/cswift.h"
85#endif 84#endif
86 85
87static int cswift_init(void); 86#define CSWIFT_LIB_NAME "cswift engine"
88static int cswift_finish(void); 87#include "hw_cswift_err.c"
88
89static int cswift_destroy(ENGINE *e);
90static int cswift_init(ENGINE *e);
91static int cswift_finish(ENGINE *e);
92static int cswift_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)());
89 93
90/* BIGNUM stuff */ 94/* BIGNUM stuff */
91static int cswift_mod_exp(BIGNUM *r, BIGNUM *a, const BIGNUM *p, 95static int cswift_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
92 const BIGNUM *m, BN_CTX *ctx); 96 const BIGNUM *m, BN_CTX *ctx);
93static int cswift_mod_exp_crt(BIGNUM *r, BIGNUM *a, const BIGNUM *p, 97static int cswift_mod_exp_crt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
94 const BIGNUM *q, const BIGNUM *dmp1, const BIGNUM *dmq1, 98 const BIGNUM *q, const BIGNUM *dmp1, const BIGNUM *dmq1,
95 const BIGNUM *iqmp, BN_CTX *ctx); 99 const BIGNUM *iqmp, BN_CTX *ctx);
96 100
101#ifndef OPENSSL_NO_RSA
97/* RSA stuff */ 102/* RSA stuff */
98static int cswift_rsa_mod_exp(BIGNUM *r0, BIGNUM *I, RSA *rsa); 103static int cswift_rsa_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa);
104#endif
99/* This function is aliased to mod_exp (with the mont stuff dropped). */ 105/* This function is aliased to mod_exp (with the mont stuff dropped). */
100static int cswift_mod_exp_mont(BIGNUM *r, BIGNUM *a, const BIGNUM *p, 106static int cswift_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
101 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); 107 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
102 108
109#ifndef OPENSSL_NO_DSA
103/* DSA stuff */ 110/* DSA stuff */
104static DSA_SIG *cswift_dsa_sign(const unsigned char *dgst, int dlen, DSA *dsa); 111static DSA_SIG *cswift_dsa_sign(const unsigned char *dgst, int dlen, DSA *dsa);
105static int cswift_dsa_verify(const unsigned char *dgst, int dgst_len, 112static int cswift_dsa_verify(const unsigned char *dgst, int dgst_len,
106 DSA_SIG *sig, DSA *dsa); 113 DSA_SIG *sig, DSA *dsa);
114#endif
107 115
116#ifndef OPENSSL_NO_DH
108/* DH stuff */ 117/* DH stuff */
109/* This function is alised to mod_exp (with the DH and mont dropped). */ 118/* This function is alised to mod_exp (with the DH and mont dropped). */
110static int cswift_mod_exp_dh(DH *dh, BIGNUM *r, BIGNUM *a, const BIGNUM *p, 119static int cswift_mod_exp_dh(const DH *dh, BIGNUM *r,
120 const BIGNUM *a, const BIGNUM *p,
111 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); 121 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
122#endif
112 123
124/* The definitions for control commands specific to this engine */
125#define CSWIFT_CMD_SO_PATH ENGINE_CMD_BASE
126static const ENGINE_CMD_DEFN cswift_cmd_defns[] = {
127 {CSWIFT_CMD_SO_PATH,
128 "SO_PATH",
129 "Specifies the path to the 'cswift' shared library",
130 ENGINE_CMD_FLAG_STRING},
131 {0, NULL, NULL, 0}
132 };
113 133
134#ifndef OPENSSL_NO_RSA
114/* Our internal RSA_METHOD that we provide pointers to */ 135/* Our internal RSA_METHOD that we provide pointers to */
115static RSA_METHOD cswift_rsa = 136static RSA_METHOD cswift_rsa =
116 { 137 {
@@ -128,7 +149,9 @@ static RSA_METHOD cswift_rsa =
128 NULL, 149 NULL,
129 NULL 150 NULL
130 }; 151 };
152#endif
131 153
154#ifndef OPENSSL_NO_DSA
132/* Our internal DSA_METHOD that we provide pointers to */ 155/* Our internal DSA_METHOD that we provide pointers to */
133static DSA_METHOD cswift_dsa = 156static DSA_METHOD cswift_dsa =
134 { 157 {
@@ -143,7 +166,9 @@ static DSA_METHOD cswift_dsa =
143 0, /* flags */ 166 0, /* flags */
144 NULL /* app_data */ 167 NULL /* app_data */
145 }; 168 };
169#endif
146 170
171#ifndef OPENSSL_NO_DH
147/* Our internal DH_METHOD that we provide pointers to */ 172/* Our internal DH_METHOD that we provide pointers to */
148static DH_METHOD cswift_dh = 173static DH_METHOD cswift_dh =
149 { 174 {
@@ -156,35 +181,41 @@ static DH_METHOD cswift_dh =
156 0, 181 0,
157 NULL 182 NULL
158 }; 183 };
184#endif
159 185
160/* Our ENGINE structure. */ 186/* Constants used when creating the ENGINE */
161static ENGINE engine_cswift = 187static const char *engine_cswift_id = "cswift";
162 { 188static const char *engine_cswift_name = "CryptoSwift hardware engine support";
163 "cswift", 189
164 "CryptoSwift hardware engine support", 190/* This internal function is used by ENGINE_cswift() and possibly by the
165 &cswift_rsa, 191 * "dynamic" ENGINE support too */
166 &cswift_dsa, 192static int bind_helper(ENGINE *e)
167 &cswift_dh,
168 NULL,
169 cswift_mod_exp,
170 cswift_mod_exp_crt,
171 cswift_init,
172 cswift_finish,
173 NULL, /* no ctrl() */
174 NULL, /* no load_privkey() */
175 NULL, /* no load_pubkey() */
176 0, /* no flags */
177 0, 0, /* no references */
178 NULL, NULL /* unlinked */
179 };
180
181/* As this is only ever called once, there's no need for locking
182 * (indeed - the lock will already be held by our caller!!!) */
183ENGINE *ENGINE_cswift()
184 { 193 {
185 RSA_METHOD *meth1; 194#ifndef OPENSSL_NO_RSA
186 DH_METHOD *meth2; 195 const RSA_METHOD *meth1;
196#endif
197#ifndef OPENSSL_NO_DH
198 const DH_METHOD *meth2;
199#endif
200 if(!ENGINE_set_id(e, engine_cswift_id) ||
201 !ENGINE_set_name(e, engine_cswift_name) ||
202#ifndef OPENSSL_NO_RSA
203 !ENGINE_set_RSA(e, &cswift_rsa) ||
204#endif
205#ifndef OPENSSL_NO_DSA
206 !ENGINE_set_DSA(e, &cswift_dsa) ||
207#endif
208#ifndef OPENSSL_NO_DH
209 !ENGINE_set_DH(e, &cswift_dh) ||
210#endif
211 !ENGINE_set_destroy_function(e, cswift_destroy) ||
212 !ENGINE_set_init_function(e, cswift_init) ||
213 !ENGINE_set_finish_function(e, cswift_finish) ||
214 !ENGINE_set_ctrl_function(e, cswift_ctrl) ||
215 !ENGINE_set_cmd_defns(e, cswift_cmd_defns))
216 return 0;
187 217
218#ifndef OPENSSL_NO_RSA
188 /* We know that the "PKCS1_SSLeay()" functions hook properly 219 /* We know that the "PKCS1_SSLeay()" functions hook properly
189 * to the cswift-specific mod_exp and mod_exp_crt so we use 220 * to the cswift-specific mod_exp and mod_exp_crt so we use
190 * those functions. NB: We don't use ENGINE_openssl() or 221 * those functions. NB: We don't use ENGINE_openssl() or
@@ -197,12 +228,41 @@ ENGINE *ENGINE_cswift()
197 cswift_rsa.rsa_pub_dec = meth1->rsa_pub_dec; 228 cswift_rsa.rsa_pub_dec = meth1->rsa_pub_dec;
198 cswift_rsa.rsa_priv_enc = meth1->rsa_priv_enc; 229 cswift_rsa.rsa_priv_enc = meth1->rsa_priv_enc;
199 cswift_rsa.rsa_priv_dec = meth1->rsa_priv_dec; 230 cswift_rsa.rsa_priv_dec = meth1->rsa_priv_dec;
231#endif
200 232
233#ifndef OPENSSL_NO_DH
201 /* Much the same for Diffie-Hellman */ 234 /* Much the same for Diffie-Hellman */
202 meth2 = DH_OpenSSL(); 235 meth2 = DH_OpenSSL();
203 cswift_dh.generate_key = meth2->generate_key; 236 cswift_dh.generate_key = meth2->generate_key;
204 cswift_dh.compute_key = meth2->compute_key; 237 cswift_dh.compute_key = meth2->compute_key;
205 return &engine_cswift; 238#endif
239
240 /* Ensure the cswift error handling is set up */
241 ERR_load_CSWIFT_strings();
242 return 1;
243 }
244
245static ENGINE *engine_cswift(void)
246 {
247 ENGINE *ret = ENGINE_new();
248 if(!ret)
249 return NULL;
250 if(!bind_helper(ret))
251 {
252 ENGINE_free(ret);
253 return NULL;
254 }
255 return ret;
256 }
257
258void ENGINE_load_cswift(void)
259 {
260 /* Copied from eng_[openssl|dyn].c */
261 ENGINE *toadd = engine_cswift();
262 if(!toadd) return;
263 ENGINE_add(toadd);
264 ENGINE_free(toadd);
265 ERR_clear_error();
206 } 266 }
207 267
208/* This is a process-global DSO handle used for loading and unloading 268/* This is a process-global DSO handle used for loading and unloading
@@ -220,7 +280,8 @@ t_swSimpleRequest *p_CSwift_SimpleRequest = NULL;
220t_swReleaseAccContext *p_CSwift_ReleaseAccContext = NULL; 280t_swReleaseAccContext *p_CSwift_ReleaseAccContext = NULL;
221 281
222/* Used in the DSO operations. */ 282/* Used in the DSO operations. */
223static const char *CSWIFT_LIBNAME = "swift"; 283static const char def_CSWIFT_LIBNAME[] = "swift";
284static const char *CSWIFT_LIBNAME = def_CSWIFT_LIBNAME;
224static const char *CSWIFT_F1 = "swAcquireAccContext"; 285static const char *CSWIFT_F1 = "swAcquireAccContext";
225static const char *CSWIFT_F2 = "swAttachKeyParam"; 286static const char *CSWIFT_F2 = "swAttachKeyParam";
226static const char *CSWIFT_F3 = "swSimpleRequest"; 287static const char *CSWIFT_F3 = "swSimpleRequest";
@@ -249,8 +310,15 @@ static void release_context(SW_CONTEXT_HANDLE hac)
249 p_CSwift_ReleaseAccContext(hac); 310 p_CSwift_ReleaseAccContext(hac);
250 } 311 }
251 312
313/* Destructor (complements the "ENGINE_cswift()" constructor) */
314static int cswift_destroy(ENGINE *e)
315 {
316 ERR_unload_CSWIFT_strings();
317 return 1;
318 }
319
252/* (de)initialisation functions. */ 320/* (de)initialisation functions. */
253static int cswift_init() 321static int cswift_init(ENGINE *e)
254 { 322 {
255 SW_CONTEXT_HANDLE hac; 323 SW_CONTEXT_HANDLE hac;
256 t_swAcquireAccContext *p1; 324 t_swAcquireAccContext *p1;
@@ -260,15 +328,14 @@ static int cswift_init()
260 328
261 if(cswift_dso != NULL) 329 if(cswift_dso != NULL)
262 { 330 {
263 ENGINEerr(ENGINE_F_CSWIFT_INIT,ENGINE_R_ALREADY_LOADED); 331 CSWIFTerr(CSWIFT_F_CSWIFT_INIT,CSWIFT_R_ALREADY_LOADED);
264 goto err; 332 goto err;
265 } 333 }
266 /* Attempt to load libswift.so/swift.dll/whatever. */ 334 /* Attempt to load libswift.so/swift.dll/whatever. */
267 cswift_dso = DSO_load(NULL, CSWIFT_LIBNAME, NULL, 335 cswift_dso = DSO_load(NULL, CSWIFT_LIBNAME, NULL, 0);
268 DSO_FLAG_NAME_TRANSLATION);
269 if(cswift_dso == NULL) 336 if(cswift_dso == NULL)
270 { 337 {
271 ENGINEerr(ENGINE_F_CSWIFT_INIT,ENGINE_R_DSO_FAILURE); 338 CSWIFTerr(CSWIFT_F_CSWIFT_INIT,CSWIFT_R_NOT_LOADED);
272 goto err; 339 goto err;
273 } 340 }
274 if(!(p1 = (t_swAcquireAccContext *) 341 if(!(p1 = (t_swAcquireAccContext *)
@@ -280,7 +347,7 @@ static int cswift_init()
280 !(p4 = (t_swReleaseAccContext *) 347 !(p4 = (t_swReleaseAccContext *)
281 DSO_bind_func(cswift_dso, CSWIFT_F4))) 348 DSO_bind_func(cswift_dso, CSWIFT_F4)))
282 { 349 {
283 ENGINEerr(ENGINE_F_CSWIFT_INIT,ENGINE_R_DSO_FAILURE); 350 CSWIFTerr(CSWIFT_F_CSWIFT_INIT,CSWIFT_R_NOT_LOADED);
284 goto err; 351 goto err;
285 } 352 }
286 /* Copy the pointers */ 353 /* Copy the pointers */
@@ -292,7 +359,7 @@ static int cswift_init()
292 * accelerator! */ 359 * accelerator! */
293 if(!get_context(&hac)) 360 if(!get_context(&hac))
294 { 361 {
295 ENGINEerr(ENGINE_F_CSWIFT_INIT,ENGINE_R_UNIT_FAILURE); 362 CSWIFTerr(CSWIFT_F_CSWIFT_INIT,CSWIFT_R_UNIT_FAILURE);
296 goto err; 363 goto err;
297 } 364 }
298 release_context(hac); 365 release_context(hac);
@@ -308,16 +375,16 @@ err:
308 return 0; 375 return 0;
309 } 376 }
310 377
311static int cswift_finish() 378static int cswift_finish(ENGINE *e)
312 { 379 {
313 if(cswift_dso == NULL) 380 if(cswift_dso == NULL)
314 { 381 {
315 ENGINEerr(ENGINE_F_CSWIFT_FINISH,ENGINE_R_NOT_LOADED); 382 CSWIFTerr(CSWIFT_F_CSWIFT_FINISH,CSWIFT_R_NOT_LOADED);
316 return 0; 383 return 0;
317 } 384 }
318 if(!DSO_free(cswift_dso)) 385 if(!DSO_free(cswift_dso))
319 { 386 {
320 ENGINEerr(ENGINE_F_CSWIFT_FINISH,ENGINE_R_DSO_FAILURE); 387 CSWIFTerr(CSWIFT_F_CSWIFT_FINISH,CSWIFT_R_UNIT_FAILURE);
321 return 0; 388 return 0;
322 } 389 }
323 cswift_dso = NULL; 390 cswift_dso = NULL;
@@ -328,8 +395,33 @@ static int cswift_finish()
328 return 1; 395 return 1;
329 } 396 }
330 397
398static int cswift_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)())
399 {
400 int initialised = ((cswift_dso == NULL) ? 0 : 1);
401 switch(cmd)
402 {
403 case CSWIFT_CMD_SO_PATH:
404 if(p == NULL)
405 {
406 CSWIFTerr(CSWIFT_F_CSWIFT_CTRL,ERR_R_PASSED_NULL_PARAMETER);
407 return 0;
408 }
409 if(initialised)
410 {
411 CSWIFTerr(CSWIFT_F_CSWIFT_CTRL,CSWIFT_R_ALREADY_LOADED);
412 return 0;
413 }
414 CSWIFT_LIBNAME = (const char *)p;
415 return 1;
416 default:
417 break;
418 }
419 CSWIFTerr(CSWIFT_F_CSWIFT_CTRL,CSWIFT_R_CTRL_COMMAND_NOT_IMPLEMENTED);
420 return 0;
421 }
422
331/* Un petit mod_exp */ 423/* Un petit mod_exp */
332static int cswift_mod_exp(BIGNUM *r, BIGNUM *a, const BIGNUM *p, 424static int cswift_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
333 const BIGNUM *m, BN_CTX *ctx) 425 const BIGNUM *m, BN_CTX *ctx)
334 { 426 {
335 /* I need somewhere to store temporary serialised values for 427 /* I need somewhere to store temporary serialised values for
@@ -353,24 +445,25 @@ static int cswift_mod_exp(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
353 445
354 if(!get_context(&hac)) 446 if(!get_context(&hac))
355 { 447 {
356 ENGINEerr(ENGINE_F_CSWIFT_MOD_EXP,ENGINE_R_GET_HANDLE_FAILED); 448 CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP,CSWIFT_R_UNIT_FAILURE);
357 goto err; 449 goto err;
358 } 450 }
359 acquired = 1; 451 acquired = 1;
360 /* Prepare the params */ 452 /* Prepare the params */
453 BN_CTX_start(ctx);
361 modulus = BN_CTX_get(ctx); 454 modulus = BN_CTX_get(ctx);
362 exponent = BN_CTX_get(ctx); 455 exponent = BN_CTX_get(ctx);
363 argument = BN_CTX_get(ctx); 456 argument = BN_CTX_get(ctx);
364 result = BN_CTX_get(ctx); 457 result = BN_CTX_get(ctx);
365 if(!modulus || !exponent || !argument || !result) 458 if(!result)
366 { 459 {
367 ENGINEerr(ENGINE_F_CSWIFT_MOD_EXP,ENGINE_R_BN_CTX_FULL); 460 CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP,CSWIFT_R_BN_CTX_FULL);
368 goto err; 461 goto err;
369 } 462 }
370 if(!bn_wexpand(modulus, m->top) || !bn_wexpand(exponent, p->top) || 463 if(!bn_wexpand(modulus, m->top) || !bn_wexpand(exponent, p->top) ||
371 !bn_wexpand(argument, a->top) || !bn_wexpand(result, m->top)) 464 !bn_wexpand(argument, a->top) || !bn_wexpand(result, m->top))
372 { 465 {
373 ENGINEerr(ENGINE_F_CSWIFT_MOD_EXP,ENGINE_R_BN_EXPAND_FAIL); 466 CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP,CSWIFT_R_BN_EXPAND_FAIL);
374 goto err; 467 goto err;
375 } 468 }
376 sw_param.type = SW_ALG_EXP; 469 sw_param.type = SW_ALG_EXP;
@@ -387,13 +480,12 @@ static int cswift_mod_exp(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
387 case SW_OK: 480 case SW_OK:
388 break; 481 break;
389 case SW_ERR_INPUT_SIZE: 482 case SW_ERR_INPUT_SIZE:
390 ENGINEerr(ENGINE_F_CSWIFT_MOD_EXP, 483 CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP,CSWIFT_R_BAD_KEY_SIZE);
391 ENGINE_R_SIZE_TOO_LARGE_OR_TOO_SMALL);
392 goto err; 484 goto err;
393 default: 485 default:
394 { 486 {
395 char tmpbuf[20]; 487 char tmpbuf[20];
396 ENGINEerr(ENGINE_F_CSWIFT_MOD_EXP,ENGINE_R_REQUEST_FAILED); 488 CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP,CSWIFT_R_REQUEST_FAILED);
397 sprintf(tmpbuf, "%ld", sw_status); 489 sprintf(tmpbuf, "%ld", sw_status);
398 ERR_add_error_data(2, "CryptoSwift error number is ",tmpbuf); 490 ERR_add_error_data(2, "CryptoSwift error number is ",tmpbuf);
399 } 491 }
@@ -410,7 +502,7 @@ static int cswift_mod_exp(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
410 &res, 1)) != SW_OK) 502 &res, 1)) != SW_OK)
411 { 503 {
412 char tmpbuf[20]; 504 char tmpbuf[20];
413 ENGINEerr(ENGINE_F_CSWIFT_MOD_EXP,ENGINE_R_REQUEST_FAILED); 505 CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP,CSWIFT_R_REQUEST_FAILED);
414 sprintf(tmpbuf, "%ld", sw_status); 506 sprintf(tmpbuf, "%ld", sw_status);
415 ERR_add_error_data(2, "CryptoSwift error number is ",tmpbuf); 507 ERR_add_error_data(2, "CryptoSwift error number is ",tmpbuf);
416 goto err; 508 goto err;
@@ -421,15 +513,12 @@ static int cswift_mod_exp(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
421err: 513err:
422 if(acquired) 514 if(acquired)
423 release_context(hac); 515 release_context(hac);
424 if(modulus) ctx->tos--; 516 BN_CTX_end(ctx);
425 if(exponent) ctx->tos--;
426 if(argument) ctx->tos--;
427 if(result) ctx->tos--;
428 return to_return; 517 return to_return;
429 } 518 }
430 519
431/* Un petit mod_exp chinois */ 520/* Un petit mod_exp chinois */
432static int cswift_mod_exp_crt(BIGNUM *r, BIGNUM *a, const BIGNUM *p, 521static int cswift_mod_exp_crt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
433 const BIGNUM *q, const BIGNUM *dmp1, 522 const BIGNUM *q, const BIGNUM *dmp1,
434 const BIGNUM *dmq1, const BIGNUM *iqmp, BN_CTX *ctx) 523 const BIGNUM *dmq1, const BIGNUM *iqmp, BN_CTX *ctx)
435 { 524 {
@@ -449,11 +538,12 @@ static int cswift_mod_exp_crt(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
449 538
450 if(!get_context(&hac)) 539 if(!get_context(&hac))
451 { 540 {
452 ENGINEerr(ENGINE_F_CSWIFT_MOD_EXP_CRT,ENGINE_R_GET_HANDLE_FAILED); 541 CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_UNIT_FAILURE);
453 goto err; 542 goto err;
454 } 543 }
455 acquired = 1; 544 acquired = 1;
456 /* Prepare the params */ 545 /* Prepare the params */
546 BN_CTX_start(ctx);
457 rsa_p = BN_CTX_get(ctx); 547 rsa_p = BN_CTX_get(ctx);
458 rsa_q = BN_CTX_get(ctx); 548 rsa_q = BN_CTX_get(ctx);
459 rsa_dmp1 = BN_CTX_get(ctx); 549 rsa_dmp1 = BN_CTX_get(ctx);
@@ -461,10 +551,9 @@ static int cswift_mod_exp_crt(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
461 rsa_iqmp = BN_CTX_get(ctx); 551 rsa_iqmp = BN_CTX_get(ctx);
462 argument = BN_CTX_get(ctx); 552 argument = BN_CTX_get(ctx);
463 result = BN_CTX_get(ctx); 553 result = BN_CTX_get(ctx);
464 if(!rsa_p || !rsa_q || !rsa_dmp1 || !rsa_dmq1 || !rsa_iqmp || 554 if(!result)
465 !argument || !result)
466 { 555 {
467 ENGINEerr(ENGINE_F_CSWIFT_MOD_EXP_CRT,ENGINE_R_BN_CTX_FULL); 556 CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_CTX_FULL);
468 goto err; 557 goto err;
469 } 558 }
470 if(!bn_wexpand(rsa_p, p->top) || !bn_wexpand(rsa_q, q->top) || 559 if(!bn_wexpand(rsa_p, p->top) || !bn_wexpand(rsa_q, q->top) ||
@@ -474,7 +563,7 @@ static int cswift_mod_exp_crt(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
474 !bn_wexpand(argument, a->top) || 563 !bn_wexpand(argument, a->top) ||
475 !bn_wexpand(result, p->top + q->top)) 564 !bn_wexpand(result, p->top + q->top))
476 { 565 {
477 ENGINEerr(ENGINE_F_CSWIFT_MOD_EXP_CRT,ENGINE_R_BN_EXPAND_FAIL); 566 CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_EXPAND_FAIL);
478 goto err; 567 goto err;
479 } 568 }
480 sw_param.type = SW_ALG_CRT; 569 sw_param.type = SW_ALG_CRT;
@@ -498,13 +587,12 @@ static int cswift_mod_exp_crt(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
498 case SW_OK: 587 case SW_OK:
499 break; 588 break;
500 case SW_ERR_INPUT_SIZE: 589 case SW_ERR_INPUT_SIZE:
501 ENGINEerr(ENGINE_F_CSWIFT_MOD_EXP_CRT, 590 CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BAD_KEY_SIZE);
502 ENGINE_R_SIZE_TOO_LARGE_OR_TOO_SMALL);
503 goto err; 591 goto err;
504 default: 592 default:
505 { 593 {
506 char tmpbuf[20]; 594 char tmpbuf[20];
507 ENGINEerr(ENGINE_F_CSWIFT_MOD_EXP_CRT,ENGINE_R_REQUEST_FAILED); 595 CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_REQUEST_FAILED);
508 sprintf(tmpbuf, "%ld", sw_status); 596 sprintf(tmpbuf, "%ld", sw_status);
509 ERR_add_error_data(2, "CryptoSwift error number is ",tmpbuf); 597 ERR_add_error_data(2, "CryptoSwift error number is ",tmpbuf);
510 } 598 }
@@ -521,7 +609,7 @@ static int cswift_mod_exp_crt(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
521 &res, 1)) != SW_OK) 609 &res, 1)) != SW_OK)
522 { 610 {
523 char tmpbuf[20]; 611 char tmpbuf[20];
524 ENGINEerr(ENGINE_F_CSWIFT_MOD_EXP_CRT,ENGINE_R_REQUEST_FAILED); 612 CSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_REQUEST_FAILED);
525 sprintf(tmpbuf, "%ld", sw_status); 613 sprintf(tmpbuf, "%ld", sw_status);
526 ERR_add_error_data(2, "CryptoSwift error number is ",tmpbuf); 614 ERR_add_error_data(2, "CryptoSwift error number is ",tmpbuf);
527 goto err; 615 goto err;
@@ -532,17 +620,12 @@ static int cswift_mod_exp_crt(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
532err: 620err:
533 if(acquired) 621 if(acquired)
534 release_context(hac); 622 release_context(hac);
535 if(rsa_p) ctx->tos--; 623 BN_CTX_end(ctx);
536 if(rsa_q) ctx->tos--;
537 if(rsa_dmp1) ctx->tos--;
538 if(rsa_dmq1) ctx->tos--;
539 if(rsa_iqmp) ctx->tos--;
540 if(argument) ctx->tos--;
541 if(result) ctx->tos--;
542 return to_return; 624 return to_return;
543 } 625 }
544 626
545static int cswift_rsa_mod_exp(BIGNUM *r0, BIGNUM *I, RSA *rsa) 627#ifndef OPENSSL_NO_RSA
628static int cswift_rsa_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa)
546 { 629 {
547 BN_CTX *ctx; 630 BN_CTX *ctx;
548 int to_return = 0; 631 int to_return = 0;
@@ -551,7 +634,7 @@ static int cswift_rsa_mod_exp(BIGNUM *r0, BIGNUM *I, RSA *rsa)
551 goto err; 634 goto err;
552 if(!rsa->p || !rsa->q || !rsa->dmp1 || !rsa->dmq1 || !rsa->iqmp) 635 if(!rsa->p || !rsa->q || !rsa->dmp1 || !rsa->dmq1 || !rsa->iqmp)
553 { 636 {
554 ENGINEerr(ENGINE_F_CSWIFT_RSA_MOD_EXP,ENGINE_R_MISSING_KEY_COMPONENTS); 637 CSWIFTerr(CSWIFT_F_CSWIFT_RSA_MOD_EXP,CSWIFT_R_MISSING_KEY_COMPONENTS);
555 goto err; 638 goto err;
556 } 639 }
557 to_return = cswift_mod_exp_crt(r0, I, rsa->p, rsa->q, rsa->dmp1, 640 to_return = cswift_mod_exp_crt(r0, I, rsa->p, rsa->q, rsa->dmp1,
@@ -561,14 +644,16 @@ err:
561 BN_CTX_free(ctx); 644 BN_CTX_free(ctx);
562 return to_return; 645 return to_return;
563 } 646 }
647#endif
564 648
565/* This function is aliased to mod_exp (with the mont stuff dropped). */ 649/* This function is aliased to mod_exp (with the mont stuff dropped). */
566static int cswift_mod_exp_mont(BIGNUM *r, BIGNUM *a, const BIGNUM *p, 650static int cswift_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
567 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx) 651 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx)
568 { 652 {
569 return cswift_mod_exp(r, a, p, m, ctx); 653 return cswift_mod_exp(r, a, p, m, ctx);
570 } 654 }
571 655
656#ifndef OPENSSL_NO_DSA
572static DSA_SIG *cswift_dsa_sign(const unsigned char *dgst, int dlen, DSA *dsa) 657static DSA_SIG *cswift_dsa_sign(const unsigned char *dgst, int dlen, DSA *dsa)
573 { 658 {
574 SW_CONTEXT_HANDLE hac; 659 SW_CONTEXT_HANDLE hac;
@@ -589,19 +674,20 @@ static DSA_SIG *cswift_dsa_sign(const unsigned char *dgst, int dlen, DSA *dsa)
589 goto err; 674 goto err;
590 if(!get_context(&hac)) 675 if(!get_context(&hac))
591 { 676 {
592 ENGINEerr(ENGINE_F_CSWIFT_DSA_SIGN,ENGINE_R_GET_HANDLE_FAILED); 677 CSWIFTerr(CSWIFT_F_CSWIFT_DSA_SIGN,CSWIFT_R_UNIT_FAILURE);
593 goto err; 678 goto err;
594 } 679 }
595 acquired = 1; 680 acquired = 1;
596 /* Prepare the params */ 681 /* Prepare the params */
682 BN_CTX_start(ctx);
597 dsa_p = BN_CTX_get(ctx); 683 dsa_p = BN_CTX_get(ctx);
598 dsa_q = BN_CTX_get(ctx); 684 dsa_q = BN_CTX_get(ctx);
599 dsa_g = BN_CTX_get(ctx); 685 dsa_g = BN_CTX_get(ctx);
600 dsa_key = BN_CTX_get(ctx); 686 dsa_key = BN_CTX_get(ctx);
601 result = BN_CTX_get(ctx); 687 result = BN_CTX_get(ctx);
602 if(!dsa_p || !dsa_q || !dsa_g || !dsa_key || !result) 688 if(!result)
603 { 689 {
604 ENGINEerr(ENGINE_F_CSWIFT_DSA_SIGN,ENGINE_R_BN_CTX_FULL); 690 CSWIFTerr(CSWIFT_F_CSWIFT_DSA_SIGN,CSWIFT_R_BN_CTX_FULL);
605 goto err; 691 goto err;
606 } 692 }
607 if(!bn_wexpand(dsa_p, dsa->p->top) || 693 if(!bn_wexpand(dsa_p, dsa->p->top) ||
@@ -610,7 +696,7 @@ static DSA_SIG *cswift_dsa_sign(const unsigned char *dgst, int dlen, DSA *dsa)
610 !bn_wexpand(dsa_key, dsa->priv_key->top) || 696 !bn_wexpand(dsa_key, dsa->priv_key->top) ||
611 !bn_wexpand(result, dsa->p->top)) 697 !bn_wexpand(result, dsa->p->top))
612 { 698 {
613 ENGINEerr(ENGINE_F_CSWIFT_DSA_SIGN,ENGINE_R_BN_EXPAND_FAIL); 699 CSWIFTerr(CSWIFT_F_CSWIFT_DSA_SIGN,CSWIFT_R_BN_EXPAND_FAIL);
614 goto err; 700 goto err;
615 } 701 }
616 sw_param.type = SW_ALG_DSA; 702 sw_param.type = SW_ALG_DSA;
@@ -633,13 +719,12 @@ static DSA_SIG *cswift_dsa_sign(const unsigned char *dgst, int dlen, DSA *dsa)
633 case SW_OK: 719 case SW_OK:
634 break; 720 break;
635 case SW_ERR_INPUT_SIZE: 721 case SW_ERR_INPUT_SIZE:
636 ENGINEerr(ENGINE_F_CSWIFT_DSA_SIGN, 722 CSWIFTerr(CSWIFT_F_CSWIFT_DSA_SIGN,CSWIFT_R_BAD_KEY_SIZE);
637 ENGINE_R_SIZE_TOO_LARGE_OR_TOO_SMALL);
638 goto err; 723 goto err;
639 default: 724 default:
640 { 725 {
641 char tmpbuf[20]; 726 char tmpbuf[20];
642 ENGINEerr(ENGINE_F_CSWIFT_DSA_SIGN,ENGINE_R_REQUEST_FAILED); 727 CSWIFTerr(CSWIFT_F_CSWIFT_DSA_SIGN,CSWIFT_R_REQUEST_FAILED);
643 sprintf(tmpbuf, "%ld", sw_status); 728 sprintf(tmpbuf, "%ld", sw_status);
644 ERR_add_error_data(2, "CryptoSwift error number is ",tmpbuf); 729 ERR_add_error_data(2, "CryptoSwift error number is ",tmpbuf);
645 } 730 }
@@ -657,7 +742,7 @@ static DSA_SIG *cswift_dsa_sign(const unsigned char *dgst, int dlen, DSA *dsa)
657 if(sw_status != SW_OK) 742 if(sw_status != SW_OK)
658 { 743 {
659 char tmpbuf[20]; 744 char tmpbuf[20];
660 ENGINEerr(ENGINE_F_CSWIFT_DSA_SIGN,ENGINE_R_REQUEST_FAILED); 745 CSWIFTerr(CSWIFT_F_CSWIFT_DSA_SIGN,CSWIFT_R_REQUEST_FAILED);
661 sprintf(tmpbuf, "%ld", sw_status); 746 sprintf(tmpbuf, "%ld", sw_status);
662 ERR_add_error_data(2, "CryptoSwift error number is ",tmpbuf); 747 ERR_add_error_data(2, "CryptoSwift error number is ",tmpbuf);
663 goto err; 748 goto err;
@@ -672,13 +757,11 @@ static DSA_SIG *cswift_dsa_sign(const unsigned char *dgst, int dlen, DSA *dsa)
672err: 757err:
673 if(acquired) 758 if(acquired)
674 release_context(hac); 759 release_context(hac);
675 if(dsa_p) ctx->tos--;
676 if(dsa_q) ctx->tos--;
677 if(dsa_g) ctx->tos--;
678 if(dsa_key) ctx->tos--;
679 if(result) ctx->tos--;
680 if(ctx) 760 if(ctx)
761 {
762 BN_CTX_end(ctx);
681 BN_CTX_free(ctx); 763 BN_CTX_free(ctx);
764 }
682 return to_return; 765 return to_return;
683 } 766 }
684 767
@@ -703,19 +786,20 @@ static int cswift_dsa_verify(const unsigned char *dgst, int dgst_len,
703 goto err; 786 goto err;
704 if(!get_context(&hac)) 787 if(!get_context(&hac))
705 { 788 {
706 ENGINEerr(ENGINE_F_CSWIFT_DSA_VERIFY,ENGINE_R_GET_HANDLE_FAILED); 789 CSWIFTerr(CSWIFT_F_CSWIFT_DSA_VERIFY,CSWIFT_R_UNIT_FAILURE);
707 goto err; 790 goto err;
708 } 791 }
709 acquired = 1; 792 acquired = 1;
710 /* Prepare the params */ 793 /* Prepare the params */
794 BN_CTX_start(ctx);
711 dsa_p = BN_CTX_get(ctx); 795 dsa_p = BN_CTX_get(ctx);
712 dsa_q = BN_CTX_get(ctx); 796 dsa_q = BN_CTX_get(ctx);
713 dsa_g = BN_CTX_get(ctx); 797 dsa_g = BN_CTX_get(ctx);
714 dsa_key = BN_CTX_get(ctx); 798 dsa_key = BN_CTX_get(ctx);
715 argument = BN_CTX_get(ctx); 799 argument = BN_CTX_get(ctx);
716 if(!dsa_p || !dsa_q || !dsa_g || !dsa_key || !argument) 800 if(!argument)
717 { 801 {
718 ENGINEerr(ENGINE_F_CSWIFT_DSA_VERIFY,ENGINE_R_BN_CTX_FULL); 802 CSWIFTerr(CSWIFT_F_CSWIFT_DSA_VERIFY,CSWIFT_R_BN_CTX_FULL);
719 goto err; 803 goto err;
720 } 804 }
721 if(!bn_wexpand(dsa_p, dsa->p->top) || 805 if(!bn_wexpand(dsa_p, dsa->p->top) ||
@@ -724,7 +808,7 @@ static int cswift_dsa_verify(const unsigned char *dgst, int dgst_len,
724 !bn_wexpand(dsa_key, dsa->pub_key->top) || 808 !bn_wexpand(dsa_key, dsa->pub_key->top) ||
725 !bn_wexpand(argument, 40)) 809 !bn_wexpand(argument, 40))
726 { 810 {
727 ENGINEerr(ENGINE_F_CSWIFT_DSA_VERIFY,ENGINE_R_BN_EXPAND_FAIL); 811 CSWIFTerr(CSWIFT_F_CSWIFT_DSA_VERIFY,CSWIFT_R_BN_EXPAND_FAIL);
728 goto err; 812 goto err;
729 } 813 }
730 sw_param.type = SW_ALG_DSA; 814 sw_param.type = SW_ALG_DSA;
@@ -747,13 +831,12 @@ static int cswift_dsa_verify(const unsigned char *dgst, int dgst_len,
747 case SW_OK: 831 case SW_OK:
748 break; 832 break;
749 case SW_ERR_INPUT_SIZE: 833 case SW_ERR_INPUT_SIZE:
750 ENGINEerr(ENGINE_F_CSWIFT_DSA_VERIFY, 834 CSWIFTerr(CSWIFT_F_CSWIFT_DSA_VERIFY,CSWIFT_R_BAD_KEY_SIZE);
751 ENGINE_R_SIZE_TOO_LARGE_OR_TOO_SMALL);
752 goto err; 835 goto err;
753 default: 836 default:
754 { 837 {
755 char tmpbuf[20]; 838 char tmpbuf[20];
756 ENGINEerr(ENGINE_F_CSWIFT_DSA_VERIFY,ENGINE_R_REQUEST_FAILED); 839 CSWIFTerr(CSWIFT_F_CSWIFT_DSA_VERIFY,CSWIFT_R_REQUEST_FAILED);
757 sprintf(tmpbuf, "%ld", sw_status); 840 sprintf(tmpbuf, "%ld", sw_status);
758 ERR_add_error_data(2, "CryptoSwift error number is ",tmpbuf); 841 ERR_add_error_data(2, "CryptoSwift error number is ",tmpbuf);
759 } 842 }
@@ -775,7 +858,7 @@ static int cswift_dsa_verify(const unsigned char *dgst, int dgst_len,
775 if(sw_status != SW_OK) 858 if(sw_status != SW_OK)
776 { 859 {
777 char tmpbuf[20]; 860 char tmpbuf[20];
778 ENGINEerr(ENGINE_F_CSWIFT_DSA_VERIFY,ENGINE_R_REQUEST_FAILED); 861 CSWIFTerr(CSWIFT_F_CSWIFT_DSA_VERIFY,CSWIFT_R_REQUEST_FAILED);
779 sprintf(tmpbuf, "%ld", sw_status); 862 sprintf(tmpbuf, "%ld", sw_status);
780 ERR_add_error_data(2, "CryptoSwift error number is ",tmpbuf); 863 ERR_add_error_data(2, "CryptoSwift error number is ",tmpbuf);
781 goto err; 864 goto err;
@@ -786,22 +869,39 @@ static int cswift_dsa_verify(const unsigned char *dgst, int dgst_len,
786err: 869err:
787 if(acquired) 870 if(acquired)
788 release_context(hac); 871 release_context(hac);
789 if(dsa_p) ctx->tos--;
790 if(dsa_q) ctx->tos--;
791 if(dsa_g) ctx->tos--;
792 if(dsa_key) ctx->tos--;
793 if(argument) ctx->tos--;
794 if(ctx) 872 if(ctx)
873 {
874 BN_CTX_end(ctx);
795 BN_CTX_free(ctx); 875 BN_CTX_free(ctx);
876 }
796 return to_return; 877 return to_return;
797 } 878 }
879#endif
798 880
881#ifndef OPENSSL_NO_DH
799/* This function is aliased to mod_exp (with the dh and mont dropped). */ 882/* This function is aliased to mod_exp (with the dh and mont dropped). */
800static int cswift_mod_exp_dh(DH *dh, BIGNUM *r, BIGNUM *a, const BIGNUM *p, 883static int cswift_mod_exp_dh(const DH *dh, BIGNUM *r,
884 const BIGNUM *a, const BIGNUM *p,
801 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx) 885 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx)
802 { 886 {
803 return cswift_mod_exp(r, a, p, m, ctx); 887 return cswift_mod_exp(r, a, p, m, ctx);
804 } 888 }
889#endif
890
891/* This stuff is needed if this ENGINE is being compiled into a self-contained
892 * shared-library. */
893#ifdef ENGINE_DYNAMIC_SUPPORT
894static int bind_fn(ENGINE *e, const char *id)
895 {
896 if(id && (strcmp(id, engine_cswift_id) != 0))
897 return 0;
898 if(!bind_helper(e))
899 return 0;
900 return 1;
901 }
902IMPLEMENT_DYNAMIC_CHECK_FN()
903IMPLEMENT_DYNAMIC_BIND_FN(bind_fn)
904#endif /* ENGINE_DYNAMIC_SUPPORT */
805 905
806#endif /* !NO_HW_CSWIFT */ 906#endif /* !OPENSSL_NO_HW_CSWIFT */
807#endif /* !NO_HW */ 907#endif /* !OPENSSL_NO_HW */
diff --git a/src/lib/libcrypto/engine/hw_ncipher.c b/src/lib/libcrypto/engine/hw_ncipher.c
index 41f5900676..4762a54e3d 100644
--- a/src/lib/libcrypto/engine/hw_ncipher.c
+++ b/src/lib/libcrypto/engine/hw_ncipher.c
@@ -4,7 +4,7 @@
4 * for the OpenSSL project 2000. 4 * for the OpenSSL project 2000.
5 */ 5 */
6/* ==================================================================== 6/* ====================================================================
7 * Copyright (c) 1999 The OpenSSL Project. All rights reserved. 7 * Copyright (c) 1999-2001 The OpenSSL Project. All rights reserved.
8 * 8 *
9 * Redistribution and use in source and binary forms, with or without 9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions 10 * modification, are permitted provided that the following conditions
@@ -58,15 +58,16 @@
58 */ 58 */
59 59
60#include <stdio.h> 60#include <stdio.h>
61#include <string.h>
61#include <openssl/crypto.h> 62#include <openssl/crypto.h>
62#include <openssl/pem.h> 63#include <openssl/pem.h>
63#include "cryptlib.h" 64#include "cryptlib.h"
64#include <openssl/dso.h> 65#include <openssl/dso.h>
65#include "engine_int.h"
66#include <openssl/engine.h> 66#include <openssl/engine.h>
67#include <openssl/ui.h>
67 68
68#ifndef NO_HW 69#ifndef OPENSSL_NO_HW
69#ifndef NO_HW_NCIPHER 70#ifndef OPENSSL_NO_HW_NCIPHER
70 71
71/* Attribution notice: nCipher have said several times that it's OK for 72/* Attribution notice: nCipher have said several times that it's OK for
72 * us to implement a general interface to their boxes, and recently declared 73 * us to implement a general interface to their boxes, and recently declared
@@ -82,9 +83,13 @@
82#include "vendor_defns/hwcryptohook.h" 83#include "vendor_defns/hwcryptohook.h"
83#endif 84#endif
84 85
85static int hwcrhk_init(void); 86#define HWCRHK_LIB_NAME "hwcrhk engine"
86static int hwcrhk_finish(void); 87#include "hw_ncipher_err.c"
87static int hwcrhk_ctrl(int cmd, long i, void *p, void (*f)()); 88
89static int hwcrhk_destroy(ENGINE *e);
90static int hwcrhk_init(ENGINE *e);
91static int hwcrhk_finish(ENGINE *e);
92static int hwcrhk_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)());
88 93
89/* Functions to handle mutexes */ 94/* Functions to handle mutexes */
90static int hwcrhk_mutex_init(HWCryptoHook_Mutex*, HWCryptoHook_CallerContext*); 95static int hwcrhk_mutex_init(HWCryptoHook_Mutex*, HWCryptoHook_CallerContext*);
@@ -93,39 +98,77 @@ static void hwcrhk_mutex_unlock(HWCryptoHook_Mutex*);
93static void hwcrhk_mutex_destroy(HWCryptoHook_Mutex*); 98static void hwcrhk_mutex_destroy(HWCryptoHook_Mutex*);
94 99
95/* BIGNUM stuff */ 100/* BIGNUM stuff */
96static int hwcrhk_mod_exp(BIGNUM *r, BIGNUM *a, const BIGNUM *p, 101static int hwcrhk_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
97 const BIGNUM *m, BN_CTX *ctx); 102 const BIGNUM *m, BN_CTX *ctx);
98 103
104#ifndef OPENSSL_NO_RSA
99/* RSA stuff */ 105/* RSA stuff */
100static int hwcrhk_rsa_mod_exp(BIGNUM *r, BIGNUM *I, RSA *rsa); 106static int hwcrhk_rsa_mod_exp(BIGNUM *r, const BIGNUM *I, RSA *rsa);
107#endif
101/* This function is aliased to mod_exp (with the mont stuff dropped). */ 108/* This function is aliased to mod_exp (with the mont stuff dropped). */
102static int hwcrhk_mod_exp_mont(BIGNUM *r, BIGNUM *a, const BIGNUM *p, 109static int hwcrhk_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
103 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); 110 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
104 111
105/* DH stuff */ 112/* DH stuff */
106/* This function is alised to mod_exp (with the DH and mont dropped). */ 113/* This function is alised to mod_exp (with the DH and mont dropped). */
107static int hwcrhk_mod_exp_dh(DH *dh, BIGNUM *r, BIGNUM *a, const BIGNUM *p, 114static int hwcrhk_mod_exp_dh(const DH *dh, BIGNUM *r,
108 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); 115 const BIGNUM *a, const BIGNUM *p,
116 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
109 117
110/* RAND stuff */ 118/* RAND stuff */
111static int hwcrhk_rand_bytes(unsigned char *buf, int num); 119static int hwcrhk_rand_bytes(unsigned char *buf, int num);
112static int hwcrhk_rand_status(void); 120static int hwcrhk_rand_status(void);
113 121
114/* KM stuff */ 122/* KM stuff */
115static EVP_PKEY *hwcrhk_load_privkey(const char *key_id, 123static EVP_PKEY *hwcrhk_load_privkey(ENGINE *eng, const char *key_id,
116 const char *passphrase); 124 UI_METHOD *ui_method, void *callback_data);
117static EVP_PKEY *hwcrhk_load_pubkey(const char *key_id, 125static EVP_PKEY *hwcrhk_load_pubkey(ENGINE *eng, const char *key_id,
118 const char *passphrase); 126 UI_METHOD *ui_method, void *callback_data);
119static void hwcrhk_ex_free(void *obj, void *item, CRYPTO_EX_DATA *ad, 127static void hwcrhk_ex_free(void *obj, void *item, CRYPTO_EX_DATA *ad,
120 int index,long argl, void *argp); 128 int ind,long argl, void *argp);
121 129
122/* Interaction stuff */ 130/* Interaction stuff */
131static int hwcrhk_insert_card(const char *prompt_info,
132 const char *wrong_info,
133 HWCryptoHook_PassphraseContext *ppctx,
134 HWCryptoHook_CallerContext *cactx);
123static int hwcrhk_get_pass(const char *prompt_info, 135static int hwcrhk_get_pass(const char *prompt_info,
124 int *len_io, char *buf, 136 int *len_io, char *buf,
125 HWCryptoHook_PassphraseContext *ppctx, 137 HWCryptoHook_PassphraseContext *ppctx,
126 HWCryptoHook_CallerContext *cactx); 138 HWCryptoHook_CallerContext *cactx);
127static void hwcrhk_log_message(void *logstream, const char *message); 139static void hwcrhk_log_message(void *logstr, const char *message);
140
141/* The definitions for control commands specific to this engine */
142#define HWCRHK_CMD_SO_PATH ENGINE_CMD_BASE
143#define HWCRHK_CMD_FORK_CHECK (ENGINE_CMD_BASE + 1)
144#define HWCRHK_CMD_THREAD_LOCKING (ENGINE_CMD_BASE + 2)
145#define HWCRHK_CMD_SET_USER_INTERFACE (ENGINE_CMD_BASE + 3)
146#define HWCRHK_CMD_SET_CALLBACK_DATA (ENGINE_CMD_BASE + 4)
147static const ENGINE_CMD_DEFN hwcrhk_cmd_defns[] = {
148 {HWCRHK_CMD_SO_PATH,
149 "SO_PATH",
150 "Specifies the path to the 'hwcrhk' shared library",
151 ENGINE_CMD_FLAG_STRING},
152 {HWCRHK_CMD_FORK_CHECK,
153 "FORK_CHECK",
154 "Turns fork() checking on or off (boolean)",
155 ENGINE_CMD_FLAG_NUMERIC},
156 {HWCRHK_CMD_THREAD_LOCKING,
157 "THREAD_LOCKING",
158 "Turns thread-safe locking on or off (boolean)",
159 ENGINE_CMD_FLAG_NUMERIC},
160 {HWCRHK_CMD_SET_USER_INTERFACE,
161 "SET_USER_INTERFACE",
162 "Set the global user interface (internal)",
163 ENGINE_CMD_FLAG_INTERNAL},
164 {HWCRHK_CMD_SET_CALLBACK_DATA,
165 "SET_CALLBACK_DATA",
166 "Set the global user interface extra data (internal)",
167 ENGINE_CMD_FLAG_INTERNAL},
168 {0, NULL, NULL, 0}
169 };
128 170
171#ifndef OPENSSL_NO_RSA
129/* Our internal RSA_METHOD that we provide pointers to */ 172/* Our internal RSA_METHOD that we provide pointers to */
130static RSA_METHOD hwcrhk_rsa = 173static RSA_METHOD hwcrhk_rsa =
131 { 174 {
@@ -143,7 +186,9 @@ static RSA_METHOD hwcrhk_rsa =
143 NULL, 186 NULL,
144 NULL 187 NULL
145 }; 188 };
189#endif
146 190
191#ifndef OPENSSL_NO_DH
147/* Our internal DH_METHOD that we provide pointers to */ 192/* Our internal DH_METHOD that we provide pointers to */
148static DH_METHOD hwcrhk_dh = 193static DH_METHOD hwcrhk_dh =
149 { 194 {
@@ -156,6 +201,7 @@ static DH_METHOD hwcrhk_dh =
156 0, 201 0,
157 NULL 202 NULL
158 }; 203 };
204#endif
159 205
160static RAND_METHOD hwcrhk_rand = 206static RAND_METHOD hwcrhk_rand =
161 { 207 {
@@ -168,26 +214,9 @@ static RAND_METHOD hwcrhk_rand =
168 hwcrhk_rand_status, 214 hwcrhk_rand_status,
169 }; 215 };
170 216
171/* Our ENGINE structure. */ 217/* Constants used when creating the ENGINE */
172static ENGINE engine_hwcrhk = 218static const char *engine_hwcrhk_id = "chil";
173 { 219static const char *engine_hwcrhk_name = "nCipher hardware engine support";
174 "chil",
175 "nCipher hardware engine support",
176 &hwcrhk_rsa,
177 NULL,
178 &hwcrhk_dh,
179 &hwcrhk_rand,
180 hwcrhk_mod_exp,
181 NULL,
182 hwcrhk_init,
183 hwcrhk_finish,
184 hwcrhk_ctrl,
185 hwcrhk_load_privkey,
186 hwcrhk_load_pubkey,
187 0, /* no flags */
188 0, 0, /* no references */
189 NULL, NULL /* unlinked */
190 };
191 220
192/* Internal stuff for HWCryptoHook */ 221/* Internal stuff for HWCryptoHook */
193 222
@@ -204,7 +233,8 @@ struct HWCryptoHook_MutexValue
204 into HWCryptoHook_PassphraseContext */ 233 into HWCryptoHook_PassphraseContext */
205struct HWCryptoHook_PassphraseContextValue 234struct HWCryptoHook_PassphraseContextValue
206 { 235 {
207 void *any; 236 UI_METHOD *ui_method;
237 void *callback_data;
208 }; 238 };
209 239
210/* hwcryptohook.h has some typedefs that turn 240/* hwcryptohook.h has some typedefs that turn
@@ -212,7 +242,10 @@ struct HWCryptoHook_PassphraseContextValue
212 into HWCryptoHook_CallerContext */ 242 into HWCryptoHook_CallerContext */
213struct HWCryptoHook_CallerContextValue 243struct HWCryptoHook_CallerContextValue
214 { 244 {
215 void *any; 245 pem_password_cb *password_callback; /* Deprecated! Only present for
246 backward compatibility! */
247 UI_METHOD *ui_method;
248 void *callback_data;
216 }; 249 };
217 250
218/* The MPI structure in HWCryptoHook is pretty compatible with OpenSSL 251/* The MPI structure in HWCryptoHook is pretty compatible with OpenSSL
@@ -222,31 +255,27 @@ struct HWCryptoHook_CallerContextValue
222#define MPI2BN(bn, mp) \ 255#define MPI2BN(bn, mp) \
223 {mp.size = bn->dmax * sizeof(BN_ULONG); mp.buf = (unsigned char *)bn->d;} 256 {mp.size = bn->dmax * sizeof(BN_ULONG); mp.buf = (unsigned char *)bn->d;}
224 257
225#if 0 /* Card and password management is not yet supported */
226/* HWCryptoHook callbacks. insert_card() and get_pass() are not yet
227 defined, because we haven't quite decided on the proper form yet.
228 log_message() just adds an entry in the error stack. I don't know
229 if that's good or bad... */
230static int insert_card(const char *prompt_info,
231 const char *wrong_info,
232 HWCryptoHook_PassphraseContext *ppctx,
233 HWCryptoHook_CallerContext *cactx);
234static int get_pass(const char *prompt_info,
235 int *len_io, char *buf,
236 HWCryptoHook_PassphraseContext *ppctx,
237 HWCryptoHook_CallerContext *cactx);
238#endif
239
240static BIO *logstream = NULL; 258static BIO *logstream = NULL;
241static pem_password_cb *password_callback = NULL;
242#if 0
243static void *password_callback_userdata = NULL;
244#endif
245static int disable_mutex_callbacks = 0; 259static int disable_mutex_callbacks = 0;
246 260
261/* One might wonder why these are needed, since one can pass down at least
262 a UI_METHOD and a pointer to callback data to the key-loading functions.
263 The thing is that the ModExp and RSAImmed functions can load keys as well,
264 if the data they get is in a special, nCipher-defined format (hint: if you
265 look at the private exponent of the RSA data as a string, you'll see this
266 string: "nCipher KM tool key id", followed by some bytes, followed a key
267 identity string, followed by more bytes. This happens when you use "embed"
268 keys instead of "hwcrhk" keys). Unfortunately, those functions do not take
269 any passphrase or caller context, and our functions can't really take any
270 callback data either. Still, the "insert_card" and "get_passphrase"
271 callbacks may be called down the line, and will need to know what user
272 interface callbacks to call, and having callback data from the application
273 may be a nice thing as well, so we need to keep track of that globally. */
274static HWCryptoHook_CallerContext password_context = { NULL, NULL, NULL };
275
247/* Stuff to pass to the HWCryptoHook library */ 276/* Stuff to pass to the HWCryptoHook library */
248static HWCryptoHook_InitInfo hwcrhk_globals = { 277static HWCryptoHook_InitInfo hwcrhk_globals = {
249 0, /* Flags */ 278 HWCryptoHook_InitFlags_SimpleForkCheck, /* Flags */
250 &logstream, /* logstream */ 279 &logstream, /* logstream */
251 sizeof(BN_ULONG), /* limbsize */ 280 sizeof(BN_ULONG), /* limbsize */
252 0, /* mslimb first: false for BNs */ 281 0, /* mslimb first: false for BNs */
@@ -280,20 +309,42 @@ static HWCryptoHook_InitInfo hwcrhk_globals = {
280 0, /* hwcrhk_cv_destroy, */ 309 0, /* hwcrhk_cv_destroy, */
281 310
282 hwcrhk_get_pass, /* pass phrase */ 311 hwcrhk_get_pass, /* pass phrase */
283 0, /* insert_card, */ /* insert a card */ 312 hwcrhk_insert_card, /* insert a card */
284 hwcrhk_log_message /* Log message */ 313 hwcrhk_log_message /* Log message */
285}; 314};
286 315
287 316
288/* Now, to our own code */ 317/* Now, to our own code */
289 318
290/* As this is only ever called once, there's no need for locking 319/* This internal function is used by ENGINE_ncipher() and possibly by the
291 * (indeed - the lock will already be held by our caller!!!) */ 320 * "dynamic" ENGINE support too */
292ENGINE *ENGINE_ncipher() 321static int bind_helper(ENGINE *e)
293 { 322 {
294 RSA_METHOD *meth1; 323#ifndef OPENSSL_NO_RSA
295 DH_METHOD *meth2; 324 const RSA_METHOD *meth1;
325#endif
326#ifndef OPENSSL_NO_DH
327 const DH_METHOD *meth2;
328#endif
329 if(!ENGINE_set_id(e, engine_hwcrhk_id) ||
330 !ENGINE_set_name(e, engine_hwcrhk_name) ||
331#ifndef OPENSSL_NO_RSA
332 !ENGINE_set_RSA(e, &hwcrhk_rsa) ||
333#endif
334#ifndef OPENSSL_NO_DH
335 !ENGINE_set_DH(e, &hwcrhk_dh) ||
336#endif
337 !ENGINE_set_RAND(e, &hwcrhk_rand) ||
338 !ENGINE_set_destroy_function(e, hwcrhk_destroy) ||
339 !ENGINE_set_init_function(e, hwcrhk_init) ||
340 !ENGINE_set_finish_function(e, hwcrhk_finish) ||
341 !ENGINE_set_ctrl_function(e, hwcrhk_ctrl) ||
342 !ENGINE_set_load_privkey_function(e, hwcrhk_load_privkey) ||
343 !ENGINE_set_load_pubkey_function(e, hwcrhk_load_pubkey) ||
344 !ENGINE_set_cmd_defns(e, hwcrhk_cmd_defns))
345 return 0;
296 346
347#ifndef OPENSSL_NO_RSA
297 /* We know that the "PKCS1_SSLeay()" functions hook properly 348 /* We know that the "PKCS1_SSLeay()" functions hook properly
298 * to the cswift-specific mod_exp and mod_exp_crt so we use 349 * to the cswift-specific mod_exp and mod_exp_crt so we use
299 * those functions. NB: We don't use ENGINE_openssl() or 350 * those functions. NB: We don't use ENGINE_openssl() or
@@ -306,12 +357,41 @@ ENGINE *ENGINE_ncipher()
306 hwcrhk_rsa.rsa_pub_dec = meth1->rsa_pub_dec; 357 hwcrhk_rsa.rsa_pub_dec = meth1->rsa_pub_dec;
307 hwcrhk_rsa.rsa_priv_enc = meth1->rsa_priv_enc; 358 hwcrhk_rsa.rsa_priv_enc = meth1->rsa_priv_enc;
308 hwcrhk_rsa.rsa_priv_dec = meth1->rsa_priv_dec; 359 hwcrhk_rsa.rsa_priv_dec = meth1->rsa_priv_dec;
360#endif
309 361
362#ifndef OPENSSL_NO_DH
310 /* Much the same for Diffie-Hellman */ 363 /* Much the same for Diffie-Hellman */
311 meth2 = DH_OpenSSL(); 364 meth2 = DH_OpenSSL();
312 hwcrhk_dh.generate_key = meth2->generate_key; 365 hwcrhk_dh.generate_key = meth2->generate_key;
313 hwcrhk_dh.compute_key = meth2->compute_key; 366 hwcrhk_dh.compute_key = meth2->compute_key;
314 return &engine_hwcrhk; 367#endif
368
369 /* Ensure the hwcrhk error handling is set up */
370 ERR_load_HWCRHK_strings();
371 return 1;
372 }
373
374static ENGINE *engine_ncipher(void)
375 {
376 ENGINE *ret = ENGINE_new();
377 if(!ret)
378 return NULL;
379 if(!bind_helper(ret))
380 {
381 ENGINE_free(ret);
382 return NULL;
383 }
384 return ret;
385 }
386
387void ENGINE_load_chil(void)
388 {
389 /* Copied from eng_[openssl|dyn].c */
390 ENGINE *toadd = engine_ncipher();
391 if(!toadd) return;
392 ENGINE_add(toadd);
393 ENGINE_free(toadd);
394 ERR_clear_error();
315 } 395 }
316 396
317/* This is a process-global DSO handle used for loading and unloading 397/* This is a process-global DSO handle used for loading and unloading
@@ -321,30 +401,41 @@ ENGINE *ENGINE_ncipher()
321 * implicitly. */ 401 * implicitly. */
322static DSO *hwcrhk_dso = NULL; 402static DSO *hwcrhk_dso = NULL;
323static HWCryptoHook_ContextHandle hwcrhk_context = 0; 403static HWCryptoHook_ContextHandle hwcrhk_context = 0;
324static int hndidx = -1; /* Index for KM handle. Not really used yet. */ 404#ifndef OPENSSL_NO_RSA
405static int hndidx_rsa = -1; /* Index for KM handle. Not really used yet. */
406#endif
325 407
326/* These are the function pointers that are (un)set when the library has 408/* These are the function pointers that are (un)set when the library has
327 * successfully (un)loaded. */ 409 * successfully (un)loaded. */
328static HWCryptoHook_Init_t *p_hwcrhk_Init = NULL; 410static HWCryptoHook_Init_t *p_hwcrhk_Init = NULL;
329static HWCryptoHook_Finish_t *p_hwcrhk_Finish = NULL; 411static HWCryptoHook_Finish_t *p_hwcrhk_Finish = NULL;
330static HWCryptoHook_ModExp_t *p_hwcrhk_ModExp = NULL; 412static HWCryptoHook_ModExp_t *p_hwcrhk_ModExp = NULL;
413#ifndef OPENSSL_NO_RSA
331static HWCryptoHook_RSA_t *p_hwcrhk_RSA = NULL; 414static HWCryptoHook_RSA_t *p_hwcrhk_RSA = NULL;
415#endif
332static HWCryptoHook_RandomBytes_t *p_hwcrhk_RandomBytes = NULL; 416static HWCryptoHook_RandomBytes_t *p_hwcrhk_RandomBytes = NULL;
417#ifndef OPENSSL_NO_RSA
333static HWCryptoHook_RSALoadKey_t *p_hwcrhk_RSALoadKey = NULL; 418static HWCryptoHook_RSALoadKey_t *p_hwcrhk_RSALoadKey = NULL;
334static HWCryptoHook_RSAGetPublicKey_t *p_hwcrhk_RSAGetPublicKey = NULL; 419static HWCryptoHook_RSAGetPublicKey_t *p_hwcrhk_RSAGetPublicKey = NULL;
335static HWCryptoHook_RSAUnloadKey_t *p_hwcrhk_RSAUnloadKey = NULL; 420static HWCryptoHook_RSAUnloadKey_t *p_hwcrhk_RSAUnloadKey = NULL;
421#endif
336static HWCryptoHook_ModExpCRT_t *p_hwcrhk_ModExpCRT = NULL; 422static HWCryptoHook_ModExpCRT_t *p_hwcrhk_ModExpCRT = NULL;
337 423
338/* Used in the DSO operations. */ 424/* Used in the DSO operations. */
339static const char *HWCRHK_LIBNAME = "nfhwcrhk"; 425static const char def_HWCRHK_LIBNAME[] = "nfhwcrhk";
426static const char *HWCRHK_LIBNAME = def_HWCRHK_LIBNAME;
340static const char *n_hwcrhk_Init = "HWCryptoHook_Init"; 427static const char *n_hwcrhk_Init = "HWCryptoHook_Init";
341static const char *n_hwcrhk_Finish = "HWCryptoHook_Finish"; 428static const char *n_hwcrhk_Finish = "HWCryptoHook_Finish";
342static const char *n_hwcrhk_ModExp = "HWCryptoHook_ModExp"; 429static const char *n_hwcrhk_ModExp = "HWCryptoHook_ModExp";
430#ifndef OPENSSL_NO_RSA
343static const char *n_hwcrhk_RSA = "HWCryptoHook_RSA"; 431static const char *n_hwcrhk_RSA = "HWCryptoHook_RSA";
432#endif
344static const char *n_hwcrhk_RandomBytes = "HWCryptoHook_RandomBytes"; 433static const char *n_hwcrhk_RandomBytes = "HWCryptoHook_RandomBytes";
434#ifndef OPENSSL_NO_RSA
345static const char *n_hwcrhk_RSALoadKey = "HWCryptoHook_RSALoadKey"; 435static const char *n_hwcrhk_RSALoadKey = "HWCryptoHook_RSALoadKey";
346static const char *n_hwcrhk_RSAGetPublicKey = "HWCryptoHook_RSAGetPublicKey"; 436static const char *n_hwcrhk_RSAGetPublicKey = "HWCryptoHook_RSAGetPublicKey";
347static const char *n_hwcrhk_RSAUnloadKey = "HWCryptoHook_RSAUnloadKey"; 437static const char *n_hwcrhk_RSAUnloadKey = "HWCryptoHook_RSAUnloadKey";
438#endif
348static const char *n_hwcrhk_ModExpCRT = "HWCryptoHook_ModExpCRT"; 439static const char *n_hwcrhk_ModExpCRT = "HWCryptoHook_ModExpCRT";
349 440
350/* HWCryptoHook library functions and mechanics - these are used by the 441/* HWCryptoHook library functions and mechanics - these are used by the
@@ -353,16 +444,17 @@ static const char *n_hwcrhk_ModExpCRT = "HWCryptoHook_ModExpCRT";
353 * called, the checking and error handling is probably down there. */ 444 * called, the checking and error handling is probably down there. */
354 445
355/* utility function to obtain a context */ 446/* utility function to obtain a context */
356static int get_context(HWCryptoHook_ContextHandle *hac) 447static int get_context(HWCryptoHook_ContextHandle *hac,
448 HWCryptoHook_CallerContext *cac)
357 { 449 {
358 char tempbuf[1024]; 450 char tempbuf[1024];
359 HWCryptoHook_ErrMsgBuf rmsg; 451 HWCryptoHook_ErrMsgBuf rmsg;
360 452
361 rmsg.buf = tempbuf; 453 rmsg.buf = tempbuf;
362 rmsg.size = 1024; 454 rmsg.size = sizeof(tempbuf);
363 455
364 *hac = p_hwcrhk_Init(&hwcrhk_globals, sizeof(hwcrhk_globals), &rmsg, 456 *hac = p_hwcrhk_Init(&hwcrhk_globals, sizeof(hwcrhk_globals), &rmsg,
365 NULL); 457 cac);
366 if (!*hac) 458 if (!*hac)
367 return 0; 459 return 0;
368 return 1; 460 return 1;
@@ -374,30 +466,38 @@ static void release_context(HWCryptoHook_ContextHandle hac)
374 p_hwcrhk_Finish(hac); 466 p_hwcrhk_Finish(hac);
375 } 467 }
376 468
469/* Destructor (complements the "ENGINE_ncipher()" constructor) */
470static int hwcrhk_destroy(ENGINE *e)
471 {
472 ERR_unload_HWCRHK_strings();
473 return 1;
474 }
475
377/* (de)initialisation functions. */ 476/* (de)initialisation functions. */
378static int hwcrhk_init() 477static int hwcrhk_init(ENGINE *e)
379 { 478 {
380 HWCryptoHook_Init_t *p1; 479 HWCryptoHook_Init_t *p1;
381 HWCryptoHook_Finish_t *p2; 480 HWCryptoHook_Finish_t *p2;
382 HWCryptoHook_ModExp_t *p3; 481 HWCryptoHook_ModExp_t *p3;
482#ifndef OPENSSL_NO_RSA
383 HWCryptoHook_RSA_t *p4; 483 HWCryptoHook_RSA_t *p4;
384 HWCryptoHook_RSALoadKey_t *p5; 484 HWCryptoHook_RSALoadKey_t *p5;
385 HWCryptoHook_RSAGetPublicKey_t *p6; 485 HWCryptoHook_RSAGetPublicKey_t *p6;
386 HWCryptoHook_RSAUnloadKey_t *p7; 486 HWCryptoHook_RSAUnloadKey_t *p7;
487#endif
387 HWCryptoHook_RandomBytes_t *p8; 488 HWCryptoHook_RandomBytes_t *p8;
388 HWCryptoHook_ModExpCRT_t *p9; 489 HWCryptoHook_ModExpCRT_t *p9;
389 490
390 if(hwcrhk_dso != NULL) 491 if(hwcrhk_dso != NULL)
391 { 492 {
392 ENGINEerr(ENGINE_F_HWCRHK_INIT,ENGINE_R_ALREADY_LOADED); 493 HWCRHKerr(HWCRHK_F_HWCRHK_INIT,HWCRHK_R_ALREADY_LOADED);
393 goto err; 494 goto err;
394 } 495 }
395 /* Attempt to load libnfhwcrhk.so/nfhwcrhk.dll/whatever. */ 496 /* Attempt to load libnfhwcrhk.so/nfhwcrhk.dll/whatever. */
396 hwcrhk_dso = DSO_load(NULL, HWCRHK_LIBNAME, NULL, 497 hwcrhk_dso = DSO_load(NULL, HWCRHK_LIBNAME, NULL, 0);
397 DSO_FLAG_NAME_TRANSLATION);
398 if(hwcrhk_dso == NULL) 498 if(hwcrhk_dso == NULL)
399 { 499 {
400 ENGINEerr(ENGINE_F_HWCRHK_INIT,ENGINE_R_DSO_FAILURE); 500 HWCRHKerr(HWCRHK_F_HWCRHK_INIT,HWCRHK_R_DSO_FAILURE);
401 goto err; 501 goto err;
402 } 502 }
403 if(!(p1 = (HWCryptoHook_Init_t *) 503 if(!(p1 = (HWCryptoHook_Init_t *)
@@ -406,6 +506,7 @@ static int hwcrhk_init()
406 DSO_bind_func(hwcrhk_dso, n_hwcrhk_Finish)) || 506 DSO_bind_func(hwcrhk_dso, n_hwcrhk_Finish)) ||
407 !(p3 = (HWCryptoHook_ModExp_t *) 507 !(p3 = (HWCryptoHook_ModExp_t *)
408 DSO_bind_func(hwcrhk_dso, n_hwcrhk_ModExp)) || 508 DSO_bind_func(hwcrhk_dso, n_hwcrhk_ModExp)) ||
509#ifndef OPENSSL_NO_RSA
409 !(p4 = (HWCryptoHook_RSA_t *) 510 !(p4 = (HWCryptoHook_RSA_t *)
410 DSO_bind_func(hwcrhk_dso, n_hwcrhk_RSA)) || 511 DSO_bind_func(hwcrhk_dso, n_hwcrhk_RSA)) ||
411 !(p5 = (HWCryptoHook_RSALoadKey_t *) 512 !(p5 = (HWCryptoHook_RSALoadKey_t *)
@@ -414,22 +515,25 @@ static int hwcrhk_init()
414 DSO_bind_func(hwcrhk_dso, n_hwcrhk_RSAGetPublicKey)) || 515 DSO_bind_func(hwcrhk_dso, n_hwcrhk_RSAGetPublicKey)) ||
415 !(p7 = (HWCryptoHook_RSAUnloadKey_t *) 516 !(p7 = (HWCryptoHook_RSAUnloadKey_t *)
416 DSO_bind_func(hwcrhk_dso, n_hwcrhk_RSAUnloadKey)) || 517 DSO_bind_func(hwcrhk_dso, n_hwcrhk_RSAUnloadKey)) ||
518#endif
417 !(p8 = (HWCryptoHook_RandomBytes_t *) 519 !(p8 = (HWCryptoHook_RandomBytes_t *)
418 DSO_bind_func(hwcrhk_dso, n_hwcrhk_RandomBytes)) || 520 DSO_bind_func(hwcrhk_dso, n_hwcrhk_RandomBytes)) ||
419 !(p9 = (HWCryptoHook_ModExpCRT_t *) 521 !(p9 = (HWCryptoHook_ModExpCRT_t *)
420 DSO_bind_func(hwcrhk_dso, n_hwcrhk_ModExpCRT))) 522 DSO_bind_func(hwcrhk_dso, n_hwcrhk_ModExpCRT)))
421 { 523 {
422 ENGINEerr(ENGINE_F_HWCRHK_INIT,ENGINE_R_DSO_FAILURE); 524 HWCRHKerr(HWCRHK_F_HWCRHK_INIT,HWCRHK_R_DSO_FAILURE);
423 goto err; 525 goto err;
424 } 526 }
425 /* Copy the pointers */ 527 /* Copy the pointers */
426 p_hwcrhk_Init = p1; 528 p_hwcrhk_Init = p1;
427 p_hwcrhk_Finish = p2; 529 p_hwcrhk_Finish = p2;
428 p_hwcrhk_ModExp = p3; 530 p_hwcrhk_ModExp = p3;
531#ifndef OPENSSL_NO_RSA
429 p_hwcrhk_RSA = p4; 532 p_hwcrhk_RSA = p4;
430 p_hwcrhk_RSALoadKey = p5; 533 p_hwcrhk_RSALoadKey = p5;
431 p_hwcrhk_RSAGetPublicKey = p6; 534 p_hwcrhk_RSAGetPublicKey = p6;
432 p_hwcrhk_RSAUnloadKey = p7; 535 p_hwcrhk_RSAUnloadKey = p7;
536#endif
433 p_hwcrhk_RandomBytes = p8; 537 p_hwcrhk_RandomBytes = p8;
434 p_hwcrhk_ModExpCRT = p9; 538 p_hwcrhk_ModExpCRT = p9;
435 539
@@ -448,16 +552,18 @@ static int hwcrhk_init()
448 552
449 /* Try and get a context - if not, we may have a DSO but no 553 /* Try and get a context - if not, we may have a DSO but no
450 * accelerator! */ 554 * accelerator! */
451 if(!get_context(&hwcrhk_context)) 555 if(!get_context(&hwcrhk_context, &password_context))
452 { 556 {
453 ENGINEerr(ENGINE_F_HWCRHK_INIT,ENGINE_R_UNIT_FAILURE); 557 HWCRHKerr(HWCRHK_F_HWCRHK_INIT,HWCRHK_R_UNIT_FAILURE);
454 goto err; 558 goto err;
455 } 559 }
456 /* Everything's fine. */ 560 /* Everything's fine. */
457 if (hndidx == -1) 561#ifndef OPENSSL_NO_RSA
458 hndidx = RSA_get_ex_new_index(0, 562 if (hndidx_rsa == -1)
563 hndidx_rsa = RSA_get_ex_new_index(0,
459 "nFast HWCryptoHook RSA key handle", 564 "nFast HWCryptoHook RSA key handle",
460 NULL, NULL, hwcrhk_ex_free); 565 NULL, NULL, hwcrhk_ex_free);
566#endif
461 return 1; 567 return 1;
462err: 568err:
463 if(hwcrhk_dso) 569 if(hwcrhk_dso)
@@ -466,28 +572,30 @@ err:
466 p_hwcrhk_Init = NULL; 572 p_hwcrhk_Init = NULL;
467 p_hwcrhk_Finish = NULL; 573 p_hwcrhk_Finish = NULL;
468 p_hwcrhk_ModExp = NULL; 574 p_hwcrhk_ModExp = NULL;
575#ifndef OPENSSL_NO_RSA
469 p_hwcrhk_RSA = NULL; 576 p_hwcrhk_RSA = NULL;
470 p_hwcrhk_RSALoadKey = NULL; 577 p_hwcrhk_RSALoadKey = NULL;
471 p_hwcrhk_RSAGetPublicKey = NULL; 578 p_hwcrhk_RSAGetPublicKey = NULL;
472 p_hwcrhk_RSAUnloadKey = NULL; 579 p_hwcrhk_RSAUnloadKey = NULL;
580#endif
473 p_hwcrhk_ModExpCRT = NULL; 581 p_hwcrhk_ModExpCRT = NULL;
474 p_hwcrhk_RandomBytes = NULL; 582 p_hwcrhk_RandomBytes = NULL;
475 return 0; 583 return 0;
476 } 584 }
477 585
478static int hwcrhk_finish() 586static int hwcrhk_finish(ENGINE *e)
479 { 587 {
480 int to_return = 1; 588 int to_return = 1;
481 if(hwcrhk_dso == NULL) 589 if(hwcrhk_dso == NULL)
482 { 590 {
483 ENGINEerr(ENGINE_F_HWCRHK_FINISH,ENGINE_R_NOT_LOADED); 591 HWCRHKerr(HWCRHK_F_HWCRHK_FINISH,HWCRHK_R_NOT_LOADED);
484 to_return = 0; 592 to_return = 0;
485 goto err; 593 goto err;
486 } 594 }
487 release_context(hwcrhk_context); 595 release_context(hwcrhk_context);
488 if(!DSO_free(hwcrhk_dso)) 596 if(!DSO_free(hwcrhk_dso))
489 { 597 {
490 ENGINEerr(ENGINE_F_HWCRHK_FINISH,ENGINE_R_DSO_FAILURE); 598 HWCRHKerr(HWCRHK_F_HWCRHK_FINISH,HWCRHK_R_DSO_FAILURE);
491 to_return = 0; 599 to_return = 0;
492 goto err; 600 goto err;
493 } 601 }
@@ -498,21 +606,36 @@ static int hwcrhk_finish()
498 p_hwcrhk_Init = NULL; 606 p_hwcrhk_Init = NULL;
499 p_hwcrhk_Finish = NULL; 607 p_hwcrhk_Finish = NULL;
500 p_hwcrhk_ModExp = NULL; 608 p_hwcrhk_ModExp = NULL;
609#ifndef OPENSSL_NO_RSA
501 p_hwcrhk_RSA = NULL; 610 p_hwcrhk_RSA = NULL;
502 p_hwcrhk_RSALoadKey = NULL; 611 p_hwcrhk_RSALoadKey = NULL;
503 p_hwcrhk_RSAGetPublicKey = NULL; 612 p_hwcrhk_RSAGetPublicKey = NULL;
504 p_hwcrhk_RSAUnloadKey = NULL; 613 p_hwcrhk_RSAUnloadKey = NULL;
614#endif
505 p_hwcrhk_ModExpCRT = NULL; 615 p_hwcrhk_ModExpCRT = NULL;
506 p_hwcrhk_RandomBytes = NULL; 616 p_hwcrhk_RandomBytes = NULL;
507 return to_return; 617 return to_return;
508 } 618 }
509 619
510static int hwcrhk_ctrl(int cmd, long i, void *p, void (*f)()) 620static int hwcrhk_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)())
511 { 621 {
512 int to_return = 1; 622 int to_return = 1;
513 623
514 switch(cmd) 624 switch(cmd)
515 { 625 {
626 case HWCRHK_CMD_SO_PATH:
627 if(hwcrhk_dso)
628 {
629 HWCRHKerr(HWCRHK_F_HWCRHK_CTRL,HWCRHK_R_ALREADY_LOADED);
630 return 0;
631 }
632 if(p == NULL)
633 {
634 HWCRHKerr(HWCRHK_F_HWCRHK_CTRL,ERR_R_PASSED_NULL_PARAMETER);
635 return 0;
636 }
637 HWCRHK_LIBNAME = (const char *)p;
638 return 1;
516 case ENGINE_CTRL_SET_LOGSTREAM: 639 case ENGINE_CTRL_SET_LOGSTREAM:
517 { 640 {
518 BIO *bio = (BIO *)p; 641 BIO *bio = (BIO *)p;
@@ -526,18 +649,31 @@ static int hwcrhk_ctrl(int cmd, long i, void *p, void (*f)())
526 if (CRYPTO_add(&bio->references,1,CRYPTO_LOCK_BIO) > 1) 649 if (CRYPTO_add(&bio->references,1,CRYPTO_LOCK_BIO) > 1)
527 logstream = bio; 650 logstream = bio;
528 else 651 else
529 ENGINEerr(ENGINE_F_HWCRHK_CTRL,ENGINE_R_BIO_WAS_FREED); 652 HWCRHKerr(HWCRHK_F_HWCRHK_CTRL,HWCRHK_R_BIO_WAS_FREED);
530 } 653 }
531 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); 654 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
532 break; 655 break;
533 case ENGINE_CTRL_SET_PASSWORD_CALLBACK: 656 case ENGINE_CTRL_SET_PASSWORD_CALLBACK:
534 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); 657 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE);
535 password_callback = (pem_password_cb *)f; 658 password_context.password_callback = (pem_password_cb *)f;
659 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
660 break;
661 case ENGINE_CTRL_SET_USER_INTERFACE:
662 case HWCRHK_CMD_SET_USER_INTERFACE:
663 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE);
664 password_context.ui_method = (UI_METHOD *)p;
665 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
666 break;
667 case ENGINE_CTRL_SET_CALLBACK_DATA:
668 case HWCRHK_CMD_SET_CALLBACK_DATA:
669 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE);
670 password_context.callback_data = p;
536 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); 671 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
537 break; 672 break;
538 /* this enables or disables the "SimpleForkCheck" flag used in the 673 /* this enables or disables the "SimpleForkCheck" flag used in the
539 * initialisation structure. */ 674 * initialisation structure. */
540 case ENGINE_CTRL_CHIL_SET_FORKCHECK: 675 case ENGINE_CTRL_CHIL_SET_FORKCHECK:
676 case HWCRHK_CMD_FORK_CHECK:
541 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); 677 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE);
542 if(i) 678 if(i)
543 hwcrhk_globals.flags |= 679 hwcrhk_globals.flags |=
@@ -557,11 +693,16 @@ static int hwcrhk_ctrl(int cmd, long i, void *p, void (*f)())
557 disable_mutex_callbacks = 1; 693 disable_mutex_callbacks = 1;
558 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); 694 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
559 break; 695 break;
696 case HWCRHK_CMD_THREAD_LOCKING:
697 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE);
698 disable_mutex_callbacks = ((i == 0) ? 0 : 1);
699 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
700 break;
560 701
561 /* The command isn't understood by this engine */ 702 /* The command isn't understood by this engine */
562 default: 703 default:
563 ENGINEerr(ENGINE_F_HWCRHK_CTRL, 704 HWCRHKerr(HWCRHK_F_HWCRHK_CTRL,
564 ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED); 705 HWCRHK_R_CTRL_COMMAND_NOT_IMPLEMENTED);
565 to_return = 0; 706 to_return = 0;
566 break; 707 break;
567 } 708 }
@@ -569,44 +710,62 @@ static int hwcrhk_ctrl(int cmd, long i, void *p, void (*f)())
569 return to_return; 710 return to_return;
570 } 711 }
571 712
572static EVP_PKEY *hwcrhk_load_privkey(const char *key_id, 713static EVP_PKEY *hwcrhk_load_privkey(ENGINE *eng, const char *key_id,
573 const char *passphrase) 714 UI_METHOD *ui_method, void *callback_data)
574 { 715 {
716#ifndef OPENSSL_NO_RSA
575 RSA *rtmp = NULL; 717 RSA *rtmp = NULL;
718#endif
576 EVP_PKEY *res = NULL; 719 EVP_PKEY *res = NULL;
720#ifndef OPENSSL_NO_RSA
577 HWCryptoHook_MPI e, n; 721 HWCryptoHook_MPI e, n;
578 HWCryptoHook_RSAKeyHandle *hptr; 722 HWCryptoHook_RSAKeyHandle *hptr;
723#endif
724#if !defined(OPENSSL_NO_RSA)
725 char tempbuf[1024];
579 HWCryptoHook_ErrMsgBuf rmsg; 726 HWCryptoHook_ErrMsgBuf rmsg;
727#endif
728 HWCryptoHook_PassphraseContext ppctx;
729
730#if !defined(OPENSSL_NO_RSA)
731 rmsg.buf = tempbuf;
732 rmsg.size = sizeof(tempbuf);
733#endif
580 734
581 if(!hwcrhk_context) 735 if(!hwcrhk_context)
582 { 736 {
583 ENGINEerr(ENGINE_F_HWCRHK_LOAD_PRIVKEY, 737 HWCRHKerr(HWCRHK_F_HWCRHK_LOAD_PRIVKEY,
584 ENGINE_R_NOT_INITIALISED); 738 HWCRHK_R_NOT_INITIALISED);
585 goto err; 739 goto err;
586 } 740 }
741#ifndef OPENSSL_NO_RSA
587 hptr = OPENSSL_malloc(sizeof(HWCryptoHook_RSAKeyHandle)); 742 hptr = OPENSSL_malloc(sizeof(HWCryptoHook_RSAKeyHandle));
588 if (!hptr) 743 if (!hptr)
589 { 744 {
590 ENGINEerr(ENGINE_F_HWCRHK_LOAD_PRIVKEY, 745 HWCRHKerr(HWCRHK_F_HWCRHK_LOAD_PRIVKEY,
591 ERR_R_MALLOC_FAILURE); 746 ERR_R_MALLOC_FAILURE);
592 goto err; 747 goto err;
593 } 748 }
749 ppctx.ui_method = ui_method;
750 ppctx.callback_data = callback_data;
594 if (p_hwcrhk_RSALoadKey(hwcrhk_context, key_id, hptr, 751 if (p_hwcrhk_RSALoadKey(hwcrhk_context, key_id, hptr,
595 &rmsg, NULL)) 752 &rmsg, &ppctx))
596 { 753 {
597 ENGINEerr(ENGINE_F_HWCRHK_LOAD_PRIVKEY, 754 HWCRHKerr(HWCRHK_F_HWCRHK_LOAD_PRIVKEY,
598 ENGINE_R_CHIL_ERROR); 755 HWCRHK_R_CHIL_ERROR);
599 ERR_add_error_data(1,rmsg.buf); 756 ERR_add_error_data(1,rmsg.buf);
600 goto err; 757 goto err;
601 } 758 }
602 if (!*hptr) 759 if (!*hptr)
603 { 760 {
604 ENGINEerr(ENGINE_F_HWCRHK_LOAD_PRIVKEY, 761 HWCRHKerr(HWCRHK_F_HWCRHK_LOAD_PRIVKEY,
605 ENGINE_R_NO_KEY); 762 HWCRHK_R_NO_KEY);
606 goto err; 763 goto err;
607 } 764 }
608 rtmp = RSA_new_method(&engine_hwcrhk); 765#endif
609 RSA_set_ex_data(rtmp, hndidx, (char *)hptr); 766#ifndef OPENSSL_NO_RSA
767 rtmp = RSA_new_method(eng);
768 RSA_set_ex_data(rtmp, hndidx_rsa, (char *)hptr);
610 rtmp->e = BN_new(); 769 rtmp->e = BN_new();
611 rtmp->n = BN_new(); 770 rtmp->n = BN_new();
612 rtmp->flags |= RSA_FLAG_EXT_PKEY; 771 rtmp->flags |= RSA_FLAG_EXT_PKEY;
@@ -615,11 +774,11 @@ static EVP_PKEY *hwcrhk_load_privkey(const char *key_id,
615 if (p_hwcrhk_RSAGetPublicKey(*hptr, &n, &e, &rmsg) 774 if (p_hwcrhk_RSAGetPublicKey(*hptr, &n, &e, &rmsg)
616 != HWCRYPTOHOOK_ERROR_MPISIZE) 775 != HWCRYPTOHOOK_ERROR_MPISIZE)
617 { 776 {
618 ENGINEerr(ENGINE_F_HWCRHK_LOAD_PUBKEY,ENGINE_R_CHIL_ERROR); 777 HWCRHKerr(HWCRHK_F_HWCRHK_LOAD_PUBKEY,HWCRHK_R_CHIL_ERROR);
619 ERR_add_error_data(1,rmsg.buf); 778 ERR_add_error_data(1,rmsg.buf);
620 goto err; 779 goto err;
621 } 780 }
622 781
623 bn_expand2(rtmp->e, e.size/sizeof(BN_ULONG)); 782 bn_expand2(rtmp->e, e.size/sizeof(BN_ULONG));
624 bn_expand2(rtmp->n, n.size/sizeof(BN_ULONG)); 783 bn_expand2(rtmp->n, n.size/sizeof(BN_ULONG));
625 MPI2BN(rtmp->e, e); 784 MPI2BN(rtmp->e, e);
@@ -627,8 +786,8 @@ static EVP_PKEY *hwcrhk_load_privkey(const char *key_id,
627 786
628 if (p_hwcrhk_RSAGetPublicKey(*hptr, &n, &e, &rmsg)) 787 if (p_hwcrhk_RSAGetPublicKey(*hptr, &n, &e, &rmsg))
629 { 788 {
630 ENGINEerr(ENGINE_F_HWCRHK_LOAD_PUBKEY, 789 HWCRHKerr(HWCRHK_F_HWCRHK_LOAD_PUBKEY,
631 ENGINE_R_CHIL_ERROR); 790 HWCRHK_R_CHIL_ERROR);
632 ERR_add_error_data(1,rmsg.buf); 791 ERR_add_error_data(1,rmsg.buf);
633 goto err; 792 goto err;
634 } 793 }
@@ -639,23 +798,37 @@ static EVP_PKEY *hwcrhk_load_privkey(const char *key_id,
639 798
640 res = EVP_PKEY_new(); 799 res = EVP_PKEY_new();
641 EVP_PKEY_assign_RSA(res, rtmp); 800 EVP_PKEY_assign_RSA(res, rtmp);
801#endif
802
803 if (!res)
804 HWCRHKerr(HWCRHK_F_HWCRHK_LOAD_PUBKEY,
805 HWCRHK_R_PRIVATE_KEY_ALGORITHMS_DISABLED);
642 806
643 return res; 807 return res;
644 err: 808 err:
645 if (res) 809 if (res)
646 EVP_PKEY_free(res); 810 EVP_PKEY_free(res);
811#ifndef OPENSSL_NO_RSA
647 if (rtmp) 812 if (rtmp)
648 RSA_free(rtmp); 813 RSA_free(rtmp);
814#endif
649 return NULL; 815 return NULL;
650 } 816 }
651 817
652static EVP_PKEY *hwcrhk_load_pubkey(const char *key_id, const char *passphrase) 818static EVP_PKEY *hwcrhk_load_pubkey(ENGINE *eng, const char *key_id,
819 UI_METHOD *ui_method, void *callback_data)
653 { 820 {
654 EVP_PKEY *res = hwcrhk_load_privkey(key_id, passphrase); 821 EVP_PKEY *res = NULL;
822
823#ifndef OPENSSL_NO_RSA
824 res = hwcrhk_load_privkey(eng, key_id,
825 ui_method, callback_data);
826#endif
655 827
656 if (res) 828 if (res)
657 switch(res->type) 829 switch(res->type)
658 { 830 {
831#ifndef OPENSSL_NO_RSA
659 case EVP_PKEY_RSA: 832 case EVP_PKEY_RSA:
660 { 833 {
661 RSA *rsa = NULL; 834 RSA *rsa = NULL;
@@ -665,12 +838,16 @@ static EVP_PKEY *hwcrhk_load_pubkey(const char *key_id, const char *passphrase)
665 res->pkey.rsa = RSA_new(); 838 res->pkey.rsa = RSA_new();
666 res->pkey.rsa->n = rsa->n; 839 res->pkey.rsa->n = rsa->n;
667 res->pkey.rsa->e = rsa->e; 840 res->pkey.rsa->e = rsa->e;
841 rsa->n = NULL;
842 rsa->e = NULL;
668 CRYPTO_w_unlock(CRYPTO_LOCK_EVP_PKEY); 843 CRYPTO_w_unlock(CRYPTO_LOCK_EVP_PKEY);
669 RSA_free(rsa); 844 RSA_free(rsa);
670 } 845 }
846 break;
847#endif
671 default: 848 default:
672 ENGINEerr(ENGINE_F_HWCRHK_LOAD_PUBKEY, 849 HWCRHKerr(HWCRHK_F_HWCRHK_LOAD_PUBKEY,
673 ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED); 850 HWCRHK_R_CTRL_COMMAND_NOT_IMPLEMENTED);
674 goto err; 851 goto err;
675 } 852 }
676 853
@@ -682,7 +859,7 @@ static EVP_PKEY *hwcrhk_load_pubkey(const char *key_id, const char *passphrase)
682 } 859 }
683 860
684/* A little mod_exp */ 861/* A little mod_exp */
685static int hwcrhk_mod_exp(BIGNUM *r, BIGNUM *a, const BIGNUM *p, 862static int hwcrhk_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
686 const BIGNUM *m, BN_CTX *ctx) 863 const BIGNUM *m, BN_CTX *ctx)
687 { 864 {
688 char tempbuf[1024]; 865 char tempbuf[1024];
@@ -695,11 +872,11 @@ static int hwcrhk_mod_exp(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
695 872
696 to_return = 0; /* expect failure */ 873 to_return = 0; /* expect failure */
697 rmsg.buf = tempbuf; 874 rmsg.buf = tempbuf;
698 rmsg.size = 1024; 875 rmsg.size = sizeof(tempbuf);
699 876
700 if(!hwcrhk_context) 877 if(!hwcrhk_context)
701 { 878 {
702 ENGINEerr(ENGINE_F_HWCRHK_MOD_EXP,ENGINE_R_NOT_INITIALISED); 879 HWCRHKerr(HWCRHK_F_HWCRHK_MOD_EXP,HWCRHK_R_NOT_INITIALISED);
703 goto err; 880 goto err;
704 } 881 }
705 /* Prepare the params */ 882 /* Prepare the params */
@@ -723,11 +900,11 @@ static int hwcrhk_mod_exp(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
723 might be a good thing. */ 900 might be a good thing. */
724 if(ret == HWCRYPTOHOOK_ERROR_FALLBACK) 901 if(ret == HWCRYPTOHOOK_ERROR_FALLBACK)
725 { 902 {
726 ENGINEerr(ENGINE_F_HWCRHK_MOD_EXP,ENGINE_R_REQUEST_FALLBACK); 903 HWCRHKerr(HWCRHK_F_HWCRHK_MOD_EXP,HWCRHK_R_REQUEST_FALLBACK);
727 } 904 }
728 else 905 else
729 { 906 {
730 ENGINEerr(ENGINE_F_HWCRHK_MOD_EXP,ENGINE_R_REQUEST_FAILED); 907 HWCRHKerr(HWCRHK_F_HWCRHK_MOD_EXP,HWCRHK_R_REQUEST_FAILED);
731 } 908 }
732 ERR_add_error_data(1,rmsg.buf); 909 ERR_add_error_data(1,rmsg.buf);
733 goto err; 910 goto err;
@@ -737,38 +914,39 @@ static int hwcrhk_mod_exp(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
737err: 914err:
738 return to_return; 915 return to_return;
739 } 916 }
740 917
741static int hwcrhk_rsa_mod_exp(BIGNUM *r, BIGNUM *I, RSA *rsa) 918#ifndef OPENSSL_NO_RSA
919static int hwcrhk_rsa_mod_exp(BIGNUM *r, const BIGNUM *I, RSA *rsa)
742 { 920 {
743 char tempbuf[1024]; 921 char tempbuf[1024];
744 HWCryptoHook_ErrMsgBuf rmsg; 922 HWCryptoHook_ErrMsgBuf rmsg;
745 HWCryptoHook_RSAKeyHandle *hptr; 923 HWCryptoHook_RSAKeyHandle *hptr;
746 int to_return = 0, ret; 924 int to_return = 0, ret;
747 925
926 rmsg.buf = tempbuf;
927 rmsg.size = sizeof(tempbuf);
928
748 if(!hwcrhk_context) 929 if(!hwcrhk_context)
749 { 930 {
750 ENGINEerr(ENGINE_F_HWCRHK_MOD_EXP,ENGINE_R_NOT_INITIALISED); 931 HWCRHKerr(HWCRHK_F_HWCRHK_MOD_EXP,HWCRHK_R_NOT_INITIALISED);
751 goto err; 932 goto err;
752 } 933 }
753 934
754 /* This provides support for nForce keys. Since that's opaque data 935 /* This provides support for nForce keys. Since that's opaque data
755 all we do is provide a handle to the proper key and let HWCryptoHook 936 all we do is provide a handle to the proper key and let HWCryptoHook
756 take care of the rest. */ 937 take care of the rest. */
757 if ((hptr = (HWCryptoHook_RSAKeyHandle *) RSA_get_ex_data(rsa, hndidx)) 938 if ((hptr = (HWCryptoHook_RSAKeyHandle *) RSA_get_ex_data(rsa, hndidx_rsa))
758 != NULL) 939 != NULL)
759 { 940 {
760 HWCryptoHook_MPI m_a, m_r; 941 HWCryptoHook_MPI m_a, m_r;
761 942
762 if(!rsa->n) 943 if(!rsa->n)
763 { 944 {
764 ENGINEerr(ENGINE_F_HWCRHK_RSA_MOD_EXP, 945 HWCRHKerr(HWCRHK_F_HWCRHK_RSA_MOD_EXP,
765 ENGINE_R_MISSING_KEY_COMPONENTS); 946 HWCRHK_R_MISSING_KEY_COMPONENTS);
766 goto err; 947 goto err;
767 } 948 }
768 949
769 rmsg.buf = tempbuf;
770 rmsg.size = 1024;
771
772 /* Prepare the params */ 950 /* Prepare the params */
773 bn_expand2(r, rsa->n->top); /* Check for error !! */ 951 bn_expand2(r, rsa->n->top); /* Check for error !! */
774 BN2MPI(m_a, I); 952 BN2MPI(m_a, I);
@@ -788,11 +966,13 @@ static int hwcrhk_rsa_mod_exp(BIGNUM *r, BIGNUM *I, RSA *rsa)
788 might be a good thing. */ 966 might be a good thing. */
789 if(ret == HWCRYPTOHOOK_ERROR_FALLBACK) 967 if(ret == HWCRYPTOHOOK_ERROR_FALLBACK)
790 { 968 {
791 ENGINEerr(ENGINE_F_HWCRHK_RSA_MOD_EXP,ENGINE_R_REQUEST_FALLBACK); 969 HWCRHKerr(HWCRHK_F_HWCRHK_RSA_MOD_EXP,
970 HWCRHK_R_REQUEST_FALLBACK);
792 } 971 }
793 else 972 else
794 { 973 {
795 ENGINEerr(ENGINE_F_HWCRHK_RSA_MOD_EXP,ENGINE_R_REQUEST_FAILED); 974 HWCRHKerr(HWCRHK_F_HWCRHK_RSA_MOD_EXP,
975 HWCRHK_R_REQUEST_FAILED);
796 } 976 }
797 ERR_add_error_data(1,rmsg.buf); 977 ERR_add_error_data(1,rmsg.buf);
798 goto err; 978 goto err;
@@ -804,14 +984,11 @@ static int hwcrhk_rsa_mod_exp(BIGNUM *r, BIGNUM *I, RSA *rsa)
804 984
805 if(!rsa->p || !rsa->q || !rsa->dmp1 || !rsa->dmq1 || !rsa->iqmp) 985 if(!rsa->p || !rsa->q || !rsa->dmp1 || !rsa->dmq1 || !rsa->iqmp)
806 { 986 {
807 ENGINEerr(ENGINE_F_HWCRHK_RSA_MOD_EXP, 987 HWCRHKerr(HWCRHK_F_HWCRHK_RSA_MOD_EXP,
808 ENGINE_R_MISSING_KEY_COMPONENTS); 988 HWCRHK_R_MISSING_KEY_COMPONENTS);
809 goto err; 989 goto err;
810 } 990 }
811 991
812 rmsg.buf = tempbuf;
813 rmsg.size = 1024;
814
815 /* Prepare the params */ 992 /* Prepare the params */
816 bn_expand2(r, rsa->n->top); /* Check for error !! */ 993 bn_expand2(r, rsa->n->top); /* Check for error !! */
817 BN2MPI(m_a, I); 994 BN2MPI(m_a, I);
@@ -837,11 +1014,13 @@ static int hwcrhk_rsa_mod_exp(BIGNUM *r, BIGNUM *I, RSA *rsa)
837 might be a good thing. */ 1014 might be a good thing. */
838 if(ret == HWCRYPTOHOOK_ERROR_FALLBACK) 1015 if(ret == HWCRYPTOHOOK_ERROR_FALLBACK)
839 { 1016 {
840 ENGINEerr(ENGINE_F_HWCRHK_RSA_MOD_EXP,ENGINE_R_REQUEST_FALLBACK); 1017 HWCRHKerr(HWCRHK_F_HWCRHK_RSA_MOD_EXP,
1018 HWCRHK_R_REQUEST_FALLBACK);
841 } 1019 }
842 else 1020 else
843 { 1021 {
844 ENGINEerr(ENGINE_F_HWCRHK_RSA_MOD_EXP,ENGINE_R_REQUEST_FAILED); 1022 HWCRHKerr(HWCRHK_F_HWCRHK_RSA_MOD_EXP,
1023 HWCRHK_R_REQUEST_FAILED);
845 } 1024 }
846 ERR_add_error_data(1,rmsg.buf); 1025 ERR_add_error_data(1,rmsg.buf);
847 goto err; 1026 goto err;
@@ -852,16 +1031,18 @@ static int hwcrhk_rsa_mod_exp(BIGNUM *r, BIGNUM *I, RSA *rsa)
852err: 1031err:
853 return to_return; 1032 return to_return;
854 } 1033 }
1034#endif
855 1035
856/* This function is aliased to mod_exp (with the mont stuff dropped). */ 1036/* This function is aliased to mod_exp (with the mont stuff dropped). */
857static int hwcrhk_mod_exp_mont(BIGNUM *r, BIGNUM *a, const BIGNUM *p, 1037static int hwcrhk_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
858 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx) 1038 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx)
859 { 1039 {
860 return hwcrhk_mod_exp(r, a, p, m, ctx); 1040 return hwcrhk_mod_exp(r, a, p, m, ctx);
861 } 1041 }
862 1042
863/* This function is aliased to mod_exp (with the dh and mont dropped). */ 1043/* This function is aliased to mod_exp (with the dh and mont dropped). */
864static int hwcrhk_mod_exp_dh(DH *dh, BIGNUM *r, BIGNUM *a, const BIGNUM *p, 1044static int hwcrhk_mod_exp_dh(const DH *dh, BIGNUM *r,
1045 const BIGNUM *a, const BIGNUM *p,
865 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx) 1046 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx)
866 { 1047 {
867 return hwcrhk_mod_exp(r, a, p, m, ctx); 1048 return hwcrhk_mod_exp(r, a, p, m, ctx);
@@ -876,11 +1057,11 @@ static int hwcrhk_rand_bytes(unsigned char *buf, int num)
876 int ret; 1057 int ret;
877 1058
878 rmsg.buf = tempbuf; 1059 rmsg.buf = tempbuf;
879 rmsg.size = 1024; 1060 rmsg.size = sizeof(tempbuf);
880 1061
881 if(!hwcrhk_context) 1062 if(!hwcrhk_context)
882 { 1063 {
883 ENGINEerr(ENGINE_F_HWCRHK_RAND_BYTES,ENGINE_R_NOT_INITIALISED); 1064 HWCRHKerr(HWCRHK_F_HWCRHK_RAND_BYTES,HWCRHK_R_NOT_INITIALISED);
884 goto err; 1065 goto err;
885 } 1066 }
886 1067
@@ -892,11 +1073,13 @@ static int hwcrhk_rand_bytes(unsigned char *buf, int num)
892 might be a good thing. */ 1073 might be a good thing. */
893 if(ret == HWCRYPTOHOOK_ERROR_FALLBACK) 1074 if(ret == HWCRYPTOHOOK_ERROR_FALLBACK)
894 { 1075 {
895 ENGINEerr(ENGINE_F_HWCRHK_RAND_BYTES,ENGINE_R_REQUEST_FALLBACK); 1076 HWCRHKerr(HWCRHK_F_HWCRHK_RAND_BYTES,
1077 HWCRHK_R_REQUEST_FALLBACK);
896 } 1078 }
897 else 1079 else
898 { 1080 {
899 ENGINEerr(ENGINE_F_HWCRHK_RAND_BYTES,ENGINE_R_REQUEST_FAILED); 1081 HWCRHKerr(HWCRHK_F_HWCRHK_RAND_BYTES,
1082 HWCRHK_R_REQUEST_FAILED);
900 } 1083 }
901 ERR_add_error_data(1,rmsg.buf); 1084 ERR_add_error_data(1,rmsg.buf);
902 goto err; 1085 goto err;
@@ -914,20 +1097,28 @@ static int hwcrhk_rand_status(void)
914/* This cleans up an RSA KM key, called when ex_data is freed */ 1097/* This cleans up an RSA KM key, called when ex_data is freed */
915 1098
916static void hwcrhk_ex_free(void *obj, void *item, CRYPTO_EX_DATA *ad, 1099static void hwcrhk_ex_free(void *obj, void *item, CRYPTO_EX_DATA *ad,
917 int index,long argl, void *argp) 1100 int ind,long argl, void *argp)
918{ 1101{
919 char tempbuf[1024]; 1102 char tempbuf[1024];
920 HWCryptoHook_ErrMsgBuf rmsg; 1103 HWCryptoHook_ErrMsgBuf rmsg;
1104#ifndef OPENSSL_NO_RSA
921 HWCryptoHook_RSAKeyHandle *hptr; 1105 HWCryptoHook_RSAKeyHandle *hptr;
1106#endif
1107#if !defined(OPENSSL_NO_RSA)
922 int ret; 1108 int ret;
1109#endif
923 1110
924 rmsg.buf = tempbuf; 1111 rmsg.buf = tempbuf;
925 rmsg.size = 1024; 1112 rmsg.size = sizeof(tempbuf);
926 1113
1114#ifndef OPENSSL_NO_RSA
927 hptr = (HWCryptoHook_RSAKeyHandle *) item; 1115 hptr = (HWCryptoHook_RSAKeyHandle *) item;
928 if(!hptr) return; 1116 if(hptr)
929 ret = p_hwcrhk_RSAUnloadKey(*hptr, NULL); 1117 {
930 OPENSSL_free(hptr); 1118 ret = p_hwcrhk_RSAUnloadKey(*hptr, NULL);
1119 OPENSSL_free(hptr);
1120 }
1121#endif
931} 1122}
932 1123
933/* Mutex calls: since the HWCryptoHook model closely follows the POSIX model 1124/* Mutex calls: since the HWCryptoHook model closely follows the POSIX model
@@ -939,17 +1130,17 @@ static int hwcrhk_mutex_init(HWCryptoHook_Mutex* mt,
939 { 1130 {
940 mt->lockid = CRYPTO_get_new_dynlockid(); 1131 mt->lockid = CRYPTO_get_new_dynlockid();
941 if (mt->lockid == 0) 1132 if (mt->lockid == 0)
942 return 0; 1133 return 1; /* failure */
943 return 1; 1134 return 0; /* success */
944 } 1135 }
945 1136
946static int hwcrhk_mutex_lock(HWCryptoHook_Mutex *mt) 1137static int hwcrhk_mutex_lock(HWCryptoHook_Mutex *mt)
947 { 1138 {
948 CRYPTO_w_lock(mt->lockid); 1139 CRYPTO_w_lock(mt->lockid);
949 return 1; 1140 return 0;
950 } 1141 }
951 1142
952void hwcrhk_mutex_unlock(HWCryptoHook_Mutex * mt) 1143static void hwcrhk_mutex_unlock(HWCryptoHook_Mutex * mt)
953 { 1144 {
954 CRYPTO_w_unlock(mt->lockid); 1145 CRYPTO_w_unlock(mt->lockid);
955 } 1146 }
@@ -964,50 +1155,146 @@ static int hwcrhk_get_pass(const char *prompt_info,
964 HWCryptoHook_PassphraseContext *ppctx, 1155 HWCryptoHook_PassphraseContext *ppctx,
965 HWCryptoHook_CallerContext *cactx) 1156 HWCryptoHook_CallerContext *cactx)
966 { 1157 {
967 int l = 0; 1158 pem_password_cb *callback = NULL;
968 char prompt[1024]; 1159 void *callback_data = NULL;
969 1160 UI_METHOD *ui_method = NULL;
970 if (password_callback == NULL) 1161
971 { 1162 if (cactx)
972 ENGINEerr(ENGINE_F_HWCRHK_GET_PASS,ENGINE_R_NO_CALLBACK); 1163 {
973 return -1; 1164 if (cactx->ui_method)
974 } 1165 ui_method = cactx->ui_method;
975 if (prompt_info) 1166 if (cactx->password_callback)
1167 callback = cactx->password_callback;
1168 if (cactx->callback_data)
1169 callback_data = cactx->callback_data;
1170 }
1171 if (ppctx)
976 { 1172 {
977 strncpy(prompt, "Card: \"", sizeof(prompt)); 1173 if (ppctx->ui_method)
978 l += 5; 1174 {
979 strncpy(prompt + l, prompt_info, sizeof(prompt) - l); 1175 ui_method = ppctx->ui_method;
980 l += strlen(prompt_info); 1176 callback = NULL;
981 if (l + 2 < sizeof(prompt)) 1177 }
982 { 1178 if (ppctx->callback_data)
983 strncpy(prompt + l, "\"\n", sizeof(prompt) - l); 1179 callback_data = ppctx->callback_data;
984 l += 2;
985 }
986 } 1180 }
987 if (l < sizeof(prompt) - 1) 1181 if (callback == NULL && ui_method == NULL)
988 { 1182 {
989 strncpy(prompt, "Enter Passphrase <enter to cancel>:", 1183 HWCRHKerr(HWCRHK_F_HWCRHK_GET_PASS,HWCRHK_R_NO_CALLBACK);
990 sizeof(prompt) - l); 1184 return -1;
991 l += 35;
992 } 1185 }
993 prompt[l] = '\0';
994 1186
995 /* I know, passing on the prompt instead of the user data *is* 1187 if (ui_method)
996 a bad thing. However, that's all we have right now. 1188 {
997 -- Richard Levitte */ 1189 UI *ui = UI_new_method(ui_method);
998 *len_io = password_callback(buf, *len_io, 0, prompt); 1190 if (ui)
1191 {
1192 int ok;
1193 char *prompt = UI_construct_prompt(ui,
1194 "pass phrase", prompt_info);
1195
1196 ok = UI_add_input_string(ui,prompt,
1197 UI_INPUT_FLAG_DEFAULT_PWD,
1198 buf,0,(*len_io) - 1);
1199 UI_add_user_data(ui, callback_data);
1200 UI_ctrl(ui, UI_CTRL_PRINT_ERRORS, 1, 0, 0);
1201
1202 if (ok >= 0)
1203 do
1204 {
1205 ok=UI_process(ui);
1206 }
1207 while (ok < 0 && UI_ctrl(ui, UI_CTRL_IS_REDOABLE, 0, 0, 0));
1208
1209 if (ok >= 0)
1210 *len_io = strlen(buf);
1211
1212 UI_free(ui);
1213 OPENSSL_free(prompt);
1214 }
1215 }
1216 else
1217 {
1218 *len_io = callback(buf, *len_io, 0, callback_data);
1219 }
999 if(!*len_io) 1220 if(!*len_io)
1000 return -1; 1221 return -1;
1001 return 0; 1222 return 0;
1002 } 1223 }
1003 1224
1004static void hwcrhk_log_message(void *logstream, const char *message) 1225static int hwcrhk_insert_card(const char *prompt_info,
1226 const char *wrong_info,
1227 HWCryptoHook_PassphraseContext *ppctx,
1228 HWCryptoHook_CallerContext *cactx)
1229 {
1230 int ok = -1;
1231 UI *ui;
1232 void *callback_data = NULL;
1233 UI_METHOD *ui_method = NULL;
1234
1235 if (cactx)
1236 {
1237 if (cactx->ui_method)
1238 ui_method = cactx->ui_method;
1239 if (cactx->callback_data)
1240 callback_data = cactx->callback_data;
1241 }
1242 if (ppctx)
1243 {
1244 if (ppctx->ui_method)
1245 ui_method = ppctx->ui_method;
1246 if (ppctx->callback_data)
1247 callback_data = ppctx->callback_data;
1248 }
1249 if (ui_method == NULL)
1250 {
1251 HWCRHKerr(HWCRHK_F_HWCRHK_INSERT_CARD,
1252 HWCRHK_R_NO_CALLBACK);
1253 return -1;
1254 }
1255
1256 ui = UI_new_method(ui_method);
1257
1258 if (ui)
1259 {
1260 char answer;
1261 char buf[BUFSIZ];
1262
1263 if (wrong_info)
1264 BIO_snprintf(buf, sizeof(buf)-1,
1265 "Current card: \"%s\"\n", wrong_info);
1266 ok = UI_dup_info_string(ui, buf);
1267 if (ok >= 0 && prompt_info)
1268 {
1269 BIO_snprintf(buf, sizeof(buf)-1,
1270 "Insert card \"%s\"", prompt_info);
1271 ok = UI_dup_input_boolean(ui, buf,
1272 "\n then hit <enter> or C<enter> to cancel\n",
1273 "\r\n", "Cc", UI_INPUT_FLAG_ECHO, &answer);
1274 }
1275 UI_add_user_data(ui, callback_data);
1276
1277 if (ok >= 0)
1278 ok = UI_process(ui);
1279 UI_free(ui);
1280
1281 if (ok == -2 || (ok >= 0 && answer == 'C'))
1282 ok = 1;
1283 else if (ok < 0)
1284 ok = -1;
1285 else
1286 ok = 0;
1287 }
1288 return ok;
1289 }
1290
1291static void hwcrhk_log_message(void *logstr, const char *message)
1005 { 1292 {
1006 BIO *lstream = NULL; 1293 BIO *lstream = NULL;
1007 1294
1008 CRYPTO_w_lock(CRYPTO_LOCK_BIO); 1295 CRYPTO_w_lock(CRYPTO_LOCK_BIO);
1009 if (logstream) 1296 if (logstr)
1010 lstream=*(BIO **)logstream; 1297 lstream=*(BIO **)logstr;
1011 if (lstream) 1298 if (lstream)
1012 { 1299 {
1013 BIO_write(lstream, message, strlen(message)); 1300 BIO_write(lstream, message, strlen(message));
@@ -1015,5 +1302,20 @@ static void hwcrhk_log_message(void *logstream, const char *message)
1015 CRYPTO_w_unlock(CRYPTO_LOCK_BIO); 1302 CRYPTO_w_unlock(CRYPTO_LOCK_BIO);
1016 } 1303 }
1017 1304
1018#endif /* !NO_HW_NCIPHER */ 1305/* This stuff is needed if this ENGINE is being compiled into a self-contained
1019#endif /* !NO_HW */ 1306 * shared-library. */
1307#ifdef ENGINE_DYNAMIC_SUPPORT
1308static int bind_fn(ENGINE *e, const char *id)
1309 {
1310 if(id && (strcmp(id, engine_hwcrhk_id) != 0))
1311 return 0;
1312 if(!bind_helper(e))
1313 return 0;
1314 return 1;
1315 }
1316IMPLEMENT_DYNAMIC_CHECK_FN()
1317IMPLEMENT_DYNAMIC_BIND_FN(bind_fn)
1318#endif /* ENGINE_DYNAMIC_SUPPORT */
1319
1320#endif /* !OPENSSL_NO_HW_NCIPHER */
1321#endif /* !OPENSSL_NO_HW */
diff --git a/src/lib/libcrypto/engine/vendor_defns/atalla.h b/src/lib/libcrypto/engine/vendor_defns/atalla.h
index 8111649c54..149970d441 100644
--- a/src/lib/libcrypto/engine/vendor_defns/atalla.h
+++ b/src/lib/libcrypto/engine/vendor_defns/atalla.h
@@ -46,16 +46,3 @@ typedef int tfnASI_RSAPrivateKeyOpFn(RSAPrivateKey * rsaKey,
46 unsigned char *input, 46 unsigned char *input,
47 unsigned int modulus_len); 47 unsigned int modulus_len);
48 48
49/* These are the static string constants for the DSO file name and the function
50 * symbol names to bind to. Regrettably, the DSO name on *nix appears to be
51 * "atasi.so" rather than something more consistent like "libatasi.so". At the
52 * time of writing, I'm not sure what the file name on win32 is but clearly
53 * native name translation is not possible (eg libatasi.so on *nix, and
54 * atasi.dll on win32). For the purposes of testing, I have created a symbollic
55 * link called "libatasi.so" so that we can use native name-translation - a
56 * better solution will be needed. */
57static const char *ATALLA_LIBNAME = "atasi";
58static const char *ATALLA_F1 = "ASI_GetHardwareConfig";
59static const char *ATALLA_F2 = "ASI_RSAPrivateKeyOpFn";
60static const char *ATALLA_F3 = "ASI_GetPerformanceStatistics";
61
diff --git a/src/lib/libcrypto/engine/vendor_defns/cswift.h b/src/lib/libcrypto/engine/vendor_defns/cswift.h
index 0af14a1a92..60079326bb 100644
--- a/src/lib/libcrypto/engine/vendor_defns/cswift.h
+++ b/src/lib/libcrypto/engine/vendor_defns/cswift.h
@@ -32,12 +32,12 @@ typedef __uint32_t SW_U32;
32typedef unsigned long SW_U32; /* 32 bit integer */ 32typedef unsigned long SW_U32; /* 32 bit integer */
33#endif 33#endif
34 34
35#if defined(WIN32) 35#if defined(OPENSSL_SYS_WIN32)
36 typedef struct _SW_U64 { 36 typedef struct _SW_U64 {
37 SW_U32 low32; 37 SW_U32 low32;
38 SW_U32 high32; 38 SW_U32 high32;
39 } SW_U64; /* 64 bit integer */ 39 } SW_U64; /* 64 bit integer */
40#elif defined(MAC) 40#elif defined(OPENSSL_SYS_MACINTOSH_CLASSIC)
41 typedef longlong SW_U64 41 typedef longlong SW_U64
42#else /* Unix variants */ 42#else /* Unix variants */
43 typedef struct _SW_U64 { 43 typedef struct _SW_U64 {
@@ -156,6 +156,27 @@ typedef struct _SW_LARGENUMBER {
156 /* bytes in network (big endian) order */ 156 /* bytes in network (big endian) order */
157} SW_LARGENUMBER; 157} SW_LARGENUMBER;
158 158
159#if defined(OPENSSL_SYS_WIN32)
160 #include <windows.h>
161 typedef HANDLE SW_OSHANDLE; /* handle to kernel object */
162 #define SW_OS_INVALID_HANDLE INVALID_HANDLE_VALUE
163 #define SW_CALLCONV _stdcall
164#elif defined(OPENSSL_SYS_MACINTOSH_CLASSIC)
165 /* async callback mechanisms */
166 /* swiftCallbackLevel */
167 #define SW_MAC_CALLBACK_LEVEL_NO 0
168 #define SW_MAC_CALLBACK_LEVEL_HARDWARE 1 /* from the hardware ISR */
169 #define SW_MAC_CALLBACK_LEVEL_SECONDARY 2 /* as secondary ISR */
170 typedef int SW_MAC_CALLBACK_LEVEL;
171 typedef int SW_OSHANDLE;
172 #define SW_OS_INVALID_HANDLE (-1)
173 #define SW_CALLCONV
174#else /* Unix variants */
175 typedef int SW_OSHANDLE; /* handle to driver */
176 #define SW_OS_INVALID_HANDLE (-1)
177 #define SW_CALLCONV
178#endif
179
159typedef struct _SW_CRT { 180typedef struct _SW_CRT {
160 SW_LARGENUMBER p; /* prime number p */ 181 SW_LARGENUMBER p; /* prime number p */
161 SW_LARGENUMBER q; /* prime number q */ 182 SW_LARGENUMBER q; /* prime number q */
@@ -196,16 +217,16 @@ typedef SW_U32 SW_CONTEXT_HANDLE; /* opaque context handle */
196 217
197/* Now the OpenSSL bits, these function types are the for the function 218/* Now the OpenSSL bits, these function types are the for the function
198 * pointers that will bound into the Rainbow shared libraries. */ 219 * pointers that will bound into the Rainbow shared libraries. */
199typedef SW_STATUS t_swAcquireAccContext(SW_CONTEXT_HANDLE *hac); 220typedef SW_STATUS SW_CALLCONV t_swAcquireAccContext(SW_CONTEXT_HANDLE *hac);
200typedef SW_STATUS t_swAttachKeyParam(SW_CONTEXT_HANDLE hac, 221typedef SW_STATUS SW_CALLCONV t_swAttachKeyParam(SW_CONTEXT_HANDLE hac,
201 SW_PARAM *key_params); 222 SW_PARAM *key_params);
202typedef SW_STATUS t_swSimpleRequest(SW_CONTEXT_HANDLE hac, 223typedef SW_STATUS SW_CALLCONV t_swSimpleRequest(SW_CONTEXT_HANDLE hac,
203 SW_COMMAND_CODE cmd, 224 SW_COMMAND_CODE cmd,
204 SW_LARGENUMBER pin[], 225 SW_LARGENUMBER pin[],
205 SW_U32 pin_count, 226 SW_U32 pin_count,
206 SW_LARGENUMBER pout[], 227 SW_LARGENUMBER pout[],
207 SW_U32 pout_count); 228 SW_U32 pout_count);
208typedef SW_STATUS t_swReleaseAccContext(SW_CONTEXT_HANDLE hac); 229typedef SW_STATUS SW_CALLCONV t_swReleaseAccContext(SW_CONTEXT_HANDLE hac);
209 230
210#ifdef __cplusplus 231#ifdef __cplusplus
211} 232}
diff --git a/src/lib/libcrypto/evp/bio_ok.c b/src/lib/libcrypto/evp/bio_ok.c
index 101275d648..3cbc6e7848 100644
--- a/src/lib/libcrypto/evp/bio_ok.c
+++ b/src/lib/libcrypto/evp/bio_ok.c
@@ -67,7 +67,7 @@
67 and everything was OK. BUT if user types wrong password 67 and everything was OK. BUT if user types wrong password
68 BIO_f_cipher outputs only garbage and my function crashes. Yes 68 BIO_f_cipher outputs only garbage and my function crashes. Yes
69 I can and I should fix my function, but BIO_f_cipher is 69 I can and I should fix my function, but BIO_f_cipher is
70 easy way to add encryption support to many exisiting applications 70 easy way to add encryption support to many existing applications
71 and it's hard to debug and fix them all. 71 and it's hard to debug and fix them all.
72 72
73 So I wanted another BIO which would catch the incorrect passwords and 73 So I wanted another BIO which would catch the incorrect passwords and
@@ -80,10 +80,10 @@
80 1) you must somehow separate checksum from actual data. 80 1) you must somehow separate checksum from actual data.
81 2) you need lot's of memory when reading the file, because you 81 2) you need lot's of memory when reading the file, because you
82 must read to the end of the file and verify the checksum before 82 must read to the end of the file and verify the checksum before
83 leting the application to read the data. 83 letting the application to read the data.
84 84
85 BIO_f_reliable tries to solve both problems, so that you can 85 BIO_f_reliable tries to solve both problems, so that you can
86 read and write arbitraly long streams using only fixed amount 86 read and write arbitrary long streams using only fixed amount
87 of memory. 87 of memory.
88 88
89 BIO_f_reliable splits data stream into blocks. Each block is prefixed 89 BIO_f_reliable splits data stream into blocks. Each block is prefixed
@@ -91,7 +91,7 @@
91 several Kbytes of memory to buffer single block before verifying 91 several Kbytes of memory to buffer single block before verifying
92 it's digest. 92 it's digest.
93 93
94 BIO_f_reliable goes futher and adds several important capabilities: 94 BIO_f_reliable goes further and adds several important capabilities:
95 95
96 1) the digest of the block is computed over the whole stream 96 1) the digest of the block is computed over the whole stream
97 -- so nobody can rearrange the blocks or remove or replace them. 97 -- so nobody can rearrange the blocks or remove or replace them.
@@ -110,7 +110,7 @@
110 and then compare the digest output. 110 and then compare the digest output.
111 111
112 Bad things: BIO_f_reliable knows what's going on in EVP_Digest. I 112 Bad things: BIO_f_reliable knows what's going on in EVP_Digest. I
113 initialy wrote and tested this code on x86 machine and wrote the 113 initially wrote and tested this code on x86 machine and wrote the
114 digests out in machine-dependent order :( There are people using 114 digests out in machine-dependent order :( There are people using
115 this code and I cannot change this easily without making existing 115 this code and I cannot change this easily without making existing
116 data files unreadable. 116 data files unreadable.
@@ -125,11 +125,13 @@
125#include <openssl/evp.h> 125#include <openssl/evp.h>
126#include <openssl/rand.h> 126#include <openssl/rand.h>
127 127
128static int ok_write(BIO *h,char *buf,int num); 128static int ok_write(BIO *h, const char *buf, int num);
129static int ok_read(BIO *h,char *buf,int size); 129static int ok_read(BIO *h, char *buf, int size);
130static long ok_ctrl(BIO *h,int cmd,long arg1,char *arg2); 130static long ok_ctrl(BIO *h, int cmd, long arg1, void *arg2);
131static int ok_new(BIO *h); 131static int ok_new(BIO *h);
132static int ok_free(BIO *data); 132static int ok_free(BIO *data);
133static long ok_callback_ctrl(BIO *h, int cmd, bio_info_cb *fp);
134
133static void sig_out(BIO* b); 135static void sig_out(BIO* b);
134static void sig_in(BIO* b); 136static void sig_in(BIO* b);
135static void block_out(BIO* b); 137static void block_out(BIO* b);
@@ -160,7 +162,7 @@ typedef struct ok_struct
160 EVP_MD_CTX md; 162 EVP_MD_CTX md;
161 int blockout; /* output block is ready */ 163 int blockout; /* output block is ready */
162 int sigio; /* must process signature */ 164 int sigio; /* must process signature */
163 char buf[IOBS]; 165 unsigned char buf[IOBS];
164 } BIO_OK_CTX; 166 } BIO_OK_CTX;
165 167
166static BIO_METHOD methods_ok= 168static BIO_METHOD methods_ok=
@@ -173,6 +175,7 @@ static BIO_METHOD methods_ok=
173 ok_ctrl, 175 ok_ctrl,
174 ok_new, 176 ok_new,
175 ok_free, 177 ok_free,
178 ok_callback_ctrl,
176 }; 179 };
177 180
178BIO_METHOD *BIO_f_reliable(void) 181BIO_METHOD *BIO_f_reliable(void)
@@ -184,7 +187,7 @@ static int ok_new(BIO *bi)
184 { 187 {
185 BIO_OK_CTX *ctx; 188 BIO_OK_CTX *ctx;
186 189
187 ctx=(BIO_OK_CTX *)Malloc(sizeof(BIO_OK_CTX)); 190 ctx=(BIO_OK_CTX *)OPENSSL_malloc(sizeof(BIO_OK_CTX));
188 if (ctx == NULL) return(0); 191 if (ctx == NULL) return(0);
189 192
190 ctx->buf_len=0; 193 ctx->buf_len=0;
@@ -196,6 +199,8 @@ static int ok_new(BIO *bi)
196 ctx->blockout= 0; 199 ctx->blockout= 0;
197 ctx->sigio=1; 200 ctx->sigio=1;
198 201
202 EVP_MD_CTX_init(&ctx->md);
203
199 bi->init=0; 204 bi->init=0;
200 bi->ptr=(char *)ctx; 205 bi->ptr=(char *)ctx;
201 bi->flags=0; 206 bi->flags=0;
@@ -205,8 +210,9 @@ static int ok_new(BIO *bi)
205static int ok_free(BIO *a) 210static int ok_free(BIO *a)
206 { 211 {
207 if (a == NULL) return(0); 212 if (a == NULL) return(0);
213 EVP_MD_CTX_cleanup(&((BIO_OK_CTX *)a->ptr)->md);
208 memset(a->ptr,0,sizeof(BIO_OK_CTX)); 214 memset(a->ptr,0,sizeof(BIO_OK_CTX));
209 Free(a->ptr); 215 OPENSSL_free(a->ptr);
210 a->ptr=NULL; 216 a->ptr=NULL;
211 a->init=0; 217 a->init=0;
212 a->flags=0; 218 a->flags=0;
@@ -284,7 +290,7 @@ static int ok_read(BIO *b, char *out, int outl)
284 return(ret); 290 return(ret);
285 } 291 }
286 292
287static int ok_write(BIO *b, char *in, int inl) 293static int ok_write(BIO *b, const char *in, int inl)
288 { 294 {
289 int ret=0,n,i; 295 int ret=0,n,i;
290 BIO_OK_CTX *ctx; 296 BIO_OK_CTX *ctx;
@@ -342,7 +348,7 @@ static int ok_write(BIO *b, char *in, int inl)
342 return(ret); 348 return(ret);
343 } 349 }
344 350
345static long ok_ctrl(BIO *b, int cmd, long num, char *ptr) 351static long ok_ctrl(BIO *b, int cmd, long num, void *ptr)
346 { 352 {
347 BIO_OK_CTX *ctx; 353 BIO_OK_CTX *ctx;
348 EVP_MD *md; 354 EVP_MD *md;
@@ -350,7 +356,7 @@ static long ok_ctrl(BIO *b, int cmd, long num, char *ptr)
350 long ret=1; 356 long ret=1;
351 int i; 357 int i;
352 358
353 ctx=(BIO_OK_CTX *)b->ptr; 359 ctx=b->ptr;
354 360
355 switch (cmd) 361 switch (cmd)
356 { 362 {
@@ -408,14 +414,14 @@ static long ok_ctrl(BIO *b, int cmd, long num, char *ptr)
408 ret=(long)ctx->cont; 414 ret=(long)ctx->cont;
409 break; 415 break;
410 case BIO_C_SET_MD: 416 case BIO_C_SET_MD:
411 md=(EVP_MD *)ptr; 417 md=ptr;
412 EVP_DigestInit(&(ctx->md),md); 418 EVP_DigestInit_ex(&ctx->md, md, NULL);
413 b->init=1; 419 b->init=1;
414 break; 420 break;
415 case BIO_C_GET_MD: 421 case BIO_C_GET_MD:
416 if (b->init) 422 if (b->init)
417 { 423 {
418 ppmd=(const EVP_MD **)ptr; 424 ppmd=ptr;
419 *ppmd=ctx->md.digest; 425 *ppmd=ctx->md.digest;
420 } 426 }
421 else 427 else
@@ -428,6 +434,20 @@ static long ok_ctrl(BIO *b, int cmd, long num, char *ptr)
428 return(ret); 434 return(ret);
429 } 435 }
430 436
437static long ok_callback_ctrl(BIO *b, int cmd, bio_info_cb *fp)
438 {
439 long ret=1;
440
441 if (b->next_bio == NULL) return(0);
442 switch (cmd)
443 {
444 default:
445 ret=BIO_callback_ctrl(b->next_bio,cmd,fp);
446 break;
447 }
448 return(ret);
449 }
450
431static void longswap(void *_ptr, int len) 451static void longswap(void *_ptr, int len)
432{ 452{
433#ifndef L_ENDIAN 453#ifndef L_ENDIAN
@@ -445,19 +465,22 @@ static void sig_out(BIO* b)
445 BIO_OK_CTX *ctx; 465 BIO_OK_CTX *ctx;
446 EVP_MD_CTX *md; 466 EVP_MD_CTX *md;
447 467
448 ctx=(BIO_OK_CTX *)b->ptr; 468 ctx=b->ptr;
449 md= &(ctx->md); 469 md=&ctx->md;
450 470
451 if(ctx->buf_len+ 2* md->digest->md_size > OK_BLOCK_SIZE) return; 471 if(ctx->buf_len+ 2* md->digest->md_size > OK_BLOCK_SIZE) return;
452 472
453 EVP_DigestInit(md, md->digest); 473 EVP_DigestInit_ex(md, md->digest, NULL);
454 RAND_bytes(&(md->md.base[0]), md->digest->md_size); 474 /* FIXME: there's absolutely no guarantee this makes any sense at all,
455 memcpy(&(ctx->buf[ctx->buf_len]), &(md->md.base[0]), md->digest->md_size); 475 * particularly now EVP_MD_CTX has been restructured.
476 */
477 RAND_pseudo_bytes(md->md_data, md->digest->md_size);
478 memcpy(&(ctx->buf[ctx->buf_len]), md->md_data, md->digest->md_size);
456 longswap(&(ctx->buf[ctx->buf_len]), md->digest->md_size); 479 longswap(&(ctx->buf[ctx->buf_len]), md->digest->md_size);
457 ctx->buf_len+= md->digest->md_size; 480 ctx->buf_len+= md->digest->md_size;
458 481
459 EVP_DigestUpdate(md, (unsigned char*)WELLKNOWN, strlen(WELLKNOWN)); 482 EVP_DigestUpdate(md, WELLKNOWN, strlen(WELLKNOWN));
460 md->digest->final(&(ctx->buf[ctx->buf_len]), &(md->md.base[0])); 483 EVP_DigestFinal_ex(md, &(ctx->buf[ctx->buf_len]), NULL);
461 ctx->buf_len+= md->digest->md_size; 484 ctx->buf_len+= md->digest->md_size;
462 ctx->blockout= 1; 485 ctx->blockout= 1;
463 ctx->sigio= 0; 486 ctx->sigio= 0;
@@ -470,18 +493,18 @@ static void sig_in(BIO* b)
470 unsigned char tmp[EVP_MAX_MD_SIZE]; 493 unsigned char tmp[EVP_MAX_MD_SIZE];
471 int ret= 0; 494 int ret= 0;
472 495
473 ctx=(BIO_OK_CTX *)b->ptr; 496 ctx=b->ptr;
474 md= &(ctx->md); 497 md=&ctx->md;
475 498
476 if(ctx->buf_len- ctx->buf_off < 2* md->digest->md_size) return; 499 if(ctx->buf_len- ctx->buf_off < 2* md->digest->md_size) return;
477 500
478 EVP_DigestInit(md, md->digest); 501 EVP_DigestInit_ex(md, md->digest, NULL);
479 memcpy(&(md->md.base[0]), &(ctx->buf[ctx->buf_off]), md->digest->md_size); 502 memcpy(md->md_data, &(ctx->buf[ctx->buf_off]), md->digest->md_size);
480 longswap(&(md->md.base[0]), md->digest->md_size); 503 longswap(md->md_data, md->digest->md_size);
481 ctx->buf_off+= md->digest->md_size; 504 ctx->buf_off+= md->digest->md_size;
482 505
483 EVP_DigestUpdate(md, (unsigned char*)WELLKNOWN, strlen(WELLKNOWN)); 506 EVP_DigestUpdate(md, WELLKNOWN, strlen(WELLKNOWN));
484 md->digest->final(tmp, &(md->md.base[0])); 507 EVP_DigestFinal_ex(md, tmp, NULL);
485 ret= memcmp(&(ctx->buf[ctx->buf_off]), tmp, md->digest->md_size) == 0; 508 ret= memcmp(&(ctx->buf[ctx->buf_off]), tmp, md->digest->md_size) == 0;
486 ctx->buf_off+= md->digest->md_size; 509 ctx->buf_off+= md->digest->md_size;
487 if(ret == 1) 510 if(ret == 1)
@@ -506,15 +529,15 @@ static void block_out(BIO* b)
506 EVP_MD_CTX *md; 529 EVP_MD_CTX *md;
507 unsigned long tl; 530 unsigned long tl;
508 531
509 ctx=(BIO_OK_CTX *)b->ptr; 532 ctx=b->ptr;
510 md= &(ctx->md); 533 md=&ctx->md;
511 534
512 tl= ctx->buf_len- OK_BLOCK_BLOCK; 535 tl= ctx->buf_len- OK_BLOCK_BLOCK;
513 tl= swapem(tl); 536 tl= swapem(tl);
514 memcpy(ctx->buf, &tl, OK_BLOCK_BLOCK); 537 memcpy(ctx->buf, &tl, OK_BLOCK_BLOCK);
515 tl= swapem(tl); 538 tl= swapem(tl);
516 EVP_DigestUpdate(md, (unsigned char*) &(ctx->buf[OK_BLOCK_BLOCK]), tl); 539 EVP_DigestUpdate(md, (unsigned char*) &(ctx->buf[OK_BLOCK_BLOCK]), tl);
517 md->digest->final(&(ctx->buf[ctx->buf_len]), &(md->md.base[0])); 540 EVP_DigestFinal_ex(md, &(ctx->buf[ctx->buf_len]), NULL);
518 ctx->buf_len+= md->digest->md_size; 541 ctx->buf_len+= md->digest->md_size;
519 ctx->blockout= 1; 542 ctx->blockout= 1;
520 } 543 }
@@ -526,15 +549,15 @@ static void block_in(BIO* b)
526 long tl= 0; 549 long tl= 0;
527 unsigned char tmp[EVP_MAX_MD_SIZE]; 550 unsigned char tmp[EVP_MAX_MD_SIZE];
528 551
529 ctx=(BIO_OK_CTX *)b->ptr; 552 ctx=b->ptr;
530 md= &(ctx->md); 553 md=&ctx->md;
531 554
532 memcpy(&tl, ctx->buf, OK_BLOCK_BLOCK); 555 memcpy(&tl, ctx->buf, OK_BLOCK_BLOCK);
533 tl= swapem(tl); 556 tl= swapem(tl);
534 if (ctx->buf_len < tl+ OK_BLOCK_BLOCK+ md->digest->md_size) return; 557 if (ctx->buf_len < tl+ OK_BLOCK_BLOCK+ md->digest->md_size) return;
535 558
536 EVP_DigestUpdate(md, (unsigned char*) &(ctx->buf[OK_BLOCK_BLOCK]), tl); 559 EVP_DigestUpdate(md, (unsigned char*) &(ctx->buf[OK_BLOCK_BLOCK]), tl);
537 md->digest->final(tmp, &(md->md.base[0])); 560 EVP_DigestFinal_ex(md, tmp, NULL);
538 if(memcmp(&(ctx->buf[tl+ OK_BLOCK_BLOCK]), tmp, md->digest->md_size) == 0) 561 if(memcmp(&(ctx->buf[tl+ OK_BLOCK_BLOCK]), tmp, md->digest->md_size) == 0)
539 { 562 {
540 /* there might be parts from next block lurking around ! */ 563 /* there might be parts from next block lurking around ! */
diff --git a/src/lib/libcrypto/evp/c_allc.c b/src/lib/libcrypto/evp/c_allc.c
index f24d3756c9..341a958fd4 100644
--- a/src/lib/libcrypto/evp/c_allc.c
+++ b/src/lib/libcrypto/evp/c_allc.c
@@ -64,7 +64,8 @@
64 64
65void OpenSSL_add_all_ciphers(void) 65void OpenSSL_add_all_ciphers(void)
66 { 66 {
67#ifndef NO_DES 67
68#ifndef OPENSSL_NO_DES
68 EVP_add_cipher(EVP_des_cfb()); 69 EVP_add_cipher(EVP_des_cfb());
69 EVP_add_cipher(EVP_des_ede_cfb()); 70 EVP_add_cipher(EVP_des_ede_cfb());
70 EVP_add_cipher(EVP_des_ede3_cfb()); 71 EVP_add_cipher(EVP_des_ede3_cfb());
@@ -90,12 +91,12 @@ void OpenSSL_add_all_ciphers(void)
90 EVP_add_cipher(EVP_des_ede3()); 91 EVP_add_cipher(EVP_des_ede3());
91#endif 92#endif
92 93
93#ifndef NO_RC4 94#ifndef OPENSSL_NO_RC4
94 EVP_add_cipher(EVP_rc4()); 95 EVP_add_cipher(EVP_rc4());
95 EVP_add_cipher(EVP_rc4_40()); 96 EVP_add_cipher(EVP_rc4_40());
96#endif 97#endif
97 98
98#ifndef NO_IDEA 99#ifndef OPENSSL_NO_IDEA
99 EVP_add_cipher(EVP_idea_ecb()); 100 EVP_add_cipher(EVP_idea_ecb());
100 EVP_add_cipher(EVP_idea_cfb()); 101 EVP_add_cipher(EVP_idea_cfb());
101 EVP_add_cipher(EVP_idea_ofb()); 102 EVP_add_cipher(EVP_idea_ofb());
@@ -104,7 +105,7 @@ void OpenSSL_add_all_ciphers(void)
104 EVP_add_cipher_alias(SN_idea_cbc,"idea"); 105 EVP_add_cipher_alias(SN_idea_cbc,"idea");
105#endif 106#endif
106 107
107#ifndef NO_RC2 108#ifndef OPENSSL_NO_RC2
108 EVP_add_cipher(EVP_rc2_ecb()); 109 EVP_add_cipher(EVP_rc2_ecb());
109 EVP_add_cipher(EVP_rc2_cfb()); 110 EVP_add_cipher(EVP_rc2_cfb());
110 EVP_add_cipher(EVP_rc2_ofb()); 111 EVP_add_cipher(EVP_rc2_ofb());
@@ -115,7 +116,7 @@ void OpenSSL_add_all_ciphers(void)
115 EVP_add_cipher_alias(SN_rc2_cbc,"rc2"); 116 EVP_add_cipher_alias(SN_rc2_cbc,"rc2");
116#endif 117#endif
117 118
118#ifndef NO_BF 119#ifndef OPENSSL_NO_BF
119 EVP_add_cipher(EVP_bf_ecb()); 120 EVP_add_cipher(EVP_bf_ecb());
120 EVP_add_cipher(EVP_bf_cfb()); 121 EVP_add_cipher(EVP_bf_cfb());
121 EVP_add_cipher(EVP_bf_ofb()); 122 EVP_add_cipher(EVP_bf_ofb());
@@ -125,7 +126,7 @@ void OpenSSL_add_all_ciphers(void)
125 EVP_add_cipher_alias(SN_bf_cbc,"blowfish"); 126 EVP_add_cipher_alias(SN_bf_cbc,"blowfish");
126#endif 127#endif
127 128
128#ifndef NO_CAST 129#ifndef OPENSSL_NO_CAST
129 EVP_add_cipher(EVP_cast5_ecb()); 130 EVP_add_cipher(EVP_cast5_ecb());
130 EVP_add_cipher(EVP_cast5_cfb()); 131 EVP_add_cipher(EVP_cast5_cfb());
131 EVP_add_cipher(EVP_cast5_ofb()); 132 EVP_add_cipher(EVP_cast5_ofb());
@@ -136,7 +137,7 @@ void OpenSSL_add_all_ciphers(void)
136 EVP_add_cipher_alias(SN_cast5_cbc,"cast-cbc"); 137 EVP_add_cipher_alias(SN_cast5_cbc,"cast-cbc");
137#endif 138#endif
138 139
139#ifndef NO_RC5 140#ifndef OPENSSL_NO_RC5
140 EVP_add_cipher(EVP_rc5_32_12_16_ecb()); 141 EVP_add_cipher(EVP_rc5_32_12_16_ecb());
141 EVP_add_cipher(EVP_rc5_32_12_16_cfb()); 142 EVP_add_cipher(EVP_rc5_32_12_16_cfb());
142 EVP_add_cipher(EVP_rc5_32_12_16_ofb()); 143 EVP_add_cipher(EVP_rc5_32_12_16_ofb());
@@ -144,6 +145,36 @@ void OpenSSL_add_all_ciphers(void)
144 EVP_add_cipher_alias(SN_rc5_cbc,"rc5"); 145 EVP_add_cipher_alias(SN_rc5_cbc,"rc5");
145 EVP_add_cipher_alias(SN_rc5_cbc,"RC5"); 146 EVP_add_cipher_alias(SN_rc5_cbc,"RC5");
146#endif 147#endif
148
149#ifndef OPENSSL_NO_AES
150 EVP_add_cipher(EVP_aes_128_ecb());
151 EVP_add_cipher(EVP_aes_128_cbc());
152 EVP_add_cipher(EVP_aes_128_cfb());
153 EVP_add_cipher(EVP_aes_128_ofb());
154#if 0
155 EVP_add_cipher(EVP_aes_128_ctr());
156#endif
157 EVP_add_cipher_alias(SN_aes_128_cbc,"AES128");
158 EVP_add_cipher_alias(SN_aes_128_cbc,"aes128");
159 EVP_add_cipher(EVP_aes_192_ecb());
160 EVP_add_cipher(EVP_aes_192_cbc());
161 EVP_add_cipher(EVP_aes_192_cfb());
162 EVP_add_cipher(EVP_aes_192_ofb());
163#if 0
164 EVP_add_cipher(EVP_aes_192_ctr());
165#endif
166 EVP_add_cipher_alias(SN_aes_192_cbc,"AES192");
167 EVP_add_cipher_alias(SN_aes_192_cbc,"aes192");
168 EVP_add_cipher(EVP_aes_256_ecb());
169 EVP_add_cipher(EVP_aes_256_cbc());
170 EVP_add_cipher(EVP_aes_256_cfb());
171 EVP_add_cipher(EVP_aes_256_ofb());
172#if 0
173 EVP_add_cipher(EVP_aes_256_ctr());
174#endif
175 EVP_add_cipher_alias(SN_aes_256_cbc,"AES256");
176 EVP_add_cipher_alias(SN_aes_256_cbc,"aes256");
177#endif
147 PKCS12_PBE_add(); 178 PKCS12_PBE_add();
148 PKCS5_PBE_add(); 179 PKCS5_PBE_add();
149 } 180 }
diff --git a/src/lib/libcrypto/evp/c_alld.c b/src/lib/libcrypto/evp/c_alld.c
index febe51a3ee..be91cdb037 100644
--- a/src/lib/libcrypto/evp/c_alld.c
+++ b/src/lib/libcrypto/evp/c_alld.c
@@ -64,35 +64,38 @@
64 64
65void OpenSSL_add_all_digests(void) 65void OpenSSL_add_all_digests(void)
66 { 66 {
67#ifndef NO_MD2 67#ifndef OPENSSL_NO_MD2
68 EVP_add_digest(EVP_md2()); 68 EVP_add_digest(EVP_md2());
69#endif 69#endif
70#ifndef NO_MD5 70#ifndef OPENSSL_NO_MD4
71 EVP_add_digest(EVP_md4());
72#endif
73#ifndef OPENSSL_NO_MD5
71 EVP_add_digest(EVP_md5()); 74 EVP_add_digest(EVP_md5());
72 EVP_add_digest_alias(SN_md5,"ssl2-md5"); 75 EVP_add_digest_alias(SN_md5,"ssl2-md5");
73 EVP_add_digest_alias(SN_md5,"ssl3-md5"); 76 EVP_add_digest_alias(SN_md5,"ssl3-md5");
74#endif 77#endif
75#ifndef NO_SHA 78#ifndef OPENSSL_NO_SHA
76 EVP_add_digest(EVP_sha()); 79 EVP_add_digest(EVP_sha());
77#ifndef NO_DSA 80#ifndef OPENSSL_NO_DSA
78 EVP_add_digest(EVP_dss()); 81 EVP_add_digest(EVP_dss());
79#endif 82#endif
80#endif 83#endif
81#ifndef NO_SHA 84#ifndef OPENSSL_NO_SHA
82 EVP_add_digest(EVP_sha1()); 85 EVP_add_digest(EVP_sha1());
83 EVP_add_digest_alias(SN_sha1,"ssl3-sha1"); 86 EVP_add_digest_alias(SN_sha1,"ssl3-sha1");
84 EVP_add_digest_alias(SN_sha1WithRSAEncryption,SN_sha1WithRSA); 87 EVP_add_digest_alias(SN_sha1WithRSAEncryption,SN_sha1WithRSA);
85#ifndef NO_DSA 88#ifndef OPENSSL_NO_DSA
86 EVP_add_digest(EVP_dss1()); 89 EVP_add_digest(EVP_dss1());
87 EVP_add_digest_alias(SN_dsaWithSHA1,SN_dsaWithSHA1_2); 90 EVP_add_digest_alias(SN_dsaWithSHA1,SN_dsaWithSHA1_2);
88 EVP_add_digest_alias(SN_dsaWithSHA1,"DSS1"); 91 EVP_add_digest_alias(SN_dsaWithSHA1,"DSS1");
89 EVP_add_digest_alias(SN_dsaWithSHA1,"dss1"); 92 EVP_add_digest_alias(SN_dsaWithSHA1,"dss1");
90#endif 93#endif
91#endif 94#endif
92#if !defined(NO_MDC2) && !defined(NO_DES) 95#if !defined(OPENSSL_NO_MDC2) && !defined(OPENSSL_NO_DES)
93 EVP_add_digest(EVP_mdc2()); 96 EVP_add_digest(EVP_mdc2());
94#endif 97#endif
95#ifndef NO_RIPEMD 98#ifndef OPENSSL_NO_RIPEMD
96 EVP_add_digest(EVP_ripemd160()); 99 EVP_add_digest(EVP_ripemd160());
97 EVP_add_digest_alias(SN_ripemd160,"ripemd"); 100 EVP_add_digest_alias(SN_ripemd160,"ripemd");
98 EVP_add_digest_alias(SN_ripemd160,"rmd160"); 101 EVP_add_digest_alias(SN_ripemd160,"rmd160");
diff --git a/src/lib/libcrypto/evp/e_dsa.c b/src/lib/libcrypto/evp/e_dsa.c
index 6715c3e95e..b96f2738b3 100644
--- a/src/lib/libcrypto/evp/e_dsa.c
+++ b/src/lib/libcrypto/evp/e_dsa.c
@@ -58,9 +58,9 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include "evp.h" 61#include <openssl/evp.h>
62#include "objects.h" 62#include <openssl/objects.h>
63#include "x509.h" 63#include <openssl/x509.h>
64 64
65static EVP_PKEY_METHOD dss_method= 65static EVP_PKEY_METHOD dss_method=
66 { 66 {
diff --git a/src/lib/libcrypto/evp/e_rc5.c b/src/lib/libcrypto/evp/e_rc5.c
index 5885f1826b..3c7713b181 100644
--- a/src/lib/libcrypto/evp/e_rc5.c
+++ b/src/lib/libcrypto/evp/e_rc5.c
@@ -56,62 +56,69 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58 58
59#ifndef NO_RC5 59#ifndef OPENSSL_NO_RC5
60 60
61#include <stdio.h> 61#include <stdio.h>
62#include "cryptlib.h" 62#include "cryptlib.h"
63#include <openssl/evp.h> 63#include <openssl/evp.h>
64#include <openssl/objects.h> 64#include <openssl/objects.h>
65#include "evp_locl.h" 65#include "evp_locl.h"
66#include <openssl/rc5.h>
66 67
67static int r_32_12_16_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, 68static int r_32_12_16_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
68 const unsigned char *iv,int enc); 69 const unsigned char *iv,int enc);
69static int rc5_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr); 70static int rc5_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr);
70 71
71IMPLEMENT_BLOCK_CIPHER(rc5_32_12_16, rc5.ks, RC5_32, rc5, NID_rc5, 72typedef struct
72 8, EVP_RC5_32_12_16_KEY_SIZE, 8, 73 {
73 EVP_CIPH_VARIABLE_LENGTH | EVP_CIPH_CTRL_INIT, 74 int rounds; /* number of rounds */
74 r_32_12_16_init_key, NULL, 75 RC5_32_KEY ks; /* key schedule */
75 NULL, NULL, rc5_ctrl) 76 } EVP_RC5_KEY;
76 77
78#define data(ctx) EVP_C_DATA(EVP_RC5_KEY,ctx)
77 79
80IMPLEMENT_BLOCK_CIPHER(rc5_32_12_16, ks, RC5_32, EVP_RC5_KEY, NID_rc5,
81 8, RC5_32_KEY_LENGTH, 8, 64,
82 EVP_CIPH_VARIABLE_LENGTH | EVP_CIPH_CTRL_INIT,
83 r_32_12_16_init_key, NULL,
84 NULL, NULL, rc5_ctrl)
78 85
79static int rc5_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr) 86static int rc5_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr)
80 { 87 {
81 switch(type) { 88 switch(type)
82 89 {
83 case EVP_CTRL_INIT: 90 case EVP_CTRL_INIT:
84 c->c.rc5.rounds = RC5_12_ROUNDS; 91 data(c)->rounds = RC5_12_ROUNDS;
85 return 1; 92 return 1;
86 93
87 case EVP_CTRL_GET_RC5_ROUNDS: 94 case EVP_CTRL_GET_RC5_ROUNDS:
88 *(int *)ptr = c->c.rc5.rounds; 95 *(int *)ptr = data(c)->rounds;
89 return 1; 96 return 1;
90
91 97
92 case EVP_CTRL_SET_RC5_ROUNDS: 98 case EVP_CTRL_SET_RC5_ROUNDS:
93 switch(arg) { 99 switch(arg)
94 case RC5_8_ROUNDS: 100 {
95 case RC5_12_ROUNDS: 101 case RC5_8_ROUNDS:
96 case RC5_16_ROUNDS: 102 case RC5_12_ROUNDS:
97 c->c.rc5.rounds = arg; 103 case RC5_16_ROUNDS:
98 return 1; 104 data(c)->rounds = arg;
105 return 1;
99 106
100 default: 107 default:
101 EVPerr(EVP_F_RC5_CTRL, EVP_R_UNSUPORTED_NUMBER_OF_ROUNDS); 108 EVPerr(EVP_F_RC5_CTRL, EVP_R_UNSUPORTED_NUMBER_OF_ROUNDS);
102 return 0; 109 return 0;
103 } 110 }
104 111
105 default: 112 default:
106 return -1; 113 return -1;
107 } 114 }
108 } 115 }
109 116
110static int r_32_12_16_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, 117static int r_32_12_16_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
111 const unsigned char *iv, int enc) 118 const unsigned char *iv, int enc)
112 { 119 {
113 RC5_32_set_key(&(ctx->c.rc5.ks),EVP_CIPHER_CTX_key_length(ctx), 120 RC5_32_set_key(&data(ctx)->ks,EVP_CIPHER_CTX_key_length(ctx),
114 key,ctx->c.rc5.rounds); 121 key,data(ctx)->rounds);
115 return 1; 122 return 1;
116 } 123 }
117 124
diff --git a/src/lib/libcrypto/evp/evp_test.c b/src/lib/libcrypto/evp/evp_test.c
index 3607fe7776..1bfffb34cf 100644
--- a/src/lib/libcrypto/evp/evp_test.c
+++ b/src/lib/libcrypto/evp/evp_test.c
@@ -123,13 +123,15 @@ static unsigned char *ustrsep(char **p,const char *sep)
123static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn, 123static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn,
124 const unsigned char *iv,int in, 124 const unsigned char *iv,int in,
125 const unsigned char *plaintext,int pn, 125 const unsigned char *plaintext,int pn,
126 const unsigned char *ciphertext,int cn) 126 const unsigned char *ciphertext,int cn,
127 int encdec)
127 { 128 {
128 EVP_CIPHER_CTX ctx; 129 EVP_CIPHER_CTX ctx;
129 unsigned char out[4096]; 130 unsigned char out[4096];
130 int outl,outl2; 131 int outl,outl2;
131 132
132 printf("Testing cipher %s\n",EVP_CIPHER_name(c)); 133 printf("Testing cipher %s%s\n",EVP_CIPHER_name(c),
134 (encdec == 1 ? "(encrypt)" : (encdec == 0 ? "(decrypt)" : "(encrypt/decrypt)")));
133 hexdump(stdout,"Key",key,kn); 135 hexdump(stdout,"Key",key,kn);
134 if(in) 136 if(in)
135 hexdump(stdout,"IV",iv,in); 137 hexdump(stdout,"IV",iv,in);
@@ -143,79 +145,88 @@ static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn,
143 exit(5); 145 exit(5);
144 } 146 }
145 EVP_CIPHER_CTX_init(&ctx); 147 EVP_CIPHER_CTX_init(&ctx);
146 if(!EVP_EncryptInit_ex(&ctx,c,NULL,key,iv)) 148 if (encdec != 0)
147 { 149 {
148 fprintf(stderr,"EncryptInit failed\n"); 150 if(!EVP_EncryptInit_ex(&ctx,c,NULL,key,iv))
149 exit(10); 151 {
150 } 152 fprintf(stderr,"EncryptInit failed\n");
151 EVP_CIPHER_CTX_set_padding(&ctx,0); 153 exit(10);
154 }
155 EVP_CIPHER_CTX_set_padding(&ctx,0);
152 156
153 if(!EVP_EncryptUpdate(&ctx,out,&outl,plaintext,pn)) 157 if(!EVP_EncryptUpdate(&ctx,out,&outl,plaintext,pn))
154 { 158 {
155 fprintf(stderr,"Encrypt failed\n"); 159 fprintf(stderr,"Encrypt failed\n");
156 exit(6); 160 exit(6);
157 } 161 }
158 if(!EVP_EncryptFinal_ex(&ctx,out+outl,&outl2)) 162 if(!EVP_EncryptFinal_ex(&ctx,out+outl,&outl2))
159 { 163 {
160 fprintf(stderr,"EncryptFinal failed\n"); 164 fprintf(stderr,"EncryptFinal failed\n");
161 exit(7); 165 exit(7);
162 } 166 }
163 167
164 if(outl+outl2 != cn) 168 if(outl+outl2 != cn)
165 { 169 {
166 fprintf(stderr,"Ciphertext length mismatch got %d expected %d\n", 170 fprintf(stderr,"Ciphertext length mismatch got %d expected %d\n",
167 outl+outl2,cn); 171 outl+outl2,cn);
168 exit(8); 172 exit(8);
169 } 173 }
170 174
171 if(memcmp(out,ciphertext,cn)) 175 if(memcmp(out,ciphertext,cn))
172 { 176 {
173 fprintf(stderr,"Ciphertext mismatch\n"); 177 fprintf(stderr,"Ciphertext mismatch\n");
174 hexdump(stderr,"Got",out,cn); 178 hexdump(stderr,"Got",out,cn);
175 hexdump(stderr,"Expected",ciphertext,cn); 179 hexdump(stderr,"Expected",ciphertext,cn);
176 exit(9); 180 exit(9);
181 }
177 } 182 }
178 183
179 if(!EVP_DecryptInit_ex(&ctx,c,NULL,key,iv)) 184 if (encdec <= 0)
180 { 185 {
181 fprintf(stderr,"DecryptInit failed\n"); 186 if(!EVP_DecryptInit_ex(&ctx,c,NULL,key,iv))
182 exit(11); 187 {
183 } 188 fprintf(stderr,"DecryptInit failed\n");
184 EVP_CIPHER_CTX_set_padding(&ctx,0); 189 exit(11);
190 }
191 EVP_CIPHER_CTX_set_padding(&ctx,0);
185 192
186 if(!EVP_DecryptUpdate(&ctx,out,&outl,ciphertext,pn)) 193 if(!EVP_DecryptUpdate(&ctx,out,&outl,ciphertext,cn))
187 { 194 {
188 fprintf(stderr,"Decrypt failed\n"); 195 fprintf(stderr,"Decrypt failed\n");
189 exit(6); 196 exit(6);
190 } 197 }
191 if(!EVP_DecryptFinal_ex(&ctx,out+outl,&outl2)) 198 if(!EVP_DecryptFinal_ex(&ctx,out+outl,&outl2))
192 { 199 {
193 fprintf(stderr,"DecryptFinal failed\n"); 200 fprintf(stderr,"DecryptFinal failed\n");
194 exit(7); 201 exit(7);
195 } 202 }
196 203
197 if(outl+outl2 != cn) 204 if(outl+outl2 != cn)
198 { 205 {
199 fprintf(stderr,"Plaintext length mismatch got %d expected %d\n", 206 fprintf(stderr,"Plaintext length mismatch got %d expected %d\n",
200 outl+outl2,cn); 207 outl+outl2,cn);
201 exit(8); 208 exit(8);
202 } 209 }
203 210
204 if(memcmp(out,plaintext,cn)) 211 if(memcmp(out,plaintext,cn))
205 { 212 {
206 fprintf(stderr,"Plaintext mismatch\n"); 213 fprintf(stderr,"Plaintext mismatch\n");
207 hexdump(stderr,"Got",out,cn); 214 hexdump(stderr,"Got",out,cn);
208 hexdump(stderr,"Expected",plaintext,cn); 215 hexdump(stderr,"Expected",plaintext,cn);
209 exit(9); 216 exit(9);
217 }
210 } 218 }
211 219
220 EVP_CIPHER_CTX_cleanup(&ctx);
221
212 printf("\n"); 222 printf("\n");
213 } 223 }
214 224
215static int test_cipher(const char *cipher,const unsigned char *key,int kn, 225static int test_cipher(const char *cipher,const unsigned char *key,int kn,
216 const unsigned char *iv,int in, 226 const unsigned char *iv,int in,
217 const unsigned char *plaintext,int pn, 227 const unsigned char *plaintext,int pn,
218 const unsigned char *ciphertext,int cn) 228 const unsigned char *ciphertext,int cn,
229 int encdec)
219 { 230 {
220 const EVP_CIPHER *c; 231 const EVP_CIPHER *c;
221 232
@@ -223,7 +234,7 @@ static int test_cipher(const char *cipher,const unsigned char *key,int kn,
223 if(!c) 234 if(!c)
224 return 0; 235 return 0;
225 236
226 test1(c,key,kn,iv,in,plaintext,pn,ciphertext,cn); 237 test1(c,key,kn,iv,in,plaintext,pn,ciphertext,cn,encdec);
227 238
228 return 1; 239 return 1;
229 } 240 }
@@ -279,6 +290,8 @@ static int test_digest(const char *digest,
279 290
280 printf("\n"); 291 printf("\n");
281 292
293 EVP_MD_CTX_cleanup(&ctx);
294
282 return 1; 295 return 1;
283 } 296 }
284 297
@@ -328,6 +341,7 @@ int main(int argc,char **argv)
328 char *p; 341 char *p;
329 char *cipher; 342 char *cipher;
330 unsigned char *iv,*key,*plaintext,*ciphertext; 343 unsigned char *iv,*key,*plaintext,*ciphertext;
344 int encdec;
331 int kn,in,pn,cn; 345 int kn,in,pn,cn;
332 346
333 if(!fgets((char *)line,sizeof line,f)) 347 if(!fgets((char *)line,sizeof line,f))
@@ -339,14 +353,21 @@ int main(int argc,char **argv)
339 key=ustrsep(&p,":"); 353 key=ustrsep(&p,":");
340 iv=ustrsep(&p,":"); 354 iv=ustrsep(&p,":");
341 plaintext=ustrsep(&p,":"); 355 plaintext=ustrsep(&p,":");
342 ciphertext=ustrsep(&p,"\n"); 356 ciphertext=ustrsep(&p,":");
357 if (p[-1] == '\n') {
358 p[-1] = '\0';
359 encdec = -1;
360 } else {
361 encdec = atoi(strsep(&p,"\n"));
362 }
363
343 364
344 kn=convert(key); 365 kn=convert(key);
345 in=convert(iv); 366 in=convert(iv);
346 pn=convert(plaintext); 367 pn=convert(plaintext);
347 cn=convert(ciphertext); 368 cn=convert(ciphertext);
348 369
349 if(!test_cipher(cipher,key,kn,iv,in,plaintext,pn,ciphertext,cn) 370 if(!test_cipher(cipher,key,kn,iv,in,plaintext,pn,ciphertext,cn,encdec)
350 && !test_digest(cipher,plaintext,pn,ciphertext,cn)) 371 && !test_digest(cipher,plaintext,pn,ciphertext,cn))
351 { 372 {
352 fprintf(stderr,"Can't find %s\n",cipher); 373 fprintf(stderr,"Can't find %s\n",cipher);
diff --git a/src/lib/libcrypto/evp/evptests.txt b/src/lib/libcrypto/evp/evptests.txt
index 6c1529db37..80bd9c7765 100644
--- a/src/lib/libcrypto/evp/evptests.txt
+++ b/src/lib/libcrypto/evp/evptests.txt
@@ -1,4 +1,4 @@
1#cipher:key:iv:input:output 1#cipher:key:iv:plaintext:ciphertext:0/1(decrypt/encrypt)
2#digest:::input:output 2#digest:::input:output
3 3
4# SHA(1) tests (from shatest.c) 4# SHA(1) tests (from shatest.c)
@@ -15,47 +15,148 @@ MD5:::31323334353637383930313233343536373839303132333435363738393031323334353637
15 15
16# AES 128 ECB tests (from FIPS-197 test vectors, encrypt) 16# AES 128 ECB tests (from FIPS-197 test vectors, encrypt)
17 17
18AES-128-ECB:000102030405060708090A0B0C0D0E0F::00112233445566778899AABBCCDDEEFF:69C4E0D86A7B0430D8CDB78070B4C55A 18AES-128-ECB:000102030405060708090A0B0C0D0E0F::00112233445566778899AABBCCDDEEFF:69C4E0D86A7B0430D8CDB78070B4C55A:1
19 19
20# AES 192 ECB tests (from FIPS-197 test vectors, encrypt) 20# AES 192 ECB tests (from FIPS-197 test vectors, encrypt)
21 21
22AES-192-ECB:000102030405060708090A0B0C0D0E0F1011121314151617::00112233445566778899AABBCCDDEEFF:DDA97CA4864CDFE06EAF70A0EC0D7191 22AES-192-ECB:000102030405060708090A0B0C0D0E0F1011121314151617::00112233445566778899AABBCCDDEEFF:DDA97CA4864CDFE06EAF70A0EC0D7191:1
23 23
24# AES 256 ECB tests (from FIPS-197 test vectors, encrypt) 24# AES 256 ECB tests (from FIPS-197 test vectors, encrypt)
25 25
26AES-256-ECB:000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F::00112233445566778899AABBCCDDEEFF:8EA2B7CA516745BFEAFC49904B496089 26AES-256-ECB:000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F::00112233445566778899AABBCCDDEEFF:8EA2B7CA516745BFEAFC49904B496089:1
27 27
28# AES 128 ECB tests (from NIST test vectors, encrypt) 28# AES 128 ECB tests (from NIST test vectors, encrypt)
29 29
30#AES-128-ECB:00000000000000000000000000000000::00000000000000000000000000000000:C34C052CC0DA8D73451AFE5F03BE297F 30#AES-128-ECB:00000000000000000000000000000000::00000000000000000000000000000000:C34C052CC0DA8D73451AFE5F03BE297F:1
31 31
32# AES 128 ECB tests (from NIST test vectors, decrypt) 32# AES 128 ECB tests (from NIST test vectors, decrypt)
33 33
34#AES-128-ECB:00000000000000000000000000000000::44416AC2D1F53C583303917E6BE9EBE0:00000000000000000000000000000000 34#AES-128-ECB:00000000000000000000000000000000::44416AC2D1F53C583303917E6BE9EBE0:00000000000000000000000000000000:0
35 35
36# AES 192 ECB tests (from NIST test vectors, decrypt) 36# AES 192 ECB tests (from NIST test vectors, decrypt)
37 37
38#AES-192-ECB:000000000000000000000000000000000000000000000000::48E31E9E256718F29229319C19F15BA4:00000000000000000000000000000000 38#AES-192-ECB:000000000000000000000000000000000000000000000000::48E31E9E256718F29229319C19F15BA4:00000000000000000000000000000000:0
39 39
40# AES 256 ECB tests (from NIST test vectors, decrypt) 40# AES 256 ECB tests (from NIST test vectors, decrypt)
41 41
42#AES-256-ECB:0000000000000000000000000000000000000000000000000000000000000000::058CCFFDBBCB382D1F6F56585D8A4ADE:00000000000000000000000000000000 42#AES-256-ECB:0000000000000000000000000000000000000000000000000000000000000000::058CCFFDBBCB382D1F6F56585D8A4ADE:00000000000000000000000000000000:0
43 43
44# AES 128 CBC tests (from NIST test vectors, encrypt) 44# AES 128 CBC tests (from NIST test vectors, encrypt)
45 45
46#AES-128-CBC:00000000000000000000000000000000:00000000000000000000000000000000:00000000000000000000000000000000:8A05FC5E095AF4848A08D328D3688E3D 46#AES-128-CBC:00000000000000000000000000000000:00000000000000000000000000000000:00000000000000000000000000000000:8A05FC5E095AF4848A08D328D3688E3D:1
47 47
48# AES 192 CBC tests (from NIST test vectors, encrypt) 48# AES 192 CBC tests (from NIST test vectors, encrypt)
49 49
50#AES-192-CBC:000000000000000000000000000000000000000000000000:00000000000000000000000000000000:00000000000000000000000000000000:7BD966D53AD8C1BB85D2ADFAE87BB104 50#AES-192-CBC:000000000000000000000000000000000000000000000000:00000000000000000000000000000000:00000000000000000000000000000000:7BD966D53AD8C1BB85D2ADFAE87BB104:1
51 51
52# AES 256 CBC tests (from NIST test vectors, encrypt) 52# AES 256 CBC tests (from NIST test vectors, encrypt)
53 53
54#AES-256-CBC:0000000000000000000000000000000000000000000000000000000000000000:00000000000000000000000000000000:00000000000000000000000000000000:FE3C53653E2F45B56FCD88B2CC898FF0 54#AES-256-CBC:0000000000000000000000000000000000000000000000000000000000000000:00000000000000000000000000000000:00000000000000000000000000000000:FE3C53653E2F45B56FCD88B2CC898FF0:1
55 55
56# AES 128 CBC tests (from NIST test vectors, decrypt) 56# AES 128 CBC tests (from NIST test vectors, decrypt)
57 57
58#AES-128-CBC:00000000000000000000000000000000:00000000000000000000000000000000:FACA37E0B0C85373DF706E73F7C9AF86:00000000000000000000000000000000 58#AES-128-CBC:00000000000000000000000000000000:00000000000000000000000000000000:FACA37E0B0C85373DF706E73F7C9AF86:00000000000000000000000000000000:0
59
60# AES tests from NIST document SP800-38A
61# For all ECB encrypts and decrypts, the transformed sequence is
62# AES-bits-ECB:key::plaintext:ciphertext:encdec
63# ECB-AES128.Encrypt and ECB-AES128.Decrypt
64AES-128-ECB:2B7E151628AED2A6ABF7158809CF4F3C::6BC1BEE22E409F96E93D7E117393172A:3AD77BB40D7A3660A89ECAF32466EF97
65AES-128-ECB:2B7E151628AED2A6ABF7158809CF4F3C::AE2D8A571E03AC9C9EB76FAC45AF8E51:F5D3D58503B9699DE785895A96FDBAAF
66AES-128-ECB:2B7E151628AED2A6ABF7158809CF4F3C::30C81C46A35CE411E5FBC1191A0A52EF:43B1CD7F598ECE23881B00E3ED030688
67AES-128-ECB:2B7E151628AED2A6ABF7158809CF4F3C::F69F2445DF4F9B17AD2B417BE66C3710:7B0C785E27E8AD3F8223207104725DD4
68# ECB-AES192.Encrypt and ECB-AES192.Decrypt
69AES-192-ECB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B::6BC1BEE22E409F96E93D7E117393172A:BD334F1D6E45F25FF712A214571FA5CC
70AES-192-ECB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B::AE2D8A571E03AC9C9EB76FAC45AF8E51:974104846D0AD3AD7734ECB3ECEE4EEF
71AES-192-ECB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B::30C81C46A35CE411E5FBC1191A0A52EF:EF7AFD2270E2E60ADCE0BA2FACE6444E
72AES-192-ECB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B::F69F2445DF4F9B17AD2B417BE66C3710:9A4B41BA738D6C72FB16691603C18E0E
73# ECB-AES256.Encrypt and ECB-AES256.Decrypt
74AES-256-ECB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4::6BC1BEE22E409F96E93D7E117393172A:F3EED1BDB5D2A03C064B5A7E3DB181F8
75AES-256-ECB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4::AE2D8A571E03AC9C9EB76FAC45AF8E51:591CCB10D410ED26DC5BA74A31362870
76AES-256-ECB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4::30C81C46A35CE411E5FBC1191A0A52EF:B6ED21B99CA6F4F9F153E7B1BEAFED1D
77AES-256-ECB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4::F69F2445DF4F9B17AD2B417BE66C3710:23304B7A39F9F3FF067D8D8F9E24ECC7
78# For all CBC encrypts and decrypts, the transformed sequence is
79# AES-bits-CBC:key:IV/ciphertext':plaintext:ciphertext:encdec
80# CBC-AES128.Encrypt and CBC-AES128.Decrypt
81AES-128-CBC:2B7E151628AED2A6ABF7158809CF4F3C:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:7649ABAC8119B246CEE98E9B12E9197D
82AES-128-CBC:2B7E151628AED2A6ABF7158809CF4F3C:7649ABAC8119B246CEE98E9B12E9197D:AE2D8A571E03AC9C9EB76FAC45AF8E51:5086CB9B507219EE95DB113A917678B2
83AES-128-CBC:2B7E151628AED2A6ABF7158809CF4F3C:5086CB9B507219EE95DB113A917678B2:30C81C46A35CE411E5FBC1191A0A52EF:73BED6B8E3C1743B7116E69E22229516
84AES-128-CBC:2B7E151628AED2A6ABF7158809CF4F3C:73BED6B8E3C1743B7116E69E22229516:F69F2445DF4F9B17AD2B417BE66C3710:3FF1CAA1681FAC09120ECA307586E1A7
85# CBC-AES192.Encrypt and CBC-AES192.Decrypt
86AES-192-CBC:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:4F021DB243BC633D7178183A9FA071E8
87AES-192-CBC:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:4F021DB243BC633D7178183A9FA071E8:AE2D8A571E03AC9C9EB76FAC45AF8E51:B4D9ADA9AD7DEDF4E5E738763F69145A
88AES-192-CBC:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:B4D9ADA9AD7DEDF4E5E738763F69145A:30C81C46A35CE411E5FBC1191A0A52EF:571B242012FB7AE07FA9BAAC3DF102E0
89AES-192-CBC:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:571B242012FB7AE07FA9BAAC3DF102E0:F69F2445DF4F9B17AD2B417BE66C3710:08B0E27988598881D920A9E64F5615CD
90# CBC-AES256.Encrypt and CBC-AES256.Decrypt
91AES-256-CBC:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:F58C4C04D6E5F1BA779EABFB5F7BFBD6
92AES-256-CBC:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:F58C4C04D6E5F1BA779EABFB5F7BFBD6:AE2D8A571E03AC9C9EB76FAC45AF8E51:9CFC4E967EDB808D679F777BC6702C7D
93AES-256-CBC:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:9CFC4E967EDB808D679F777BC6702C7D:30C81C46A35CE411E5FBC1191A0A52EF:39F23369A9D9BACFA530E26304231461
94AES-256-CBC:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:39F23369A9D9BACFA530E26304231461:F69F2445DF4F9B17AD2B417BE66C3710:B2EB05E2C39BE9FCDA6C19078C6A9D1B
95# We don't support CFB{1,8}-AESxxx.{En,De}crypt
96# For all CFB128 encrypts and decrypts, the transformed sequence is
97# AES-bits-CFB:key:IV/ciphertext':plaintext:ciphertext:encdec
98# CFB128-AES128.Encrypt
99AES-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:3B3FD92EB72DAD20333449F8E83CFB4A:1
100AES-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:3B3FD92EB72DAD20333449F8E83CFB4A:AE2D8A571E03AC9C9EB76FAC45AF8E51:C8A64537A0B3A93FCDE3CDAD9F1CE58B:1
101AES-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:C8A64537A0B3A93FCDE3CDAD9F1CE58B:30C81C46A35CE411E5FBC1191A0A52EF:26751F67A3CBB140B1808CF187A4F4DF:1
102AES-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:26751F67A3CBB140B1808CF187A4F4DF:F69F2445DF4F9B17AD2B417BE66C3710:C04B05357C5D1C0EEAC4C66F9FF7F2E6:1
103# CFB128-AES128.Decrypt
104AES-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:3B3FD92EB72DAD20333449F8E83CFB4A:0
105AES-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:3B3FD92EB72DAD20333449F8E83CFB4A:AE2D8A571E03AC9C9EB76FAC45AF8E51:C8A64537A0B3A93FCDE3CDAD9F1CE58B:0
106AES-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:C8A64537A0B3A93FCDE3CDAD9F1CE58B:30C81C46A35CE411E5FBC1191A0A52EF:26751F67A3CBB140B1808CF187A4F4DF:0
107AES-128-CFB:2B7E151628AED2A6ABF7158809CF4F3C:26751F67A3CBB140B1808CF187A4F4DF:F69F2445DF4F9B17AD2B417BE66C3710:C04B05357C5D1C0EEAC4C66F9FF7F2E6:0
108# CFB128-AES192.Encrypt
109AES-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:CDC80D6FDDF18CAB34C25909C99A4174:1
110AES-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:CDC80D6FDDF18CAB34C25909C99A4174:AE2D8A571E03AC9C9EB76FAC45AF8E51:67CE7F7F81173621961A2B70171D3D7A:1
111AES-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:67CE7F7F81173621961A2B70171D3D7A:30C81C46A35CE411E5FBC1191A0A52EF:2E1E8A1DD59B88B1C8E60FED1EFAC4C9:1
112AES-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:2E1E8A1DD59B88B1C8E60FED1EFAC4C9:F69F2445DF4F9B17AD2B417BE66C3710:C05F9F9CA9834FA042AE8FBA584B09FF:1
113# CFB128-AES192.Decrypt
114AES-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:CDC80D6FDDF18CAB34C25909C99A4174:0
115AES-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:CDC80D6FDDF18CAB34C25909C99A4174:AE2D8A571E03AC9C9EB76FAC45AF8E51:67CE7F7F81173621961A2B70171D3D7A:0
116AES-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:67CE7F7F81173621961A2B70171D3D7A:30C81C46A35CE411E5FBC1191A0A52EF:2E1E8A1DD59B88B1C8E60FED1EFAC4C9:0
117AES-192-CFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:2E1E8A1DD59B88B1C8E60FED1EFAC4C9:F69F2445DF4F9B17AD2B417BE66C3710:C05F9F9CA9834FA042AE8FBA584B09FF:0
118# CFB128-AES256.Encrypt
119AES-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:DC7E84BFDA79164B7ECD8486985D3860:1
120AES-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:DC7E84BFDA79164B7ECD8486985D3860:AE2D8A571E03AC9C9EB76FAC45AF8E51:39FFED143B28B1C832113C6331E5407B:1
121AES-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:39FFED143B28B1C832113C6331E5407B:30C81C46A35CE411E5FBC1191A0A52EF:DF10132415E54B92A13ED0A8267AE2F9:1
122AES-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:DF10132415E54B92A13ED0A8267AE2F9:F69F2445DF4F9B17AD2B417BE66C3710:75A385741AB9CEF82031623D55B1E471:1
123# CFB128-AES256.Decrypt
124AES-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:DC7E84BFDA79164B7ECD8486985D3860:0
125AES-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:DC7E84BFDA79164B7ECD8486985D3860:AE2D8A571E03AC9C9EB76FAC45AF8E51:39FFED143B28B1C832113C6331E5407B:0
126AES-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:39FFED143B28B1C832113C6331E5407B:30C81C46A35CE411E5FBC1191A0A52EF:DF10132415E54B92A13ED0A8267AE2F9:0
127AES-256-CFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:DF10132415E54B92A13ED0A8267AE2F9:F69F2445DF4F9B17AD2B417BE66C3710:75A385741AB9CEF82031623D55B1E471:0
128# For all OFB encrypts and decrypts, the transformed sequence is
129# AES-bits-CFB:key:IV/output':plaintext:ciphertext:encdec
130# OFB-AES128.Encrypt
131AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:3B3FD92EB72DAD20333449F8E83CFB4A:1
132AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:50FE67CC996D32B6DA0937E99BAFEC60:AE2D8A571E03AC9C9EB76FAC45AF8E51:7789508D16918F03F53C52DAC54ED825:1
133AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:D9A4DADA0892239F6B8B3D7680E15674:30C81C46A35CE411E5FBC1191A0A52EF:9740051E9C5FECF64344F7A82260EDCC:1
134AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:A78819583F0308E7A6BF36B1386ABF23:F69F2445DF4F9B17AD2B417BE66C3710:304C6528F659C77866A510D9C1D6AE5E:1
135# OFB-AES128.Decrypt
136AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:3B3FD92EB72DAD20333449F8E83CFB4A:0
137AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:50FE67CC996D32B6DA0937E99BAFEC60:AE2D8A571E03AC9C9EB76FAC45AF8E51:7789508D16918F03F53C52DAC54ED825:0
138AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:D9A4DADA0892239F6B8B3D7680E15674:30C81C46A35CE411E5FBC1191A0A52EF:9740051E9C5FECF64344F7A82260EDCC:0
139AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:A78819583F0308E7A6BF36B1386ABF23:F69F2445DF4F9B17AD2B417BE66C3710:304C6528F659C77866A510D9C1D6AE5E:0
140# OFB-AES192.Encrypt
141AES-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:CDC80D6FDDF18CAB34C25909C99A4174:1
142AES-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:A609B38DF3B1133DDDFF2718BA09565E:AE2D8A571E03AC9C9EB76FAC45AF8E51:FCC28B8D4C63837C09E81700C1100401:1
143AES-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:52EF01DA52602FE0975F78AC84BF8A50:30C81C46A35CE411E5FBC1191A0A52EF:8D9A9AEAC0F6596F559C6D4DAF59A5F2:1
144AES-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:BD5286AC63AABD7EB067AC54B553F71D:F69F2445DF4F9B17AD2B417BE66C3710:6D9F200857CA6C3E9CAC524BD9ACC92A:1
145# OFB-AES192.Decrypt
146AES-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:CDC80D6FDDF18CAB34C25909C99A4174:0
147AES-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:A609B38DF3B1133DDDFF2718BA09565E:AE2D8A571E03AC9C9EB76FAC45AF8E51:FCC28B8D4C63837C09E81700C1100401:0
148AES-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:52EF01DA52602FE0975F78AC84BF8A50:30C81C46A35CE411E5FBC1191A0A52EF:8D9A9AEAC0F6596F559C6D4DAF59A5F2:0
149AES-192-OFB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:BD5286AC63AABD7EB067AC54B553F71D:F69F2445DF4F9B17AD2B417BE66C3710:6D9F200857CA6C3E9CAC524BD9ACC92A:0
150# OFB-AES256.Encrypt
151AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:DC7E84BFDA79164B7ECD8486985D3860:1
152AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:B7BF3A5DF43989DD97F0FA97EBCE2F4A:AE2D8A571E03AC9C9EB76FAC45AF8E51:4FEBDC6740D20B3AC88F6AD82A4FB08D:1
153AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:E1C656305ED1A7A6563805746FE03EDC:30C81C46A35CE411E5FBC1191A0A52EF:71AB47A086E86EEDF39D1C5BBA97C408:1
154AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:41635BE625B48AFC1666DD42A09D96E7:F69F2445DF4F9B17AD2B417BE66C3710:0126141D67F37BE8538F5A8BE740E484:1
155# OFB-AES256.Decrypt
156AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:DC7E84BFDA79164B7ECD8486985D3860:0
157AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:B7BF3A5DF43989DD97F0FA97EBCE2F4A:AE2D8A571E03AC9C9EB76FAC45AF8E51:4FEBDC6740D20B3AC88F6AD82A4FB08D:0
158AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:E1C656305ED1A7A6563805746FE03EDC:30C81C46A35CE411E5FBC1191A0A52EF:71AB47A086E86EEDF39D1C5BBA97C408:0
159AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:41635BE625B48AFC1666DD42A09D96E7:F69F2445DF4F9B17AD2B417BE66C3710:0126141D67F37BE8538F5A8BE740E484:0
59 160
60# DES ECB tests (from destest) 161# DES ECB tests (from destest)
61 162
diff --git a/src/lib/libcrypto/evp/m_md2.c b/src/lib/libcrypto/evp/m_md2.c
index 2209416142..50914c83b3 100644
--- a/src/lib/libcrypto/evp/m_md2.c
+++ b/src/lib/libcrypto/evp/m_md2.c
@@ -56,27 +56,41 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58 58
59#ifndef OPENSSL_NO_MD2
59#include <stdio.h> 60#include <stdio.h>
60#include "cryptlib.h" 61#include "cryptlib.h"
61#include "evp.h" 62#include <openssl/evp.h>
62#include "objects.h" 63#include <openssl/objects.h>
63#include "x509.h" 64#include <openssl/x509.h>
65#include <openssl/md2.h>
64 66
65static EVP_MD md2_md= 67static int init(EVP_MD_CTX *ctx)
68 { return MD2_Init(ctx->md_data); }
69
70static int update(EVP_MD_CTX *ctx,const void *data,unsigned long count)
71 { return MD2_Update(ctx->md_data,data,count); }
72
73static int final(EVP_MD_CTX *ctx,unsigned char *md)
74 { return MD2_Final(md,ctx->md_data); }
75
76static const EVP_MD md2_md=
66 { 77 {
67 NID_md2, 78 NID_md2,
68 NID_md2WithRSAEncryption, 79 NID_md2WithRSAEncryption,
69 MD2_DIGEST_LENGTH, 80 MD2_DIGEST_LENGTH,
70 MD2_Init, 81 0,
71 MD2_Update, 82 init,
72 MD2_Final, 83 update,
84 final,
85 NULL,
86 NULL,
73 EVP_PKEY_RSA_method, 87 EVP_PKEY_RSA_method,
74 MD2_BLOCK, 88 MD2_BLOCK,
75 sizeof(EVP_MD *)+sizeof(MD2_CTX), 89 sizeof(EVP_MD *)+sizeof(MD2_CTX),
76 }; 90 };
77 91
78EVP_MD *EVP_md2() 92const EVP_MD *EVP_md2(void)
79 { 93 {
80 return(&md2_md); 94 return(&md2_md);
81 } 95 }
82 96#endif
diff --git a/src/lib/libcrypto/evp/m_mdc2.c b/src/lib/libcrypto/evp/m_mdc2.c
index 64a853eb7f..9f6467c931 100644
--- a/src/lib/libcrypto/evp/m_mdc2.c
+++ b/src/lib/libcrypto/evp/m_mdc2.c
@@ -56,26 +56,41 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58 58
59#ifndef OPENSSL_NO_MDC2
59#include <stdio.h> 60#include <stdio.h>
60#include "cryptlib.h" 61#include "cryptlib.h"
61#include "evp.h" 62#include <openssl/evp.h>
62#include "objects.h" 63#include <openssl/objects.h>
63#include "x509.h" 64#include <openssl/x509.h>
65#include <openssl/mdc2.h>
64 66
65static EVP_MD mdc2_md= 67static int init(EVP_MD_CTX *ctx)
68 { return MDC2_Init(ctx->md_data); }
69
70static int update(EVP_MD_CTX *ctx,const void *data,unsigned long count)
71 { return MDC2_Update(ctx->md_data,data,count); }
72
73static int final(EVP_MD_CTX *ctx,unsigned char *md)
74 { return MDC2_Final(md,ctx->md_data); }
75
76static const EVP_MD mdc2_md=
66 { 77 {
67 NID_mdc2, 78 NID_mdc2,
68 NID_mdc2WithRSA, 79 NID_mdc2WithRSA,
69 MDC2_DIGEST_LENGTH, 80 MDC2_DIGEST_LENGTH,
70 MDC2_Init, 81 0,
71 MDC2_Update, 82 init,
72 MDC2_Final, 83 update,
84 final,
85 NULL,
86 NULL,
73 EVP_PKEY_RSA_ASN1_OCTET_STRING_method, 87 EVP_PKEY_RSA_ASN1_OCTET_STRING_method,
74 MDC2_BLOCK, 88 MDC2_BLOCK,
75 sizeof(EVP_MD *)+sizeof(MDC2_CTX), 89 sizeof(EVP_MD *)+sizeof(MDC2_CTX),
76 }; 90 };
77 91
78EVP_MD *EVP_mdc2() 92const EVP_MD *EVP_mdc2(void)
79 { 93 {
80 return(&mdc2_md); 94 return(&mdc2_md);
81 } 95 }
96#endif
diff --git a/src/lib/libcrypto/evp/m_sha.c b/src/lib/libcrypto/evp/m_sha.c
index af4e434a22..10697c7ed3 100644
--- a/src/lib/libcrypto/evp/m_sha.c
+++ b/src/lib/libcrypto/evp/m_sha.c
@@ -56,27 +56,40 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58 58
59#ifndef OPENSSL_NO_SHA
59#include <stdio.h> 60#include <stdio.h>
60#include "cryptlib.h" 61#include "cryptlib.h"
61#include "evp.h" 62#include <openssl/evp.h>
62#include "objects.h" 63#include <openssl/objects.h>
63#include "x509.h" 64#include <openssl/x509.h>
64 65
65static EVP_MD sha_md= 66static int init(EVP_MD_CTX *ctx)
67 { return SHA_Init(ctx->md_data); }
68
69static int update(EVP_MD_CTX *ctx,const void *data,unsigned long count)
70 { return SHA_Update(ctx->md_data,data,count); }
71
72static int final(EVP_MD_CTX *ctx,unsigned char *md)
73 { return SHA_Final(md,ctx->md_data); }
74
75static const EVP_MD sha_md=
66 { 76 {
67 NID_sha, 77 NID_sha,
68 NID_shaWithRSAEncryption, 78 NID_shaWithRSAEncryption,
69 SHA_DIGEST_LENGTH, 79 SHA_DIGEST_LENGTH,
70 SHA_Init, 80 0,
71 SHA_Update, 81 init,
72 SHA_Final, 82 update,
83 final,
84 NULL,
85 NULL,
73 EVP_PKEY_RSA_method, 86 EVP_PKEY_RSA_method,
74 SHA_CBLOCK, 87 SHA_CBLOCK,
75 sizeof(EVP_MD *)+sizeof(SHA_CTX), 88 sizeof(EVP_MD *)+sizeof(SHA_CTX),
76 }; 89 };
77 90
78EVP_MD *EVP_sha() 91const EVP_MD *EVP_sha(void)
79 { 92 {
80 return(&sha_md); 93 return(&sha_md);
81 } 94 }
82 95#endif
diff --git a/src/lib/libcrypto/hmac/hmactest.c b/src/lib/libcrypto/hmac/hmactest.c
index 5938e375dc..96d3beb8e6 100644
--- a/src/lib/libcrypto/hmac/hmactest.c
+++ b/src/lib/libcrypto/hmac/hmactest.c
@@ -59,9 +59,22 @@
59#include <stdio.h> 59#include <stdio.h>
60#include <string.h> 60#include <string.h>
61#include <stdlib.h> 61#include <stdlib.h>
62#include "hmac.h"
63 62
64struct test_st 63#ifdef OPENSSL_NO_HMAC
64int main(int argc, char *argv[])
65{
66 printf("No HMAC support\n");
67 return(0);
68}
69#else
70#include <openssl/hmac.h>
71#include <openssl/md5.h>
72
73#ifdef CHARSET_EBCDIC
74#include <openssl/ebcdic.h>
75#endif
76
77static struct test_st
65 { 78 {
66 unsigned char key[16]; 79 unsigned char key[16];
67 int key_len; 80 int key_len;
@@ -102,19 +115,19 @@ struct test_st
102 }; 115 };
103 116
104 117
105#ifndef NOPROTO
106static char *pt(unsigned char *md); 118static char *pt(unsigned char *md);
107#else 119int main(int argc, char *argv[])
108static char *pt();
109#endif
110
111int main(argc,argv)
112int argc;
113char *argv[];
114 { 120 {
115 int i,err=0; 121 int i,err=0;
116 char *p; 122 char *p;
117 123
124#ifdef CHARSET_EBCDIC
125 ebcdic2ascii(test[0].data, test[0].data, test[0].data_len);
126 ebcdic2ascii(test[1].data, test[1].data, test[1].data_len);
127 ebcdic2ascii(test[2].key, test[2].key, test[2].key_len);
128 ebcdic2ascii(test[2].data, test[2].data, test[2].data_len);
129#endif
130
118 for (i=0; i<4; i++) 131 for (i=0; i<4; i++)
119 { 132 {
120 p=pt(HMAC(EVP_md5(), 133 p=pt(HMAC(EVP_md5(),
@@ -135,8 +148,7 @@ char *argv[];
135 return(0); 148 return(0);
136 } 149 }
137 150
138static char *pt(md) 151static char *pt(unsigned char *md)
139unsigned char *md;
140 { 152 {
141 int i; 153 int i;
142 static char buf[80]; 154 static char buf[80];
@@ -145,3 +157,4 @@ unsigned char *md;
145 sprintf(&(buf[i*2]),"%02x",md[i]); 157 sprintf(&(buf[i*2]),"%02x",md[i]);
146 return(buf); 158 return(buf);
147 } 159 }
160#endif
diff --git a/src/lib/libcrypto/install.com b/src/lib/libcrypto/install.com
index b75d1b44b2..b3d155e964 100644
--- a/src/lib/libcrypto/install.com
+++ b/src/lib/libcrypto/install.com
@@ -32,20 +32,22 @@ $ IF F$PARSE("WRK_SSLALIB:") .EQS. "" THEN -
32$ IF F$PARSE("WRK_SSLINCLUDE:") .EQS. "" THEN - 32$ IF F$PARSE("WRK_SSLINCLUDE:") .EQS. "" THEN -
33 CREATE/DIR/LOG WRK_SSLINCLUDE: 33 CREATE/DIR/LOG WRK_SSLINCLUDE:
34$ 34$
35$ SDIRS := ,MD2,MD5,SHA,MDC2,HMAC,RIPEMD,- 35$ SDIRS := ,MD2,MD4,MD5,SHA,MDC2,HMAC,RIPEMD,-
36 DES,RC2,RC4,RC5,IDEA,BF,CAST,- 36 DES,RC2,RC4,RC5,IDEA,BF,CAST,-
37 BN,RSA,DSA,DH,- 37 BN,EC,RSA,DSA,DH,DSO,ENGINE,AES,-
38 BUFFER,BIO,STACK,LHASH,RAND,ERR,OBJECTS,- 38 BUFFER,BIO,STACK,LHASH,RAND,ERR,OBJECTS,-
39 EVP,ASN1,PEM,X509,X509V3,- 39 EVP,ASN1,PEM,X509,X509V3,CONF,TXT_DB,PKCS7,PKCS12,COMP,OCSP,-
40 CONF,TXT_DB,PKCS7,PKCS12,COMP 40 UI,KRB5
41$ EXHEADER_ := crypto.h,tmdiff.h,opensslv.h,opensslconf.h,ebcdic.h 41$ EXHEADER_ := crypto.h,tmdiff.h,opensslv.h,opensslconf.h,ebcdic.h,-
42 symhacks.h,ossl_typ.h
42$ EXHEADER_MD2 := md2.h 43$ EXHEADER_MD2 := md2.h
44$ EXHEADER_MD4 := md4.h
43$ EXHEADER_MD5 := md5.h 45$ EXHEADER_MD5 := md5.h
44$ EXHEADER_SHA := sha.h 46$ EXHEADER_SHA := sha.h
45$ EXHEADER_MDC2 := mdc2.h 47$ EXHEADER_MDC2 := mdc2.h
46$ EXHEADER_HMAC := hmac.h 48$ EXHEADER_HMAC := hmac.h
47$ EXHEADER_RIPEMD := ripemd.h 49$ EXHEADER_RIPEMD := ripemd.h
48$ EXHEADER_DES := des.h 50$ EXHEADER_DES := des.h,des_old.h
49$ EXHEADER_RC2 := rc2.h 51$ EXHEADER_RC2 := rc2.h
50$ EXHEADER_RC4 := rc4.h 52$ EXHEADER_RC4 := rc4.h
51$ EXHEADER_RC5 := rc5.h 53$ EXHEADER_RC5 := rc5.h
@@ -53,26 +55,33 @@ $ EXHEADER_IDEA := idea.h
53$ EXHEADER_BF := blowfish.h 55$ EXHEADER_BF := blowfish.h
54$ EXHEADER_CAST := cast.h 56$ EXHEADER_CAST := cast.h
55$ EXHEADER_BN := bn.h 57$ EXHEADER_BN := bn.h
58$ EXHEADER_EC := ec.h
56$ EXHEADER_RSA := rsa.h 59$ EXHEADER_RSA := rsa.h
57$ EXHEADER_DSA := dsa.h 60$ EXHEADER_DSA := dsa.h
58$ EXHEADER_DH := dh.h 61$ EXHEADER_DH := dh.h
62$ EXHEADER_DSO := dso.h
63$ EXHEADER_ENGINE := engine.h
64$ EXHEADER_AES := aes.h
59$ EXHEADER_BUFFER := buffer.h 65$ EXHEADER_BUFFER := buffer.h
60$ EXHEADER_BIO := bio.h 66$ EXHEADER_BIO := bio.h
61$ EXHEADER_STACK := stack.h,safestack.h 67$ EXHEADER_STACK := stack.h,safestack.h
62$ EXHEADER_LHASH := lhash.h 68$ EXHEADER_LHASH := lhash.h
63$ EXHEADER_RAND := rand.h 69$ EXHEADER_RAND := rand.h
64$ EXHEADER_ERR := err.h 70$ EXHEADER_ERR := err.h
65$ EXHEADER_OBJECTS := objects.h 71$ EXHEADER_OBJECTS := objects.h,obj_mac.h
66$ EXHEADER_EVP := evp.h 72$ EXHEADER_EVP := evp.h
67$ EXHEADER_ASN1 := asn1.h,asn1_mac.h 73$ EXHEADER_ASN1 := asn1.h,asn1_mac.h,asn1t.h
68$ EXHEADER_PEM := pem.h,pem2.h 74$ EXHEADER_PEM := pem.h,pem2.h
69$ EXHEADER_X509 := x509.h,x509_vfy.h 75$ EXHEADER_X509 := x509.h,x509_vfy.h
70$ EXHEADER_X509V3 := x509v3.h 76$ EXHEADER_X509V3 := x509v3.h
71$ EXHEADER_CONF := conf.h 77$ EXHEADER_CONF := conf.h,conf_api.h
72$ EXHEADER_TXT_DB := txt_db.h 78$ EXHEADER_TXT_DB := txt_db.h
73$ EXHEADER_PKCS7 := pkcs7.h 79$ EXHEADER_PKCS7 := pkcs7.h
74$ EXHEADER_PKCS12 := pkcs12.h 80$ EXHEADER_PKCS12 := pkcs12.h
75$ EXHEADER_COMP := comp.h 81$ EXHEADER_COMP := comp.h
82$ EXHEADER_OCSP := ocsp.h
83$ EXHEADER_UI := ui.h,ui_compat.h
84$ EXHEADER_KRB5 := krb5_asn.h
76$ LIBS := LIBCRYPTO 85$ LIBS := LIBCRYPTO
77$ 86$
78$ VEXE_DIR := [-.VAX.EXE.CRYPTO] 87$ VEXE_DIR := [-.VAX.EXE.CRYPTO]
@@ -90,6 +99,7 @@ $ COPY 'tmp' WRK_SSLINCLUDE: /LOG
90$ ELSE 99$ ELSE
91$ COPY [.'D']'tmp' WRK_SSLINCLUDE: /LOG 100$ COPY [.'D']'tmp' WRK_SSLINCLUDE: /LOG
92$ ENDIF 101$ ENDIF
102$ SET FILE/PROT=WORLD:RE WRK_SSLINCLUDE:'tmp'
93$ GOTO LOOP_SDIRS 103$ GOTO LOOP_SDIRS
94$ LOOP_SDIRS_END: 104$ LOOP_SDIRS_END:
95$ 105$
diff --git a/src/lib/libcrypto/lhash/lh_test.c b/src/lib/libcrypto/lhash/lh_test.c
index 294b42bc82..85700c859b 100644
--- a/src/lib/libcrypto/lhash/lh_test.c
+++ b/src/lib/libcrypto/lhash/lh_test.c
@@ -59,7 +59,7 @@
59#include <stdio.h> 59#include <stdio.h>
60#include <stdlib.h> 60#include <stdlib.h>
61#include <string.h> 61#include <string.h>
62#include "lhash.h" 62#include <openssl/lhash.h>
63 63
64main() 64main()
65 { 65 {
@@ -75,9 +75,8 @@ main()
75 buf[0]='\0'; 75 buf[0]='\0';
76 fgets(buf,256,stdin); 76 fgets(buf,256,stdin);
77 if (buf[0] == '\0') break; 77 if (buf[0] == '\0') break;
78 buf[256]='\0';
79 i=strlen(buf); 78 i=strlen(buf);
80 p=Malloc(i+1); 79 p=OPENSSL_malloc(i+1);
81 memcpy(p,buf,i+1); 80 memcpy(p,buf,i+1);
82 lh_insert(conf,p); 81 lh_insert(conf,p);
83 } 82 }
diff --git a/src/lib/libcrypto/lhash/num.pl b/src/lib/libcrypto/lhash/num.pl
index 4d937c1f90..30fedf9cd5 100644
--- a/src/lib/libcrypto/lhash/num.pl
+++ b/src/lib/libcrypto/lhash/num.pl
@@ -1,4 +1,4 @@
1#!/usr/bin/perl 1#!/usr/local/bin/perl
2 2
3#node 10 -> 4 3#node 10 -> 4
4 4
diff --git a/src/lib/libcrypto/md2/md2.c b/src/lib/libcrypto/md2/md2.c
index 7f3ab64a43..f4d6f62264 100644
--- a/src/lib/libcrypto/md2/md2.c
+++ b/src/lib/libcrypto/md2/md2.c
@@ -58,25 +58,15 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include <stdlib.h> 60#include <stdlib.h>
61#include "md2.h" 61#include <openssl/md2.h>
62 62
63#define BUFSIZE 1024*16 63#define BUFSIZE 1024*16
64 64
65#ifndef NOPROTO
66void do_fp(FILE *f); 65void do_fp(FILE *f);
67void pt(unsigned char *md); 66void pt(unsigned char *md);
68int read(int, void *, unsigned int); 67int read(int, void *, unsigned int);
69void exit(int); 68void exit(int);
70#else 69int main(int argc, char *argv[])
71void do_fp();
72void pt();
73int read();
74void exit();
75#endif
76
77int main(argc, argv)
78int argc;
79char *argv[];
80 { 70 {
81 int i,err=0; 71 int i,err=0;
82 FILE *IN; 72 FILE *IN;
@@ -105,8 +95,7 @@ char *argv[];
105 return(err); 95 return(err);
106 } 96 }
107 97
108void do_fp(f) 98void do_fp(FILE *f)
109FILE *f;
110 { 99 {
111 MD2_CTX c; 100 MD2_CTX c;
112 unsigned char md[MD2_DIGEST_LENGTH]; 101 unsigned char md[MD2_DIGEST_LENGTH];
@@ -125,8 +114,7 @@ FILE *f;
125 pt(md); 114 pt(md);
126 } 115 }
127 116
128void pt(md) 117void pt(unsigned char *md)
129unsigned char *md;
130 { 118 {
131 int i; 119 int i;
132 120
diff --git a/src/lib/libcrypto/md2/md2.h b/src/lib/libcrypto/md2/md2.h
index 0d3592506c..ad9241455c 100644
--- a/src/lib/libcrypto/md2/md2.h
+++ b/src/lib/libcrypto/md2/md2.h
@@ -59,11 +59,7 @@
59#ifndef HEADER_MD2_H 59#ifndef HEADER_MD2_H
60#define HEADER_MD2_H 60#define HEADER_MD2_H
61 61
62#ifdef __cplusplus 62#ifdef OPENSSL_NO_MD2
63extern "C" {
64#endif
65
66#ifdef NO_MD2
67#error MD2 is disabled. 63#error MD2 is disabled.
68#endif 64#endif
69 65
@@ -71,6 +67,10 @@ extern "C" {
71#define MD2_BLOCK 16 67#define MD2_BLOCK 16
72#include <openssl/opensslconf.h> /* MD2_INT */ 68#include <openssl/opensslconf.h> /* MD2_INT */
73 69
70#ifdef __cplusplus
71extern "C" {
72#endif
73
74typedef struct MD2state_st 74typedef struct MD2state_st
75 { 75 {
76 int num; 76 int num;
@@ -80,10 +80,10 @@ typedef struct MD2state_st
80 } MD2_CTX; 80 } MD2_CTX;
81 81
82const char *MD2_options(void); 82const char *MD2_options(void);
83void MD2_Init(MD2_CTX *c); 83int MD2_Init(MD2_CTX *c);
84void MD2_Update(MD2_CTX *c, register unsigned char *data, unsigned long len); 84int MD2_Update(MD2_CTX *c, const unsigned char *data, unsigned long len);
85void MD2_Final(unsigned char *md, MD2_CTX *c); 85int MD2_Final(unsigned char *md, MD2_CTX *c);
86unsigned char *MD2(unsigned char *d, unsigned long n,unsigned char *md); 86unsigned char *MD2(const unsigned char *d, unsigned long n,unsigned char *md);
87#ifdef __cplusplus 87#ifdef __cplusplus
88} 88}
89#endif 89#endif
diff --git a/src/lib/libcrypto/md2/md2_dgst.c b/src/lib/libcrypto/md2/md2_dgst.c
index 5cbd36f3fe..e25dd00e02 100644
--- a/src/lib/libcrypto/md2/md2_dgst.c
+++ b/src/lib/libcrypto/md2/md2_dgst.c
@@ -59,23 +59,19 @@
59#include <stdio.h> 59#include <stdio.h>
60#include <stdlib.h> 60#include <stdlib.h>
61#include <string.h> 61#include <string.h>
62#include "md2.h" 62#include <openssl/md2.h>
63#include <openssl/opensslv.h>
63 64
64char *MD2_version="MD2 part of SSLeay 0.9.0b 29-Jun-1998"; 65const char *MD2_version="MD2" OPENSSL_VERSION_PTEXT;
65 66
66/* Implemented from RFC1319 The MD2 Message-Digest Algorithm 67/* Implemented from RFC1319 The MD2 Message-Digest Algorithm
67 */ 68 */
68 69
69#define UCHAR unsigned char 70#define UCHAR unsigned char
70 71
71#ifndef NOPROTO 72static void md2_block(MD2_CTX *c, const unsigned char *d);
72static void md2_block(MD2_CTX *c, unsigned char *d);
73#else
74static void md2_block();
75#endif
76
77/* The magic S table - I have converted it to hex since it is 73/* The magic S table - I have converted it to hex since it is
78 * basicaly just a random byte string. */ 74 * basically just a random byte string. */
79static MD2_INT S[256]={ 75static MD2_INT S[256]={
80 0x29, 0x2E, 0x43, 0xC9, 0xA2, 0xD8, 0x7C, 0x01, 76 0x29, 0x2E, 0x43, 0xC9, 0xA2, 0xD8, 0x7C, 0x01,
81 0x3D, 0x36, 0x54, 0xA1, 0xEC, 0xF0, 0x06, 0x13, 77 0x3D, 0x36, 0x54, 0xA1, 0xEC, 0xF0, 0x06, 0x13,
@@ -111,7 +107,7 @@ static MD2_INT S[256]={
111 0xDB, 0x99, 0x8D, 0x33, 0x9F, 0x11, 0x83, 0x14, 107 0xDB, 0x99, 0x8D, 0x33, 0x9F, 0x11, 0x83, 0x14,
112 }; 108 };
113 109
114char *MD2_options() 110const char *MD2_options(void)
115 { 111 {
116 if (sizeof(MD2_INT) == 1) 112 if (sizeof(MD2_INT) == 1)
117 return("md2(char)"); 113 return("md2(char)");
@@ -119,23 +115,20 @@ char *MD2_options()
119 return("md2(int)"); 115 return("md2(int)");
120 } 116 }
121 117
122void MD2_Init(c) 118int MD2_Init(MD2_CTX *c)
123MD2_CTX *c;
124 { 119 {
125 c->num=0; 120 c->num=0;
126 memset(c->state,0,MD2_BLOCK*sizeof(MD2_INT)); 121 memset(c->state,0,MD2_BLOCK*sizeof(MD2_INT));
127 memset(c->cksm,0,MD2_BLOCK*sizeof(MD2_INT)); 122 memset(c->cksm,0,MD2_BLOCK*sizeof(MD2_INT));
128 memset(c->data,0,MD2_BLOCK); 123 memset(c->data,0,MD2_BLOCK);
124 return 1;
129 } 125 }
130 126
131void MD2_Update(c, data, len) 127int MD2_Update(MD2_CTX *c, const unsigned char *data, unsigned long len)
132MD2_CTX *c;
133register unsigned char *data;
134unsigned long len;
135 { 128 {
136 register UCHAR *p; 129 register UCHAR *p;
137 130
138 if (len == 0) return; 131 if (len == 0) return 1;
139 132
140 p=c->data; 133 p=c->data;
141 if (c->num != 0) 134 if (c->num != 0)
@@ -154,7 +147,7 @@ unsigned long len;
154 memcpy(&(p[c->num]),data,(int)len); 147 memcpy(&(p[c->num]),data,(int)len);
155 /* data+=len; */ 148 /* data+=len; */
156 c->num+=(int)len; 149 c->num+=(int)len;
157 return; 150 return 1;
158 } 151 }
159 } 152 }
160 /* we now can process the input data in blocks of MD2_BLOCK 153 /* we now can process the input data in blocks of MD2_BLOCK
@@ -167,11 +160,10 @@ unsigned long len;
167 } 160 }
168 memcpy(p,data,(int)len); 161 memcpy(p,data,(int)len);
169 c->num=(int)len; 162 c->num=(int)len;
163 return 1;
170 } 164 }
171 165
172static void md2_block(c, d) 166static void md2_block(MD2_CTX *c, const unsigned char *d)
173MD2_CTX *c;
174unsigned char *d;
175 { 167 {
176 register MD2_INT t,*sp1,*sp2; 168 register MD2_INT t,*sp1,*sp2;
177 register int i,j; 169 register int i,j;
@@ -207,9 +199,7 @@ unsigned char *d;
207 memset(state,0,48*sizeof(MD2_INT)); 199 memset(state,0,48*sizeof(MD2_INT));
208 } 200 }
209 201
210void MD2_Final(md, c) 202int MD2_Final(unsigned char *md, MD2_CTX *c)
211unsigned char *md;
212MD2_CTX *c;
213 { 203 {
214 int i,v; 204 int i,v;
215 register UCHAR *cp; 205 register UCHAR *cp;
@@ -231,5 +221,6 @@ MD2_CTX *c;
231 for (i=0; i<16; i++) 221 for (i=0; i<16; i++)
232 md[i]=(UCHAR)(p1[i]&0xff); 222 md[i]=(UCHAR)(p1[i]&0xff);
233 memset((char *)&c,0,sizeof(c)); 223 memset((char *)&c,0,sizeof(c));
224 return 1;
234 } 225 }
235 226
diff --git a/src/lib/libcrypto/md2/md2_one.c b/src/lib/libcrypto/md2/md2_one.c
index 513bf62fdb..b12c37ce4d 100644
--- a/src/lib/libcrypto/md2/md2_one.c
+++ b/src/lib/libcrypto/md2/md2_one.c
@@ -58,22 +58,35 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include "md2.h" 61#include <openssl/md2.h>
62 62
63/* This is a separate file so that #defines in cryptlib.h can 63/* This is a separate file so that #defines in cryptlib.h can
64 * map my MD functions to different names */ 64 * map my MD functions to different names */
65 65
66unsigned char *MD2(d, n, md) 66unsigned char *MD2(const unsigned char *d, unsigned long n, unsigned char *md)
67unsigned char *d;
68unsigned long n;
69unsigned char *md;
70 { 67 {
71 MD2_CTX c; 68 MD2_CTX c;
72 static unsigned char m[MD2_DIGEST_LENGTH]; 69 static unsigned char m[MD2_DIGEST_LENGTH];
73 70
74 if (md == NULL) md=m; 71 if (md == NULL) md=m;
75 MD2_Init(&c); 72 MD2_Init(&c);
73#ifndef CHARSET_EBCDIC
76 MD2_Update(&c,d,n); 74 MD2_Update(&c,d,n);
75#else
76 {
77 char temp[1024];
78 unsigned long chunk;
79
80 while (n > 0)
81 {
82 chunk = (n > sizeof(temp)) ? sizeof(temp) : n;
83 ebcdic2ascii(temp, d, chunk);
84 MD2_Update(&c,temp,chunk);
85 n -= chunk;
86 d += chunk;
87 }
88 }
89#endif
77 MD2_Final(md,&c); 90 MD2_Final(md,&c);
78 memset(&c,0,sizeof(c)); /* Security consideration */ 91 memset(&c,0,sizeof(c)); /* Security consideration */
79 return(md); 92 return(md);
diff --git a/src/lib/libcrypto/md2/md2test.c b/src/lib/libcrypto/md2/md2test.c
index 55924d44cd..7d3664faf5 100644
--- a/src/lib/libcrypto/md2/md2test.c
+++ b/src/lib/libcrypto/md2/md2test.c
@@ -59,9 +59,22 @@
59#include <stdio.h> 59#include <stdio.h>
60#include <stdlib.h> 60#include <stdlib.h>
61#include <string.h> 61#include <string.h>
62#include "md2.h" 62#include <openssl/md2.h>
63 63
64char *test[]={ 64#ifdef OPENSSL_NO_MD2
65int main(int argc, char *argv[])
66{
67 printf("No MD2 support\n");
68 return(0);
69}
70#else
71#include <openssl/evp.h>
72
73#ifdef CHARSET_EBCDIC
74#include <openssl/ebcdic.h>
75#endif
76
77static char *test[]={
65 "", 78 "",
66 "a", 79 "a",
67 "abc", 80 "abc",
@@ -72,7 +85,7 @@ char *test[]={
72 NULL, 85 NULL,
73 }; 86 };
74 87
75char *ret[]={ 88static char *ret[]={
76 "8350e5a3e24c153df2275c9f80692773", 89 "8350e5a3e24c153df2275c9f80692773",
77 "32ec01ec4a6dac72c0ab96fb34c0b5d1", 90 "32ec01ec4a6dac72c0ab96fb34c0b5d1",
78 "da853b0d3f88d99b30283a69e6ded6bb", 91 "da853b0d3f88d99b30283a69e6ded6bb",
@@ -82,26 +95,21 @@ char *ret[]={
82 "d5976f79d83d3a0dc9806c3c66f3efd8", 95 "d5976f79d83d3a0dc9806c3c66f3efd8",
83 }; 96 };
84 97
85#ifndef NOPROTO
86static char *pt(unsigned char *md); 98static char *pt(unsigned char *md);
87#else 99int main(int argc, char *argv[])
88static char *pt();
89#endif
90
91int main(argc,argv)
92int argc;
93char *argv[];
94 { 100 {
95 int i,err=0; 101 int i,err=0;
96 char **P,**R; 102 char **P,**R;
97 char *p; 103 char *p;
104 unsigned char md[MD2_DIGEST_LENGTH];
98 105
99 P=test; 106 P=test;
100 R=ret; 107 R=ret;
101 i=1; 108 i=1;
102 while (*P != NULL) 109 while (*P != NULL)
103 { 110 {
104 p=pt(MD2((unsigned char *)*P,(unsigned long)strlen(*P),NULL)); 111 EVP_Digest((unsigned char *)*P,(unsigned long)strlen(*P),md,NULL,EVP_md2(), NULL);
112 p=pt(md);
105 if (strcmp(p,*R) != 0) 113 if (strcmp(p,*R) != 0)
106 { 114 {
107 printf("error calculating MD2 on '%s'\n",*P); 115 printf("error calculating MD2 on '%s'\n",*P);
@@ -118,8 +126,7 @@ char *argv[];
118 return(0); 126 return(0);
119 } 127 }
120 128
121static char *pt(md) 129static char *pt(unsigned char *md)
122unsigned char *md;
123 { 130 {
124 int i; 131 int i;
125 static char buf[80]; 132 static char buf[80];
@@ -128,3 +135,4 @@ unsigned char *md;
128 sprintf(&(buf[i*2]),"%02x",md[i]); 135 sprintf(&(buf[i*2]),"%02x",md[i]);
129 return(buf); 136 return(buf);
130 } 137 }
138#endif
diff --git a/src/lib/libcrypto/md4/md4test.c b/src/lib/libcrypto/md4/md4test.c
index 97e6e21efd..e0fdc42282 100644
--- a/src/lib/libcrypto/md4/md4test.c
+++ b/src/lib/libcrypto/md4/md4test.c
@@ -60,13 +60,14 @@
60#include <string.h> 60#include <string.h>
61#include <stdlib.h> 61#include <stdlib.h>
62 62
63#ifdef NO_MD4 63#ifdef OPENSSL_NO_MD4
64int main(int argc, char *argv[]) 64int main(int argc, char *argv[])
65{ 65{
66 printf("No MD4 support\n"); 66 printf("No MD4 support\n");
67 return(0); 67 return(0);
68} 68}
69#else 69#else
70#include <openssl/evp.h>
70#include <openssl/md4.h> 71#include <openssl/md4.h>
71 72
72static char *test[]={ 73static char *test[]={
@@ -96,13 +97,15 @@ int main(int argc, char *argv[])
96 int i,err=0; 97 int i,err=0;
97 unsigned char **P,**R; 98 unsigned char **P,**R;
98 char *p; 99 char *p;
100 unsigned char md[MD4_DIGEST_LENGTH];
99 101
100 P=(unsigned char **)test; 102 P=(unsigned char **)test;
101 R=(unsigned char **)ret; 103 R=(unsigned char **)ret;
102 i=1; 104 i=1;
103 while (*P != NULL) 105 while (*P != NULL)
104 { 106 {
105 p=pt(MD4(&(P[0][0]),(unsigned long)strlen((char *)*P),NULL)); 107 EVP_Digest(&(P[0][0]),(unsigned long)strlen((char *)*P),md,NULL,EVP_md4(), NULL);
108 p=pt(md);
106 if (strcmp(p,(char *)*R) != 0) 109 if (strcmp(p,(char *)*R) != 0)
107 { 110 {
108 printf("error calculating MD4 on '%s'\n",*P); 111 printf("error calculating MD4 on '%s'\n",*P);
diff --git a/src/lib/libcrypto/md5/asm/md5-sparcv9.S b/src/lib/libcrypto/md5/asm/md5-sparcv9.S
index ca4257f134..a599ed5660 100644
--- a/src/lib/libcrypto/md5/asm/md5-sparcv9.S
+++ b/src/lib/libcrypto/md5/asm/md5-sparcv9.S
@@ -24,12 +24,12 @@
24 * 24 *
25 * To compile with SC4.x/SC5.x: 25 * To compile with SC4.x/SC5.x:
26 * 26 *
27 * cc -xarch=v[9|8plus] -DULTRASPARC -DMD5_BLOCK_DATA_ORDER \ 27 * cc -xarch=v[9|8plus] -DOPENSSL_SYSNAME_ULTRASPARC -DMD5_BLOCK_DATA_ORDER \
28 * -c md5-sparcv9.S 28 * -c md5-sparcv9.S
29 * 29 *
30 * and with gcc: 30 * and with gcc:
31 * 31 *
32 * gcc -mcpu=ultrasparc -DULTRASPARC -DMD5_BLOCK_DATA_ORDER \ 32 * gcc -mcpu=ultrasparc -DOPENSSL_SYSNAME_ULTRASPARC -DMD5_BLOCK_DATA_ORDER \
33 * -c md5-sparcv9.S 33 * -c md5-sparcv9.S
34 * 34 *
35 * or if above fails (it does if you have gas): 35 * or if above fails (it does if you have gas):
@@ -72,7 +72,7 @@
72#define Dval R8 72#define Dval R8
73 73
74#if defined(MD5_BLOCK_DATA_ORDER) 74#if defined(MD5_BLOCK_DATA_ORDER)
75# if defined(ULTRASPARC) 75# if defined(OPENSSL_SYSNAME_ULTRASPARC)
76# define LOAD lda 76# define LOAD lda
77# define X(i) [%i1+i*4]%asi 77# define X(i) [%i1+i*4]%asi
78# define md5_block md5_block_asm_data_order_aligned 78# define md5_block md5_block_asm_data_order_aligned
@@ -1012,7 +1012,7 @@ md5_block:
1012 st B,[Bptr] 1012 st B,[Bptr]
1013 nop != 1013 nop !=
1014 1014
1015#ifdef ULTRASPARC 1015#ifdef OPENSSL_SYSNAME_ULTRASPARC
1016 bg,a,pt %icc,.Lmd5_block_loop 1016 bg,a,pt %icc,.Lmd5_block_loop
1017#else 1017#else
1018 bg,a .Lmd5_block_loop 1018 bg,a .Lmd5_block_loop
diff --git a/src/lib/libcrypto/md5/md5.c b/src/lib/libcrypto/md5/md5.c
index 9d6f5a6003..7ed0024ae1 100644
--- a/src/lib/libcrypto/md5/md5.c
+++ b/src/lib/libcrypto/md5/md5.c
@@ -58,23 +58,17 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include <stdlib.h> 60#include <stdlib.h>
61#include "md5.h" 61#include <openssl/md5.h>
62 62
63#define BUFSIZE 1024*16 63#define BUFSIZE 1024*16
64 64
65#ifndef NOPROTO
66void do_fp(FILE *f); 65void do_fp(FILE *f);
67void pt(unsigned char *md); 66void pt(unsigned char *md);
67#ifndef _OSD_POSIX
68int read(int, void *, unsigned int); 68int read(int, void *, unsigned int);
69#else
70void do_fp();
71void pt();
72int read();
73#endif 69#endif
74 70
75int main(argc, argv) 71int main(int argc, char **argv)
76int argc;
77char **argv;
78 { 72 {
79 int i,err=0; 73 int i,err=0;
80 FILE *IN; 74 FILE *IN;
@@ -102,8 +96,7 @@ char **argv;
102 exit(err); 96 exit(err);
103 } 97 }
104 98
105void do_fp(f) 99void do_fp(FILE *f)
106FILE *f;
107 { 100 {
108 MD5_CTX c; 101 MD5_CTX c;
109 unsigned char md[MD5_DIGEST_LENGTH]; 102 unsigned char md[MD5_DIGEST_LENGTH];
@@ -123,8 +116,7 @@ FILE *f;
123 pt(md); 116 pt(md);
124 } 117 }
125 118
126void pt(md) 119void pt(unsigned char *md)
127unsigned char *md;
128 { 120 {
129 int i; 121 int i;
130 122
diff --git a/src/lib/libcrypto/md5/md5s.cpp b/src/lib/libcrypto/md5/md5s.cpp
index ef8e175df0..dd343fd4e6 100644
--- a/src/lib/libcrypto/md5/md5s.cpp
+++ b/src/lib/libcrypto/md5/md5s.cpp
@@ -32,7 +32,7 @@ void GetTSC(unsigned long& tsc)
32 32
33#include <stdio.h> 33#include <stdio.h>
34#include <stdlib.h> 34#include <stdlib.h>
35#include "md5.h" 35#include <openssl/md5.h>
36 36
37extern "C" { 37extern "C" {
38void md5_block_x86(MD5_CTX *ctx, unsigned char *buffer,int num); 38void md5_block_x86(MD5_CTX *ctx, unsigned char *buffer,int num);
diff --git a/src/lib/libcrypto/md5/md5test.c b/src/lib/libcrypto/md5/md5test.c
index 74b84bc67f..862b89658a 100644
--- a/src/lib/libcrypto/md5/md5test.c
+++ b/src/lib/libcrypto/md5/md5test.c
@@ -59,9 +59,18 @@
59#include <stdio.h> 59#include <stdio.h>
60#include <string.h> 60#include <string.h>
61#include <stdlib.h> 61#include <stdlib.h>
62#include "md5.h"
63 62
64char *test[]={ 63#ifdef OPENSSL_NO_MD5
64int main(int argc, char *argv[])
65{
66 printf("No MD5 support\n");
67 return(0);
68}
69#else
70#include <openssl/evp.h>
71#include <openssl/md5.h>
72
73static char *test[]={
65 "", 74 "",
66 "a", 75 "a",
67 "abc", 76 "abc",
@@ -72,7 +81,7 @@ char *test[]={
72 NULL, 81 NULL,
73 }; 82 };
74 83
75char *ret[]={ 84static char *ret[]={
76 "d41d8cd98f00b204e9800998ecf8427e", 85 "d41d8cd98f00b204e9800998ecf8427e",
77 "0cc175b9c0f1b6a831c399e269772661", 86 "0cc175b9c0f1b6a831c399e269772661",
78 "900150983cd24fb0d6963f7d28e17f72", 87 "900150983cd24fb0d6963f7d28e17f72",
@@ -82,26 +91,21 @@ char *ret[]={
82 "57edf4a22be3c955ac49da2e2107b67a", 91 "57edf4a22be3c955ac49da2e2107b67a",
83 }; 92 };
84 93
85#ifndef NOPROTO
86static char *pt(unsigned char *md); 94static char *pt(unsigned char *md);
87#else 95int main(int argc, char *argv[])
88static char *pt();
89#endif
90
91int main(argc,argv)
92int argc;
93char *argv[];
94 { 96 {
95 int i,err=0; 97 int i,err=0;
96 unsigned char **P,**R; 98 unsigned char **P,**R;
97 char *p; 99 char *p;
100 unsigned char md[MD5_DIGEST_LENGTH];
98 101
99 P=(unsigned char **)test; 102 P=(unsigned char **)test;
100 R=(unsigned char **)ret; 103 R=(unsigned char **)ret;
101 i=1; 104 i=1;
102 while (*P != NULL) 105 while (*P != NULL)
103 { 106 {
104 p=pt(MD5(&(P[0][0]),(unsigned long)strlen((char *)*P),NULL)); 107 EVP_Digest(&(P[0][0]),(unsigned long)strlen((char *)*P),md,NULL,EVP_md5(), NULL);
108 p=pt(md);
105 if (strcmp(p,(char *)*R) != 0) 109 if (strcmp(p,(char *)*R) != 0)
106 { 110 {
107 printf("error calculating MD5 on '%s'\n",*P); 111 printf("error calculating MD5 on '%s'\n",*P);
@@ -118,8 +122,7 @@ char *argv[];
118 return(0); 122 return(0);
119 } 123 }
120 124
121static char *pt(md) 125static char *pt(unsigned char *md)
122unsigned char *md;
123 { 126 {
124 int i; 127 int i;
125 static char buf[80]; 128 static char buf[80];
@@ -128,3 +131,4 @@ unsigned char *md;
128 sprintf(&(buf[i*2]),"%02x",md[i]); 131 sprintf(&(buf[i*2]),"%02x",md[i]);
129 return(buf); 132 return(buf);
130 } 133 }
134#endif
diff --git a/src/lib/libcrypto/mdc2/mdc2.h b/src/lib/libcrypto/mdc2/mdc2.h
index 0b104be184..793a8a0f13 100644
--- a/src/lib/libcrypto/mdc2/mdc2.h
+++ b/src/lib/libcrypto/mdc2/mdc2.h
@@ -59,11 +59,15 @@
59#ifndef HEADER_MDC2_H 59#ifndef HEADER_MDC2_H
60#define HEADER_MDC2_H 60#define HEADER_MDC2_H
61 61
62#include <openssl/des.h>
63
62#ifdef __cplusplus 64#ifdef __cplusplus
63extern "C" { 65extern "C" {
64#endif 66#endif
65 67
66#include "des.h" 68#ifdef OPENSSL_NO_MDC2
69#error MDC2 is disabled.
70#endif
67 71
68#define MDC2_BLOCK 8 72#define MDC2_BLOCK 8
69#define MDC2_DIGEST_LENGTH 16 73#define MDC2_DIGEST_LENGTH 16
@@ -72,25 +76,16 @@ typedef struct mdc2_ctx_st
72 { 76 {
73 int num; 77 int num;
74 unsigned char data[MDC2_BLOCK]; 78 unsigned char data[MDC2_BLOCK];
75 des_cblock h,hh; 79 DES_cblock h,hh;
76 int pad_type; /* either 1 or 2, default 1 */ 80 int pad_type; /* either 1 or 2, default 1 */
77 } MDC2_CTX; 81 } MDC2_CTX;
78 82
79#ifndef NOPROTO
80
81void MDC2_Init(MDC2_CTX *c);
82void MDC2_Update(MDC2_CTX *c, unsigned char *data, unsigned long len);
83void MDC2_Final(unsigned char *md, MDC2_CTX *c);
84unsigned char *MDC2(unsigned char *d, unsigned long n, unsigned char *md);
85 83
86#else 84int MDC2_Init(MDC2_CTX *c);
87 85int MDC2_Update(MDC2_CTX *c, const unsigned char *data, unsigned long len);
88void MDC2_Init(); 86int MDC2_Final(unsigned char *md, MDC2_CTX *c);
89void MDC2_Update(); 87unsigned char *MDC2(const unsigned char *d, unsigned long n,
90void MDC2_Final(); 88 unsigned char *md);
91unsigned char *MDC2();
92
93#endif
94 89
95#ifdef __cplusplus 90#ifdef __cplusplus
96} 91}
diff --git a/src/lib/libcrypto/mem.c b/src/lib/libcrypto/mem.c
index 72e501ad0f..effec714e8 100644
--- a/src/lib/libcrypto/mem.c
+++ b/src/lib/libcrypto/mem.c
@@ -58,296 +58,292 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include <stdlib.h> 60#include <stdlib.h>
61#include "buffer.h" 61#include <openssl/crypto.h>
62#include "bio.h"
63#include "lhash.h"
64#include "cryptlib.h" 62#include "cryptlib.h"
65 63
66static int mh_mode=CRYPTO_MEM_CHECK_OFF;
67static unsigned long order=0;
68 64
69static LHASH *mh=NULL; 65static int allow_customize = 1; /* we provide flexible functions for */
66static int allow_customize_debug = 1;/* exchanging memory-related functions at
67 * run-time, but this must be done
68 * before any blocks are actually
69 * allocated; or we'll run into huge
70 * problems when malloc/free pairs
71 * don't match etc. */
72
73
74
75/* the following pointers may be changed as long as 'allow_customize' is set */
76
77static void *(*malloc_func)(size_t) = malloc;
78static void *default_malloc_ex(size_t num, const char *file, int line)
79 { return malloc_func(num); }
80static void *(*malloc_ex_func)(size_t, const char *file, int line)
81 = default_malloc_ex;
82
83static void *(*realloc_func)(void *, size_t)= realloc;
84static void *default_realloc_ex(void *str, size_t num,
85 const char *file, int line)
86 { return realloc_func(str,num); }
87static void *(*realloc_ex_func)(void *, size_t, const char *file, int line)
88 = default_realloc_ex;
89
90static void (*free_func)(void *) = free;
91
92static void *(*malloc_locked_func)(size_t) = malloc;
93static void *default_malloc_locked_ex(size_t num, const char *file, int line)
94 { return malloc_locked_func(num); }
95static void *(*malloc_locked_ex_func)(size_t, const char *file, int line)
96 = default_malloc_locked_ex;
97
98static void (*free_locked_func)(void *) = free;
99
100
101
102/* may be changed as long as 'allow_customize_debug' is set */
103/* XXX use correct function pointer types */
104#ifdef CRYPTO_MDEBUG
105/* use default functions from mem_dbg.c */
106static void (*malloc_debug_func)(void *,int,const char *,int,int)
107 = CRYPTO_dbg_malloc;
108static void (*realloc_debug_func)(void *,void *,int,const char *,int,int)
109 = CRYPTO_dbg_realloc;
110static void (*free_debug_func)(void *,int) = CRYPTO_dbg_free;
111static void (*set_debug_options_func)(long) = CRYPTO_dbg_set_options;
112static long (*get_debug_options_func)(void) = CRYPTO_dbg_get_options;
113#else
114/* applications can use CRYPTO_malloc_debug_init() to select above case
115 * at run-time */
116static void (*malloc_debug_func)(void *,int,const char *,int,int) = NULL;
117static void (*realloc_debug_func)(void *,void *,int,const char *,int,int)
118 = NULL;
119static void (*free_debug_func)(void *,int) = NULL;
120static void (*set_debug_options_func)(long) = NULL;
121static long (*get_debug_options_func)(void) = NULL;
122#endif
70 123
71typedef struct mem_st
72 {
73 char *addr;
74 int num;
75 char *file;
76 int line;
77 unsigned long order;
78 } MEM;
79
80int CRYPTO_mem_ctrl(mode)
81int mode;
82 {
83 int ret=mh_mode;
84 124
85 CRYPTO_w_lock(CRYPTO_LOCK_MALLOC); 125int CRYPTO_set_mem_functions(void *(*m)(size_t), void *(*r)(void *, size_t),
86 switch (mode) 126 void (*f)(void *))
87 { 127 {
88 case CRYPTO_MEM_CHECK_ON: 128 if (!allow_customize)
89 mh_mode|=CRYPTO_MEM_CHECK_ON; 129 return 0;
90 break; 130 if ((m == 0) || (r == 0) || (f == 0))
91 case CRYPTO_MEM_CHECK_OFF: 131 return 0;
92 mh_mode&= ~CRYPTO_MEM_CHECK_ON; 132 malloc_func=m; malloc_ex_func=default_malloc_ex;
93 break; 133 realloc_func=r; realloc_ex_func=default_realloc_ex;
94 default: 134 free_func=f;
95 break; 135 malloc_locked_func=m; malloc_locked_ex_func=default_malloc_locked_ex;
96 } 136 free_locked_func=f;
97 CRYPTO_w_unlock(CRYPTO_LOCK_MALLOC); 137 return 1;
98 return(ret);
99 } 138 }
100 139
101static int mem_cmp(a,b) 140int CRYPTO_set_mem_ex_functions(
102MEM *a,*b; 141 void *(*m)(size_t,const char *,int),
142 void *(*r)(void *, size_t,const char *,int),
143 void (*f)(void *))
103 { 144 {
104 return(a->addr - b->addr); 145 if (!allow_customize)
146 return 0;
147 if ((m == 0) || (r == 0) || (f == 0))
148 return 0;
149 malloc_func=0; malloc_ex_func=m;
150 realloc_func=0; realloc_ex_func=r;
151 free_func=f;
152 malloc_locked_func=0; malloc_locked_ex_func=m;
153 free_locked_func=f;
154 return 1;
105 } 155 }
106 156
107static unsigned long mem_hash(a) 157int CRYPTO_set_locked_mem_functions(void *(*m)(size_t), void (*f)(void *))
108MEM *a;
109 { 158 {
110 unsigned long ret; 159 if (!allow_customize)
160 return 0;
161 if ((m == NULL) || (f == NULL))
162 return 0;
163 malloc_locked_func=m; malloc_locked_ex_func=default_malloc_locked_ex;
164 free_locked_func=f;
165 return 1;
166 }
111 167
112 ret=(unsigned long)a->addr; 168int CRYPTO_set_locked_mem_ex_functions(
169 void *(*m)(size_t,const char *,int),
170 void (*f)(void *))
171 {
172 if (!allow_customize)
173 return 0;
174 if ((m == NULL) || (f == NULL))
175 return 0;
176 malloc_locked_func=0; malloc_locked_ex_func=m;
177 free_func=f;
178 return 1;
179 }
113 180
114 ret=ret*17851+(ret>>14)*7+(ret>>4)*251; 181int CRYPTO_set_mem_debug_functions(void (*m)(void *,int,const char *,int,int),
115 return(ret); 182 void (*r)(void *,void *,int,const char *,int,int),
183 void (*f)(void *,int),
184 void (*so)(long),
185 long (*go)(void))
186 {
187 if (!allow_customize_debug)
188 return 0;
189 malloc_debug_func=m;
190 realloc_debug_func=r;
191 free_debug_func=f;
192 set_debug_options_func=so;
193 get_debug_options_func=go;
194 return 1;
116 } 195 }
117 196
118static char *(*malloc_func)()= (char *(*)())malloc;
119static char *(*realloc_func)()= (char *(*)())realloc;
120static void (*free_func)()= (void (*)())free;
121 197
122void CRYPTO_set_mem_functions(m,r,f) 198void CRYPTO_get_mem_functions(void *(**m)(size_t), void *(**r)(void *, size_t),
123char *(*m)(); 199 void (**f)(void *))
124char *(*r)();
125void (*f)();
126 { 200 {
127 if ((m == NULL) || (r == NULL) || (f == NULL)) return; 201 if (m != NULL) *m = (malloc_ex_func == default_malloc_ex) ?
128 malloc_func=m; 202 malloc_func : 0;
129 realloc_func=r; 203 if (r != NULL) *r = (realloc_ex_func == default_realloc_ex) ?
130 free_func=f; 204 realloc_func : 0;
205 if (f != NULL) *f=free_func;
131 } 206 }
132 207
133void CRYPTO_get_mem_functions(m,r,f) 208void CRYPTO_get_mem_ex_functions(
134char *(**m)(); 209 void *(**m)(size_t,const char *,int),
135char *(**r)(); 210 void *(**r)(void *, size_t,const char *,int),
136void (**f)(); 211 void (**f)(void *))
137 { 212 {
138 if (m != NULL) *m=malloc_func; 213 if (m != NULL) *m = (malloc_ex_func != default_malloc_ex) ?
139 if (r != NULL) *r=realloc_func; 214 malloc_ex_func : 0;
215 if (r != NULL) *r = (realloc_ex_func != default_realloc_ex) ?
216 realloc_ex_func : 0;
140 if (f != NULL) *f=free_func; 217 if (f != NULL) *f=free_func;
141 } 218 }
142 219
143char *CRYPTO_malloc(num) 220void CRYPTO_get_locked_mem_functions(void *(**m)(size_t), void (**f)(void *))
144int num;
145 { 221 {
146 return(malloc_func(num)); 222 if (m != NULL) *m = (malloc_locked_ex_func == default_malloc_locked_ex) ?
223 malloc_locked_func : 0;
224 if (f != NULL) *f=free_locked_func;
147 } 225 }
148 226
149char *CRYPTO_realloc(str,num) 227void CRYPTO_get_locked_mem_ex_functions(
150char *str; 228 void *(**m)(size_t,const char *,int),
151int num; 229 void (**f)(void *))
152 { 230 {
153 return(realloc_func(str,num)); 231 if (m != NULL) *m = (malloc_locked_ex_func != default_malloc_locked_ex) ?
232 malloc_locked_ex_func : 0;
233 if (f != NULL) *f=free_locked_func;
154 } 234 }
155 235
156void CRYPTO_free(str) 236void CRYPTO_get_mem_debug_functions(void (**m)(void *,int,const char *,int,int),
157char *str; 237 void (**r)(void *,void *,int,const char *,int,int),
238 void (**f)(void *,int),
239 void (**so)(long),
240 long (**go)(void))
158 { 241 {
159 free_func(str); 242 if (m != NULL) *m=malloc_debug_func;
243 if (r != NULL) *r=realloc_debug_func;
244 if (f != NULL) *f=free_debug_func;
245 if (so != NULL) *so=set_debug_options_func;
246 if (go != NULL) *go=get_debug_options_func;
160 } 247 }
161 248
162char *CRYPTO_dbg_malloc(num,file,line)
163int num;
164char *file;
165int line;
166 {
167 char *ret;
168 MEM *m,*mm;
169 249
170 if ((ret=malloc_func(num)) == NULL) 250void *CRYPTO_malloc_locked(int num, const char *file, int line)
171 return(NULL); 251 {
252 void *ret = NULL;
172 253
173 if (mh_mode & CRYPTO_MEM_CHECK_ON) 254 allow_customize = 0;
255 if (malloc_debug_func != NULL)
174 { 256 {
175 if ((m=(MEM *)malloc(sizeof(MEM))) == NULL) 257 allow_customize_debug = 0;
176 { 258 malloc_debug_func(NULL, num, file, line, 0);
177 free(ret);
178 return(NULL);
179 }
180 CRYPTO_w_lock(CRYPTO_LOCK_MALLOC);
181 if (mh == NULL)
182 {
183 if ((mh=lh_new(mem_hash,mem_cmp)) == NULL)
184 {
185 free(ret);
186 free(m);
187 return(NULL);
188 }
189 }
190
191 m->addr=ret;
192 m->file=file;
193 m->line=line;
194 m->num=num;
195 m->order=order++;
196 if ((mm=(MEM *)lh_insert(mh,(char *)m)) != NULL)
197 {
198 /* Not good, but don't sweat it */
199 free(mm);
200 }
201 CRYPTO_w_unlock(CRYPTO_LOCK_MALLOC);
202 } 259 }
203 return(ret); 260 ret = malloc_locked_ex_func(num,file,line);
261#ifdef LEVITTE_DEBUG_MEM
262 fprintf(stderr, "LEVITTE_DEBUG_MEM: > 0x%p (%d)\n", ret, num);
263#endif
264 if (malloc_debug_func != NULL)
265 malloc_debug_func(ret, num, file, line, 1);
266
267 return ret;
204 } 268 }
205 269
206void CRYPTO_dbg_free(addr) 270void CRYPTO_free_locked(void *str)
207char *addr;
208 { 271 {
209 MEM m,*mp; 272 if (free_debug_func != NULL)
210 273 free_debug_func(str, 0);
211 if ((mh_mode & CRYPTO_MEM_CHECK_ON) && (mh != NULL)) 274#ifdef LEVITTE_DEBUG_MEM
212 { 275 fprintf(stderr, "LEVITTE_DEBUG_MEM: < 0x%p\n", str);
213 CRYPTO_w_lock(CRYPTO_LOCK_MALLOC); 276#endif
214 m.addr=addr; 277 free_locked_func(str);
215 mp=(MEM *)lh_delete(mh,(char *)&m); 278 if (free_debug_func != NULL)
216 if (mp != NULL) 279 free_debug_func(NULL, 1);
217 free(mp);
218 CRYPTO_w_unlock(CRYPTO_LOCK_MALLOC);
219 }
220 free_func(addr);
221 } 280 }
222 281
223char *CRYPTO_dbg_realloc(addr,num,file,line) 282void *CRYPTO_malloc(int num, const char *file, int line)
224char *addr;
225int num;
226char *file;
227int line;
228 { 283 {
229 char *ret; 284 void *ret = NULL;
230 MEM m,*mp;
231
232 ret=realloc_func(addr,num);
233 if (ret == addr) return(ret);
234 285
235 if (mh_mode & CRYPTO_MEM_CHECK_ON) 286 allow_customize = 0;
287 if (malloc_debug_func != NULL)
236 { 288 {
237 if (ret == NULL) return(NULL); 289 allow_customize_debug = 0;
238 m.addr=addr; 290 malloc_debug_func(NULL, num, file, line, 0);
239 CRYPTO_w_lock(CRYPTO_LOCK_MALLOC);
240 mp=(MEM *)lh_delete(mh,(char *)&m);
241 if (mp != NULL)
242 {
243 mp->addr=ret;
244 lh_insert(mh,(char *)mp);
245 }
246 CRYPTO_w_unlock(CRYPTO_LOCK_MALLOC);
247 } 291 }
248 return(ret); 292 ret = malloc_ex_func(num,file,line);
249 } 293#ifdef LEVITTE_DEBUG_MEM
294 fprintf(stderr, "LEVITTE_DEBUG_MEM: > 0x%p (%d)\n", ret, num);
295#endif
296 if (malloc_debug_func != NULL)
297 malloc_debug_func(ret, num, file, line, 1);
250 298
251char *CRYPTO_remalloc(a,n) 299 return ret;
252char *a;
253int n;
254 {
255 if (a != NULL) Free(a);
256 a=(char *)Malloc(n);
257 return(a);
258 } 300 }
259 301
260char *CRYPTO_dbg_remalloc(a,n,file,line) 302void *CRYPTO_realloc(void *str, int num, const char *file, int line)
261char *a;
262int n;
263char *file;
264int line;
265 { 303 {
266 if (a != NULL) CRYPTO_dbg_free(a); 304 void *ret = NULL;
267 a=(char *)CRYPTO_dbg_malloc(n,file,line);
268 return(a);
269 }
270 305
306 if (realloc_debug_func != NULL)
307 realloc_debug_func(str, NULL, num, file, line, 0);
308 ret = realloc_ex_func(str,num,file,line);
309#ifdef LEVITTE_DEBUG_MEM
310 fprintf(stderr, "LEVITTE_DEBUG_MEM: | 0x%p -> 0x%p (%d)\n", str, ret, num);
311#endif
312 if (realloc_debug_func != NULL)
313 realloc_debug_func(str, ret, num, file, line, 1);
271 314
272typedef struct mem_leak_st 315 return ret;
273 {
274 BIO *bio;
275 int chunks;
276 long bytes;
277 } MEM_LEAK;
278
279static void print_leak(m,l)
280MEM *m;
281MEM_LEAK *l;
282 {
283 char buf[128];
284
285 sprintf(buf,"%5ld file=%s, line=%d, number=%d, address=%08lX\n",
286 m->order,m->file,m->line,m->num,(long)m->addr);
287 BIO_puts(l->bio,buf);
288 l->chunks++;
289 l->bytes+=m->num;
290 } 316 }
291 317
292void CRYPTO_mem_leaks(b) 318void CRYPTO_free(void *str)
293BIO *b;
294 { 319 {
295 MEM_LEAK ml; 320 if (free_debug_func != NULL)
296 char buf[80]; 321 free_debug_func(str, 0);
297 322#ifdef LEVITTE_DEBUG_MEM
298 if (mh == NULL) return; 323 fprintf(stderr, "LEVITTE_DEBUG_MEM: < 0x%p\n", str);
299 ml.bio=b; 324#endif
300 ml.bytes=0; 325 free_func(str);
301 ml.chunks=0; 326 if (free_debug_func != NULL)
302 CRYPTO_w_lock(CRYPTO_LOCK_MALLOC); 327 free_debug_func(NULL, 1);
303 lh_doall_arg(mh,(void (*)())print_leak,(char *)&ml);
304 CRYPTO_w_unlock(CRYPTO_LOCK_MALLOC);
305 if (ml.chunks != 0)
306 {
307 sprintf(buf,"%ld bytes leaked in %d chunks\n",
308 ml.bytes,ml.chunks);
309 BIO_puts(b,buf);
310 }
311 /*
312 lh_stats_bio(mh,b);
313 lh_node_stats_bio(mh,b);
314 lh_node_usage_stats_bio(mh,b);
315 */
316 } 328 }
317 329
318static void (*mem_cb)()=NULL; 330void *CRYPTO_remalloc(void *a, int num, const char *file, int line)
319
320static void cb_leak(m,cb)
321MEM *m;
322char *cb;
323 { 331 {
324 void (*mem_callback)()=(void (*)())cb; 332 if (a != NULL) OPENSSL_free(a);
325 mem_callback(m->order,m->file,m->line,m->num,m->addr); 333 a=(char *)OPENSSL_malloc(num);
334 return(a);
326 } 335 }
327 336
328void CRYPTO_mem_leaks_cb(cb) 337
329void (*cb)(); 338void CRYPTO_set_mem_debug_options(long bits)
330 { 339 {
331 if (mh == NULL) return; 340 if (set_debug_options_func != NULL)
332 CRYPTO_w_lock(CRYPTO_LOCK_MALLOC); 341 set_debug_options_func(bits);
333 mem_cb=cb;
334 lh_doall_arg(mh,(void (*)())cb_leak,(char *)mem_cb);
335 mem_cb=NULL;
336 CRYPTO_w_unlock(CRYPTO_LOCK_MALLOC);
337 } 342 }
338 343
339#ifndef NO_FP_API 344long CRYPTO_get_mem_debug_options(void)
340void CRYPTO_mem_leaks_fp(fp)
341FILE *fp;
342 { 345 {
343 BIO *b; 346 if (get_debug_options_func != NULL)
344 347 return get_debug_options_func();
345 if (mh == NULL) return; 348 return 0;
346 if ((b=BIO_new(BIO_s_file())) == NULL)
347 return;
348 BIO_set_fp(b,fp,BIO_NOCLOSE);
349 CRYPTO_mem_leaks(b);
350 BIO_free(b);
351 } 349 }
352#endif
353
diff --git a/src/lib/libcrypto/objects/obj_dat.h b/src/lib/libcrypto/objects/obj_dat.h
index 48143ae3c7..39cfcda783 100644
--- a/src/lib/libcrypto/objects/obj_dat.h
+++ b/src/lib/libcrypto/objects/obj_dat.h
@@ -1,4 +1,10 @@
1/* lib/obj/obj_dat.h */ 1/* crypto/objects/obj_dat.h */
2
3/* THIS FILE IS GENERATED FROM objects.h by obj_dat.pl via the
4 * following command:
5 * perl obj_dat.pl obj_mac.h obj_dat.h
6 */
7
2/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) 8/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 9 * All rights reserved.
4 * 10 *
@@ -56,284 +62,1294 @@
56 * [including the GNU Public Licence.] 62 * [including the GNU Public Licence.]
57 */ 63 */
58 64
59/* THIS FILE IS GENERATED FROM Objects.h by obj_dat.pl via the 65#define NUM_NID 510
60 * following command: 66#define NUM_SN 507
61 * perl obj_dat.pl < objects.h > obj_dat.h 67#define NUM_LN 507
62 */ 68#define NUM_OBJ 481
63 69
64#define NUM_NID 124 70static unsigned char lvalues[3881]={
65#define NUM_SN 95 710x00, /* [ 0] OBJ_undef */
66#define NUM_LN 122 720x2A,0x86,0x48,0x86,0xF7,0x0D, /* [ 1] OBJ_rsadsi */
67#define NUM_OBJ 95 730x2A,0x86,0x48,0x86,0xF7,0x0D,0x01, /* [ 7] OBJ_pkcs */
68 740x2A,0x86,0x48,0x86,0xF7,0x0D,0x02,0x02, /* [ 14] OBJ_md2 */
69static unsigned char lvalues[600]={ 750x2A,0x86,0x48,0x86,0xF7,0x0D,0x02,0x05, /* [ 22] OBJ_md5 */
700x2A,0x86,0x48,0x86,0xF7,0x0D, /* [ 0] OBJ_rsadsi */ 760x2A,0x86,0x48,0x86,0xF7,0x0D,0x03,0x04, /* [ 30] OBJ_rc4 */
710x2A,0x86,0x48,0x86,0xF7,0x0D,0x01, /* [ 6] OBJ_pkcs */ 770x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x01,/* [ 38] OBJ_rsaEncryption */
720x2A,0x86,0x48,0x86,0xF7,0x0D,0x02,0x02, /* [ 13] OBJ_md2 */ 780x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x02,/* [ 47] OBJ_md2WithRSAEncryption */
730x2A,0x86,0x48,0x86,0xF7,0x0D,0x02,0x05, /* [ 21] OBJ_md5 */ 790x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x04,/* [ 56] OBJ_md5WithRSAEncryption */
740x2A,0x86,0x48,0x86,0xF7,0x0D,0x03,0x04, /* [ 29] OBJ_rc4 */ 800x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05,0x01,/* [ 65] OBJ_pbeWithMD2AndDES_CBC */
750x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x01,/* [ 37] OBJ_rsaEncryption */ 810x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05,0x03,/* [ 74] OBJ_pbeWithMD5AndDES_CBC */
760x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x02,/* [ 46] OBJ_md2WithRSAEncryption */ 820x55, /* [ 83] OBJ_X500 */
770x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x04,/* [ 55] OBJ_md5WithRSAEncryption */ 830x55,0x04, /* [ 84] OBJ_X509 */
780x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05,0x01,/* [ 64] OBJ_pbeWithMD2AndDES_CBC */ 840x55,0x04,0x03, /* [ 86] OBJ_commonName */
790x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05,0x03,/* [ 73] OBJ_pbeWithMD5AndDES_CBC */ 850x55,0x04,0x06, /* [ 89] OBJ_countryName */
800x55, /* [ 82] OBJ_X500 */ 860x55,0x04,0x07, /* [ 92] OBJ_localityName */
810x55,0x04, /* [ 83] OBJ_X509 */ 870x55,0x04,0x08, /* [ 95] OBJ_stateOrProvinceName */
820x55,0x04,0x03, /* [ 85] OBJ_commonName */ 880x55,0x04,0x0A, /* [ 98] OBJ_organizationName */
830x55,0x04,0x06, /* [ 88] OBJ_countryName */ 890x55,0x04,0x0B, /* [101] OBJ_organizationalUnitName */
840x55,0x04,0x07, /* [ 91] OBJ_localityName */ 900x55,0x08,0x01,0x01, /* [104] OBJ_rsa */
850x55,0x04,0x08, /* [ 94] OBJ_stateOrProvinceName */ 910x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07, /* [108] OBJ_pkcs7 */
860x55,0x04,0x0A, /* [ 97] OBJ_organizationName */ 920x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x01,/* [116] OBJ_pkcs7_data */
870x55,0x04,0x0B, /* [100] OBJ_organizationalUnitName */ 930x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x02,/* [125] OBJ_pkcs7_signed */
880x55,0x08,0x01,0x01, /* [103] OBJ_rsa */ 940x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x03,/* [134] OBJ_pkcs7_enveloped */
890x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07, /* [107] OBJ_pkcs7 */ 950x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x04,/* [143] OBJ_pkcs7_signedAndEnveloped */
900x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x01,/* [115] OBJ_pkcs7_data */ 960x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x05,/* [152] OBJ_pkcs7_digest */
910x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x02,/* [124] OBJ_pkcs7_signed */ 970x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x06,/* [161] OBJ_pkcs7_encrypted */
920x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x03,/* [133] OBJ_pkcs7_enveloped */ 980x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x03, /* [170] OBJ_pkcs3 */
930x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x04,/* [142] OBJ_pkcs7_signedAndEnveloped */ 990x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x03,0x01,/* [178] OBJ_dhKeyAgreement */
940x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x05,/* [151] OBJ_pkcs7_digest */ 1000x2B,0x0E,0x03,0x02,0x06, /* [187] OBJ_des_ecb */
950x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x06,/* [160] OBJ_pkcs7_encrypted */ 1010x2B,0x0E,0x03,0x02,0x09, /* [192] OBJ_des_cfb64 */
960x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x03, /* [169] OBJ_pkcs3 */ 1020x2B,0x0E,0x03,0x02,0x07, /* [197] OBJ_des_cbc */
970x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x03,0x01,/* [177] OBJ_dhKeyAgreement */ 1030x2B,0x0E,0x03,0x02,0x11, /* [202] OBJ_des_ede_ecb */
980x2B,0x0E,0x03,0x02,0x06, /* [186] OBJ_des_ecb */ 1040x2B,0x06,0x01,0x04,0x01,0x81,0x3C,0x07,0x01,0x01,0x02,/* [207] OBJ_idea_cbc */
990x2B,0x0E,0x03,0x02,0x09, /* [191] OBJ_des_cfb64 */ 1050x2A,0x86,0x48,0x86,0xF7,0x0D,0x03,0x02, /* [218] OBJ_rc2_cbc */
1000x2B,0x0E,0x03,0x02,0x07, /* [196] OBJ_des_cbc */ 1060x2B,0x0E,0x03,0x02,0x12, /* [226] OBJ_sha */
1010x2B,0x0E,0x03,0x02,0x11, /* [201] OBJ_des_ede */ 1070x2B,0x0E,0x03,0x02,0x0F, /* [231] OBJ_shaWithRSAEncryption */
1020x2A,0x86,0x48,0x86,0xF7,0x0D,0x03,0x02, /* [206] OBJ_rc2_cbc */ 1080x2A,0x86,0x48,0x86,0xF7,0x0D,0x03,0x07, /* [236] OBJ_des_ede3_cbc */
1030x2B,0x0E,0x03,0x02,0x12, /* [214] OBJ_sha */ 1090x2B,0x0E,0x03,0x02,0x08, /* [244] OBJ_des_ofb64 */
1040x2B,0x0E,0x03,0x02,0x0F, /* [219] OBJ_shaWithRSAEncryption */ 1100x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09, /* [249] OBJ_pkcs9 */
1050x2A,0x86,0x48,0x86,0xF7,0x0D,0x03,0x07, /* [224] OBJ_des_ede3_cbc */ 1110x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x01,/* [257] OBJ_pkcs9_emailAddress */
1060x2B,0x0E,0x03,0x02,0x08, /* [232] OBJ_des_ofb64 */ 1120x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x02,/* [266] OBJ_pkcs9_unstructuredName */
1070x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09, /* [237] OBJ_pkcs9 */ 1130x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x03,/* [275] OBJ_pkcs9_contentType */
1080x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x01,/* [245] OBJ_pkcs9_emailAddress */ 1140x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x04,/* [284] OBJ_pkcs9_messageDigest */
1090x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x02,/* [254] OBJ_pkcs9_unstructuredName */ 1150x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x05,/* [293] OBJ_pkcs9_signingTime */
1100x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x03,/* [263] OBJ_pkcs9_contentType */ 1160x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x06,/* [302] OBJ_pkcs9_countersignature */
1110x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x04,/* [272] OBJ_pkcs9_messageDigest */ 1170x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x07,/* [311] OBJ_pkcs9_challengePassword */
1120x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x05,/* [281] OBJ_pkcs9_signingTime */ 1180x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x08,/* [320] OBJ_pkcs9_unstructuredAddress */
1130x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x06,/* [290] OBJ_pkcs9_countersignature */ 1190x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x09,/* [329] OBJ_pkcs9_extCertAttributes */
1140x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x07,/* [299] OBJ_pkcs9_challengePassword */ 1200x60,0x86,0x48,0x01,0x86,0xF8,0x42, /* [338] OBJ_netscape */
1150x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x08,/* [308] OBJ_pkcs9_unstructuredAddress */ 1210x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01, /* [345] OBJ_netscape_cert_extension */
1160x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x09,/* [317] OBJ_pkcs9_extCertAttributes */ 1220x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x02, /* [353] OBJ_netscape_data_type */
1170x60,0x86,0x48,0x01,0x86,0xF8,0x42, /* [326] OBJ_netscape */ 1230x2B,0x0E,0x03,0x02,0x1A, /* [361] OBJ_sha1 */
1180x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01, /* [333] OBJ_netscape_cert_extension */ 1240x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x05,/* [366] OBJ_sha1WithRSAEncryption */
1190x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x02, /* [341] OBJ_netscape_data_type */ 1250x2B,0x0E,0x03,0x02,0x0D, /* [375] OBJ_dsaWithSHA */
1200x2B,0x0E,0x03,0x02,0x1A, /* [349] OBJ_sha1 */ 1260x2B,0x0E,0x03,0x02,0x0C, /* [380] OBJ_dsa_2 */
1210x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x05,/* [354] OBJ_sha1WithRSAEncryption */ 1270x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05,0x0B,/* [385] OBJ_pbeWithSHA1AndRC2_CBC */
1220x2B,0x0E,0x03,0x02,0x0D, /* [363] OBJ_dsaWithSHA */ 1280x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05,0x0C,/* [394] OBJ_id_pbkdf2 */
1230x2B,0x0E,0x03,0x02,0x0C, /* [368] OBJ_dsa_2 */ 1290x2B,0x0E,0x03,0x02,0x1B, /* [403] OBJ_dsaWithSHA1_2 */
1240x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05,0x0B,/* [373] OBJ_pbeWithSHA1AndRC2_CBC */ 1300x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x01,/* [408] OBJ_netscape_cert_type */
1250x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05,0x0C,/* [382] OBJ_pbeWithSHA1AndRC4 */ 1310x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x02,/* [417] OBJ_netscape_base_url */
1260x2B,0x0E,0x03,0x02,0x1B, /* [391] OBJ_dsaWithSHA1_2 */ 1320x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x03,/* [426] OBJ_netscape_revocation_url */
1270x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x01,/* [396] OBJ_netscape_cert_type */ 1330x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x04,/* [435] OBJ_netscape_ca_revocation_url */
1280x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x02,/* [405] OBJ_netscape_base_url */ 1340x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x07,/* [444] OBJ_netscape_renewal_url */
1290x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x03,/* [414] OBJ_netscape_revocation_url */ 1350x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x08,/* [453] OBJ_netscape_ca_policy_url */
1300x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x04,/* [423] OBJ_netscape_ca_revocation_url */ 1360x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x0C,/* [462] OBJ_netscape_ssl_server_name */
1310x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x07,/* [432] OBJ_netscape_renewal_url */ 1370x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x0D,/* [471] OBJ_netscape_comment */
1320x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x08,/* [441] OBJ_netscape_ca_policy_url */ 1380x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x02,0x05,/* [480] OBJ_netscape_cert_sequence */
1330x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x0C,/* [450] OBJ_netscape_ssl_server_name */ 1390x55,0x1D, /* [489] OBJ_id_ce */
1340x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x01,0x0D,/* [459] OBJ_netscape_comment */ 1400x55,0x1D,0x0E, /* [491] OBJ_subject_key_identifier */
1350x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x02,0x05,/* [468] OBJ_netscape_cert_sequence */ 1410x55,0x1D,0x0F, /* [494] OBJ_key_usage */
1360x55,0x1D, /* [477] OBJ_ld_ce */ 1420x55,0x1D,0x10, /* [497] OBJ_private_key_usage_period */
1370x55,0x1D,0x0E, /* [479] OBJ_subject_key_identifier */ 1430x55,0x1D,0x11, /* [500] OBJ_subject_alt_name */
1380x55,0x1D,0x0F, /* [482] OBJ_key_usage */ 1440x55,0x1D,0x12, /* [503] OBJ_issuer_alt_name */
1390x55,0x1D,0x10, /* [485] OBJ_private_key_usage_period */ 1450x55,0x1D,0x13, /* [506] OBJ_basic_constraints */
1400x55,0x1D,0x11, /* [488] OBJ_subject_alt_name */ 1460x55,0x1D,0x14, /* [509] OBJ_crl_number */
1410x55,0x1D,0x12, /* [491] OBJ_issuer_alt_name */ 1470x55,0x1D,0x20, /* [512] OBJ_certificate_policies */
1420x55,0x1D,0x13, /* [494] OBJ_basic_constraints */ 1480x55,0x1D,0x23, /* [515] OBJ_authority_key_identifier */
1430x55,0x1D,0x14, /* [497] OBJ_crl_number */ 1490x2B,0x06,0x01,0x04,0x01,0x97,0x55,0x01,0x02,/* [518] OBJ_bf_cbc */
1440x55,0x1D,0x20, /* [500] OBJ_certificate_policies */ 1500x55,0x08,0x03,0x65, /* [527] OBJ_mdc2 */
1450x55,0x1D,0x23, /* [503] OBJ_authority_key_identifier */ 1510x55,0x08,0x03,0x64, /* [531] OBJ_mdc2WithRSA */
1460x55,0x08,0x03,0x65, /* [506] OBJ_mdc2 */ 1520x55,0x04,0x2A, /* [535] OBJ_givenName */
1470x55,0x08,0x03,0x64, /* [510] OBJ_mdc2WithRSA */ 1530x55,0x04,0x04, /* [538] OBJ_surname */
1480x55,0x04,0x2A, /* [514] OBJ_givenName */ 1540x55,0x04,0x2B, /* [541] OBJ_initials */
1490x55,0x04,0x04, /* [517] OBJ_surname */ 1550x55,0x1D,0x1F, /* [544] OBJ_crl_distribution_points */
1500x55,0x04,0x2B, /* [520] OBJ_initials */ 1560x2B,0x0E,0x03,0x02,0x03, /* [547] OBJ_md5WithRSA */
1510x55,0x04,0x2D, /* [523] OBJ_uniqueIdentifier */ 1570x55,0x04,0x05, /* [552] OBJ_serialNumber */
1520x55,0x1D,0x1F, /* [526] OBJ_crl_distribution_points */ 1580x55,0x04,0x0C, /* [555] OBJ_title */
1530x2B,0x0E,0x03,0x02,0x03, /* [529] OBJ_md5WithRSA */ 1590x55,0x04,0x0D, /* [558] OBJ_description */
1540x55,0x04,0x05, /* [534] OBJ_serialNumber */ 1600x2A,0x86,0x48,0x86,0xF6,0x7D,0x07,0x42,0x0A,/* [561] OBJ_cast5_cbc */
1550x55,0x04,0x0C, /* [537] OBJ_title */ 1610x2A,0x86,0x48,0x86,0xF6,0x7D,0x07,0x42,0x0C,/* [570] OBJ_pbeWithMD5AndCast5_CBC */
1560x55,0x04,0x0D, /* [540] OBJ_description */ 1620x2A,0x86,0x48,0xCE,0x38,0x04,0x03, /* [579] OBJ_dsaWithSHA1 */
1570x2A,0x86,0x48,0x86,0xF6,0x7D,0x07,0x42,0x0A,/* [543] OBJ_cast5_cbc */ 1630x2B,0x0E,0x03,0x02,0x1D, /* [586] OBJ_sha1WithRSA */
1580x2A,0x86,0x48,0x86,0xF6,0x7D,0x07,0x42,0x0C,/* [552] OBJ_pbeWithMD5AndCast5_CBC */ 1640x2A,0x86,0x48,0xCE,0x38,0x04,0x01, /* [591] OBJ_dsa */
1590x2A,0x86,0x48,0xCE,0x38,0x04,0x03, /* [561] OBJ_dsaWithSHA1 */ 1650x2B,0x24,0x03,0x02,0x01, /* [598] OBJ_ripemd160 */
1600x2B,0x0E,0x03,0x02,0x1D, /* [568] OBJ_sha1WithRSA */ 1660x2B,0x24,0x03,0x03,0x01,0x02, /* [603] OBJ_ripemd160WithRSA */
1610x2A,0x86,0x48,0xCE,0x38,0x04,0x01, /* [573] OBJ_dsa */ 1670x2A,0x86,0x48,0x86,0xF7,0x0D,0x03,0x08, /* [609] OBJ_rc5_cbc */
1620x2B,0x24,0x03,0x02,0x01, /* [580] OBJ_ripemd160 */ 1680x29,0x01,0x01,0x85,0x1A,0x01, /* [617] OBJ_rle_compression */
1630x2B,0x24,0x03,0x03,0x01,0x02, /* [585] OBJ_ripemd160WithRSA */ 1690x29,0x01,0x01,0x85,0x1A,0x02, /* [623] OBJ_zlib_compression */
1640x2A,0x86,0x48,0x86,0xF7,0x0D,0x03,0x08, /* [591] OBJ_rc5_cbc */ 1700x55,0x1D,0x25, /* [629] OBJ_ext_key_usage */
1710x2B,0x06,0x01,0x05,0x05,0x07, /* [632] OBJ_id_pkix */
1720x2B,0x06,0x01,0x05,0x05,0x07,0x03, /* [638] OBJ_id_kp */
1730x2B,0x06,0x01,0x05,0x05,0x07,0x03,0x01, /* [645] OBJ_server_auth */
1740x2B,0x06,0x01,0x05,0x05,0x07,0x03,0x02, /* [653] OBJ_client_auth */
1750x2B,0x06,0x01,0x05,0x05,0x07,0x03,0x03, /* [661] OBJ_code_sign */
1760x2B,0x06,0x01,0x05,0x05,0x07,0x03,0x04, /* [669] OBJ_email_protect */
1770x2B,0x06,0x01,0x05,0x05,0x07,0x03,0x08, /* [677] OBJ_time_stamp */
1780x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x02,0x01,0x15,/* [685] OBJ_ms_code_ind */
1790x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x02,0x01,0x16,/* [695] OBJ_ms_code_com */
1800x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x0A,0x03,0x01,/* [705] OBJ_ms_ctl_sign */
1810x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x0A,0x03,0x03,/* [715] OBJ_ms_sgc */
1820x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x0A,0x03,0x04,/* [725] OBJ_ms_efs */
1830x60,0x86,0x48,0x01,0x86,0xF8,0x42,0x04,0x01,/* [735] OBJ_ns_sgc */
1840x55,0x1D,0x1B, /* [744] OBJ_delta_crl */
1850x55,0x1D,0x15, /* [747] OBJ_crl_reason */
1860x55,0x1D,0x18, /* [750] OBJ_invalidity_date */
1870x2B,0x65,0x01,0x04,0x01, /* [753] OBJ_sxnet */
1880x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x01,0x01,/* [758] OBJ_pbe_WithSHA1And128BitRC4 */
1890x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x01,0x02,/* [768] OBJ_pbe_WithSHA1And40BitRC4 */
1900x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x01,0x03,/* [778] OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC */
1910x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x01,0x04,/* [788] OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC */
1920x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x01,0x05,/* [798] OBJ_pbe_WithSHA1And128BitRC2_CBC */
1930x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x01,0x06,/* [808] OBJ_pbe_WithSHA1And40BitRC2_CBC */
1940x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x0A,0x01,0x01,/* [818] OBJ_keyBag */
1950x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x0A,0x01,0x02,/* [829] OBJ_pkcs8ShroudedKeyBag */
1960x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x0A,0x01,0x03,/* [840] OBJ_certBag */
1970x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x0A,0x01,0x04,/* [851] OBJ_crlBag */
1980x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x0A,0x01,0x05,/* [862] OBJ_secretBag */
1990x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x0C,0x0A,0x01,0x06,/* [873] OBJ_safeContentsBag */
2000x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x14,/* [884] OBJ_friendlyName */
2010x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x15,/* [893] OBJ_localKeyID */
2020x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x16,0x01,/* [902] OBJ_x509Certificate */
2030x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x16,0x02,/* [912] OBJ_sdsiCertificate */
2040x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x17,0x01,/* [922] OBJ_x509Crl */
2050x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05,0x0D,/* [932] OBJ_pbes2 */
2060x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05,0x0E,/* [941] OBJ_pbmac1 */
2070x2A,0x86,0x48,0x86,0xF7,0x0D,0x02,0x07, /* [950] OBJ_hmacWithSHA1 */
2080x2B,0x06,0x01,0x05,0x05,0x07,0x02,0x01, /* [958] OBJ_id_qt_cps */
2090x2B,0x06,0x01,0x05,0x05,0x07,0x02,0x02, /* [966] OBJ_id_qt_unotice */
2100x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x0F,/* [974] OBJ_SMIMECapabilities */
2110x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05,0x04,/* [983] OBJ_pbeWithMD2AndRC2_CBC */
2120x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05,0x06,/* [992] OBJ_pbeWithMD5AndRC2_CBC */
2130x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05,0x0A,/* [1001] OBJ_pbeWithSHA1AndDES_CBC */
2140x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x02,0x01,0x0E,/* [1010] OBJ_ms_ext_req */
2150x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x0E,/* [1020] OBJ_ext_req */
2160x55,0x04,0x29, /* [1029] OBJ_name */
2170x55,0x04,0x2E, /* [1032] OBJ_dnQualifier */
2180x2B,0x06,0x01,0x05,0x05,0x07,0x01, /* [1035] OBJ_id_pe */
2190x2B,0x06,0x01,0x05,0x05,0x07,0x30, /* [1042] OBJ_id_ad */
2200x2B,0x06,0x01,0x05,0x05,0x07,0x01,0x01, /* [1049] OBJ_info_access */
2210x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01, /* [1057] OBJ_ad_OCSP */
2220x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x02, /* [1065] OBJ_ad_ca_issuers */
2230x2B,0x06,0x01,0x05,0x05,0x07,0x03,0x09, /* [1073] OBJ_OCSP_sign */
2240x28, /* [1081] OBJ_iso */
2250x2A, /* [1082] OBJ_member_body */
2260x2A,0x86,0x48, /* [1083] OBJ_ISO_US */
2270x2A,0x86,0x48,0xCE,0x38, /* [1086] OBJ_X9_57 */
2280x2A,0x86,0x48,0xCE,0x38,0x04, /* [1091] OBJ_X9cm */
2290x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01, /* [1097] OBJ_pkcs1 */
2300x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x05, /* [1105] OBJ_pkcs5 */
2310x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,/* [1113] OBJ_SMIME */
2320x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x00,/* [1122] OBJ_id_smime_mod */
2330x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x01,/* [1132] OBJ_id_smime_ct */
2340x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,/* [1142] OBJ_id_smime_aa */
2350x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x03,/* [1152] OBJ_id_smime_alg */
2360x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x04,/* [1162] OBJ_id_smime_cd */
2370x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x05,/* [1172] OBJ_id_smime_spq */
2380x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x06,/* [1182] OBJ_id_smime_cti */
2390x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x00,0x01,/* [1192] OBJ_id_smime_mod_cms */
2400x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x00,0x02,/* [1203] OBJ_id_smime_mod_ess */
2410x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x00,0x03,/* [1214] OBJ_id_smime_mod_oid */
2420x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x00,0x04,/* [1225] OBJ_id_smime_mod_msg_v3 */
2430x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x00,0x05,/* [1236] OBJ_id_smime_mod_ets_eSignature_88 */
2440x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x00,0x06,/* [1247] OBJ_id_smime_mod_ets_eSignature_97 */
2450x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x00,0x07,/* [1258] OBJ_id_smime_mod_ets_eSigPolicy_88 */
2460x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x00,0x08,/* [1269] OBJ_id_smime_mod_ets_eSigPolicy_97 */
2470x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x01,0x01,/* [1280] OBJ_id_smime_ct_receipt */
2480x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x01,0x02,/* [1291] OBJ_id_smime_ct_authData */
2490x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x01,0x03,/* [1302] OBJ_id_smime_ct_publishCert */
2500x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x01,0x04,/* [1313] OBJ_id_smime_ct_TSTInfo */
2510x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x01,0x05,/* [1324] OBJ_id_smime_ct_TDTInfo */
2520x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x01,0x06,/* [1335] OBJ_id_smime_ct_contentInfo */
2530x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x01,0x07,/* [1346] OBJ_id_smime_ct_DVCSRequestData */
2540x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x01,0x08,/* [1357] OBJ_id_smime_ct_DVCSResponseData */
2550x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x01,/* [1368] OBJ_id_smime_aa_receiptRequest */
2560x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x02,/* [1379] OBJ_id_smime_aa_securityLabel */
2570x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x03,/* [1390] OBJ_id_smime_aa_mlExpandHistory */
2580x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x04,/* [1401] OBJ_id_smime_aa_contentHint */
2590x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x05,/* [1412] OBJ_id_smime_aa_msgSigDigest */
2600x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x06,/* [1423] OBJ_id_smime_aa_encapContentType */
2610x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x07,/* [1434] OBJ_id_smime_aa_contentIdentifier */
2620x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x08,/* [1445] OBJ_id_smime_aa_macValue */
2630x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x09,/* [1456] OBJ_id_smime_aa_equivalentLabels */
2640x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x0A,/* [1467] OBJ_id_smime_aa_contentReference */
2650x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x0B,/* [1478] OBJ_id_smime_aa_encrypKeyPref */
2660x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x0C,/* [1489] OBJ_id_smime_aa_signingCertificate */
2670x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x0D,/* [1500] OBJ_id_smime_aa_smimeEncryptCerts */
2680x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x0E,/* [1511] OBJ_id_smime_aa_timeStampToken */
2690x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x0F,/* [1522] OBJ_id_smime_aa_ets_sigPolicyId */
2700x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x10,/* [1533] OBJ_id_smime_aa_ets_commitmentType */
2710x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x11,/* [1544] OBJ_id_smime_aa_ets_signerLocation */
2720x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x12,/* [1555] OBJ_id_smime_aa_ets_signerAttr */
2730x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x13,/* [1566] OBJ_id_smime_aa_ets_otherSigCert */
2740x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x14,/* [1577] OBJ_id_smime_aa_ets_contentTimestamp */
2750x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x15,/* [1588] OBJ_id_smime_aa_ets_CertificateRefs */
2760x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x16,/* [1599] OBJ_id_smime_aa_ets_RevocationRefs */
2770x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x17,/* [1610] OBJ_id_smime_aa_ets_certValues */
2780x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x18,/* [1621] OBJ_id_smime_aa_ets_revocationValues */
2790x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x19,/* [1632] OBJ_id_smime_aa_ets_escTimeStamp */
2800x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x1A,/* [1643] OBJ_id_smime_aa_ets_certCRLTimestamp */
2810x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x1B,/* [1654] OBJ_id_smime_aa_ets_archiveTimeStamp */
2820x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x1C,/* [1665] OBJ_id_smime_aa_signatureType */
2830x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x02,0x1D,/* [1676] OBJ_id_smime_aa_dvcs_dvc */
2840x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x03,0x01,/* [1687] OBJ_id_smime_alg_ESDHwith3DES */
2850x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x03,0x02,/* [1698] OBJ_id_smime_alg_ESDHwithRC2 */
2860x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x03,0x03,/* [1709] OBJ_id_smime_alg_3DESwrap */
2870x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x03,0x04,/* [1720] OBJ_id_smime_alg_RC2wrap */
2880x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x03,0x05,/* [1731] OBJ_id_smime_alg_ESDH */
2890x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x03,0x06,/* [1742] OBJ_id_smime_alg_CMS3DESwrap */
2900x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x03,0x07,/* [1753] OBJ_id_smime_alg_CMSRC2wrap */
2910x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x04,0x01,/* [1764] OBJ_id_smime_cd_ldap */
2920x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x05,0x01,/* [1775] OBJ_id_smime_spq_ets_sqt_uri */
2930x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x05,0x02,/* [1786] OBJ_id_smime_spq_ets_sqt_unotice */
2940x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x06,0x01,/* [1797] OBJ_id_smime_cti_ets_proofOfOrigin */
2950x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x06,0x02,/* [1808] OBJ_id_smime_cti_ets_proofOfReceipt */
2960x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x06,0x03,/* [1819] OBJ_id_smime_cti_ets_proofOfDelivery */
2970x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x06,0x04,/* [1830] OBJ_id_smime_cti_ets_proofOfSender */
2980x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x06,0x05,/* [1841] OBJ_id_smime_cti_ets_proofOfApproval */
2990x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x09,0x10,0x06,0x06,/* [1852] OBJ_id_smime_cti_ets_proofOfCreation */
3000x2A,0x86,0x48,0x86,0xF7,0x0D,0x02,0x04, /* [1863] OBJ_md4 */
3010x2B,0x06,0x01,0x05,0x05,0x07,0x00, /* [1871] OBJ_id_pkix_mod */
3020x2B,0x06,0x01,0x05,0x05,0x07,0x02, /* [1878] OBJ_id_qt */
3030x2B,0x06,0x01,0x05,0x05,0x07,0x04, /* [1885] OBJ_id_it */
3040x2B,0x06,0x01,0x05,0x05,0x07,0x05, /* [1892] OBJ_id_pkip */
3050x2B,0x06,0x01,0x05,0x05,0x07,0x06, /* [1899] OBJ_id_alg */
3060x2B,0x06,0x01,0x05,0x05,0x07,0x07, /* [1906] OBJ_id_cmc */
3070x2B,0x06,0x01,0x05,0x05,0x07,0x08, /* [1913] OBJ_id_on */
3080x2B,0x06,0x01,0x05,0x05,0x07,0x09, /* [1920] OBJ_id_pda */
3090x2B,0x06,0x01,0x05,0x05,0x07,0x0A, /* [1927] OBJ_id_aca */
3100x2B,0x06,0x01,0x05,0x05,0x07,0x0B, /* [1934] OBJ_id_qcs */
3110x2B,0x06,0x01,0x05,0x05,0x07,0x0C, /* [1941] OBJ_id_cct */
3120x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x01, /* [1948] OBJ_id_pkix1_explicit_88 */
3130x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x02, /* [1956] OBJ_id_pkix1_implicit_88 */
3140x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x03, /* [1964] OBJ_id_pkix1_explicit_93 */
3150x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x04, /* [1972] OBJ_id_pkix1_implicit_93 */
3160x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x05, /* [1980] OBJ_id_mod_crmf */
3170x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x06, /* [1988] OBJ_id_mod_cmc */
3180x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x07, /* [1996] OBJ_id_mod_kea_profile_88 */
3190x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x08, /* [2004] OBJ_id_mod_kea_profile_93 */
3200x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x09, /* [2012] OBJ_id_mod_cmp */
3210x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x0A, /* [2020] OBJ_id_mod_qualified_cert_88 */
3220x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x0B, /* [2028] OBJ_id_mod_qualified_cert_93 */
3230x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x0C, /* [2036] OBJ_id_mod_attribute_cert */
3240x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x0D, /* [2044] OBJ_id_mod_timestamp_protocol */
3250x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x0E, /* [2052] OBJ_id_mod_ocsp */
3260x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x0F, /* [2060] OBJ_id_mod_dvcs */
3270x2B,0x06,0x01,0x05,0x05,0x07,0x00,0x10, /* [2068] OBJ_id_mod_cmp2000 */
3280x2B,0x06,0x01,0x05,0x05,0x07,0x01,0x02, /* [2076] OBJ_biometricInfo */
3290x2B,0x06,0x01,0x05,0x05,0x07,0x01,0x03, /* [2084] OBJ_qcStatements */
3300x2B,0x06,0x01,0x05,0x05,0x07,0x01,0x04, /* [2092] OBJ_ac_auditEntity */
3310x2B,0x06,0x01,0x05,0x05,0x07,0x01,0x05, /* [2100] OBJ_ac_targeting */
3320x2B,0x06,0x01,0x05,0x05,0x07,0x01,0x06, /* [2108] OBJ_aaControls */
3330x2B,0x06,0x01,0x05,0x05,0x07,0x01,0x07, /* [2116] OBJ_sbqp_ipAddrBlock */
3340x2B,0x06,0x01,0x05,0x05,0x07,0x01,0x08, /* [2124] OBJ_sbqp_autonomousSysNum */
3350x2B,0x06,0x01,0x05,0x05,0x07,0x01,0x09, /* [2132] OBJ_sbqp_routerIdentifier */
3360x2B,0x06,0x01,0x05,0x05,0x07,0x02,0x03, /* [2140] OBJ_textNotice */
3370x2B,0x06,0x01,0x05,0x05,0x07,0x03,0x05, /* [2148] OBJ_ipsecEndSystem */
3380x2B,0x06,0x01,0x05,0x05,0x07,0x03,0x06, /* [2156] OBJ_ipsecTunnel */
3390x2B,0x06,0x01,0x05,0x05,0x07,0x03,0x07, /* [2164] OBJ_ipsecUser */
3400x2B,0x06,0x01,0x05,0x05,0x07,0x03,0x0A, /* [2172] OBJ_dvcs */
3410x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x01, /* [2180] OBJ_id_it_caProtEncCert */
3420x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x02, /* [2188] OBJ_id_it_signKeyPairTypes */
3430x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x03, /* [2196] OBJ_id_it_encKeyPairTypes */
3440x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x04, /* [2204] OBJ_id_it_preferredSymmAlg */
3450x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x05, /* [2212] OBJ_id_it_caKeyUpdateInfo */
3460x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x06, /* [2220] OBJ_id_it_currentCRL */
3470x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x07, /* [2228] OBJ_id_it_unsupportedOIDs */
3480x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x08, /* [2236] OBJ_id_it_subscriptionRequest */
3490x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x09, /* [2244] OBJ_id_it_subscriptionResponse */
3500x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x0A, /* [2252] OBJ_id_it_keyPairParamReq */
3510x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x0B, /* [2260] OBJ_id_it_keyPairParamRep */
3520x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x0C, /* [2268] OBJ_id_it_revPassphrase */
3530x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x0D, /* [2276] OBJ_id_it_implicitConfirm */
3540x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x0E, /* [2284] OBJ_id_it_confirmWaitTime */
3550x2B,0x06,0x01,0x05,0x05,0x07,0x04,0x0F, /* [2292] OBJ_id_it_origPKIMessage */
3560x2B,0x06,0x01,0x05,0x05,0x07,0x05,0x01, /* [2300] OBJ_id_regCtrl */
3570x2B,0x06,0x01,0x05,0x05,0x07,0x05,0x02, /* [2308] OBJ_id_regInfo */
3580x2B,0x06,0x01,0x05,0x05,0x07,0x05,0x01,0x01,/* [2316] OBJ_id_regCtrl_regToken */
3590x2B,0x06,0x01,0x05,0x05,0x07,0x05,0x01,0x02,/* [2325] OBJ_id_regCtrl_authenticator */
3600x2B,0x06,0x01,0x05,0x05,0x07,0x05,0x01,0x03,/* [2334] OBJ_id_regCtrl_pkiPublicationInfo */
3610x2B,0x06,0x01,0x05,0x05,0x07,0x05,0x01,0x04,/* [2343] OBJ_id_regCtrl_pkiArchiveOptions */
3620x2B,0x06,0x01,0x05,0x05,0x07,0x05,0x01,0x05,/* [2352] OBJ_id_regCtrl_oldCertID */
3630x2B,0x06,0x01,0x05,0x05,0x07,0x05,0x01,0x06,/* [2361] OBJ_id_regCtrl_protocolEncrKey */
3640x2B,0x06,0x01,0x05,0x05,0x07,0x05,0x02,0x01,/* [2370] OBJ_id_regInfo_utf8Pairs */
3650x2B,0x06,0x01,0x05,0x05,0x07,0x05,0x02,0x02,/* [2379] OBJ_id_regInfo_certReq */
3660x2B,0x06,0x01,0x05,0x05,0x07,0x06,0x01, /* [2388] OBJ_id_alg_des40 */
3670x2B,0x06,0x01,0x05,0x05,0x07,0x06,0x02, /* [2396] OBJ_id_alg_noSignature */
3680x2B,0x06,0x01,0x05,0x05,0x07,0x06,0x03, /* [2404] OBJ_id_alg_dh_sig_hmac_sha1 */
3690x2B,0x06,0x01,0x05,0x05,0x07,0x06,0x04, /* [2412] OBJ_id_alg_dh_pop */
3700x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x01, /* [2420] OBJ_id_cmc_statusInfo */
3710x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x02, /* [2428] OBJ_id_cmc_identification */
3720x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x03, /* [2436] OBJ_id_cmc_identityProof */
3730x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x04, /* [2444] OBJ_id_cmc_dataReturn */
3740x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x05, /* [2452] OBJ_id_cmc_transactionId */
3750x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x06, /* [2460] OBJ_id_cmc_senderNonce */
3760x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x07, /* [2468] OBJ_id_cmc_recipientNonce */
3770x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x08, /* [2476] OBJ_id_cmc_addExtensions */
3780x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x09, /* [2484] OBJ_id_cmc_encryptedPOP */
3790x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x0A, /* [2492] OBJ_id_cmc_decryptedPOP */
3800x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x0B, /* [2500] OBJ_id_cmc_lraPOPWitness */
3810x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x0F, /* [2508] OBJ_id_cmc_getCert */
3820x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x10, /* [2516] OBJ_id_cmc_getCRL */
3830x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x11, /* [2524] OBJ_id_cmc_revokeRequest */
3840x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x12, /* [2532] OBJ_id_cmc_regInfo */
3850x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x13, /* [2540] OBJ_id_cmc_responseInfo */
3860x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x15, /* [2548] OBJ_id_cmc_queryPending */
3870x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x16, /* [2556] OBJ_id_cmc_popLinkRandom */
3880x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x17, /* [2564] OBJ_id_cmc_popLinkWitness */
3890x2B,0x06,0x01,0x05,0x05,0x07,0x07,0x18, /* [2572] OBJ_id_cmc_confirmCertAcceptance */
3900x2B,0x06,0x01,0x05,0x05,0x07,0x08,0x01, /* [2580] OBJ_id_on_personalData */
3910x2B,0x06,0x01,0x05,0x05,0x07,0x09,0x01, /* [2588] OBJ_id_pda_dateOfBirth */
3920x2B,0x06,0x01,0x05,0x05,0x07,0x09,0x02, /* [2596] OBJ_id_pda_placeOfBirth */
3930x2B,0x06,0x01,0x05,0x05,0x07,0x09,0x03, /* [2604] OBJ_id_pda_gender */
3940x2B,0x06,0x01,0x05,0x05,0x07,0x09,0x04, /* [2612] OBJ_id_pda_countryOfCitizenship */
3950x2B,0x06,0x01,0x05,0x05,0x07,0x09,0x05, /* [2620] OBJ_id_pda_countryOfResidence */
3960x2B,0x06,0x01,0x05,0x05,0x07,0x0A,0x01, /* [2628] OBJ_id_aca_authenticationInfo */
3970x2B,0x06,0x01,0x05,0x05,0x07,0x0A,0x02, /* [2636] OBJ_id_aca_accessIdentity */
3980x2B,0x06,0x01,0x05,0x05,0x07,0x0A,0x03, /* [2644] OBJ_id_aca_chargingIdentity */
3990x2B,0x06,0x01,0x05,0x05,0x07,0x0A,0x04, /* [2652] OBJ_id_aca_group */
4000x2B,0x06,0x01,0x05,0x05,0x07,0x0A,0x05, /* [2660] OBJ_id_aca_role */
4010x2B,0x06,0x01,0x05,0x05,0x07,0x0B,0x01, /* [2668] OBJ_id_qcs_pkixQCSyntax_v1 */
4020x2B,0x06,0x01,0x05,0x05,0x07,0x0C,0x01, /* [2676] OBJ_id_cct_crs */
4030x2B,0x06,0x01,0x05,0x05,0x07,0x0C,0x02, /* [2684] OBJ_id_cct_PKIData */
4040x2B,0x06,0x01,0x05,0x05,0x07,0x0C,0x03, /* [2692] OBJ_id_cct_PKIResponse */
4050x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x03, /* [2700] OBJ_ad_timeStamping */
4060x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x04, /* [2708] OBJ_ad_dvcs */
4070x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01,0x01,/* [2716] OBJ_id_pkix_OCSP_basic */
4080x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01,0x02,/* [2725] OBJ_id_pkix_OCSP_Nonce */
4090x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01,0x03,/* [2734] OBJ_id_pkix_OCSP_CrlID */
4100x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01,0x04,/* [2743] OBJ_id_pkix_OCSP_acceptableResponses */
4110x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01,0x05,/* [2752] OBJ_id_pkix_OCSP_noCheck */
4120x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01,0x06,/* [2761] OBJ_id_pkix_OCSP_archiveCutoff */
4130x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01,0x07,/* [2770] OBJ_id_pkix_OCSP_serviceLocator */
4140x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01,0x08,/* [2779] OBJ_id_pkix_OCSP_extendedStatus */
4150x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01,0x09,/* [2788] OBJ_id_pkix_OCSP_valid */
4160x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01,0x0A,/* [2797] OBJ_id_pkix_OCSP_path */
4170x2B,0x06,0x01,0x05,0x05,0x07,0x30,0x01,0x0B,/* [2806] OBJ_id_pkix_OCSP_trustRoot */
4180x2B,0x0E,0x03,0x02, /* [2815] OBJ_algorithm */
4190x2B,0x0E,0x03,0x02,0x0B, /* [2819] OBJ_rsaSignature */
4200x55,0x08, /* [2824] OBJ_X500algorithms */
4210x2B, /* [2826] OBJ_org */
4220x2B,0x06, /* [2827] OBJ_dod */
4230x2B,0x06,0x01, /* [2829] OBJ_iana */
4240x2B,0x06,0x01,0x01, /* [2832] OBJ_Directory */
4250x2B,0x06,0x01,0x02, /* [2836] OBJ_Management */
4260x2B,0x06,0x01,0x03, /* [2840] OBJ_Experimental */
4270x2B,0x06,0x01,0x04, /* [2844] OBJ_Private */
4280x2B,0x06,0x01,0x05, /* [2848] OBJ_Security */
4290x2B,0x06,0x01,0x06, /* [2852] OBJ_SNMPv2 */
4300x2B,0x06,0x01,0x07, /* [2856] OBJ_Mail */
4310x2B,0x06,0x01,0x04,0x01, /* [2860] OBJ_Enterprises */
4320x2B,0x06,0x01,0x04,0x01,0x8B,0x3A,0x82,0x58,/* [2865] OBJ_dcObject */
4330x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x19,/* [2874] OBJ_domainComponent */
4340x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x0D,/* [2884] OBJ_Domain */
4350x50, /* [2894] OBJ_joint_iso_ccitt */
4360x55,0x01,0x05, /* [2895] OBJ_selected_attribute_types */
4370x55,0x01,0x05,0x37, /* [2898] OBJ_clearance */
4380x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x03,/* [2902] OBJ_md4WithRSAEncryption */
4390x2B,0x06,0x01,0x05,0x05,0x07,0x01,0x0A, /* [2911] OBJ_ac_proxying */
4400x2B,0x06,0x01,0x05,0x05,0x07,0x01,0x0B, /* [2919] OBJ_sinfo_access */
4410x2B,0x06,0x01,0x05,0x05,0x07,0x0A,0x06, /* [2927] OBJ_id_aca_encAttrs */
4420x55,0x04,0x48, /* [2935] OBJ_role */
4430x55,0x1D,0x24, /* [2938] OBJ_policy_constraints */
4440x55,0x1D,0x37, /* [2941] OBJ_target_information */
4450x55,0x1D,0x38, /* [2944] OBJ_no_rev_avail */
4460x00, /* [2947] OBJ_ccitt */
4470x2A,0x86,0x48,0xCE,0x3D, /* [2948] OBJ_ansi_X9_62 */
4480x2A,0x86,0x48,0xCE,0x3D,0x01,0x01, /* [2953] OBJ_X9_62_prime_field */
4490x2A,0x86,0x48,0xCE,0x3D,0x01,0x02, /* [2960] OBJ_X9_62_characteristic_two_field */
4500x2A,0x86,0x48,0xCE,0x3D,0x02,0x01, /* [2967] OBJ_X9_62_id_ecPublicKey */
4510x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x01, /* [2974] OBJ_X9_62_prime192v1 */
4520x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x02, /* [2982] OBJ_X9_62_prime192v2 */
4530x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x03, /* [2990] OBJ_X9_62_prime192v3 */
4540x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x04, /* [2998] OBJ_X9_62_prime239v1 */
4550x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x05, /* [3006] OBJ_X9_62_prime239v2 */
4560x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x06, /* [3014] OBJ_X9_62_prime239v3 */
4570x2A,0x86,0x48,0xCE,0x3D,0x03,0x01,0x07, /* [3022] OBJ_X9_62_prime256v1 */
4580x2A,0x86,0x48,0xCE,0x3D,0x04,0x01, /* [3030] OBJ_ecdsa_with_SHA1 */
4590x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x11,0x01,/* [3037] OBJ_ms_csp_name */
4600x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x01,/* [3046] OBJ_aes_128_ecb */
4610x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x02,/* [3055] OBJ_aes_128_cbc */
4620x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x03,/* [3064] OBJ_aes_128_ofb128 */
4630x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x04,/* [3073] OBJ_aes_128_cfb128 */
4640x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x15,/* [3082] OBJ_aes_192_ecb */
4650x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x16,/* [3091] OBJ_aes_192_cbc */
4660x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x17,/* [3100] OBJ_aes_192_ofb128 */
4670x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x18,/* [3109] OBJ_aes_192_cfb128 */
4680x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x29,/* [3118] OBJ_aes_256_ecb */
4690x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x2A,/* [3127] OBJ_aes_256_cbc */
4700x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x2B,/* [3136] OBJ_aes_256_ofb128 */
4710x60,0x86,0x48,0x01,0x65,0x03,0x04,0x01,0x2C,/* [3145] OBJ_aes_256_cfb128 */
4720x55,0x1D,0x17, /* [3154] OBJ_hold_instruction_code */
4730x2A,0x86,0x48,0xCE,0x38,0x02,0x01, /* [3157] OBJ_hold_instruction_none */
4740x2A,0x86,0x48,0xCE,0x38,0x02,0x02, /* [3164] OBJ_hold_instruction_call_issuer */
4750x2A,0x86,0x48,0xCE,0x38,0x02,0x03, /* [3171] OBJ_hold_instruction_reject */
4760x09, /* [3178] OBJ_data */
4770x09,0x92,0x26, /* [3179] OBJ_pss */
4780x09,0x92,0x26,0x89,0x93,0xF2,0x2C, /* [3182] OBJ_ucl */
4790x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64, /* [3189] OBJ_pilot */
4800x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,/* [3197] OBJ_pilotAttributeType */
4810x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x03,/* [3206] OBJ_pilotAttributeSyntax */
4820x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,/* [3215] OBJ_pilotObjectClass */
4830x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x0A,/* [3224] OBJ_pilotGroups */
4840x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x03,0x04,/* [3233] OBJ_iA5StringSyntax */
4850x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x03,0x05,/* [3243] OBJ_caseIgnoreIA5StringSyntax */
4860x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x03,/* [3253] OBJ_pilotObject */
4870x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x04,/* [3263] OBJ_pilotPerson */
4880x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x05,/* [3273] OBJ_account */
4890x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x06,/* [3283] OBJ_document */
4900x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x07,/* [3293] OBJ_room */
4910x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x09,/* [3303] OBJ_documentSeries */
4920x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x0E,/* [3313] OBJ_rFC822localPart */
4930x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x0F,/* [3323] OBJ_dNSDomain */
4940x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x11,/* [3333] OBJ_domainRelatedObject */
4950x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x12,/* [3343] OBJ_friendlyCountry */
4960x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x13,/* [3353] OBJ_simpleSecurityObject */
4970x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x14,/* [3363] OBJ_pilotOrganization */
4980x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x15,/* [3373] OBJ_pilotDSA */
4990x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x04,0x16,/* [3383] OBJ_qualityLabelledData */
5000x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x01,/* [3393] OBJ_userId */
5010x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x02,/* [3403] OBJ_textEncodedORAddress */
5020x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x03,/* [3413] OBJ_rfc822Mailbox */
5030x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x04,/* [3423] OBJ_info */
5040x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x05,/* [3433] OBJ_favouriteDrink */
5050x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x06,/* [3443] OBJ_roomNumber */
5060x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x07,/* [3453] OBJ_photo */
5070x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x08,/* [3463] OBJ_userClass */
5080x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x09,/* [3473] OBJ_host */
5090x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x0A,/* [3483] OBJ_manager */
5100x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x0B,/* [3493] OBJ_documentIdentifier */
5110x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x0C,/* [3503] OBJ_documentTitle */
5120x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x0D,/* [3513] OBJ_documentVersion */
5130x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x0E,/* [3523] OBJ_documentAuthor */
5140x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x0F,/* [3533] OBJ_documentLocation */
5150x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x14,/* [3543] OBJ_homeTelephoneNumber */
5160x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x15,/* [3553] OBJ_secretary */
5170x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x16,/* [3563] OBJ_otherMailbox */
5180x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x17,/* [3573] OBJ_lastModifiedTime */
5190x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x18,/* [3583] OBJ_lastModifiedBy */
5200x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x1A,/* [3593] OBJ_aRecord */
5210x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x1B,/* [3603] OBJ_pilotAttributeType27 */
5220x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x1C,/* [3613] OBJ_mXRecord */
5230x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x1D,/* [3623] OBJ_nSRecord */
5240x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x1E,/* [3633] OBJ_sOARecord */
5250x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x1F,/* [3643] OBJ_cNAMERecord */
5260x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x25,/* [3653] OBJ_associatedDomain */
5270x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x26,/* [3663] OBJ_associatedName */
5280x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x27,/* [3673] OBJ_homePostalAddress */
5290x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x28,/* [3683] OBJ_personalTitle */
5300x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x29,/* [3693] OBJ_mobileTelephoneNumber */
5310x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x2A,/* [3703] OBJ_pagerTelephoneNumber */
5320x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x2B,/* [3713] OBJ_friendlyCountryName */
5330x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x2D,/* [3723] OBJ_organizationalStatus */
5340x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x2E,/* [3733] OBJ_janetMailbox */
5350x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x2F,/* [3743] OBJ_mailPreferenceOption */
5360x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x30,/* [3753] OBJ_buildingName */
5370x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x31,/* [3763] OBJ_dSAQuality */
5380x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x32,/* [3773] OBJ_singleLevelQuality */
5390x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x33,/* [3783] OBJ_subtreeMinimumQuality */
5400x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x34,/* [3793] OBJ_subtreeMaximumQuality */
5410x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x35,/* [3803] OBJ_personalSignature */
5420x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x36,/* [3813] OBJ_dITRedirect */
5430x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x37,/* [3823] OBJ_audio */
5440x09,0x92,0x26,0x89,0x93,0xF2,0x2C,0x64,0x01,0x38,/* [3833] OBJ_documentPublisher */
5450x55,0x04,0x2D, /* [3843] OBJ_x500UniqueIdentifier */
5460x2B,0x06,0x01,0x07,0x01, /* [3846] OBJ_mime_mhs */
5470x2B,0x06,0x01,0x07,0x01,0x01, /* [3851] OBJ_mime_mhs_headings */
5480x2B,0x06,0x01,0x07,0x01,0x02, /* [3857] OBJ_mime_mhs_bodies */
5490x2B,0x06,0x01,0x07,0x01,0x01,0x01, /* [3863] OBJ_id_hex_partial_message */
5500x2B,0x06,0x01,0x07,0x01,0x01,0x02, /* [3870] OBJ_id_hex_multipart_message */
5510x55,0x04,0x2C, /* [3877] OBJ_generationQualifier */
165}; 552};
166 553
167static ASN1_OBJECT nid_objs[NUM_NID]={ 554static ASN1_OBJECT nid_objs[NUM_NID]={
168{"UNDEF","undefined",NID_undef,0,NULL}, 555{"UNDEF","undefined",NID_undef,1,&(lvalues[0]),0},
169{"rsadsi","rsadsi",NID_rsadsi,6,&(lvalues[0]),0}, 556{"rsadsi","RSA Data Security, Inc.",NID_rsadsi,6,&(lvalues[1]),0},
170{"pkcs","pkcs",NID_pkcs,7,&(lvalues[6]),0}, 557{"pkcs","RSA Data Security, Inc. PKCS",NID_pkcs,7,&(lvalues[7]),0},
171{"MD2","md2",NID_md2,8,&(lvalues[13]),0}, 558{"MD2","md2",NID_md2,8,&(lvalues[14]),0},
172{"MD5","md5",NID_md5,8,&(lvalues[21]),0}, 559{"MD5","md5",NID_md5,8,&(lvalues[22]),0},
173{"RC4","rc4",NID_rc4,8,&(lvalues[29]),0}, 560{"RC4","rc4",NID_rc4,8,&(lvalues[30]),0},
174{"rsaEncryption","rsaEncryption",NID_rsaEncryption,9,&(lvalues[37]),0}, 561{"rsaEncryption","rsaEncryption",NID_rsaEncryption,9,&(lvalues[38]),0},
175{"RSA-MD2","md2WithRSAEncryption",NID_md2WithRSAEncryption,9, 562{"RSA-MD2","md2WithRSAEncryption",NID_md2WithRSAEncryption,9,
176 &(lvalues[46]),0}, 563 &(lvalues[47]),0},
177{"RSA-MD5","md5WithRSAEncryption",NID_md5WithRSAEncryption,9, 564{"RSA-MD5","md5WithRSAEncryption",NID_md5WithRSAEncryption,9,
178 &(lvalues[55]),0}, 565 &(lvalues[56]),0},
179{"pbeWithMD2AndDES-CBC","pbeWithMD2AndDES-CBC", 566{"PBE-MD2-DES","pbeWithMD2AndDES-CBC",NID_pbeWithMD2AndDES_CBC,9,
180 NID_pbeWithMD2AndDES_CBC,9,&(lvalues[64]),0}, 567 &(lvalues[65]),0},
181{"pbeWithMD5AndDES-CBC","pbeWithMD5AndDES-CBC", 568{"PBE-MD5-DES","pbeWithMD5AndDES-CBC",NID_pbeWithMD5AndDES_CBC,9,
182 NID_pbeWithMD5AndDES_CBC,9,&(lvalues[73]),0}, 569 &(lvalues[74]),0},
183{"X500","X500",NID_X500,1,&(lvalues[82]),0}, 570{"X500","directory services (X.500)",NID_X500,1,&(lvalues[83]),0},
184{"X509","X509",NID_X509,2,&(lvalues[83]),0}, 571{"X509","X509",NID_X509,2,&(lvalues[84]),0},
185{"CN","commonName",NID_commonName,3,&(lvalues[85]),0}, 572{"CN","commonName",NID_commonName,3,&(lvalues[86]),0},
186{"C","countryName",NID_countryName,3,&(lvalues[88]),0}, 573{"C","countryName",NID_countryName,3,&(lvalues[89]),0},
187{"L","localityName",NID_localityName,3,&(lvalues[91]),0}, 574{"L","localityName",NID_localityName,3,&(lvalues[92]),0},
188{"ST","stateOrProvinceName",NID_stateOrProvinceName,3,&(lvalues[94]),0}, 575{"ST","stateOrProvinceName",NID_stateOrProvinceName,3,&(lvalues[95]),0},
189{"O","organizationName",NID_organizationName,3,&(lvalues[97]),0}, 576{"O","organizationName",NID_organizationName,3,&(lvalues[98]),0},
190{"OU","organizationalUnitName",NID_organizationalUnitName,3, 577{"OU","organizationalUnitName",NID_organizationalUnitName,3,
191 &(lvalues[100]),0}, 578 &(lvalues[101]),0},
192{"RSA","rsa",NID_rsa,4,&(lvalues[103]),0}, 579{"RSA","rsa",NID_rsa,4,&(lvalues[104]),0},
193{"pkcs7","pkcs7",NID_pkcs7,8,&(lvalues[107]),0}, 580{"pkcs7","pkcs7",NID_pkcs7,8,&(lvalues[108]),0},
194{"pkcs7-data","pkcs7-data",NID_pkcs7_data,9,&(lvalues[115]),0}, 581{"pkcs7-data","pkcs7-data",NID_pkcs7_data,9,&(lvalues[116]),0},
195{"pkcs7-signedData","pkcs7-signedData",NID_pkcs7_signed,9, 582{"pkcs7-signedData","pkcs7-signedData",NID_pkcs7_signed,9,
196 &(lvalues[124]),0}, 583 &(lvalues[125]),0},
197{"pkcs7-envelopedData","pkcs7-envelopedData",NID_pkcs7_enveloped,9, 584{"pkcs7-envelopedData","pkcs7-envelopedData",NID_pkcs7_enveloped,9,
198 &(lvalues[133]),0}, 585 &(lvalues[134]),0},
199{"pkcs7-signedAndEnvelopedData","pkcs7-signedAndEnvelopedData", 586{"pkcs7-signedAndEnvelopedData","pkcs7-signedAndEnvelopedData",
200 NID_pkcs7_signedAndEnveloped,9,&(lvalues[142]),0}, 587 NID_pkcs7_signedAndEnveloped,9,&(lvalues[143]),0},
201{"pkcs7-digestData","pkcs7-digestData",NID_pkcs7_digest,9, 588{"pkcs7-digestData","pkcs7-digestData",NID_pkcs7_digest,9,
202 &(lvalues[151]),0}, 589 &(lvalues[152]),0},
203{"pkcs7-encryptedData","pkcs7-encryptedData",NID_pkcs7_encrypted,9, 590{"pkcs7-encryptedData","pkcs7-encryptedData",NID_pkcs7_encrypted,9,
204 &(lvalues[160]),0}, 591 &(lvalues[161]),0},
205{"pkcs3","pkcs3",NID_pkcs3,8,&(lvalues[169]),0}, 592{"pkcs3","pkcs3",NID_pkcs3,8,&(lvalues[170]),0},
206{"dhKeyAgreement","dhKeyAgreement",NID_dhKeyAgreement,9, 593{"dhKeyAgreement","dhKeyAgreement",NID_dhKeyAgreement,9,
207 &(lvalues[177]),0}, 594 &(lvalues[178]),0},
208{"DES-ECB","des-ecb",NID_des_ecb,5,&(lvalues[186]),0}, 595{"DES-ECB","des-ecb",NID_des_ecb,5,&(lvalues[187]),0},
209{"DES-CFB","des-cfb",NID_des_cfb64,5,&(lvalues[191]),0}, 596{"DES-CFB","des-cfb",NID_des_cfb64,5,&(lvalues[192]),0},
210{"DES-CBC","des-cbc",NID_des_cbc,5,&(lvalues[196]),0}, 597{"DES-CBC","des-cbc",NID_des_cbc,5,&(lvalues[197]),0},
211{"DES-EDE","des-ede",NID_des_ede,5,&(lvalues[201]),0}, 598{"DES-EDE","des-ede",NID_des_ede_ecb,5,&(lvalues[202]),0},
212{"DES-EDE3","des-ede3",NID_des_ede3,0,NULL}, 599{"DES-EDE3","des-ede3",NID_des_ede3_ecb,0,NULL},
213{"IDEA-CBC","idea-cbc",NID_idea_cbc,0,NULL}, 600{"IDEA-CBC","idea-cbc",NID_idea_cbc,11,&(lvalues[207]),0},
214{"IDEA-CFB","idea-cfb",NID_idea_cfb64,0,NULL}, 601{"IDEA-CFB","idea-cfb",NID_idea_cfb64,0,NULL},
215{"IDEA-ECB","idea-ecb",NID_idea_ecb,0,NULL}, 602{"IDEA-ECB","idea-ecb",NID_idea_ecb,0,NULL},
216{"RC2-CBC","rc2-cbc",NID_rc2_cbc,8,&(lvalues[206]),0}, 603{"RC2-CBC","rc2-cbc",NID_rc2_cbc,8,&(lvalues[218]),0},
217{"RC2-ECB","rc2-ecb",NID_rc2_ecb,0,NULL}, 604{"RC2-ECB","rc2-ecb",NID_rc2_ecb,0,NULL},
218{"RC2-CFB","rc2-cfb",NID_rc2_cfb64,0,NULL}, 605{"RC2-CFB","rc2-cfb",NID_rc2_cfb64,0,NULL},
219{"RC2-OFB","rc2-ofb",NID_rc2_ofb64,0,NULL}, 606{"RC2-OFB","rc2-ofb",NID_rc2_ofb64,0,NULL},
220{"SHA","sha",NID_sha,5,&(lvalues[214]),0}, 607{"SHA","sha",NID_sha,5,&(lvalues[226]),0},
221{"RSA-SHA","shaWithRSAEncryption",NID_shaWithRSAEncryption,5, 608{"RSA-SHA","shaWithRSAEncryption",NID_shaWithRSAEncryption,5,
222 &(lvalues[219]),0}, 609 &(lvalues[231]),0},
223{"DES-EDE-CBC","des-ede-cbc",NID_des_ede_cbc,0,NULL}, 610{"DES-EDE-CBC","des-ede-cbc",NID_des_ede_cbc,0,NULL},
224{"DES-EDE3-CBC","des-ede3-cbc",NID_des_ede3_cbc,8,&(lvalues[224]),0}, 611{"DES-EDE3-CBC","des-ede3-cbc",NID_des_ede3_cbc,8,&(lvalues[236]),0},
225{"DES-OFB","des-ofb",NID_des_ofb64,5,&(lvalues[232]),0}, 612{"DES-OFB","des-ofb",NID_des_ofb64,5,&(lvalues[244]),0},
226{"IDEA-OFB","idea-ofb",NID_idea_ofb64,0,NULL}, 613{"IDEA-OFB","idea-ofb",NID_idea_ofb64,0,NULL},
227{"pkcs9","pkcs9",NID_pkcs9,8,&(lvalues[237]),0}, 614{"pkcs9","pkcs9",NID_pkcs9,8,&(lvalues[249]),0},
228{"Email","emailAddress",NID_pkcs9_emailAddress,9,&(lvalues[245]),0}, 615{"emailAddress","emailAddress",NID_pkcs9_emailAddress,9,
616 &(lvalues[257]),0},
229{"unstructuredName","unstructuredName",NID_pkcs9_unstructuredName,9, 617{"unstructuredName","unstructuredName",NID_pkcs9_unstructuredName,9,
230 &(lvalues[254]),0}, 618 &(lvalues[266]),0},
231{"contentType","contentType",NID_pkcs9_contentType,9,&(lvalues[263]),0}, 619{"contentType","contentType",NID_pkcs9_contentType,9,&(lvalues[275]),0},
232{"messageDigest","messageDigest",NID_pkcs9_messageDigest,9, 620{"messageDigest","messageDigest",NID_pkcs9_messageDigest,9,
233 &(lvalues[272]),0}, 621 &(lvalues[284]),0},
234{"signingTime","signingTime",NID_pkcs9_signingTime,9,&(lvalues[281]),0}, 622{"signingTime","signingTime",NID_pkcs9_signingTime,9,&(lvalues[293]),0},
235{"countersignature","countersignature",NID_pkcs9_countersignature,9, 623{"countersignature","countersignature",NID_pkcs9_countersignature,9,
236 &(lvalues[290]),0}, 624 &(lvalues[302]),0},
237{"challengePassword","challengePassword",NID_pkcs9_challengePassword, 625{"challengePassword","challengePassword",NID_pkcs9_challengePassword,
238 9,&(lvalues[299]),0}, 626 9,&(lvalues[311]),0},
239{"unstructuredAddress","unstructuredAddress", 627{"unstructuredAddress","unstructuredAddress",
240 NID_pkcs9_unstructuredAddress,9,&(lvalues[308]),0}, 628 NID_pkcs9_unstructuredAddress,9,&(lvalues[320]),0},
241{"extendedCertificateAttributes","extendedCertificateAttributes", 629{"extendedCertificateAttributes","extendedCertificateAttributes",
242 NID_pkcs9_extCertAttributes,9,&(lvalues[317]),0}, 630 NID_pkcs9_extCertAttributes,9,&(lvalues[329]),0},
243{"Netscape","Netscape Communications Corp.",NID_netscape,7, 631{"Netscape","Netscape Communications Corp.",NID_netscape,7,
244 &(lvalues[326]),0}, 632 &(lvalues[338]),0},
245{"nsCertExt","Netscape Certificate Extension", 633{"nsCertExt","Netscape Certificate Extension",
246 NID_netscape_cert_extension,8,&(lvalues[333]),0}, 634 NID_netscape_cert_extension,8,&(lvalues[345]),0},
247{"nsDataType","Netscape Data Type",NID_netscape_data_type,8, 635{"nsDataType","Netscape Data Type",NID_netscape_data_type,8,
248 &(lvalues[341]),0}, 636 &(lvalues[353]),0},
249{"DES-EDE-CFB","des-ede-cfb",NID_des_ede_cfb64,0,NULL}, 637{"DES-EDE-CFB","des-ede-cfb",NID_des_ede_cfb64,0,NULL},
250{"DES-EDE3-CFB","des-ede3-cfb",NID_des_ede3_cfb64,0,NULL}, 638{"DES-EDE3-CFB","des-ede3-cfb",NID_des_ede3_cfb64,0,NULL},
251{"DES-EDE-OFB","des-ede-ofb",NID_des_ede_ofb64,0,NULL}, 639{"DES-EDE-OFB","des-ede-ofb",NID_des_ede_ofb64,0,NULL},
252{"DES-EDE3-OFB","des-ede3-ofb",NID_des_ede3_ofb64,0,NULL}, 640{"DES-EDE3-OFB","des-ede3-ofb",NID_des_ede3_ofb64,0,NULL},
253{"SHA1","sha1",NID_sha1,5,&(lvalues[349]),0}, 641{"SHA1","sha1",NID_sha1,5,&(lvalues[361]),0},
254{"RSA-SHA1","sha1WithRSAEncryption",NID_sha1WithRSAEncryption,9, 642{"RSA-SHA1","sha1WithRSAEncryption",NID_sha1WithRSAEncryption,9,
255 &(lvalues[354]),0}, 643 &(lvalues[366]),0},
256{"DSA-SHA","dsaWithSHA",NID_dsaWithSHA,5,&(lvalues[363]),0}, 644{"DSA-SHA","dsaWithSHA",NID_dsaWithSHA,5,&(lvalues[375]),0},
257{"DSA-old","dsaEncryption-old",NID_dsa_2,5,&(lvalues[368]),0}, 645{"DSA-old","dsaEncryption-old",NID_dsa_2,5,&(lvalues[380]),0},
258{"pbeWithSHA1AndRC2-CBC","pbeWithSHA1AndRC2-CBC", 646{"PBE-SHA1-RC2-64","pbeWithSHA1AndRC2-CBC",NID_pbeWithSHA1AndRC2_CBC,
259 NID_pbeWithSHA1AndRC2_CBC,9,&(lvalues[373]),0}, 647 9,&(lvalues[385]),0},
260{"pbeWithSHA1AndRC4","pbeWithSHA1AndRC4",NID_pbeWithSHA1AndRC4,9, 648{"PBKDF2","PBKDF2",NID_id_pbkdf2,9,&(lvalues[394]),0},
261 &(lvalues[382]),0}, 649{"DSA-SHA1-old","dsaWithSHA1-old",NID_dsaWithSHA1_2,5,&(lvalues[403]),0},
262{"DSA-SHA1-old","dsaWithSHA1",NID_dsaWithSHA1_2,5,&(lvalues[391]),0},
263{"nsCertType","Netscape Cert Type",NID_netscape_cert_type,9, 650{"nsCertType","Netscape Cert Type",NID_netscape_cert_type,9,
264 &(lvalues[396]),0}, 651 &(lvalues[408]),0},
265{"nsBaseUrl","Netscape Base Url",NID_netscape_base_url,9, 652{"nsBaseUrl","Netscape Base Url",NID_netscape_base_url,9,
266 &(lvalues[405]),0}, 653 &(lvalues[417]),0},
267{"nsRevocationUrl","Netscape Revocation Url", 654{"nsRevocationUrl","Netscape Revocation Url",
268 NID_netscape_revocation_url,9,&(lvalues[414]),0}, 655 NID_netscape_revocation_url,9,&(lvalues[426]),0},
269{"nsCaRevocationUrl","Netscape CA Revocation Url", 656{"nsCaRevocationUrl","Netscape CA Revocation Url",
270 NID_netscape_ca_revocation_url,9,&(lvalues[423]),0}, 657 NID_netscape_ca_revocation_url,9,&(lvalues[435]),0},
271{"nsRenewalUrl","Netscape Renewal Url",NID_netscape_renewal_url,9, 658{"nsRenewalUrl","Netscape Renewal Url",NID_netscape_renewal_url,9,
272 &(lvalues[432]),0}, 659 &(lvalues[444]),0},
273{"nsCaPolicyUrl","Netscape CA Policy Url",NID_netscape_ca_policy_url, 660{"nsCaPolicyUrl","Netscape CA Policy Url",NID_netscape_ca_policy_url,
274 9,&(lvalues[441]),0}, 661 9,&(lvalues[453]),0},
275{"nsSslServerName","Netscape SSL Server Name", 662{"nsSslServerName","Netscape SSL Server Name",
276 NID_netscape_ssl_server_name,9,&(lvalues[450]),0}, 663 NID_netscape_ssl_server_name,9,&(lvalues[462]),0},
277{"nsComment","Netscape Comment",NID_netscape_comment,9,&(lvalues[459]),0}, 664{"nsComment","Netscape Comment",NID_netscape_comment,9,&(lvalues[471]),0},
278{"nsCertSequence","Netscape Certificate Sequence", 665{"nsCertSequence","Netscape Certificate Sequence",
279 NID_netscape_cert_sequence,9,&(lvalues[468]),0}, 666 NID_netscape_cert_sequence,9,&(lvalues[480]),0},
280{"DESX-CBC","desx-cbc",NID_desx_cbc,0,NULL}, 667{"DESX-CBC","desx-cbc",NID_desx_cbc,0,NULL},
281{"ld-ce","ld-ce",NID_ld_ce,2,&(lvalues[477]),0}, 668{"id-ce","id-ce",NID_id_ce,2,&(lvalues[489]),0},
282{"subjectKeyIdentifier","X509v3 Subject Key Identifier", 669{"subjectKeyIdentifier","X509v3 Subject Key Identifier",
283 NID_subject_key_identifier,3,&(lvalues[479]),0}, 670 NID_subject_key_identifier,3,&(lvalues[491]),0},
284{"keyUsage","X509v3 Key Usage",NID_key_usage,3,&(lvalues[482]),0}, 671{"keyUsage","X509v3 Key Usage",NID_key_usage,3,&(lvalues[494]),0},
285{"privateKeyUsagePeriod","X509v3 Private Key Usage Period", 672{"privateKeyUsagePeriod","X509v3 Private Key Usage Period",
286 NID_private_key_usage_period,3,&(lvalues[485]),0}, 673 NID_private_key_usage_period,3,&(lvalues[497]),0},
287{"subjectAltName","X509v3 Subject Alternative Name", 674{"subjectAltName","X509v3 Subject Alternative Name",
288 NID_subject_alt_name,3,&(lvalues[488]),0}, 675 NID_subject_alt_name,3,&(lvalues[500]),0},
289{"issuerAltName","X509v3 Issuer Alternative Name",NID_issuer_alt_name, 676{"issuerAltName","X509v3 Issuer Alternative Name",NID_issuer_alt_name,
290 3,&(lvalues[491]),0}, 677 3,&(lvalues[503]),0},
291{"basicConstraints","X509v3 Basic Constraints",NID_basic_constraints, 678{"basicConstraints","X509v3 Basic Constraints",NID_basic_constraints,
292 3,&(lvalues[494]),0}, 679 3,&(lvalues[506]),0},
293{"crlNumber","X509v3 CRL Number",NID_crl_number,3,&(lvalues[497]),0}, 680{"crlNumber","X509v3 CRL Number",NID_crl_number,3,&(lvalues[509]),0},
294{"certificatePolicies","X509v3 Certificate Policies", 681{"certificatePolicies","X509v3 Certificate Policies",
295 NID_certificate_policies,3,&(lvalues[500]),0}, 682 NID_certificate_policies,3,&(lvalues[512]),0},
296{"authorityKeyIdentifier","X509v3 Authority Key Identifier", 683{"authorityKeyIdentifier","X509v3 Authority Key Identifier",
297 NID_authority_key_identifier,3,&(lvalues[503]),0}, 684 NID_authority_key_identifier,3,&(lvalues[515]),0},
298{"BF-CBC","bf-cbc",NID_bf_cbc,0,NULL}, 685{"BF-CBC","bf-cbc",NID_bf_cbc,9,&(lvalues[518]),0},
299{"BF-ECB","bf-ecb",NID_bf_ecb,0,NULL}, 686{"BF-ECB","bf-ecb",NID_bf_ecb,0,NULL},
300{"BF-CFB","bf-cfb",NID_bf_cfb64,0,NULL}, 687{"BF-CFB","bf-cfb",NID_bf_cfb64,0,NULL},
301{"BF-OFB","bf-ofb",NID_bf_ofb64,0,NULL}, 688{"BF-OFB","bf-ofb",NID_bf_ofb64,0,NULL},
302{"MDC2","mdc2",NID_mdc2,4,&(lvalues[506]),0}, 689{"MDC2","mdc2",NID_mdc2,4,&(lvalues[527]),0},
303{"RSA-MDC2","mdc2withRSA",NID_mdc2WithRSA,4,&(lvalues[510]),0}, 690{"RSA-MDC2","mdc2WithRSA",NID_mdc2WithRSA,4,&(lvalues[531]),0},
304{"RC4-40","rc4-40",NID_rc4_40,0,NULL}, 691{"RC4-40","rc4-40",NID_rc4_40,0,NULL},
305{"RC2-40-CBC","rc2-40-cbc",NID_rc2_40_cbc,0,NULL}, 692{"RC2-40-CBC","rc2-40-cbc",NID_rc2_40_cbc,0,NULL},
306{"G","givenName",NID_givenName,3,&(lvalues[514]),0}, 693{"gn","givenName",NID_givenName,3,&(lvalues[535]),0},
307{"S","surname",NID_surname,3,&(lvalues[517]),0}, 694{"SN","surname",NID_surname,3,&(lvalues[538]),0},
308{"I","initials",NID_initials,3,&(lvalues[520]),0}, 695{"initials","initials",NID_initials,3,&(lvalues[541]),0},
309{"UID","uniqueIdentifier",NID_uniqueIdentifier,3,&(lvalues[523]),0}, 696{NULL,NULL,NID_undef,0,NULL},
310{"crlDistributionPoints","X509v3 CRL Distribution Points", 697{"crlDistributionPoints","X509v3 CRL Distribution Points",
311 NID_crl_distribution_points,3,&(lvalues[526]),0}, 698 NID_crl_distribution_points,3,&(lvalues[544]),0},
312{"RSA-NP-MD5","md5WithRSA",NID_md5WithRSA,5,&(lvalues[529]),0}, 699{"RSA-NP-MD5","md5WithRSA",NID_md5WithRSA,5,&(lvalues[547]),0},
313{"SN","serialNumber",NID_serialNumber,3,&(lvalues[534]),0}, 700{"serialNumber","serialNumber",NID_serialNumber,3,&(lvalues[552]),0},
314{"T","title",NID_title,3,&(lvalues[537]),0}, 701{"title","title",NID_title,3,&(lvalues[555]),0},
315{"D","description",NID_description,3,&(lvalues[540]),0}, 702{"description","description",NID_description,3,&(lvalues[558]),0},
316{"CAST5-CBC","cast5-cbc",NID_cast5_cbc,9,&(lvalues[543]),0}, 703{"CAST5-CBC","cast5-cbc",NID_cast5_cbc,9,&(lvalues[561]),0},
317{"CAST5-ECB","cast5-ecb",NID_cast5_ecb,0,NULL}, 704{"CAST5-ECB","cast5-ecb",NID_cast5_ecb,0,NULL},
318{"CAST5-CFB","cast5-cfb",NID_cast5_cfb64,0,NULL}, 705{"CAST5-CFB","cast5-cfb",NID_cast5_cfb64,0,NULL},
319{"CAST5-OFB","cast5-ofb",NID_cast5_ofb64,0,NULL}, 706{"CAST5-OFB","cast5-ofb",NID_cast5_ofb64,0,NULL},
320{"pbeWithMD5AndCast5CBC","pbeWithMD5AndCast5CBC", 707{"pbeWithMD5AndCast5CBC","pbeWithMD5AndCast5CBC",
321 NID_pbeWithMD5AndCast5_CBC,9,&(lvalues[552]),0}, 708 NID_pbeWithMD5AndCast5_CBC,9,&(lvalues[570]),0},
322{"DSA-SHA1","dsaWithSHA1",NID_dsaWithSHA1,7,&(lvalues[561]),0}, 709{"DSA-SHA1","dsaWithSHA1",NID_dsaWithSHA1,7,&(lvalues[579]),0},
323{"MD5-SHA1","md5-sha1",NID_md5_sha1,0,NULL}, 710{"MD5-SHA1","md5-sha1",NID_md5_sha1,0,NULL},
324{"RSA-SHA1-2","sha1WithRSA",NID_sha1WithRSA,5,&(lvalues[568]),0}, 711{"RSA-SHA1-2","sha1WithRSA",NID_sha1WithRSA,5,&(lvalues[586]),0},
325{"DSA","dsaEncryption",NID_dsa,7,&(lvalues[573]),0}, 712{"DSA","dsaEncryption",NID_dsa,7,&(lvalues[591]),0},
326{"RIPEMD160","ripemd160",NID_ripemd160,5,&(lvalues[580]),0}, 713{"RIPEMD160","ripemd160",NID_ripemd160,5,&(lvalues[598]),0},
327{NULL,NULL,NID_undef,0,NULL}, 714{NULL,NULL,NID_undef,0,NULL},
328{"RSA-RIPEMD160","ripemd160WithRSA",NID_ripemd160WithRSA,6, 715{"RSA-RIPEMD160","ripemd160WithRSA",NID_ripemd160WithRSA,6,
329 &(lvalues[585]),0}, 716 &(lvalues[603]),0},
330{"RC5-CBC","rc5-cbc",NID_rc5_cbc,8,&(lvalues[591]),0}, 717{"RC5-CBC","rc5-cbc",NID_rc5_cbc,8,&(lvalues[609]),0},
331{"RC5-ECB","rc5-ecb",NID_rc5_ecb,0,NULL}, 718{"RC5-ECB","rc5-ecb",NID_rc5_ecb,0,NULL},
332{"RC5-CFB","rc5-cfb",NID_rc5_cfb64,0,NULL}, 719{"RC5-CFB","rc5-cfb",NID_rc5_cfb64,0,NULL},
333{"RC5-OFB","rc5-ofb",NID_rc5_ofb64,0,NULL}, 720{"RC5-OFB","rc5-ofb",NID_rc5_ofb64,0,NULL},
721{"RLE","run length compression",NID_rle_compression,6,&(lvalues[617]),0},
722{"ZLIB","zlib compression",NID_zlib_compression,6,&(lvalues[623]),0},
723{"extendedKeyUsage","X509v3 Extended Key Usage",NID_ext_key_usage,3,
724 &(lvalues[629]),0},
725{"PKIX","PKIX",NID_id_pkix,6,&(lvalues[632]),0},
726{"id-kp","id-kp",NID_id_kp,7,&(lvalues[638]),0},
727{"serverAuth","TLS Web Server Authentication",NID_server_auth,8,
728 &(lvalues[645]),0},
729{"clientAuth","TLS Web Client Authentication",NID_client_auth,8,
730 &(lvalues[653]),0},
731{"codeSigning","Code Signing",NID_code_sign,8,&(lvalues[661]),0},
732{"emailProtection","E-mail Protection",NID_email_protect,8,
733 &(lvalues[669]),0},
734{"timeStamping","Time Stamping",NID_time_stamp,8,&(lvalues[677]),0},
735{"msCodeInd","Microsoft Individual Code Signing",NID_ms_code_ind,10,
736 &(lvalues[685]),0},
737{"msCodeCom","Microsoft Commercial Code Signing",NID_ms_code_com,10,
738 &(lvalues[695]),0},
739{"msCTLSign","Microsoft Trust List Signing",NID_ms_ctl_sign,10,
740 &(lvalues[705]),0},
741{"msSGC","Microsoft Server Gated Crypto",NID_ms_sgc,10,&(lvalues[715]),0},
742{"msEFS","Microsoft Encrypted File System",NID_ms_efs,10,
743 &(lvalues[725]),0},
744{"nsSGC","Netscape Server Gated Crypto",NID_ns_sgc,9,&(lvalues[735]),0},
745{"deltaCRL","X509v3 Delta CRL Indicator",NID_delta_crl,3,
746 &(lvalues[744]),0},
747{"CRLReason","X509v3 CRL Reason Code",NID_crl_reason,3,&(lvalues[747]),0},
748{"invalidityDate","Invalidity Date",NID_invalidity_date,3,
749 &(lvalues[750]),0},
750{"SXNetID","Strong Extranet ID",NID_sxnet,5,&(lvalues[753]),0},
751{"PBE-SHA1-RC4-128","pbeWithSHA1And128BitRC4",
752 NID_pbe_WithSHA1And128BitRC4,10,&(lvalues[758]),0},
753{"PBE-SHA1-RC4-40","pbeWithSHA1And40BitRC4",
754 NID_pbe_WithSHA1And40BitRC4,10,&(lvalues[768]),0},
755{"PBE-SHA1-3DES","pbeWithSHA1And3-KeyTripleDES-CBC",
756 NID_pbe_WithSHA1And3_Key_TripleDES_CBC,10,&(lvalues[778]),0},
757{"PBE-SHA1-2DES","pbeWithSHA1And2-KeyTripleDES-CBC",
758 NID_pbe_WithSHA1And2_Key_TripleDES_CBC,10,&(lvalues[788]),0},
759{"PBE-SHA1-RC2-128","pbeWithSHA1And128BitRC2-CBC",
760 NID_pbe_WithSHA1And128BitRC2_CBC,10,&(lvalues[798]),0},
761{"PBE-SHA1-RC2-40","pbeWithSHA1And40BitRC2-CBC",
762 NID_pbe_WithSHA1And40BitRC2_CBC,10,&(lvalues[808]),0},
763{"keyBag","keyBag",NID_keyBag,11,&(lvalues[818]),0},
764{"pkcs8ShroudedKeyBag","pkcs8ShroudedKeyBag",NID_pkcs8ShroudedKeyBag,
765 11,&(lvalues[829]),0},
766{"certBag","certBag",NID_certBag,11,&(lvalues[840]),0},
767{"crlBag","crlBag",NID_crlBag,11,&(lvalues[851]),0},
768{"secretBag","secretBag",NID_secretBag,11,&(lvalues[862]),0},
769{"safeContentsBag","safeContentsBag",NID_safeContentsBag,11,
770 &(lvalues[873]),0},
771{"friendlyName","friendlyName",NID_friendlyName,9,&(lvalues[884]),0},
772{"localKeyID","localKeyID",NID_localKeyID,9,&(lvalues[893]),0},
773{"x509Certificate","x509Certificate",NID_x509Certificate,10,
774 &(lvalues[902]),0},
775{"sdsiCertificate","sdsiCertificate",NID_sdsiCertificate,10,
776 &(lvalues[912]),0},
777{"x509Crl","x509Crl",NID_x509Crl,10,&(lvalues[922]),0},
778{"PBES2","PBES2",NID_pbes2,9,&(lvalues[932]),0},
779{"PBMAC1","PBMAC1",NID_pbmac1,9,&(lvalues[941]),0},
780{"hmacWithSHA1","hmacWithSHA1",NID_hmacWithSHA1,8,&(lvalues[950]),0},
781{"id-qt-cps","Policy Qualifier CPS",NID_id_qt_cps,8,&(lvalues[958]),0},
782{"id-qt-unotice","Policy Qualifier User Notice",NID_id_qt_unotice,8,
783 &(lvalues[966]),0},
784{"RC2-64-CBC","rc2-64-cbc",NID_rc2_64_cbc,0,NULL},
785{"SMIME-CAPS","S/MIME Capabilities",NID_SMIMECapabilities,9,
786 &(lvalues[974]),0},
787{"PBE-MD2-RC2-64","pbeWithMD2AndRC2-CBC",NID_pbeWithMD2AndRC2_CBC,9,
788 &(lvalues[983]),0},
789{"PBE-MD5-RC2-64","pbeWithMD5AndRC2-CBC",NID_pbeWithMD5AndRC2_CBC,9,
790 &(lvalues[992]),0},
791{"PBE-SHA1-DES","pbeWithSHA1AndDES-CBC",NID_pbeWithSHA1AndDES_CBC,9,
792 &(lvalues[1001]),0},
793{"msExtReq","Microsoft Extension Request",NID_ms_ext_req,10,
794 &(lvalues[1010]),0},
795{"extReq","Extension Request",NID_ext_req,9,&(lvalues[1020]),0},
796{"name","name",NID_name,3,&(lvalues[1029]),0},
797{"dnQualifier","dnQualifier",NID_dnQualifier,3,&(lvalues[1032]),0},
798{"id-pe","id-pe",NID_id_pe,7,&(lvalues[1035]),0},
799{"id-ad","id-ad",NID_id_ad,7,&(lvalues[1042]),0},
800{"authorityInfoAccess","Authority Information Access",NID_info_access,
801 8,&(lvalues[1049]),0},
802{"OCSP","OCSP",NID_ad_OCSP,8,&(lvalues[1057]),0},
803{"caIssuers","CA Issuers",NID_ad_ca_issuers,8,&(lvalues[1065]),0},
804{"OCSPSigning","OCSP Signing",NID_OCSP_sign,8,&(lvalues[1073]),0},
805{"ISO","iso",NID_iso,1,&(lvalues[1081]),0},
806{"member-body","ISO Member Body",NID_member_body,1,&(lvalues[1082]),0},
807{"ISO-US","ISO US Member Body",NID_ISO_US,3,&(lvalues[1083]),0},
808{"X9-57","X9.57",NID_X9_57,5,&(lvalues[1086]),0},
809{"X9cm","X9.57 CM ?",NID_X9cm,6,&(lvalues[1091]),0},
810{"pkcs1","pkcs1",NID_pkcs1,8,&(lvalues[1097]),0},
811{"pkcs5","pkcs5",NID_pkcs5,8,&(lvalues[1105]),0},
812{"SMIME","S/MIME",NID_SMIME,9,&(lvalues[1113]),0},
813{"id-smime-mod","id-smime-mod",NID_id_smime_mod,10,&(lvalues[1122]),0},
814{"id-smime-ct","id-smime-ct",NID_id_smime_ct,10,&(lvalues[1132]),0},
815{"id-smime-aa","id-smime-aa",NID_id_smime_aa,10,&(lvalues[1142]),0},
816{"id-smime-alg","id-smime-alg",NID_id_smime_alg,10,&(lvalues[1152]),0},
817{"id-smime-cd","id-smime-cd",NID_id_smime_cd,10,&(lvalues[1162]),0},
818{"id-smime-spq","id-smime-spq",NID_id_smime_spq,10,&(lvalues[1172]),0},
819{"id-smime-cti","id-smime-cti",NID_id_smime_cti,10,&(lvalues[1182]),0},
820{"id-smime-mod-cms","id-smime-mod-cms",NID_id_smime_mod_cms,11,
821 &(lvalues[1192]),0},
822{"id-smime-mod-ess","id-smime-mod-ess",NID_id_smime_mod_ess,11,
823 &(lvalues[1203]),0},
824{"id-smime-mod-oid","id-smime-mod-oid",NID_id_smime_mod_oid,11,
825 &(lvalues[1214]),0},
826{"id-smime-mod-msg-v3","id-smime-mod-msg-v3",NID_id_smime_mod_msg_v3,
827 11,&(lvalues[1225]),0},
828{"id-smime-mod-ets-eSignature-88","id-smime-mod-ets-eSignature-88",
829 NID_id_smime_mod_ets_eSignature_88,11,&(lvalues[1236]),0},
830{"id-smime-mod-ets-eSignature-97","id-smime-mod-ets-eSignature-97",
831 NID_id_smime_mod_ets_eSignature_97,11,&(lvalues[1247]),0},
832{"id-smime-mod-ets-eSigPolicy-88","id-smime-mod-ets-eSigPolicy-88",
833 NID_id_smime_mod_ets_eSigPolicy_88,11,&(lvalues[1258]),0},
834{"id-smime-mod-ets-eSigPolicy-97","id-smime-mod-ets-eSigPolicy-97",
835 NID_id_smime_mod_ets_eSigPolicy_97,11,&(lvalues[1269]),0},
836{"id-smime-ct-receipt","id-smime-ct-receipt",NID_id_smime_ct_receipt,
837 11,&(lvalues[1280]),0},
838{"id-smime-ct-authData","id-smime-ct-authData",
839 NID_id_smime_ct_authData,11,&(lvalues[1291]),0},
840{"id-smime-ct-publishCert","id-smime-ct-publishCert",
841 NID_id_smime_ct_publishCert,11,&(lvalues[1302]),0},
842{"id-smime-ct-TSTInfo","id-smime-ct-TSTInfo",NID_id_smime_ct_TSTInfo,
843 11,&(lvalues[1313]),0},
844{"id-smime-ct-TDTInfo","id-smime-ct-TDTInfo",NID_id_smime_ct_TDTInfo,
845 11,&(lvalues[1324]),0},
846{"id-smime-ct-contentInfo","id-smime-ct-contentInfo",
847 NID_id_smime_ct_contentInfo,11,&(lvalues[1335]),0},
848{"id-smime-ct-DVCSRequestData","id-smime-ct-DVCSRequestData",
849 NID_id_smime_ct_DVCSRequestData,11,&(lvalues[1346]),0},
850{"id-smime-ct-DVCSResponseData","id-smime-ct-DVCSResponseData",
851 NID_id_smime_ct_DVCSResponseData,11,&(lvalues[1357]),0},
852{"id-smime-aa-receiptRequest","id-smime-aa-receiptRequest",
853 NID_id_smime_aa_receiptRequest,11,&(lvalues[1368]),0},
854{"id-smime-aa-securityLabel","id-smime-aa-securityLabel",
855 NID_id_smime_aa_securityLabel,11,&(lvalues[1379]),0},
856{"id-smime-aa-mlExpandHistory","id-smime-aa-mlExpandHistory",
857 NID_id_smime_aa_mlExpandHistory,11,&(lvalues[1390]),0},
858{"id-smime-aa-contentHint","id-smime-aa-contentHint",
859 NID_id_smime_aa_contentHint,11,&(lvalues[1401]),0},
860{"id-smime-aa-msgSigDigest","id-smime-aa-msgSigDigest",
861 NID_id_smime_aa_msgSigDigest,11,&(lvalues[1412]),0},
862{"id-smime-aa-encapContentType","id-smime-aa-encapContentType",
863 NID_id_smime_aa_encapContentType,11,&(lvalues[1423]),0},
864{"id-smime-aa-contentIdentifier","id-smime-aa-contentIdentifier",
865 NID_id_smime_aa_contentIdentifier,11,&(lvalues[1434]),0},
866{"id-smime-aa-macValue","id-smime-aa-macValue",
867 NID_id_smime_aa_macValue,11,&(lvalues[1445]),0},
868{"id-smime-aa-equivalentLabels","id-smime-aa-equivalentLabels",
869 NID_id_smime_aa_equivalentLabels,11,&(lvalues[1456]),0},
870{"id-smime-aa-contentReference","id-smime-aa-contentReference",
871 NID_id_smime_aa_contentReference,11,&(lvalues[1467]),0},
872{"id-smime-aa-encrypKeyPref","id-smime-aa-encrypKeyPref",
873 NID_id_smime_aa_encrypKeyPref,11,&(lvalues[1478]),0},
874{"id-smime-aa-signingCertificate","id-smime-aa-signingCertificate",
875 NID_id_smime_aa_signingCertificate,11,&(lvalues[1489]),0},
876{"id-smime-aa-smimeEncryptCerts","id-smime-aa-smimeEncryptCerts",
877 NID_id_smime_aa_smimeEncryptCerts,11,&(lvalues[1500]),0},
878{"id-smime-aa-timeStampToken","id-smime-aa-timeStampToken",
879 NID_id_smime_aa_timeStampToken,11,&(lvalues[1511]),0},
880{"id-smime-aa-ets-sigPolicyId","id-smime-aa-ets-sigPolicyId",
881 NID_id_smime_aa_ets_sigPolicyId,11,&(lvalues[1522]),0},
882{"id-smime-aa-ets-commitmentType","id-smime-aa-ets-commitmentType",
883 NID_id_smime_aa_ets_commitmentType,11,&(lvalues[1533]),0},
884{"id-smime-aa-ets-signerLocation","id-smime-aa-ets-signerLocation",
885 NID_id_smime_aa_ets_signerLocation,11,&(lvalues[1544]),0},
886{"id-smime-aa-ets-signerAttr","id-smime-aa-ets-signerAttr",
887 NID_id_smime_aa_ets_signerAttr,11,&(lvalues[1555]),0},
888{"id-smime-aa-ets-otherSigCert","id-smime-aa-ets-otherSigCert",
889 NID_id_smime_aa_ets_otherSigCert,11,&(lvalues[1566]),0},
890{"id-smime-aa-ets-contentTimestamp",
891 "id-smime-aa-ets-contentTimestamp",
892 NID_id_smime_aa_ets_contentTimestamp,11,&(lvalues[1577]),0},
893{"id-smime-aa-ets-CertificateRefs","id-smime-aa-ets-CertificateRefs",
894 NID_id_smime_aa_ets_CertificateRefs,11,&(lvalues[1588]),0},
895{"id-smime-aa-ets-RevocationRefs","id-smime-aa-ets-RevocationRefs",
896 NID_id_smime_aa_ets_RevocationRefs,11,&(lvalues[1599]),0},
897{"id-smime-aa-ets-certValues","id-smime-aa-ets-certValues",
898 NID_id_smime_aa_ets_certValues,11,&(lvalues[1610]),0},
899{"id-smime-aa-ets-revocationValues",
900 "id-smime-aa-ets-revocationValues",
901 NID_id_smime_aa_ets_revocationValues,11,&(lvalues[1621]),0},
902{"id-smime-aa-ets-escTimeStamp","id-smime-aa-ets-escTimeStamp",
903 NID_id_smime_aa_ets_escTimeStamp,11,&(lvalues[1632]),0},
904{"id-smime-aa-ets-certCRLTimestamp",
905 "id-smime-aa-ets-certCRLTimestamp",
906 NID_id_smime_aa_ets_certCRLTimestamp,11,&(lvalues[1643]),0},
907{"id-smime-aa-ets-archiveTimeStamp",
908 "id-smime-aa-ets-archiveTimeStamp",
909 NID_id_smime_aa_ets_archiveTimeStamp,11,&(lvalues[1654]),0},
910{"id-smime-aa-signatureType","id-smime-aa-signatureType",
911 NID_id_smime_aa_signatureType,11,&(lvalues[1665]),0},
912{"id-smime-aa-dvcs-dvc","id-smime-aa-dvcs-dvc",
913 NID_id_smime_aa_dvcs_dvc,11,&(lvalues[1676]),0},
914{"id-smime-alg-ESDHwith3DES","id-smime-alg-ESDHwith3DES",
915 NID_id_smime_alg_ESDHwith3DES,11,&(lvalues[1687]),0},
916{"id-smime-alg-ESDHwithRC2","id-smime-alg-ESDHwithRC2",
917 NID_id_smime_alg_ESDHwithRC2,11,&(lvalues[1698]),0},
918{"id-smime-alg-3DESwrap","id-smime-alg-3DESwrap",
919 NID_id_smime_alg_3DESwrap,11,&(lvalues[1709]),0},
920{"id-smime-alg-RC2wrap","id-smime-alg-RC2wrap",
921 NID_id_smime_alg_RC2wrap,11,&(lvalues[1720]),0},
922{"id-smime-alg-ESDH","id-smime-alg-ESDH",NID_id_smime_alg_ESDH,11,
923 &(lvalues[1731]),0},
924{"id-smime-alg-CMS3DESwrap","id-smime-alg-CMS3DESwrap",
925 NID_id_smime_alg_CMS3DESwrap,11,&(lvalues[1742]),0},
926{"id-smime-alg-CMSRC2wrap","id-smime-alg-CMSRC2wrap",
927 NID_id_smime_alg_CMSRC2wrap,11,&(lvalues[1753]),0},
928{"id-smime-cd-ldap","id-smime-cd-ldap",NID_id_smime_cd_ldap,11,
929 &(lvalues[1764]),0},
930{"id-smime-spq-ets-sqt-uri","id-smime-spq-ets-sqt-uri",
931 NID_id_smime_spq_ets_sqt_uri,11,&(lvalues[1775]),0},
932{"id-smime-spq-ets-sqt-unotice","id-smime-spq-ets-sqt-unotice",
933 NID_id_smime_spq_ets_sqt_unotice,11,&(lvalues[1786]),0},
934{"id-smime-cti-ets-proofOfOrigin","id-smime-cti-ets-proofOfOrigin",
935 NID_id_smime_cti_ets_proofOfOrigin,11,&(lvalues[1797]),0},
936{"id-smime-cti-ets-proofOfReceipt","id-smime-cti-ets-proofOfReceipt",
937 NID_id_smime_cti_ets_proofOfReceipt,11,&(lvalues[1808]),0},
938{"id-smime-cti-ets-proofOfDelivery",
939 "id-smime-cti-ets-proofOfDelivery",
940 NID_id_smime_cti_ets_proofOfDelivery,11,&(lvalues[1819]),0},
941{"id-smime-cti-ets-proofOfSender","id-smime-cti-ets-proofOfSender",
942 NID_id_smime_cti_ets_proofOfSender,11,&(lvalues[1830]),0},
943{"id-smime-cti-ets-proofOfApproval",
944 "id-smime-cti-ets-proofOfApproval",
945 NID_id_smime_cti_ets_proofOfApproval,11,&(lvalues[1841]),0},
946{"id-smime-cti-ets-proofOfCreation",
947 "id-smime-cti-ets-proofOfCreation",
948 NID_id_smime_cti_ets_proofOfCreation,11,&(lvalues[1852]),0},
949{"MD4","md4",NID_md4,8,&(lvalues[1863]),0},
950{"id-pkix-mod","id-pkix-mod",NID_id_pkix_mod,7,&(lvalues[1871]),0},
951{"id-qt","id-qt",NID_id_qt,7,&(lvalues[1878]),0},
952{"id-it","id-it",NID_id_it,7,&(lvalues[1885]),0},
953{"id-pkip","id-pkip",NID_id_pkip,7,&(lvalues[1892]),0},
954{"id-alg","id-alg",NID_id_alg,7,&(lvalues[1899]),0},
955{"id-cmc","id-cmc",NID_id_cmc,7,&(lvalues[1906]),0},
956{"id-on","id-on",NID_id_on,7,&(lvalues[1913]),0},
957{"id-pda","id-pda",NID_id_pda,7,&(lvalues[1920]),0},
958{"id-aca","id-aca",NID_id_aca,7,&(lvalues[1927]),0},
959{"id-qcs","id-qcs",NID_id_qcs,7,&(lvalues[1934]),0},
960{"id-cct","id-cct",NID_id_cct,7,&(lvalues[1941]),0},
961{"id-pkix1-explicit-88","id-pkix1-explicit-88",
962 NID_id_pkix1_explicit_88,8,&(lvalues[1948]),0},
963{"id-pkix1-implicit-88","id-pkix1-implicit-88",
964 NID_id_pkix1_implicit_88,8,&(lvalues[1956]),0},
965{"id-pkix1-explicit-93","id-pkix1-explicit-93",
966 NID_id_pkix1_explicit_93,8,&(lvalues[1964]),0},
967{"id-pkix1-implicit-93","id-pkix1-implicit-93",
968 NID_id_pkix1_implicit_93,8,&(lvalues[1972]),0},
969{"id-mod-crmf","id-mod-crmf",NID_id_mod_crmf,8,&(lvalues[1980]),0},
970{"id-mod-cmc","id-mod-cmc",NID_id_mod_cmc,8,&(lvalues[1988]),0},
971{"id-mod-kea-profile-88","id-mod-kea-profile-88",
972 NID_id_mod_kea_profile_88,8,&(lvalues[1996]),0},
973{"id-mod-kea-profile-93","id-mod-kea-profile-93",
974 NID_id_mod_kea_profile_93,8,&(lvalues[2004]),0},
975{"id-mod-cmp","id-mod-cmp",NID_id_mod_cmp,8,&(lvalues[2012]),0},
976{"id-mod-qualified-cert-88","id-mod-qualified-cert-88",
977 NID_id_mod_qualified_cert_88,8,&(lvalues[2020]),0},
978{"id-mod-qualified-cert-93","id-mod-qualified-cert-93",
979 NID_id_mod_qualified_cert_93,8,&(lvalues[2028]),0},
980{"id-mod-attribute-cert","id-mod-attribute-cert",
981 NID_id_mod_attribute_cert,8,&(lvalues[2036]),0},
982{"id-mod-timestamp-protocol","id-mod-timestamp-protocol",
983 NID_id_mod_timestamp_protocol,8,&(lvalues[2044]),0},
984{"id-mod-ocsp","id-mod-ocsp",NID_id_mod_ocsp,8,&(lvalues[2052]),0},
985{"id-mod-dvcs","id-mod-dvcs",NID_id_mod_dvcs,8,&(lvalues[2060]),0},
986{"id-mod-cmp2000","id-mod-cmp2000",NID_id_mod_cmp2000,8,
987 &(lvalues[2068]),0},
988{"biometricInfo","Biometric Info",NID_biometricInfo,8,&(lvalues[2076]),0},
989{"qcStatements","qcStatements",NID_qcStatements,8,&(lvalues[2084]),0},
990{"ac-auditEntity","ac-auditEntity",NID_ac_auditEntity,8,
991 &(lvalues[2092]),0},
992{"ac-targeting","ac-targeting",NID_ac_targeting,8,&(lvalues[2100]),0},
993{"aaControls","aaControls",NID_aaControls,8,&(lvalues[2108]),0},
994{"sbqp-ipAddrBlock","sbqp-ipAddrBlock",NID_sbqp_ipAddrBlock,8,
995 &(lvalues[2116]),0},
996{"sbqp-autonomousSysNum","sbqp-autonomousSysNum",
997 NID_sbqp_autonomousSysNum,8,&(lvalues[2124]),0},
998{"sbqp-routerIdentifier","sbqp-routerIdentifier",
999 NID_sbqp_routerIdentifier,8,&(lvalues[2132]),0},
1000{"textNotice","textNotice",NID_textNotice,8,&(lvalues[2140]),0},
1001{"ipsecEndSystem","IPSec End System",NID_ipsecEndSystem,8,
1002 &(lvalues[2148]),0},
1003{"ipsecTunnel","IPSec Tunnel",NID_ipsecTunnel,8,&(lvalues[2156]),0},
1004{"ipsecUser","IPSec User",NID_ipsecUser,8,&(lvalues[2164]),0},
1005{"DVCS","dvcs",NID_dvcs,8,&(lvalues[2172]),0},
1006{"id-it-caProtEncCert","id-it-caProtEncCert",NID_id_it_caProtEncCert,
1007 8,&(lvalues[2180]),0},
1008{"id-it-signKeyPairTypes","id-it-signKeyPairTypes",
1009 NID_id_it_signKeyPairTypes,8,&(lvalues[2188]),0},
1010{"id-it-encKeyPairTypes","id-it-encKeyPairTypes",
1011 NID_id_it_encKeyPairTypes,8,&(lvalues[2196]),0},
1012{"id-it-preferredSymmAlg","id-it-preferredSymmAlg",
1013 NID_id_it_preferredSymmAlg,8,&(lvalues[2204]),0},
1014{"id-it-caKeyUpdateInfo","id-it-caKeyUpdateInfo",
1015 NID_id_it_caKeyUpdateInfo,8,&(lvalues[2212]),0},
1016{"id-it-currentCRL","id-it-currentCRL",NID_id_it_currentCRL,8,
1017 &(lvalues[2220]),0},
1018{"id-it-unsupportedOIDs","id-it-unsupportedOIDs",
1019 NID_id_it_unsupportedOIDs,8,&(lvalues[2228]),0},
1020{"id-it-subscriptionRequest","id-it-subscriptionRequest",
1021 NID_id_it_subscriptionRequest,8,&(lvalues[2236]),0},
1022{"id-it-subscriptionResponse","id-it-subscriptionResponse",
1023 NID_id_it_subscriptionResponse,8,&(lvalues[2244]),0},
1024{"id-it-keyPairParamReq","id-it-keyPairParamReq",
1025 NID_id_it_keyPairParamReq,8,&(lvalues[2252]),0},
1026{"id-it-keyPairParamRep","id-it-keyPairParamRep",
1027 NID_id_it_keyPairParamRep,8,&(lvalues[2260]),0},
1028{"id-it-revPassphrase","id-it-revPassphrase",NID_id_it_revPassphrase,
1029 8,&(lvalues[2268]),0},
1030{"id-it-implicitConfirm","id-it-implicitConfirm",
1031 NID_id_it_implicitConfirm,8,&(lvalues[2276]),0},
1032{"id-it-confirmWaitTime","id-it-confirmWaitTime",
1033 NID_id_it_confirmWaitTime,8,&(lvalues[2284]),0},
1034{"id-it-origPKIMessage","id-it-origPKIMessage",
1035 NID_id_it_origPKIMessage,8,&(lvalues[2292]),0},
1036{"id-regCtrl","id-regCtrl",NID_id_regCtrl,8,&(lvalues[2300]),0},
1037{"id-regInfo","id-regInfo",NID_id_regInfo,8,&(lvalues[2308]),0},
1038{"id-regCtrl-regToken","id-regCtrl-regToken",NID_id_regCtrl_regToken,
1039 9,&(lvalues[2316]),0},
1040{"id-regCtrl-authenticator","id-regCtrl-authenticator",
1041 NID_id_regCtrl_authenticator,9,&(lvalues[2325]),0},
1042{"id-regCtrl-pkiPublicationInfo","id-regCtrl-pkiPublicationInfo",
1043 NID_id_regCtrl_pkiPublicationInfo,9,&(lvalues[2334]),0},
1044{"id-regCtrl-pkiArchiveOptions","id-regCtrl-pkiArchiveOptions",
1045 NID_id_regCtrl_pkiArchiveOptions,9,&(lvalues[2343]),0},
1046{"id-regCtrl-oldCertID","id-regCtrl-oldCertID",
1047 NID_id_regCtrl_oldCertID,9,&(lvalues[2352]),0},
1048{"id-regCtrl-protocolEncrKey","id-regCtrl-protocolEncrKey",
1049 NID_id_regCtrl_protocolEncrKey,9,&(lvalues[2361]),0},
1050{"id-regInfo-utf8Pairs","id-regInfo-utf8Pairs",
1051 NID_id_regInfo_utf8Pairs,9,&(lvalues[2370]),0},
1052{"id-regInfo-certReq","id-regInfo-certReq",NID_id_regInfo_certReq,9,
1053 &(lvalues[2379]),0},
1054{"id-alg-des40","id-alg-des40",NID_id_alg_des40,8,&(lvalues[2388]),0},
1055{"id-alg-noSignature","id-alg-noSignature",NID_id_alg_noSignature,8,
1056 &(lvalues[2396]),0},
1057{"id-alg-dh-sig-hmac-sha1","id-alg-dh-sig-hmac-sha1",
1058 NID_id_alg_dh_sig_hmac_sha1,8,&(lvalues[2404]),0},
1059{"id-alg-dh-pop","id-alg-dh-pop",NID_id_alg_dh_pop,8,&(lvalues[2412]),0},
1060{"id-cmc-statusInfo","id-cmc-statusInfo",NID_id_cmc_statusInfo,8,
1061 &(lvalues[2420]),0},
1062{"id-cmc-identification","id-cmc-identification",
1063 NID_id_cmc_identification,8,&(lvalues[2428]),0},
1064{"id-cmc-identityProof","id-cmc-identityProof",
1065 NID_id_cmc_identityProof,8,&(lvalues[2436]),0},
1066{"id-cmc-dataReturn","id-cmc-dataReturn",NID_id_cmc_dataReturn,8,
1067 &(lvalues[2444]),0},
1068{"id-cmc-transactionId","id-cmc-transactionId",
1069 NID_id_cmc_transactionId,8,&(lvalues[2452]),0},
1070{"id-cmc-senderNonce","id-cmc-senderNonce",NID_id_cmc_senderNonce,8,
1071 &(lvalues[2460]),0},
1072{"id-cmc-recipientNonce","id-cmc-recipientNonce",
1073 NID_id_cmc_recipientNonce,8,&(lvalues[2468]),0},
1074{"id-cmc-addExtensions","id-cmc-addExtensions",
1075 NID_id_cmc_addExtensions,8,&(lvalues[2476]),0},
1076{"id-cmc-encryptedPOP","id-cmc-encryptedPOP",NID_id_cmc_encryptedPOP,
1077 8,&(lvalues[2484]),0},
1078{"id-cmc-decryptedPOP","id-cmc-decryptedPOP",NID_id_cmc_decryptedPOP,
1079 8,&(lvalues[2492]),0},
1080{"id-cmc-lraPOPWitness","id-cmc-lraPOPWitness",
1081 NID_id_cmc_lraPOPWitness,8,&(lvalues[2500]),0},
1082{"id-cmc-getCert","id-cmc-getCert",NID_id_cmc_getCert,8,
1083 &(lvalues[2508]),0},
1084{"id-cmc-getCRL","id-cmc-getCRL",NID_id_cmc_getCRL,8,&(lvalues[2516]),0},
1085{"id-cmc-revokeRequest","id-cmc-revokeRequest",
1086 NID_id_cmc_revokeRequest,8,&(lvalues[2524]),0},
1087{"id-cmc-regInfo","id-cmc-regInfo",NID_id_cmc_regInfo,8,
1088 &(lvalues[2532]),0},
1089{"id-cmc-responseInfo","id-cmc-responseInfo",NID_id_cmc_responseInfo,
1090 8,&(lvalues[2540]),0},
1091{"id-cmc-queryPending","id-cmc-queryPending",NID_id_cmc_queryPending,
1092 8,&(lvalues[2548]),0},
1093{"id-cmc-popLinkRandom","id-cmc-popLinkRandom",
1094 NID_id_cmc_popLinkRandom,8,&(lvalues[2556]),0},
1095{"id-cmc-popLinkWitness","id-cmc-popLinkWitness",
1096 NID_id_cmc_popLinkWitness,8,&(lvalues[2564]),0},
1097{"id-cmc-confirmCertAcceptance","id-cmc-confirmCertAcceptance",
1098 NID_id_cmc_confirmCertAcceptance,8,&(lvalues[2572]),0},
1099{"id-on-personalData","id-on-personalData",NID_id_on_personalData,8,
1100 &(lvalues[2580]),0},
1101{"id-pda-dateOfBirth","id-pda-dateOfBirth",NID_id_pda_dateOfBirth,8,
1102 &(lvalues[2588]),0},
1103{"id-pda-placeOfBirth","id-pda-placeOfBirth",NID_id_pda_placeOfBirth,
1104 8,&(lvalues[2596]),0},
1105{NULL,NULL,NID_undef,0,NULL},
1106{"id-pda-gender","id-pda-gender",NID_id_pda_gender,8,&(lvalues[2604]),0},
1107{"id-pda-countryOfCitizenship","id-pda-countryOfCitizenship",
1108 NID_id_pda_countryOfCitizenship,8,&(lvalues[2612]),0},
1109{"id-pda-countryOfResidence","id-pda-countryOfResidence",
1110 NID_id_pda_countryOfResidence,8,&(lvalues[2620]),0},
1111{"id-aca-authenticationInfo","id-aca-authenticationInfo",
1112 NID_id_aca_authenticationInfo,8,&(lvalues[2628]),0},
1113{"id-aca-accessIdentity","id-aca-accessIdentity",
1114 NID_id_aca_accessIdentity,8,&(lvalues[2636]),0},
1115{"id-aca-chargingIdentity","id-aca-chargingIdentity",
1116 NID_id_aca_chargingIdentity,8,&(lvalues[2644]),0},
1117{"id-aca-group","id-aca-group",NID_id_aca_group,8,&(lvalues[2652]),0},
1118{"id-aca-role","id-aca-role",NID_id_aca_role,8,&(lvalues[2660]),0},
1119{"id-qcs-pkixQCSyntax-v1","id-qcs-pkixQCSyntax-v1",
1120 NID_id_qcs_pkixQCSyntax_v1,8,&(lvalues[2668]),0},
1121{"id-cct-crs","id-cct-crs",NID_id_cct_crs,8,&(lvalues[2676]),0},
1122{"id-cct-PKIData","id-cct-PKIData",NID_id_cct_PKIData,8,
1123 &(lvalues[2684]),0},
1124{"id-cct-PKIResponse","id-cct-PKIResponse",NID_id_cct_PKIResponse,8,
1125 &(lvalues[2692]),0},
1126{"ad_timestamping","AD Time Stamping",NID_ad_timeStamping,8,
1127 &(lvalues[2700]),0},
1128{"AD_DVCS","ad dvcs",NID_ad_dvcs,8,&(lvalues[2708]),0},
1129{"basicOCSPResponse","Basic OCSP Response",NID_id_pkix_OCSP_basic,9,
1130 &(lvalues[2716]),0},
1131{"Nonce","OCSP Nonce",NID_id_pkix_OCSP_Nonce,9,&(lvalues[2725]),0},
1132{"CrlID","OCSP CRL ID",NID_id_pkix_OCSP_CrlID,9,&(lvalues[2734]),0},
1133{"acceptableResponses","Acceptable OCSP Responses",
1134 NID_id_pkix_OCSP_acceptableResponses,9,&(lvalues[2743]),0},
1135{"noCheck","OCSP No Check",NID_id_pkix_OCSP_noCheck,9,&(lvalues[2752]),0},
1136{"archiveCutoff","OCSP Archive Cutoff",NID_id_pkix_OCSP_archiveCutoff,
1137 9,&(lvalues[2761]),0},
1138{"serviceLocator","OCSP Service Locator",
1139 NID_id_pkix_OCSP_serviceLocator,9,&(lvalues[2770]),0},
1140{"extendedStatus","Extended OCSP Status",
1141 NID_id_pkix_OCSP_extendedStatus,9,&(lvalues[2779]),0},
1142{"valid","valid",NID_id_pkix_OCSP_valid,9,&(lvalues[2788]),0},
1143{"path","path",NID_id_pkix_OCSP_path,9,&(lvalues[2797]),0},
1144{"trustRoot","Trust Root",NID_id_pkix_OCSP_trustRoot,9,
1145 &(lvalues[2806]),0},
1146{"algorithm","algorithm",NID_algorithm,4,&(lvalues[2815]),0},
1147{"rsaSignature","rsaSignature",NID_rsaSignature,5,&(lvalues[2819]),0},
1148{"X500algorithms","directory services - algorithms",
1149 NID_X500algorithms,2,&(lvalues[2824]),0},
1150{"ORG","org",NID_org,1,&(lvalues[2826]),0},
1151{"DOD","dod",NID_dod,2,&(lvalues[2827]),0},
1152{"IANA","iana",NID_iana,3,&(lvalues[2829]),0},
1153{"directory","Directory",NID_Directory,4,&(lvalues[2832]),0},
1154{"mgmt","Management",NID_Management,4,&(lvalues[2836]),0},
1155{"experimental","Experimental",NID_Experimental,4,&(lvalues[2840]),0},
1156{"private","Private",NID_Private,4,&(lvalues[2844]),0},
1157{"security","Security",NID_Security,4,&(lvalues[2848]),0},
1158{"snmpv2","SNMPv2",NID_SNMPv2,4,&(lvalues[2852]),0},
1159{"Mail","Mail",NID_Mail,4,&(lvalues[2856]),0},
1160{"enterprises","Enterprises",NID_Enterprises,5,&(lvalues[2860]),0},
1161{"dcobject","dcObject",NID_dcObject,9,&(lvalues[2865]),0},
1162{"DC","domainComponent",NID_domainComponent,10,&(lvalues[2874]),0},
1163{"domain","Domain",NID_Domain,10,&(lvalues[2884]),0},
1164{"JOINT-ISO-CCITT","joint-iso-ccitt",NID_joint_iso_ccitt,1,
1165 &(lvalues[2894]),0},
1166{"selected-attribute-types","Selected Attribute Types",
1167 NID_selected_attribute_types,3,&(lvalues[2895]),0},
1168{"clearance","clearance",NID_clearance,4,&(lvalues[2898]),0},
1169{"RSA-MD4","md4WithRSAEncryption",NID_md4WithRSAEncryption,9,
1170 &(lvalues[2902]),0},
1171{"ac-proxying","ac-proxying",NID_ac_proxying,8,&(lvalues[2911]),0},
1172{"subjectInfoAccess","Subject Information Access",NID_sinfo_access,8,
1173 &(lvalues[2919]),0},
1174{"id-aca-encAttrs","id-aca-encAttrs",NID_id_aca_encAttrs,8,
1175 &(lvalues[2927]),0},
1176{"role","role",NID_role,3,&(lvalues[2935]),0},
1177{"policyConstraints","X509v3 Policy Constraints",
1178 NID_policy_constraints,3,&(lvalues[2938]),0},
1179{"targetInformation","X509v3 AC Targeting",NID_target_information,3,
1180 &(lvalues[2941]),0},
1181{"noRevAvail","X509v3 No Revocation Available",NID_no_rev_avail,3,
1182 &(lvalues[2944]),0},
1183{"CCITT","ccitt",NID_ccitt,1,&(lvalues[2947]),0},
1184{"ansi-X9-62","ANSI X9.62",NID_ansi_X9_62,5,&(lvalues[2948]),0},
1185{"prime-field","prime-field",NID_X9_62_prime_field,7,&(lvalues[2953]),0},
1186{"characteristic-two-field","characteristic-two-field",
1187 NID_X9_62_characteristic_two_field,7,&(lvalues[2960]),0},
1188{"id-ecPublicKey","id-ecPublicKey",NID_X9_62_id_ecPublicKey,7,
1189 &(lvalues[2967]),0},
1190{"prime192v1","prime192v1",NID_X9_62_prime192v1,8,&(lvalues[2974]),0},
1191{"prime192v2","prime192v2",NID_X9_62_prime192v2,8,&(lvalues[2982]),0},
1192{"prime192v3","prime192v3",NID_X9_62_prime192v3,8,&(lvalues[2990]),0},
1193{"prime239v1","prime239v1",NID_X9_62_prime239v1,8,&(lvalues[2998]),0},
1194{"prime239v2","prime239v2",NID_X9_62_prime239v2,8,&(lvalues[3006]),0},
1195{"prime239v3","prime239v3",NID_X9_62_prime239v3,8,&(lvalues[3014]),0},
1196{"prime256v1","prime256v1",NID_X9_62_prime256v1,8,&(lvalues[3022]),0},
1197{"ecdsa-with-SHA1","ecdsa-with-SHA1",NID_ecdsa_with_SHA1,7,
1198 &(lvalues[3030]),0},
1199{"CSPName","Microsoft CSP Name",NID_ms_csp_name,9,&(lvalues[3037]),0},
1200{"AES-128-ECB","aes-128-ecb",NID_aes_128_ecb,9,&(lvalues[3046]),0},
1201{"AES-128-CBC","aes-128-cbc",NID_aes_128_cbc,9,&(lvalues[3055]),0},
1202{"AES-128-OFB","aes-128-ofb",NID_aes_128_ofb128,9,&(lvalues[3064]),0},
1203{"AES-128-CFB","aes-128-cfb",NID_aes_128_cfb128,9,&(lvalues[3073]),0},
1204{"AES-192-ECB","aes-192-ecb",NID_aes_192_ecb,9,&(lvalues[3082]),0},
1205{"AES-192-CBC","aes-192-cbc",NID_aes_192_cbc,9,&(lvalues[3091]),0},
1206{"AES-192-OFB","aes-192-ofb",NID_aes_192_ofb128,9,&(lvalues[3100]),0},
1207{"AES-192-CFB","aes-192-cfb",NID_aes_192_cfb128,9,&(lvalues[3109]),0},
1208{"AES-256-ECB","aes-256-ecb",NID_aes_256_ecb,9,&(lvalues[3118]),0},
1209{"AES-256-CBC","aes-256-cbc",NID_aes_256_cbc,9,&(lvalues[3127]),0},
1210{"AES-256-OFB","aes-256-ofb",NID_aes_256_ofb128,9,&(lvalues[3136]),0},
1211{"AES-256-CFB","aes-256-cfb",NID_aes_256_cfb128,9,&(lvalues[3145]),0},
1212{"holdInstructionCode","Hold Instruction Code",
1213 NID_hold_instruction_code,3,&(lvalues[3154]),0},
1214{"holdInstructionNone","Hold Instruction None",
1215 NID_hold_instruction_none,7,&(lvalues[3157]),0},
1216{"holdInstructionCallIssuer","Hold Instruction Call Issuer",
1217 NID_hold_instruction_call_issuer,7,&(lvalues[3164]),0},
1218{"holdInstructionReject","Hold Instruction Reject",
1219 NID_hold_instruction_reject,7,&(lvalues[3171]),0},
1220{"data","data",NID_data,1,&(lvalues[3178]),0},
1221{"pss","pss",NID_pss,3,&(lvalues[3179]),0},
1222{"ucl","ucl",NID_ucl,7,&(lvalues[3182]),0},
1223{"pilot","pilot",NID_pilot,8,&(lvalues[3189]),0},
1224{"pilotAttributeType","pilotAttributeType",NID_pilotAttributeType,9,
1225 &(lvalues[3197]),0},
1226{"pilotAttributeSyntax","pilotAttributeSyntax",
1227 NID_pilotAttributeSyntax,9,&(lvalues[3206]),0},
1228{"pilotObjectClass","pilotObjectClass",NID_pilotObjectClass,9,
1229 &(lvalues[3215]),0},
1230{"pilotGroups","pilotGroups",NID_pilotGroups,9,&(lvalues[3224]),0},
1231{"iA5StringSyntax","iA5StringSyntax",NID_iA5StringSyntax,10,
1232 &(lvalues[3233]),0},
1233{"caseIgnoreIA5StringSyntax","caseIgnoreIA5StringSyntax",
1234 NID_caseIgnoreIA5StringSyntax,10,&(lvalues[3243]),0},
1235{"pilotObject","pilotObject",NID_pilotObject,10,&(lvalues[3253]),0},
1236{"pilotPerson","pilotPerson",NID_pilotPerson,10,&(lvalues[3263]),0},
1237{"account","account",NID_account,10,&(lvalues[3273]),0},
1238{"document","document",NID_document,10,&(lvalues[3283]),0},
1239{"room","room",NID_room,10,&(lvalues[3293]),0},
1240{"documentSeries","documentSeries",NID_documentSeries,10,
1241 &(lvalues[3303]),0},
1242{"rFC822localPart","rFC822localPart",NID_rFC822localPart,10,
1243 &(lvalues[3313]),0},
1244{"dNSDomain","dNSDomain",NID_dNSDomain,10,&(lvalues[3323]),0},
1245{"domainRelatedObject","domainRelatedObject",NID_domainRelatedObject,
1246 10,&(lvalues[3333]),0},
1247{"friendlyCountry","friendlyCountry",NID_friendlyCountry,10,
1248 &(lvalues[3343]),0},
1249{"simpleSecurityObject","simpleSecurityObject",
1250 NID_simpleSecurityObject,10,&(lvalues[3353]),0},
1251{"pilotOrganization","pilotOrganization",NID_pilotOrganization,10,
1252 &(lvalues[3363]),0},
1253{"pilotDSA","pilotDSA",NID_pilotDSA,10,&(lvalues[3373]),0},
1254{"qualityLabelledData","qualityLabelledData",NID_qualityLabelledData,
1255 10,&(lvalues[3383]),0},
1256{"UID","userId",NID_userId,10,&(lvalues[3393]),0},
1257{"textEncodedORAddress","textEncodedORAddress",
1258 NID_textEncodedORAddress,10,&(lvalues[3403]),0},
1259{"mail","rfc822Mailbox",NID_rfc822Mailbox,10,&(lvalues[3413]),0},
1260{"info","info",NID_info,10,&(lvalues[3423]),0},
1261{"favouriteDrink","favouriteDrink",NID_favouriteDrink,10,
1262 &(lvalues[3433]),0},
1263{"roomNumber","roomNumber",NID_roomNumber,10,&(lvalues[3443]),0},
1264{"photo","photo",NID_photo,10,&(lvalues[3453]),0},
1265{"userClass","userClass",NID_userClass,10,&(lvalues[3463]),0},
1266{"host","host",NID_host,10,&(lvalues[3473]),0},
1267{"manager","manager",NID_manager,10,&(lvalues[3483]),0},
1268{"documentIdentifier","documentIdentifier",NID_documentIdentifier,10,
1269 &(lvalues[3493]),0},
1270{"documentTitle","documentTitle",NID_documentTitle,10,&(lvalues[3503]),0},
1271{"documentVersion","documentVersion",NID_documentVersion,10,
1272 &(lvalues[3513]),0},
1273{"documentAuthor","documentAuthor",NID_documentAuthor,10,
1274 &(lvalues[3523]),0},
1275{"documentLocation","documentLocation",NID_documentLocation,10,
1276 &(lvalues[3533]),0},
1277{"homeTelephoneNumber","homeTelephoneNumber",NID_homeTelephoneNumber,
1278 10,&(lvalues[3543]),0},
1279{"secretary","secretary",NID_secretary,10,&(lvalues[3553]),0},
1280{"otherMailbox","otherMailbox",NID_otherMailbox,10,&(lvalues[3563]),0},
1281{"lastModifiedTime","lastModifiedTime",NID_lastModifiedTime,10,
1282 &(lvalues[3573]),0},
1283{"lastModifiedBy","lastModifiedBy",NID_lastModifiedBy,10,
1284 &(lvalues[3583]),0},
1285{"aRecord","aRecord",NID_aRecord,10,&(lvalues[3593]),0},
1286{"pilotAttributeType27","pilotAttributeType27",
1287 NID_pilotAttributeType27,10,&(lvalues[3603]),0},
1288{"mXRecord","mXRecord",NID_mXRecord,10,&(lvalues[3613]),0},
1289{"nSRecord","nSRecord",NID_nSRecord,10,&(lvalues[3623]),0},
1290{"sOARecord","sOARecord",NID_sOARecord,10,&(lvalues[3633]),0},
1291{"cNAMERecord","cNAMERecord",NID_cNAMERecord,10,&(lvalues[3643]),0},
1292{"associatedDomain","associatedDomain",NID_associatedDomain,10,
1293 &(lvalues[3653]),0},
1294{"associatedName","associatedName",NID_associatedName,10,
1295 &(lvalues[3663]),0},
1296{"homePostalAddress","homePostalAddress",NID_homePostalAddress,10,
1297 &(lvalues[3673]),0},
1298{"personalTitle","personalTitle",NID_personalTitle,10,&(lvalues[3683]),0},
1299{"mobileTelephoneNumber","mobileTelephoneNumber",
1300 NID_mobileTelephoneNumber,10,&(lvalues[3693]),0},
1301{"pagerTelephoneNumber","pagerTelephoneNumber",
1302 NID_pagerTelephoneNumber,10,&(lvalues[3703]),0},
1303{"friendlyCountryName","friendlyCountryName",NID_friendlyCountryName,
1304 10,&(lvalues[3713]),0},
1305{"organizationalStatus","organizationalStatus",
1306 NID_organizationalStatus,10,&(lvalues[3723]),0},
1307{"janetMailbox","janetMailbox",NID_janetMailbox,10,&(lvalues[3733]),0},
1308{"mailPreferenceOption","mailPreferenceOption",
1309 NID_mailPreferenceOption,10,&(lvalues[3743]),0},
1310{"buildingName","buildingName",NID_buildingName,10,&(lvalues[3753]),0},
1311{"dSAQuality","dSAQuality",NID_dSAQuality,10,&(lvalues[3763]),0},
1312{"singleLevelQuality","singleLevelQuality",NID_singleLevelQuality,10,
1313 &(lvalues[3773]),0},
1314{"subtreeMinimumQuality","subtreeMinimumQuality",
1315 NID_subtreeMinimumQuality,10,&(lvalues[3783]),0},
1316{"subtreeMaximumQuality","subtreeMaximumQuality",
1317 NID_subtreeMaximumQuality,10,&(lvalues[3793]),0},
1318{"personalSignature","personalSignature",NID_personalSignature,10,
1319 &(lvalues[3803]),0},
1320{"dITRedirect","dITRedirect",NID_dITRedirect,10,&(lvalues[3813]),0},
1321{"audio","audio",NID_audio,10,&(lvalues[3823]),0},
1322{"documentPublisher","documentPublisher",NID_documentPublisher,10,
1323 &(lvalues[3833]),0},
1324{"x500UniqueIdentifier","x500UniqueIdentifier",
1325 NID_x500UniqueIdentifier,3,&(lvalues[3843]),0},
1326{"mime-mhs","MIME MHS",NID_mime_mhs,5,&(lvalues[3846]),0},
1327{"mime-mhs-headings","mime-mhs-headings",NID_mime_mhs_headings,6,
1328 &(lvalues[3851]),0},
1329{"mime-mhs-bodies","mime-mhs-bodies",NID_mime_mhs_bodies,6,
1330 &(lvalues[3857]),0},
1331{"id-hex-partial-message","id-hex-partial-message",
1332 NID_id_hex_partial_message,7,&(lvalues[3863]),0},
1333{"id-hex-multipart-message","id-hex-multipart-message",
1334 NID_id_hex_multipart_message,7,&(lvalues[3870]),0},
1335{"generationQualifier","generationQualifier",NID_generationQualifier,
1336 3,&(lvalues[3877]),0},
334}; 1337};
335 1338
336static ASN1_OBJECT *sn_objs[NUM_SN]={ 1339static ASN1_OBJECT *sn_objs[NUM_SN]={
1340&(nid_objs[364]),/* "AD_DVCS" */
1341&(nid_objs[419]),/* "AES-128-CBC" */
1342&(nid_objs[421]),/* "AES-128-CFB" */
1343&(nid_objs[418]),/* "AES-128-ECB" */
1344&(nid_objs[420]),/* "AES-128-OFB" */
1345&(nid_objs[423]),/* "AES-192-CBC" */
1346&(nid_objs[425]),/* "AES-192-CFB" */
1347&(nid_objs[422]),/* "AES-192-ECB" */
1348&(nid_objs[424]),/* "AES-192-OFB" */
1349&(nid_objs[427]),/* "AES-256-CBC" */
1350&(nid_objs[429]),/* "AES-256-CFB" */
1351&(nid_objs[426]),/* "AES-256-ECB" */
1352&(nid_objs[428]),/* "AES-256-OFB" */
337&(nid_objs[91]),/* "BF-CBC" */ 1353&(nid_objs[91]),/* "BF-CBC" */
338&(nid_objs[93]),/* "BF-CFB" */ 1354&(nid_objs[93]),/* "BF-CFB" */
339&(nid_objs[92]),/* "BF-ECB" */ 1355&(nid_objs[92]),/* "BF-ECB" */
@@ -343,8 +1359,12 @@ static ASN1_OBJECT *sn_objs[NUM_SN]={
343&(nid_objs[110]),/* "CAST5-CFB" */ 1359&(nid_objs[110]),/* "CAST5-CFB" */
344&(nid_objs[109]),/* "CAST5-ECB" */ 1360&(nid_objs[109]),/* "CAST5-ECB" */
345&(nid_objs[111]),/* "CAST5-OFB" */ 1361&(nid_objs[111]),/* "CAST5-OFB" */
1362&(nid_objs[404]),/* "CCITT" */
346&(nid_objs[13]),/* "CN" */ 1363&(nid_objs[13]),/* "CN" */
347&(nid_objs[107]),/* "D" */ 1364&(nid_objs[141]),/* "CRLReason" */
1365&(nid_objs[417]),/* "CSPName" */
1366&(nid_objs[367]),/* "CrlID" */
1367&(nid_objs[391]),/* "DC" */
348&(nid_objs[31]),/* "DES-CBC" */ 1368&(nid_objs[31]),/* "DES-CBC" */
349&(nid_objs[30]),/* "DES-CFB" */ 1369&(nid_objs[30]),/* "DES-CFB" */
350&(nid_objs[29]),/* "DES-ECB" */ 1370&(nid_objs[29]),/* "DES-ECB" */
@@ -358,27 +1378,53 @@ static ASN1_OBJECT *sn_objs[NUM_SN]={
358&(nid_objs[63]),/* "DES-EDE3-OFB" */ 1378&(nid_objs[63]),/* "DES-EDE3-OFB" */
359&(nid_objs[45]),/* "DES-OFB" */ 1379&(nid_objs[45]),/* "DES-OFB" */
360&(nid_objs[80]),/* "DESX-CBC" */ 1380&(nid_objs[80]),/* "DESX-CBC" */
1381&(nid_objs[380]),/* "DOD" */
361&(nid_objs[116]),/* "DSA" */ 1382&(nid_objs[116]),/* "DSA" */
362&(nid_objs[66]),/* "DSA-SHA" */ 1383&(nid_objs[66]),/* "DSA-SHA" */
363&(nid_objs[113]),/* "DSA-SHA1" */ 1384&(nid_objs[113]),/* "DSA-SHA1" */
364&(nid_objs[70]),/* "DSA-SHA1-old" */ 1385&(nid_objs[70]),/* "DSA-SHA1-old" */
365&(nid_objs[67]),/* "DSA-old" */ 1386&(nid_objs[67]),/* "DSA-old" */
366&(nid_objs[48]),/* "Email" */ 1387&(nid_objs[297]),/* "DVCS" */
367&(nid_objs[99]),/* "G" */ 1388&(nid_objs[381]),/* "IANA" */
368&(nid_objs[101]),/* "I" */
369&(nid_objs[34]),/* "IDEA-CBC" */ 1389&(nid_objs[34]),/* "IDEA-CBC" */
370&(nid_objs[35]),/* "IDEA-CFB" */ 1390&(nid_objs[35]),/* "IDEA-CFB" */
371&(nid_objs[36]),/* "IDEA-ECB" */ 1391&(nid_objs[36]),/* "IDEA-ECB" */
372&(nid_objs[46]),/* "IDEA-OFB" */ 1392&(nid_objs[46]),/* "IDEA-OFB" */
1393&(nid_objs[181]),/* "ISO" */
1394&(nid_objs[183]),/* "ISO-US" */
1395&(nid_objs[393]),/* "JOINT-ISO-CCITT" */
373&(nid_objs[15]),/* "L" */ 1396&(nid_objs[15]),/* "L" */
374&(nid_objs[ 3]),/* "MD2" */ 1397&(nid_objs[ 3]),/* "MD2" */
1398&(nid_objs[257]),/* "MD4" */
375&(nid_objs[ 4]),/* "MD5" */ 1399&(nid_objs[ 4]),/* "MD5" */
376&(nid_objs[114]),/* "MD5-SHA1" */ 1400&(nid_objs[114]),/* "MD5-SHA1" */
377&(nid_objs[95]),/* "MDC2" */ 1401&(nid_objs[95]),/* "MDC2" */
1402&(nid_objs[388]),/* "Mail" */
378&(nid_objs[57]),/* "Netscape" */ 1403&(nid_objs[57]),/* "Netscape" */
1404&(nid_objs[366]),/* "Nonce" */
379&(nid_objs[17]),/* "O" */ 1405&(nid_objs[17]),/* "O" */
1406&(nid_objs[178]),/* "OCSP" */
1407&(nid_objs[180]),/* "OCSPSigning" */
1408&(nid_objs[379]),/* "ORG" */
380&(nid_objs[18]),/* "OU" */ 1409&(nid_objs[18]),/* "OU" */
1410&(nid_objs[ 9]),/* "PBE-MD2-DES" */
1411&(nid_objs[168]),/* "PBE-MD2-RC2-64" */
1412&(nid_objs[10]),/* "PBE-MD5-DES" */
1413&(nid_objs[169]),/* "PBE-MD5-RC2-64" */
1414&(nid_objs[147]),/* "PBE-SHA1-2DES" */
1415&(nid_objs[146]),/* "PBE-SHA1-3DES" */
1416&(nid_objs[170]),/* "PBE-SHA1-DES" */
1417&(nid_objs[148]),/* "PBE-SHA1-RC2-128" */
1418&(nid_objs[149]),/* "PBE-SHA1-RC2-40" */
1419&(nid_objs[68]),/* "PBE-SHA1-RC2-64" */
1420&(nid_objs[144]),/* "PBE-SHA1-RC4-128" */
1421&(nid_objs[145]),/* "PBE-SHA1-RC4-40" */
1422&(nid_objs[161]),/* "PBES2" */
1423&(nid_objs[69]),/* "PBKDF2" */
1424&(nid_objs[162]),/* "PBMAC1" */
1425&(nid_objs[127]),/* "PKIX" */
381&(nid_objs[98]),/* "RC2-40-CBC" */ 1426&(nid_objs[98]),/* "RC2-40-CBC" */
1427&(nid_objs[166]),/* "RC2-64-CBC" */
382&(nid_objs[37]),/* "RC2-CBC" */ 1428&(nid_objs[37]),/* "RC2-CBC" */
383&(nid_objs[39]),/* "RC2-CFB" */ 1429&(nid_objs[39]),/* "RC2-CFB" */
384&(nid_objs[38]),/* "RC2-ECB" */ 1430&(nid_objs[38]),/* "RC2-ECB" */
@@ -390,8 +1436,10 @@ static ASN1_OBJECT *sn_objs[NUM_SN]={
390&(nid_objs[121]),/* "RC5-ECB" */ 1436&(nid_objs[121]),/* "RC5-ECB" */
391&(nid_objs[123]),/* "RC5-OFB" */ 1437&(nid_objs[123]),/* "RC5-OFB" */
392&(nid_objs[117]),/* "RIPEMD160" */ 1438&(nid_objs[117]),/* "RIPEMD160" */
1439&(nid_objs[124]),/* "RLE" */
393&(nid_objs[19]),/* "RSA" */ 1440&(nid_objs[19]),/* "RSA" */
394&(nid_objs[ 7]),/* "RSA-MD2" */ 1441&(nid_objs[ 7]),/* "RSA-MD2" */
1442&(nid_objs[396]),/* "RSA-MD4" */
395&(nid_objs[ 8]),/* "RSA-MD5" */ 1443&(nid_objs[ 8]),/* "RSA-MD5" */
396&(nid_objs[96]),/* "RSA-MDC2" */ 1444&(nid_objs[96]),/* "RSA-MDC2" */
397&(nid_objs[104]),/* "RSA-NP-MD5" */ 1445&(nid_objs[104]),/* "RSA-NP-MD5" */
@@ -399,22 +1447,303 @@ static ASN1_OBJECT *sn_objs[NUM_SN]={
399&(nid_objs[42]),/* "RSA-SHA" */ 1447&(nid_objs[42]),/* "RSA-SHA" */
400&(nid_objs[65]),/* "RSA-SHA1" */ 1448&(nid_objs[65]),/* "RSA-SHA1" */
401&(nid_objs[115]),/* "RSA-SHA1-2" */ 1449&(nid_objs[115]),/* "RSA-SHA1-2" */
402&(nid_objs[100]),/* "S" */
403&(nid_objs[41]),/* "SHA" */ 1450&(nid_objs[41]),/* "SHA" */
404&(nid_objs[64]),/* "SHA1" */ 1451&(nid_objs[64]),/* "SHA1" */
405&(nid_objs[105]),/* "SN" */ 1452&(nid_objs[188]),/* "SMIME" */
1453&(nid_objs[167]),/* "SMIME-CAPS" */
1454&(nid_objs[100]),/* "SN" */
406&(nid_objs[16]),/* "ST" */ 1455&(nid_objs[16]),/* "ST" */
407&(nid_objs[106]),/* "T" */ 1456&(nid_objs[143]),/* "SXNetID" */
408&(nid_objs[102]),/* "UID" */ 1457&(nid_objs[458]),/* "UID" */
409&(nid_objs[ 0]),/* "UNDEF" */ 1458&(nid_objs[ 0]),/* "UNDEF" */
1459&(nid_objs[11]),/* "X500" */
1460&(nid_objs[378]),/* "X500algorithms" */
1461&(nid_objs[12]),/* "X509" */
1462&(nid_objs[184]),/* "X9-57" */
1463&(nid_objs[185]),/* "X9cm" */
1464&(nid_objs[125]),/* "ZLIB" */
1465&(nid_objs[478]),/* "aRecord" */
1466&(nid_objs[289]),/* "aaControls" */
1467&(nid_objs[287]),/* "ac-auditEntity" */
1468&(nid_objs[397]),/* "ac-proxying" */
1469&(nid_objs[288]),/* "ac-targeting" */
1470&(nid_objs[368]),/* "acceptableResponses" */
1471&(nid_objs[446]),/* "account" */
1472&(nid_objs[363]),/* "ad_timestamping" */
1473&(nid_objs[376]),/* "algorithm" */
1474&(nid_objs[405]),/* "ansi-X9-62" */
1475&(nid_objs[370]),/* "archiveCutoff" */
1476&(nid_objs[484]),/* "associatedDomain" */
1477&(nid_objs[485]),/* "associatedName" */
1478&(nid_objs[501]),/* "audio" */
1479&(nid_objs[177]),/* "authorityInfoAccess" */
410&(nid_objs[90]),/* "authorityKeyIdentifier" */ 1480&(nid_objs[90]),/* "authorityKeyIdentifier" */
411&(nid_objs[87]),/* "basicConstraints" */ 1481&(nid_objs[87]),/* "basicConstraints" */
1482&(nid_objs[365]),/* "basicOCSPResponse" */
1483&(nid_objs[285]),/* "biometricInfo" */
1484&(nid_objs[494]),/* "buildingName" */
1485&(nid_objs[483]),/* "cNAMERecord" */
1486&(nid_objs[179]),/* "caIssuers" */
1487&(nid_objs[443]),/* "caseIgnoreIA5StringSyntax" */
1488&(nid_objs[152]),/* "certBag" */
412&(nid_objs[89]),/* "certificatePolicies" */ 1489&(nid_objs[89]),/* "certificatePolicies" */
1490&(nid_objs[54]),/* "challengePassword" */
1491&(nid_objs[407]),/* "characteristic-two-field" */
1492&(nid_objs[395]),/* "clearance" */
1493&(nid_objs[130]),/* "clientAuth" */
1494&(nid_objs[131]),/* "codeSigning" */
1495&(nid_objs[50]),/* "contentType" */
1496&(nid_objs[53]),/* "countersignature" */
1497&(nid_objs[153]),/* "crlBag" */
413&(nid_objs[103]),/* "crlDistributionPoints" */ 1498&(nid_objs[103]),/* "crlDistributionPoints" */
414&(nid_objs[88]),/* "crlNumber" */ 1499&(nid_objs[88]),/* "crlNumber" */
1500&(nid_objs[500]),/* "dITRedirect" */
1501&(nid_objs[451]),/* "dNSDomain" */
1502&(nid_objs[495]),/* "dSAQuality" */
1503&(nid_objs[434]),/* "data" */
1504&(nid_objs[390]),/* "dcobject" */
1505&(nid_objs[140]),/* "deltaCRL" */
1506&(nid_objs[107]),/* "description" */
1507&(nid_objs[28]),/* "dhKeyAgreement" */
1508&(nid_objs[382]),/* "directory" */
1509&(nid_objs[174]),/* "dnQualifier" */
1510&(nid_objs[447]),/* "document" */
1511&(nid_objs[471]),/* "documentAuthor" */
1512&(nid_objs[468]),/* "documentIdentifier" */
1513&(nid_objs[472]),/* "documentLocation" */
1514&(nid_objs[502]),/* "documentPublisher" */
1515&(nid_objs[449]),/* "documentSeries" */
1516&(nid_objs[469]),/* "documentTitle" */
1517&(nid_objs[470]),/* "documentVersion" */
1518&(nid_objs[392]),/* "domain" */
1519&(nid_objs[452]),/* "domainRelatedObject" */
1520&(nid_objs[416]),/* "ecdsa-with-SHA1" */
1521&(nid_objs[48]),/* "emailAddress" */
1522&(nid_objs[132]),/* "emailProtection" */
1523&(nid_objs[389]),/* "enterprises" */
1524&(nid_objs[384]),/* "experimental" */
1525&(nid_objs[172]),/* "extReq" */
1526&(nid_objs[56]),/* "extendedCertificateAttributes" */
1527&(nid_objs[126]),/* "extendedKeyUsage" */
1528&(nid_objs[372]),/* "extendedStatus" */
1529&(nid_objs[462]),/* "favouriteDrink" */
1530&(nid_objs[453]),/* "friendlyCountry" */
1531&(nid_objs[490]),/* "friendlyCountryName" */
1532&(nid_objs[156]),/* "friendlyName" */
1533&(nid_objs[509]),/* "generationQualifier" */
1534&(nid_objs[99]),/* "gn" */
1535&(nid_objs[163]),/* "hmacWithSHA1" */
1536&(nid_objs[432]),/* "holdInstructionCallIssuer" */
1537&(nid_objs[430]),/* "holdInstructionCode" */
1538&(nid_objs[431]),/* "holdInstructionNone" */
1539&(nid_objs[433]),/* "holdInstructionReject" */
1540&(nid_objs[486]),/* "homePostalAddress" */
1541&(nid_objs[473]),/* "homeTelephoneNumber" */
1542&(nid_objs[466]),/* "host" */
1543&(nid_objs[442]),/* "iA5StringSyntax" */
1544&(nid_objs[266]),/* "id-aca" */
1545&(nid_objs[355]),/* "id-aca-accessIdentity" */
1546&(nid_objs[354]),/* "id-aca-authenticationInfo" */
1547&(nid_objs[356]),/* "id-aca-chargingIdentity" */
1548&(nid_objs[399]),/* "id-aca-encAttrs" */
1549&(nid_objs[357]),/* "id-aca-group" */
1550&(nid_objs[358]),/* "id-aca-role" */
1551&(nid_objs[176]),/* "id-ad" */
1552&(nid_objs[262]),/* "id-alg" */
1553&(nid_objs[323]),/* "id-alg-des40" */
1554&(nid_objs[326]),/* "id-alg-dh-pop" */
1555&(nid_objs[325]),/* "id-alg-dh-sig-hmac-sha1" */
1556&(nid_objs[324]),/* "id-alg-noSignature" */
1557&(nid_objs[268]),/* "id-cct" */
1558&(nid_objs[361]),/* "id-cct-PKIData" */
1559&(nid_objs[362]),/* "id-cct-PKIResponse" */
1560&(nid_objs[360]),/* "id-cct-crs" */
1561&(nid_objs[81]),/* "id-ce" */
1562&(nid_objs[263]),/* "id-cmc" */
1563&(nid_objs[334]),/* "id-cmc-addExtensions" */
1564&(nid_objs[346]),/* "id-cmc-confirmCertAcceptance" */
1565&(nid_objs[330]),/* "id-cmc-dataReturn" */
1566&(nid_objs[336]),/* "id-cmc-decryptedPOP" */
1567&(nid_objs[335]),/* "id-cmc-encryptedPOP" */
1568&(nid_objs[339]),/* "id-cmc-getCRL" */
1569&(nid_objs[338]),/* "id-cmc-getCert" */
1570&(nid_objs[328]),/* "id-cmc-identification" */
1571&(nid_objs[329]),/* "id-cmc-identityProof" */
1572&(nid_objs[337]),/* "id-cmc-lraPOPWitness" */
1573&(nid_objs[344]),/* "id-cmc-popLinkRandom" */
1574&(nid_objs[345]),/* "id-cmc-popLinkWitness" */
1575&(nid_objs[343]),/* "id-cmc-queryPending" */
1576&(nid_objs[333]),/* "id-cmc-recipientNonce" */
1577&(nid_objs[341]),/* "id-cmc-regInfo" */
1578&(nid_objs[342]),/* "id-cmc-responseInfo" */
1579&(nid_objs[340]),/* "id-cmc-revokeRequest" */
1580&(nid_objs[332]),/* "id-cmc-senderNonce" */
1581&(nid_objs[327]),/* "id-cmc-statusInfo" */
1582&(nid_objs[331]),/* "id-cmc-transactionId" */
1583&(nid_objs[408]),/* "id-ecPublicKey" */
1584&(nid_objs[508]),/* "id-hex-multipart-message" */
1585&(nid_objs[507]),/* "id-hex-partial-message" */
1586&(nid_objs[260]),/* "id-it" */
1587&(nid_objs[302]),/* "id-it-caKeyUpdateInfo" */
1588&(nid_objs[298]),/* "id-it-caProtEncCert" */
1589&(nid_objs[311]),/* "id-it-confirmWaitTime" */
1590&(nid_objs[303]),/* "id-it-currentCRL" */
1591&(nid_objs[300]),/* "id-it-encKeyPairTypes" */
1592&(nid_objs[310]),/* "id-it-implicitConfirm" */
1593&(nid_objs[308]),/* "id-it-keyPairParamRep" */
1594&(nid_objs[307]),/* "id-it-keyPairParamReq" */
1595&(nid_objs[312]),/* "id-it-origPKIMessage" */
1596&(nid_objs[301]),/* "id-it-preferredSymmAlg" */
1597&(nid_objs[309]),/* "id-it-revPassphrase" */
1598&(nid_objs[299]),/* "id-it-signKeyPairTypes" */
1599&(nid_objs[305]),/* "id-it-subscriptionRequest" */
1600&(nid_objs[306]),/* "id-it-subscriptionResponse" */
1601&(nid_objs[304]),/* "id-it-unsupportedOIDs" */
1602&(nid_objs[128]),/* "id-kp" */
1603&(nid_objs[280]),/* "id-mod-attribute-cert" */
1604&(nid_objs[274]),/* "id-mod-cmc" */
1605&(nid_objs[277]),/* "id-mod-cmp" */
1606&(nid_objs[284]),/* "id-mod-cmp2000" */
1607&(nid_objs[273]),/* "id-mod-crmf" */
1608&(nid_objs[283]),/* "id-mod-dvcs" */
1609&(nid_objs[275]),/* "id-mod-kea-profile-88" */
1610&(nid_objs[276]),/* "id-mod-kea-profile-93" */
1611&(nid_objs[282]),/* "id-mod-ocsp" */
1612&(nid_objs[278]),/* "id-mod-qualified-cert-88" */
1613&(nid_objs[279]),/* "id-mod-qualified-cert-93" */
1614&(nid_objs[281]),/* "id-mod-timestamp-protocol" */
1615&(nid_objs[264]),/* "id-on" */
1616&(nid_objs[347]),/* "id-on-personalData" */
1617&(nid_objs[265]),/* "id-pda" */
1618&(nid_objs[352]),/* "id-pda-countryOfCitizenship" */
1619&(nid_objs[353]),/* "id-pda-countryOfResidence" */
1620&(nid_objs[348]),/* "id-pda-dateOfBirth" */
1621&(nid_objs[351]),/* "id-pda-gender" */
1622&(nid_objs[349]),/* "id-pda-placeOfBirth" */
1623&(nid_objs[175]),/* "id-pe" */
1624&(nid_objs[261]),/* "id-pkip" */
1625&(nid_objs[258]),/* "id-pkix-mod" */
1626&(nid_objs[269]),/* "id-pkix1-explicit-88" */
1627&(nid_objs[271]),/* "id-pkix1-explicit-93" */
1628&(nid_objs[270]),/* "id-pkix1-implicit-88" */
1629&(nid_objs[272]),/* "id-pkix1-implicit-93" */
1630&(nid_objs[267]),/* "id-qcs" */
1631&(nid_objs[359]),/* "id-qcs-pkixQCSyntax-v1" */
1632&(nid_objs[259]),/* "id-qt" */
1633&(nid_objs[164]),/* "id-qt-cps" */
1634&(nid_objs[165]),/* "id-qt-unotice" */
1635&(nid_objs[313]),/* "id-regCtrl" */
1636&(nid_objs[316]),/* "id-regCtrl-authenticator" */
1637&(nid_objs[319]),/* "id-regCtrl-oldCertID" */
1638&(nid_objs[318]),/* "id-regCtrl-pkiArchiveOptions" */
1639&(nid_objs[317]),/* "id-regCtrl-pkiPublicationInfo" */
1640&(nid_objs[320]),/* "id-regCtrl-protocolEncrKey" */
1641&(nid_objs[315]),/* "id-regCtrl-regToken" */
1642&(nid_objs[314]),/* "id-regInfo" */
1643&(nid_objs[322]),/* "id-regInfo-certReq" */
1644&(nid_objs[321]),/* "id-regInfo-utf8Pairs" */
1645&(nid_objs[191]),/* "id-smime-aa" */
1646&(nid_objs[215]),/* "id-smime-aa-contentHint" */
1647&(nid_objs[218]),/* "id-smime-aa-contentIdentifier" */
1648&(nid_objs[221]),/* "id-smime-aa-contentReference" */
1649&(nid_objs[240]),/* "id-smime-aa-dvcs-dvc" */
1650&(nid_objs[217]),/* "id-smime-aa-encapContentType" */
1651&(nid_objs[222]),/* "id-smime-aa-encrypKeyPref" */
1652&(nid_objs[220]),/* "id-smime-aa-equivalentLabels" */
1653&(nid_objs[232]),/* "id-smime-aa-ets-CertificateRefs" */
1654&(nid_objs[233]),/* "id-smime-aa-ets-RevocationRefs" */
1655&(nid_objs[238]),/* "id-smime-aa-ets-archiveTimeStamp" */
1656&(nid_objs[237]),/* "id-smime-aa-ets-certCRLTimestamp" */
1657&(nid_objs[234]),/* "id-smime-aa-ets-certValues" */
1658&(nid_objs[227]),/* "id-smime-aa-ets-commitmentType" */
1659&(nid_objs[231]),/* "id-smime-aa-ets-contentTimestamp" */
1660&(nid_objs[236]),/* "id-smime-aa-ets-escTimeStamp" */
1661&(nid_objs[230]),/* "id-smime-aa-ets-otherSigCert" */
1662&(nid_objs[235]),/* "id-smime-aa-ets-revocationValues" */
1663&(nid_objs[226]),/* "id-smime-aa-ets-sigPolicyId" */
1664&(nid_objs[229]),/* "id-smime-aa-ets-signerAttr" */
1665&(nid_objs[228]),/* "id-smime-aa-ets-signerLocation" */
1666&(nid_objs[219]),/* "id-smime-aa-macValue" */
1667&(nid_objs[214]),/* "id-smime-aa-mlExpandHistory" */
1668&(nid_objs[216]),/* "id-smime-aa-msgSigDigest" */
1669&(nid_objs[212]),/* "id-smime-aa-receiptRequest" */
1670&(nid_objs[213]),/* "id-smime-aa-securityLabel" */
1671&(nid_objs[239]),/* "id-smime-aa-signatureType" */
1672&(nid_objs[223]),/* "id-smime-aa-signingCertificate" */
1673&(nid_objs[224]),/* "id-smime-aa-smimeEncryptCerts" */
1674&(nid_objs[225]),/* "id-smime-aa-timeStampToken" */
1675&(nid_objs[192]),/* "id-smime-alg" */
1676&(nid_objs[243]),/* "id-smime-alg-3DESwrap" */
1677&(nid_objs[246]),/* "id-smime-alg-CMS3DESwrap" */
1678&(nid_objs[247]),/* "id-smime-alg-CMSRC2wrap" */
1679&(nid_objs[245]),/* "id-smime-alg-ESDH" */
1680&(nid_objs[241]),/* "id-smime-alg-ESDHwith3DES" */
1681&(nid_objs[242]),/* "id-smime-alg-ESDHwithRC2" */
1682&(nid_objs[244]),/* "id-smime-alg-RC2wrap" */
1683&(nid_objs[193]),/* "id-smime-cd" */
1684&(nid_objs[248]),/* "id-smime-cd-ldap" */
1685&(nid_objs[190]),/* "id-smime-ct" */
1686&(nid_objs[210]),/* "id-smime-ct-DVCSRequestData" */
1687&(nid_objs[211]),/* "id-smime-ct-DVCSResponseData" */
1688&(nid_objs[208]),/* "id-smime-ct-TDTInfo" */
1689&(nid_objs[207]),/* "id-smime-ct-TSTInfo" */
1690&(nid_objs[205]),/* "id-smime-ct-authData" */
1691&(nid_objs[209]),/* "id-smime-ct-contentInfo" */
1692&(nid_objs[206]),/* "id-smime-ct-publishCert" */
1693&(nid_objs[204]),/* "id-smime-ct-receipt" */
1694&(nid_objs[195]),/* "id-smime-cti" */
1695&(nid_objs[255]),/* "id-smime-cti-ets-proofOfApproval" */
1696&(nid_objs[256]),/* "id-smime-cti-ets-proofOfCreation" */
1697&(nid_objs[253]),/* "id-smime-cti-ets-proofOfDelivery" */
1698&(nid_objs[251]),/* "id-smime-cti-ets-proofOfOrigin" */
1699&(nid_objs[252]),/* "id-smime-cti-ets-proofOfReceipt" */
1700&(nid_objs[254]),/* "id-smime-cti-ets-proofOfSender" */
1701&(nid_objs[189]),/* "id-smime-mod" */
1702&(nid_objs[196]),/* "id-smime-mod-cms" */
1703&(nid_objs[197]),/* "id-smime-mod-ess" */
1704&(nid_objs[202]),/* "id-smime-mod-ets-eSigPolicy-88" */
1705&(nid_objs[203]),/* "id-smime-mod-ets-eSigPolicy-97" */
1706&(nid_objs[200]),/* "id-smime-mod-ets-eSignature-88" */
1707&(nid_objs[201]),/* "id-smime-mod-ets-eSignature-97" */
1708&(nid_objs[199]),/* "id-smime-mod-msg-v3" */
1709&(nid_objs[198]),/* "id-smime-mod-oid" */
1710&(nid_objs[194]),/* "id-smime-spq" */
1711&(nid_objs[250]),/* "id-smime-spq-ets-sqt-unotice" */
1712&(nid_objs[249]),/* "id-smime-spq-ets-sqt-uri" */
1713&(nid_objs[461]),/* "info" */
1714&(nid_objs[101]),/* "initials" */
1715&(nid_objs[142]),/* "invalidityDate" */
1716&(nid_objs[294]),/* "ipsecEndSystem" */
1717&(nid_objs[295]),/* "ipsecTunnel" */
1718&(nid_objs[296]),/* "ipsecUser" */
415&(nid_objs[86]),/* "issuerAltName" */ 1719&(nid_objs[86]),/* "issuerAltName" */
1720&(nid_objs[492]),/* "janetMailbox" */
1721&(nid_objs[150]),/* "keyBag" */
416&(nid_objs[83]),/* "keyUsage" */ 1722&(nid_objs[83]),/* "keyUsage" */
417&(nid_objs[81]),/* "ld-ce" */ 1723&(nid_objs[477]),/* "lastModifiedBy" */
1724&(nid_objs[476]),/* "lastModifiedTime" */
1725&(nid_objs[157]),/* "localKeyID" */
1726&(nid_objs[480]),/* "mXRecord" */
1727&(nid_objs[460]),/* "mail" */
1728&(nid_objs[493]),/* "mailPreferenceOption" */
1729&(nid_objs[467]),/* "manager" */
1730&(nid_objs[182]),/* "member-body" */
1731&(nid_objs[51]),/* "messageDigest" */
1732&(nid_objs[383]),/* "mgmt" */
1733&(nid_objs[504]),/* "mime-mhs" */
1734&(nid_objs[506]),/* "mime-mhs-bodies" */
1735&(nid_objs[505]),/* "mime-mhs-headings" */
1736&(nid_objs[488]),/* "mobileTelephoneNumber" */
1737&(nid_objs[136]),/* "msCTLSign" */
1738&(nid_objs[135]),/* "msCodeCom" */
1739&(nid_objs[134]),/* "msCodeInd" */
1740&(nid_objs[138]),/* "msEFS" */
1741&(nid_objs[171]),/* "msExtReq" */
1742&(nid_objs[137]),/* "msSGC" */
1743&(nid_objs[481]),/* "nSRecord" */
1744&(nid_objs[173]),/* "name" */
1745&(nid_objs[369]),/* "noCheck" */
1746&(nid_objs[403]),/* "noRevAvail" */
418&(nid_objs[72]),/* "nsBaseUrl" */ 1747&(nid_objs[72]),/* "nsBaseUrl" */
419&(nid_objs[76]),/* "nsCaPolicyUrl" */ 1748&(nid_objs[76]),/* "nsCaPolicyUrl" */
420&(nid_objs[74]),/* "nsCaRevocationUrl" */ 1749&(nid_objs[74]),/* "nsCaRevocationUrl" */
@@ -425,13 +1754,134 @@ static ASN1_OBJECT *sn_objs[NUM_SN]={
425&(nid_objs[59]),/* "nsDataType" */ 1754&(nid_objs[59]),/* "nsDataType" */
426&(nid_objs[75]),/* "nsRenewalUrl" */ 1755&(nid_objs[75]),/* "nsRenewalUrl" */
427&(nid_objs[73]),/* "nsRevocationUrl" */ 1756&(nid_objs[73]),/* "nsRevocationUrl" */
1757&(nid_objs[139]),/* "nsSGC" */
428&(nid_objs[77]),/* "nsSslServerName" */ 1758&(nid_objs[77]),/* "nsSslServerName" */
1759&(nid_objs[491]),/* "organizationalStatus" */
1760&(nid_objs[475]),/* "otherMailbox" */
1761&(nid_objs[489]),/* "pagerTelephoneNumber" */
1762&(nid_objs[374]),/* "path" */
1763&(nid_objs[112]),/* "pbeWithMD5AndCast5CBC" */
1764&(nid_objs[499]),/* "personalSignature" */
1765&(nid_objs[487]),/* "personalTitle" */
1766&(nid_objs[464]),/* "photo" */
1767&(nid_objs[437]),/* "pilot" */
1768&(nid_objs[439]),/* "pilotAttributeSyntax" */
1769&(nid_objs[438]),/* "pilotAttributeType" */
1770&(nid_objs[479]),/* "pilotAttributeType27" */
1771&(nid_objs[456]),/* "pilotDSA" */
1772&(nid_objs[441]),/* "pilotGroups" */
1773&(nid_objs[444]),/* "pilotObject" */
1774&(nid_objs[440]),/* "pilotObjectClass" */
1775&(nid_objs[455]),/* "pilotOrganization" */
1776&(nid_objs[445]),/* "pilotPerson" */
1777&(nid_objs[ 2]),/* "pkcs" */
1778&(nid_objs[186]),/* "pkcs1" */
1779&(nid_objs[27]),/* "pkcs3" */
1780&(nid_objs[187]),/* "pkcs5" */
1781&(nid_objs[20]),/* "pkcs7" */
1782&(nid_objs[21]),/* "pkcs7-data" */
1783&(nid_objs[25]),/* "pkcs7-digestData" */
1784&(nid_objs[26]),/* "pkcs7-encryptedData" */
1785&(nid_objs[23]),/* "pkcs7-envelopedData" */
1786&(nid_objs[24]),/* "pkcs7-signedAndEnvelopedData" */
1787&(nid_objs[22]),/* "pkcs7-signedData" */
1788&(nid_objs[151]),/* "pkcs8ShroudedKeyBag" */
1789&(nid_objs[47]),/* "pkcs9" */
1790&(nid_objs[401]),/* "policyConstraints" */
1791&(nid_objs[406]),/* "prime-field" */
1792&(nid_objs[409]),/* "prime192v1" */
1793&(nid_objs[410]),/* "prime192v2" */
1794&(nid_objs[411]),/* "prime192v3" */
1795&(nid_objs[412]),/* "prime239v1" */
1796&(nid_objs[413]),/* "prime239v2" */
1797&(nid_objs[414]),/* "prime239v3" */
1798&(nid_objs[415]),/* "prime256v1" */
1799&(nid_objs[385]),/* "private" */
429&(nid_objs[84]),/* "privateKeyUsagePeriod" */ 1800&(nid_objs[84]),/* "privateKeyUsagePeriod" */
1801&(nid_objs[435]),/* "pss" */
1802&(nid_objs[286]),/* "qcStatements" */
1803&(nid_objs[457]),/* "qualityLabelledData" */
1804&(nid_objs[450]),/* "rFC822localPart" */
1805&(nid_objs[400]),/* "role" */
1806&(nid_objs[448]),/* "room" */
1807&(nid_objs[463]),/* "roomNumber" */
1808&(nid_objs[ 6]),/* "rsaEncryption" */
1809&(nid_objs[377]),/* "rsaSignature" */
1810&(nid_objs[ 1]),/* "rsadsi" */
1811&(nid_objs[482]),/* "sOARecord" */
1812&(nid_objs[155]),/* "safeContentsBag" */
1813&(nid_objs[291]),/* "sbqp-autonomousSysNum" */
1814&(nid_objs[290]),/* "sbqp-ipAddrBlock" */
1815&(nid_objs[292]),/* "sbqp-routerIdentifier" */
1816&(nid_objs[159]),/* "sdsiCertificate" */
1817&(nid_objs[154]),/* "secretBag" */
1818&(nid_objs[474]),/* "secretary" */
1819&(nid_objs[386]),/* "security" */
1820&(nid_objs[394]),/* "selected-attribute-types" */
1821&(nid_objs[105]),/* "serialNumber" */
1822&(nid_objs[129]),/* "serverAuth" */
1823&(nid_objs[371]),/* "serviceLocator" */
1824&(nid_objs[52]),/* "signingTime" */
1825&(nid_objs[454]),/* "simpleSecurityObject" */
1826&(nid_objs[496]),/* "singleLevelQuality" */
1827&(nid_objs[387]),/* "snmpv2" */
430&(nid_objs[85]),/* "subjectAltName" */ 1828&(nid_objs[85]),/* "subjectAltName" */
1829&(nid_objs[398]),/* "subjectInfoAccess" */
431&(nid_objs[82]),/* "subjectKeyIdentifier" */ 1830&(nid_objs[82]),/* "subjectKeyIdentifier" */
1831&(nid_objs[498]),/* "subtreeMaximumQuality" */
1832&(nid_objs[497]),/* "subtreeMinimumQuality" */
1833&(nid_objs[402]),/* "targetInformation" */
1834&(nid_objs[459]),/* "textEncodedORAddress" */
1835&(nid_objs[293]),/* "textNotice" */
1836&(nid_objs[133]),/* "timeStamping" */
1837&(nid_objs[106]),/* "title" */
1838&(nid_objs[375]),/* "trustRoot" */
1839&(nid_objs[436]),/* "ucl" */
1840&(nid_objs[55]),/* "unstructuredAddress" */
1841&(nid_objs[49]),/* "unstructuredName" */
1842&(nid_objs[465]),/* "userClass" */
1843&(nid_objs[373]),/* "valid" */
1844&(nid_objs[503]),/* "x500UniqueIdentifier" */
1845&(nid_objs[158]),/* "x509Certificate" */
1846&(nid_objs[160]),/* "x509Crl" */
432}; 1847};
433 1848
434static ASN1_OBJECT *ln_objs[NUM_LN]={ 1849static ASN1_OBJECT *ln_objs[NUM_LN]={
1850&(nid_objs[363]),/* "AD Time Stamping" */
1851&(nid_objs[405]),/* "ANSI X9.62" */
1852&(nid_objs[368]),/* "Acceptable OCSP Responses" */
1853&(nid_objs[177]),/* "Authority Information Access" */
1854&(nid_objs[365]),/* "Basic OCSP Response" */
1855&(nid_objs[285]),/* "Biometric Info" */
1856&(nid_objs[179]),/* "CA Issuers" */
1857&(nid_objs[131]),/* "Code Signing" */
1858&(nid_objs[382]),/* "Directory" */
1859&(nid_objs[392]),/* "Domain" */
1860&(nid_objs[132]),/* "E-mail Protection" */
1861&(nid_objs[389]),/* "Enterprises" */
1862&(nid_objs[384]),/* "Experimental" */
1863&(nid_objs[372]),/* "Extended OCSP Status" */
1864&(nid_objs[172]),/* "Extension Request" */
1865&(nid_objs[432]),/* "Hold Instruction Call Issuer" */
1866&(nid_objs[430]),/* "Hold Instruction Code" */
1867&(nid_objs[431]),/* "Hold Instruction None" */
1868&(nid_objs[433]),/* "Hold Instruction Reject" */
1869&(nid_objs[294]),/* "IPSec End System" */
1870&(nid_objs[295]),/* "IPSec Tunnel" */
1871&(nid_objs[296]),/* "IPSec User" */
1872&(nid_objs[182]),/* "ISO Member Body" */
1873&(nid_objs[183]),/* "ISO US Member Body" */
1874&(nid_objs[142]),/* "Invalidity Date" */
1875&(nid_objs[504]),/* "MIME MHS" */
1876&(nid_objs[388]),/* "Mail" */
1877&(nid_objs[383]),/* "Management" */
1878&(nid_objs[417]),/* "Microsoft CSP Name" */
1879&(nid_objs[135]),/* "Microsoft Commercial Code Signing" */
1880&(nid_objs[138]),/* "Microsoft Encrypted File System" */
1881&(nid_objs[171]),/* "Microsoft Extension Request" */
1882&(nid_objs[134]),/* "Microsoft Individual Code Signing" */
1883&(nid_objs[137]),/* "Microsoft Server Gated Crypto" */
1884&(nid_objs[136]),/* "Microsoft Trust List Signing" */
435&(nid_objs[72]),/* "Netscape Base Url" */ 1885&(nid_objs[72]),/* "Netscape Base Url" */
436&(nid_objs[76]),/* "Netscape CA Policy Url" */ 1886&(nid_objs[76]),/* "Netscape CA Policy Url" */
437&(nid_objs[74]),/* "Netscape CA Revocation Url" */ 1887&(nid_objs[74]),/* "Netscape CA Revocation Url" */
@@ -444,31 +1894,102 @@ static ASN1_OBJECT *ln_objs[NUM_LN]={
444&(nid_objs[75]),/* "Netscape Renewal Url" */ 1894&(nid_objs[75]),/* "Netscape Renewal Url" */
445&(nid_objs[73]),/* "Netscape Revocation Url" */ 1895&(nid_objs[73]),/* "Netscape Revocation Url" */
446&(nid_objs[77]),/* "Netscape SSL Server Name" */ 1896&(nid_objs[77]),/* "Netscape SSL Server Name" */
447&(nid_objs[11]),/* "X500" */ 1897&(nid_objs[139]),/* "Netscape Server Gated Crypto" */
1898&(nid_objs[178]),/* "OCSP" */
1899&(nid_objs[370]),/* "OCSP Archive Cutoff" */
1900&(nid_objs[367]),/* "OCSP CRL ID" */
1901&(nid_objs[369]),/* "OCSP No Check" */
1902&(nid_objs[366]),/* "OCSP Nonce" */
1903&(nid_objs[371]),/* "OCSP Service Locator" */
1904&(nid_objs[180]),/* "OCSP Signing" */
1905&(nid_objs[161]),/* "PBES2" */
1906&(nid_objs[69]),/* "PBKDF2" */
1907&(nid_objs[162]),/* "PBMAC1" */
1908&(nid_objs[127]),/* "PKIX" */
1909&(nid_objs[164]),/* "Policy Qualifier CPS" */
1910&(nid_objs[165]),/* "Policy Qualifier User Notice" */
1911&(nid_objs[385]),/* "Private" */
1912&(nid_objs[ 1]),/* "RSA Data Security, Inc." */
1913&(nid_objs[ 2]),/* "RSA Data Security, Inc. PKCS" */
1914&(nid_objs[188]),/* "S/MIME" */
1915&(nid_objs[167]),/* "S/MIME Capabilities" */
1916&(nid_objs[387]),/* "SNMPv2" */
1917&(nid_objs[386]),/* "Security" */
1918&(nid_objs[394]),/* "Selected Attribute Types" */
1919&(nid_objs[143]),/* "Strong Extranet ID" */
1920&(nid_objs[398]),/* "Subject Information Access" */
1921&(nid_objs[130]),/* "TLS Web Client Authentication" */
1922&(nid_objs[129]),/* "TLS Web Server Authentication" */
1923&(nid_objs[133]),/* "Time Stamping" */
1924&(nid_objs[375]),/* "Trust Root" */
448&(nid_objs[12]),/* "X509" */ 1925&(nid_objs[12]),/* "X509" */
1926&(nid_objs[402]),/* "X509v3 AC Targeting" */
449&(nid_objs[90]),/* "X509v3 Authority Key Identifier" */ 1927&(nid_objs[90]),/* "X509v3 Authority Key Identifier" */
450&(nid_objs[87]),/* "X509v3 Basic Constraints" */ 1928&(nid_objs[87]),/* "X509v3 Basic Constraints" */
451&(nid_objs[103]),/* "X509v3 CRL Distribution Points" */ 1929&(nid_objs[103]),/* "X509v3 CRL Distribution Points" */
452&(nid_objs[88]),/* "X509v3 CRL Number" */ 1930&(nid_objs[88]),/* "X509v3 CRL Number" */
1931&(nid_objs[141]),/* "X509v3 CRL Reason Code" */
453&(nid_objs[89]),/* "X509v3 Certificate Policies" */ 1932&(nid_objs[89]),/* "X509v3 Certificate Policies" */
1933&(nid_objs[140]),/* "X509v3 Delta CRL Indicator" */
1934&(nid_objs[126]),/* "X509v3 Extended Key Usage" */
454&(nid_objs[86]),/* "X509v3 Issuer Alternative Name" */ 1935&(nid_objs[86]),/* "X509v3 Issuer Alternative Name" */
455&(nid_objs[83]),/* "X509v3 Key Usage" */ 1936&(nid_objs[83]),/* "X509v3 Key Usage" */
1937&(nid_objs[403]),/* "X509v3 No Revocation Available" */
1938&(nid_objs[401]),/* "X509v3 Policy Constraints" */
456&(nid_objs[84]),/* "X509v3 Private Key Usage Period" */ 1939&(nid_objs[84]),/* "X509v3 Private Key Usage Period" */
457&(nid_objs[85]),/* "X509v3 Subject Alternative Name" */ 1940&(nid_objs[85]),/* "X509v3 Subject Alternative Name" */
458&(nid_objs[82]),/* "X509v3 Subject Key Identifier" */ 1941&(nid_objs[82]),/* "X509v3 Subject Key Identifier" */
1942&(nid_objs[184]),/* "X9.57" */
1943&(nid_objs[185]),/* "X9.57 CM ?" */
1944&(nid_objs[478]),/* "aRecord" */
1945&(nid_objs[289]),/* "aaControls" */
1946&(nid_objs[287]),/* "ac-auditEntity" */
1947&(nid_objs[397]),/* "ac-proxying" */
1948&(nid_objs[288]),/* "ac-targeting" */
1949&(nid_objs[446]),/* "account" */
1950&(nid_objs[364]),/* "ad dvcs" */
1951&(nid_objs[419]),/* "aes-128-cbc" */
1952&(nid_objs[421]),/* "aes-128-cfb" */
1953&(nid_objs[418]),/* "aes-128-ecb" */
1954&(nid_objs[420]),/* "aes-128-ofb" */
1955&(nid_objs[423]),/* "aes-192-cbc" */
1956&(nid_objs[425]),/* "aes-192-cfb" */
1957&(nid_objs[422]),/* "aes-192-ecb" */
1958&(nid_objs[424]),/* "aes-192-ofb" */
1959&(nid_objs[427]),/* "aes-256-cbc" */
1960&(nid_objs[429]),/* "aes-256-cfb" */
1961&(nid_objs[426]),/* "aes-256-ecb" */
1962&(nid_objs[428]),/* "aes-256-ofb" */
1963&(nid_objs[376]),/* "algorithm" */
1964&(nid_objs[484]),/* "associatedDomain" */
1965&(nid_objs[485]),/* "associatedName" */
1966&(nid_objs[501]),/* "audio" */
459&(nid_objs[91]),/* "bf-cbc" */ 1967&(nid_objs[91]),/* "bf-cbc" */
460&(nid_objs[93]),/* "bf-cfb" */ 1968&(nid_objs[93]),/* "bf-cfb" */
461&(nid_objs[92]),/* "bf-ecb" */ 1969&(nid_objs[92]),/* "bf-ecb" */
462&(nid_objs[94]),/* "bf-ofb" */ 1970&(nid_objs[94]),/* "bf-ofb" */
1971&(nid_objs[494]),/* "buildingName" */
1972&(nid_objs[483]),/* "cNAMERecord" */
1973&(nid_objs[443]),/* "caseIgnoreIA5StringSyntax" */
463&(nid_objs[108]),/* "cast5-cbc" */ 1974&(nid_objs[108]),/* "cast5-cbc" */
464&(nid_objs[110]),/* "cast5-cfb" */ 1975&(nid_objs[110]),/* "cast5-cfb" */
465&(nid_objs[109]),/* "cast5-ecb" */ 1976&(nid_objs[109]),/* "cast5-ecb" */
466&(nid_objs[111]),/* "cast5-ofb" */ 1977&(nid_objs[111]),/* "cast5-ofb" */
1978&(nid_objs[404]),/* "ccitt" */
1979&(nid_objs[152]),/* "certBag" */
467&(nid_objs[54]),/* "challengePassword" */ 1980&(nid_objs[54]),/* "challengePassword" */
1981&(nid_objs[407]),/* "characteristic-two-field" */
1982&(nid_objs[395]),/* "clearance" */
468&(nid_objs[13]),/* "commonName" */ 1983&(nid_objs[13]),/* "commonName" */
469&(nid_objs[50]),/* "contentType" */ 1984&(nid_objs[50]),/* "contentType" */
470&(nid_objs[53]),/* "countersignature" */ 1985&(nid_objs[53]),/* "countersignature" */
471&(nid_objs[14]),/* "countryName" */ 1986&(nid_objs[14]),/* "countryName" */
1987&(nid_objs[153]),/* "crlBag" */
1988&(nid_objs[500]),/* "dITRedirect" */
1989&(nid_objs[451]),/* "dNSDomain" */
1990&(nid_objs[495]),/* "dSAQuality" */
1991&(nid_objs[434]),/* "data" */
1992&(nid_objs[390]),/* "dcObject" */
472&(nid_objs[31]),/* "des-cbc" */ 1993&(nid_objs[31]),/* "des-cbc" */
473&(nid_objs[30]),/* "des-cfb" */ 1994&(nid_objs[30]),/* "des-cfb" */
474&(nid_objs[29]),/* "des-ecb" */ 1995&(nid_objs[29]),/* "des-ecb" */
@@ -484,38 +2005,277 @@ static ASN1_OBJECT *ln_objs[NUM_LN]={
484&(nid_objs[107]),/* "description" */ 2005&(nid_objs[107]),/* "description" */
485&(nid_objs[80]),/* "desx-cbc" */ 2006&(nid_objs[80]),/* "desx-cbc" */
486&(nid_objs[28]),/* "dhKeyAgreement" */ 2007&(nid_objs[28]),/* "dhKeyAgreement" */
2008&(nid_objs[11]),/* "directory services (X.500)" */
2009&(nid_objs[378]),/* "directory services - algorithms" */
2010&(nid_objs[174]),/* "dnQualifier" */
2011&(nid_objs[447]),/* "document" */
2012&(nid_objs[471]),/* "documentAuthor" */
2013&(nid_objs[468]),/* "documentIdentifier" */
2014&(nid_objs[472]),/* "documentLocation" */
2015&(nid_objs[502]),/* "documentPublisher" */
2016&(nid_objs[449]),/* "documentSeries" */
2017&(nid_objs[469]),/* "documentTitle" */
2018&(nid_objs[470]),/* "documentVersion" */
2019&(nid_objs[380]),/* "dod" */
2020&(nid_objs[391]),/* "domainComponent" */
2021&(nid_objs[452]),/* "domainRelatedObject" */
487&(nid_objs[116]),/* "dsaEncryption" */ 2022&(nid_objs[116]),/* "dsaEncryption" */
488&(nid_objs[67]),/* "dsaEncryption-old" */ 2023&(nid_objs[67]),/* "dsaEncryption-old" */
489&(nid_objs[66]),/* "dsaWithSHA" */ 2024&(nid_objs[66]),/* "dsaWithSHA" */
490&(nid_objs[113]),/* "dsaWithSHA1" */ 2025&(nid_objs[113]),/* "dsaWithSHA1" */
491&(nid_objs[70]),/* "dsaWithSHA1" */ 2026&(nid_objs[70]),/* "dsaWithSHA1-old" */
2027&(nid_objs[297]),/* "dvcs" */
2028&(nid_objs[416]),/* "ecdsa-with-SHA1" */
492&(nid_objs[48]),/* "emailAddress" */ 2029&(nid_objs[48]),/* "emailAddress" */
493&(nid_objs[56]),/* "extendedCertificateAttributes" */ 2030&(nid_objs[56]),/* "extendedCertificateAttributes" */
2031&(nid_objs[462]),/* "favouriteDrink" */
2032&(nid_objs[453]),/* "friendlyCountry" */
2033&(nid_objs[490]),/* "friendlyCountryName" */
2034&(nid_objs[156]),/* "friendlyName" */
2035&(nid_objs[509]),/* "generationQualifier" */
494&(nid_objs[99]),/* "givenName" */ 2036&(nid_objs[99]),/* "givenName" */
2037&(nid_objs[163]),/* "hmacWithSHA1" */
2038&(nid_objs[486]),/* "homePostalAddress" */
2039&(nid_objs[473]),/* "homeTelephoneNumber" */
2040&(nid_objs[466]),/* "host" */
2041&(nid_objs[442]),/* "iA5StringSyntax" */
2042&(nid_objs[381]),/* "iana" */
2043&(nid_objs[266]),/* "id-aca" */
2044&(nid_objs[355]),/* "id-aca-accessIdentity" */
2045&(nid_objs[354]),/* "id-aca-authenticationInfo" */
2046&(nid_objs[356]),/* "id-aca-chargingIdentity" */
2047&(nid_objs[399]),/* "id-aca-encAttrs" */
2048&(nid_objs[357]),/* "id-aca-group" */
2049&(nid_objs[358]),/* "id-aca-role" */
2050&(nid_objs[176]),/* "id-ad" */
2051&(nid_objs[262]),/* "id-alg" */
2052&(nid_objs[323]),/* "id-alg-des40" */
2053&(nid_objs[326]),/* "id-alg-dh-pop" */
2054&(nid_objs[325]),/* "id-alg-dh-sig-hmac-sha1" */
2055&(nid_objs[324]),/* "id-alg-noSignature" */
2056&(nid_objs[268]),/* "id-cct" */
2057&(nid_objs[361]),/* "id-cct-PKIData" */
2058&(nid_objs[362]),/* "id-cct-PKIResponse" */
2059&(nid_objs[360]),/* "id-cct-crs" */
2060&(nid_objs[81]),/* "id-ce" */
2061&(nid_objs[263]),/* "id-cmc" */
2062&(nid_objs[334]),/* "id-cmc-addExtensions" */
2063&(nid_objs[346]),/* "id-cmc-confirmCertAcceptance" */
2064&(nid_objs[330]),/* "id-cmc-dataReturn" */
2065&(nid_objs[336]),/* "id-cmc-decryptedPOP" */
2066&(nid_objs[335]),/* "id-cmc-encryptedPOP" */
2067&(nid_objs[339]),/* "id-cmc-getCRL" */
2068&(nid_objs[338]),/* "id-cmc-getCert" */
2069&(nid_objs[328]),/* "id-cmc-identification" */
2070&(nid_objs[329]),/* "id-cmc-identityProof" */
2071&(nid_objs[337]),/* "id-cmc-lraPOPWitness" */
2072&(nid_objs[344]),/* "id-cmc-popLinkRandom" */
2073&(nid_objs[345]),/* "id-cmc-popLinkWitness" */
2074&(nid_objs[343]),/* "id-cmc-queryPending" */
2075&(nid_objs[333]),/* "id-cmc-recipientNonce" */
2076&(nid_objs[341]),/* "id-cmc-regInfo" */
2077&(nid_objs[342]),/* "id-cmc-responseInfo" */
2078&(nid_objs[340]),/* "id-cmc-revokeRequest" */
2079&(nid_objs[332]),/* "id-cmc-senderNonce" */
2080&(nid_objs[327]),/* "id-cmc-statusInfo" */
2081&(nid_objs[331]),/* "id-cmc-transactionId" */
2082&(nid_objs[408]),/* "id-ecPublicKey" */
2083&(nid_objs[508]),/* "id-hex-multipart-message" */
2084&(nid_objs[507]),/* "id-hex-partial-message" */
2085&(nid_objs[260]),/* "id-it" */
2086&(nid_objs[302]),/* "id-it-caKeyUpdateInfo" */
2087&(nid_objs[298]),/* "id-it-caProtEncCert" */
2088&(nid_objs[311]),/* "id-it-confirmWaitTime" */
2089&(nid_objs[303]),/* "id-it-currentCRL" */
2090&(nid_objs[300]),/* "id-it-encKeyPairTypes" */
2091&(nid_objs[310]),/* "id-it-implicitConfirm" */
2092&(nid_objs[308]),/* "id-it-keyPairParamRep" */
2093&(nid_objs[307]),/* "id-it-keyPairParamReq" */
2094&(nid_objs[312]),/* "id-it-origPKIMessage" */
2095&(nid_objs[301]),/* "id-it-preferredSymmAlg" */
2096&(nid_objs[309]),/* "id-it-revPassphrase" */
2097&(nid_objs[299]),/* "id-it-signKeyPairTypes" */
2098&(nid_objs[305]),/* "id-it-subscriptionRequest" */
2099&(nid_objs[306]),/* "id-it-subscriptionResponse" */
2100&(nid_objs[304]),/* "id-it-unsupportedOIDs" */
2101&(nid_objs[128]),/* "id-kp" */
2102&(nid_objs[280]),/* "id-mod-attribute-cert" */
2103&(nid_objs[274]),/* "id-mod-cmc" */
2104&(nid_objs[277]),/* "id-mod-cmp" */
2105&(nid_objs[284]),/* "id-mod-cmp2000" */
2106&(nid_objs[273]),/* "id-mod-crmf" */
2107&(nid_objs[283]),/* "id-mod-dvcs" */
2108&(nid_objs[275]),/* "id-mod-kea-profile-88" */
2109&(nid_objs[276]),/* "id-mod-kea-profile-93" */
2110&(nid_objs[282]),/* "id-mod-ocsp" */
2111&(nid_objs[278]),/* "id-mod-qualified-cert-88" */
2112&(nid_objs[279]),/* "id-mod-qualified-cert-93" */
2113&(nid_objs[281]),/* "id-mod-timestamp-protocol" */
2114&(nid_objs[264]),/* "id-on" */
2115&(nid_objs[347]),/* "id-on-personalData" */
2116&(nid_objs[265]),/* "id-pda" */
2117&(nid_objs[352]),/* "id-pda-countryOfCitizenship" */
2118&(nid_objs[353]),/* "id-pda-countryOfResidence" */
2119&(nid_objs[348]),/* "id-pda-dateOfBirth" */
2120&(nid_objs[351]),/* "id-pda-gender" */
2121&(nid_objs[349]),/* "id-pda-placeOfBirth" */
2122&(nid_objs[175]),/* "id-pe" */
2123&(nid_objs[261]),/* "id-pkip" */
2124&(nid_objs[258]),/* "id-pkix-mod" */
2125&(nid_objs[269]),/* "id-pkix1-explicit-88" */
2126&(nid_objs[271]),/* "id-pkix1-explicit-93" */
2127&(nid_objs[270]),/* "id-pkix1-implicit-88" */
2128&(nid_objs[272]),/* "id-pkix1-implicit-93" */
2129&(nid_objs[267]),/* "id-qcs" */
2130&(nid_objs[359]),/* "id-qcs-pkixQCSyntax-v1" */
2131&(nid_objs[259]),/* "id-qt" */
2132&(nid_objs[313]),/* "id-regCtrl" */
2133&(nid_objs[316]),/* "id-regCtrl-authenticator" */
2134&(nid_objs[319]),/* "id-regCtrl-oldCertID" */
2135&(nid_objs[318]),/* "id-regCtrl-pkiArchiveOptions" */
2136&(nid_objs[317]),/* "id-regCtrl-pkiPublicationInfo" */
2137&(nid_objs[320]),/* "id-regCtrl-protocolEncrKey" */
2138&(nid_objs[315]),/* "id-regCtrl-regToken" */
2139&(nid_objs[314]),/* "id-regInfo" */
2140&(nid_objs[322]),/* "id-regInfo-certReq" */
2141&(nid_objs[321]),/* "id-regInfo-utf8Pairs" */
2142&(nid_objs[191]),/* "id-smime-aa" */
2143&(nid_objs[215]),/* "id-smime-aa-contentHint" */
2144&(nid_objs[218]),/* "id-smime-aa-contentIdentifier" */
2145&(nid_objs[221]),/* "id-smime-aa-contentReference" */
2146&(nid_objs[240]),/* "id-smime-aa-dvcs-dvc" */
2147&(nid_objs[217]),/* "id-smime-aa-encapContentType" */
2148&(nid_objs[222]),/* "id-smime-aa-encrypKeyPref" */
2149&(nid_objs[220]),/* "id-smime-aa-equivalentLabels" */
2150&(nid_objs[232]),/* "id-smime-aa-ets-CertificateRefs" */
2151&(nid_objs[233]),/* "id-smime-aa-ets-RevocationRefs" */
2152&(nid_objs[238]),/* "id-smime-aa-ets-archiveTimeStamp" */
2153&(nid_objs[237]),/* "id-smime-aa-ets-certCRLTimestamp" */
2154&(nid_objs[234]),/* "id-smime-aa-ets-certValues" */
2155&(nid_objs[227]),/* "id-smime-aa-ets-commitmentType" */
2156&(nid_objs[231]),/* "id-smime-aa-ets-contentTimestamp" */
2157&(nid_objs[236]),/* "id-smime-aa-ets-escTimeStamp" */
2158&(nid_objs[230]),/* "id-smime-aa-ets-otherSigCert" */
2159&(nid_objs[235]),/* "id-smime-aa-ets-revocationValues" */
2160&(nid_objs[226]),/* "id-smime-aa-ets-sigPolicyId" */
2161&(nid_objs[229]),/* "id-smime-aa-ets-signerAttr" */
2162&(nid_objs[228]),/* "id-smime-aa-ets-signerLocation" */
2163&(nid_objs[219]),/* "id-smime-aa-macValue" */
2164&(nid_objs[214]),/* "id-smime-aa-mlExpandHistory" */
2165&(nid_objs[216]),/* "id-smime-aa-msgSigDigest" */
2166&(nid_objs[212]),/* "id-smime-aa-receiptRequest" */
2167&(nid_objs[213]),/* "id-smime-aa-securityLabel" */
2168&(nid_objs[239]),/* "id-smime-aa-signatureType" */
2169&(nid_objs[223]),/* "id-smime-aa-signingCertificate" */
2170&(nid_objs[224]),/* "id-smime-aa-smimeEncryptCerts" */
2171&(nid_objs[225]),/* "id-smime-aa-timeStampToken" */
2172&(nid_objs[192]),/* "id-smime-alg" */
2173&(nid_objs[243]),/* "id-smime-alg-3DESwrap" */
2174&(nid_objs[246]),/* "id-smime-alg-CMS3DESwrap" */
2175&(nid_objs[247]),/* "id-smime-alg-CMSRC2wrap" */
2176&(nid_objs[245]),/* "id-smime-alg-ESDH" */
2177&(nid_objs[241]),/* "id-smime-alg-ESDHwith3DES" */
2178&(nid_objs[242]),/* "id-smime-alg-ESDHwithRC2" */
2179&(nid_objs[244]),/* "id-smime-alg-RC2wrap" */
2180&(nid_objs[193]),/* "id-smime-cd" */
2181&(nid_objs[248]),/* "id-smime-cd-ldap" */
2182&(nid_objs[190]),/* "id-smime-ct" */
2183&(nid_objs[210]),/* "id-smime-ct-DVCSRequestData" */
2184&(nid_objs[211]),/* "id-smime-ct-DVCSResponseData" */
2185&(nid_objs[208]),/* "id-smime-ct-TDTInfo" */
2186&(nid_objs[207]),/* "id-smime-ct-TSTInfo" */
2187&(nid_objs[205]),/* "id-smime-ct-authData" */
2188&(nid_objs[209]),/* "id-smime-ct-contentInfo" */
2189&(nid_objs[206]),/* "id-smime-ct-publishCert" */
2190&(nid_objs[204]),/* "id-smime-ct-receipt" */
2191&(nid_objs[195]),/* "id-smime-cti" */
2192&(nid_objs[255]),/* "id-smime-cti-ets-proofOfApproval" */
2193&(nid_objs[256]),/* "id-smime-cti-ets-proofOfCreation" */
2194&(nid_objs[253]),/* "id-smime-cti-ets-proofOfDelivery" */
2195&(nid_objs[251]),/* "id-smime-cti-ets-proofOfOrigin" */
2196&(nid_objs[252]),/* "id-smime-cti-ets-proofOfReceipt" */
2197&(nid_objs[254]),/* "id-smime-cti-ets-proofOfSender" */
2198&(nid_objs[189]),/* "id-smime-mod" */
2199&(nid_objs[196]),/* "id-smime-mod-cms" */
2200&(nid_objs[197]),/* "id-smime-mod-ess" */
2201&(nid_objs[202]),/* "id-smime-mod-ets-eSigPolicy-88" */
2202&(nid_objs[203]),/* "id-smime-mod-ets-eSigPolicy-97" */
2203&(nid_objs[200]),/* "id-smime-mod-ets-eSignature-88" */
2204&(nid_objs[201]),/* "id-smime-mod-ets-eSignature-97" */
2205&(nid_objs[199]),/* "id-smime-mod-msg-v3" */
2206&(nid_objs[198]),/* "id-smime-mod-oid" */
2207&(nid_objs[194]),/* "id-smime-spq" */
2208&(nid_objs[250]),/* "id-smime-spq-ets-sqt-unotice" */
2209&(nid_objs[249]),/* "id-smime-spq-ets-sqt-uri" */
495&(nid_objs[34]),/* "idea-cbc" */ 2210&(nid_objs[34]),/* "idea-cbc" */
496&(nid_objs[35]),/* "idea-cfb" */ 2211&(nid_objs[35]),/* "idea-cfb" */
497&(nid_objs[36]),/* "idea-ecb" */ 2212&(nid_objs[36]),/* "idea-ecb" */
498&(nid_objs[46]),/* "idea-ofb" */ 2213&(nid_objs[46]),/* "idea-ofb" */
2214&(nid_objs[461]),/* "info" */
499&(nid_objs[101]),/* "initials" */ 2215&(nid_objs[101]),/* "initials" */
2216&(nid_objs[181]),/* "iso" */
2217&(nid_objs[492]),/* "janetMailbox" */
2218&(nid_objs[393]),/* "joint-iso-ccitt" */
2219&(nid_objs[150]),/* "keyBag" */
2220&(nid_objs[477]),/* "lastModifiedBy" */
2221&(nid_objs[476]),/* "lastModifiedTime" */
2222&(nid_objs[157]),/* "localKeyID" */
500&(nid_objs[15]),/* "localityName" */ 2223&(nid_objs[15]),/* "localityName" */
2224&(nid_objs[480]),/* "mXRecord" */
2225&(nid_objs[493]),/* "mailPreferenceOption" */
2226&(nid_objs[467]),/* "manager" */
501&(nid_objs[ 3]),/* "md2" */ 2227&(nid_objs[ 3]),/* "md2" */
502&(nid_objs[ 7]),/* "md2WithRSAEncryption" */ 2228&(nid_objs[ 7]),/* "md2WithRSAEncryption" */
2229&(nid_objs[257]),/* "md4" */
2230&(nid_objs[396]),/* "md4WithRSAEncryption" */
503&(nid_objs[ 4]),/* "md5" */ 2231&(nid_objs[ 4]),/* "md5" */
504&(nid_objs[114]),/* "md5-sha1" */ 2232&(nid_objs[114]),/* "md5-sha1" */
505&(nid_objs[104]),/* "md5WithRSA" */ 2233&(nid_objs[104]),/* "md5WithRSA" */
506&(nid_objs[ 8]),/* "md5WithRSAEncryption" */ 2234&(nid_objs[ 8]),/* "md5WithRSAEncryption" */
507&(nid_objs[95]),/* "mdc2" */ 2235&(nid_objs[95]),/* "mdc2" */
508&(nid_objs[96]),/* "mdc2withRSA" */ 2236&(nid_objs[96]),/* "mdc2WithRSA" */
509&(nid_objs[51]),/* "messageDigest" */ 2237&(nid_objs[51]),/* "messageDigest" */
2238&(nid_objs[506]),/* "mime-mhs-bodies" */
2239&(nid_objs[505]),/* "mime-mhs-headings" */
2240&(nid_objs[488]),/* "mobileTelephoneNumber" */
2241&(nid_objs[481]),/* "nSRecord" */
2242&(nid_objs[173]),/* "name" */
2243&(nid_objs[379]),/* "org" */
510&(nid_objs[17]),/* "organizationName" */ 2244&(nid_objs[17]),/* "organizationName" */
2245&(nid_objs[491]),/* "organizationalStatus" */
511&(nid_objs[18]),/* "organizationalUnitName" */ 2246&(nid_objs[18]),/* "organizationalUnitName" */
2247&(nid_objs[475]),/* "otherMailbox" */
2248&(nid_objs[489]),/* "pagerTelephoneNumber" */
2249&(nid_objs[374]),/* "path" */
512&(nid_objs[ 9]),/* "pbeWithMD2AndDES-CBC" */ 2250&(nid_objs[ 9]),/* "pbeWithMD2AndDES-CBC" */
2251&(nid_objs[168]),/* "pbeWithMD2AndRC2-CBC" */
513&(nid_objs[112]),/* "pbeWithMD5AndCast5CBC" */ 2252&(nid_objs[112]),/* "pbeWithMD5AndCast5CBC" */
514&(nid_objs[10]),/* "pbeWithMD5AndDES-CBC" */ 2253&(nid_objs[10]),/* "pbeWithMD5AndDES-CBC" */
2254&(nid_objs[169]),/* "pbeWithMD5AndRC2-CBC" */
2255&(nid_objs[148]),/* "pbeWithSHA1And128BitRC2-CBC" */
2256&(nid_objs[144]),/* "pbeWithSHA1And128BitRC4" */
2257&(nid_objs[147]),/* "pbeWithSHA1And2-KeyTripleDES-CBC" */
2258&(nid_objs[146]),/* "pbeWithSHA1And3-KeyTripleDES-CBC" */
2259&(nid_objs[149]),/* "pbeWithSHA1And40BitRC2-CBC" */
2260&(nid_objs[145]),/* "pbeWithSHA1And40BitRC4" */
2261&(nid_objs[170]),/* "pbeWithSHA1AndDES-CBC" */
515&(nid_objs[68]),/* "pbeWithSHA1AndRC2-CBC" */ 2262&(nid_objs[68]),/* "pbeWithSHA1AndRC2-CBC" */
516&(nid_objs[69]),/* "pbeWithSHA1AndRC4" */ 2263&(nid_objs[499]),/* "personalSignature" */
517&(nid_objs[ 2]),/* "pkcs" */ 2264&(nid_objs[487]),/* "personalTitle" */
2265&(nid_objs[464]),/* "photo" */
2266&(nid_objs[437]),/* "pilot" */
2267&(nid_objs[439]),/* "pilotAttributeSyntax" */
2268&(nid_objs[438]),/* "pilotAttributeType" */
2269&(nid_objs[479]),/* "pilotAttributeType27" */
2270&(nid_objs[456]),/* "pilotDSA" */
2271&(nid_objs[441]),/* "pilotGroups" */
2272&(nid_objs[444]),/* "pilotObject" */
2273&(nid_objs[440]),/* "pilotObjectClass" */
2274&(nid_objs[455]),/* "pilotOrganization" */
2275&(nid_objs[445]),/* "pilotPerson" */
2276&(nid_objs[186]),/* "pkcs1" */
518&(nid_objs[27]),/* "pkcs3" */ 2277&(nid_objs[27]),/* "pkcs3" */
2278&(nid_objs[187]),/* "pkcs5" */
519&(nid_objs[20]),/* "pkcs7" */ 2279&(nid_objs[20]),/* "pkcs7" */
520&(nid_objs[21]),/* "pkcs7-data" */ 2280&(nid_objs[21]),/* "pkcs7-data" */
521&(nid_objs[25]),/* "pkcs7-digestData" */ 2281&(nid_objs[25]),/* "pkcs7-digestData" */
@@ -523,8 +2283,22 @@ static ASN1_OBJECT *ln_objs[NUM_LN]={
523&(nid_objs[23]),/* "pkcs7-envelopedData" */ 2283&(nid_objs[23]),/* "pkcs7-envelopedData" */
524&(nid_objs[24]),/* "pkcs7-signedAndEnvelopedData" */ 2284&(nid_objs[24]),/* "pkcs7-signedAndEnvelopedData" */
525&(nid_objs[22]),/* "pkcs7-signedData" */ 2285&(nid_objs[22]),/* "pkcs7-signedData" */
2286&(nid_objs[151]),/* "pkcs8ShroudedKeyBag" */
526&(nid_objs[47]),/* "pkcs9" */ 2287&(nid_objs[47]),/* "pkcs9" */
2288&(nid_objs[406]),/* "prime-field" */
2289&(nid_objs[409]),/* "prime192v1" */
2290&(nid_objs[410]),/* "prime192v2" */
2291&(nid_objs[411]),/* "prime192v3" */
2292&(nid_objs[412]),/* "prime239v1" */
2293&(nid_objs[413]),/* "prime239v2" */
2294&(nid_objs[414]),/* "prime239v3" */
2295&(nid_objs[415]),/* "prime256v1" */
2296&(nid_objs[435]),/* "pss" */
2297&(nid_objs[286]),/* "qcStatements" */
2298&(nid_objs[457]),/* "qualityLabelledData" */
2299&(nid_objs[450]),/* "rFC822localPart" */
527&(nid_objs[98]),/* "rc2-40-cbc" */ 2300&(nid_objs[98]),/* "rc2-40-cbc" */
2301&(nid_objs[166]),/* "rc2-64-cbc" */
528&(nid_objs[37]),/* "rc2-cbc" */ 2302&(nid_objs[37]),/* "rc2-cbc" */
529&(nid_objs[39]),/* "rc2-cfb" */ 2303&(nid_objs[39]),/* "rc2-cfb" */
530&(nid_objs[38]),/* "rc2-ecb" */ 2304&(nid_objs[38]),/* "rc2-ecb" */
@@ -535,11 +2309,24 @@ static ASN1_OBJECT *ln_objs[NUM_LN]={
535&(nid_objs[122]),/* "rc5-cfb" */ 2309&(nid_objs[122]),/* "rc5-cfb" */
536&(nid_objs[121]),/* "rc5-ecb" */ 2310&(nid_objs[121]),/* "rc5-ecb" */
537&(nid_objs[123]),/* "rc5-ofb" */ 2311&(nid_objs[123]),/* "rc5-ofb" */
2312&(nid_objs[460]),/* "rfc822Mailbox" */
538&(nid_objs[117]),/* "ripemd160" */ 2313&(nid_objs[117]),/* "ripemd160" */
539&(nid_objs[119]),/* "ripemd160WithRSA" */ 2314&(nid_objs[119]),/* "ripemd160WithRSA" */
2315&(nid_objs[400]),/* "role" */
2316&(nid_objs[448]),/* "room" */
2317&(nid_objs[463]),/* "roomNumber" */
540&(nid_objs[19]),/* "rsa" */ 2318&(nid_objs[19]),/* "rsa" */
541&(nid_objs[ 6]),/* "rsaEncryption" */ 2319&(nid_objs[ 6]),/* "rsaEncryption" */
542&(nid_objs[ 1]),/* "rsadsi" */ 2320&(nid_objs[377]),/* "rsaSignature" */
2321&(nid_objs[124]),/* "run length compression" */
2322&(nid_objs[482]),/* "sOARecord" */
2323&(nid_objs[155]),/* "safeContentsBag" */
2324&(nid_objs[291]),/* "sbqp-autonomousSysNum" */
2325&(nid_objs[290]),/* "sbqp-ipAddrBlock" */
2326&(nid_objs[292]),/* "sbqp-routerIdentifier" */
2327&(nid_objs[159]),/* "sdsiCertificate" */
2328&(nid_objs[154]),/* "secretBag" */
2329&(nid_objs[474]),/* "secretary" */
543&(nid_objs[105]),/* "serialNumber" */ 2330&(nid_objs[105]),/* "serialNumber" */
544&(nid_objs[41]),/* "sha" */ 2331&(nid_objs[41]),/* "sha" */
545&(nid_objs[64]),/* "sha1" */ 2332&(nid_objs[64]),/* "sha1" */
@@ -547,19 +2334,45 @@ static ASN1_OBJECT *ln_objs[NUM_LN]={
547&(nid_objs[65]),/* "sha1WithRSAEncryption" */ 2334&(nid_objs[65]),/* "sha1WithRSAEncryption" */
548&(nid_objs[42]),/* "shaWithRSAEncryption" */ 2335&(nid_objs[42]),/* "shaWithRSAEncryption" */
549&(nid_objs[52]),/* "signingTime" */ 2336&(nid_objs[52]),/* "signingTime" */
2337&(nid_objs[454]),/* "simpleSecurityObject" */
2338&(nid_objs[496]),/* "singleLevelQuality" */
550&(nid_objs[16]),/* "stateOrProvinceName" */ 2339&(nid_objs[16]),/* "stateOrProvinceName" */
2340&(nid_objs[498]),/* "subtreeMaximumQuality" */
2341&(nid_objs[497]),/* "subtreeMinimumQuality" */
551&(nid_objs[100]),/* "surname" */ 2342&(nid_objs[100]),/* "surname" */
2343&(nid_objs[459]),/* "textEncodedORAddress" */
2344&(nid_objs[293]),/* "textNotice" */
552&(nid_objs[106]),/* "title" */ 2345&(nid_objs[106]),/* "title" */
2346&(nid_objs[436]),/* "ucl" */
553&(nid_objs[ 0]),/* "undefined" */ 2347&(nid_objs[ 0]),/* "undefined" */
554&(nid_objs[102]),/* "uniqueIdentifier" */
555&(nid_objs[55]),/* "unstructuredAddress" */ 2348&(nid_objs[55]),/* "unstructuredAddress" */
556&(nid_objs[49]),/* "unstructuredName" */ 2349&(nid_objs[49]),/* "unstructuredName" */
2350&(nid_objs[465]),/* "userClass" */
2351&(nid_objs[458]),/* "userId" */
2352&(nid_objs[373]),/* "valid" */
2353&(nid_objs[503]),/* "x500UniqueIdentifier" */
2354&(nid_objs[158]),/* "x509Certificate" */
2355&(nid_objs[160]),/* "x509Crl" */
2356&(nid_objs[125]),/* "zlib compression" */
557}; 2357};
558 2358
559static ASN1_OBJECT *obj_objs[NUM_OBJ]={ 2359static ASN1_OBJECT *obj_objs[NUM_OBJ]={
2360&(nid_objs[ 0]),/* OBJ_undef 0 */
2361&(nid_objs[404]),/* OBJ_ccitt 0 */
2362&(nid_objs[434]),/* OBJ_data 0 9 */
2363&(nid_objs[181]),/* OBJ_iso 1 */
2364&(nid_objs[182]),/* OBJ_member_body 1 2 */
2365&(nid_objs[379]),/* OBJ_org 1 3 */
2366&(nid_objs[393]),/* OBJ_joint_iso_ccitt 2 */
560&(nid_objs[11]),/* OBJ_X500 2 5 */ 2367&(nid_objs[11]),/* OBJ_X500 2 5 */
2368&(nid_objs[380]),/* OBJ_dod 1 3 6 */
561&(nid_objs[12]),/* OBJ_X509 2 5 4 */ 2369&(nid_objs[12]),/* OBJ_X509 2 5 4 */
562&(nid_objs[81]),/* OBJ_ld_ce 2 5 29 */ 2370&(nid_objs[378]),/* OBJ_X500algorithms 2 5 8 */
2371&(nid_objs[81]),/* OBJ_id_ce 2 5 29 */
2372&(nid_objs[435]),/* OBJ_pss 0 9 2342 */
2373&(nid_objs[183]),/* OBJ_ISO_US 1 2 840 */
2374&(nid_objs[381]),/* OBJ_iana 1 3 6 1 */
2375&(nid_objs[394]),/* OBJ_selected_attribute_types 2 5 1 5 */
563&(nid_objs[13]),/* OBJ_commonName 2 5 4 3 */ 2376&(nid_objs[13]),/* OBJ_commonName 2 5 4 3 */
564&(nid_objs[100]),/* OBJ_surname 2 5 4 4 */ 2377&(nid_objs[100]),/* OBJ_surname 2 5 4 4 */
565&(nid_objs[105]),/* OBJ_serialNumber 2 5 4 5 */ 2378&(nid_objs[105]),/* OBJ_serialNumber 2 5 4 5 */
@@ -570,9 +2383,13 @@ static ASN1_OBJECT *obj_objs[NUM_OBJ]={
570&(nid_objs[18]),/* OBJ_organizationalUnitName 2 5 4 11 */ 2383&(nid_objs[18]),/* OBJ_organizationalUnitName 2 5 4 11 */
571&(nid_objs[106]),/* OBJ_title 2 5 4 12 */ 2384&(nid_objs[106]),/* OBJ_title 2 5 4 12 */
572&(nid_objs[107]),/* OBJ_description 2 5 4 13 */ 2385&(nid_objs[107]),/* OBJ_description 2 5 4 13 */
2386&(nid_objs[173]),/* OBJ_name 2 5 4 41 */
573&(nid_objs[99]),/* OBJ_givenName 2 5 4 42 */ 2387&(nid_objs[99]),/* OBJ_givenName 2 5 4 42 */
574&(nid_objs[101]),/* OBJ_initials 2 5 4 43 */ 2388&(nid_objs[101]),/* OBJ_initials 2 5 4 43 */
575&(nid_objs[102]),/* OBJ_uniqueIdentifier 2 5 4 45 */ 2389&(nid_objs[509]),/* OBJ_generationQualifier 2 5 4 44 */
2390&(nid_objs[503]),/* OBJ_x500UniqueIdentifier 2 5 4 45 */
2391&(nid_objs[174]),/* OBJ_dnQualifier 2 5 4 46 */
2392&(nid_objs[400]),/* OBJ_role 2 5 4 72 */
576&(nid_objs[82]),/* OBJ_subject_key_identifier 2 5 29 14 */ 2393&(nid_objs[82]),/* OBJ_subject_key_identifier 2 5 29 14 */
577&(nid_objs[83]),/* OBJ_key_usage 2 5 29 15 */ 2394&(nid_objs[83]),/* OBJ_key_usage 2 5 29 15 */
578&(nid_objs[84]),/* OBJ_private_key_usage_period 2 5 29 16 */ 2395&(nid_objs[84]),/* OBJ_private_key_usage_period 2 5 29 16 */
@@ -580,54 +2397,230 @@ static ASN1_OBJECT *obj_objs[NUM_OBJ]={
580&(nid_objs[86]),/* OBJ_issuer_alt_name 2 5 29 18 */ 2397&(nid_objs[86]),/* OBJ_issuer_alt_name 2 5 29 18 */
581&(nid_objs[87]),/* OBJ_basic_constraints 2 5 29 19 */ 2398&(nid_objs[87]),/* OBJ_basic_constraints 2 5 29 19 */
582&(nid_objs[88]),/* OBJ_crl_number 2 5 29 20 */ 2399&(nid_objs[88]),/* OBJ_crl_number 2 5 29 20 */
2400&(nid_objs[141]),/* OBJ_crl_reason 2 5 29 21 */
2401&(nid_objs[430]),/* OBJ_hold_instruction_code 2 5 29 23 */
2402&(nid_objs[142]),/* OBJ_invalidity_date 2 5 29 24 */
2403&(nid_objs[140]),/* OBJ_delta_crl 2 5 29 27 */
583&(nid_objs[103]),/* OBJ_crl_distribution_points 2 5 29 31 */ 2404&(nid_objs[103]),/* OBJ_crl_distribution_points 2 5 29 31 */
584&(nid_objs[89]),/* OBJ_certificate_policies 2 5 29 32 */ 2405&(nid_objs[89]),/* OBJ_certificate_policies 2 5 29 32 */
585&(nid_objs[90]),/* OBJ_authority_key_identifier 2 5 29 35 */ 2406&(nid_objs[90]),/* OBJ_authority_key_identifier 2 5 29 35 */
2407&(nid_objs[401]),/* OBJ_policy_constraints 2 5 29 36 */
2408&(nid_objs[126]),/* OBJ_ext_key_usage 2 5 29 37 */
2409&(nid_objs[402]),/* OBJ_target_information 2 5 29 55 */
2410&(nid_objs[403]),/* OBJ_no_rev_avail 2 5 29 56 */
2411&(nid_objs[382]),/* OBJ_Directory 1 3 6 1 1 */
2412&(nid_objs[383]),/* OBJ_Management 1 3 6 1 2 */
2413&(nid_objs[384]),/* OBJ_Experimental 1 3 6 1 3 */
2414&(nid_objs[385]),/* OBJ_Private 1 3 6 1 4 */
2415&(nid_objs[386]),/* OBJ_Security 1 3 6 1 5 */
2416&(nid_objs[387]),/* OBJ_SNMPv2 1 3 6 1 6 */
2417&(nid_objs[388]),/* OBJ_Mail 1 3 6 1 7 */
2418&(nid_objs[376]),/* OBJ_algorithm 1 3 14 3 2 */
2419&(nid_objs[395]),/* OBJ_clearance 2 5 1 5 55 */
586&(nid_objs[19]),/* OBJ_rsa 2 5 8 1 1 */ 2420&(nid_objs[19]),/* OBJ_rsa 2 5 8 1 1 */
587&(nid_objs[96]),/* OBJ_mdc2WithRSA 2 5 8 3 100 */ 2421&(nid_objs[96]),/* OBJ_mdc2WithRSA 2 5 8 3 100 */
588&(nid_objs[95]),/* OBJ_mdc2 2 5 8 3 101 */ 2422&(nid_objs[95]),/* OBJ_mdc2 2 5 8 3 101 */
2423&(nid_objs[184]),/* OBJ_X9_57 1 2 840 10040 */
2424&(nid_objs[405]),/* OBJ_ansi_X9_62 1 2 840 10045 */
2425&(nid_objs[389]),/* OBJ_Enterprises 1 3 6 1 4 1 */
2426&(nid_objs[504]),/* OBJ_mime_mhs 1 3 6 1 7 1 */
589&(nid_objs[104]),/* OBJ_md5WithRSA 1 3 14 3 2 3 */ 2427&(nid_objs[104]),/* OBJ_md5WithRSA 1 3 14 3 2 3 */
590&(nid_objs[29]),/* OBJ_des_ecb 1 3 14 3 2 6 */ 2428&(nid_objs[29]),/* OBJ_des_ecb 1 3 14 3 2 6 */
591&(nid_objs[31]),/* OBJ_des_cbc 1 3 14 3 2 7 */ 2429&(nid_objs[31]),/* OBJ_des_cbc 1 3 14 3 2 7 */
592&(nid_objs[45]),/* OBJ_des_ofb64 1 3 14 3 2 8 */ 2430&(nid_objs[45]),/* OBJ_des_ofb64 1 3 14 3 2 8 */
593&(nid_objs[30]),/* OBJ_des_cfb64 1 3 14 3 2 9 */ 2431&(nid_objs[30]),/* OBJ_des_cfb64 1 3 14 3 2 9 */
2432&(nid_objs[377]),/* OBJ_rsaSignature 1 3 14 3 2 11 */
594&(nid_objs[67]),/* OBJ_dsa_2 1 3 14 3 2 12 */ 2433&(nid_objs[67]),/* OBJ_dsa_2 1 3 14 3 2 12 */
595&(nid_objs[66]),/* OBJ_dsaWithSHA 1 3 14 3 2 13 */ 2434&(nid_objs[66]),/* OBJ_dsaWithSHA 1 3 14 3 2 13 */
596&(nid_objs[42]),/* OBJ_shaWithRSAEncryption 1 3 14 3 2 15 */ 2435&(nid_objs[42]),/* OBJ_shaWithRSAEncryption 1 3 14 3 2 15 */
597&(nid_objs[32]),/* OBJ_des_ede 1 3 14 3 2 17 */ 2436&(nid_objs[32]),/* OBJ_des_ede_ecb 1 3 14 3 2 17 */
598&(nid_objs[41]),/* OBJ_sha 1 3 14 3 2 18 */ 2437&(nid_objs[41]),/* OBJ_sha 1 3 14 3 2 18 */
599&(nid_objs[64]),/* OBJ_sha1 1 3 14 3 2 26 */ 2438&(nid_objs[64]),/* OBJ_sha1 1 3 14 3 2 26 */
600&(nid_objs[70]),/* OBJ_dsaWithSHA1_2 1 3 14 3 2 27 */ 2439&(nid_objs[70]),/* OBJ_dsaWithSHA1_2 1 3 14 3 2 27 */
601&(nid_objs[115]),/* OBJ_sha1WithRSA 1 3 14 3 2 29 */ 2440&(nid_objs[115]),/* OBJ_sha1WithRSA 1 3 14 3 2 29 */
602&(nid_objs[117]),/* OBJ_ripemd160 1 3 36 3 2 1 */ 2441&(nid_objs[117]),/* OBJ_ripemd160 1 3 36 3 2 1 */
2442&(nid_objs[143]),/* OBJ_sxnet 1 3 101 1 4 1 */
2443&(nid_objs[124]),/* OBJ_rle_compression 1 1 1 1 666 1 */
2444&(nid_objs[125]),/* OBJ_zlib_compression 1 1 1 1 666 2 */
603&(nid_objs[ 1]),/* OBJ_rsadsi 1 2 840 113549 */ 2445&(nid_objs[ 1]),/* OBJ_rsadsi 1 2 840 113549 */
2446&(nid_objs[185]),/* OBJ_X9cm 1 2 840 10040 4 */
2447&(nid_objs[127]),/* OBJ_id_pkix 1 3 6 1 5 5 7 */
2448&(nid_objs[505]),/* OBJ_mime_mhs_headings 1 3 6 1 7 1 1 */
2449&(nid_objs[506]),/* OBJ_mime_mhs_bodies 1 3 6 1 7 1 2 */
604&(nid_objs[119]),/* OBJ_ripemd160WithRSA 1 3 36 3 3 1 2 */ 2450&(nid_objs[119]),/* OBJ_ripemd160WithRSA 1 3 36 3 3 1 2 */
2451&(nid_objs[436]),/* OBJ_ucl 0 9 2342 19200300 */
605&(nid_objs[ 2]),/* OBJ_pkcs 1 2 840 113549 1 */ 2452&(nid_objs[ 2]),/* OBJ_pkcs 1 2 840 113549 1 */
2453&(nid_objs[431]),/* OBJ_hold_instruction_none 1 2 840 10040 2 1 */
2454&(nid_objs[432]),/* OBJ_hold_instruction_call_issuer 1 2 840 10040 2 2 */
2455&(nid_objs[433]),/* OBJ_hold_instruction_reject 1 2 840 10040 2 3 */
606&(nid_objs[116]),/* OBJ_dsa 1 2 840 10040 4 1 */ 2456&(nid_objs[116]),/* OBJ_dsa 1 2 840 10040 4 1 */
607&(nid_objs[113]),/* OBJ_dsaWithSHA1 1 2 840 10040 4 3 */ 2457&(nid_objs[113]),/* OBJ_dsaWithSHA1 1 2 840 10040 4 3 */
2458&(nid_objs[406]),/* OBJ_X9_62_prime_field 1 2 840 10045 1 1 */
2459&(nid_objs[407]),/* OBJ_X9_62_characteristic_two_field 1 2 840 10045 1 2 */
2460&(nid_objs[408]),/* OBJ_X9_62_id_ecPublicKey 1 2 840 10045 2 1 */
2461&(nid_objs[416]),/* OBJ_ecdsa_with_SHA1 1 2 840 10045 4 1 */
2462&(nid_objs[258]),/* OBJ_id_pkix_mod 1 3 6 1 5 5 7 0 */
2463&(nid_objs[175]),/* OBJ_id_pe 1 3 6 1 5 5 7 1 */
2464&(nid_objs[259]),/* OBJ_id_qt 1 3 6 1 5 5 7 2 */
2465&(nid_objs[128]),/* OBJ_id_kp 1 3 6 1 5 5 7 3 */
2466&(nid_objs[260]),/* OBJ_id_it 1 3 6 1 5 5 7 4 */
2467&(nid_objs[261]),/* OBJ_id_pkip 1 3 6 1 5 5 7 5 */
2468&(nid_objs[262]),/* OBJ_id_alg 1 3 6 1 5 5 7 6 */
2469&(nid_objs[263]),/* OBJ_id_cmc 1 3 6 1 5 5 7 7 */
2470&(nid_objs[264]),/* OBJ_id_on 1 3 6 1 5 5 7 8 */
2471&(nid_objs[265]),/* OBJ_id_pda 1 3 6 1 5 5 7 9 */
2472&(nid_objs[266]),/* OBJ_id_aca 1 3 6 1 5 5 7 10 */
2473&(nid_objs[267]),/* OBJ_id_qcs 1 3 6 1 5 5 7 11 */
2474&(nid_objs[268]),/* OBJ_id_cct 1 3 6 1 5 5 7 12 */
2475&(nid_objs[176]),/* OBJ_id_ad 1 3 6 1 5 5 7 48 */
2476&(nid_objs[507]),/* OBJ_id_hex_partial_message 1 3 6 1 7 1 1 1 */
2477&(nid_objs[508]),/* OBJ_id_hex_multipart_message 1 3 6 1 7 1 1 2 */
608&(nid_objs[57]),/* OBJ_netscape 2 16 840 1 113730 */ 2478&(nid_objs[57]),/* OBJ_netscape 2 16 840 1 113730 */
2479&(nid_objs[437]),/* OBJ_pilot 0 9 2342 19200300 100 */
2480&(nid_objs[186]),/* OBJ_pkcs1 1 2 840 113549 1 1 */
609&(nid_objs[27]),/* OBJ_pkcs3 1 2 840 113549 1 3 */ 2481&(nid_objs[27]),/* OBJ_pkcs3 1 2 840 113549 1 3 */
2482&(nid_objs[187]),/* OBJ_pkcs5 1 2 840 113549 1 5 */
610&(nid_objs[20]),/* OBJ_pkcs7 1 2 840 113549 1 7 */ 2483&(nid_objs[20]),/* OBJ_pkcs7 1 2 840 113549 1 7 */
611&(nid_objs[47]),/* OBJ_pkcs9 1 2 840 113549 1 9 */ 2484&(nid_objs[47]),/* OBJ_pkcs9 1 2 840 113549 1 9 */
612&(nid_objs[ 3]),/* OBJ_md2 1 2 840 113549 2 2 */ 2485&(nid_objs[ 3]),/* OBJ_md2 1 2 840 113549 2 2 */
2486&(nid_objs[257]),/* OBJ_md4 1 2 840 113549 2 4 */
613&(nid_objs[ 4]),/* OBJ_md5 1 2 840 113549 2 5 */ 2487&(nid_objs[ 4]),/* OBJ_md5 1 2 840 113549 2 5 */
2488&(nid_objs[163]),/* OBJ_hmacWithSHA1 1 2 840 113549 2 7 */
614&(nid_objs[37]),/* OBJ_rc2_cbc 1 2 840 113549 3 2 */ 2489&(nid_objs[37]),/* OBJ_rc2_cbc 1 2 840 113549 3 2 */
615&(nid_objs[ 5]),/* OBJ_rc4 1 2 840 113549 3 4 */ 2490&(nid_objs[ 5]),/* OBJ_rc4 1 2 840 113549 3 4 */
616&(nid_objs[44]),/* OBJ_des_ede3_cbc 1 2 840 113549 3 7 */ 2491&(nid_objs[44]),/* OBJ_des_ede3_cbc 1 2 840 113549 3 7 */
617&(nid_objs[120]),/* OBJ_rc5_cbc 1 2 840 113549 3 8 */ 2492&(nid_objs[120]),/* OBJ_rc5_cbc 1 2 840 113549 3 8 */
2493&(nid_objs[409]),/* OBJ_X9_62_prime192v1 1 2 840 10045 3 1 1 */
2494&(nid_objs[410]),/* OBJ_X9_62_prime192v2 1 2 840 10045 3 1 2 */
2495&(nid_objs[411]),/* OBJ_X9_62_prime192v3 1 2 840 10045 3 1 3 */
2496&(nid_objs[412]),/* OBJ_X9_62_prime239v1 1 2 840 10045 3 1 4 */
2497&(nid_objs[413]),/* OBJ_X9_62_prime239v2 1 2 840 10045 3 1 5 */
2498&(nid_objs[414]),/* OBJ_X9_62_prime239v3 1 2 840 10045 3 1 6 */
2499&(nid_objs[415]),/* OBJ_X9_62_prime256v1 1 2 840 10045 3 1 7 */
2500&(nid_objs[269]),/* OBJ_id_pkix1_explicit_88 1 3 6 1 5 5 7 0 1 */
2501&(nid_objs[270]),/* OBJ_id_pkix1_implicit_88 1 3 6 1 5 5 7 0 2 */
2502&(nid_objs[271]),/* OBJ_id_pkix1_explicit_93 1 3 6 1 5 5 7 0 3 */
2503&(nid_objs[272]),/* OBJ_id_pkix1_implicit_93 1 3 6 1 5 5 7 0 4 */
2504&(nid_objs[273]),/* OBJ_id_mod_crmf 1 3 6 1 5 5 7 0 5 */
2505&(nid_objs[274]),/* OBJ_id_mod_cmc 1 3 6 1 5 5 7 0 6 */
2506&(nid_objs[275]),/* OBJ_id_mod_kea_profile_88 1 3 6 1 5 5 7 0 7 */
2507&(nid_objs[276]),/* OBJ_id_mod_kea_profile_93 1 3 6 1 5 5 7 0 8 */
2508&(nid_objs[277]),/* OBJ_id_mod_cmp 1 3 6 1 5 5 7 0 9 */
2509&(nid_objs[278]),/* OBJ_id_mod_qualified_cert_88 1 3 6 1 5 5 7 0 10 */
2510&(nid_objs[279]),/* OBJ_id_mod_qualified_cert_93 1 3 6 1 5 5 7 0 11 */
2511&(nid_objs[280]),/* OBJ_id_mod_attribute_cert 1 3 6 1 5 5 7 0 12 */
2512&(nid_objs[281]),/* OBJ_id_mod_timestamp_protocol 1 3 6 1 5 5 7 0 13 */
2513&(nid_objs[282]),/* OBJ_id_mod_ocsp 1 3 6 1 5 5 7 0 14 */
2514&(nid_objs[283]),/* OBJ_id_mod_dvcs 1 3 6 1 5 5 7 0 15 */
2515&(nid_objs[284]),/* OBJ_id_mod_cmp2000 1 3 6 1 5 5 7 0 16 */
2516&(nid_objs[177]),/* OBJ_info_access 1 3 6 1 5 5 7 1 1 */
2517&(nid_objs[285]),/* OBJ_biometricInfo 1 3 6 1 5 5 7 1 2 */
2518&(nid_objs[286]),/* OBJ_qcStatements 1 3 6 1 5 5 7 1 3 */
2519&(nid_objs[287]),/* OBJ_ac_auditEntity 1 3 6 1 5 5 7 1 4 */
2520&(nid_objs[288]),/* OBJ_ac_targeting 1 3 6 1 5 5 7 1 5 */
2521&(nid_objs[289]),/* OBJ_aaControls 1 3 6 1 5 5 7 1 6 */
2522&(nid_objs[290]),/* OBJ_sbqp_ipAddrBlock 1 3 6 1 5 5 7 1 7 */
2523&(nid_objs[291]),/* OBJ_sbqp_autonomousSysNum 1 3 6 1 5 5 7 1 8 */
2524&(nid_objs[292]),/* OBJ_sbqp_routerIdentifier 1 3 6 1 5 5 7 1 9 */
2525&(nid_objs[397]),/* OBJ_ac_proxying 1 3 6 1 5 5 7 1 10 */
2526&(nid_objs[398]),/* OBJ_sinfo_access 1 3 6 1 5 5 7 1 11 */
2527&(nid_objs[164]),/* OBJ_id_qt_cps 1 3 6 1 5 5 7 2 1 */
2528&(nid_objs[165]),/* OBJ_id_qt_unotice 1 3 6 1 5 5 7 2 2 */
2529&(nid_objs[293]),/* OBJ_textNotice 1 3 6 1 5 5 7 2 3 */
2530&(nid_objs[129]),/* OBJ_server_auth 1 3 6 1 5 5 7 3 1 */
2531&(nid_objs[130]),/* OBJ_client_auth 1 3 6 1 5 5 7 3 2 */
2532&(nid_objs[131]),/* OBJ_code_sign 1 3 6 1 5 5 7 3 3 */
2533&(nid_objs[132]),/* OBJ_email_protect 1 3 6 1 5 5 7 3 4 */
2534&(nid_objs[294]),/* OBJ_ipsecEndSystem 1 3 6 1 5 5 7 3 5 */
2535&(nid_objs[295]),/* OBJ_ipsecTunnel 1 3 6 1 5 5 7 3 6 */
2536&(nid_objs[296]),/* OBJ_ipsecUser 1 3 6 1 5 5 7 3 7 */
2537&(nid_objs[133]),/* OBJ_time_stamp 1 3 6 1 5 5 7 3 8 */
2538&(nid_objs[180]),/* OBJ_OCSP_sign 1 3 6 1 5 5 7 3 9 */
2539&(nid_objs[297]),/* OBJ_dvcs 1 3 6 1 5 5 7 3 10 */
2540&(nid_objs[298]),/* OBJ_id_it_caProtEncCert 1 3 6 1 5 5 7 4 1 */
2541&(nid_objs[299]),/* OBJ_id_it_signKeyPairTypes 1 3 6 1 5 5 7 4 2 */
2542&(nid_objs[300]),/* OBJ_id_it_encKeyPairTypes 1 3 6 1 5 5 7 4 3 */
2543&(nid_objs[301]),/* OBJ_id_it_preferredSymmAlg 1 3 6 1 5 5 7 4 4 */
2544&(nid_objs[302]),/* OBJ_id_it_caKeyUpdateInfo 1 3 6 1 5 5 7 4 5 */
2545&(nid_objs[303]),/* OBJ_id_it_currentCRL 1 3 6 1 5 5 7 4 6 */
2546&(nid_objs[304]),/* OBJ_id_it_unsupportedOIDs 1 3 6 1 5 5 7 4 7 */
2547&(nid_objs[305]),/* OBJ_id_it_subscriptionRequest 1 3 6 1 5 5 7 4 8 */
2548&(nid_objs[306]),/* OBJ_id_it_subscriptionResponse 1 3 6 1 5 5 7 4 9 */
2549&(nid_objs[307]),/* OBJ_id_it_keyPairParamReq 1 3 6 1 5 5 7 4 10 */
2550&(nid_objs[308]),/* OBJ_id_it_keyPairParamRep 1 3 6 1 5 5 7 4 11 */
2551&(nid_objs[309]),/* OBJ_id_it_revPassphrase 1 3 6 1 5 5 7 4 12 */
2552&(nid_objs[310]),/* OBJ_id_it_implicitConfirm 1 3 6 1 5 5 7 4 13 */
2553&(nid_objs[311]),/* OBJ_id_it_confirmWaitTime 1 3 6 1 5 5 7 4 14 */
2554&(nid_objs[312]),/* OBJ_id_it_origPKIMessage 1 3 6 1 5 5 7 4 15 */
2555&(nid_objs[313]),/* OBJ_id_regCtrl 1 3 6 1 5 5 7 5 1 */
2556&(nid_objs[314]),/* OBJ_id_regInfo 1 3 6 1 5 5 7 5 2 */
2557&(nid_objs[323]),/* OBJ_id_alg_des40 1 3 6 1 5 5 7 6 1 */
2558&(nid_objs[324]),/* OBJ_id_alg_noSignature 1 3 6 1 5 5 7 6 2 */
2559&(nid_objs[325]),/* OBJ_id_alg_dh_sig_hmac_sha1 1 3 6 1 5 5 7 6 3 */
2560&(nid_objs[326]),/* OBJ_id_alg_dh_pop 1 3 6 1 5 5 7 6 4 */
2561&(nid_objs[327]),/* OBJ_id_cmc_statusInfo 1 3 6 1 5 5 7 7 1 */
2562&(nid_objs[328]),/* OBJ_id_cmc_identification 1 3 6 1 5 5 7 7 2 */
2563&(nid_objs[329]),/* OBJ_id_cmc_identityProof 1 3 6 1 5 5 7 7 3 */
2564&(nid_objs[330]),/* OBJ_id_cmc_dataReturn 1 3 6 1 5 5 7 7 4 */
2565&(nid_objs[331]),/* OBJ_id_cmc_transactionId 1 3 6 1 5 5 7 7 5 */
2566&(nid_objs[332]),/* OBJ_id_cmc_senderNonce 1 3 6 1 5 5 7 7 6 */
2567&(nid_objs[333]),/* OBJ_id_cmc_recipientNonce 1 3 6 1 5 5 7 7 7 */
2568&(nid_objs[334]),/* OBJ_id_cmc_addExtensions 1 3 6 1 5 5 7 7 8 */
2569&(nid_objs[335]),/* OBJ_id_cmc_encryptedPOP 1 3 6 1 5 5 7 7 9 */
2570&(nid_objs[336]),/* OBJ_id_cmc_decryptedPOP 1 3 6 1 5 5 7 7 10 */
2571&(nid_objs[337]),/* OBJ_id_cmc_lraPOPWitness 1 3 6 1 5 5 7 7 11 */
2572&(nid_objs[338]),/* OBJ_id_cmc_getCert 1 3 6 1 5 5 7 7 15 */
2573&(nid_objs[339]),/* OBJ_id_cmc_getCRL 1 3 6 1 5 5 7 7 16 */
2574&(nid_objs[340]),/* OBJ_id_cmc_revokeRequest 1 3 6 1 5 5 7 7 17 */
2575&(nid_objs[341]),/* OBJ_id_cmc_regInfo 1 3 6 1 5 5 7 7 18 */
2576&(nid_objs[342]),/* OBJ_id_cmc_responseInfo 1 3 6 1 5 5 7 7 19 */
2577&(nid_objs[343]),/* OBJ_id_cmc_queryPending 1 3 6 1 5 5 7 7 21 */
2578&(nid_objs[344]),/* OBJ_id_cmc_popLinkRandom 1 3 6 1 5 5 7 7 22 */
2579&(nid_objs[345]),/* OBJ_id_cmc_popLinkWitness 1 3 6 1 5 5 7 7 23 */
2580&(nid_objs[346]),/* OBJ_id_cmc_confirmCertAcceptance 1 3 6 1 5 5 7 7 24 */
2581&(nid_objs[347]),/* OBJ_id_on_personalData 1 3 6 1 5 5 7 8 1 */
2582&(nid_objs[348]),/* OBJ_id_pda_dateOfBirth 1 3 6 1 5 5 7 9 1 */
2583&(nid_objs[349]),/* OBJ_id_pda_placeOfBirth 1 3 6 1 5 5 7 9 2 */
2584&(nid_objs[351]),/* OBJ_id_pda_gender 1 3 6 1 5 5 7 9 3 */
2585&(nid_objs[352]),/* OBJ_id_pda_countryOfCitizenship 1 3 6 1 5 5 7 9 4 */
2586&(nid_objs[353]),/* OBJ_id_pda_countryOfResidence 1 3 6 1 5 5 7 9 5 */
2587&(nid_objs[354]),/* OBJ_id_aca_authenticationInfo 1 3 6 1 5 5 7 10 1 */
2588&(nid_objs[355]),/* OBJ_id_aca_accessIdentity 1 3 6 1 5 5 7 10 2 */
2589&(nid_objs[356]),/* OBJ_id_aca_chargingIdentity 1 3 6 1 5 5 7 10 3 */
2590&(nid_objs[357]),/* OBJ_id_aca_group 1 3 6 1 5 5 7 10 4 */
2591&(nid_objs[358]),/* OBJ_id_aca_role 1 3 6 1 5 5 7 10 5 */
2592&(nid_objs[399]),/* OBJ_id_aca_encAttrs 1 3 6 1 5 5 7 10 6 */
2593&(nid_objs[359]),/* OBJ_id_qcs_pkixQCSyntax_v1 1 3 6 1 5 5 7 11 1 */
2594&(nid_objs[360]),/* OBJ_id_cct_crs 1 3 6 1 5 5 7 12 1 */
2595&(nid_objs[361]),/* OBJ_id_cct_PKIData 1 3 6 1 5 5 7 12 2 */
2596&(nid_objs[362]),/* OBJ_id_cct_PKIResponse 1 3 6 1 5 5 7 12 3 */
2597&(nid_objs[178]),/* OBJ_ad_OCSP 1 3 6 1 5 5 7 48 1 */
2598&(nid_objs[179]),/* OBJ_ad_ca_issuers 1 3 6 1 5 5 7 48 2 */
2599&(nid_objs[363]),/* OBJ_ad_timeStamping 1 3 6 1 5 5 7 48 3 */
2600&(nid_objs[364]),/* OBJ_ad_dvcs 1 3 6 1 5 5 7 48 4 */
618&(nid_objs[58]),/* OBJ_netscape_cert_extension 2 16 840 1 113730 1 */ 2601&(nid_objs[58]),/* OBJ_netscape_cert_extension 2 16 840 1 113730 1 */
619&(nid_objs[59]),/* OBJ_netscape_data_type 2 16 840 1 113730 2 */ 2602&(nid_objs[59]),/* OBJ_netscape_data_type 2 16 840 1 113730 2 */
2603&(nid_objs[438]),/* OBJ_pilotAttributeType 0 9 2342 19200300 100 1 */
2604&(nid_objs[439]),/* OBJ_pilotAttributeSyntax 0 9 2342 19200300 100 3 */
2605&(nid_objs[440]),/* OBJ_pilotObjectClass 0 9 2342 19200300 100 4 */
2606&(nid_objs[441]),/* OBJ_pilotGroups 0 9 2342 19200300 100 10 */
620&(nid_objs[108]),/* OBJ_cast5_cbc 1 2 840 113533 7 66 10 */ 2607&(nid_objs[108]),/* OBJ_cast5_cbc 1 2 840 113533 7 66 10 */
621&(nid_objs[112]),/* OBJ_pbeWithMD5AndCast5_CBC 1 2 840 113533 7 66 12 */ 2608&(nid_objs[112]),/* OBJ_pbeWithMD5AndCast5_CBC 1 2 840 113533 7 66 12 */
622&(nid_objs[ 6]),/* OBJ_rsaEncryption 1 2 840 113549 1 1 1 */ 2609&(nid_objs[ 6]),/* OBJ_rsaEncryption 1 2 840 113549 1 1 1 */
623&(nid_objs[ 7]),/* OBJ_md2WithRSAEncryption 1 2 840 113549 1 1 2 */ 2610&(nid_objs[ 7]),/* OBJ_md2WithRSAEncryption 1 2 840 113549 1 1 2 */
2611&(nid_objs[396]),/* OBJ_md4WithRSAEncryption 1 2 840 113549 1 1 3 */
624&(nid_objs[ 8]),/* OBJ_md5WithRSAEncryption 1 2 840 113549 1 1 4 */ 2612&(nid_objs[ 8]),/* OBJ_md5WithRSAEncryption 1 2 840 113549 1 1 4 */
625&(nid_objs[65]),/* OBJ_sha1WithRSAEncryption 1 2 840 113549 1 1 5 */ 2613&(nid_objs[65]),/* OBJ_sha1WithRSAEncryption 1 2 840 113549 1 1 5 */
626&(nid_objs[28]),/* OBJ_dhKeyAgreement 1 2 840 113549 1 3 1 */ 2614&(nid_objs[28]),/* OBJ_dhKeyAgreement 1 2 840 113549 1 3 1 */
627&(nid_objs[ 9]),/* OBJ_pbeWithMD2AndDES_CBC 1 2 840 113549 1 5 1 */ 2615&(nid_objs[ 9]),/* OBJ_pbeWithMD2AndDES_CBC 1 2 840 113549 1 5 1 */
628&(nid_objs[10]),/* OBJ_pbeWithMD5AndDES_CBC 1 2 840 113549 1 5 3 */ 2616&(nid_objs[10]),/* OBJ_pbeWithMD5AndDES_CBC 1 2 840 113549 1 5 3 */
629&(nid_objs[68]),/* OBJ_pbeWithSHA1AndRC2_CBC 1 2 840 113549 1 5 11 */ 2617&(nid_objs[168]),/* OBJ_pbeWithMD2AndRC2_CBC 1 2 840 113549 1 5 4 */
630&(nid_objs[69]),/* OBJ_pbeWithSHA1AndRC4 1 2 840 113549 1 5 12 */ 2618&(nid_objs[169]),/* OBJ_pbeWithMD5AndRC2_CBC 1 2 840 113549 1 5 6 */
2619&(nid_objs[170]),/* OBJ_pbeWithSHA1AndDES_CBC 1 2 840 113549 1 5 10 */
2620&(nid_objs[68]),/* OBJ_pbeWithSHA1AndRC2_CBC 1 2 840 113549 1 5 11 */
2621&(nid_objs[69]),/* OBJ_id_pbkdf2 1 2 840 113549 1 5 12 */
2622&(nid_objs[161]),/* OBJ_pbes2 1 2 840 113549 1 5 13 */
2623&(nid_objs[162]),/* OBJ_pbmac1 1 2 840 113549 1 5 14 */
631&(nid_objs[21]),/* OBJ_pkcs7_data 1 2 840 113549 1 7 1 */ 2624&(nid_objs[21]),/* OBJ_pkcs7_data 1 2 840 113549 1 7 1 */
632&(nid_objs[22]),/* OBJ_pkcs7_signed 1 2 840 113549 1 7 2 */ 2625&(nid_objs[22]),/* OBJ_pkcs7_signed 1 2 840 113549 1 7 2 */
633&(nid_objs[23]),/* OBJ_pkcs7_enveloped 1 2 840 113549 1 7 3 */ 2626&(nid_objs[23]),/* OBJ_pkcs7_enveloped 1 2 840 113549 1 7 3 */
@@ -643,6 +2636,45 @@ static ASN1_OBJECT *obj_objs[NUM_OBJ]={
643&(nid_objs[54]),/* OBJ_pkcs9_challengePassword 1 2 840 113549 1 9 7 */ 2636&(nid_objs[54]),/* OBJ_pkcs9_challengePassword 1 2 840 113549 1 9 7 */
644&(nid_objs[55]),/* OBJ_pkcs9_unstructuredAddress 1 2 840 113549 1 9 8 */ 2637&(nid_objs[55]),/* OBJ_pkcs9_unstructuredAddress 1 2 840 113549 1 9 8 */
645&(nid_objs[56]),/* OBJ_pkcs9_extCertAttributes 1 2 840 113549 1 9 9 */ 2638&(nid_objs[56]),/* OBJ_pkcs9_extCertAttributes 1 2 840 113549 1 9 9 */
2639&(nid_objs[172]),/* OBJ_ext_req 1 2 840 113549 1 9 14 */
2640&(nid_objs[167]),/* OBJ_SMIMECapabilities 1 2 840 113549 1 9 15 */
2641&(nid_objs[188]),/* OBJ_SMIME 1 2 840 113549 1 9 16 */
2642&(nid_objs[156]),/* OBJ_friendlyName 1 2 840 113549 1 9 20 */
2643&(nid_objs[157]),/* OBJ_localKeyID 1 2 840 113549 1 9 21 */
2644&(nid_objs[417]),/* OBJ_ms_csp_name 1 3 6 1 4 1 311 17 1 */
2645&(nid_objs[390]),/* OBJ_dcObject 1 3 6 1 4 1 1466 344 */
2646&(nid_objs[91]),/* OBJ_bf_cbc 1 3 6 1 4 1 3029 1 2 */
2647&(nid_objs[315]),/* OBJ_id_regCtrl_regToken 1 3 6 1 5 5 7 5 1 1 */
2648&(nid_objs[316]),/* OBJ_id_regCtrl_authenticator 1 3 6 1 5 5 7 5 1 2 */
2649&(nid_objs[317]),/* OBJ_id_regCtrl_pkiPublicationInfo 1 3 6 1 5 5 7 5 1 3 */
2650&(nid_objs[318]),/* OBJ_id_regCtrl_pkiArchiveOptions 1 3 6 1 5 5 7 5 1 4 */
2651&(nid_objs[319]),/* OBJ_id_regCtrl_oldCertID 1 3 6 1 5 5 7 5 1 5 */
2652&(nid_objs[320]),/* OBJ_id_regCtrl_protocolEncrKey 1 3 6 1 5 5 7 5 1 6 */
2653&(nid_objs[321]),/* OBJ_id_regInfo_utf8Pairs 1 3 6 1 5 5 7 5 2 1 */
2654&(nid_objs[322]),/* OBJ_id_regInfo_certReq 1 3 6 1 5 5 7 5 2 2 */
2655&(nid_objs[365]),/* OBJ_id_pkix_OCSP_basic 1 3 6 1 5 5 7 48 1 1 */
2656&(nid_objs[366]),/* OBJ_id_pkix_OCSP_Nonce 1 3 6 1 5 5 7 48 1 2 */
2657&(nid_objs[367]),/* OBJ_id_pkix_OCSP_CrlID 1 3 6 1 5 5 7 48 1 3 */
2658&(nid_objs[368]),/* OBJ_id_pkix_OCSP_acceptableResponses 1 3 6 1 5 5 7 48 1 4 */
2659&(nid_objs[369]),/* OBJ_id_pkix_OCSP_noCheck 1 3 6 1 5 5 7 48 1 5 */
2660&(nid_objs[370]),/* OBJ_id_pkix_OCSP_archiveCutoff 1 3 6 1 5 5 7 48 1 6 */
2661&(nid_objs[371]),/* OBJ_id_pkix_OCSP_serviceLocator 1 3 6 1 5 5 7 48 1 7 */
2662&(nid_objs[372]),/* OBJ_id_pkix_OCSP_extendedStatus 1 3 6 1 5 5 7 48 1 8 */
2663&(nid_objs[373]),/* OBJ_id_pkix_OCSP_valid 1 3 6 1 5 5 7 48 1 9 */
2664&(nid_objs[374]),/* OBJ_id_pkix_OCSP_path 1 3 6 1 5 5 7 48 1 10 */
2665&(nid_objs[375]),/* OBJ_id_pkix_OCSP_trustRoot 1 3 6 1 5 5 7 48 1 11 */
2666&(nid_objs[418]),/* OBJ_aes_128_ecb 2 16 840 1 101 3 4 1 1 */
2667&(nid_objs[419]),/* OBJ_aes_128_cbc 2 16 840 1 101 3 4 1 2 */
2668&(nid_objs[420]),/* OBJ_aes_128_ofb128 2 16 840 1 101 3 4 1 3 */
2669&(nid_objs[421]),/* OBJ_aes_128_cfb128 2 16 840 1 101 3 4 1 4 */
2670&(nid_objs[422]),/* OBJ_aes_192_ecb 2 16 840 1 101 3 4 1 21 */
2671&(nid_objs[423]),/* OBJ_aes_192_cbc 2 16 840 1 101 3 4 1 22 */
2672&(nid_objs[424]),/* OBJ_aes_192_ofb128 2 16 840 1 101 3 4 1 23 */
2673&(nid_objs[425]),/* OBJ_aes_192_cfb128 2 16 840 1 101 3 4 1 24 */
2674&(nid_objs[426]),/* OBJ_aes_256_ecb 2 16 840 1 101 3 4 1 41 */
2675&(nid_objs[427]),/* OBJ_aes_256_cbc 2 16 840 1 101 3 4 1 42 */
2676&(nid_objs[428]),/* OBJ_aes_256_ofb128 2 16 840 1 101 3 4 1 43 */
2677&(nid_objs[429]),/* OBJ_aes_256_cfb128 2 16 840 1 101 3 4 1 44 */
646&(nid_objs[71]),/* OBJ_netscape_cert_type 2 16 840 1 113730 1 1 */ 2678&(nid_objs[71]),/* OBJ_netscape_cert_type 2 16 840 1 113730 1 1 */
647&(nid_objs[72]),/* OBJ_netscape_base_url 2 16 840 1 113730 1 2 */ 2679&(nid_objs[72]),/* OBJ_netscape_base_url 2 16 840 1 113730 1 2 */
648&(nid_objs[73]),/* OBJ_netscape_revocation_url 2 16 840 1 113730 1 3 */ 2680&(nid_objs[73]),/* OBJ_netscape_revocation_url 2 16 840 1 113730 1 3 */
@@ -652,5 +2684,159 @@ static ASN1_OBJECT *obj_objs[NUM_OBJ]={
652&(nid_objs[77]),/* OBJ_netscape_ssl_server_name 2 16 840 1 113730 1 12 */ 2684&(nid_objs[77]),/* OBJ_netscape_ssl_server_name 2 16 840 1 113730 1 12 */
653&(nid_objs[78]),/* OBJ_netscape_comment 2 16 840 1 113730 1 13 */ 2685&(nid_objs[78]),/* OBJ_netscape_comment 2 16 840 1 113730 1 13 */
654&(nid_objs[79]),/* OBJ_netscape_cert_sequence 2 16 840 1 113730 2 5 */ 2686&(nid_objs[79]),/* OBJ_netscape_cert_sequence 2 16 840 1 113730 2 5 */
2687&(nid_objs[139]),/* OBJ_ns_sgc 2 16 840 1 113730 4 1 */
2688&(nid_objs[458]),/* OBJ_userId 0 9 2342 19200300 100 1 1 */
2689&(nid_objs[459]),/* OBJ_textEncodedORAddress 0 9 2342 19200300 100 1 2 */
2690&(nid_objs[460]),/* OBJ_rfc822Mailbox 0 9 2342 19200300 100 1 3 */
2691&(nid_objs[461]),/* OBJ_info 0 9 2342 19200300 100 1 4 */
2692&(nid_objs[462]),/* OBJ_favouriteDrink 0 9 2342 19200300 100 1 5 */
2693&(nid_objs[463]),/* OBJ_roomNumber 0 9 2342 19200300 100 1 6 */
2694&(nid_objs[464]),/* OBJ_photo 0 9 2342 19200300 100 1 7 */
2695&(nid_objs[465]),/* OBJ_userClass 0 9 2342 19200300 100 1 8 */
2696&(nid_objs[466]),/* OBJ_host 0 9 2342 19200300 100 1 9 */
2697&(nid_objs[467]),/* OBJ_manager 0 9 2342 19200300 100 1 10 */
2698&(nid_objs[468]),/* OBJ_documentIdentifier 0 9 2342 19200300 100 1 11 */
2699&(nid_objs[469]),/* OBJ_documentTitle 0 9 2342 19200300 100 1 12 */
2700&(nid_objs[470]),/* OBJ_documentVersion 0 9 2342 19200300 100 1 13 */
2701&(nid_objs[471]),/* OBJ_documentAuthor 0 9 2342 19200300 100 1 14 */
2702&(nid_objs[472]),/* OBJ_documentLocation 0 9 2342 19200300 100 1 15 */
2703&(nid_objs[473]),/* OBJ_homeTelephoneNumber 0 9 2342 19200300 100 1 20 */
2704&(nid_objs[474]),/* OBJ_secretary 0 9 2342 19200300 100 1 21 */
2705&(nid_objs[475]),/* OBJ_otherMailbox 0 9 2342 19200300 100 1 22 */
2706&(nid_objs[476]),/* OBJ_lastModifiedTime 0 9 2342 19200300 100 1 23 */
2707&(nid_objs[477]),/* OBJ_lastModifiedBy 0 9 2342 19200300 100 1 24 */
2708&(nid_objs[391]),/* OBJ_domainComponent 0 9 2342 19200300 100 1 25 */
2709&(nid_objs[478]),/* OBJ_aRecord 0 9 2342 19200300 100 1 26 */
2710&(nid_objs[479]),/* OBJ_pilotAttributeType27 0 9 2342 19200300 100 1 27 */
2711&(nid_objs[480]),/* OBJ_mXRecord 0 9 2342 19200300 100 1 28 */
2712&(nid_objs[481]),/* OBJ_nSRecord 0 9 2342 19200300 100 1 29 */
2713&(nid_objs[482]),/* OBJ_sOARecord 0 9 2342 19200300 100 1 30 */
2714&(nid_objs[483]),/* OBJ_cNAMERecord 0 9 2342 19200300 100 1 31 */
2715&(nid_objs[484]),/* OBJ_associatedDomain 0 9 2342 19200300 100 1 37 */
2716&(nid_objs[485]),/* OBJ_associatedName 0 9 2342 19200300 100 1 38 */
2717&(nid_objs[486]),/* OBJ_homePostalAddress 0 9 2342 19200300 100 1 39 */
2718&(nid_objs[487]),/* OBJ_personalTitle 0 9 2342 19200300 100 1 40 */
2719&(nid_objs[488]),/* OBJ_mobileTelephoneNumber 0 9 2342 19200300 100 1 41 */
2720&(nid_objs[489]),/* OBJ_pagerTelephoneNumber 0 9 2342 19200300 100 1 42 */
2721&(nid_objs[490]),/* OBJ_friendlyCountryName 0 9 2342 19200300 100 1 43 */
2722&(nid_objs[491]),/* OBJ_organizationalStatus 0 9 2342 19200300 100 1 45 */
2723&(nid_objs[492]),/* OBJ_janetMailbox 0 9 2342 19200300 100 1 46 */
2724&(nid_objs[493]),/* OBJ_mailPreferenceOption 0 9 2342 19200300 100 1 47 */
2725&(nid_objs[494]),/* OBJ_buildingName 0 9 2342 19200300 100 1 48 */
2726&(nid_objs[495]),/* OBJ_dSAQuality 0 9 2342 19200300 100 1 49 */
2727&(nid_objs[496]),/* OBJ_singleLevelQuality 0 9 2342 19200300 100 1 50 */
2728&(nid_objs[497]),/* OBJ_subtreeMinimumQuality 0 9 2342 19200300 100 1 51 */
2729&(nid_objs[498]),/* OBJ_subtreeMaximumQuality 0 9 2342 19200300 100 1 52 */
2730&(nid_objs[499]),/* OBJ_personalSignature 0 9 2342 19200300 100 1 53 */
2731&(nid_objs[500]),/* OBJ_dITRedirect 0 9 2342 19200300 100 1 54 */
2732&(nid_objs[501]),/* OBJ_audio 0 9 2342 19200300 100 1 55 */
2733&(nid_objs[502]),/* OBJ_documentPublisher 0 9 2342 19200300 100 1 56 */
2734&(nid_objs[442]),/* OBJ_iA5StringSyntax 0 9 2342 19200300 100 3 4 */
2735&(nid_objs[443]),/* OBJ_caseIgnoreIA5StringSyntax 0 9 2342 19200300 100 3 5 */
2736&(nid_objs[444]),/* OBJ_pilotObject 0 9 2342 19200300 100 4 3 */
2737&(nid_objs[445]),/* OBJ_pilotPerson 0 9 2342 19200300 100 4 4 */
2738&(nid_objs[446]),/* OBJ_account 0 9 2342 19200300 100 4 5 */
2739&(nid_objs[447]),/* OBJ_document 0 9 2342 19200300 100 4 6 */
2740&(nid_objs[448]),/* OBJ_room 0 9 2342 19200300 100 4 7 */
2741&(nid_objs[449]),/* OBJ_documentSeries 0 9 2342 19200300 100 4 9 */
2742&(nid_objs[392]),/* OBJ_Domain 0 9 2342 19200300 100 4 13 */
2743&(nid_objs[450]),/* OBJ_rFC822localPart 0 9 2342 19200300 100 4 14 */
2744&(nid_objs[451]),/* OBJ_dNSDomain 0 9 2342 19200300 100 4 15 */
2745&(nid_objs[452]),/* OBJ_domainRelatedObject 0 9 2342 19200300 100 4 17 */
2746&(nid_objs[453]),/* OBJ_friendlyCountry 0 9 2342 19200300 100 4 18 */
2747&(nid_objs[454]),/* OBJ_simpleSecurityObject 0 9 2342 19200300 100 4 19 */
2748&(nid_objs[455]),/* OBJ_pilotOrganization 0 9 2342 19200300 100 4 20 */
2749&(nid_objs[456]),/* OBJ_pilotDSA 0 9 2342 19200300 100 4 21 */
2750&(nid_objs[457]),/* OBJ_qualityLabelledData 0 9 2342 19200300 100 4 22 */
2751&(nid_objs[189]),/* OBJ_id_smime_mod 1 2 840 113549 1 9 16 0 */
2752&(nid_objs[190]),/* OBJ_id_smime_ct 1 2 840 113549 1 9 16 1 */
2753&(nid_objs[191]),/* OBJ_id_smime_aa 1 2 840 113549 1 9 16 2 */
2754&(nid_objs[192]),/* OBJ_id_smime_alg 1 2 840 113549 1 9 16 3 */
2755&(nid_objs[193]),/* OBJ_id_smime_cd 1 2 840 113549 1 9 16 4 */
2756&(nid_objs[194]),/* OBJ_id_smime_spq 1 2 840 113549 1 9 16 5 */
2757&(nid_objs[195]),/* OBJ_id_smime_cti 1 2 840 113549 1 9 16 6 */
2758&(nid_objs[158]),/* OBJ_x509Certificate 1 2 840 113549 1 9 22 1 */
2759&(nid_objs[159]),/* OBJ_sdsiCertificate 1 2 840 113549 1 9 22 2 */
2760&(nid_objs[160]),/* OBJ_x509Crl 1 2 840 113549 1 9 23 1 */
2761&(nid_objs[144]),/* OBJ_pbe_WithSHA1And128BitRC4 1 2 840 113549 1 12 1 1 */
2762&(nid_objs[145]),/* OBJ_pbe_WithSHA1And40BitRC4 1 2 840 113549 1 12 1 2 */
2763&(nid_objs[146]),/* OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC 1 2 840 113549 1 12 1 3 */
2764&(nid_objs[147]),/* OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC 1 2 840 113549 1 12 1 4 */
2765&(nid_objs[148]),/* OBJ_pbe_WithSHA1And128BitRC2_CBC 1 2 840 113549 1 12 1 5 */
2766&(nid_objs[149]),/* OBJ_pbe_WithSHA1And40BitRC2_CBC 1 2 840 113549 1 12 1 6 */
2767&(nid_objs[171]),/* OBJ_ms_ext_req 1 3 6 1 4 1 311 2 1 14 */
2768&(nid_objs[134]),/* OBJ_ms_code_ind 1 3 6 1 4 1 311 2 1 21 */
2769&(nid_objs[135]),/* OBJ_ms_code_com 1 3 6 1 4 1 311 2 1 22 */
2770&(nid_objs[136]),/* OBJ_ms_ctl_sign 1 3 6 1 4 1 311 10 3 1 */
2771&(nid_objs[137]),/* OBJ_ms_sgc 1 3 6 1 4 1 311 10 3 3 */
2772&(nid_objs[138]),/* OBJ_ms_efs 1 3 6 1 4 1 311 10 3 4 */
2773&(nid_objs[196]),/* OBJ_id_smime_mod_cms 1 2 840 113549 1 9 16 0 1 */
2774&(nid_objs[197]),/* OBJ_id_smime_mod_ess 1 2 840 113549 1 9 16 0 2 */
2775&(nid_objs[198]),/* OBJ_id_smime_mod_oid 1 2 840 113549 1 9 16 0 3 */
2776&(nid_objs[199]),/* OBJ_id_smime_mod_msg_v3 1 2 840 113549 1 9 16 0 4 */
2777&(nid_objs[200]),/* OBJ_id_smime_mod_ets_eSignature_88 1 2 840 113549 1 9 16 0 5 */
2778&(nid_objs[201]),/* OBJ_id_smime_mod_ets_eSignature_97 1 2 840 113549 1 9 16 0 6 */
2779&(nid_objs[202]),/* OBJ_id_smime_mod_ets_eSigPolicy_88 1 2 840 113549 1 9 16 0 7 */
2780&(nid_objs[203]),/* OBJ_id_smime_mod_ets_eSigPolicy_97 1 2 840 113549 1 9 16 0 8 */
2781&(nid_objs[204]),/* OBJ_id_smime_ct_receipt 1 2 840 113549 1 9 16 1 1 */
2782&(nid_objs[205]),/* OBJ_id_smime_ct_authData 1 2 840 113549 1 9 16 1 2 */
2783&(nid_objs[206]),/* OBJ_id_smime_ct_publishCert 1 2 840 113549 1 9 16 1 3 */
2784&(nid_objs[207]),/* OBJ_id_smime_ct_TSTInfo 1 2 840 113549 1 9 16 1 4 */
2785&(nid_objs[208]),/* OBJ_id_smime_ct_TDTInfo 1 2 840 113549 1 9 16 1 5 */
2786&(nid_objs[209]),/* OBJ_id_smime_ct_contentInfo 1 2 840 113549 1 9 16 1 6 */
2787&(nid_objs[210]),/* OBJ_id_smime_ct_DVCSRequestData 1 2 840 113549 1 9 16 1 7 */
2788&(nid_objs[211]),/* OBJ_id_smime_ct_DVCSResponseData 1 2 840 113549 1 9 16 1 8 */
2789&(nid_objs[212]),/* OBJ_id_smime_aa_receiptRequest 1 2 840 113549 1 9 16 2 1 */
2790&(nid_objs[213]),/* OBJ_id_smime_aa_securityLabel 1 2 840 113549 1 9 16 2 2 */
2791&(nid_objs[214]),/* OBJ_id_smime_aa_mlExpandHistory 1 2 840 113549 1 9 16 2 3 */
2792&(nid_objs[215]),/* OBJ_id_smime_aa_contentHint 1 2 840 113549 1 9 16 2 4 */
2793&(nid_objs[216]),/* OBJ_id_smime_aa_msgSigDigest 1 2 840 113549 1 9 16 2 5 */
2794&(nid_objs[217]),/* OBJ_id_smime_aa_encapContentType 1 2 840 113549 1 9 16 2 6 */
2795&(nid_objs[218]),/* OBJ_id_smime_aa_contentIdentifier 1 2 840 113549 1 9 16 2 7 */
2796&(nid_objs[219]),/* OBJ_id_smime_aa_macValue 1 2 840 113549 1 9 16 2 8 */
2797&(nid_objs[220]),/* OBJ_id_smime_aa_equivalentLabels 1 2 840 113549 1 9 16 2 9 */
2798&(nid_objs[221]),/* OBJ_id_smime_aa_contentReference 1 2 840 113549 1 9 16 2 10 */
2799&(nid_objs[222]),/* OBJ_id_smime_aa_encrypKeyPref 1 2 840 113549 1 9 16 2 11 */
2800&(nid_objs[223]),/* OBJ_id_smime_aa_signingCertificate 1 2 840 113549 1 9 16 2 12 */
2801&(nid_objs[224]),/* OBJ_id_smime_aa_smimeEncryptCerts 1 2 840 113549 1 9 16 2 13 */
2802&(nid_objs[225]),/* OBJ_id_smime_aa_timeStampToken 1 2 840 113549 1 9 16 2 14 */
2803&(nid_objs[226]),/* OBJ_id_smime_aa_ets_sigPolicyId 1 2 840 113549 1 9 16 2 15 */
2804&(nid_objs[227]),/* OBJ_id_smime_aa_ets_commitmentType 1 2 840 113549 1 9 16 2 16 */
2805&(nid_objs[228]),/* OBJ_id_smime_aa_ets_signerLocation 1 2 840 113549 1 9 16 2 17 */
2806&(nid_objs[229]),/* OBJ_id_smime_aa_ets_signerAttr 1 2 840 113549 1 9 16 2 18 */
2807&(nid_objs[230]),/* OBJ_id_smime_aa_ets_otherSigCert 1 2 840 113549 1 9 16 2 19 */
2808&(nid_objs[231]),/* OBJ_id_smime_aa_ets_contentTimestamp 1 2 840 113549 1 9 16 2 20 */
2809&(nid_objs[232]),/* OBJ_id_smime_aa_ets_CertificateRefs 1 2 840 113549 1 9 16 2 21 */
2810&(nid_objs[233]),/* OBJ_id_smime_aa_ets_RevocationRefs 1 2 840 113549 1 9 16 2 22 */
2811&(nid_objs[234]),/* OBJ_id_smime_aa_ets_certValues 1 2 840 113549 1 9 16 2 23 */
2812&(nid_objs[235]),/* OBJ_id_smime_aa_ets_revocationValues 1 2 840 113549 1 9 16 2 24 */
2813&(nid_objs[236]),/* OBJ_id_smime_aa_ets_escTimeStamp 1 2 840 113549 1 9 16 2 25 */
2814&(nid_objs[237]),/* OBJ_id_smime_aa_ets_certCRLTimestamp 1 2 840 113549 1 9 16 2 26 */
2815&(nid_objs[238]),/* OBJ_id_smime_aa_ets_archiveTimeStamp 1 2 840 113549 1 9 16 2 27 */
2816&(nid_objs[239]),/* OBJ_id_smime_aa_signatureType 1 2 840 113549 1 9 16 2 28 */
2817&(nid_objs[240]),/* OBJ_id_smime_aa_dvcs_dvc 1 2 840 113549 1 9 16 2 29 */
2818&(nid_objs[241]),/* OBJ_id_smime_alg_ESDHwith3DES 1 2 840 113549 1 9 16 3 1 */
2819&(nid_objs[242]),/* OBJ_id_smime_alg_ESDHwithRC2 1 2 840 113549 1 9 16 3 2 */
2820&(nid_objs[243]),/* OBJ_id_smime_alg_3DESwrap 1 2 840 113549 1 9 16 3 3 */
2821&(nid_objs[244]),/* OBJ_id_smime_alg_RC2wrap 1 2 840 113549 1 9 16 3 4 */
2822&(nid_objs[245]),/* OBJ_id_smime_alg_ESDH 1 2 840 113549 1 9 16 3 5 */
2823&(nid_objs[246]),/* OBJ_id_smime_alg_CMS3DESwrap 1 2 840 113549 1 9 16 3 6 */
2824&(nid_objs[247]),/* OBJ_id_smime_alg_CMSRC2wrap 1 2 840 113549 1 9 16 3 7 */
2825&(nid_objs[248]),/* OBJ_id_smime_cd_ldap 1 2 840 113549 1 9 16 4 1 */
2826&(nid_objs[249]),/* OBJ_id_smime_spq_ets_sqt_uri 1 2 840 113549 1 9 16 5 1 */
2827&(nid_objs[250]),/* OBJ_id_smime_spq_ets_sqt_unotice 1 2 840 113549 1 9 16 5 2 */
2828&(nid_objs[251]),/* OBJ_id_smime_cti_ets_proofOfOrigin 1 2 840 113549 1 9 16 6 1 */
2829&(nid_objs[252]),/* OBJ_id_smime_cti_ets_proofOfReceipt 1 2 840 113549 1 9 16 6 2 */
2830&(nid_objs[253]),/* OBJ_id_smime_cti_ets_proofOfDelivery 1 2 840 113549 1 9 16 6 3 */
2831&(nid_objs[254]),/* OBJ_id_smime_cti_ets_proofOfSender 1 2 840 113549 1 9 16 6 4 */
2832&(nid_objs[255]),/* OBJ_id_smime_cti_ets_proofOfApproval 1 2 840 113549 1 9 16 6 5 */
2833&(nid_objs[256]),/* OBJ_id_smime_cti_ets_proofOfCreation 1 2 840 113549 1 9 16 6 6 */
2834&(nid_objs[150]),/* OBJ_keyBag 1 2 840 113549 1 12 10 1 1 */
2835&(nid_objs[151]),/* OBJ_pkcs8ShroudedKeyBag 1 2 840 113549 1 12 10 1 2 */
2836&(nid_objs[152]),/* OBJ_certBag 1 2 840 113549 1 12 10 1 3 */
2837&(nid_objs[153]),/* OBJ_crlBag 1 2 840 113549 1 12 10 1 4 */
2838&(nid_objs[154]),/* OBJ_secretBag 1 2 840 113549 1 12 10 1 5 */
2839&(nid_objs[155]),/* OBJ_safeContentsBag 1 2 840 113549 1 12 10 1 6 */
2840&(nid_objs[34]),/* OBJ_idea_cbc 1 3 6 1 4 1 188 7 1 1 2 */
655}; 2841};
656 2842
diff --git a/src/lib/libcrypto/objects/obj_mac.h b/src/lib/libcrypto/objects/obj_mac.h
index 401b1e5a1b..6d77fcba3f 100644
--- a/src/lib/libcrypto/objects/obj_mac.h
+++ b/src/lib/libcrypto/objects/obj_mac.h
@@ -1,4 +1,10 @@
1/* lib/obj/obj_mac.h */ 1/* crypto/objects/obj_mac.h */
2
3/* THIS FILE IS GENERATED FROM objects.txt by objects.pl via the
4 * following command:
5 * perl objects.pl objects.txt obj_mac.num obj_mac.h
6 */
7
2/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) 8/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 9 * All rights reserved.
4 * 10 *
@@ -56,26 +62,40 @@
56 * [including the GNU Public Licence.] 62 * [including the GNU Public Licence.]
57 */ 63 */
58 64
59/* THIS FILE IS GENERATED FROM objects.txt by objects.pl via the
60 * following command:
61 * perl objects.pl objects.txt obj_mac.num obj_mac.h
62 */
63
64#define SN_undef "UNDEF" 65#define SN_undef "UNDEF"
65#define LN_undef "undefined" 66#define LN_undef "undefined"
66#define NID_undef 0 67#define NID_undef 0
67#define OBJ_undef 0L 68#define OBJ_undef 0L
68 69
70#define SN_ccitt "CCITT"
71#define LN_ccitt "ccitt"
72#define NID_ccitt 404
73#define OBJ_ccitt 0L
74
69#define SN_iso "ISO" 75#define SN_iso "ISO"
70#define LN_iso "iso" 76#define LN_iso "iso"
71#define NID_iso 181 77#define NID_iso 181
72#define OBJ_iso 1L 78#define OBJ_iso 1L
73 79
80#define SN_joint_iso_ccitt "JOINT-ISO-CCITT"
81#define LN_joint_iso_ccitt "joint-iso-ccitt"
82#define NID_joint_iso_ccitt 393
83#define OBJ_joint_iso_ccitt 2L
84
74#define SN_member_body "member-body" 85#define SN_member_body "member-body"
75#define LN_member_body "ISO Member Body" 86#define LN_member_body "ISO Member Body"
76#define NID_member_body 182 87#define NID_member_body 182
77#define OBJ_member_body OBJ_iso,2L 88#define OBJ_member_body OBJ_iso,2L
78 89
90#define SN_selected_attribute_types "selected-attribute-types"
91#define LN_selected_attribute_types "Selected Attribute Types"
92#define NID_selected_attribute_types 394
93#define OBJ_selected_attribute_types OBJ_joint_iso_ccitt,5L,1L,5L
94
95#define SN_clearance "clearance"
96#define NID_clearance 395
97#define OBJ_clearance OBJ_selected_attribute_types,55L
98
79#define SN_ISO_US "ISO-US" 99#define SN_ISO_US "ISO-US"
80#define LN_ISO_US "ISO US Member Body" 100#define LN_ISO_US "ISO US Member Body"
81#define NID_ISO_US 183 101#define NID_ISO_US 183
@@ -101,6 +121,67 @@
101#define NID_dsaWithSHA1 113 121#define NID_dsaWithSHA1 113
102#define OBJ_dsaWithSHA1 OBJ_X9cm,3L 122#define OBJ_dsaWithSHA1 OBJ_X9cm,3L
103 123
124#define SN_ansi_X9_62 "ansi-X9-62"
125#define LN_ansi_X9_62 "ANSI X9.62"
126#define NID_ansi_X9_62 405
127#define OBJ_ansi_X9_62 OBJ_ISO_US,10045L
128
129#define OBJ_X9_62_id_fieldType OBJ_ansi_X9_62,1L
130
131#define SN_X9_62_prime_field "prime-field"
132#define NID_X9_62_prime_field 406
133#define OBJ_X9_62_prime_field OBJ_X9_62_id_fieldType,1L
134
135#define SN_X9_62_characteristic_two_field "characteristic-two-field"
136#define NID_X9_62_characteristic_two_field 407
137#define OBJ_X9_62_characteristic_two_field OBJ_X9_62_id_fieldType,2L
138
139#define OBJ_X9_62_id_publicKeyType OBJ_ansi_X9_62,2L
140
141#define SN_X9_62_id_ecPublicKey "id-ecPublicKey"
142#define NID_X9_62_id_ecPublicKey 408
143#define OBJ_X9_62_id_ecPublicKey OBJ_X9_62_id_publicKeyType,1L
144
145#define OBJ_X9_62_ellipticCurve OBJ_ansi_X9_62,3L
146
147#define OBJ_X9_62_c_TwoCurve OBJ_X9_62_ellipticCurve,0L
148
149#define OBJ_X9_62_primeCurve OBJ_X9_62_ellipticCurve,1L
150
151#define SN_X9_62_prime192v1 "prime192v1"
152#define NID_X9_62_prime192v1 409
153#define OBJ_X9_62_prime192v1 OBJ_X9_62_primeCurve,1L
154
155#define SN_X9_62_prime192v2 "prime192v2"
156#define NID_X9_62_prime192v2 410
157#define OBJ_X9_62_prime192v2 OBJ_X9_62_primeCurve,2L
158
159#define SN_X9_62_prime192v3 "prime192v3"
160#define NID_X9_62_prime192v3 411
161#define OBJ_X9_62_prime192v3 OBJ_X9_62_primeCurve,3L
162
163#define SN_X9_62_prime239v1 "prime239v1"
164#define NID_X9_62_prime239v1 412
165#define OBJ_X9_62_prime239v1 OBJ_X9_62_primeCurve,4L
166
167#define SN_X9_62_prime239v2 "prime239v2"
168#define NID_X9_62_prime239v2 413
169#define OBJ_X9_62_prime239v2 OBJ_X9_62_primeCurve,5L
170
171#define SN_X9_62_prime239v3 "prime239v3"
172#define NID_X9_62_prime239v3 414
173#define OBJ_X9_62_prime239v3 OBJ_X9_62_primeCurve,6L
174
175#define SN_X9_62_prime256v1 "prime256v1"
176#define NID_X9_62_prime256v1 415
177#define OBJ_X9_62_prime256v1 OBJ_X9_62_primeCurve,7L
178
179#define OBJ_X9_62_id_ecSigType OBJ_ansi_X9_62,4L
180
181#define SN_ecdsa_with_SHA1 "ecdsa-with-SHA1"
182#define NID_ecdsa_with_SHA1 416
183#define OBJ_ecdsa_with_SHA1 OBJ_X9_62_id_ecSigType,1L
184
104#define SN_cast5_cbc "CAST5-CBC" 185#define SN_cast5_cbc "CAST5-CBC"
105#define LN_cast5_cbc "cast5-cbc" 186#define LN_cast5_cbc "cast5-cbc"
106#define NID_cast5_cbc 108 187#define NID_cast5_cbc 108
@@ -145,6 +226,11 @@
145#define NID_md2WithRSAEncryption 7 226#define NID_md2WithRSAEncryption 7
146#define OBJ_md2WithRSAEncryption OBJ_pkcs1,2L 227#define OBJ_md2WithRSAEncryption OBJ_pkcs1,2L
147 228
229#define SN_md4WithRSAEncryption "RSA-MD4"
230#define LN_md4WithRSAEncryption "md4WithRSAEncryption"
231#define NID_md4WithRSAEncryption 396
232#define OBJ_md4WithRSAEncryption OBJ_pkcs1,3L
233
148#define SN_md5WithRSAEncryption "RSA-MD5" 234#define SN_md5WithRSAEncryption "RSA-MD5"
149#define LN_md5WithRSAEncryption "md5WithRSAEncryption" 235#define LN_md5WithRSAEncryption "md5WithRSAEncryption"
150#define NID_md5WithRSAEncryption 8 236#define NID_md5WithRSAEncryption 8
@@ -241,7 +327,6 @@
241#define NID_pkcs9 47 327#define NID_pkcs9 47
242#define OBJ_pkcs9 OBJ_pkcs,9L 328#define OBJ_pkcs9 OBJ_pkcs,9L
243 329
244#define SN_pkcs9_emailAddress "Email"
245#define LN_pkcs9_emailAddress "emailAddress" 330#define LN_pkcs9_emailAddress "emailAddress"
246#define NID_pkcs9_emailAddress 48 331#define NID_pkcs9_emailAddress 48
247#define OBJ_pkcs9_emailAddress OBJ_pkcs9,1L 332#define OBJ_pkcs9_emailAddress OBJ_pkcs9,1L
@@ -573,6 +658,11 @@
573#define NID_localKeyID 157 658#define NID_localKeyID 157
574#define OBJ_localKeyID OBJ_pkcs9,21L 659#define OBJ_localKeyID OBJ_pkcs9,21L
575 660
661#define SN_ms_csp_name "CSPName"
662#define LN_ms_csp_name "Microsoft CSP Name"
663#define NID_ms_csp_name 417
664#define OBJ_ms_csp_name 1L,3L,6L,1L,4L,1L,311L,17L,1L
665
576#define OBJ_certTypes OBJ_pkcs9,22L 666#define OBJ_certTypes OBJ_pkcs9,22L
577 667
578#define LN_x509Certificate "x509Certificate" 668#define LN_x509Certificate "x509Certificate"
@@ -956,6 +1046,15 @@
956#define NID_sbqp_routerIdentifier 292 1046#define NID_sbqp_routerIdentifier 292
957#define OBJ_sbqp_routerIdentifier OBJ_id_pe,9L 1047#define OBJ_sbqp_routerIdentifier OBJ_id_pe,9L
958 1048
1049#define SN_ac_proxying "ac-proxying"
1050#define NID_ac_proxying 397
1051#define OBJ_ac_proxying OBJ_id_pe,10L
1052
1053#define SN_sinfo_access "subjectInfoAccess"
1054#define LN_sinfo_access "Subject Information Access"
1055#define NID_sinfo_access 398
1056#define OBJ_sinfo_access OBJ_id_pe,11L
1057
959#define SN_id_qt_cps "id-qt-cps" 1058#define SN_id_qt_cps "id-qt-cps"
960#define LN_id_qt_cps "Policy Qualifier CPS" 1059#define LN_id_qt_cps "Policy Qualifier CPS"
961#define NID_id_qt_cps 164 1060#define NID_id_qt_cps 164
@@ -1228,21 +1327,17 @@
1228#define NID_id_pda_placeOfBirth 349 1327#define NID_id_pda_placeOfBirth 349
1229#define OBJ_id_pda_placeOfBirth OBJ_id_pda,2L 1328#define OBJ_id_pda_placeOfBirth OBJ_id_pda,2L
1230 1329
1231#define SN_id_pda_pseudonym "id-pda-pseudonym"
1232#define NID_id_pda_pseudonym 350
1233#define OBJ_id_pda_pseudonym OBJ_id_pda,3L
1234
1235#define SN_id_pda_gender "id-pda-gender" 1330#define SN_id_pda_gender "id-pda-gender"
1236#define NID_id_pda_gender 351 1331#define NID_id_pda_gender 351
1237#define OBJ_id_pda_gender OBJ_id_pda,4L 1332#define OBJ_id_pda_gender OBJ_id_pda,3L
1238 1333
1239#define SN_id_pda_countryOfCitizenship "id-pda-countryOfCitizenship" 1334#define SN_id_pda_countryOfCitizenship "id-pda-countryOfCitizenship"
1240#define NID_id_pda_countryOfCitizenship 352 1335#define NID_id_pda_countryOfCitizenship 352
1241#define OBJ_id_pda_countryOfCitizenship OBJ_id_pda,5L 1336#define OBJ_id_pda_countryOfCitizenship OBJ_id_pda,4L
1242 1337
1243#define SN_id_pda_countryOfResidence "id-pda-countryOfResidence" 1338#define SN_id_pda_countryOfResidence "id-pda-countryOfResidence"
1244#define NID_id_pda_countryOfResidence 353 1339#define NID_id_pda_countryOfResidence 353
1245#define OBJ_id_pda_countryOfResidence OBJ_id_pda,6L 1340#define OBJ_id_pda_countryOfResidence OBJ_id_pda,5L
1246 1341
1247#define SN_id_aca_authenticationInfo "id-aca-authenticationInfo" 1342#define SN_id_aca_authenticationInfo "id-aca-authenticationInfo"
1248#define NID_id_aca_authenticationInfo 354 1343#define NID_id_aca_authenticationInfo 354
@@ -1264,6 +1359,10 @@
1264#define NID_id_aca_role 358 1359#define NID_id_aca_role 358
1265#define OBJ_id_aca_role OBJ_id_aca,5L 1360#define OBJ_id_aca_role OBJ_id_aca,5L
1266 1361
1362#define SN_id_aca_encAttrs "id-aca-encAttrs"
1363#define NID_id_aca_encAttrs 399
1364#define OBJ_id_aca_encAttrs OBJ_id_aca,6L
1365
1267#define SN_id_qcs_pkixQCSyntax_v1 "id-qcs-pkixQCSyntax-v1" 1366#define SN_id_qcs_pkixQCSyntax_v1 "id-qcs-pkixQCSyntax-v1"
1268#define NID_id_qcs_pkixQCSyntax_v1 359 1367#define NID_id_qcs_pkixQCSyntax_v1 359
1269#define OBJ_id_qcs_pkixQCSyntax_v1 OBJ_id_qcs,1L 1368#define OBJ_id_qcs_pkixQCSyntax_v1 OBJ_id_qcs,1L
@@ -1323,6 +1422,7 @@
1323#define OBJ_id_pkix_OCSP_acceptableResponses OBJ_id_pkix_OCSP,4L 1422#define OBJ_id_pkix_OCSP_acceptableResponses OBJ_id_pkix_OCSP,4L
1324 1423
1325#define SN_id_pkix_OCSP_noCheck "noCheck" 1424#define SN_id_pkix_OCSP_noCheck "noCheck"
1425#define LN_id_pkix_OCSP_noCheck "OCSP No Check"
1326#define NID_id_pkix_OCSP_noCheck 369 1426#define NID_id_pkix_OCSP_noCheck 369
1327#define OBJ_id_pkix_OCSP_noCheck OBJ_id_pkix_OCSP,5L 1427#define OBJ_id_pkix_OCSP_noCheck OBJ_id_pkix_OCSP,5L
1328 1428
@@ -1403,14 +1503,14 @@
1403#define NID_shaWithRSAEncryption 42 1503#define NID_shaWithRSAEncryption 42
1404#define OBJ_shaWithRSAEncryption OBJ_algorithm,15L 1504#define OBJ_shaWithRSAEncryption OBJ_algorithm,15L
1405 1505
1406#define SN_des_ede "DES-EDE" 1506#define SN_des_ede_ecb "DES-EDE"
1407#define LN_des_ede "des-ede" 1507#define LN_des_ede_ecb "des-ede"
1408#define NID_des_ede 32 1508#define NID_des_ede_ecb 32
1409#define OBJ_des_ede OBJ_algorithm,17L 1509#define OBJ_des_ede_ecb OBJ_algorithm,17L
1410 1510
1411#define SN_des_ede3 "DES-EDE3" 1511#define SN_des_ede3_ecb "DES-EDE3"
1412#define LN_des_ede3 "des-ede3" 1512#define LN_des_ede3_ecb "des-ede3"
1413#define NID_des_ede3 33 1513#define NID_des_ede3_ecb 33
1414 1514
1415#define SN_des_ede_cbc "DES-EDE-CBC" 1515#define SN_des_ede_cbc "DES-EDE-CBC"
1416#define LN_des_ede_cbc "des-ede-cbc" 1516#define LN_des_ede_cbc "des-ede-cbc"
@@ -1485,12 +1585,11 @@
1485#define NID_commonName 13 1585#define NID_commonName 13
1486#define OBJ_commonName OBJ_X509,3L 1586#define OBJ_commonName OBJ_X509,3L
1487 1587
1488#define SN_surname "S" 1588#define SN_surname "SN"
1489#define LN_surname "surname" 1589#define LN_surname "surname"
1490#define NID_surname 100 1590#define NID_surname 100
1491#define OBJ_surname OBJ_X509,4L 1591#define OBJ_surname OBJ_X509,4L
1492 1592
1493#define SN_serialNumber "SN"
1494#define LN_serialNumber "serialNumber" 1593#define LN_serialNumber "serialNumber"
1495#define NID_serialNumber 105 1594#define NID_serialNumber 105
1496#define OBJ_serialNumber OBJ_X509,5L 1595#define OBJ_serialNumber OBJ_X509,5L
@@ -1520,12 +1619,10 @@
1520#define NID_organizationalUnitName 18 1619#define NID_organizationalUnitName 18
1521#define OBJ_organizationalUnitName OBJ_X509,11L 1620#define OBJ_organizationalUnitName OBJ_X509,11L
1522 1621
1523#define SN_title "T"
1524#define LN_title "title" 1622#define LN_title "title"
1525#define NID_title 106 1623#define NID_title 106
1526#define OBJ_title OBJ_X509,12L 1624#define OBJ_title OBJ_X509,12L
1527 1625
1528#define SN_description "D"
1529#define LN_description "description" 1626#define LN_description "description"
1530#define NID_description 107 1627#define NID_description 107
1531#define OBJ_description OBJ_X509,13L 1628#define OBJ_description OBJ_X509,13L
@@ -1535,26 +1632,33 @@
1535#define NID_name 173 1632#define NID_name 173
1536#define OBJ_name OBJ_X509,41L 1633#define OBJ_name OBJ_X509,41L
1537 1634
1538#define SN_givenName "G" 1635#define SN_givenName "gn"
1539#define LN_givenName "givenName" 1636#define LN_givenName "givenName"
1540#define NID_givenName 99 1637#define NID_givenName 99
1541#define OBJ_givenName OBJ_X509,42L 1638#define OBJ_givenName OBJ_X509,42L
1542 1639
1543#define SN_initials "I"
1544#define LN_initials "initials" 1640#define LN_initials "initials"
1545#define NID_initials 101 1641#define NID_initials 101
1546#define OBJ_initials OBJ_X509,43L 1642#define OBJ_initials OBJ_X509,43L
1547 1643
1548#define SN_uniqueIdentifier "UID" 1644#define LN_generationQualifier "generationQualifier"
1549#define LN_uniqueIdentifier "uniqueIdentifier" 1645#define NID_generationQualifier 509
1550#define NID_uniqueIdentifier 102 1646#define OBJ_generationQualifier OBJ_X509,44L
1551#define OBJ_uniqueIdentifier OBJ_X509,45L 1647
1648#define LN_x500UniqueIdentifier "x500UniqueIdentifier"
1649#define NID_x500UniqueIdentifier 503
1650#define OBJ_x500UniqueIdentifier OBJ_X509,45L
1552 1651
1553#define SN_dnQualifier "dnQualifier" 1652#define SN_dnQualifier "dnQualifier"
1554#define LN_dnQualifier "dnQualifier" 1653#define LN_dnQualifier "dnQualifier"
1555#define NID_dnQualifier 174 1654#define NID_dnQualifier 174
1556#define OBJ_dnQualifier OBJ_X509,46L 1655#define OBJ_dnQualifier OBJ_X509,46L
1557 1656
1657#define SN_role "role"
1658#define LN_role "role"
1659#define NID_role 400
1660#define OBJ_role OBJ_X509,72L
1661
1558#define SN_X500algorithms "X500algorithms" 1662#define SN_X500algorithms "X500algorithms"
1559#define LN_X500algorithms "directory services - algorithms" 1663#define LN_X500algorithms "directory services - algorithms"
1560#define NID_X500algorithms 378 1664#define NID_X500algorithms 378
@@ -1644,11 +1748,26 @@
1644#define NID_authority_key_identifier 90 1748#define NID_authority_key_identifier 90
1645#define OBJ_authority_key_identifier OBJ_id_ce,35L 1749#define OBJ_authority_key_identifier OBJ_id_ce,35L
1646 1750
1751#define SN_policy_constraints "policyConstraints"
1752#define LN_policy_constraints "X509v3 Policy Constraints"
1753#define NID_policy_constraints 401
1754#define OBJ_policy_constraints OBJ_id_ce,36L
1755
1647#define SN_ext_key_usage "extendedKeyUsage" 1756#define SN_ext_key_usage "extendedKeyUsage"
1648#define LN_ext_key_usage "X509v3 Extended Key Usage" 1757#define LN_ext_key_usage "X509v3 Extended Key Usage"
1649#define NID_ext_key_usage 126 1758#define NID_ext_key_usage 126
1650#define OBJ_ext_key_usage OBJ_id_ce,37L 1759#define OBJ_ext_key_usage OBJ_id_ce,37L
1651 1760
1761#define SN_target_information "targetInformation"
1762#define LN_target_information "X509v3 AC Targeting"
1763#define NID_target_information 402
1764#define OBJ_target_information OBJ_id_ce,55L
1765
1766#define SN_no_rev_avail "noRevAvail"
1767#define LN_no_rev_avail "X509v3 No Revocation Available"
1768#define NID_no_rev_avail 403
1769#define OBJ_no_rev_avail OBJ_id_ce,56L
1770
1652#define SN_netscape "Netscape" 1771#define SN_netscape "Netscape"
1653#define LN_netscape "Netscape Communications Corp." 1772#define LN_netscape "Netscape Communications Corp."
1654#define NID_netscape 57 1773#define NID_netscape 57
@@ -1761,7 +1880,6 @@
1761#define NID_SNMPv2 387 1880#define NID_SNMPv2 387
1762#define OBJ_SNMPv2 OBJ_internet,6L 1881#define OBJ_SNMPv2 OBJ_internet,6L
1763 1882
1764#define SN_Mail "mail"
1765#define LN_Mail "Mail" 1883#define LN_Mail "Mail"
1766#define NID_Mail 388 1884#define NID_Mail 388
1767#define OBJ_Mail OBJ_internet,7L 1885#define OBJ_Mail OBJ_internet,7L
@@ -1769,22 +1887,37 @@
1769#define SN_Enterprises "enterprises" 1887#define SN_Enterprises "enterprises"
1770#define LN_Enterprises "Enterprises" 1888#define LN_Enterprises "Enterprises"
1771#define NID_Enterprises 389 1889#define NID_Enterprises 389
1772#define OBJ_Enterprises OBJ_private,1L 1890#define OBJ_Enterprises OBJ_Private,1L
1773 1891
1774#define SN_dcObject "dcobject" 1892#define SN_dcObject "dcobject"
1775#define LN_dcObject "dcObject" 1893#define LN_dcObject "dcObject"
1776#define NID_dcObject 390 1894#define NID_dcObject 390
1777#define OBJ_dcObject OBJ_enterprises,1466L,344L 1895#define OBJ_dcObject OBJ_Enterprises,1466L,344L
1778 1896
1779#define SN_domainComponent "DC" 1897#define SN_mime_mhs "mime-mhs"
1780#define LN_domainComponent "domainComponent" 1898#define LN_mime_mhs "MIME MHS"
1781#define NID_domainComponent 391 1899#define NID_mime_mhs 504
1782#define OBJ_domainComponent 0L,9L,2342L,19200300L,100L,1L,25L 1900#define OBJ_mime_mhs OBJ_Mail,1L
1783 1901
1784#define SN_Domain "domain" 1902#define SN_mime_mhs_headings "mime-mhs-headings"
1785#define LN_Domain "Domain" 1903#define LN_mime_mhs_headings "mime-mhs-headings"
1786#define NID_Domain 392 1904#define NID_mime_mhs_headings 505
1787#define OBJ_Domain 0L,9L,2342L,19200300L,100L,4L,13L 1905#define OBJ_mime_mhs_headings OBJ_mime_mhs,1L
1906
1907#define SN_mime_mhs_bodies "mime-mhs-bodies"
1908#define LN_mime_mhs_bodies "mime-mhs-bodies"
1909#define NID_mime_mhs_bodies 506
1910#define OBJ_mime_mhs_bodies OBJ_mime_mhs,2L
1911
1912#define SN_id_hex_partial_message "id-hex-partial-message"
1913#define LN_id_hex_partial_message "id-hex-partial-message"
1914#define NID_id_hex_partial_message 507
1915#define OBJ_id_hex_partial_message OBJ_mime_mhs_headings,1L
1916
1917#define SN_id_hex_multipart_message "id-hex-multipart-message"
1918#define LN_id_hex_multipart_message "id-hex-multipart-message"
1919#define NID_id_hex_multipart_message 508
1920#define OBJ_id_hex_multipart_message OBJ_mime_mhs_headings,2L
1788 1921
1789#define SN_rle_compression "RLE" 1922#define SN_rle_compression "RLE"
1790#define LN_rle_compression "run length compression" 1923#define LN_rle_compression "run length compression"
@@ -1796,3 +1929,379 @@
1796#define NID_zlib_compression 125 1929#define NID_zlib_compression 125
1797#define OBJ_zlib_compression 1L,1L,1L,1L,666L,2L 1930#define OBJ_zlib_compression 1L,1L,1L,1L,666L,2L
1798 1931
1932#define OBJ_csor 2L,16L,840L,1L,101L,3L
1933
1934#define OBJ_nistAlgorithms OBJ_csor,4L
1935
1936#define OBJ_aes OBJ_nistAlgorithms,1L
1937
1938#define SN_aes_128_ecb "AES-128-ECB"
1939#define LN_aes_128_ecb "aes-128-ecb"
1940#define NID_aes_128_ecb 418
1941#define OBJ_aes_128_ecb OBJ_aes,1L
1942
1943#define SN_aes_128_cbc "AES-128-CBC"
1944#define LN_aes_128_cbc "aes-128-cbc"
1945#define NID_aes_128_cbc 419
1946#define OBJ_aes_128_cbc OBJ_aes,2L
1947
1948#define SN_aes_128_ofb128 "AES-128-OFB"
1949#define LN_aes_128_ofb128 "aes-128-ofb"
1950#define NID_aes_128_ofb128 420
1951#define OBJ_aes_128_ofb128 OBJ_aes,3L
1952
1953#define SN_aes_128_cfb128 "AES-128-CFB"
1954#define LN_aes_128_cfb128 "aes-128-cfb"
1955#define NID_aes_128_cfb128 421
1956#define OBJ_aes_128_cfb128 OBJ_aes,4L
1957
1958#define SN_aes_192_ecb "AES-192-ECB"
1959#define LN_aes_192_ecb "aes-192-ecb"
1960#define NID_aes_192_ecb 422
1961#define OBJ_aes_192_ecb OBJ_aes,21L
1962
1963#define SN_aes_192_cbc "AES-192-CBC"
1964#define LN_aes_192_cbc "aes-192-cbc"
1965#define NID_aes_192_cbc 423
1966#define OBJ_aes_192_cbc OBJ_aes,22L
1967
1968#define SN_aes_192_ofb128 "AES-192-OFB"
1969#define LN_aes_192_ofb128 "aes-192-ofb"
1970#define NID_aes_192_ofb128 424
1971#define OBJ_aes_192_ofb128 OBJ_aes,23L
1972
1973#define SN_aes_192_cfb128 "AES-192-CFB"
1974#define LN_aes_192_cfb128 "aes-192-cfb"
1975#define NID_aes_192_cfb128 425
1976#define OBJ_aes_192_cfb128 OBJ_aes,24L
1977
1978#define SN_aes_256_ecb "AES-256-ECB"
1979#define LN_aes_256_ecb "aes-256-ecb"
1980#define NID_aes_256_ecb 426
1981#define OBJ_aes_256_ecb OBJ_aes,41L
1982
1983#define SN_aes_256_cbc "AES-256-CBC"
1984#define LN_aes_256_cbc "aes-256-cbc"
1985#define NID_aes_256_cbc 427
1986#define OBJ_aes_256_cbc OBJ_aes,42L
1987
1988#define SN_aes_256_ofb128 "AES-256-OFB"
1989#define LN_aes_256_ofb128 "aes-256-ofb"
1990#define NID_aes_256_ofb128 428
1991#define OBJ_aes_256_ofb128 OBJ_aes,43L
1992
1993#define SN_aes_256_cfb128 "AES-256-CFB"
1994#define LN_aes_256_cfb128 "aes-256-cfb"
1995#define NID_aes_256_cfb128 429
1996#define OBJ_aes_256_cfb128 OBJ_aes,44L
1997
1998#define SN_hold_instruction_code "holdInstructionCode"
1999#define LN_hold_instruction_code "Hold Instruction Code"
2000#define NID_hold_instruction_code 430
2001#define OBJ_hold_instruction_code OBJ_id_ce,23L
2002
2003#define OBJ_holdInstruction OBJ_X9_57,2L
2004
2005#define SN_hold_instruction_none "holdInstructionNone"
2006#define LN_hold_instruction_none "Hold Instruction None"
2007#define NID_hold_instruction_none 431
2008#define OBJ_hold_instruction_none OBJ_holdInstruction,1L
2009
2010#define SN_hold_instruction_call_issuer "holdInstructionCallIssuer"
2011#define LN_hold_instruction_call_issuer "Hold Instruction Call Issuer"
2012#define NID_hold_instruction_call_issuer 432
2013#define OBJ_hold_instruction_call_issuer OBJ_holdInstruction,2L
2014
2015#define SN_hold_instruction_reject "holdInstructionReject"
2016#define LN_hold_instruction_reject "Hold Instruction Reject"
2017#define NID_hold_instruction_reject 433
2018#define OBJ_hold_instruction_reject OBJ_holdInstruction,3L
2019
2020#define SN_data "data"
2021#define NID_data 434
2022#define OBJ_data OBJ_ccitt,9L
2023
2024#define SN_pss "pss"
2025#define NID_pss 435
2026#define OBJ_pss OBJ_data,2342L
2027
2028#define SN_ucl "ucl"
2029#define NID_ucl 436
2030#define OBJ_ucl OBJ_pss,19200300L
2031
2032#define SN_pilot "pilot"
2033#define NID_pilot 437
2034#define OBJ_pilot OBJ_ucl,100L
2035
2036#define LN_pilotAttributeType "pilotAttributeType"
2037#define NID_pilotAttributeType 438
2038#define OBJ_pilotAttributeType OBJ_pilot,1L
2039
2040#define LN_pilotAttributeSyntax "pilotAttributeSyntax"
2041#define NID_pilotAttributeSyntax 439
2042#define OBJ_pilotAttributeSyntax OBJ_pilot,3L
2043
2044#define LN_pilotObjectClass "pilotObjectClass"
2045#define NID_pilotObjectClass 440
2046#define OBJ_pilotObjectClass OBJ_pilot,4L
2047
2048#define LN_pilotGroups "pilotGroups"
2049#define NID_pilotGroups 441
2050#define OBJ_pilotGroups OBJ_pilot,10L
2051
2052#define LN_iA5StringSyntax "iA5StringSyntax"
2053#define NID_iA5StringSyntax 442
2054#define OBJ_iA5StringSyntax OBJ_pilotAttributeSyntax,4L
2055
2056#define LN_caseIgnoreIA5StringSyntax "caseIgnoreIA5StringSyntax"
2057#define NID_caseIgnoreIA5StringSyntax 443
2058#define OBJ_caseIgnoreIA5StringSyntax OBJ_pilotAttributeSyntax,5L
2059
2060#define LN_pilotObject "pilotObject"
2061#define NID_pilotObject 444
2062#define OBJ_pilotObject OBJ_pilotObjectClass,3L
2063
2064#define LN_pilotPerson "pilotPerson"
2065#define NID_pilotPerson 445
2066#define OBJ_pilotPerson OBJ_pilotObjectClass,4L
2067
2068#define SN_account "account"
2069#define NID_account 446
2070#define OBJ_account OBJ_pilotObjectClass,5L
2071
2072#define SN_document "document"
2073#define NID_document 447
2074#define OBJ_document OBJ_pilotObjectClass,6L
2075
2076#define SN_room "room"
2077#define NID_room 448
2078#define OBJ_room OBJ_pilotObjectClass,7L
2079
2080#define LN_documentSeries "documentSeries"
2081#define NID_documentSeries 449
2082#define OBJ_documentSeries OBJ_pilotObjectClass,9L
2083
2084#define SN_Domain "domain"
2085#define LN_Domain "Domain"
2086#define NID_Domain 392
2087#define OBJ_Domain OBJ_pilotObjectClass,13L
2088
2089#define LN_rFC822localPart "rFC822localPart"
2090#define NID_rFC822localPart 450
2091#define OBJ_rFC822localPart OBJ_pilotObjectClass,14L
2092
2093#define LN_dNSDomain "dNSDomain"
2094#define NID_dNSDomain 451
2095#define OBJ_dNSDomain OBJ_pilotObjectClass,15L
2096
2097#define LN_domainRelatedObject "domainRelatedObject"
2098#define NID_domainRelatedObject 452
2099#define OBJ_domainRelatedObject OBJ_pilotObjectClass,17L
2100
2101#define LN_friendlyCountry "friendlyCountry"
2102#define NID_friendlyCountry 453
2103#define OBJ_friendlyCountry OBJ_pilotObjectClass,18L
2104
2105#define LN_simpleSecurityObject "simpleSecurityObject"
2106#define NID_simpleSecurityObject 454
2107#define OBJ_simpleSecurityObject OBJ_pilotObjectClass,19L
2108
2109#define LN_pilotOrganization "pilotOrganization"
2110#define NID_pilotOrganization 455
2111#define OBJ_pilotOrganization OBJ_pilotObjectClass,20L
2112
2113#define LN_pilotDSA "pilotDSA"
2114#define NID_pilotDSA 456
2115#define OBJ_pilotDSA OBJ_pilotObjectClass,21L
2116
2117#define LN_qualityLabelledData "qualityLabelledData"
2118#define NID_qualityLabelledData 457
2119#define OBJ_qualityLabelledData OBJ_pilotObjectClass,22L
2120
2121#define SN_userId "UID"
2122#define LN_userId "userId"
2123#define NID_userId 458
2124#define OBJ_userId OBJ_pilotAttributeType,1L
2125
2126#define LN_textEncodedORAddress "textEncodedORAddress"
2127#define NID_textEncodedORAddress 459
2128#define OBJ_textEncodedORAddress OBJ_pilotAttributeType,2L
2129
2130#define SN_rfc822Mailbox "mail"
2131#define LN_rfc822Mailbox "rfc822Mailbox"
2132#define NID_rfc822Mailbox 460
2133#define OBJ_rfc822Mailbox OBJ_pilotAttributeType,3L
2134
2135#define SN_info "info"
2136#define NID_info 461
2137#define OBJ_info OBJ_pilotAttributeType,4L
2138
2139#define LN_favouriteDrink "favouriteDrink"
2140#define NID_favouriteDrink 462
2141#define OBJ_favouriteDrink OBJ_pilotAttributeType,5L
2142
2143#define LN_roomNumber "roomNumber"
2144#define NID_roomNumber 463
2145#define OBJ_roomNumber OBJ_pilotAttributeType,6L
2146
2147#define SN_photo "photo"
2148#define NID_photo 464
2149#define OBJ_photo OBJ_pilotAttributeType,7L
2150
2151#define LN_userClass "userClass"
2152#define NID_userClass 465
2153#define OBJ_userClass OBJ_pilotAttributeType,8L
2154
2155#define SN_host "host"
2156#define NID_host 466
2157#define OBJ_host OBJ_pilotAttributeType,9L
2158
2159#define SN_manager "manager"
2160#define NID_manager 467
2161#define OBJ_manager OBJ_pilotAttributeType,10L
2162
2163#define LN_documentIdentifier "documentIdentifier"
2164#define NID_documentIdentifier 468
2165#define OBJ_documentIdentifier OBJ_pilotAttributeType,11L
2166
2167#define LN_documentTitle "documentTitle"
2168#define NID_documentTitle 469
2169#define OBJ_documentTitle OBJ_pilotAttributeType,12L
2170
2171#define LN_documentVersion "documentVersion"
2172#define NID_documentVersion 470
2173#define OBJ_documentVersion OBJ_pilotAttributeType,13L
2174
2175#define LN_documentAuthor "documentAuthor"
2176#define NID_documentAuthor 471
2177#define OBJ_documentAuthor OBJ_pilotAttributeType,14L
2178
2179#define LN_documentLocation "documentLocation"
2180#define NID_documentLocation 472
2181#define OBJ_documentLocation OBJ_pilotAttributeType,15L
2182
2183#define LN_homeTelephoneNumber "homeTelephoneNumber"
2184#define NID_homeTelephoneNumber 473
2185#define OBJ_homeTelephoneNumber OBJ_pilotAttributeType,20L
2186
2187#define SN_secretary "secretary"
2188#define NID_secretary 474
2189#define OBJ_secretary OBJ_pilotAttributeType,21L
2190
2191#define LN_otherMailbox "otherMailbox"
2192#define NID_otherMailbox 475
2193#define OBJ_otherMailbox OBJ_pilotAttributeType,22L
2194
2195#define LN_lastModifiedTime "lastModifiedTime"
2196#define NID_lastModifiedTime 476
2197#define OBJ_lastModifiedTime OBJ_pilotAttributeType,23L
2198
2199#define LN_lastModifiedBy "lastModifiedBy"
2200#define NID_lastModifiedBy 477
2201#define OBJ_lastModifiedBy OBJ_pilotAttributeType,24L
2202
2203#define SN_domainComponent "DC"
2204#define LN_domainComponent "domainComponent"
2205#define NID_domainComponent 391
2206#define OBJ_domainComponent OBJ_pilotAttributeType,25L
2207
2208#define LN_aRecord "aRecord"
2209#define NID_aRecord 478
2210#define OBJ_aRecord OBJ_pilotAttributeType,26L
2211
2212#define LN_pilotAttributeType27 "pilotAttributeType27"
2213#define NID_pilotAttributeType27 479
2214#define OBJ_pilotAttributeType27 OBJ_pilotAttributeType,27L
2215
2216#define LN_mXRecord "mXRecord"
2217#define NID_mXRecord 480
2218#define OBJ_mXRecord OBJ_pilotAttributeType,28L
2219
2220#define LN_nSRecord "nSRecord"
2221#define NID_nSRecord 481
2222#define OBJ_nSRecord OBJ_pilotAttributeType,29L
2223
2224#define LN_sOARecord "sOARecord"
2225#define NID_sOARecord 482
2226#define OBJ_sOARecord OBJ_pilotAttributeType,30L
2227
2228#define LN_cNAMERecord "cNAMERecord"
2229#define NID_cNAMERecord 483
2230#define OBJ_cNAMERecord OBJ_pilotAttributeType,31L
2231
2232#define LN_associatedDomain "associatedDomain"
2233#define NID_associatedDomain 484
2234#define OBJ_associatedDomain OBJ_pilotAttributeType,37L
2235
2236#define LN_associatedName "associatedName"
2237#define NID_associatedName 485
2238#define OBJ_associatedName OBJ_pilotAttributeType,38L
2239
2240#define LN_homePostalAddress "homePostalAddress"
2241#define NID_homePostalAddress 486
2242#define OBJ_homePostalAddress OBJ_pilotAttributeType,39L
2243
2244#define LN_personalTitle "personalTitle"
2245#define NID_personalTitle 487
2246#define OBJ_personalTitle OBJ_pilotAttributeType,40L
2247
2248#define LN_mobileTelephoneNumber "mobileTelephoneNumber"
2249#define NID_mobileTelephoneNumber 488
2250#define OBJ_mobileTelephoneNumber OBJ_pilotAttributeType,41L
2251
2252#define LN_pagerTelephoneNumber "pagerTelephoneNumber"
2253#define NID_pagerTelephoneNumber 489
2254#define OBJ_pagerTelephoneNumber OBJ_pilotAttributeType,42L
2255
2256#define LN_friendlyCountryName "friendlyCountryName"
2257#define NID_friendlyCountryName 490
2258#define OBJ_friendlyCountryName OBJ_pilotAttributeType,43L
2259
2260#define LN_organizationalStatus "organizationalStatus"
2261#define NID_organizationalStatus 491
2262#define OBJ_organizationalStatus OBJ_pilotAttributeType,45L
2263
2264#define LN_janetMailbox "janetMailbox"
2265#define NID_janetMailbox 492
2266#define OBJ_janetMailbox OBJ_pilotAttributeType,46L
2267
2268#define LN_mailPreferenceOption "mailPreferenceOption"
2269#define NID_mailPreferenceOption 493
2270#define OBJ_mailPreferenceOption OBJ_pilotAttributeType,47L
2271
2272#define LN_buildingName "buildingName"
2273#define NID_buildingName 494
2274#define OBJ_buildingName OBJ_pilotAttributeType,48L
2275
2276#define LN_dSAQuality "dSAQuality"
2277#define NID_dSAQuality 495
2278#define OBJ_dSAQuality OBJ_pilotAttributeType,49L
2279
2280#define LN_singleLevelQuality "singleLevelQuality"
2281#define NID_singleLevelQuality 496
2282#define OBJ_singleLevelQuality OBJ_pilotAttributeType,50L
2283
2284#define LN_subtreeMinimumQuality "subtreeMinimumQuality"
2285#define NID_subtreeMinimumQuality 497
2286#define OBJ_subtreeMinimumQuality OBJ_pilotAttributeType,51L
2287
2288#define LN_subtreeMaximumQuality "subtreeMaximumQuality"
2289#define NID_subtreeMaximumQuality 498
2290#define OBJ_subtreeMaximumQuality OBJ_pilotAttributeType,52L
2291
2292#define LN_personalSignature "personalSignature"
2293#define NID_personalSignature 499
2294#define OBJ_personalSignature OBJ_pilotAttributeType,53L
2295
2296#define LN_dITRedirect "dITRedirect"
2297#define NID_dITRedirect 500
2298#define OBJ_dITRedirect OBJ_pilotAttributeType,54L
2299
2300#define SN_audio "audio"
2301#define NID_audio 501
2302#define OBJ_audio OBJ_pilotAttributeType,55L
2303
2304#define LN_documentPublisher "documentPublisher"
2305#define NID_documentPublisher 502
2306#define OBJ_documentPublisher OBJ_pilotAttributeType,56L
2307
diff --git a/src/lib/libcrypto/opensslconf.h b/src/lib/libcrypto/opensslconf.h
new file mode 100644
index 0000000000..c9756e47a3
--- /dev/null
+++ b/src/lib/libcrypto/opensslconf.h
@@ -0,0 +1,180 @@
1/* opensslconf.h */
2/* WARNING: Generated automatically from opensslconf.h.in by Configure. */
3
4/* OpenSSL was configured with the following options: */
5#ifndef OPENSSL_DOING_MAKEDEPEND
6
7#ifndef OPENSSL_NO_KRB5
8# define OPENSSL_NO_KRB5
9#endif
10
11#endif /* OPENSSL_DOING_MAKEDEPEND */
12
13/* The OPENSSL_NO_* macros are also defined as NO_* if the application
14 asks for it. This is a transient feature that is provided for those
15 who haven't had the time to do the appropriate changes in their
16 applications. */
17#ifdef OPENSSL_ALGORITHM_DEFINES
18# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5)
19# define NO_KRB5
20# endif
21#endif
22
23/* crypto/opensslconf.h.in */
24
25/* Generate 80386 code? */
26#undef I386_ONLY
27
28#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */
29#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
30#define OPENSSLDIR "/usr/local/ssl"
31#endif
32#endif
33
34#undef OPENSSL_UNISTD
35#define OPENSSL_UNISTD <unistd.h>
36
37#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
38
39#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
40#define IDEA_INT unsigned int
41#endif
42
43#if defined(HEADER_MD2_H) && !defined(MD2_INT)
44#define MD2_INT unsigned int
45#endif
46
47#if defined(HEADER_RC2_H) && !defined(RC2_INT)
48/* I need to put in a mod for the alpha - eay */
49#define RC2_INT unsigned int
50#endif
51
52#if defined(HEADER_RC4_H)
53#if !defined(RC4_INT)
54/* using int types make the structure larger but make the code faster
55 * on most boxes I have tested - up to %20 faster. */
56/*
57 * I don't know what does "most" mean, but declaring "int" is a must on:
58 * - Intel P6 because partial register stalls are very expensive;
59 * - elder Alpha because it lacks byte load/store instructions;
60 */
61#define RC4_INT unsigned int
62#endif
63#if !defined(RC4_CHUNK)
64/*
65 * This enables code handling data aligned at natural CPU word
66 * boundary. See crypto/rc4/rc4_enc.c for further details.
67 */
68#undef RC4_CHUNK
69#endif
70#endif
71
72#if (defined(HEADER_DES_H) || defined(HEADER_DES_OLD_H)) && !defined(DES_LONG)
73/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a
74 * %20 speed up (longs are 8 bytes, int's are 4). */
75#ifndef DES_LONG
76#define DES_LONG unsigned long
77#endif
78#endif
79
80#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
81#define CONFIG_HEADER_BN_H
82#undef BN_LLONG
83
84/* Should we define BN_DIV2W here? */
85
86/* Only one for the following should be defined */
87/* The prime number generation stuff may not work when
88 * EIGHT_BIT but I don't care since I've only used this mode
89 * for debuging the bignum libraries */
90#undef SIXTY_FOUR_BIT_LONG
91#undef SIXTY_FOUR_BIT
92#define THIRTY_TWO_BIT
93#undef SIXTEEN_BIT
94#undef EIGHT_BIT
95#endif
96
97#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
98#define CONFIG_HEADER_RC4_LOCL_H
99/* if this is defined data[i] is used instead of *data, this is a %20
100 * speedup on x86 */
101#undef RC4_INDEX
102#endif
103
104#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
105#define CONFIG_HEADER_BF_LOCL_H
106#undef BF_PTR
107#endif /* HEADER_BF_LOCL_H */
108
109#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H)
110#define CONFIG_HEADER_DES_LOCL_H
111#ifndef DES_DEFAULT_OPTIONS
112/* the following is tweaked from a config script, that is why it is a
113 * protected undef/define */
114#ifndef DES_PTR
115#undef DES_PTR
116#endif
117
118/* This helps C compiler generate the correct code for multiple functional
119 * units. It reduces register dependancies at the expense of 2 more
120 * registers */
121#ifndef DES_RISC1
122#undef DES_RISC1
123#endif
124
125#ifndef DES_RISC2
126#undef DES_RISC2
127#endif
128
129#if defined(DES_RISC1) && defined(DES_RISC2)
130YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
131#endif
132
133/* Unroll the inner loop, this sometimes helps, sometimes hinders.
134 * Very mucy CPU dependant */
135#ifndef DES_UNROLL
136#undef DES_UNROLL
137#endif
138
139/* These default values were supplied by
140 * Peter Gutman <pgut001@cs.auckland.ac.nz>
141 * They are only used if nothing else has been defined */
142#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL)
143/* Special defines which change the way the code is built depending on the
144 CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find
145 even newer MIPS CPU's, but at the moment one size fits all for
146 optimization options. Older Sparc's work better with only UNROLL, but
147 there's no way to tell at compile time what it is you're running on */
148
149#if defined( sun ) /* Newer Sparc's */
150# define DES_PTR
151# define DES_RISC1
152# define DES_UNROLL
153#elif defined( __ultrix ) /* Older MIPS */
154# define DES_PTR
155# define DES_RISC2
156# define DES_UNROLL
157#elif defined( __osf1__ ) /* Alpha */
158# define DES_PTR
159# define DES_RISC2
160#elif defined ( _AIX ) /* RS6000 */
161 /* Unknown */
162#elif defined( __hpux ) /* HP-PA */
163 /* Unknown */
164#elif defined( __aux ) /* 68K */
165 /* Unknown */
166#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */
167# define DES_UNROLL
168#elif defined( __sgi ) /* Newer MIPS */
169# define DES_PTR
170# define DES_RISC2
171# define DES_UNROLL
172#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */
173# define DES_PTR
174# define DES_RISC1
175# define DES_UNROLL
176#endif /* Systems-specific speed defines */
177#endif
178
179#endif /* DES_DEFAULT_OPTIONS */
180#endif /* HEADER_DES_LOCL_H */
diff --git a/src/lib/libcrypto/opensslconf.h.in b/src/lib/libcrypto/opensslconf.h.in
index e4a8f8ad54..9082a16c46 100644
--- a/src/lib/libcrypto/opensslconf.h.in
+++ b/src/lib/libcrypto/opensslconf.h.in
@@ -1,5 +1,4 @@
1/* crypto/opensslconf.h */ 1/* crypto/opensslconf.h.in */
2/* WARNING: This file is autogenerated by Configure */
3 2
4/* Generate 80386 code? */ 3/* Generate 80386 code? */
5#undef I386_ONLY 4#undef I386_ONLY
@@ -10,8 +9,11 @@
10#endif 9#endif
11#endif 10#endif
12 11
12#undef OPENSSL_UNISTD
13#define OPENSSL_UNISTD <unistd.h> 13#define OPENSSL_UNISTD <unistd.h>
14 14
15#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
16
15#if defined(HEADER_IDEA_H) && !defined(IDEA_INT) 17#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
16#define IDEA_INT unsigned int 18#define IDEA_INT unsigned int
17#endif 19#endif
@@ -25,13 +27,27 @@
25#define RC2_INT unsigned int 27#define RC2_INT unsigned int
26#endif 28#endif
27 29
28#if defined(HEADER_RC4_H) && !defined(RC4_INT) 30#if defined(HEADER_RC4_H)
31#if !defined(RC4_INT)
29/* using int types make the structure larger but make the code faster 32/* using int types make the structure larger but make the code faster
30 * on most boxes I have tested - up to %20 faster. */ 33 * on most boxes I have tested - up to %20 faster. */
34/*
35 * I don't know what does "most" mean, but declaring "int" is a must on:
36 * - Intel P6 because partial register stalls are very expensive;
37 * - elder Alpha because it lacks byte load/store instructions;
38 */
31#define RC4_INT unsigned int 39#define RC4_INT unsigned int
32#endif 40#endif
41#if !defined(RC4_CHUNK)
42/*
43 * This enables code handling data aligned at natural CPU word
44 * boundary. See crypto/rc4/rc4_enc.c for further details.
45 */
46#undef RC4_CHUNK
47#endif
48#endif
33 49
34#if defined(HEADER_DES_H) && !defined(DES_LONG) 50#if (defined(HEADER_DES_H) || defined(HEADER_DES_OLD_H)) && !defined(DES_LONG)
35/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a 51/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a
36 * %20 speed up (longs are 8 bytes, int's are 4). */ 52 * %20 speed up (longs are 8 bytes, int's are 4). */
37#ifndef DES_LONG 53#ifndef DES_LONG
@@ -131,7 +147,7 @@ YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
131# define DES_PTR 147# define DES_PTR
132# define DES_RISC2 148# define DES_RISC2
133# define DES_UNROLL 149# define DES_UNROLL
134#elif defined( i386 ) /* x86 boxes, should be gcc */ 150#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */
135# define DES_PTR 151# define DES_PTR
136# define DES_RISC1 152# define DES_RISC1
137# define DES_UNROLL 153# define DES_UNROLL
diff --git a/src/lib/libcrypto/perlasm/x86ms.pl b/src/lib/libcrypto/perlasm/x86ms.pl
index 893b50b1a4..206452341d 100644
--- a/src/lib/libcrypto/perlasm/x86ms.pl
+++ b/src/lib/libcrypto/perlasm/x86ms.pl
@@ -1,4 +1,4 @@
1#!/usr/bin/perl 1#!/usr/local/bin/perl
2 2
3package x86ms; 3package x86ms;
4 4
@@ -51,6 +51,16 @@ sub main'DWP
51 &get_mem("DWORD",@_); 51 &get_mem("DWORD",@_);
52 } 52 }
53 53
54sub main'BC
55 {
56 return @_;
57 }
58
59sub main'DWC
60 {
61 return @_;
62 }
63
54sub main'stack_push 64sub main'stack_push
55 { 65 {
56 local($num)=@_; 66 local($num)=@_;
@@ -331,7 +341,14 @@ sub main'set_label
331 $label{$_[0]}="${label}${_[0]}"; 341 $label{$_[0]}="${label}${_[0]}";
332 $label++; 342 $label++;
333 } 343 }
334 push(@out,"$label{$_[0]}:\n"); 344 if((defined $_[2]) && ($_[2] == 1))
345 {
346 push(@out,"$label{$_[0]}::\n");
347 }
348 else
349 {
350 push(@out,"$label{$_[0]}:\n");
351 }
335 } 352 }
336 353
337sub main'data_word 354sub main'data_word
diff --git a/src/lib/libcrypto/perlasm/x86unix.pl b/src/lib/libcrypto/perlasm/x86unix.pl
index 6ee4dd3245..9ceabf0705 100644
--- a/src/lib/libcrypto/perlasm/x86unix.pl
+++ b/src/lib/libcrypto/perlasm/x86unix.pl
@@ -1,14 +1,10 @@
1#!/usr/bin/perl 1#!/usr/local/bin/perl
2
3# Because the bswapl instruction is not supported for old assembers
4# (it was a new instruction for the 486), I've added .byte xxxx code
5# to put it in.
6# eric 24-Apr-1998
7#
8 2
9package x86unix; 3package x86unix;
10 4
11$label="L000"; 5$label="L000";
6$const="";
7$constl=0;
12 8
13$align=($main'aout)?"4":"16"; 9$align=($main'aout)?"4":"16";
14$under=($main'aout)?"_":""; 10$under=($main'aout)?"_":"";
@@ -85,12 +81,17 @@ sub main'DWP
85 local($addr,$reg1,$reg2,$idx)=@_; 81 local($addr,$reg1,$reg2,$idx)=@_;
86 82
87 $ret=""; 83 $ret="";
88 $addr =~ s/(^|[+ \t])([A-Za-z_]+)($|[+ \t])/$1$under$2$3/; 84 $addr =~ s/(^|[+ \t])([A-Za-z_]+[A-Za-z0-9_]+)($|[+ \t])/$1$under$2$3/;
89 $reg1="$regs{$reg1}" if defined($regs{$reg1}); 85 $reg1="$regs{$reg1}" if defined($regs{$reg1});
90 $reg2="$regs{$reg2}" if defined($regs{$reg2}); 86 $reg2="$regs{$reg2}" if defined($regs{$reg2});
91 $ret.=$addr if ($addr ne "") && ($addr ne 0); 87 $ret.=$addr if ($addr ne "") && ($addr ne 0);
92 if ($reg2 ne "") 88 if ($reg2 ne "")
93 { $ret.="($reg1,$reg2,$idx)"; } 89 {
90 if($idx ne "")
91 { $ret.="($reg1,$reg2,$idx)"; }
92 else
93 { $ret.="($reg1,$reg2)"; }
94 }
94 else 95 else
95 { $ret.="($reg1)" } 96 { $ret.="($reg1)" }
96 return($ret); 97 return($ret);
@@ -101,6 +102,16 @@ sub main'BP
101 return(&main'DWP(@_)); 102 return(&main'DWP(@_));
102 } 103 }
103 104
105sub main'BC
106 {
107 return @_;
108 }
109
110sub main'DWC
111 {
112 return @_;
113 }
114
104#sub main'BP 115#sub main'BP
105# { 116# {
106# local($addr,$reg1,$reg2,$idx)=@_; 117# local($addr,$reg1,$reg2,$idx)=@_;
@@ -153,12 +164,29 @@ sub main'dec { &out1("decl",@_); }
153sub main'inc { &out1("incl",@_); } 164sub main'inc { &out1("incl",@_); }
154sub main'push { &out1("pushl",@_); $stack+=4; } 165sub main'push { &out1("pushl",@_); $stack+=4; }
155sub main'pop { &out1("popl",@_); $stack-=4; } 166sub main'pop { &out1("popl",@_); $stack-=4; }
156sub main'bswap { &out1("bswapl",@_); } 167sub main'pushf { &out0("pushf"); $stack+=4; }
168sub main'popf { &out0("popf"); $stack-=4; }
157sub main'not { &out1("notl",@_); } 169sub main'not { &out1("notl",@_); }
158sub main'call { &out1("call",$under.$_[0]); } 170sub main'call { &out1("call",$under.$_[0]); }
159sub main'ret { &out0("ret"); } 171sub main'ret { &out0("ret"); }
160sub main'nop { &out0("nop"); } 172sub main'nop { &out0("nop"); }
161 173
174# The bswapl instruction is new for the 486. Emulate if i386.
175sub main'bswap
176 {
177 if ($main'i386)
178 {
179 &main'comment("bswapl @_");
180 &main'exch(main'HB(@_),main'LB(@_));
181 &main'rotr(@_,16);
182 &main'exch(main'HB(@_),main'LB(@_));
183 }
184 else
185 {
186 &out1("bswapl",@_);
187 }
188 }
189
162sub out2 190sub out2
163 { 191 {
164 local($name,$p1,$p2)=@_; 192 local($name,$p1,$p2)=@_;
@@ -268,6 +296,8 @@ EOF
268 push(@out,$tmp); 296 push(@out,$tmp);
269 if ($main'cpp) 297 if ($main'cpp)
270 { $tmp=push(@out,"\tTYPE($func,\@function)\n"); } 298 { $tmp=push(@out,"\tTYPE($func,\@function)\n"); }
299 elsif ($main'gaswin)
300 { $tmp=push(@out,"\t.def\t$func;\t.scl\t2;\t.type\t32;\t.endef\n"); }
271 else { $tmp=push(@out,"\t.type\t$func,\@function\n"); } 301 else { $tmp=push(@out,"\t.type\t$func,\@function\n"); }
272 push(@out,"$func:\n"); 302 push(@out,"$func:\n");
273 $tmp=<<"EOF"; 303 $tmp=<<"EOF";
@@ -296,6 +326,8 @@ EOF
296 push(@out,$tmp); 326 push(@out,$tmp);
297 if ($main'cpp) 327 if ($main'cpp)
298 { push(@out,"\tTYPE($func,\@function)\n"); } 328 { push(@out,"\tTYPE($func,\@function)\n"); }
329 elsif ($main'gaswin)
330 { $tmp=push(@out,"\t.def\t$func;\t.scl\t2;\t.type\t32;\t.endef\n"); }
299 else { push(@out,"\t.type $func,\@function\n"); } 331 else { push(@out,"\t.type $func,\@function\n"); }
300 push(@out,"$func:\n"); 332 push(@out,"$func:\n");
301 $stack=4; 333 $stack=4;
@@ -316,8 +348,11 @@ sub main'function_end
316.${func}_end: 348.${func}_end:
317EOF 349EOF
318 push(@out,$tmp); 350 push(@out,$tmp);
351
319 if ($main'cpp) 352 if ($main'cpp)
320 { push(@out,"\tSIZE($func,.${func}_end-$func)\n"); } 353 { push(@out,"\tSIZE($func,.${func}_end-$func)\n"); }
354 elsif ($main'gaswin)
355 { $tmp=push(@out,"\t.align 4\n"); }
321 else { push(@out,"\t.size\t$func,.${func}_end-$func\n"); } 356 else { push(@out,"\t.size\t$func,.${func}_end-$func\n"); }
322 push(@out,".ident \"$func\"\n"); 357 push(@out,".ident \"$func\"\n");
323 $stack=0; 358 $stack=0;
@@ -344,10 +379,12 @@ sub main'function_end_B
344 379
345 $func=$under.$func; 380 $func=$under.$func;
346 381
347 push(@out,".${func}_end:\n"); 382 push(@out,".L_${func}_end:\n");
348 if ($main'cpp) 383 if ($main'cpp)
349 { push(@out,"\tSIZE($func,.${func}_end-$func)\n"); } 384 { push(@out,"\tSIZE($func,.L_${func}_end-$func)\n"); }
350 else { push(@out,"\t.size\t$func,.${func}_end-$func\n"); } 385 elsif ($main'gaswin)
386 { push(@out,"\t.align 4\n"); }
387 else { push(@out,"\t.size\t$func,.L_${func}_end-$func\n"); }
351 push(@out,".ident \"desasm.pl\"\n"); 388 push(@out,".ident \"desasm.pl\"\n");
352 $stack=0; 389 $stack=0;
353 %label=(); 390 %label=();
@@ -421,9 +458,87 @@ sub main'set_label
421 458
422sub main'file_end 459sub main'file_end
423 { 460 {
461 if ($const ne "")
462 {
463 push(@out,".section .rodata\n");
464 push(@out,$const);
465 $const="";
466 }
424 } 467 }
425 468
426sub main'data_word 469sub main'data_word
427 { 470 {
428 push(@out,"\t.long $_[0]\n"); 471 push(@out,"\t.long $_[0]\n");
429 } 472 }
473
474# debug output functions: puts, putx, printf
475
476sub main'puts
477 {
478 &pushvars();
479 &main'push('$Lstring' . ++$constl);
480 &main'call('puts');
481 $stack-=4;
482 &main'add("esp",4);
483 &popvars();
484
485 $const .= "Lstring$constl:\n\t.string \"@_[0]\"\n";
486 }
487
488sub main'putx
489 {
490 &pushvars();
491 &main'push($_[0]);
492 &main'push('$Lstring' . ++$constl);
493 &main'call('printf');
494 &main'add("esp",8);
495 $stack-=8;
496 &popvars();
497
498 $const .= "Lstring$constl:\n\t.string \"\%X\"\n";
499 }
500
501sub main'printf
502 {
503 $ostack = $stack;
504 &pushvars();
505 for ($i = @_ - 1; $i >= 0; $i--)
506 {
507 if ($i == 0) # change this to support %s format strings
508 {
509 &main'push('$Lstring' . ++$constl);
510 $const .= "Lstring$constl:\n\t.string \"@_[$i]\"\n";
511 }
512 else
513 {
514 if ($_[$i] =~ /([0-9]*)\(%esp\)/)
515 {
516 &main'push(($1 + $stack - $ostack) . '(%esp)');
517 }
518 else
519 {
520 &main'push($_[$i]);
521 }
522 }
523 }
524 &main'call('printf');
525 $stack-=4*@_;
526 &main'add("esp",4*@_);
527 &popvars();
528 }
529
530sub pushvars
531 {
532 &main'pushf();
533 &main'push("edx");
534 &main'push("ecx");
535 &main'push("eax");
536 }
537
538sub popvars
539 {
540 &main'pop("eax");
541 &main'pop("ecx");
542 &main'pop("edx");
543 &main'popf();
544 }
diff --git a/src/lib/libcrypto/pkcs7/bio_ber.c b/src/lib/libcrypto/pkcs7/bio_ber.c
index 2f17723e98..42331f7ab0 100644
--- a/src/lib/libcrypto/pkcs7/bio_ber.c
+++ b/src/lib/libcrypto/pkcs7/bio_ber.c
@@ -69,6 +69,7 @@ static int ber_read(BIO *h,char *buf,int size);
69static long ber_ctrl(BIO *h,int cmd,long arg1,char *arg2); 69static long ber_ctrl(BIO *h,int cmd,long arg1,char *arg2);
70static int ber_new(BIO *h); 70static int ber_new(BIO *h);
71static int ber_free(BIO *data); 71static int ber_free(BIO *data);
72static long ber_callback_ctrl(BIO *h,int cmd,void *(*fp)());
72#define BER_BUF_SIZE (32) 73#define BER_BUF_SIZE (32)
73 74
74/* This is used to hold the state of the BER objects being read. */ 75/* This is used to hold the state of the BER objects being read. */
@@ -92,7 +93,7 @@ typedef struct bio_ber_struct
92 /* most of the following are used when doing non-blocking IO */ 93 /* most of the following are used when doing non-blocking IO */
93 /* reading */ 94 /* reading */
94 long num_left; /* number of bytes still to read/write in block */ 95 long num_left; /* number of bytes still to read/write in block */
95 int depth; /* used with idefinite encoding. */ 96 int depth; /* used with indefinite encoding. */
96 int finished; /* No more read data */ 97 int finished; /* No more read data */
97 98
98 /* writting */ 99 /* writting */
@@ -115,6 +116,7 @@ static BIO_METHOD methods_ber=
115 ber_ctrl, 116 ber_ctrl,
116 ber_new, 117 ber_new,
117 ber_free, 118 ber_free,
119 ber_callback_ctrl,
118 }; 120 };
119 121
120BIO_METHOD *BIO_f_ber(void) 122BIO_METHOD *BIO_f_ber(void)
@@ -126,7 +128,7 @@ static int ber_new(BIO *bi)
126 { 128 {
127 BIO_BER_CTX *ctx; 129 BIO_BER_CTX *ctx;
128 130
129 ctx=(BIO_BER_CTX *)Malloc(sizeof(BIO_BER_CTX)); 131 ctx=(BIO_BER_CTX *)OPENSSL_malloc(sizeof(BIO_BER_CTX));
130 if (ctx == NULL) return(0); 132 if (ctx == NULL) return(0);
131 133
132 memset((char *)ctx,0,sizeof(BIO_BER_CTX)); 134 memset((char *)ctx,0,sizeof(BIO_BER_CTX));
@@ -144,7 +146,7 @@ static int ber_free(BIO *a)
144 if (a == NULL) return(0); 146 if (a == NULL) return(0);
145 b=(BIO_BER_CTX *)a->ptr; 147 b=(BIO_BER_CTX *)a->ptr;
146 memset(a->ptr,0,sizeof(BIO_BER_CTX)); 148 memset(a->ptr,0,sizeof(BIO_BER_CTX));
147 Free(a->ptr); 149 OPENSSL_free(a->ptr);
148 a->ptr=NULL; 150 a->ptr=NULL;
149 a->init=0; 151 a->init=0;
150 a->flags=0; 152 a->flags=0;
@@ -337,7 +339,7 @@ static long ber_ctrl(BIO *b, int cmd, long num, char *ptr)
337 case BIO_CTRL_RESET: 339 case BIO_CTRL_RESET:
338 ctx->ok=1; 340 ctx->ok=1;
339 ctx->finished=0; 341 ctx->finished=0;
340 EVP_CipherInit(&(ctx->cipher),NULL,NULL,NULL, 342 EVP_CipherInit_ex(&(ctx->cipher),NULL,NULL,NULL,NULL,
341 ctx->cipher.berrypt); 343 ctx->cipher.berrypt);
342 ret=BIO_ctrl(b->next_bio,cmd,num,ptr); 344 ret=BIO_ctrl(b->next_bio,cmd,num,ptr);
343 break; 345 break;
@@ -374,7 +376,7 @@ again:
374 { 376 {
375 ctx->finished=1; 377 ctx->finished=1;
376 ctx->buf_off=0; 378 ctx->buf_off=0;
377 ret=EVP_CipherFinal(&(ctx->cipher), 379 ret=EVP_CipherFinal_ex(&(ctx->cipher),
378 (unsigned char *)ctx->buf, 380 (unsigned char *)ctx->buf,
379 &(ctx->buf_len)); 381 &(ctx->buf_len));
380 ctx->ok=(int)ret; 382 ctx->ok=(int)ret;
@@ -409,6 +411,20 @@ again:
409 return(ret); 411 return(ret);
410 } 412 }
411 413
414static long ber_callback_ctrl(BIO *b, int cmd, void *(*fp)())
415 {
416 long ret=1;
417
418 if (b->next_bio == NULL) return(0);
419 switch (cmd)
420 {
421 default:
422 ret=BIO_callback_ctrl(b->next_bio,cmd,fp);
423 break;
424 }
425 return(ret);
426 }
427
412/* 428/*
413void BIO_set_cipher_ctx(b,c) 429void BIO_set_cipher_ctx(b,c)
414BIO *b; 430BIO *b;
@@ -442,7 +458,7 @@ void BIO_set_cipher(BIO *b, EVP_CIPHER *c, unsigned char *k, unsigned char *i,
442 458
443 b->init=1; 459 b->init=1;
444 ctx=(BIO_ENC_CTX *)b->ptr; 460 ctx=(BIO_ENC_CTX *)b->ptr;
445 EVP_CipherInit(&(ctx->cipher),c,k,i,e); 461 EVP_CipherInit_ex(&(ctx->cipher),c,NULL,k,i,e);
446 462
447 if (b->callback != NULL) 463 if (b->callback != NULL)
448 b->callback(b,BIO_CB_CTRL,(char *)c,BIO_CTRL_SET,e,1L); 464 b->callback(b,BIO_CB_CTRL,(char *)c,BIO_CTRL_SET,e,1L);
diff --git a/src/lib/libcrypto/pkcs7/dec.c b/src/lib/libcrypto/pkcs7/dec.c
index b3661f28d3..6752ec568a 100644
--- a/src/lib/libcrypto/pkcs7/dec.c
+++ b/src/lib/libcrypto/pkcs7/dec.c
@@ -57,6 +57,7 @@
57 */ 57 */
58#include <stdio.h> 58#include <stdio.h>
59#include <stdlib.h> 59#include <stdlib.h>
60#include <string.h>
60#include <openssl/bio.h> 61#include <openssl/bio.h>
61#include <openssl/x509.h> 62#include <openssl/x509.h>
62#include <openssl/pem.h> 63#include <openssl/pem.h>
@@ -85,7 +86,7 @@ char *argv[];
85 int i,printit=0; 86 int i,printit=0;
86 STACK_OF(PKCS7_SIGNER_INFO) *sk; 87 STACK_OF(PKCS7_SIGNER_INFO) *sk;
87 88
88 SSLeay_add_all_algorithms(); 89 OpenSSL_add_all_algorithms();
89 bio_err=BIO_new_fp(stderr,BIO_NOCLOSE); 90 bio_err=BIO_new_fp(stderr,BIO_NOCLOSE);
90 91
91 data=BIO_new(BIO_s_file()); 92 data=BIO_new(BIO_s_file());
@@ -121,9 +122,10 @@ char *argv[];
121 } 122 }
122 123
123 if ((in=BIO_new_file(keyfile,"r")) == NULL) goto err; 124 if ((in=BIO_new_file(keyfile,"r")) == NULL) goto err;
124 if ((x509=PEM_read_bio_X509(in,NULL,NULL)) == NULL) goto err; 125 if ((x509=PEM_read_bio_X509(in,NULL,NULL,NULL)) == NULL) goto err;
125 BIO_reset(in); 126 BIO_reset(in);
126 if ((pkey=PEM_read_bio_PrivateKey(in,NULL,NULL)) == NULL) goto err; 127 if ((pkey=PEM_read_bio_PrivateKey(in,NULL,NULL,NULL)) == NULL)
128 goto err;
127 BIO_free(in); 129 BIO_free(in);
128 130
129 if (pp == NULL) 131 if (pp == NULL)
@@ -131,7 +133,7 @@ char *argv[];
131 133
132 134
133 /* Load the PKCS7 object from a file */ 135 /* Load the PKCS7 object from a file */
134 if ((p7=PEM_read_bio_PKCS7(data,NULL,NULL)) == NULL) goto err; 136 if ((p7=PEM_read_bio_PKCS7(data,NULL,NULL,NULL)) == NULL) goto err;
135 137
136 138
137 139
@@ -148,7 +150,7 @@ char *argv[];
148 /* We need to process the data */ 150 /* We need to process the data */
149 /* We cannot support detached encryption */ 151 /* We cannot support detached encryption */
150 p7bio=PKCS7_dataDecode(p7,pkey,detached,x509); 152 p7bio=PKCS7_dataDecode(p7,pkey,detached,x509);
151 153
152 if (p7bio == NULL) 154 if (p7bio == NULL)
153 { 155 {
154 printf("problems decoding\n"); 156 printf("problems decoding\n");
diff --git a/src/lib/libcrypto/pkcs7/enc.c b/src/lib/libcrypto/pkcs7/enc.c
index 625a7c2285..7417f8a4e0 100644
--- a/src/lib/libcrypto/pkcs7/enc.c
+++ b/src/lib/libcrypto/pkcs7/enc.c
@@ -56,61 +56,91 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58#include <stdio.h> 58#include <stdio.h>
59#include "bio.h" 59#include <string.h>
60#include "x509.h" 60#include <openssl/bio.h>
61#include "pem.h" 61#include <openssl/x509.h>
62#include <openssl/pem.h>
63#include <openssl/err.h>
62 64
63main(argc,argv) 65int main(argc,argv)
64int argc; 66int argc;
65char *argv[]; 67char *argv[];
66 { 68 {
67 X509 *x509; 69 X509 *x509;
68 EVP_PKEY *pkey;
69 PKCS7 *p7; 70 PKCS7 *p7;
70 PKCS7 *p7_data;
71 PKCS7_SIGNER_INFO *si;
72 BIO *in; 71 BIO *in;
73 BIO *data,*p7bio; 72 BIO *data,*p7bio;
74 char buf[1024*4]; 73 char buf[1024*4];
75 int i,j; 74 int i;
76 int nodetach=0; 75 int nodetach=1;
76 char *keyfile = NULL;
77 const EVP_CIPHER *cipher=NULL;
78 STACK_OF(X509) *recips=NULL;
77 79
78 EVP_add_digest(EVP_sha1()); 80 OpenSSL_add_all_algorithms();
79 EVP_add_cipher(EVP_des_cbc());
80 81
81 data=BIO_new(BIO_s_file()); 82 data=BIO_new(BIO_s_file());
82again: 83 while(argc > 1)
83 if (argc > 1)
84 { 84 {
85 if (strcmp(argv[1],"-nd") == 0) 85 if (strcmp(argv[1],"-nd") == 0)
86 { 86 {
87 nodetach=1; 87 nodetach=1;
88 argv++; argc--; 88 argv++; argc--;
89 goto again;
90 } 89 }
91 if (!BIO_read_filename(data,argv[1])) 90 else if ((strcmp(argv[1],"-c") == 0) && (argc >= 2)) {
92 goto err; 91 if(!(cipher = EVP_get_cipherbyname(argv[2]))) {
93 } 92 fprintf(stderr, "Unknown cipher %s\n", argv[2]);
94 else 93 goto err;
95 BIO_set_fp(data,stdin,BIO_NOCLOSE); 94 }
95 argc-=2;
96 argv+=2;
97 } else if ((strcmp(argv[1],"-k") == 0) && (argc >= 2)) {
98 keyfile = argv[2];
99 argc-=2;
100 argv+=2;
101 if (!(in=BIO_new_file(keyfile,"r"))) goto err;
102 if (!(x509=PEM_read_bio_X509(in,NULL,NULL,NULL)))
103 goto err;
104 if(!recips) recips = sk_X509_new_null();
105 sk_X509_push(recips, x509);
106 BIO_free(in);
107 } else break;
108 }
96 109
97 if ((in=BIO_new_file("server.pem","r")) == NULL) goto err; 110 if(!recips) {
98 if ((x509=PEM_read_bio_X509(in,NULL,NULL)) == NULL) goto err; 111 fprintf(stderr, "No recipients\n");
112 goto err;
113 }
114
115 if (!BIO_read_filename(data,argv[1])) goto err;
116
117 p7=PKCS7_new();
118#if 0
99 BIO_reset(in); 119 BIO_reset(in);
100 if ((pkey=PEM_read_bio_PrivateKey(in,NULL,NULL)) == NULL) goto err; 120 if ((pkey=PEM_read_bio_PrivateKey(in,NULL,NULL)) == NULL) goto err;
101 BIO_free(in); 121 BIO_free(in);
102
103 p7=PKCS7_new();
104 PKCS7_set_type(p7,NID_pkcs7_signedAndEnveloped); 122 PKCS7_set_type(p7,NID_pkcs7_signedAndEnveloped);
105 123
106 if (PKCS7_add_signature(p7,x509,pkey,EVP_sha1()) == NULL) goto err; 124 if (PKCS7_add_signature(p7,x509,pkey,EVP_sha1()) == NULL) goto err;
107
108 if (!PKCS7_set_cipher(p7,EVP_des_cbc())) goto err;
109 if (PKCS7_add_recipient(p7,x509) == NULL) goto err;
110
111 /* we may want to add more */ 125 /* we may want to add more */
112 PKCS7_add_certificate(p7,x509); 126 PKCS7_add_certificate(p7,x509);
127#else
128 PKCS7_set_type(p7,NID_pkcs7_enveloped);
129#endif
130 if(!cipher) {
131#ifndef OPENSSL_NO_DES
132 cipher = EVP_des_ede3_cbc();
133#else
134 fprintf(stderr, "No cipher selected\n");
135 goto err;
136#endif
137 }
113 138
139 if (!PKCS7_set_cipher(p7,cipher)) goto err;
140 for(i = 0; i < sk_X509_num(recips); i++) {
141 if (!PKCS7_add_recipient(p7,sk_X509_value(recips, i))) goto err;
142 }
143 sk_X509_pop_free(recips, X509_free);
114 144
115 /* Set the content of the signed to 'data' */ 145 /* Set the content of the signed to 'data' */
116 /* PKCS7_content_new(p7,NID_pkcs7_data); not used in envelope */ 146 /* PKCS7_content_new(p7,NID_pkcs7_data); not used in envelope */
@@ -129,7 +159,7 @@ again:
129 } 159 }
130 BIO_flush(p7bio); 160 BIO_flush(p7bio);
131 161
132 if (!PKCS7_dataSign(p7,p7bio)) goto err; 162 if (!PKCS7_dataFinal(p7,p7bio)) goto err;
133 BIO_free(p7bio); 163 BIO_free(p7bio);
134 164
135 PEM_write_PKCS7(stdout,p7); 165 PEM_write_PKCS7(stdout,p7);
diff --git a/src/lib/libcrypto/pkcs7/example.c b/src/lib/libcrypto/pkcs7/example.c
index 7354890084..c993947cc3 100644
--- a/src/lib/libcrypto/pkcs7/example.c
+++ b/src/lib/libcrypto/pkcs7/example.c
@@ -1,7 +1,9 @@
1#include <stdio.h> 1#include <stdio.h>
2#include <stdlib.h> 2#include <stdlib.h>
3#include <string.h>
3#include <openssl/pkcs7.h> 4#include <openssl/pkcs7.h>
4#include <openssl/asn1_mac.h> 5#include <openssl/asn1_mac.h>
6#include <openssl/x509.h>
5 7
6int add_signed_time(PKCS7_SIGNER_INFO *si) 8int add_signed_time(PKCS7_SIGNER_INFO *si)
7 { 9 {
@@ -36,7 +38,7 @@ void add_signed_string(PKCS7_SIGNER_INFO *si, char *str)
36 signed_string_nid= 38 signed_string_nid=
37 OBJ_create("1.2.3.4.5","OID_example","Our example OID"); 39 OBJ_create("1.2.3.4.5","OID_example","Our example OID");
38 os=ASN1_OCTET_STRING_new(); 40 os=ASN1_OCTET_STRING_new();
39 ASN1_OCTET_STRING_set(os,str,strlen(str)); 41 ASN1_OCTET_STRING_set(os,(unsigned char*)str,strlen(str));
40 /* When we add, we do not free */ 42 /* When we add, we do not free */
41 PKCS7_add_signed_attribute(si,signed_string_nid, 43 PKCS7_add_signed_attribute(si,signed_string_nid,
42 V_ASN1_OCTET_STRING,(char *)os); 44 V_ASN1_OCTET_STRING,(char *)os);
@@ -68,7 +70,7 @@ int get_signed_string(PKCS7_SIGNER_INFO *si, char *buf, int len)
68 return(0); 70 return(0);
69 } 71 }
70 72
71static signed_seq2string_nid= -1; 73static int signed_seq2string_nid= -1;
72/* ########################################### */ 74/* ########################################### */
73int add_signed_seq2string(PKCS7_SIGNER_INFO *si, char *str1, char *str2) 75int add_signed_seq2string(PKCS7_SIGNER_INFO *si, char *str1, char *str2)
74 { 76 {
@@ -86,8 +88,8 @@ int add_signed_seq2string(PKCS7_SIGNER_INFO *si, char *str1, char *str2)
86 88
87 os1=ASN1_OCTET_STRING_new(); 89 os1=ASN1_OCTET_STRING_new();
88 os2=ASN1_OCTET_STRING_new(); 90 os2=ASN1_OCTET_STRING_new();
89 ASN1_OCTET_STRING_set(os1,str1,strlen(str1)); 91 ASN1_OCTET_STRING_set(os1,(unsigned char*)str1,strlen(str1));
90 ASN1_OCTET_STRING_set(os2,str1,strlen(str1)); 92 ASN1_OCTET_STRING_set(os2,(unsigned char*)str1,strlen(str1));
91 i =i2d_ASN1_OCTET_STRING(os1,NULL); 93 i =i2d_ASN1_OCTET_STRING(os1,NULL);
92 i+=i2d_ASN1_OCTET_STRING(os2,NULL); 94 i+=i2d_ASN1_OCTET_STRING(os2,NULL);
93 total=ASN1_object_size(1,i,V_ASN1_SEQUENCE); 95 total=ASN1_object_size(1,i,V_ASN1_SEQUENCE);
@@ -197,7 +199,7 @@ X509_ATTRIBUTE *create_string(char *str)
197 signed_string_nid= 199 signed_string_nid=
198 OBJ_create("1.2.3.4.5","OID_example","Our example OID"); 200 OBJ_create("1.2.3.4.5","OID_example","Our example OID");
199 os=ASN1_OCTET_STRING_new(); 201 os=ASN1_OCTET_STRING_new();
200 ASN1_OCTET_STRING_set(os,str,strlen(str)); 202 ASN1_OCTET_STRING_set(os,(unsigned char*)str,strlen(str));
201 /* When we add, we do not free */ 203 /* When we add, we do not free */
202 ret=X509_ATTRIBUTE_create(signed_string_nid, 204 ret=X509_ATTRIBUTE_create(signed_string_nid,
203 V_ASN1_OCTET_STRING,(char *)os); 205 V_ASN1_OCTET_STRING,(char *)os);
@@ -250,8 +252,8 @@ X509_ATTRIBUTE *add_seq2string(PKCS7_SIGNER_INFO *si, char *str1, char *str2)
250 252
251 os1=ASN1_OCTET_STRING_new(); 253 os1=ASN1_OCTET_STRING_new();
252 os2=ASN1_OCTET_STRING_new(); 254 os2=ASN1_OCTET_STRING_new();
253 ASN1_OCTET_STRING_set(os1,str1,strlen(str1)); 255 ASN1_OCTET_STRING_set(os1,(unsigned char*)str1,strlen(str1));
254 ASN1_OCTET_STRING_set(os2,str1,strlen(str1)); 256 ASN1_OCTET_STRING_set(os2,(unsigned char*)str1,strlen(str1));
255 i =i2d_ASN1_OCTET_STRING(os1,NULL); 257 i =i2d_ASN1_OCTET_STRING(os1,NULL);
256 i+=i2d_ASN1_OCTET_STRING(os2,NULL); 258 i+=i2d_ASN1_OCTET_STRING(os2,NULL);
257 total=ASN1_object_size(1,i,V_ASN1_SEQUENCE); 259 total=ASN1_object_size(1,i,V_ASN1_SEQUENCE);
diff --git a/src/lib/libcrypto/pkcs7/pk7_dgst.c b/src/lib/libcrypto/pkcs7/pk7_dgst.c
index 7769abeb1e..90edfa5001 100644
--- a/src/lib/libcrypto/pkcs7/pk7_dgst.c
+++ b/src/lib/libcrypto/pkcs7/pk7_dgst.c
@@ -58,9 +58,9 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include "evp.h" 61#include <openssl/evp.h>
62#include "rand.h" 62#include <openssl/rand.h>
63#include "objects.h" 63#include <openssl/objects.h>
64#include "x509.h" 64#include <openssl/x509.h>
65#include "pkcs7.h" 65#include <openssl/pkcs7.h>
66 66
diff --git a/src/lib/libcrypto/pkcs7/pk7_enc.c b/src/lib/libcrypto/pkcs7/pk7_enc.c
index a5b6dc463f..acbb189c59 100644
--- a/src/lib/libcrypto/pkcs7/pk7_enc.c
+++ b/src/lib/libcrypto/pkcs7/pk7_enc.c
@@ -58,11 +58,11 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include "evp.h" 61#include <openssl/evp.h>
62#include "rand.h" 62#include <openssl/rand.h>
63#include "objects.h" 63#include <openssl/objects.h>
64#include "x509.h" 64#include <openssl/x509.h>
65#include "pkcs7.h" 65#include <openssl/pkcs7.h>
66 66
67PKCS7_in_bio(PKCS7 *p7,BIO *in); 67PKCS7_in_bio(PKCS7 *p7,BIO *in);
68PKCS7_out_bio(PKCS7 *p7,BIO *out); 68PKCS7_out_bio(PKCS7 *p7,BIO *out);
diff --git a/src/lib/libcrypto/pkcs7/sign.c b/src/lib/libcrypto/pkcs7/sign.c
index ead1cb65ca..8b59885f7e 100644
--- a/src/lib/libcrypto/pkcs7/sign.c
+++ b/src/lib/libcrypto/pkcs7/sign.c
@@ -56,29 +56,38 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58#include <stdio.h> 58#include <stdio.h>
59#include "bio.h" 59#include <string.h>
60#include "x509.h" 60#include <openssl/bio.h>
61#include "pem.h" 61#include <openssl/x509.h>
62#include <openssl/pem.h>
63#include <openssl/err.h>
62 64
63main(argc,argv) 65int main(argc,argv)
64int argc; 66int argc;
65char *argv[]; 67char *argv[];
66 { 68 {
67 X509 *x509; 69 X509 *x509;
68 EVP_PKEY *pkey; 70 EVP_PKEY *pkey;
69 PKCS7 *p7; 71 PKCS7 *p7;
70 PKCS7 *p7_data;
71 PKCS7_SIGNER_INFO *si; 72 PKCS7_SIGNER_INFO *si;
72 BIO *in; 73 BIO *in;
73 BIO *data,*p7bio; 74 BIO *data,*p7bio;
74 char buf[1024*4]; 75 char buf[1024*4];
75 int i,j; 76 int i;
76 int nodetach=0; 77 int nodetach=0;
77 78
79#ifndef OPENSSL_NO_MD2
78 EVP_add_digest(EVP_md2()); 80 EVP_add_digest(EVP_md2());
81#endif
82#ifndef OPENSSL_NO_MD5
79 EVP_add_digest(EVP_md5()); 83 EVP_add_digest(EVP_md5());
84#endif
85#ifndef OPENSSL_NO_SHA1
80 EVP_add_digest(EVP_sha1()); 86 EVP_add_digest(EVP_sha1());
87#endif
88#ifndef OPENSSL_NO_MDC2
81 EVP_add_digest(EVP_mdc2()); 89 EVP_add_digest(EVP_mdc2());
90#endif
82 91
83 data=BIO_new(BIO_s_file()); 92 data=BIO_new(BIO_s_file());
84again: 93again:
@@ -97,15 +106,20 @@ again:
97 BIO_set_fp(data,stdin,BIO_NOCLOSE); 106 BIO_set_fp(data,stdin,BIO_NOCLOSE);
98 107
99 if ((in=BIO_new_file("server.pem","r")) == NULL) goto err; 108 if ((in=BIO_new_file("server.pem","r")) == NULL) goto err;
100 if ((x509=PEM_read_bio_X509(in,NULL,NULL)) == NULL) goto err; 109 if ((x509=PEM_read_bio_X509(in,NULL,NULL,NULL)) == NULL) goto err;
101 BIO_reset(in); 110 BIO_reset(in);
102 if ((pkey=PEM_read_bio_PrivateKey(in,NULL,NULL)) == NULL) goto err; 111 if ((pkey=PEM_read_bio_PrivateKey(in,NULL,NULL,NULL)) == NULL) goto err;
103 BIO_free(in); 112 BIO_free(in);
104 113
105 p7=PKCS7_new(); 114 p7=PKCS7_new();
106 PKCS7_set_type(p7,NID_pkcs7_signed); 115 PKCS7_set_type(p7,NID_pkcs7_signed);
107 116
108 if (PKCS7_add_signature(p7,x509,pkey,EVP_sha1()) == NULL) goto err; 117 si=PKCS7_add_signature(p7,x509,pkey,EVP_sha1());
118 if (si == NULL) goto err;
119
120 /* If you do this then you get signing time automatically added */
121 PKCS7_add_signed_attribute(si, NID_pkcs9_contentType, V_ASN1_OBJECT,
122 OBJ_nid2obj(NID_pkcs7_data));
109 123
110 /* we may want to add more */ 124 /* we may want to add more */
111 PKCS7_add_certificate(p7,x509); 125 PKCS7_add_certificate(p7,x509);
@@ -125,7 +139,7 @@ again:
125 BIO_write(p7bio,buf,i); 139 BIO_write(p7bio,buf,i);
126 } 140 }
127 141
128 if (!PKCS7_dataSign(p7,p7bio)) goto err; 142 if (!PKCS7_dataFinal(p7,p7bio)) goto err;
129 BIO_free(p7bio); 143 BIO_free(p7bio);
130 144
131 PEM_write_PKCS7(stdout,p7); 145 PEM_write_PKCS7(stdout,p7);
diff --git a/src/lib/libcrypto/pkcs7/verify.c b/src/lib/libcrypto/pkcs7/verify.c
index 0e1c1b26dc..5f7afe8933 100644
--- a/src/lib/libcrypto/pkcs7/verify.c
+++ b/src/lib/libcrypto/pkcs7/verify.c
@@ -56,41 +56,50 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58#include <stdio.h> 58#include <stdio.h>
59#include "asn1.h" 59#include <string.h>
60#include "bio.h" 60#include <openssl/bio.h>
61#include "x509.h" 61#include <openssl/asn1.h>
62#include "pem.h" 62#include <openssl/x509.h>
63#include <openssl/pem.h>
64#include <openssl/err.h>
65#include "example.h"
63 66
64int verify_callback(int ok, X509_STORE_CTX *ctx); 67int verify_callback(int ok, X509_STORE_CTX *ctx);
65 68
66BIO *bio_err=NULL; 69BIO *bio_err=NULL;
70BIO *bio_out=NULL;
67 71
68main(argc,argv) 72int main(argc,argv)
69int argc; 73int argc;
70char *argv[]; 74char *argv[];
71 { 75 {
72 X509 *x509,*x;
73 PKCS7 *p7; 76 PKCS7 *p7;
74 PKCS7_SIGNED *s;
75 PKCS7_SIGNER_INFO *si; 77 PKCS7_SIGNER_INFO *si;
76 PKCS7_ISSUER_AND_SERIAL *ias;
77 X509_STORE_CTX cert_ctx; 78 X509_STORE_CTX cert_ctx;
78 X509_STORE *cert_store=NULL; 79 X509_STORE *cert_store=NULL;
79 X509_LOOKUP *lookup=NULL;
80 BIO *data,*detached=NULL,*p7bio=NULL; 80 BIO *data,*detached=NULL,*p7bio=NULL;
81 char buf[1024*4]; 81 char buf[1024*4];
82 unsigned char *p,*pp; 82 char *pp;
83 int i,j,printit=0; 83 int i,printit=0;
84 STACK *sk; 84 STACK_OF(PKCS7_SIGNER_INFO) *sk;
85 85
86 bio_err=BIO_new_fp(stderr,BIO_NOCLOSE); 86 bio_err=BIO_new_fp(stderr,BIO_NOCLOSE);
87 bio_out=BIO_new_fp(stdout,BIO_NOCLOSE);
88#ifndef OPENSSL_NO_MD2
87 EVP_add_digest(EVP_md2()); 89 EVP_add_digest(EVP_md2());
90#endif
91#ifndef OPENSSL_NO_MD5
88 EVP_add_digest(EVP_md5()); 92 EVP_add_digest(EVP_md5());
93#endif
94#ifndef OPENSSL_NO_SHA1
89 EVP_add_digest(EVP_sha1()); 95 EVP_add_digest(EVP_sha1());
96#endif
97#ifndef OPENSSL_NO_MDC2
90 EVP_add_digest(EVP_mdc2()); 98 EVP_add_digest(EVP_mdc2());
99#endif
91 100
92 data=BIO_new(BIO_s_file()); 101 data=BIO_new(BIO_s_file());
93again: 102
94 pp=NULL; 103 pp=NULL;
95 while (argc > 1) 104 while (argc > 1)
96 { 105 {
@@ -121,7 +130,7 @@ again:
121 130
122 131
123 /* Load the PKCS7 object from a file */ 132 /* Load the PKCS7 object from a file */
124 if ((p7=PEM_read_bio_PKCS7(data,NULL,NULL)) == NULL) goto err; 133 if ((p7=PEM_read_bio_PKCS7(data,NULL,NULL,NULL)) == NULL) goto err;
125 134
126 /* This stuff is being setup for certificate verification. 135 /* This stuff is being setup for certificate verification.
127 * When using SSL, it could be replaced with a 136 * When using SSL, it could be replaced with a
@@ -131,10 +140,10 @@ again:
131 X509_STORE_load_locations(cert_store,NULL,"../../certs"); 140 X509_STORE_load_locations(cert_store,NULL,"../../certs");
132 X509_STORE_set_verify_cb_func(cert_store,verify_callback); 141 X509_STORE_set_verify_cb_func(cert_store,verify_callback);
133 142
134 ERR_clear_errors(); 143 ERR_clear_error();
135 144
136 /* We need to process the data */ 145 /* We need to process the data */
137 if (PKCS7_get_detached(p7)) 146 if ((PKCS7_get_detached(p7) || detached))
138 { 147 {
139 if (detached == NULL) 148 if (detached == NULL)
140 { 149 {
@@ -166,12 +175,29 @@ again:
166 } 175 }
167 176
168 /* Ok, first we need to, for each subject entry, see if we can verify */ 177 /* Ok, first we need to, for each subject entry, see if we can verify */
169 for (i=0; i<sk_num(sk); i++) 178 for (i=0; i<sk_PKCS7_SIGNER_INFO_num(sk); i++)
170 { 179 {
171 si=(PKCS7_SIGNER_INFO *)sk_value(sk,i); 180 ASN1_UTCTIME *tm;
181 char *str1,*str2;
182
183 si=sk_PKCS7_SIGNER_INFO_value(sk,i);
172 i=PKCS7_dataVerify(cert_store,&cert_ctx,p7bio,p7,si); 184 i=PKCS7_dataVerify(cert_store,&cert_ctx,p7bio,p7,si);
173 if (i <= 0) 185 if (i <= 0)
174 goto err; 186 goto err;
187 printf("signer info\n");
188 if ((tm=get_signed_time(si)) != NULL)
189 {
190 BIO_printf(bio_out,"Signed time:");
191 ASN1_UTCTIME_print(bio_out,tm);
192 ASN1_UTCTIME_free(tm);
193 BIO_printf(bio_out,"\n");
194 }
195 if (get_signed_seq2string(si,&str1,&str2))
196 {
197 BIO_printf(bio_out,"String 1 is %s\n",str1);
198 BIO_printf(bio_out,"String 2 is %s\n",str2);
199 }
200
175 } 201 }
176 202
177 X509_STORE_free(cert_store); 203 X509_STORE_free(cert_store);
@@ -185,9 +211,7 @@ err:
185 } 211 }
186 212
187/* should be X509 * but we can just have them as char *. */ 213/* should be X509 * but we can just have them as char *. */
188int verify_callback(ok, ctx) 214int verify_callback(int ok, X509_STORE_CTX *ctx)
189int ok;
190X509_STORE_CTX *ctx;
191 { 215 {
192 char buf[256]; 216 char buf[256];
193 X509 *err_cert; 217 X509 *err_cert;
diff --git a/src/lib/libcrypto/rand/md_rand.c b/src/lib/libcrypto/rand/md_rand.c
index f44b36a8b9..a00ed70718 100644
--- a/src/lib/libcrypto/rand/md_rand.c
+++ b/src/lib/libcrypto/rand/md_rand.c
@@ -55,100 +55,185 @@
55 * copied and put under another distribution licence 55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ====================================================================
59 * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved.
60 *
61 * Redistribution and use in source and binary forms, with or without
62 * modification, are permitted provided that the following conditions
63 * are met:
64 *
65 * 1. Redistributions of source code must retain the above copyright
66 * notice, this list of conditions and the following disclaimer.
67 *
68 * 2. Redistributions in binary form must reproduce the above copyright
69 * notice, this list of conditions and the following disclaimer in
70 * the documentation and/or other materials provided with the
71 * distribution.
72 *
73 * 3. All advertising materials mentioning features or use of this
74 * software must display the following acknowledgment:
75 * "This product includes software developed by the OpenSSL Project
76 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
77 *
78 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
79 * endorse or promote products derived from this software without
80 * prior written permission. For written permission, please contact
81 * openssl-core@openssl.org.
82 *
83 * 5. Products derived from this software may not be called "OpenSSL"
84 * nor may "OpenSSL" appear in their names without prior written
85 * permission of the OpenSSL Project.
86 *
87 * 6. Redistributions of any form whatsoever must retain the following
88 * acknowledgment:
89 * "This product includes software developed by the OpenSSL Project
90 * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
91 *
92 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
93 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
94 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
95 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
96 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
97 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
98 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
99 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
100 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
101 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
102 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
103 * OF THE POSSIBILITY OF SUCH DAMAGE.
104 * ====================================================================
105 *
106 * This product includes cryptographic software written by Eric Young
107 * (eay@cryptsoft.com). This product includes software written by Tim
108 * Hudson (tjh@cryptsoft.com).
109 *
110 */
58 111
59#include <stdio.h> 112#ifdef MD_RAND_DEBUG
60#include "cryptlib.h" 113# ifndef NDEBUG
61#include <sys/types.h> 114# define NDEBUG
62#include <time.h> 115# endif
63
64#if !defined(USE_MD5_RAND) && !defined(USE_SHA1_RAND) && !defined(USE_MDC2_RAND) && !defined(USE_MD2_RAND)
65#ifndef NO_MD5
66#define USE_MD5_RAND
67#elif !defined(NO_SHA1)
68#define USE_SHA1_RAND
69#elif !defined(NO_MDC2)
70#define USE_MDC2_RAND
71#elif !defined(NO_MD2)
72#define USE_MD2_RAND
73#else
74We need a message digest of some type
75#endif
76#endif 116#endif
77 117
78/* Changed how the state buffer used. I now attempt to 'wrap' such 118#include <assert.h>
79 * that I don't run over the same locations the next time go through 119#include <stdio.h>
80 * the 1023 bytes - many thanks to 120#include <string.h>
81 * Robert J. LeBlanc <rjl@renaissoft.com> for his comments
82 */
83 121
84#if defined(USE_MD5_RAND) 122#include "e_os.h"
85#include "md5.h"
86#define MD_DIGEST_LENGTH MD5_DIGEST_LENGTH
87#define MD_CTX MD5_CTX
88#define MD_Init(a) MD5_Init(a)
89#define MD_Update(a,b,c) MD5_Update(a,b,c)
90#define MD_Final(a,b) MD5_Final(a,b)
91#elif defined(USE_SHA1_RAND)
92#include "sha.h"
93#define MD_DIGEST_LENGTH SHA_DIGEST_LENGTH
94#define MD_CTX SHA_CTX
95#define MD_Init(a) SHA1_Init(a)
96#define MD_Update(a,b,c) SHA1_Update(a,b,c)
97#define MD_Final(a,b) SHA1_Final(a,b)
98#elif defined(USE_MDC2_RAND)
99#include "mdc2.h"
100#define MD_DIGEST_LENGTH MDC2_DIGEST_LENGTH
101#define MD_CTX MDC2_CTX
102#define MD_Init(a) MDC2_Init(a)
103#define MD_Update(a,b,c) MDC2_Update(a,b,c)
104#define MD_Final(a,b) MDC2_Final(a,b)
105#elif defined(USE_MD2_RAND)
106#include "md2.h"
107#define MD_DIGEST_LENGTH MD2_DIGEST_LENGTH
108#define MD_CTX MD2_CTX
109#define MD_Init(a) MD2_Init(a)
110#define MD_Update(a,b,c) MD2_Update(a,b,c)
111#define MD_Final(a,b) MD2_Final(a,b)
112#endif
113 123
114#include "rand.h" 124#include <openssl/rand.h>
125#include "rand_lcl.h"
115 126
116/*#define NORAND 1 */ 127#include <openssl/crypto.h>
117/*#define PREDICT 1 */ 128#include <openssl/err.h>
129
130#ifdef BN_DEBUG
131# define PREDICT
132#endif
133
134/* #define PREDICT 1 */
118 135
119#define STATE_SIZE 1023 136#define STATE_SIZE 1023
120static int state_num=0,state_index=0; 137static int state_num=0,state_index=0;
121static unsigned char state[STATE_SIZE+MD_DIGEST_LENGTH]; 138static unsigned char state[STATE_SIZE+MD_DIGEST_LENGTH];
122static unsigned char md[MD_DIGEST_LENGTH]; 139static unsigned char md[MD_DIGEST_LENGTH];
123static int md_count=0; 140static long md_count[2]={0,0};
141static double entropy=0;
142static int initialized=0;
124 143
125char *RAND_version="RAND part of SSLeay 0.9.0b 29-Jun-1998"; 144static unsigned int crypto_lock_rand = 0; /* may be set only when a thread
145 * holds CRYPTO_LOCK_RAND
146 * (to prevent double locking) */
147/* access to lockin_thread is synchronized by CRYPTO_LOCK_RAND2 */
148static unsigned long locking_thread = 0; /* valid iff crypto_lock_rand is set */
126 149
127void RAND_cleanup() 150
151#ifdef PREDICT
152int rand_predictable=0;
153#endif
154
155const char *RAND_version="RAND" OPENSSL_VERSION_PTEXT;
156
157static void ssleay_rand_cleanup(void);
158static void ssleay_rand_seed(const void *buf, int num);
159static void ssleay_rand_add(const void *buf, int num, double add_entropy);
160static int ssleay_rand_bytes(unsigned char *buf, int num);
161static int ssleay_rand_pseudo_bytes(unsigned char *buf, int num);
162static int ssleay_rand_status(void);
163
164RAND_METHOD rand_ssleay_meth={
165 ssleay_rand_seed,
166 ssleay_rand_bytes,
167 ssleay_rand_cleanup,
168 ssleay_rand_add,
169 ssleay_rand_pseudo_bytes,
170 ssleay_rand_status
171 };
172
173RAND_METHOD *RAND_SSLeay(void)
174 {
175 return(&rand_ssleay_meth);
176 }
177
178static void ssleay_rand_cleanup(void)
128 { 179 {
129 memset(state,0,sizeof(state)); 180 memset(state,0,sizeof(state));
130 state_num=0; 181 state_num=0;
131 state_index=0; 182 state_index=0;
132 memset(md,0,MD_DIGEST_LENGTH); 183 memset(md,0,MD_DIGEST_LENGTH);
133 md_count=0; 184 md_count[0]=0;
185 md_count[1]=0;
186 entropy=0;
187 initialized=0;
134 } 188 }
135 189
136void RAND_seed(buf,num) 190static void ssleay_rand_add(const void *buf, int num, double add)
137unsigned char *buf;
138int num;
139 { 191 {
140 int i,j,k,st_idx,st_num; 192 int i,j,k,st_idx;
141 MD_CTX m; 193 long md_c[2];
142 194 unsigned char local_md[MD_DIGEST_LENGTH];
143#ifdef NORAND 195 EVP_MD_CTX m;
144 return; 196 int do_not_lock;
145#endif 197
198 /*
199 * (Based on the rand(3) manpage)
200 *
201 * The input is chopped up into units of 20 bytes (or less for
202 * the last block). Each of these blocks is run through the hash
203 * function as follows: The data passed to the hash function
204 * is the current 'md', the same number of bytes from the 'state'
205 * (the location determined by in incremented looping index) as
206 * the current 'block', the new key data 'block', and 'count'
207 * (which is incremented after each use).
208 * The result of this is kept in 'md' and also xored into the
209 * 'state' at the same locations that were used as input into the
210 * hash function.
211 */
212
213 /* check if we already have the lock */
214 if (crypto_lock_rand)
215 {
216 CRYPTO_r_lock(CRYPTO_LOCK_RAND2);
217 do_not_lock = (locking_thread == CRYPTO_thread_id());
218 CRYPTO_r_unlock(CRYPTO_LOCK_RAND2);
219 }
220 else
221 do_not_lock = 0;
146 222
147 CRYPTO_w_lock(CRYPTO_LOCK_RAND); 223 if (!do_not_lock) CRYPTO_w_lock(CRYPTO_LOCK_RAND);
148 st_idx=state_index; 224 st_idx=state_index;
149 st_num=state_num;
150 225
151 state_index=(state_index+num); 226 /* use our own copies of the counters so that even
227 * if a concurrent thread seeds with exactly the
228 * same data and uses the same subarray there's _some_
229 * difference */
230 md_c[0] = md_count[0];
231 md_c[1] = md_count[1];
232
233 memcpy(local_md, md, sizeof md);
234
235 /* state_index <= state_num <= STATE_SIZE */
236 state_index += num;
152 if (state_index >= STATE_SIZE) 237 if (state_index >= STATE_SIZE)
153 { 238 {
154 state_index%=STATE_SIZE; 239 state_index%=STATE_SIZE;
@@ -159,15 +244,24 @@ int num;
159 if (state_index > state_num) 244 if (state_index > state_num)
160 state_num=state_index; 245 state_num=state_index;
161 } 246 }
162 CRYPTO_w_unlock(CRYPTO_LOCK_RAND); 247 /* state_index <= state_num <= STATE_SIZE */
163 248
249 /* state[st_idx], ..., state[(st_idx + num - 1) % STATE_SIZE]
250 * are what we will use now, but other threads may use them
251 * as well */
252
253 md_count[1] += (num / MD_DIGEST_LENGTH) + (num % MD_DIGEST_LENGTH > 0);
254
255 if (!do_not_lock) CRYPTO_w_unlock(CRYPTO_LOCK_RAND);
256
257 EVP_MD_CTX_init(&m);
164 for (i=0; i<num; i+=MD_DIGEST_LENGTH) 258 for (i=0; i<num; i+=MD_DIGEST_LENGTH)
165 { 259 {
166 j=(num-i); 260 j=(num-i);
167 j=(j > MD_DIGEST_LENGTH)?MD_DIGEST_LENGTH:j; 261 j=(j > MD_DIGEST_LENGTH)?MD_DIGEST_LENGTH:j;
168 262
169 MD_Init(&m); 263 MD_Init(&m);
170 MD_Update(&m,md,MD_DIGEST_LENGTH); 264 MD_Update(&m,local_md,MD_DIGEST_LENGTH);
171 k=(st_idx+j)-STATE_SIZE; 265 k=(st_idx+j)-STATE_SIZE;
172 if (k > 0) 266 if (k > 0)
173 { 267 {
@@ -178,228 +272,301 @@ int num;
178 MD_Update(&m,&(state[st_idx]),j); 272 MD_Update(&m,&(state[st_idx]),j);
179 273
180 MD_Update(&m,buf,j); 274 MD_Update(&m,buf,j);
181 MD_Final(md,&m); 275 MD_Update(&m,(unsigned char *)&(md_c[0]),sizeof(md_c));
276 MD_Final(&m,local_md);
277 md_c[1]++;
182 278
183 buf+=j; 279 buf=(const char *)buf + j;
184 280
185 for (k=0; k<j; k++) 281 for (k=0; k<j; k++)
186 { 282 {
187 state[st_idx++]^=md[k]; 283 /* Parallel threads may interfere with this,
284 * but always each byte of the new state is
285 * the XOR of some previous value of its
286 * and local_md (itermediate values may be lost).
287 * Alway using locking could hurt performance more
288 * than necessary given that conflicts occur only
289 * when the total seeding is longer than the random
290 * state. */
291 state[st_idx++]^=local_md[k];
188 if (st_idx >= STATE_SIZE) 292 if (st_idx >= STATE_SIZE)
189 {
190 st_idx=0; 293 st_idx=0;
191 st_num=STATE_SIZE;
192 }
193 } 294 }
194 } 295 }
195 memset((char *)&m,0,sizeof(m)); 296 EVP_MD_CTX_cleanup(&m);
297
298 if (!do_not_lock) CRYPTO_w_lock(CRYPTO_LOCK_RAND);
299 /* Don't just copy back local_md into md -- this could mean that
300 * other thread's seeding remains without effect (except for
301 * the incremented counter). By XORing it we keep at least as
302 * much entropy as fits into md. */
303 for (k = 0; k < sizeof md; k++)
304 {
305 md[k] ^= local_md[k];
306 }
307 if (entropy < ENTROPY_NEEDED) /* stop counting when we have enough */
308 entropy += add;
309 if (!do_not_lock) CRYPTO_w_unlock(CRYPTO_LOCK_RAND);
310
311#if !defined(OPENSSL_THREADS) && !defined(OPENSSL_SYS_WIN32)
312 assert(md_c[1] == md_count[1]);
313#endif
196 } 314 }
197 315
198void RAND_bytes(buf,num) 316static void ssleay_rand_seed(const void *buf, int num)
199unsigned char *buf;
200int num;
201 { 317 {
318 ssleay_rand_add(buf, num, num);
319 }
320
321static int ssleay_rand_bytes(unsigned char *buf, int num)
322 {
323 static volatile int stirred_pool = 0;
202 int i,j,k,st_num,st_idx; 324 int i,j,k,st_num,st_idx;
203 MD_CTX m; 325 int num_ceil;
204 static int init=1; 326 int ok;
205 unsigned long l; 327 long md_c[2];
206#ifdef DEVRANDOM 328 unsigned char local_md[MD_DIGEST_LENGTH];
207 FILE *fh; 329 EVP_MD_CTX m;
330#ifndef GETPID_IS_MEANINGLESS
331 pid_t curr_pid = getpid();
208#endif 332#endif
333 int do_stir_pool = 0;
209 334
210#ifdef PREDICT 335#ifdef PREDICT
211 { 336 if (rand_predictable)
212 static unsigned char val=0; 337 {
338 static unsigned char val=0;
213 339
214 for (i=0; i<num; i++) 340 for (i=0; i<num; i++)
215 buf[i]=val++; 341 buf[i]=val++;
216 return; 342 return(1);
217 } 343 }
218#endif 344#endif
219 345
346 if (num <= 0)
347 return 1;
348
349 EVP_MD_CTX_init(&m);
350 /* round upwards to multiple of MD_DIGEST_LENGTH/2 */
351 num_ceil = (1 + (num-1)/(MD_DIGEST_LENGTH/2)) * (MD_DIGEST_LENGTH/2);
352
353 /*
354 * (Based on the rand(3) manpage:)
355 *
356 * For each group of 10 bytes (or less), we do the following:
357 *
358 * Input into the hash function the local 'md' (which is initialized from
359 * the global 'md' before any bytes are generated), the bytes that are to
360 * be overwritten by the random bytes, and bytes from the 'state'
361 * (incrementing looping index). From this digest output (which is kept
362 * in 'md'), the top (up to) 10 bytes are returned to the caller and the
363 * bottom 10 bytes are xored into the 'state'.
364 *
365 * Finally, after we have finished 'num' random bytes for the
366 * caller, 'count' (which is incremented) and the local and global 'md'
367 * are fed into the hash function and the results are kept in the
368 * global 'md'.
369 */
370
220 CRYPTO_w_lock(CRYPTO_LOCK_RAND); 371 CRYPTO_w_lock(CRYPTO_LOCK_RAND);
221 372
222 if (init) 373 /* prevent ssleay_rand_bytes() from trying to obtain the lock again */
374 CRYPTO_w_lock(CRYPTO_LOCK_RAND2);
375 locking_thread = CRYPTO_thread_id();
376 CRYPTO_w_unlock(CRYPTO_LOCK_RAND2);
377 crypto_lock_rand = 1;
378
379 if (!initialized)
223 { 380 {
224 init=0; 381 RAND_poll();
225 CRYPTO_w_unlock(CRYPTO_LOCK_RAND); 382 initialized = 1;
226 /* put in some default random data, we need more than 383 }
227 * just this */ 384
228 RAND_seed((unsigned char *)&m,sizeof(m)); 385 if (!stirred_pool)
229#ifndef MSDOS 386 do_stir_pool = 1;
230 l=getpid(); 387
231 RAND_seed((unsigned char *)&l,sizeof(l)); 388 ok = (entropy >= ENTROPY_NEEDED);
232 l=getuid(); 389 if (!ok)
233 RAND_seed((unsigned char *)&l,sizeof(l)); 390 {
234#endif 391 /* If the PRNG state is not yet unpredictable, then seeing
235 l=time(NULL); 392 * the PRNG output may help attackers to determine the new
236 RAND_seed((unsigned char *)&l,sizeof(l)); 393 * state; thus we have to decrease the entropy estimate.
237 394 * Once we've had enough initial seeding we don't bother to
238/* #ifdef DEVRANDOM */ 395 * adjust the entropy count, though, because we're not ambitious
239 /* 396 * to provide *information-theoretic* randomness.
240 * Use a random entropy pool device. 397 *
241 * Linux 1.3.x and FreeBSD-Current has 398 * NOTE: This approach fails if the program forks before
242 * this. Use /dev/urandom if you can 399 * we have enough entropy. Entropy should be collected
243 * as /dev/random will block if it runs out 400 * in a separate input pool and be transferred to the
244 * of random entries. 401 * output pool only when the entropy limit has been reached.
245 */ 402 */
246 if ((fh = fopen(DEVRANDOM, "r")) != NULL) 403 entropy -= num;
404 if (entropy < 0)
405 entropy = 0;
406 }
407
408 if (do_stir_pool)
409 {
410 /* In the output function only half of 'md' remains secret,
411 * so we better make sure that the required entropy gets
412 * 'evenly distributed' through 'state', our randomness pool.
413 * The input function (ssleay_rand_add) chains all of 'md',
414 * which makes it more suitable for this purpose.
415 */
416
417 int n = STATE_SIZE; /* so that the complete pool gets accessed */
418 while (n > 0)
247 { 419 {
248 unsigned char tmpbuf[32]; 420#if MD_DIGEST_LENGTH > 20
249 421# error "Please adjust DUMMY_SEED."
250 fread((unsigned char *)tmpbuf,1,32,fh);
251 /* we don't care how many bytes we read,
252 * we will just copy the 'stack' if there is
253 * nothing else :-) */
254 fclose(fh);
255 RAND_seed(tmpbuf,32);
256 memset(tmpbuf,0,32);
257 }
258/* #endif */
259#ifdef PURIFY
260 memset(state,0,STATE_SIZE);
261 memset(md,0,MD_DIGEST_LENGTH);
262#endif 422#endif
263 CRYPTO_w_lock(CRYPTO_LOCK_RAND); 423#define DUMMY_SEED "...................." /* at least MD_DIGEST_LENGTH */
424 /* Note that the seed does not matter, it's just that
425 * ssleay_rand_add expects to have something to hash. */
426 ssleay_rand_add(DUMMY_SEED, MD_DIGEST_LENGTH, 0.0);
427 n -= MD_DIGEST_LENGTH;
428 }
429 if (ok)
430 stirred_pool = 1;
264 } 431 }
265 432
266 st_idx=state_index; 433 st_idx=state_index;
267 st_num=state_num; 434 st_num=state_num;
268 state_index+=num; 435 md_c[0] = md_count[0];
436 md_c[1] = md_count[1];
437 memcpy(local_md, md, sizeof md);
438
439 state_index+=num_ceil;
269 if (state_index > state_num) 440 if (state_index > state_num)
270 state_index=(state_index%state_num); 441 state_index %= state_num;
271 442
443 /* state[st_idx], ..., state[(st_idx + num_ceil - 1) % st_num]
444 * are now ours (but other threads may use them too) */
445
446 md_count[0] += 1;
447
448 /* before unlocking, we must clear 'crypto_lock_rand' */
449 crypto_lock_rand = 0;
272 CRYPTO_w_unlock(CRYPTO_LOCK_RAND); 450 CRYPTO_w_unlock(CRYPTO_LOCK_RAND);
273 451
274 while (num > 0) 452 while (num > 0)
275 { 453 {
454 /* num_ceil -= MD_DIGEST_LENGTH/2 */
276 j=(num >= MD_DIGEST_LENGTH/2)?MD_DIGEST_LENGTH/2:num; 455 j=(num >= MD_DIGEST_LENGTH/2)?MD_DIGEST_LENGTH/2:num;
277 num-=j; 456 num-=j;
278 MD_Init(&m); 457 MD_Init(&m);
279 MD_Update(&m,&(md[MD_DIGEST_LENGTH/2]),MD_DIGEST_LENGTH/2); 458#ifndef GETPID_IS_MEANINGLESS
459 if (curr_pid) /* just in the first iteration to save time */
460 {
461 MD_Update(&m,(unsigned char*)&curr_pid,sizeof curr_pid);
462 curr_pid = 0;
463 }
464#endif
465 MD_Update(&m,local_md,MD_DIGEST_LENGTH);
466 MD_Update(&m,(unsigned char *)&(md_c[0]),sizeof(md_c));
280#ifndef PURIFY 467#ifndef PURIFY
281 MD_Update(&m,buf,j); /* purify complains */ 468 MD_Update(&m,buf,j); /* purify complains */
282#endif 469#endif
283 k=(st_idx+j)-st_num; 470 k=(st_idx+MD_DIGEST_LENGTH/2)-st_num;
284 if (k > 0) 471 if (k > 0)
285 { 472 {
286 MD_Update(&m,&(state[st_idx]),j-k); 473 MD_Update(&m,&(state[st_idx]),MD_DIGEST_LENGTH/2-k);
287 MD_Update(&m,&(state[0]),k); 474 MD_Update(&m,&(state[0]),k);
288 } 475 }
289 else 476 else
290 MD_Update(&m,&(state[st_idx]),j); 477 MD_Update(&m,&(state[st_idx]),MD_DIGEST_LENGTH/2);
291 MD_Final(md,&m); 478 MD_Final(&m,local_md);
292 479
293 for (i=0; i<j; i++) 480 for (i=0; i<MD_DIGEST_LENGTH/2; i++)
294 { 481 {
482 state[st_idx++]^=local_md[i]; /* may compete with other threads */
295 if (st_idx >= st_num) 483 if (st_idx >= st_num)
296 st_idx=0; 484 st_idx=0;
297 state[st_idx++]^=md[i]; 485 if (i < j)
298 *(buf++)=md[i+MD_DIGEST_LENGTH/2]; 486 *(buf++)=local_md[i+MD_DIGEST_LENGTH/2];
299 } 487 }
300 } 488 }
301 489
302 MD_Init(&m); 490 MD_Init(&m);
303 MD_Update(&m,(unsigned char *)&md_count,sizeof(md_count)); md_count++; 491 MD_Update(&m,(unsigned char *)&(md_c[0]),sizeof(md_c));
492 MD_Update(&m,local_md,MD_DIGEST_LENGTH);
493 CRYPTO_w_lock(CRYPTO_LOCK_RAND);
304 MD_Update(&m,md,MD_DIGEST_LENGTH); 494 MD_Update(&m,md,MD_DIGEST_LENGTH);
305 MD_Final(md,&m); 495 MD_Final(&m,md);
306 memset(&m,0,sizeof(m)); 496 CRYPTO_w_unlock(CRYPTO_LOCK_RAND);
497
498 EVP_MD_CTX_cleanup(&m);
499 if (ok)
500 return(1);
501 else
502 {
503 RANDerr(RAND_F_SSLEAY_RAND_BYTES,RAND_R_PRNG_NOT_SEEDED);
504 ERR_add_error_data(1, "You need to read the OpenSSL FAQ, "
505 "http://www.openssl.org/support/faq.html");
506 return(0);
507 }
307 } 508 }
308 509
309#ifdef WINDOWS 510/* pseudo-random bytes that are guaranteed to be unique but not
310#include <windows.h> 511 unpredictable */
311#include <rand.h> 512static int ssleay_rand_pseudo_bytes(unsigned char *buf, int num)
513 {
514 int ret;
515 unsigned long err;
312 516
313/***************************************************************************** 517 ret = RAND_bytes(buf, num);
314 * Initialisation function for the SSL random generator. Takes the contents 518 if (ret == 0)
315 * of the screen as random seed. 519 {
316 * 520 err = ERR_peek_error();
317 * Created 960901 by Gertjan van Oosten, gertjan@West.NL, West Consulting B.V. 521 if (ERR_GET_LIB(err) == ERR_LIB_RAND &&
318 * 522 ERR_GET_REASON(err) == RAND_R_PRNG_NOT_SEEDED)
319 * Code adapted from 523 (void)ERR_get_error();
320 * <URL:http://www.microsoft.com/kb/developr/win_dk/q97193.htm>; 524 }
321 * the original copyright message is: 525 return (ret);
322 *
323// (C) Copyright Microsoft Corp. 1993. All rights reserved.
324//
325// You have a royalty-free right to use, modify, reproduce and
326// distribute the Sample Files (and/or any modified version) in
327// any way you find useful, provided that you agree that
328// Microsoft has no warranty obligations or liability for any
329// Sample Application Files which are modified.
330 */
331/*
332 * I have modified the loading of bytes via RAND_seed() mechanism since
333 * the origional would have been very very CPU intensive since RAND_seed()
334 * does an MD5 per 16 bytes of input. The cost to digest 16 bytes is the same
335 * as that to digest 56 bytes. So under the old system, a screen of
336 * 1024*768*256 would have been CPU cost of approximatly 49,000 56 byte MD5
337 * digests or digesting 2.7 mbytes. What I have put in place would
338 * be 48 16k MD5 digests, or efectivly 48*16+48 MD5 bytes or 816 kbytes
339 * or about 3.5 times as much.
340 * - eric
341 */
342void RAND_screen(void)
343{
344 HDC hScrDC; /* screen DC */
345 HDC hMemDC; /* memory DC */
346 HBITMAP hBitmap; /* handle for our bitmap */
347 HBITMAP hOldBitmap; /* handle for previous bitmap */
348 BITMAP bm; /* bitmap properties */
349 unsigned int size; /* size of bitmap */
350 char *bmbits; /* contents of bitmap */
351 int w; /* screen width */
352 int h; /* screen height */
353 int y; /* y-coordinate of screen lines to grab */
354 int n = 16; /* number of screen lines to grab at a time */
355
356 /* Create a screen DC and a memory DC compatible to screen DC */
357 hScrDC = CreateDC("DISPLAY", NULL, NULL, NULL);
358 hMemDC = CreateCompatibleDC(hScrDC);
359
360 /* Get screen resolution */
361 w = GetDeviceCaps(hScrDC, HORZRES);
362 h = GetDeviceCaps(hScrDC, VERTRES);
363
364 /* Create a bitmap compatible with the screen DC */
365 hBitmap = CreateCompatibleBitmap(hScrDC, w, n);
366
367 /* Select new bitmap into memory DC */
368 hOldBitmap = SelectObject(hMemDC, hBitmap);
369
370 /* Get bitmap properties */
371 GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&bm);
372 size = (unsigned int)bm.bmWidthBytes * bm.bmHeight * bm.bmPlanes;
373
374 bmbits = Malloc(size);
375 if (bmbits) {
376 /* Now go through the whole screen, repeatedly grabbing n lines */
377 for (y = 0; y < h-n; y += n)
378 {
379 unsigned char md[MD_DIGEST_LENGTH];
380
381 /* Bitblt screen DC to memory DC */
382 BitBlt(hMemDC, 0, 0, w, n, hScrDC, 0, y, SRCCOPY);
383
384 /* Copy bitmap bits from memory DC to bmbits */
385 GetBitmapBits(hBitmap, size, bmbits);
386
387 /* Get the MD5 of the bitmap */
388 MD5(bmbits,size,md);
389
390 /* Seed the random generator with the MD5 digest */
391 RAND_seed(md, MD_DIGEST_LENGTH);
392 } 526 }
393 527
394 Free(bmbits); 528static int ssleay_rand_status(void)
395 } 529 {
530 int ret;
531 int do_not_lock;
396 532
397 /* Select old bitmap back into memory DC */ 533 /* check if we already have the lock
398 hBitmap = SelectObject(hMemDC, hOldBitmap); 534 * (could happen if a RAND_poll() implementation calls RAND_status()) */
535 if (crypto_lock_rand)
536 {
537 CRYPTO_r_lock(CRYPTO_LOCK_RAND2);
538 do_not_lock = (locking_thread == CRYPTO_thread_id());
539 CRYPTO_r_unlock(CRYPTO_LOCK_RAND2);
540 }
541 else
542 do_not_lock = 0;
543
544 if (!do_not_lock)
545 {
546 CRYPTO_w_lock(CRYPTO_LOCK_RAND);
547
548 /* prevent ssleay_rand_bytes() from trying to obtain the lock again */
549 CRYPTO_w_lock(CRYPTO_LOCK_RAND2);
550 locking_thread = CRYPTO_thread_id();
551 CRYPTO_w_unlock(CRYPTO_LOCK_RAND2);
552 crypto_lock_rand = 1;
553 }
554
555 if (!initialized)
556 {
557 RAND_poll();
558 initialized = 1;
559 }
399 560
400 /* Clean up */ 561 ret = entropy >= ENTROPY_NEEDED;
401 DeleteObject(hBitmap); 562
402 DeleteDC(hMemDC); 563 if (!do_not_lock)
403 DeleteDC(hScrDC); 564 {
404} 565 /* before unlocking, we must clear 'crypto_lock_rand' */
405#endif 566 crypto_lock_rand = 0;
567
568 CRYPTO_w_unlock(CRYPTO_LOCK_RAND);
569 }
570
571 return ret;
572 }
diff --git a/src/lib/libcrypto/rand/rand_egd.c b/src/lib/libcrypto/rand/rand_egd.c
index d834408bd4..97ed12cf67 100644
--- a/src/lib/libcrypto/rand/rand_egd.c
+++ b/src/lib/libcrypto/rand/rand_egd.c
@@ -1,5 +1,5 @@
1/* crypto/rand/rand_egd.c */ 1/* crypto/rand/rand_egd.c */
2/* Written by Ulf Moeller for the OpenSSL project. */ 2/* Written by Ulf Moeller and Lutz Jaenicke for the OpenSSL project. */
3/* ==================================================================== 3/* ====================================================================
4 * Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved. 4 * Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved.
5 * 5 *
@@ -54,35 +54,92 @@
54 * 54 *
55 */ 55 */
56 56
57#include <openssl/e_os2.h>
57#include <openssl/rand.h> 58#include <openssl/rand.h>
58 59
59/* Query the EGD <URL: http://www.lothar.com/tech/crypto/>. 60/*
61 * Query the EGD <URL: http://www.lothar.com/tech/crypto/>.
62 *
63 * This module supplies three routines:
64 *
65 * RAND_query_egd_bytes(path, buf, bytes)
66 * will actually query "bytes" bytes of entropy form the egd-socket located
67 * at path and will write them to buf (if supplied) or will directly feed
68 * it to RAND_seed() if buf==NULL.
69 * The number of bytes is not limited by the maximum chunk size of EGD,
70 * which is 255 bytes. If more than 255 bytes are wanted, several chunks
71 * of entropy bytes are requested. The connection is left open until the
72 * query is competed.
73 * RAND_query_egd_bytes() returns with
74 * -1 if an error occured during connection or communication.
75 * num the number of bytes read from the EGD socket. This number is either
76 * the number of bytes requested or smaller, if the EGD pool is
77 * drained and the daemon signals that the pool is empty.
78 * This routine does not touch any RAND_status(). This is necessary, since
79 * PRNG functions may call it during initialization.
80 *
81 * RAND_egd_bytes(path, bytes) will query "bytes" bytes and have them
82 * used to seed the PRNG.
83 * RAND_egd_bytes() is a wrapper for RAND_query_egd_bytes() with buf=NULL.
84 * Unlike RAND_query_egd_bytes(), RAND_status() is used to test the
85 * seed status so that the return value can reflect the seed state:
86 * -1 if an error occured during connection or communication _or_
87 * if the PRNG has still not received the required seeding.
88 * num the number of bytes read from the EGD socket. This number is either
89 * the number of bytes requested or smaller, if the EGD pool is
90 * drained and the daemon signals that the pool is empty.
91 *
92 * RAND_egd(path) will query 255 bytes and use the bytes retreived to seed
93 * the PRNG.
94 * RAND_egd() is a wrapper for RAND_egd_bytes() with numbytes=255.
60 */ 95 */
61 96
62#if defined(WIN32) || defined(VMS) || defined(__VMS) 97#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_VMS)
98int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes)
99 {
100 return(-1);
101 }
63int RAND_egd(const char *path) 102int RAND_egd(const char *path)
64 { 103 {
65 return(-1); 104 return(-1);
66 } 105 }
106
107int RAND_egd_bytes(const char *path,int bytes)
108 {
109 return(-1);
110 }
67#else 111#else
68#include <openssl/opensslconf.h> 112#include <openssl/opensslconf.h>
69#include OPENSSL_UNISTD 113#include OPENSSL_UNISTD
70#include <sys/types.h> 114#include <sys/types.h>
71#include <sys/socket.h> 115#include <sys/socket.h>
72#include <sys/un.h> 116#ifndef NO_SYS_UN_H
117# ifdef OPENSSL_SYS_VSWORKS
118# include <streams/un.h>
119# else
120# include <sys/un.h>
121# endif
122#else
123struct sockaddr_un {
124 short sun_family; /* AF_UNIX */
125 char sun_path[108]; /* path name (gag) */
126};
127#endif /* NO_SYS_UN_H */
73#include <string.h> 128#include <string.h>
129#include <errno.h>
74 130
75#ifndef offsetof 131#ifndef offsetof
76# define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) 132# define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
77#endif 133#endif
78 134
79int RAND_egd(const char *path) 135int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes)
80 { 136 {
81 int ret = -1; 137 int ret = 0;
82 struct sockaddr_un addr; 138 struct sockaddr_un addr;
83 int len, num; 139 int len, num, numbytes;
84 int fd = -1; 140 int fd = -1;
85 unsigned char buf[256]; 141 int success;
142 unsigned char egdbuf[2], tempbuf[255], *retrievebuf;
86 143
87 memset(&addr, 0, sizeof(addr)); 144 memset(&addr, 0, sizeof(addr));
88 addr.sun_family = AF_UNIX; 145 addr.sun_family = AF_UNIX;
@@ -92,19 +149,150 @@ int RAND_egd(const char *path)
92 len = offsetof(struct sockaddr_un, sun_path) + strlen(path); 149 len = offsetof(struct sockaddr_un, sun_path) + strlen(path);
93 fd = socket(AF_UNIX, SOCK_STREAM, 0); 150 fd = socket(AF_UNIX, SOCK_STREAM, 0);
94 if (fd == -1) return (-1); 151 if (fd == -1) return (-1);
95 if (connect(fd, (struct sockaddr *)&addr, len) == -1) goto err; 152 success = 0;
96 buf[0] = 1; 153 while (!success)
97 buf[1] = 255; 154 {
98 write(fd, buf, 2); 155 if (connect(fd, (struct sockaddr *)&addr, len) == 0)
99 if (read(fd, buf, 1) != 1) goto err; 156 success = 1;
100 if (buf[0] == 0) goto err; 157 else
101 num = read(fd, buf, 255); 158 {
159 switch (errno)
160 {
161#ifdef EINTR
162 case EINTR:
163#endif
164#ifdef EAGAIN
165 case EAGAIN:
166#endif
167#ifdef EINPROGRESS
168 case EINPROGRESS:
169#endif
170#ifdef EALREADY
171 case EALREADY:
172#endif
173 /* No error, try again */
174 break;
175#ifdef EISCONN
176 case EISCONN:
177 success = 1;
178 break;
179#endif
180 default:
181 goto err; /* failure */
182 }
183 }
184 }
185
186 while(bytes > 0)
187 {
188 egdbuf[0] = 1;
189 egdbuf[1] = bytes < 255 ? bytes : 255;
190 numbytes = 0;
191 while (numbytes != 2)
192 {
193 num = write(fd, egdbuf + numbytes, 2 - numbytes);
194 if (num >= 0)
195 numbytes += num;
196 else
197 {
198 switch (errno)
199 {
200#ifdef EINTR
201 case EINTR:
202#endif
203#ifdef EAGAIN
204 case EAGAIN:
205#endif
206 /* No error, try again */
207 break;
208 default:
209 ret = -1;
210 goto err; /* failure */
211 }
212 }
213 }
214 numbytes = 0;
215 while (numbytes != 1)
216 {
217 num = read(fd, egdbuf, 1);
218 if (num >= 0)
219 numbytes += num;
220 else
221 {
222 switch (errno)
223 {
224#ifdef EINTR
225 case EINTR:
226#endif
227#ifdef EAGAIN
228 case EAGAIN:
229#endif
230 /* No error, try again */
231 break;
232 default:
233 ret = -1;
234 goto err; /* failure */
235 }
236 }
237 }
238 if(egdbuf[0] == 0)
239 goto err;
240 if (buf)
241 retrievebuf = buf + ret;
242 else
243 retrievebuf = tempbuf;
244 numbytes = 0;
245 while (numbytes != egdbuf[0])
246 {
247 num = read(fd, retrievebuf + numbytes, egdbuf[0] - numbytes);
248 if (num >= 0)
249 numbytes += num;
250 else
251 {
252 switch (errno)
253 {
254#ifdef EINTR
255 case EINTR:
256#endif
257#ifdef EAGAIN
258 case EAGAIN:
259#endif
260 /* No error, try again */
261 break;
262 default:
263 ret = -1;
264 goto err; /* failure */
265 }
266 }
267 }
268 ret += egdbuf[0];
269 bytes -= egdbuf[0];
270 if (!buf)
271 RAND_seed(tempbuf, egdbuf[0]);
272 }
273 err:
274 if (fd != -1) close(fd);
275 return(ret);
276 }
277
278
279int RAND_egd_bytes(const char *path, int bytes)
280 {
281 int num, ret = 0;
282
283 num = RAND_query_egd_bytes(path, NULL, bytes);
102 if (num < 1) goto err; 284 if (num < 1) goto err;
103 RAND_seed(buf, num);
104 if (RAND_status() == 1) 285 if (RAND_status() == 1)
105 ret = num; 286 ret = num;
106 err: 287 err:
107 if (fd != -1) close(fd);
108 return(ret); 288 return(ret);
109 } 289 }
290
291
292int RAND_egd(const char *path)
293 {
294 return (RAND_egd_bytes(path, 255));
295 }
296
297
110#endif 298#endif
diff --git a/src/lib/libcrypto/rand/rand_lcl.h b/src/lib/libcrypto/rand/rand_lcl.h
index 120e9366d2..618a8ec899 100644
--- a/src/lib/libcrypto/rand/rand_lcl.h
+++ b/src/lib/libcrypto/rand/rand_lcl.h
@@ -1,4 +1,4 @@
1/* crypto/rand/md_rand.c */ 1/* crypto/rand/rand_lcl.h */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -112,72 +112,46 @@
112#ifndef HEADER_RAND_LCL_H 112#ifndef HEADER_RAND_LCL_H
113#define HEADER_RAND_LCL_H 113#define HEADER_RAND_LCL_H
114 114
115#define ENTROPY_NEEDED 20 /* require 160 bits = 20 bytes of randomness */ 115#define ENTROPY_NEEDED 32 /* require 256 bits = 32 bytes of randomness */
116 116
117 117
118#if !defined(USE_MD5_RAND) && !defined(USE_SHA1_RAND) && !defined(USE_MDC2_RAND) && !defined(USE_MD2_RAND) 118#if !defined(USE_MD5_RAND) && !defined(USE_SHA1_RAND) && !defined(USE_MDC2_RAND) && !defined(USE_MD2_RAND)
119#if !defined(NO_SHA) && !defined(NO_SHA1) 119#if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA1)
120#define USE_SHA1_RAND 120#define USE_SHA1_RAND
121#elif !defined(NO_MD5) 121#elif !defined(OPENSSL_NO_MD5)
122#define USE_MD5_RAND 122#define USE_MD5_RAND
123#elif !defined(NO_MDC2) && !defined(NO_DES) 123#elif !defined(OPENSSL_NO_MDC2) && !defined(OPENSSL_NO_DES)
124#define USE_MDC2_RAND 124#define USE_MDC2_RAND
125#elif !defined(NO_MD2) 125#elif !defined(OPENSSL_NO_MD2)
126#define USE_MD2_RAND 126#define USE_MD2_RAND
127#else 127#else
128#error No message digest algorithm available 128#error No message digest algorithm available
129#endif 129#endif
130#endif 130#endif
131 131
132#include <openssl/evp.h>
133#define MD_Update(a,b,c) EVP_DigestUpdate(a,b,c)
134#define MD_Final(a,b) EVP_DigestFinal_ex(a,b,NULL)
132#if defined(USE_MD5_RAND) 135#if defined(USE_MD5_RAND)
133#include <openssl/md5.h> 136#include <openssl/md5.h>
134#define MD_DIGEST_LENGTH MD5_DIGEST_LENGTH 137#define MD_DIGEST_LENGTH MD5_DIGEST_LENGTH
135#define MD(a,b,c) MD5(a,b,c) 138#define MD_Init(a) EVP_DigestInit_ex(a,EVP_md5(), NULL)
139#define MD(a,b,c) EVP_Digest(a,b,c,NULL,EVP_md5(), NULL)
136#elif defined(USE_SHA1_RAND) 140#elif defined(USE_SHA1_RAND)
137#include <openssl/sha.h> 141#include <openssl/sha.h>
138#define MD_DIGEST_LENGTH SHA_DIGEST_LENGTH 142#define MD_DIGEST_LENGTH SHA_DIGEST_LENGTH
139#define MD(a,b,c) SHA1(a,b,c) 143#define MD_Init(a) EVP_DigestInit_ex(a,EVP_sha1(), NULL)
144#define MD(a,b,c) EVP_Digest(a,b,c,NULL,EVP_sha1(), NULL)
140#elif defined(USE_MDC2_RAND) 145#elif defined(USE_MDC2_RAND)
141#include <openssl/mdc2.h> 146#include <openssl/mdc2.h>
142#define MD_DIGEST_LENGTH MDC2_DIGEST_LENGTH 147#define MD_DIGEST_LENGTH MDC2_DIGEST_LENGTH
143#define MD(a,b,c) MDC2(a,b,c) 148#define MD_Init(a) EVP_DigestInit_ex(a,EVP_mdc2(), NULL)
149#define MD(a,b,c) EVP_Digest(a,b,c,NULL,EVP_mdc2(), NULL)
144#elif defined(USE_MD2_RAND) 150#elif defined(USE_MD2_RAND)
145#include <openssl/md2.h> 151#include <openssl/md2.h>
146#define MD_DIGEST_LENGTH MD2_DIGEST_LENGTH 152#define MD_DIGEST_LENGTH MD2_DIGEST_LENGTH
147#define MD(a,b,c) MD2(a,b,c) 153#define MD_Init(a) EVP_DigestInit_ex(a,EVP_md2(), NULL)
148#endif 154#define MD(a,b,c) EVP_Digest(a,b,c,NULL,EVP_md2(), NULL)
149#if defined(USE_MD5_RAND)
150#include <openssl/md5.h>
151#define MD_DIGEST_LENGTH MD5_DIGEST_LENGTH
152#define MD_CTX MD5_CTX
153#define MD_Init(a) MD5_Init(a)
154#define MD_Update(a,b,c) MD5_Update(a,b,c)
155#define MD_Final(a,b) MD5_Final(a,b)
156#define MD(a,b,c) MD5(a,b,c)
157#elif defined(USE_SHA1_RAND)
158#include <openssl/sha.h>
159#define MD_DIGEST_LENGTH SHA_DIGEST_LENGTH
160#define MD_CTX SHA_CTX
161#define MD_Init(a) SHA1_Init(a)
162#define MD_Update(a,b,c) SHA1_Update(a,b,c)
163#define MD_Final(a,b) SHA1_Final(a,b)
164#define MD(a,b,c) SHA1(a,b,c)
165#elif defined(USE_MDC2_RAND)
166#include <openssl/mdc2.h>
167#define MD_DIGEST_LENGTH MDC2_DIGEST_LENGTH
168#define MD_CTX MDC2_CTX
169#define MD_Init(a) MDC2_Init(a)
170#define MD_Update(a,b,c) MDC2_Update(a,b,c)
171#define MD_Final(a,b) MDC2_Final(a,b)
172#define MD(a,b,c) MDC2(a,b,c)
173#elif defined(USE_MD2_RAND)
174#include <openssl/md2.h>
175#define MD_DIGEST_LENGTH MD2_DIGEST_LENGTH
176#define MD_CTX MD2_CTX
177#define MD_Init(a) MD2_Init(a)
178#define MD_Update(a,b,c) MD2_Update(a,b,c)
179#define MD_Final(a,b) MD2_Final(a,b)
180#define MD(a,b,c) MD2(a,b,c)
181#endif 155#endif
182 156
183 157
diff --git a/src/lib/libcrypto/rand/rand_unix.c b/src/lib/libcrypto/rand/rand_unix.c
index 0b29235130..5a78009e9a 100644
--- a/src/lib/libcrypto/rand/rand_unix.c
+++ b/src/lib/libcrypto/rand/rand_unix.c
@@ -122,43 +122,6 @@
122#include <unistd.h> 122#include <unistd.h>
123#include <time.h> 123#include <time.h>
124 124
125#ifdef __OpenBSD__
126#undef DEVRANDOM
127#define DEVRANDOM "/dev/arandom"
128int RAND_poll(void)
129{
130 unsigned long l;
131 pid_t curr_pid = getpid();
132 FILE *fh;
133
134 /* Use a random entropy pool device. Linux, FreeBSD and OpenBSD
135 * have this. Use /dev/urandom if you can as /dev/random may block
136 * if it runs out of random entries. */
137
138 if ((fh = fopen(DEVRANDOM, "r")) != NULL)
139 {
140 unsigned char tmpbuf[ENTROPY_NEEDED];
141 int n;
142
143 setvbuf(fh, NULL, _IONBF, 0);
144 n=fread((unsigned char *)tmpbuf,1,ENTROPY_NEEDED,fh);
145 fclose(fh);
146 RAND_add(tmpbuf,sizeof tmpbuf,n);
147 memset(tmpbuf,0,n);
148 }
149
150 /* put in some default random data, we need more than just this */
151 l=curr_pid;
152 RAND_add(&l,sizeof(l),0);
153 l=getuid();
154 RAND_add(&l,sizeof(l),0);
155
156 l=time(NULL);
157 RAND_add(&l,sizeof(l),0);
158
159 return 1;
160}
161#else
162int RAND_poll(void) 125int RAND_poll(void)
163{ 126{
164 unsigned long l; 127 unsigned long l;
@@ -271,4 +234,3 @@ int RAND_poll(void)
271} 234}
272 235
273#endif 236#endif
274#endif
diff --git a/src/lib/libcrypto/rand/rand_win.c b/src/lib/libcrypto/rand/rand_win.c
index 9f2dcff9a9..c1b955b06f 100644
--- a/src/lib/libcrypto/rand/rand_win.c
+++ b/src/lib/libcrypto/rand/rand_win.c
@@ -113,7 +113,7 @@
113#include <openssl/rand.h> 113#include <openssl/rand.h>
114#include "rand_lcl.h" 114#include "rand_lcl.h"
115 115
116#if defined(WINDOWS) || defined(WIN32) 116#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32)
117#include <windows.h> 117#include <windows.h>
118#ifndef _WIN32_WINNT 118#ifndef _WIN32_WINNT
119# define _WIN32_WINNT 0x0400 119# define _WIN32_WINNT 0x0400
@@ -254,6 +254,10 @@ int RAND_poll(void)
254 * at random times on Windows 2000. Reported by Jeffrey Altman. 254 * at random times on Windows 2000. Reported by Jeffrey Altman.
255 * Only use it on NT. 255 * Only use it on NT.
256 */ 256 */
257 /* Wolfgang Marczy <WMarczy@topcall.co.at> reports that
258 * the RegQueryValueEx call below can hang on NT4.0 (SP6).
259 * So we don't use this at all for now. */
260#if 0
257 if ( osverinfo.dwPlatformId == VER_PLATFORM_WIN32_NT && 261 if ( osverinfo.dwPlatformId == VER_PLATFORM_WIN32_NT &&
258 osverinfo.dwMajorVersion < 5) 262 osverinfo.dwMajorVersion < 5)
259 { 263 {
@@ -290,6 +294,7 @@ int RAND_poll(void)
290 if (buf) 294 if (buf)
291 free(buf); 295 free(buf);
292 } 296 }
297#endif
293 298
294 if (advapi) 299 if (advapi)
295 { 300 {
@@ -310,8 +315,8 @@ int RAND_poll(void)
310 { 315 {
311 if (gen(hProvider, sizeof(buf), buf) != 0) 316 if (gen(hProvider, sizeof(buf), buf) != 0)
312 { 317 {
313 RAND_add(buf, sizeof(buf), sizeof(buf)); 318 RAND_add(buf, sizeof(buf), 0);
314#ifdef DEBUG 319#if 0
315 printf("randomness from PROV_RSA_FULL\n"); 320 printf("randomness from PROV_RSA_FULL\n");
316#endif 321#endif
317 } 322 }
@@ -324,7 +329,7 @@ int RAND_poll(void)
324 if (gen(hProvider, sizeof(buf), buf) != 0) 329 if (gen(hProvider, sizeof(buf), buf) != 0)
325 { 330 {
326 RAND_add(buf, sizeof(buf), sizeof(buf)); 331 RAND_add(buf, sizeof(buf), sizeof(buf));
327#ifdef DEBUG 332#if 0
328 printf("randomness from PROV_INTEL_SEC\n"); 333 printf("randomness from PROV_INTEL_SEC\n");
329#endif 334#endif
330 } 335 }
@@ -461,7 +466,7 @@ int RAND_poll(void)
461 hlist.th32ProcessID, 466 hlist.th32ProcessID,
462 hlist.th32HeapID)) 467 hlist.th32HeapID))
463 { 468 {
464 int entrycnt = 50; 469 int entrycnt = 80;
465 do 470 do
466 RAND_add(&hentry, 471 RAND_add(&hentry,
467 hentry.dwSize, 5); 472 hentry.dwSize, 5);
@@ -510,7 +515,7 @@ int RAND_poll(void)
510 FreeLibrary(kernel); 515 FreeLibrary(kernel);
511 } 516 }
512 517
513#ifdef DEBUG 518#if 0
514 printf("Exiting RAND_poll\n"); 519 printf("Exiting RAND_poll\n");
515#endif 520#endif
516 521
@@ -570,14 +575,15 @@ static void readtimer(void)
570 DWORD w; 575 DWORD w;
571 LARGE_INTEGER l; 576 LARGE_INTEGER l;
572 static int have_perfc = 1; 577 static int have_perfc = 1;
573#ifndef __GNUC__ 578#ifdef _MSC_VER
574 static int have_tsc = 1; 579 static int have_tsc = 1;
575 DWORD cyclecount; 580 DWORD cyclecount;
576 581
577 if (have_tsc) { 582 if (have_tsc) {
578 __try { 583 __try {
579 __asm { 584 __asm {
580 rdtsc 585 _emit 0x0f
586 _emit 0x31
581 mov cyclecount, eax 587 mov cyclecount, eax
582 } 588 }
583 RAND_add(&cyclecount, sizeof(cyclecount), 1); 589 RAND_add(&cyclecount, sizeof(cyclecount), 1);
@@ -684,49 +690,4 @@ static void readscreen(void)
684 DeleteDC(hScrDC); 690 DeleteDC(hScrDC);
685} 691}
686 692
687#else /* Unix version */
688
689#include <time.h>
690
691int RAND_poll(void)
692{
693 unsigned long l;
694 pid_t curr_pid = getpid();
695#ifdef DEVRANDOM
696 FILE *fh;
697#endif
698
699#ifdef DEVRANDOM
700 /* Use a random entropy pool device. Linux, FreeBSD and OpenBSD
701 * have this. Use /dev/urandom if you can as /dev/random may block
702 * if it runs out of random entries. */
703
704 if ((fh = fopen(DEVRANDOM, "r")) != NULL)
705 {
706 unsigned char tmpbuf[ENTROPY_NEEDED];
707 int n;
708
709 setvbuf(fh, NULL, _IONBF, 0);
710 n=fread((unsigned char *)tmpbuf,1,ENTROPY_NEEDED,fh);
711 fclose(fh);
712 RAND_add(tmpbuf,sizeof tmpbuf,n);
713 memset(tmpbuf,0,n);
714 }
715#endif
716
717 /* put in some default random data, we need more than just this */
718 l=curr_pid;
719 RAND_add(&l,sizeof(l),0);
720 l=getuid();
721 RAND_add(&l,sizeof(l),0);
722
723 l=time(NULL);
724 RAND_add(&l,sizeof(l),0);
725
726#ifdef DEVRANDOM
727 return 1;
728#endif
729 return 0;
730}
731
732#endif 693#endif
diff --git a/src/lib/libcrypto/rand/randtest.c b/src/lib/libcrypto/rand/randtest.c
index e0ba61e123..b64de616db 100644
--- a/src/lib/libcrypto/rand/randtest.c
+++ b/src/lib/libcrypto/rand/randtest.c
@@ -58,7 +58,7 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include <stdlib.h> 60#include <stdlib.h>
61#include "rand.h" 61#include <openssl/rand.h>
62 62
63/* some FIPS 140-1 random number test */ 63/* some FIPS 140-1 random number test */
64/* some simple tests */ 64/* some simple tests */
@@ -73,7 +73,13 @@ int main()
73 /*double d; */ 73 /*double d; */
74 long d; 74 long d;
75 75
76 RAND_bytes(buf,2500); 76 i = RAND_pseudo_bytes(buf,2500);
77 if (i < 0)
78 {
79 printf ("init failed, the rand method is not properly installed\n");
80 err++;
81 goto err;
82 }
77 83
78 n1=0; 84 n1=0;
79 for (i=0; i<16; i++) n2[i]=0; 85 for (i=0; i<16; i++) n2[i]=0;
@@ -117,7 +123,7 @@ int main()
117 /* test 1 */ 123 /* test 1 */
118 if (!((9654 < n1) && (n1 < 10346))) 124 if (!((9654 < n1) && (n1 < 10346)))
119 { 125 {
120 printf("test 1 failed, X=%ld\n",n1); 126 printf("test 1 failed, X=%lu\n",n1);
121 err++; 127 err++;
122 } 128 }
123 printf("test 1 done\n"); 129 printf("test 1 done\n");
@@ -150,37 +156,37 @@ int main()
150 { 156 {
151 if (!((2267 < runs[i][0]) && (runs[i][0] < 2733))) 157 if (!((2267 < runs[i][0]) && (runs[i][0] < 2733)))
152 { 158 {
153 printf("test 3 failed, bit=%d run=%d num=%ld\n", 159 printf("test 3 failed, bit=%d run=%d num=%lu\n",
154 i,1,runs[i][0]); 160 i,1,runs[i][0]);
155 err++; 161 err++;
156 } 162 }
157 if (!((1079 < runs[i][1]) && (runs[i][1] < 1421))) 163 if (!((1079 < runs[i][1]) && (runs[i][1] < 1421)))
158 { 164 {
159 printf("test 3 failed, bit=%d run=%d num=%ld\n", 165 printf("test 3 failed, bit=%d run=%d num=%lu\n",
160 i,2,runs[i][1]); 166 i,2,runs[i][1]);
161 err++; 167 err++;
162 } 168 }
163 if (!(( 502 < runs[i][2]) && (runs[i][2] < 748))) 169 if (!(( 502 < runs[i][2]) && (runs[i][2] < 748)))
164 { 170 {
165 printf("test 3 failed, bit=%d run=%d num=%ld\n", 171 printf("test 3 failed, bit=%d run=%d num=%lu\n",
166 i,3,runs[i][2]); 172 i,3,runs[i][2]);
167 err++; 173 err++;
168 } 174 }
169 if (!(( 223 < runs[i][3]) && (runs[i][3] < 402))) 175 if (!(( 223 < runs[i][3]) && (runs[i][3] < 402)))
170 { 176 {
171 printf("test 3 failed, bit=%d run=%d num=%ld\n", 177 printf("test 3 failed, bit=%d run=%d num=%lu\n",
172 i,4,runs[i][3]); 178 i,4,runs[i][3]);
173 err++; 179 err++;
174 } 180 }
175 if (!(( 90 < runs[i][4]) && (runs[i][4] < 223))) 181 if (!(( 90 < runs[i][4]) && (runs[i][4] < 223)))
176 { 182 {
177 printf("test 3 failed, bit=%d run=%d num=%ld\n", 183 printf("test 3 failed, bit=%d run=%d num=%lu\n",
178 i,5,runs[i][4]); 184 i,5,runs[i][4]);
179 err++; 185 err++;
180 } 186 }
181 if (!(( 90 < runs[i][5]) && (runs[i][5] < 223))) 187 if (!(( 90 < runs[i][5]) && (runs[i][5] < 223)))
182 { 188 {
183 printf("test 3 failed, bit=%d run=%d num=%ld\n", 189 printf("test 3 failed, bit=%d run=%d num=%lu\n",
184 i,6,runs[i][5]); 190 i,6,runs[i][5]);
185 err++; 191 err++;
186 } 192 }
@@ -190,17 +196,18 @@ int main()
190 /* test 4 */ 196 /* test 4 */
191 if (runs[0][33] != 0) 197 if (runs[0][33] != 0)
192 { 198 {
193 printf("test 4 failed, bit=%d run=%d num=%ld\n", 199 printf("test 4 failed, bit=%d run=%d num=%lu\n",
194 0,34,runs[0][33]); 200 0,34,runs[0][33]);
195 err++; 201 err++;
196 } 202 }
197 if (runs[1][33] != 0) 203 if (runs[1][33] != 0)
198 { 204 {
199 printf("test 4 failed, bit=%d run=%d num=%ld\n", 205 printf("test 4 failed, bit=%d run=%d num=%lu\n",
200 1,34,runs[1][33]); 206 1,34,runs[1][33]);
201 err++; 207 err++;
202 } 208 }
203 printf("test 4 done\n"); 209 printf("test 4 done\n");
210 err:
204 err=((err)?1:0); 211 err=((err)?1:0);
205 exit(err); 212 exit(err);
206 return(err); 213 return(err);
diff --git a/src/lib/libcrypto/rc2/rc2speed.c b/src/lib/libcrypto/rc2/rc2speed.c
index 6cd8ea8f27..47d34b444e 100644
--- a/src/lib/libcrypto/rc2/rc2speed.c
+++ b/src/lib/libcrypto/rc2/rc2speed.c
@@ -59,19 +59,17 @@
59/* 11-Sep-92 Andrew Daviel Support for Silicon Graphics IRIX added */ 59/* 11-Sep-92 Andrew Daviel Support for Silicon Graphics IRIX added */
60/* 06-Apr-92 Luke Brennan Support for VMS and add extra signal calls */ 60/* 06-Apr-92 Luke Brennan Support for VMS and add extra signal calls */
61 61
62#ifndef MSDOS 62#if !defined(OPENSSL_SYS_MSDOS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC)) && !defined(OPENSSL_SYS_MACOSX)
63#define TIMES 63#define TIMES
64#endif 64#endif
65 65
66#include <stdio.h> 66#include <stdio.h>
67#ifndef MSDOS 67
68#include <unistd.h> 68#include <openssl/e_os2.h>
69#else 69#include OPENSSL_UNISTD_IO
70#include <io.h> 70OPENSSL_DECLARE_EXIT
71extern int exit(); 71
72#endif
73#include <signal.h> 72#include <signal.h>
74#ifndef VMS
75#ifndef _IRIX 73#ifndef _IRIX
76#include <time.h> 74#include <time.h>
77#endif 75#endif
@@ -79,48 +77,40 @@ extern int exit();
79#include <sys/types.h> 77#include <sys/types.h>
80#include <sys/times.h> 78#include <sys/times.h>
81#endif 79#endif
82#else /* VMS */ 80
83#include <types.h> 81/* Depending on the VMS version, the tms structure is perhaps defined.
84struct tms { 82 The __TMS macro will show if it was. If it wasn't defined, we should
85 time_t tms_utime; 83 undefine TIMES, since that tells the rest of the program how things
86 time_t tms_stime; 84 should be handled. -- Richard Levitte */
87 time_t tms_uchild; /* I dunno... */ 85#if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS)
88 time_t tms_uchildsys; /* so these names are a guess :-) */ 86#undef TIMES
89 }
90#endif 87#endif
88
91#ifndef TIMES 89#ifndef TIMES
92#include <sys/timeb.h> 90#include <sys/timeb.h>
93#endif 91#endif
94 92
95#ifdef sun 93#if defined(sun) || defined(__ultrix)
94#define _POSIX_SOURCE
96#include <limits.h> 95#include <limits.h>
97#include <sys/param.h> 96#include <sys/param.h>
98#endif 97#endif
99 98
100#include "rc2.h" 99#include <openssl/rc2.h>
101 100
102/* The following if from times(3) man page. It may need to be changed */ 101/* The following if from times(3) man page. It may need to be changed */
103#ifndef HZ 102#ifndef HZ
104#ifndef CLK_TCK 103#ifndef CLK_TCK
105#ifndef VMS
106#define HZ 100.0
107#else /* VMS */
108#define HZ 100.0 104#define HZ 100.0
109#endif 105#endif
110#else /* CLK_TCK */ 106#else /* CLK_TCK */
111#define HZ ((double)CLK_TCK) 107#define HZ ((double)CLK_TCK)
112#endif 108#endif
113#endif
114 109
115#define BUFSIZE ((long)1024) 110#define BUFSIZE ((long)1024)
116long run=0; 111long run=0;
117 112
118#ifndef NOPROTO
119double Time_F(int s); 113double Time_F(int s);
120#else
121double Time_F();
122#endif
123
124#ifdef SIGALRM 114#ifdef SIGALRM
125#if defined(__STDC__) || defined(sgi) || defined(_AIX) 115#if defined(__STDC__) || defined(sgi) || defined(_AIX)
126#define SIGRETTYPE void 116#define SIGRETTYPE void
@@ -128,14 +118,8 @@ double Time_F();
128#define SIGRETTYPE int 118#define SIGRETTYPE int
129#endif 119#endif
130 120
131#ifndef NOPROTO
132SIGRETTYPE sig_done(int sig); 121SIGRETTYPE sig_done(int sig);
133#else 122SIGRETTYPE sig_done(int sig)
134SIGRETTYPE sig_done();
135#endif
136
137SIGRETTYPE sig_done(sig)
138int sig;
139 { 123 {
140 signal(SIGALRM,sig_done); 124 signal(SIGALRM,sig_done);
141 run=0; 125 run=0;
@@ -148,8 +132,7 @@ int sig;
148#define START 0 132#define START 0
149#define STOP 1 133#define STOP 1
150 134
151double Time_F(s) 135double Time_F(int s)
152int s;
153 { 136 {
154 double ret; 137 double ret;
155#ifdef TIMES 138#ifdef TIMES
@@ -185,9 +168,7 @@ int s;
185#endif 168#endif
186 } 169 }
187 170
188int main(argc,argv) 171int main(int argc, char **argv)
189int argc;
190char **argv;
191 { 172 {
192 long count; 173 long count;
193 static unsigned char buf[BUFSIZE]; 174 static unsigned char buf[BUFSIZE];
@@ -202,7 +183,7 @@ char **argv;
202#endif 183#endif
203 184
204#ifndef TIMES 185#ifndef TIMES
205 printf("To get the most acurate results, try to run this\n"); 186 printf("To get the most accurate results, try to run this\n");
206 printf("program when this computer is idle.\n"); 187 printf("program when this computer is idle.\n");
207#endif 188#endif
208 189
@@ -287,7 +268,7 @@ char **argv;
287 printf("RC2 raw ecb bytes per sec = %12.2f (%9.3fuS)\n",b,8.0e6/b); 268 printf("RC2 raw ecb bytes per sec = %12.2f (%9.3fuS)\n",b,8.0e6/b);
288 printf("RC2 cbc bytes per sec = %12.2f (%9.3fuS)\n",c,8.0e6/c); 269 printf("RC2 cbc bytes per sec = %12.2f (%9.3fuS)\n",c,8.0e6/c);
289 exit(0); 270 exit(0);
290#if defined(LINT) || defined(MSDOS) 271#if defined(LINT) || defined(OPENSSL_SYS_MSDOS)
291 return(0); 272 return(0);
292#endif 273#endif
293 } 274 }
diff --git a/src/lib/libcrypto/rc2/rc2test.c b/src/lib/libcrypto/rc2/rc2test.c
index 9d0f8016ec..d9a2a0a1cb 100644
--- a/src/lib/libcrypto/rc2/rc2test.c
+++ b/src/lib/libcrypto/rc2/rc2test.c
@@ -62,9 +62,17 @@
62#include <stdio.h> 62#include <stdio.h>
63#include <string.h> 63#include <string.h>
64#include <stdlib.h> 64#include <stdlib.h>
65#include "rc2.h"
66 65
67unsigned char RC2key[4][16]={ 66#ifdef OPENSSL_NO_RC2
67int main(int argc, char *argv[])
68{
69 printf("No RC2 support\n");
70 return(0);
71}
72#else
73#include <openssl/rc2.h>
74
75static unsigned char RC2key[4][16]={
68 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 76 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
69 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, 77 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
70 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 78 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
@@ -75,14 +83,14 @@ unsigned char RC2key[4][16]={
75 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F}, 83 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F},
76 }; 84 };
77 85
78unsigned char RC2plain[4][8]={ 86static unsigned char RC2plain[4][8]={
79 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, 87 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
80 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, 88 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
81 {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}, 89 {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},
82 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, 90 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
83 }; 91 };
84 92
85unsigned char RC2cipher[4][8]={ 93static unsigned char RC2cipher[4][8]={
86 {0x1C,0x19,0x8A,0x83,0x8D,0xF0,0x28,0xB7}, 94 {0x1C,0x19,0x8A,0x83,0x8D,0xF0,0x28,0xB7},
87 {0x21,0x82,0x9C,0x78,0xA9,0xF9,0xC0,0x74}, 95 {0x21,0x82,0x9C,0x78,0xA9,0xF9,0xC0,0x74},
88 {0x13,0xDB,0x35,0x17,0xD3,0x21,0x86,0x9E}, 96 {0x13,0xDB,0x35,0x17,0xD3,0x21,0x86,0x9E},
@@ -125,19 +133,11 @@ static unsigned char cfb_cipher64[CFB_TEST_SIZE]={
125 }; 133 };
126 134
127 135
128#ifndef NOPROTO
129/*static int cfb64_test(unsigned char *cfb_cipher);*/ 136/*static int cfb64_test(unsigned char *cfb_cipher);*/
130static char *pt(unsigned char *p); 137static char *pt(unsigned char *p);
131#else
132/*static int cfb64_test(); */
133static char *pt();
134#endif 138#endif
135 139
136#endif 140int main(int argc, char *argv[])
137
138int main(argc,argv)
139int argc;
140char *argv[];
141 { 141 {
142 int i,n,err=0; 142 int i,n,err=0;
143 RC2_KEY key; 143 RC2_KEY key;
@@ -208,8 +208,7 @@ char *argv[];
208 } 208 }
209 209
210#ifdef undef 210#ifdef undef
211static int cfb64_test(cfb_cipher) 211static int cfb64_test(unsigned char *cfb_cipher)
212unsigned char *cfb_cipher;
213 { 212 {
214 IDEA_KEY_SCHEDULE eks,dks; 213 IDEA_KEY_SCHEDULE eks,dks;
215 int err=0,i,n; 214 int err=0,i,n;
@@ -247,8 +246,7 @@ unsigned char *cfb_cipher;
247 return(err); 246 return(err);
248 } 247 }
249 248
250static char *pt(p) 249static char *pt(unsigned char *p)
251unsigned char *p;
252 { 250 {
253 static char bufs[10][20]; 251 static char bufs[10][20];
254 static int bnum=0; 252 static int bnum=0;
@@ -268,3 +266,4 @@ unsigned char *p;
268 } 266 }
269 267
270#endif 268#endif
269#endif
diff --git a/src/lib/libcrypto/rc4/rc4.c b/src/lib/libcrypto/rc4/rc4.c
index 127e8a5093..c2165b0b75 100644
--- a/src/lib/libcrypto/rc4/rc4.c
+++ b/src/lib/libcrypto/rc4/rc4.c
@@ -59,7 +59,7 @@
59#include <stdio.h> 59#include <stdio.h>
60#include <stdlib.h> 60#include <stdlib.h>
61#include <string.h> 61#include <string.h>
62#include "rc4.h" 62#include <openssl/rc4.h>
63 63
64char *usage[]={ 64char *usage[]={
65"usage: rc4 args\n", 65"usage: rc4 args\n",
@@ -70,9 +70,7 @@ char *usage[]={
70NULL 70NULL
71}; 71};
72 72
73int main(argc, argv) 73int main(int argc, char *argv[])
74int argc;
75char *argv[];
76 { 74 {
77 FILE *in=NULL,*out=NULL; 75 FILE *in=NULL,*out=NULL;
78 char *infile=NULL,*outfile=NULL,*keystr=NULL; 76 char *infile=NULL,*outfile=NULL,*keystr=NULL;
@@ -115,7 +113,7 @@ char *argv[];
115 { 113 {
116bad: 114bad:
117 for (pp=usage; (*pp != NULL); pp++) 115 for (pp=usage; (*pp != NULL); pp++)
118 fprintf(stderr,*pp); 116 fprintf(stderr,"%s",*pp);
119 exit(1); 117 exit(1);
120 } 118 }
121 119
@@ -143,7 +141,7 @@ bad:
143 } 141 }
144 } 142 }
145 143
146#ifdef MSDOS 144#ifdef OPENSSL_SYS_MSDOS
147 /* This should set the file to binary mode. */ 145 /* This should set the file to binary mode. */
148 { 146 {
149#include <fcntl.h> 147#include <fcntl.h>
@@ -164,7 +162,7 @@ bad:
164 keystr=buf; 162 keystr=buf;
165 } 163 }
166 164
167 MD5((unsigned char *)keystr,(unsigned long)strlen(keystr),md); 165 EVP_Digest((unsigned char *)keystr,(unsigned long)strlen(keystr),md,NULL,EVP_md5());
168 memset(keystr,0,strlen(keystr)); 166 memset(keystr,0,strlen(keystr));
169 RC4_set_key(&key,MD5_DIGEST_LENGTH,md); 167 RC4_set_key(&key,MD5_DIGEST_LENGTH,md);
170 168
diff --git a/src/lib/libcrypto/rc4/rc4s.cpp b/src/lib/libcrypto/rc4/rc4s.cpp
index 39f1727dd3..3814fde997 100644
--- a/src/lib/libcrypto/rc4/rc4s.cpp
+++ b/src/lib/libcrypto/rc4/rc4s.cpp
@@ -32,7 +32,7 @@ void GetTSC(unsigned long& tsc)
32 32
33#include <stdio.h> 33#include <stdio.h>
34#include <stdlib.h> 34#include <stdlib.h>
35#include "rc4.h" 35#include <openssl/rc4.h>
36 36
37void main(int argc,char *argv[]) 37void main(int argc,char *argv[])
38 { 38 {
diff --git a/src/lib/libcrypto/rc4/rc4speed.c b/src/lib/libcrypto/rc4/rc4speed.c
index 5298dad6d0..ced98c52df 100644
--- a/src/lib/libcrypto/rc4/rc4speed.c
+++ b/src/lib/libcrypto/rc4/rc4speed.c
@@ -59,19 +59,17 @@
59/* 11-Sep-92 Andrew Daviel Support for Silicon Graphics IRIX added */ 59/* 11-Sep-92 Andrew Daviel Support for Silicon Graphics IRIX added */
60/* 06-Apr-92 Luke Brennan Support for VMS and add extra signal calls */ 60/* 06-Apr-92 Luke Brennan Support for VMS and add extra signal calls */
61 61
62#ifndef MSDOS 62#if !defined(OPENSSL_SYS_MSDOS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC)) && !defined(OPENSSL_SYS_MACOSX)
63#define TIMES 63#define TIMES
64#endif 64#endif
65 65
66#include <stdio.h> 66#include <stdio.h>
67#ifndef MSDOS 67
68#include <unistd.h> 68#include <openssl/e_os2.h>
69#else 69#include OPENSSL_UNISTD_IO
70#include <io.h> 70OPENSSL_DECLARE_EXIT
71extern int exit(); 71
72#endif
73#include <signal.h> 72#include <signal.h>
74#ifndef VMS
75#ifndef _IRIX 73#ifndef _IRIX
76#include <time.h> 74#include <time.h>
77#endif 75#endif
@@ -79,34 +77,31 @@ extern int exit();
79#include <sys/types.h> 77#include <sys/types.h>
80#include <sys/times.h> 78#include <sys/times.h>
81#endif 79#endif
82#else /* VMS */ 80
83#include <types.h> 81/* Depending on the VMS version, the tms structure is perhaps defined.
84struct tms { 82 The __TMS macro will show if it was. If it wasn't defined, we should
85 time_t tms_utime; 83 undefine TIMES, since that tells the rest of the program how things
86 time_t tms_stime; 84 should be handled. -- Richard Levitte */
87 time_t tms_uchild; /* I dunno... */ 85#if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS)
88 time_t tms_uchildsys; /* so these names are a guess :-) */ 86#undef TIMES
89 }
90#endif 87#endif
88
91#ifndef TIMES 89#ifndef TIMES
92#include <sys/timeb.h> 90#include <sys/timeb.h>
93#endif 91#endif
94 92
95#ifdef sun 93#if defined(sun) || defined(__ultrix)
94#define _POSIX_SOURCE
96#include <limits.h> 95#include <limits.h>
97#include <sys/param.h> 96#include <sys/param.h>
98#endif 97#endif
99 98
100#include "rc4.h" 99#include <openssl/rc4.h>
101 100
102/* The following if from times(3) man page. It may need to be changed */ 101/* The following if from times(3) man page. It may need to be changed */
103#ifndef HZ 102#ifndef HZ
104#ifndef CLK_TCK 103#ifndef CLK_TCK
105#ifndef VMS
106#define HZ 100.0
107#else /* VMS */
108#define HZ 100.0 104#define HZ 100.0
109#endif
110#else /* CLK_TCK */ 105#else /* CLK_TCK */
111#define HZ ((double)CLK_TCK) 106#define HZ ((double)CLK_TCK)
112#endif 107#endif
@@ -115,12 +110,7 @@ struct tms {
115#define BUFSIZE ((long)1024) 110#define BUFSIZE ((long)1024)
116long run=0; 111long run=0;
117 112
118#ifndef NOPROTO
119double Time_F(int s); 113double Time_F(int s);
120#else
121double Time_F();
122#endif
123
124#ifdef SIGALRM 114#ifdef SIGALRM
125#if defined(__STDC__) || defined(sgi) || defined(_AIX) 115#if defined(__STDC__) || defined(sgi) || defined(_AIX)
126#define SIGRETTYPE void 116#define SIGRETTYPE void
@@ -128,14 +118,8 @@ double Time_F();
128#define SIGRETTYPE int 118#define SIGRETTYPE int
129#endif 119#endif
130 120
131#ifndef NOPROTO
132SIGRETTYPE sig_done(int sig); 121SIGRETTYPE sig_done(int sig);
133#else 122SIGRETTYPE sig_done(int sig)
134SIGRETTYPE sig_done();
135#endif
136
137SIGRETTYPE sig_done(sig)
138int sig;
139 { 123 {
140 signal(SIGALRM,sig_done); 124 signal(SIGALRM,sig_done);
141 run=0; 125 run=0;
@@ -148,8 +132,7 @@ int sig;
148#define START 0 132#define START 0
149#define STOP 1 133#define STOP 1
150 134
151double Time_F(s) 135double Time_F(int s)
152int s;
153 { 136 {
154 double ret; 137 double ret;
155#ifdef TIMES 138#ifdef TIMES
@@ -185,9 +168,7 @@ int s;
185#endif 168#endif
186 } 169 }
187 170
188int main(argc,argv) 171int main(int argc, char **argv)
189int argc;
190char **argv;
191 { 172 {
192 long count; 173 long count;
193 static unsigned char buf[BUFSIZE]; 174 static unsigned char buf[BUFSIZE];
@@ -202,7 +183,7 @@ char **argv;
202#endif 183#endif
203 184
204#ifndef TIMES 185#ifndef TIMES
205 printf("To get the most acurate results, try to run this\n"); 186 printf("To get the most accurate results, try to run this\n");
206 printf("program when this computer is idle.\n"); 187 printf("program when this computer is idle.\n");
207#endif 188#endif
208 189
@@ -262,7 +243,7 @@ char **argv;
262 printf("RC4 set_key per sec = %12.2f (%9.3fuS)\n",a,1.0e6/a); 243 printf("RC4 set_key per sec = %12.2f (%9.3fuS)\n",a,1.0e6/a);
263 printf("RC4 bytes per sec = %12.2f (%9.3fuS)\n",c,8.0e6/c); 244 printf("RC4 bytes per sec = %12.2f (%9.3fuS)\n",c,8.0e6/c);
264 exit(0); 245 exit(0);
265#if defined(LINT) || defined(MSDOS) 246#if defined(LINT) || defined(OPENSSL_SYS_MSDOS)
266 return(0); 247 return(0);
267#endif 248#endif
268 } 249 }
diff --git a/src/lib/libcrypto/rc4/rc4test.c b/src/lib/libcrypto/rc4/rc4test.c
index 041e1aff95..a28d457c8d 100644
--- a/src/lib/libcrypto/rc4/rc4test.c
+++ b/src/lib/libcrypto/rc4/rc4test.c
@@ -59,9 +59,17 @@
59#include <stdio.h> 59#include <stdio.h>
60#include <stdlib.h> 60#include <stdlib.h>
61#include <string.h> 61#include <string.h>
62#include "rc4.h"
63 62
64unsigned char keys[7][30]={ 63#ifdef OPENSSL_NO_RC4
64int main(int argc, char *argv[])
65{
66 printf("No RC4 support\n");
67 return(0);
68}
69#else
70#include <openssl/rc4.h>
71
72static unsigned char keys[7][30]={
65 {8,0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef}, 73 {8,0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef},
66 {8,0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef}, 74 {8,0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef},
67 {8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, 75 {8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
@@ -70,8 +78,8 @@ unsigned char keys[7][30]={
70 {4,0xef,0x01,0x23,0x45}, 78 {4,0xef,0x01,0x23,0x45},
71 }; 79 };
72 80
73unsigned char data_len[7]={8,8,8,20,28,10}; 81static unsigned char data_len[7]={8,8,8,20,28,10};
74unsigned char data[7][30]={ 82static unsigned char data[7][30]={
75 {0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,0xff}, 83 {0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,0xff},
76 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff}, 84 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff},
77 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff}, 85 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff},
@@ -86,7 +94,7 @@ unsigned char data[7][30]={
86 {0}, 94 {0},
87 }; 95 };
88 96
89unsigned char output[7][30]={ 97static unsigned char output[7][30]={
90 {0x75,0xb7,0x87,0x80,0x99,0xe0,0xc5,0x96,0x00}, 98 {0x75,0xb7,0x87,0x80,0x99,0xe0,0xc5,0x96,0x00},
91 {0x74,0x94,0xc2,0xe7,0x10,0x4b,0x08,0x79,0x00}, 99 {0x74,0x94,0xc2,0xe7,0x10,0x4b,0x08,0x79,0x00},
92 {0xde,0x18,0x89,0x41,0xa3,0x37,0x5d,0x3a,0x00}, 100 {0xde,0x18,0x89,0x41,0xa3,0x37,0x5d,0x3a,0x00},
@@ -101,9 +109,7 @@ unsigned char output[7][30]={
101 {0}, 109 {0},
102 }; 110 };
103 111
104int main(argc,argv) 112int main(int argc, char *argv[])
105int argc;
106char *argv[];
107 { 113 {
108 int i,err=0; 114 int i,err=0;
109 int j; 115 int j;
@@ -192,4 +198,4 @@ char *argv[];
192 exit(err); 198 exit(err);
193 return(0); 199 return(0);
194 } 200 }
195 201#endif
diff --git a/src/lib/libcrypto/rc5/rc5.h b/src/lib/libcrypto/rc5/rc5.h
index 5fd64e3f10..4adfd2db5a 100644
--- a/src/lib/libcrypto/rc5/rc5.h
+++ b/src/lib/libcrypto/rc5/rc5.h
@@ -63,6 +63,10 @@
63extern "C" { 63extern "C" {
64#endif 64#endif
65 65
66#ifdef OPENSSL_NO_RC5
67#error RC5 is disabled.
68#endif
69
66#define RC5_ENCRYPT 1 70#define RC5_ENCRYPT 1
67#define RC5_DECRYPT 0 71#define RC5_DECRYPT 0
68 72
@@ -88,32 +92,22 @@ typedef struct rc5_key_st
88 RC5_32_INT data[2*(RC5_16_ROUNDS+1)]; 92 RC5_32_INT data[2*(RC5_16_ROUNDS+1)];
89 } RC5_32_KEY; 93 } RC5_32_KEY;
90 94
91#ifndef NOPROTO
92 95
93void RC5_32_set_key(RC5_32_KEY *key, int len, unsigned char *data, 96void RC5_32_set_key(RC5_32_KEY *key, int len, const unsigned char *data,
94 int rounds); 97 int rounds);
95void RC5_32_ecb_encrypt(unsigned char *in,unsigned char *out,RC5_32_KEY *key, 98void RC5_32_ecb_encrypt(const unsigned char *in,unsigned char *out,RC5_32_KEY *key,
96 int enc); 99 int enc);
97void RC5_32_encrypt(unsigned long *data,RC5_32_KEY *key); 100void RC5_32_encrypt(unsigned long *data,RC5_32_KEY *key);
98void RC5_32_decrypt(unsigned long *data,RC5_32_KEY *key); 101void RC5_32_decrypt(unsigned long *data,RC5_32_KEY *key);
99void RC5_32_cbc_encrypt(unsigned char *in, unsigned char *out, long length, 102void RC5_32_cbc_encrypt(const unsigned char *in, unsigned char *out,
100 RC5_32_KEY *ks, unsigned char *iv, int enc); 103 long length, RC5_32_KEY *ks, unsigned char *iv,
101void RC5_32_cfb64_encrypt(unsigned char *in, unsigned char *out, long length, 104 int enc);
102 RC5_32_KEY *schedule, unsigned char *ivec, int *num, int enc); 105void RC5_32_cfb64_encrypt(const unsigned char *in, unsigned char *out,
103void RC5_32_ofb64_encrypt(unsigned char *in, unsigned char *out, long length, 106 long length, RC5_32_KEY *schedule,
104 RC5_32_KEY *schedule, unsigned char *ivec, int *num); 107 unsigned char *ivec, int *num, int enc);
105 108void RC5_32_ofb64_encrypt(const unsigned char *in, unsigned char *out,
106#else 109 long length, RC5_32_KEY *schedule,
107 110 unsigned char *ivec, int *num);
108void RC5_32_set_key();
109void RC5_32_ecb_encrypt();
110void RC5_32_encrypt();
111void RC5_32_decrypt();
112void RC5_32_cbc_encrypt();
113void RC5_32_cfb64_encrypt();
114void RC5_32_ofb64_encrypt();
115
116#endif
117 111
118#ifdef __cplusplus 112#ifdef __cplusplus
119} 113}
diff --git a/src/lib/libcrypto/ripemd/asm/rips.cpp b/src/lib/libcrypto/ripemd/asm/rips.cpp
index 78a933c448..f7a13677a9 100644
--- a/src/lib/libcrypto/ripemd/asm/rips.cpp
+++ b/src/lib/libcrypto/ripemd/asm/rips.cpp
@@ -32,7 +32,9 @@ void GetTSC(unsigned long& tsc)
32 32
33#include <stdio.h> 33#include <stdio.h>
34#include <stdlib.h> 34#include <stdlib.h>
35#include "ripemd.h" 35#include <openssl/ripemd.h>
36
37#define ripemd160_block_x86 ripemd160_block_asm_host_order
36 38
37extern "C" { 39extern "C" {
38void ripemd160_block_x86(RIPEMD160_CTX *ctx, unsigned char *buffer,int num); 40void ripemd160_block_x86(RIPEMD160_CTX *ctx, unsigned char *buffer,int num);
@@ -55,8 +57,10 @@ void main(int argc,char *argv[])
55 if (num == 0) num=16; 57 if (num == 0) num=16;
56 if (num > 250) num=16; 58 if (num > 250) num=16;
57 numm=num+2; 59 numm=num+2;
60#if 0
58 num*=64; 61 num*=64;
59 numm*=64; 62 numm*=64;
63#endif
60 64
61 for (j=0; j<6; j++) 65 for (j=0; j<6; j++)
62 { 66 {
@@ -71,7 +75,7 @@ void main(int argc,char *argv[])
71 GetTSC(e2); 75 GetTSC(e2);
72 ripemd160_block_x86(&ctx,buffer,num); 76 ripemd160_block_x86(&ctx,buffer,num);
73 } 77 }
74 printf("ripemd160 (%d bytes) %d %d (%.2f)\n",num, 78 printf("ripemd160 (%d bytes) %d %d (%.2f)\n",num*64,
75 e1-s1,e2-s2,(double)((e1-s1)-(e2-s2))/2); 79 e1-s1,e2-s2,(double)((e1-s1)-(e2-s2))/2);
76 } 80 }
77 } 81 }
diff --git a/src/lib/libcrypto/ripemd/rmd160.c b/src/lib/libcrypto/ripemd/rmd160.c
index 3fa1b8096e..4f8b88a18a 100644
--- a/src/lib/libcrypto/ripemd/rmd160.c
+++ b/src/lib/libcrypto/ripemd/rmd160.c
@@ -58,23 +58,17 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include <stdlib.h> 60#include <stdlib.h>
61#include "ripemd.h" 61#include <openssl/ripemd.h>
62 62
63#define BUFSIZE 1024*16 63#define BUFSIZE 1024*16
64 64
65#ifndef NOPROTO
66void do_fp(FILE *f); 65void do_fp(FILE *f);
67void pt(unsigned char *md); 66void pt(unsigned char *md);
67#ifndef _OSD_POSIX
68int read(int, void *, unsigned int); 68int read(int, void *, unsigned int);
69#else
70void do_fp();
71void pt();
72int read();
73#endif 69#endif
74 70
75int main(argc, argv) 71int main(int argc, char **argv)
76int argc;
77char **argv;
78 { 72 {
79 int i,err=0; 73 int i,err=0;
80 FILE *IN; 74 FILE *IN;
@@ -102,8 +96,7 @@ char **argv;
102 exit(err); 96 exit(err);
103 } 97 }
104 98
105void do_fp(f) 99void do_fp(FILE *f)
106FILE *f;
107 { 100 {
108 RIPEMD160_CTX c; 101 RIPEMD160_CTX c;
109 unsigned char md[RIPEMD160_DIGEST_LENGTH]; 102 unsigned char md[RIPEMD160_DIGEST_LENGTH];
@@ -123,8 +116,7 @@ FILE *f;
123 pt(md); 116 pt(md);
124 } 117 }
125 118
126void pt(md) 119void pt(unsigned char *md)
127unsigned char *md;
128 { 120 {
129 int i; 121 int i;
130 122
diff --git a/src/lib/libcrypto/ripemd/rmdtest.c b/src/lib/libcrypto/ripemd/rmdtest.c
index 6a0297f975..19e9741db2 100644
--- a/src/lib/libcrypto/ripemd/rmdtest.c
+++ b/src/lib/libcrypto/ripemd/rmdtest.c
@@ -59,9 +59,22 @@
59#include <stdio.h> 59#include <stdio.h>
60#include <string.h> 60#include <string.h>
61#include <stdlib.h> 61#include <stdlib.h>
62#include "ripemd.h" 62#include <openssl/ripemd.h>
63 63
64char *test[]={ 64#ifdef OPENSSL_NO_RIPEMD
65int main(int argc, char *argv[])
66{
67 printf("No ripemd support\n");
68 return(0);
69}
70#else
71#include <openssl/evp.h>
72
73#ifdef CHARSET_EBCDIC
74#include <openssl/ebcdic.h>
75#endif
76
77static char *test[]={
65 "", 78 "",
66 "a", 79 "a",
67 "abc", 80 "abc",
@@ -73,7 +86,7 @@ char *test[]={
73 NULL, 86 NULL,
74 }; 87 };
75 88
76char *ret[]={ 89static char *ret[]={
77 "9c1185a5c5e9fc54612808977ee8f548b2258d31", 90 "9c1185a5c5e9fc54612808977ee8f548b2258d31",
78 "0bdc9d2d256b3ee9daae347be6f4dc835a467ffe", 91 "0bdc9d2d256b3ee9daae347be6f4dc835a467ffe",
79 "8eb208f7e05d987a9b044a8e98c6b087f15a0bfc", 92 "8eb208f7e05d987a9b044a8e98c6b087f15a0bfc",
@@ -84,26 +97,24 @@ char *ret[]={
84 "9b752e45573d4b39f4dbd3323cab82bf63326bfb", 97 "9b752e45573d4b39f4dbd3323cab82bf63326bfb",
85 }; 98 };
86 99
87#ifndef NOPROTO
88static char *pt(unsigned char *md); 100static char *pt(unsigned char *md);
89#else 101int main(int argc, char *argv[])
90static char *pt();
91#endif
92
93int main(argc,argv)
94int argc;
95char *argv[];
96 { 102 {
97 int i,err=0; 103 int i,err=0;
98 unsigned char **P,**R; 104 unsigned char **P,**R;
99 char *p; 105 char *p;
106 unsigned char md[RIPEMD160_DIGEST_LENGTH];
100 107
101 P=(unsigned char **)test; 108 P=(unsigned char **)test;
102 R=(unsigned char **)ret; 109 R=(unsigned char **)ret;
103 i=1; 110 i=1;
104 while (*P != NULL) 111 while (*P != NULL)
105 { 112 {
106 p=pt(RIPEMD160(&(P[0][0]),(unsigned long)strlen((char *)*P),NULL)); 113#ifdef CHARSET_EBCDIC
114 ebcdic2ascii((char *)*P, (char *)*P, strlen((char *)*P));
115#endif
116 EVP_Digest(&(P[0][0]),(unsigned long)strlen((char *)*P),md,NULL,EVP_ripemd160(), NULL);
117 p=pt(md);
107 if (strcmp(p,(char *)*R) != 0) 118 if (strcmp(p,(char *)*R) != 0)
108 { 119 {
109 printf("error calculating RIPEMD160 on '%s'\n",*P); 120 printf("error calculating RIPEMD160 on '%s'\n",*P);
@@ -120,8 +131,7 @@ char *argv[];
120 return(0); 131 return(0);
121 } 132 }
122 133
123static char *pt(md) 134static char *pt(unsigned char *md)
124unsigned char *md;
125 { 135 {
126 int i; 136 int i;
127 static char buf[80]; 137 static char buf[80];
@@ -130,4 +140,4 @@ unsigned char *md;
130 sprintf(&(buf[i*2]),"%02x",md[i]); 140 sprintf(&(buf[i*2]),"%02x",md[i]);
131 return(buf); 141 return(buf);
132 } 142 }
133 143#endif
diff --git a/src/lib/libcrypto/rsa/rsa_null.c b/src/lib/libcrypto/rsa/rsa_null.c
index 7b58a0eca3..64057fbdcf 100644
--- a/src/lib/libcrypto/rsa/rsa_null.c
+++ b/src/lib/libcrypto/rsa/rsa_null.c
@@ -69,16 +69,16 @@
69 * operations (like storing RSA keys) are permitted. 69 * operations (like storing RSA keys) are permitted.
70 */ 70 */
71 71
72static int RSA_null_public_encrypt(int flen, unsigned char *from, 72static int RSA_null_public_encrypt(int flen, const unsigned char *from,
73 unsigned char *to, RSA *rsa,int padding); 73 unsigned char *to, RSA *rsa,int padding);
74static int RSA_null_private_encrypt(int flen, unsigned char *from, 74static int RSA_null_private_encrypt(int flen, const unsigned char *from,
75 unsigned char *to, RSA *rsa,int padding); 75 unsigned char *to, RSA *rsa,int padding);
76static int RSA_null_public_decrypt(int flen, unsigned char *from, 76static int RSA_null_public_decrypt(int flen, const unsigned char *from,
77 unsigned char *to, RSA *rsa,int padding); 77 unsigned char *to, RSA *rsa,int padding);
78static int RSA_null_private_decrypt(int flen, unsigned char *from, 78static int RSA_null_private_decrypt(int flen, const unsigned char *from,
79 unsigned char *to, RSA *rsa,int padding); 79 unsigned char *to, RSA *rsa,int padding);
80#if 0 /* not currently used */ 80#if 0 /* not currently used */
81static int RSA_null_mod_exp(BIGNUM *r0, BIGNUM *i, RSA *rsa); 81static int RSA_null_mod_exp(const BIGNUM *r0, const BIGNUM *i, RSA *rsa);
82#endif 82#endif
83static int RSA_null_init(RSA *rsa); 83static int RSA_null_init(RSA *rsa);
84static int RSA_null_finish(RSA *rsa); 84static int RSA_null_finish(RSA *rsa);
@@ -88,40 +88,41 @@ static RSA_METHOD rsa_null_meth={
88 RSA_null_public_decrypt, 88 RSA_null_public_decrypt,
89 RSA_null_private_encrypt, 89 RSA_null_private_encrypt,
90 RSA_null_private_decrypt, 90 RSA_null_private_decrypt,
91 NULL, NULL, 91 NULL,
92 NULL,
92 RSA_null_init, 93 RSA_null_init,
93 RSA_null_finish, 94 RSA_null_finish,
94 0, 95 0,
95 NULL, 96 NULL,
96 }; 97 };
97 98
98RSA_METHOD *RSA_null_method(void) 99const RSA_METHOD *RSA_null_method(void)
99 { 100 {
100 return(&rsa_null_meth); 101 return(&rsa_null_meth);
101 } 102 }
102 103
103static int RSA_null_public_encrypt(int flen, unsigned char *from, 104static int RSA_null_public_encrypt(int flen, const unsigned char *from,
104 unsigned char *to, RSA *rsa, int padding) 105 unsigned char *to, RSA *rsa, int padding)
105 { 106 {
106 RSAerr(RSA_F_RSA_NULL, RSA_R_RSA_OPERATIONS_NOT_SUPPORTED); 107 RSAerr(RSA_F_RSA_NULL, RSA_R_RSA_OPERATIONS_NOT_SUPPORTED);
107 return -1; 108 return -1;
108 } 109 }
109 110
110static int RSA_null_private_encrypt(int flen, unsigned char *from, 111static int RSA_null_private_encrypt(int flen, const unsigned char *from,
111 unsigned char *to, RSA *rsa, int padding) 112 unsigned char *to, RSA *rsa, int padding)
112 { 113 {
113 RSAerr(RSA_F_RSA_NULL, RSA_R_RSA_OPERATIONS_NOT_SUPPORTED); 114 RSAerr(RSA_F_RSA_NULL, RSA_R_RSA_OPERATIONS_NOT_SUPPORTED);
114 return -1; 115 return -1;
115 } 116 }
116 117
117static int RSA_null_private_decrypt(int flen, unsigned char *from, 118static int RSA_null_private_decrypt(int flen, const unsigned char *from,
118 unsigned char *to, RSA *rsa, int padding) 119 unsigned char *to, RSA *rsa, int padding)
119 { 120 {
120 RSAerr(RSA_F_RSA_NULL, RSA_R_RSA_OPERATIONS_NOT_SUPPORTED); 121 RSAerr(RSA_F_RSA_NULL, RSA_R_RSA_OPERATIONS_NOT_SUPPORTED);
121 return -1; 122 return -1;
122 } 123 }
123 124
124static int RSA_null_public_decrypt(int flen, unsigned char *from, 125static int RSA_null_public_decrypt(int flen, const unsigned char *from,
125 unsigned char *to, RSA *rsa, int padding) 126 unsigned char *to, RSA *rsa, int padding)
126 { 127 {
127 RSAerr(RSA_F_RSA_NULL, RSA_R_RSA_OPERATIONS_NOT_SUPPORTED); 128 RSAerr(RSA_F_RSA_NULL, RSA_R_RSA_OPERATIONS_NOT_SUPPORTED);
diff --git a/src/lib/libcrypto/rsa/rsa_test.c b/src/lib/libcrypto/rsa/rsa_test.c
index e5ae0c1f69..b8b462d33b 100644
--- a/src/lib/libcrypto/rsa/rsa_test.c
+++ b/src/lib/libcrypto/rsa/rsa_test.c
@@ -3,12 +3,12 @@
3#include <stdio.h> 3#include <stdio.h>
4#include <string.h> 4#include <string.h>
5 5
6#include "openssl/e_os.h" 6#include "e_os.h"
7 7
8#include <openssl/crypto.h> 8#include <openssl/crypto.h>
9#include <openssl/err.h> 9#include <openssl/err.h>
10#include <openssl/rand.h> 10#include <openssl/rand.h>
11#ifdef NO_RSA 11#ifdef OPENSSL_NO_RSA
12int main(int argc, char *argv[]) 12int main(int argc, char *argv[])
13{ 13{
14 printf("No RSA support\n"); 14 printf("No RSA support\n");
@@ -16,6 +16,7 @@ int main(int argc, char *argv[])
16} 16}
17#else 17#else
18#include <openssl/rsa.h> 18#include <openssl/rsa.h>
19#include <openssl/engine.h>
19 20
20#define SetKey \ 21#define SetKey \
21 key->n = BN_bin2bn(n, sizeof(n)-1, key->n); \ 22 key->n = BN_bin2bn(n, sizeof(n)-1, key->n); \
@@ -219,10 +220,12 @@ int main(int argc, char *argv[])
219 int clen = 0; 220 int clen = 0;
220 int num; 221 int num;
221 222
223 CRYPTO_malloc_debug_init();
224 CRYPTO_dbg_set_options(V_CRYPTO_MDEBUG_ALL);
225 CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
226
222 RAND_seed(rnd_seed, sizeof rnd_seed); /* or OAEP may fail */ 227 RAND_seed(rnd_seed, sizeof rnd_seed); /* or OAEP may fail */
223 228
224 CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
225
226 plen = sizeof(ptext_ex) - 1; 229 plen = sizeof(ptext_ex) - 1;
227 230
228 for (v = 0; v < 3; v++) 231 for (v = 0; v < 3; v++)
@@ -305,9 +308,10 @@ int main(int argc, char *argv[])
305 RSA_free(key); 308 RSA_free(key);
306 } 309 }
307 310
311 CRYPTO_cleanup_all_ex_data();
308 ERR_remove_state(0); 312 ERR_remove_state(0);
309 313
310 CRYPTO_mem_leaks_fp(stdout); 314 CRYPTO_mem_leaks_fp(stderr);
311 315
312 return err; 316 return err;
313 } 317 }
diff --git a/src/lib/libcrypto/sha/sha.c b/src/lib/libcrypto/sha/sha.c
index 713fec3610..42126551d1 100644
--- a/src/lib/libcrypto/sha/sha.c
+++ b/src/lib/libcrypto/sha/sha.c
@@ -58,23 +58,14 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include <stdlib.h> 60#include <stdlib.h>
61#include "sha.h" 61#include <openssl/sha.h>
62 62
63#define BUFSIZE 1024*16 63#define BUFSIZE 1024*16
64 64
65#ifndef NOPROTO
66void do_fp(FILE *f); 65void do_fp(FILE *f);
67void pt(unsigned char *md); 66void pt(unsigned char *md);
68int read(int, void *, unsigned int); 67int read(int, void *, unsigned int);
69#else 68int main(int argc, char **argv)
70void do_fp();
71void pt();
72int read();
73#endif
74
75int main(argc, argv)
76int argc;
77char **argv;
78 { 69 {
79 int i,err=0; 70 int i,err=0;
80 FILE *IN; 71 FILE *IN;
@@ -102,8 +93,7 @@ char **argv;
102 exit(err); 93 exit(err);
103 } 94 }
104 95
105void do_fp(f) 96void do_fp(FILE *f)
106FILE *f;
107 { 97 {
108 SHA_CTX c; 98 SHA_CTX c;
109 unsigned char md[SHA_DIGEST_LENGTH]; 99 unsigned char md[SHA_DIGEST_LENGTH];
@@ -123,8 +113,7 @@ FILE *f;
123 pt(md); 113 pt(md);
124 } 114 }
125 115
126void pt(md) 116void pt(unsigned char *md)
127unsigned char *md;
128 { 117 {
129 int i; 118 int i;
130 119
diff --git a/src/lib/libcrypto/sha/sha1.c b/src/lib/libcrypto/sha/sha1.c
index a4739ac9fd..d350c88ee4 100644
--- a/src/lib/libcrypto/sha/sha1.c
+++ b/src/lib/libcrypto/sha/sha1.c
@@ -58,23 +58,17 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include <stdlib.h> 60#include <stdlib.h>
61#include "sha.h" 61#include <openssl/sha.h>
62 62
63#define BUFSIZE 1024*16 63#define BUFSIZE 1024*16
64 64
65#ifndef NOPROTO
66void do_fp(FILE *f); 65void do_fp(FILE *f);
67void pt(unsigned char *md); 66void pt(unsigned char *md);
67#ifndef _OSD_POSIX
68int read(int, void *, unsigned int); 68int read(int, void *, unsigned int);
69#else
70void do_fp();
71void pt();
72int read();
73#endif 69#endif
74 70
75int main(argc, argv) 71int main(int argc, char **argv)
76int argc;
77char **argv;
78 { 72 {
79 int i,err=0; 73 int i,err=0;
80 FILE *IN; 74 FILE *IN;
@@ -102,8 +96,7 @@ char **argv;
102 exit(err); 96 exit(err);
103 } 97 }
104 98
105void do_fp(f) 99void do_fp(FILE *f)
106FILE *f;
107 { 100 {
108 SHA_CTX c; 101 SHA_CTX c;
109 unsigned char md[SHA_DIGEST_LENGTH]; 102 unsigned char md[SHA_DIGEST_LENGTH];
@@ -123,8 +116,7 @@ FILE *f;
123 pt(md); 116 pt(md);
124 } 117 }
125 118
126void pt(md) 119void pt(unsigned char *md)
127unsigned char *md;
128 { 120 {
129 int i; 121 int i;
130 122
diff --git a/src/lib/libcrypto/sha/sha1s.cpp b/src/lib/libcrypto/sha/sha1s.cpp
index 0163377de6..af23d1e0f2 100644
--- a/src/lib/libcrypto/sha/sha1s.cpp
+++ b/src/lib/libcrypto/sha/sha1s.cpp
@@ -32,8 +32,9 @@ void GetTSC(unsigned long& tsc)
32 32
33#include <stdio.h> 33#include <stdio.h>
34#include <stdlib.h> 34#include <stdlib.h>
35#include "sha.h" 35#include <openssl/sha.h>
36 36
37#define sha1_block_x86 sha1_block_asm_data_order
37extern "C" { 38extern "C" {
38void sha1_block_x86(SHA_CTX *ctx, unsigned char *buffer,int num); 39void sha1_block_x86(SHA_CTX *ctx, unsigned char *buffer,int num);
39} 40}
@@ -55,8 +56,10 @@ void main(int argc,char *argv[])
55 if (num == 0) num=16; 56 if (num == 0) num=16;
56 if (num > 250) num=16; 57 if (num > 250) num=16;
57 numm=num+2; 58 numm=num+2;
59#if 0
58 num*=64; 60 num*=64;
59 numm*=64; 61 numm*=64;
62#endif
60 63
61 for (j=0; j<6; j++) 64 for (j=0; j<6; j++)
62 { 65 {
@@ -72,7 +75,7 @@ void main(int argc,char *argv[])
72 sha1_block_x86(&ctx,buffer,num); 75 sha1_block_x86(&ctx,buffer,num);
73 } 76 }
74 77
75 printf("sha1 (%d bytes) %d %d (%.2f)\n",num, 78 printf("sha1 (%d bytes) %d %d (%.2f)\n",num*64,
76 e1-s1,e2-s2,(double)((e1-s1)-(e2-s2))/2); 79 e1-s1,e2-s2,(double)((e1-s1)-(e2-s2))/2);
77 } 80 }
78 } 81 }
diff --git a/src/lib/libcrypto/sha/sha1test.c b/src/lib/libcrypto/sha/sha1test.c
index 3c62a218b4..499a1cf5af 100644
--- a/src/lib/libcrypto/sha/sha1test.c
+++ b/src/lib/libcrypto/sha/sha1test.c
@@ -59,57 +59,70 @@
59#include <stdio.h> 59#include <stdio.h>
60#include <string.h> 60#include <string.h>
61#include <stdlib.h> 61#include <stdlib.h>
62#include "sha.h" 62
63#ifdef OPENSSL_NO_SHA
64int main(int argc, char *argv[])
65{
66 printf("No SHA support\n");
67 return(0);
68}
69#else
70#include <openssl/evp.h>
71#include <openssl/sha.h>
72
73#ifdef CHARSET_EBCDIC
74#include <openssl/ebcdic.h>
75#endif
63 76
64#undef SHA_0 /* FIPS 180 */ 77#undef SHA_0 /* FIPS 180 */
65#define SHA_1 /* FIPS 180-1 */ 78#define SHA_1 /* FIPS 180-1 */
66 79
67char *test[]={ 80static char *test[]={
68 "abc", 81 "abc",
69 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 82 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
70 NULL, 83 NULL,
71 }; 84 };
72 85
73#ifdef SHA_0 86#ifdef SHA_0
74char *ret[]={ 87static char *ret[]={
75 "0164b8a914cd2a5e74c4f7ff082c4d97f1edf880", 88 "0164b8a914cd2a5e74c4f7ff082c4d97f1edf880",
76 "d2516ee1acfa5baf33dfc1c471e438449ef134c8", 89 "d2516ee1acfa5baf33dfc1c471e438449ef134c8",
77 }; 90 };
78char *bigret= 91static char *bigret=
79 "3232affa48628a26653b5aaa44541fd90d690603"; 92 "3232affa48628a26653b5aaa44541fd90d690603";
80#endif 93#endif
81#ifdef SHA_1 94#ifdef SHA_1
82char *ret[]={ 95static char *ret[]={
83 "a9993e364706816aba3e25717850c26c9cd0d89d", 96 "a9993e364706816aba3e25717850c26c9cd0d89d",
84 "84983e441c3bd26ebaae4aa1f95129e5e54670f1", 97 "84983e441c3bd26ebaae4aa1f95129e5e54670f1",
85 }; 98 };
86char *bigret= 99static char *bigret=
87 "34aa973cd4c4daa4f61eeb2bdbad27316534016f"; 100 "34aa973cd4c4daa4f61eeb2bdbad27316534016f";
88#endif 101#endif
89 102
90#ifndef NOPROTO
91static char *pt(unsigned char *md); 103static char *pt(unsigned char *md);
92#else 104int main(int argc, char *argv[])
93static char *pt();
94#endif
95
96int main(argc,argv)
97int argc;
98char *argv[];
99 { 105 {
100 int i,err=0; 106 int i,err=0;
101 unsigned char **P,**R; 107 unsigned char **P,**R;
102 static unsigned char buf[1000]; 108 static unsigned char buf[1000];
103 char *p,*r; 109 char *p,*r;
104 SHA_CTX c; 110 EVP_MD_CTX c;
105 unsigned char md[SHA_DIGEST_LENGTH]; 111 unsigned char md[SHA_DIGEST_LENGTH];
106 112
113#ifdef CHARSET_EBCDIC
114 ebcdic2ascii(test[0], test[0], strlen(test[0]));
115 ebcdic2ascii(test[1], test[1], strlen(test[1]));
116#endif
117
118 EVP_MD_CTX_init(&c);
107 P=(unsigned char **)test; 119 P=(unsigned char **)test;
108 R=(unsigned char **)ret; 120 R=(unsigned char **)ret;
109 i=1; 121 i=1;
110 while (*P != NULL) 122 while (*P != NULL)
111 { 123 {
112 p=pt(SHA1(*P,(unsigned long)strlen((char *)*P),NULL)); 124 EVP_Digest(*P,(unsigned long)strlen((char *)*P),md,NULL,EVP_sha1(), NULL);
125 p=pt(md);
113 if (strcmp(p,(char *)*R) != 0) 126 if (strcmp(p,(char *)*R) != 0)
114 { 127 {
115 printf("error calculating SHA1 on '%s'\n",*P); 128 printf("error calculating SHA1 on '%s'\n",*P);
@@ -124,10 +137,13 @@ char *argv[];
124 } 137 }
125 138
126 memset(buf,'a',1000); 139 memset(buf,'a',1000);
127 SHA1_Init(&c); 140#ifdef CHARSET_EBCDIC
141 ebcdic2ascii(buf, buf, 1000);
142#endif /*CHARSET_EBCDIC*/
143 EVP_DigestInit_ex(&c,EVP_sha1(), NULL);
128 for (i=0; i<1000; i++) 144 for (i=0; i<1000; i++)
129 SHA1_Update(&c,buf,1000); 145 EVP_DigestUpdate(&c,buf,1000);
130 SHA1_Final(md,&c); 146 EVP_DigestFinal_ex(&c,md,NULL);
131 p=pt(md); 147 p=pt(md);
132 148
133 r=bigret; 149 r=bigret;
@@ -140,11 +156,11 @@ char *argv[];
140 else 156 else
141 printf("test 3 ok\n"); 157 printf("test 3 ok\n");
142 exit(err); 158 exit(err);
159 EVP_MD_CTX_cleanup(&c);
143 return(0); 160 return(0);
144 } 161 }
145 162
146static char *pt(md) 163static char *pt(unsigned char *md)
147unsigned char *md;
148 { 164 {
149 int i; 165 int i;
150 static char buf[80]; 166 static char buf[80];
@@ -153,3 +169,4 @@ unsigned char *md;
153 sprintf(&(buf[i*2]),"%02x",md[i]); 169 sprintf(&(buf[i*2]),"%02x",md[i]);
154 return(buf); 170 return(buf);
155 } 171 }
172#endif
diff --git a/src/lib/libcrypto/sha/sha_dgst.c b/src/lib/libcrypto/sha/sha_dgst.c
index 8ed533ea26..5a4b3ab204 100644
--- a/src/lib/libcrypto/sha/sha_dgst.c
+++ b/src/lib/libcrypto/sha/sha_dgst.c
@@ -1,4 +1,4 @@
1/* crypto/sha/sha_dgst.c */ 1/* crypto/sha/sha1dgst.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -56,387 +56,18 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58 58
59#include <stdio.h> 59#if !defined(OPENSSL_NO_SHA0) && !defined(OPENSSL_NO_SHA)
60#include <string.h>
61#define SHA_0
62#undef SHA_1
63#include "sha.h"
64#include "sha_locl.h"
65
66char *SHA_version="SHA part of SSLeay 0.9.0b 29-Jun-1998";
67
68/* Implemented from SHA-0 document - The Secure Hash Algorithm
69 */
70
71#define INIT_DATA_h0 (unsigned long)0x67452301L
72#define INIT_DATA_h1 (unsigned long)0xefcdab89L
73#define INIT_DATA_h2 (unsigned long)0x98badcfeL
74#define INIT_DATA_h3 (unsigned long)0x10325476L
75#define INIT_DATA_h4 (unsigned long)0xc3d2e1f0L
76
77#define K_00_19 0x5a827999L
78#define K_20_39 0x6ed9eba1L
79#define K_40_59 0x8f1bbcdcL
80#define K_60_79 0xca62c1d6L
81
82#ifndef NOPROTO
83 void sha_block(SHA_CTX *c, register unsigned long *p, int num);
84#else
85 void sha_block();
86#endif
87
88#define M_c2nl c2nl
89#define M_p_c2nl p_c2nl
90#define M_c2nl_p c2nl_p
91#define M_p_c2nl_p p_c2nl_p
92#define M_nl2c nl2c
93
94void SHA_Init(c)
95SHA_CTX *c;
96 {
97 c->h0=INIT_DATA_h0;
98 c->h1=INIT_DATA_h1;
99 c->h2=INIT_DATA_h2;
100 c->h3=INIT_DATA_h3;
101 c->h4=INIT_DATA_h4;
102 c->Nl=0;
103 c->Nh=0;
104 c->num=0;
105 }
106
107void SHA_Update(c, data, len)
108SHA_CTX *c;
109register unsigned char *data;
110unsigned long len;
111 {
112 register ULONG *p;
113 int ew,ec,sw,sc;
114 ULONG l;
115
116 if (len == 0) return;
117
118 l=(c->Nl+(len<<3))&0xffffffffL;
119 if (l < c->Nl) /* overflow */
120 c->Nh++;
121 c->Nh+=(len>>29);
122 c->Nl=l;
123
124 if (c->num != 0)
125 {
126 p=c->data;
127 sw=c->num>>2;
128 sc=c->num&0x03;
129
130 if ((c->num+len) >= SHA_CBLOCK)
131 {
132 l= p[sw];
133 M_p_c2nl(data,l,sc);
134 p[sw++]=l;
135 for (; sw<SHA_LBLOCK; sw++)
136 {
137 M_c2nl(data,l);
138 p[sw]=l;
139 }
140 len-=(SHA_CBLOCK-c->num);
141
142 sha_block(c,p,64);
143 c->num=0;
144 /* drop through and do the rest */
145 }
146 else
147 {
148 c->num+=(int)len;
149 if ((sc+len) < 4) /* ugly, add char's to a word */
150 {
151 l= p[sw];
152 M_p_c2nl_p(data,l,sc,len);
153 p[sw]=l;
154 }
155 else
156 {
157 ew=(c->num>>2);
158 ec=(c->num&0x03);
159 l= p[sw];
160 M_p_c2nl(data,l,sc);
161 p[sw++]=l;
162 for (; sw < ew; sw++)
163 { M_c2nl(data,l); p[sw]=l; }
164 if (ec)
165 {
166 M_c2nl_p(data,l,ec);
167 p[sw]=l;
168 }
169 }
170 return;
171 }
172 }
173 /* We can only do the following code for assember, the reason
174 * being that the sha_block 'C' version changes the values
175 * in the 'data' array. The assember code avoids this and
176 * copies it to a local array. I should be able to do this for
177 * the C version as well....
178 */
179#if 1
180#if defined(B_ENDIAN) || defined(SHA_ASM)
181 if ((((unsigned int)data)%sizeof(ULONG)) == 0)
182 {
183 sw=len/SHA_CBLOCK;
184 if (sw)
185 {
186 sw*=SHA_CBLOCK;
187 sha_block(c,(ULONG *)data,sw);
188 data+=sw;
189 len-=sw;
190 }
191 }
192#endif
193#endif
194 /* we now can process the input data in blocks of SHA_CBLOCK
195 * chars and save the leftovers to c->data. */
196 p=c->data;
197 while (len >= SHA_CBLOCK)
198 {
199#if defined(B_ENDIAN) || defined(L_ENDIAN)
200 if (p != (unsigned long *)data)
201 memcpy(p,data,SHA_CBLOCK);
202 data+=SHA_CBLOCK;
203# ifdef L_ENDIAN
204# ifndef SHA_ASM /* Will not happen */
205 for (sw=(SHA_LBLOCK/4); sw; sw--)
206 {
207 Endian_Reverse32(p[0]);
208 Endian_Reverse32(p[1]);
209 Endian_Reverse32(p[2]);
210 Endian_Reverse32(p[3]);
211 p+=4;
212 }
213 p=c->data;
214# endif
215# endif
216#else
217 for (sw=(SHA_BLOCK/4); sw; sw--)
218 {
219 M_c2nl(data,l); *(p++)=l;
220 M_c2nl(data,l); *(p++)=l;
221 M_c2nl(data,l); *(p++)=l;
222 M_c2nl(data,l); *(p++)=l;
223 }
224 p=c->data;
225#endif
226 sha_block(c,p,64);
227 len-=SHA_CBLOCK;
228 }
229 ec=(int)len;
230 c->num=ec;
231 ew=(ec>>2);
232 ec&=0x03;
233
234 for (sw=0; sw < ew; sw++)
235 { M_c2nl(data,l); p[sw]=l; }
236 M_c2nl_p(data,l,ec);
237 p[sw]=l;
238 }
239
240void SHA_Transform(c,b)
241SHA_CTX *c;
242unsigned char *b;
243 {
244 ULONG p[16];
245#if !defined(B_ENDIAN)
246 ULONG *q;
247 int i;
248#endif
249
250#if defined(B_ENDIAN) || defined(L_ENDIAN)
251 memcpy(p,b,64);
252#ifdef L_ENDIAN
253 q=p;
254 for (i=(SHA_LBLOCK/4); i; i--)
255 {
256 Endian_Reverse32(q[0]);
257 Endian_Reverse32(q[1]);
258 Endian_Reverse32(q[2]);
259 Endian_Reverse32(q[3]);
260 q+=4;
261 }
262#endif
263#else
264 q=p;
265 for (i=(SHA_LBLOCK/4); i; i--)
266 {
267 ULONG l;
268 c2nl(b,l); *(q++)=l;
269 c2nl(b,l); *(q++)=l;
270 c2nl(b,l); *(q++)=l;
271 c2nl(b,l); *(q++)=l;
272 }
273#endif
274 sha_block(c,p,64);
275 }
276
277void sha_block(c, W, num)
278SHA_CTX *c;
279register unsigned long *W;
280int num;
281 {
282 register ULONG A,B,C,D,E,T;
283 ULONG X[16];
284
285 A=c->h0;
286 B=c->h1;
287 C=c->h2;
288 D=c->h3;
289 E=c->h4;
290
291 for (;;)
292 {
293 BODY_00_15( 0,A,B,C,D,E,T,W);
294 BODY_00_15( 1,T,A,B,C,D,E,W);
295 BODY_00_15( 2,E,T,A,B,C,D,W);
296 BODY_00_15( 3,D,E,T,A,B,C,W);
297 BODY_00_15( 4,C,D,E,T,A,B,W);
298 BODY_00_15( 5,B,C,D,E,T,A,W);
299 BODY_00_15( 6,A,B,C,D,E,T,W);
300 BODY_00_15( 7,T,A,B,C,D,E,W);
301 BODY_00_15( 8,E,T,A,B,C,D,W);
302 BODY_00_15( 9,D,E,T,A,B,C,W);
303 BODY_00_15(10,C,D,E,T,A,B,W);
304 BODY_00_15(11,B,C,D,E,T,A,W);
305 BODY_00_15(12,A,B,C,D,E,T,W);
306 BODY_00_15(13,T,A,B,C,D,E,W);
307 BODY_00_15(14,E,T,A,B,C,D,W);
308 BODY_00_15(15,D,E,T,A,B,C,W);
309 BODY_16_19(16,C,D,E,T,A,B,W,W,W,W);
310 BODY_16_19(17,B,C,D,E,T,A,W,W,W,W);
311 BODY_16_19(18,A,B,C,D,E,T,W,W,W,W);
312 BODY_16_19(19,T,A,B,C,D,E,W,W,W,X);
313 60
314 BODY_20_31(20,E,T,A,B,C,D,W,W,W,X); 61#undef SHA_1
315 BODY_20_31(21,D,E,T,A,B,C,W,W,W,X); 62#define SHA_0
316 BODY_20_31(22,C,D,E,T,A,B,W,W,W,X);
317 BODY_20_31(23,B,C,D,E,T,A,W,W,W,X);
318 BODY_20_31(24,A,B,C,D,E,T,W,W,X,X);
319 BODY_20_31(25,T,A,B,C,D,E,W,W,X,X);
320 BODY_20_31(26,E,T,A,B,C,D,W,W,X,X);
321 BODY_20_31(27,D,E,T,A,B,C,W,W,X,X);
322 BODY_20_31(28,C,D,E,T,A,B,W,W,X,X);
323 BODY_20_31(29,B,C,D,E,T,A,W,W,X,X);
324 BODY_20_31(30,A,B,C,D,E,T,W,X,X,X);
325 BODY_20_31(31,T,A,B,C,D,E,W,X,X,X);
326 BODY_32_39(32,E,T,A,B,C,D,X);
327 BODY_32_39(33,D,E,T,A,B,C,X);
328 BODY_32_39(34,C,D,E,T,A,B,X);
329 BODY_32_39(35,B,C,D,E,T,A,X);
330 BODY_32_39(36,A,B,C,D,E,T,X);
331 BODY_32_39(37,T,A,B,C,D,E,X);
332 BODY_32_39(38,E,T,A,B,C,D,X);
333 BODY_32_39(39,D,E,T,A,B,C,X);
334 63
335 BODY_40_59(40,C,D,E,T,A,B,X); 64#include <openssl/opensslv.h>
336 BODY_40_59(41,B,C,D,E,T,A,X);
337 BODY_40_59(42,A,B,C,D,E,T,X);
338 BODY_40_59(43,T,A,B,C,D,E,X);
339 BODY_40_59(44,E,T,A,B,C,D,X);
340 BODY_40_59(45,D,E,T,A,B,C,X);
341 BODY_40_59(46,C,D,E,T,A,B,X);
342 BODY_40_59(47,B,C,D,E,T,A,X);
343 BODY_40_59(48,A,B,C,D,E,T,X);
344 BODY_40_59(49,T,A,B,C,D,E,X);
345 BODY_40_59(50,E,T,A,B,C,D,X);
346 BODY_40_59(51,D,E,T,A,B,C,X);
347 BODY_40_59(52,C,D,E,T,A,B,X);
348 BODY_40_59(53,B,C,D,E,T,A,X);
349 BODY_40_59(54,A,B,C,D,E,T,X);
350 BODY_40_59(55,T,A,B,C,D,E,X);
351 BODY_40_59(56,E,T,A,B,C,D,X);
352 BODY_40_59(57,D,E,T,A,B,C,X);
353 BODY_40_59(58,C,D,E,T,A,B,X);
354 BODY_40_59(59,B,C,D,E,T,A,X);
355 65
356 BODY_60_79(60,A,B,C,D,E,T,X); 66const char *SHA_version="SHA" OPENSSL_VERSION_PTEXT;
357 BODY_60_79(61,T,A,B,C,D,E,X);
358 BODY_60_79(62,E,T,A,B,C,D,X);
359 BODY_60_79(63,D,E,T,A,B,C,X);
360 BODY_60_79(64,C,D,E,T,A,B,X);
361 BODY_60_79(65,B,C,D,E,T,A,X);
362 BODY_60_79(66,A,B,C,D,E,T,X);
363 BODY_60_79(67,T,A,B,C,D,E,X);
364 BODY_60_79(68,E,T,A,B,C,D,X);
365 BODY_60_79(69,D,E,T,A,B,C,X);
366 BODY_60_79(70,C,D,E,T,A,B,X);
367 BODY_60_79(71,B,C,D,E,T,A,X);
368 BODY_60_79(72,A,B,C,D,E,T,X);
369 BODY_60_79(73,T,A,B,C,D,E,X);
370 BODY_60_79(74,E,T,A,B,C,D,X);
371 BODY_60_79(75,D,E,T,A,B,C,X);
372 BODY_60_79(76,C,D,E,T,A,B,X);
373 BODY_60_79(77,B,C,D,E,T,A,X);
374 BODY_60_79(78,A,B,C,D,E,T,X);
375 BODY_60_79(79,T,A,B,C,D,E,X);
376
377 c->h0=(c->h0+E)&0xffffffffL;
378 c->h1=(c->h1+T)&0xffffffffL;
379 c->h2=(c->h2+A)&0xffffffffL;
380 c->h3=(c->h3+B)&0xffffffffL;
381 c->h4=(c->h4+C)&0xffffffffL;
382 67
383 num-=64; 68/* The implementation is in ../md32_common.h */
384 if (num <= 0) break;
385 69
386 A=c->h0; 70#include "sha_locl.h"
387 B=c->h1;
388 C=c->h2;
389 D=c->h3;
390 E=c->h4;
391
392 W+=16;
393 }
394 }
395
396void SHA_Final(md, c)
397unsigned char *md;
398SHA_CTX *c;
399 {
400 register int i,j;
401 register ULONG l;
402 register ULONG *p;
403 static unsigned char end[4]={0x80,0x00,0x00,0x00};
404 unsigned char *cp=end;
405 71
406 /* c->num should definitly have room for at least one more byte. */
407 p=c->data;
408 j=c->num;
409 i=j>>2;
410#ifdef PURIFY
411 if ((j&0x03) == 0) p[i]=0;
412#endif 72#endif
413 l=p[i];
414 M_p_c2nl(cp,l,j&0x03);
415 p[i]=l;
416 i++;
417 /* i is the next 'undefined word' */
418 if (c->num >= SHA_LAST_BLOCK)
419 {
420 for (; i<SHA_LBLOCK; i++)
421 p[i]=0;
422 sha_block(c,p,64);
423 i=0;
424 }
425 for (; i<(SHA_LBLOCK-2); i++)
426 p[i]=0;
427 p[SHA_LBLOCK-2]=c->Nh;
428 p[SHA_LBLOCK-1]=c->Nl;
429 sha_block(c,p,64);
430 cp=md;
431 l=c->h0; nl2c(l,cp);
432 l=c->h1; nl2c(l,cp);
433 l=c->h2; nl2c(l,cp);
434 l=c->h3; nl2c(l,cp);
435 l=c->h4; nl2c(l,cp);
436
437 /* clear stuff, sha_block may be leaving some stuff on the stack
438 * but I'm not worried :-) */
439 c->num=0;
440/* memset((char *)&c,0,sizeof(c));*/
441 }
442 73
diff --git a/src/lib/libcrypto/sha/sha_one.c b/src/lib/libcrypto/sha/sha_one.c
index 18ab7f61bc..5426faae4a 100644
--- a/src/lib/libcrypto/sha/sha_one.c
+++ b/src/lib/libcrypto/sha/sha_one.c
@@ -58,12 +58,10 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include <string.h> 60#include <string.h>
61#include "sha.h" 61#include <openssl/sha.h>
62 62
63unsigned char *SHA(d, n, md) 63#ifndef OPENSSL_NO_SHA0
64unsigned char *d; 64unsigned char *SHA(const unsigned char *d, unsigned long n, unsigned char *md)
65unsigned long n;
66unsigned char *md;
67 { 65 {
68 SHA_CTX c; 66 SHA_CTX c;
69 static unsigned char m[SHA_DIGEST_LENGTH]; 67 static unsigned char m[SHA_DIGEST_LENGTH];
@@ -75,3 +73,4 @@ unsigned char *md;
75 memset(&c,0,sizeof(c)); 73 memset(&c,0,sizeof(c));
76 return(md); 74 return(md);
77 } 75 }
76#endif
diff --git a/src/lib/libcrypto/sha/shatest.c b/src/lib/libcrypto/sha/shatest.c
index 03816e9b39..331294a74f 100644
--- a/src/lib/libcrypto/sha/shatest.c
+++ b/src/lib/libcrypto/sha/shatest.c
@@ -59,57 +59,70 @@
59#include <stdio.h> 59#include <stdio.h>
60#include <string.h> 60#include <string.h>
61#include <stdlib.h> 61#include <stdlib.h>
62#include "sha.h" 62
63#ifdef OPENSSL_NO_SHA
64int main(int argc, char *argv[])
65{
66 printf("No SHA support\n");
67 return(0);
68}
69#else
70#include <openssl/evp.h>
71#include <openssl/sha.h>
72
73#ifdef CHARSET_EBCDIC
74#include <openssl/ebcdic.h>
75#endif
63 76
64#define SHA_0 /* FIPS 180 */ 77#define SHA_0 /* FIPS 180 */
65#undef SHA_1 /* FIPS 180-1 */ 78#undef SHA_1 /* FIPS 180-1 */
66 79
67char *test[]={ 80static char *test[]={
68 "abc", 81 "abc",
69 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 82 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
70 NULL, 83 NULL,
71 }; 84 };
72 85
73#ifdef SHA_0 86#ifdef SHA_0
74char *ret[]={ 87static char *ret[]={
75 "0164b8a914cd2a5e74c4f7ff082c4d97f1edf880", 88 "0164b8a914cd2a5e74c4f7ff082c4d97f1edf880",
76 "d2516ee1acfa5baf33dfc1c471e438449ef134c8", 89 "d2516ee1acfa5baf33dfc1c471e438449ef134c8",
77 }; 90 };
78char *bigret= 91static char *bigret=
79 "3232affa48628a26653b5aaa44541fd90d690603"; 92 "3232affa48628a26653b5aaa44541fd90d690603";
80#endif 93#endif
81#ifdef SHA_1 94#ifdef SHA_1
82char *ret[]={ 95static char *ret[]={
83 "a9993e364706816aba3e25717850c26c9cd0d89d", 96 "a9993e364706816aba3e25717850c26c9cd0d89d",
84 "84983e441c3bd26ebaae4aa1f95129e5e54670f1", 97 "84983e441c3bd26ebaae4aa1f95129e5e54670f1",
85 }; 98 };
86char *bigret= 99static char *bigret=
87 "34aa973cd4c4daa4f61eeb2bdbad27316534016f"; 100 "34aa973cd4c4daa4f61eeb2bdbad27316534016f";
88#endif 101#endif
89 102
90#ifndef NOPROTO
91static char *pt(unsigned char *md); 103static char *pt(unsigned char *md);
92#else 104int main(int argc, char *argv[])
93static char *pt();
94#endif
95
96int main(argc,argv)
97int argc;
98char *argv[];
99 { 105 {
100 int i,err=0; 106 int i,err=0;
101 unsigned char **P,**R; 107 unsigned char **P,**R;
102 static unsigned char buf[1000]; 108 static unsigned char buf[1000];
103 char *p,*r; 109 char *p,*r;
104 SHA_CTX c; 110 EVP_MD_CTX c;
105 unsigned char md[SHA_DIGEST_LENGTH]; 111 unsigned char md[SHA_DIGEST_LENGTH];
106 112
113#ifdef CHARSET_EBCDIC
114 ebcdic2ascii(test[0], test[0], strlen(test[0]));
115 ebcdic2ascii(test[1], test[1], strlen(test[1]));
116#endif
117
118 EVP_MD_CTX_init(&c);
107 P=(unsigned char **)test; 119 P=(unsigned char **)test;
108 R=(unsigned char **)ret; 120 R=(unsigned char **)ret;
109 i=1; 121 i=1;
110 while (*P != NULL) 122 while (*P != NULL)
111 { 123 {
112 p=pt(SHA(*P,(unsigned long)strlen((char *)*P),NULL)); 124 EVP_Digest(*P,(unsigned long)strlen((char *)*P),md,NULL,EVP_sha(), NULL);
125 p=pt(md);
113 if (strcmp(p,(char *)*R) != 0) 126 if (strcmp(p,(char *)*R) != 0)
114 { 127 {
115 printf("error calculating SHA on '%s'\n",*P); 128 printf("error calculating SHA on '%s'\n",*P);
@@ -124,10 +137,13 @@ char *argv[];
124 } 137 }
125 138
126 memset(buf,'a',1000); 139 memset(buf,'a',1000);
127 SHA_Init(&c); 140#ifdef CHARSET_EBCDIC
141 ebcdic2ascii(buf, buf, 1000);
142#endif /*CHARSET_EBCDIC*/
143 EVP_DigestInit_ex(&c,EVP_sha(), NULL);
128 for (i=0; i<1000; i++) 144 for (i=0; i<1000; i++)
129 SHA_Update(&c,buf,1000); 145 EVP_DigestUpdate(&c,buf,1000);
130 SHA_Final(md,&c); 146 EVP_DigestFinal_ex(&c,md,NULL);
131 p=pt(md); 147 p=pt(md);
132 148
133 r=bigret; 149 r=bigret;
@@ -139,12 +155,12 @@ char *argv[];
139 } 155 }
140 else 156 else
141 printf("test 3 ok\n"); 157 printf("test 3 ok\n");
158 EVP_MD_CTX_cleanup(&c);
142 exit(err); 159 exit(err);
143 return(0); 160 return(0);
144 } 161 }
145 162
146static char *pt(md) 163static char *pt(unsigned char *md)
147unsigned char *md;
148 { 164 {
149 int i; 165 int i;
150 static char buf[80]; 166 static char buf[80];
@@ -153,3 +169,4 @@ unsigned char *md;
153 sprintf(&(buf[i*2]),"%02x",md[i]); 169 sprintf(&(buf[i*2]),"%02x",md[i]);
154 return(buf); 170 return(buf);
155 } 171 }
172#endif
diff --git a/src/lib/libcrypto/symhacks.h b/src/lib/libcrypto/symhacks.h
index 358ad355bb..de0f452b47 100644
--- a/src/lib/libcrypto/symhacks.h
+++ b/src/lib/libcrypto/symhacks.h
@@ -55,10 +55,18 @@
55#ifndef HEADER_SYMHACKS_H 55#ifndef HEADER_SYMHACKS_H
56#define HEADER_SYMHACKS_H 56#define HEADER_SYMHACKS_H
57 57
58#include <openssl/e_os2.h>
59
58/* Hacks to solve the problem with linkers incapable of handling very long 60/* Hacks to solve the problem with linkers incapable of handling very long
59 symbol names. In the case of VMS, the limit is 31 characters on VMS for 61 symbol names. In the case of VMS, the limit is 31 characters on VMS for
60 VAX. */ 62 VAX. */
61#ifdef VMS 63#ifdef OPENSSL_SYS_VMS
64
65/* Hack a long name in crypto/ex_data.c */
66#undef CRYPTO_get_ex_data_implementation
67#define CRYPTO_get_ex_data_implementation CRYPTO_get_ex_data_impl
68#undef CRYPTO_set_ex_data_implementation
69#define CRYPTO_set_ex_data_implementation CRYPTO_set_ex_data_impl
62 70
63/* Hack a long name in crypto/asn1/a_mbstr.c */ 71/* Hack a long name in crypto/asn1/a_mbstr.c */
64#undef ASN1_STRING_set_default_mask_asc 72#undef ASN1_STRING_set_default_mask_asc
@@ -121,33 +129,146 @@
121#define X509_REVOKED_get_ext_by_critical X509_REVOKED_get_ext_by_critic 129#define X509_REVOKED_get_ext_by_critical X509_REVOKED_get_ext_by_critic
122 130
123/* Hack some long CRYPTO names */ 131/* Hack some long CRYPTO names */
132#undef CRYPTO_set_dynlock_destroy_callback
124#define CRYPTO_set_dynlock_destroy_callback CRYPTO_set_dynlock_destroy_cb 133#define CRYPTO_set_dynlock_destroy_callback CRYPTO_set_dynlock_destroy_cb
134#undef CRYPTO_set_dynlock_create_callback
125#define CRYPTO_set_dynlock_create_callback CRYPTO_set_dynlock_create_cb 135#define CRYPTO_set_dynlock_create_callback CRYPTO_set_dynlock_create_cb
136#undef CRYPTO_set_dynlock_lock_callback
126#define CRYPTO_set_dynlock_lock_callback CRYPTO_set_dynlock_lock_cb 137#define CRYPTO_set_dynlock_lock_callback CRYPTO_set_dynlock_lock_cb
138#undef CRYPTO_get_dynlock_lock_callback
127#define CRYPTO_get_dynlock_lock_callback CRYPTO_get_dynlock_lock_cb 139#define CRYPTO_get_dynlock_lock_callback CRYPTO_get_dynlock_lock_cb
140#undef CRYPTO_get_dynlock_destroy_callback
128#define CRYPTO_get_dynlock_destroy_callback CRYPTO_get_dynlock_destroy_cb 141#define CRYPTO_get_dynlock_destroy_callback CRYPTO_get_dynlock_destroy_cb
142#undef CRYPTO_get_dynlock_create_callback
129#define CRYPTO_get_dynlock_create_callback CRYPTO_get_dynlock_create_cb 143#define CRYPTO_get_dynlock_create_callback CRYPTO_get_dynlock_create_cb
144#undef CRYPTO_set_locked_mem_ex_functions
145#define CRYPTO_set_locked_mem_ex_functions CRYPTO_set_locked_mem_ex_funcs
146#undef CRYPTO_get_locked_mem_ex_functions
147#define CRYPTO_get_locked_mem_ex_functions CRYPTO_get_locked_mem_ex_funcs
130 148
131/* Hack some long SSL names */ 149/* Hack some long SSL names */
150#undef SSL_CTX_set_default_verify_paths
132#define SSL_CTX_set_default_verify_paths SSL_CTX_set_def_verify_paths 151#define SSL_CTX_set_default_verify_paths SSL_CTX_set_def_verify_paths
152#undef SSL_get_ex_data_X509_STORE_CTX_idx
133#define SSL_get_ex_data_X509_STORE_CTX_idx SSL_get_ex_d_X509_STORE_CTX_idx 153#define SSL_get_ex_data_X509_STORE_CTX_idx SSL_get_ex_d_X509_STORE_CTX_idx
154#undef SSL_add_file_cert_subjects_to_stack
134#define SSL_add_file_cert_subjects_to_stack SSL_add_file_cert_subjs_to_stk 155#define SSL_add_file_cert_subjects_to_stack SSL_add_file_cert_subjs_to_stk
156#if 0 /* This function is not defined i VMS. */
157#undef SSL_add_dir_cert_subjects_to_stack
135#define SSL_add_dir_cert_subjects_to_stack SSL_add_dir_cert_subjs_to_stk 158#define SSL_add_dir_cert_subjects_to_stack SSL_add_dir_cert_subjs_to_stk
159#endif
160#undef SSL_CTX_use_certificate_chain_file
136#define SSL_CTX_use_certificate_chain_file SSL_CTX_use_cert_chain_file 161#define SSL_CTX_use_certificate_chain_file SSL_CTX_use_cert_chain_file
162#undef SSL_CTX_set_cert_verify_callback
137#define SSL_CTX_set_cert_verify_callback SSL_CTX_set_cert_verify_cb 163#define SSL_CTX_set_cert_verify_callback SSL_CTX_set_cert_verify_cb
164#undef SSL_CTX_set_default_passwd_cb_userdata
138#define SSL_CTX_set_default_passwd_cb_userdata SSL_CTX_set_def_passwd_cb_ud 165#define SSL_CTX_set_default_passwd_cb_userdata SSL_CTX_set_def_passwd_cb_ud
139 166
140/* Hack some long ENGINE names */ 167/* Hack some long ENGINE names */
141#define ENGINE_get_default_BN_mod_exp_crt ENGINE_get_def_BN_mod_exp_crt 168#undef ENGINE_get_default_BN_mod_exp_crt
142#define ENGINE_set_default_BN_mod_exp_crt ENGINE_set_def_BN_mod_exp_crt 169#define ENGINE_get_default_BN_mod_exp_crt ENGINE_get_def_BN_mod_exp_crt
170#undef ENGINE_set_default_BN_mod_exp_crt
171#define ENGINE_set_default_BN_mod_exp_crt ENGINE_set_def_BN_mod_exp_crt
172#undef ENGINE_set_load_privkey_function
173#define ENGINE_set_load_privkey_function ENGINE_set_load_privkey_fn
174#undef ENGINE_get_load_privkey_function
175#define ENGINE_get_load_privkey_function ENGINE_get_load_privkey_fn
176
177/* Hack some long OCSP names */
178#undef OCSP_REQUEST_get_ext_by_critical
179#define OCSP_REQUEST_get_ext_by_critical OCSP_REQUEST_get_ext_by_crit
180#undef OCSP_BASICRESP_get_ext_by_critical
181#define OCSP_BASICRESP_get_ext_by_critical OCSP_BASICRESP_get_ext_by_crit
182#undef OCSP_SINGLERESP_get_ext_by_critical
183#define OCSP_SINGLERESP_get_ext_by_critical OCSP_SINGLERESP_get_ext_by_crit
184
185/* Hack some long DES names */
186#undef _ossl_old_des_ede3_cfb64_encrypt
187#define _ossl_old_des_ede3_cfb64_encrypt _ossl_odes_ede3_cfb64_encrypt
188#undef _ossl_old_des_ede3_ofb64_encrypt
189#define _ossl_old_des_ede3_ofb64_encrypt _ossl_odes_ede3_ofb64_encrypt
143 190
144#endif /* defined VMS */ 191/* Hack some long EVP names */
192#undef OPENSSL_add_all_algorithms_noconf
193#define OPENSSL_add_all_algorithms_noconf OPENSSL_add_all_algo_noconf
194#undef OPENSSL_add_all_algorithms_conf
195#define OPENSSL_add_all_algorithms_conf OPENSSL_add_all_algo_conf
196
197/* Hack some long EC names */
198#undef EC_POINT_set_Jprojective_coordinates_GFp
199#define EC_POINT_set_Jprojective_coordinates_GFp \
200 EC_POINT_set_Jproj_coords_GFp
201#undef EC_POINT_get_Jprojective_coordinates_GFp
202#define EC_POINT_get_Jprojective_coordinates_GFp \
203 EC_POINT_get_Jproj_coords_GFp
204#undef EC_POINT_set_affine_coordinates_GFp
205#define EC_POINT_set_affine_coordinates_GFp EC_POINT_set_affine_coords_GFp
206#undef EC_POINT_get_affine_coordinates_GFp
207#define EC_POINT_get_affine_coordinates_GFp EC_POINT_get_affine_coords_GFp
208#undef EC_POINT_set_compressed_coordinates_GFp
209#define EC_POINT_set_compressed_coordinates_GFp EC_POINT_set_compr_coords_GFp
210#undef ec_GFp_simple_group_set_curve_GFp
211#define ec_GFp_simple_group_set_curve_GFp ec_GFp_simple_grp_set_curve_GFp
212#undef ec_GFp_simple_group_get_curve_GFp
213#define ec_GFp_simple_group_get_curve_GFp ec_GFp_simple_grp_get_curve_GFp
214#undef ec_GFp_simple_group_clear_finish
215#define ec_GFp_simple_group_clear_finish ec_GFp_simple_grp_clear_finish
216#undef ec_GFp_simple_group_set_generator
217#define ec_GFp_simple_group_set_generator ec_GFp_simple_grp_set_generator
218#undef ec_GFp_simple_group_get0_generator
219#define ec_GFp_simple_group_get0_generator ec_GFp_simple_grp_gt0_generator
220#undef ec_GFp_simple_group_get_cofactor
221#define ec_GFp_simple_group_get_cofactor ec_GFp_simple_grp_get_cofactor
222#undef ec_GFp_simple_point_clear_finish
223#define ec_GFp_simple_point_clear_finish ec_GFp_simple_pt_clear_finish
224#undef ec_GFp_simple_point_set_to_infinity
225#define ec_GFp_simple_point_set_to_infinity ec_GFp_simple_pt_set_to_inf
226#undef ec_GFp_simple_points_make_affine
227#define ec_GFp_simple_points_make_affine ec_GFp_simple_pts_make_affine
228#undef ec_GFp_simple_group_get_curve_GFp
229#define ec_GFp_simple_group_get_curve_GFp ec_GFp_simple_grp_get_curve_GFp
230#undef ec_GFp_simple_set_Jprojective_coordinates_GFp
231#define ec_GFp_simple_set_Jprojective_coordinates_GFp \
232 ec_GFp_smp_set_Jproj_coords_GFp
233#undef ec_GFp_simple_get_Jprojective_coordinates_GFp
234#define ec_GFp_simple_get_Jprojective_coordinates_GFp \
235 ec_GFp_smp_get_Jproj_coords_GFp
236#undef ec_GFp_simple_point_set_affine_coordinates_GFp
237#define ec_GFp_simple_point_set_affine_coordinates_GFp \
238 ec_GFp_smp_pt_set_af_coords_GFp
239#undef ec_GFp_simple_point_get_affine_coordinates_GFp
240#define ec_GFp_simple_point_get_affine_coordinates_GFp \
241 ec_GFp_smp_pt_get_af_coords_GFp
242#undef ec_GFp_simple_set_compressed_coordinates_GFp
243#define ec_GFp_simple_set_compressed_coordinates_GFp \
244 ec_GFp_smp_set_compr_coords_GFp
245
246#endif /* defined OPENSSL_SYS_VMS */
145 247
146 248
147/* Case insensiteve linking causes problems.... */ 249/* Case insensiteve linking causes problems.... */
148#if defined(WIN16) || defined(VMS) 250#if defined(OPENSSL_SYS_WIN16) || defined(OPENSSL_SYS_VMS)
149#undef ERR_load_CRYPTO_strings 251#undef ERR_load_CRYPTO_strings
150#define ERR_load_CRYPTO_strings ERR_load_CRYPTOlib_strings 252#define ERR_load_CRYPTO_strings ERR_load_CRYPTOlib_strings
253#undef OCSP_crlID_new
254#define OCSP_crlID_new OCSP_crlID2_new
255
256/* These functions do not seem to exist! However, I'm paranoid...
257 Original command in x509v3.h:
258 These functions are being redefined in another directory,
259 and clash when the linker is case-insensitive, so let's
260 hide them a little, by giving them an extra 'o' at the
261 beginning of the name... */
262#undef X509v3_cleanup_extensions
263#define X509v3_cleanup_extensions oX509v3_cleanup_extensions
264#undef X509v3_add_extension
265#define X509v3_add_extension oX509v3_add_extension
266#undef X509v3_add_netscape_extensions
267#define X509v3_add_netscape_extensions oX509v3_add_netscape_extensions
268#undef X509v3_add_standard_extensions
269#define X509v3_add_standard_extensions oX509v3_add_standard_extensions
270
271
151#endif 272#endif
152 273
153 274
diff --git a/src/lib/libcrypto/threads/mttest.c b/src/lib/libcrypto/threads/mttest.c
index be395f2bc4..7142e4edc7 100644
--- a/src/lib/libcrypto/threads/mttest.c
+++ b/src/lib/libcrypto/threads/mttest.c
@@ -63,7 +63,7 @@
63#ifdef LINUX 63#ifdef LINUX
64#include <typedefs.h> 64#include <typedefs.h>
65#endif 65#endif
66#ifdef WIN32 66#ifdef OPENSSL_SYS_WIN32
67#include <windows.h> 67#include <windows.h>
68#endif 68#endif
69#ifdef SOLARIS 69#ifdef SOLARIS
@@ -74,27 +74,29 @@
74#include <ulocks.h> 74#include <ulocks.h>
75#include <sys/prctl.h> 75#include <sys/prctl.h>
76#endif 76#endif
77#include "lhash.h" 77#ifdef PTHREADS
78#include "crypto.h" 78#include <pthread.h>
79#include "buffer.h" 79#endif
80#include "../e_os.h" 80#include <openssl/lhash.h>
81#include "x509.h" 81#include <openssl/crypto.h>
82#include "ssl.h" 82#include <openssl/buffer.h>
83#include "err.h" 83#include "../../e_os.h"
84 84#include <openssl/x509.h>
85#ifdef NO_FP_API 85#include <openssl/ssl.h>
86#include <openssl/err.h>
87#include <openssl/rand.h>
88
89#ifdef OPENSSL_NO_FP_API
86#define APPS_WIN16 90#define APPS_WIN16
87#include "../crypto/buffer/bss_file.c" 91#include "../buffer/bss_file.c"
88#endif 92#endif
89 93
90#define TEST_SERVER_CERT "../apps/server.pem" 94#define TEST_SERVER_CERT "../../apps/server.pem"
91#define TEST_CLIENT_CERT "../apps/client.pem" 95#define TEST_CLIENT_CERT "../../apps/client.pem"
92 96
93#define MAX_THREAD_NUMBER 100 97#define MAX_THREAD_NUMBER 100
94 98
95#ifndef NOPROTO 99int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *xs);
96int MS_CALLBACK verify_callback(int ok, X509 *xs, X509 *xi, int depth,
97 int error,char *arg);
98void thread_setup(void); 100void thread_setup(void);
99void thread_cleanup(void); 101void thread_cleanup(void);
100void do_threads(SSL_CTX *s_ctx,SSL_CTX *c_ctx); 102void do_threads(SSL_CTX *s_ctx,SSL_CTX *c_ctx);
@@ -108,23 +110,6 @@ unsigned long irix_thread_id(void );
108unsigned long solaris_thread_id(void ); 110unsigned long solaris_thread_id(void );
109unsigned long pthreads_thread_id(void ); 111unsigned long pthreads_thread_id(void );
110 112
111#else
112int MS_CALLBACK verify_callback();
113void thread_setup();
114void thread_cleanup();
115void do_threads();
116
117void irix_locking_callback();
118void solaris_locking_callback();
119void win32_locking_callback();
120void pthreads_locking_callback();
121
122unsigned long irix_thread_id();
123unsigned long solaris_thread_id();
124unsigned long pthreads_thread_id();
125
126#endif
127
128BIO *bio_err=NULL; 113BIO *bio_err=NULL;
129BIO *bio_stdout=NULL; 114BIO *bio_stdout=NULL;
130 115
@@ -139,15 +124,10 @@ int number_of_loops=10;
139int reconnect=0; 124int reconnect=0;
140int cache_stats=0; 125int cache_stats=0;
141 126
142#ifndef NOPROTO 127static const char rnd_seed[] = "string to make the random number generator think it has entropy";
143int doit(char *ctx[4]);
144#else
145int doit();
146#endif
147 128
148static void print_stats(fp,ctx) 129int doit(char *ctx[4]);
149FILE *fp; 130static void print_stats(FILE *fp, SSL_CTX *ctx)
150SSL_CTX *ctx;
151{ 131{
152 fprintf(fp,"%4ld items in the session cache\n", 132 fprintf(fp,"%4ld items in the session cache\n",
153 SSL_CTX_sess_number(ctx)); 133 SSL_CTX_sess_number(ctx));
@@ -164,7 +144,7 @@ SSL_CTX *ctx;
164 fprintf(fp,"%4d session cache timeouts\n",SSL_CTX_sess_timeouts(ctx)); 144 fprintf(fp,"%4d session cache timeouts\n",SSL_CTX_sess_timeouts(ctx));
165 } 145 }
166 146
167static void sv_usage() 147static void sv_usage(void)
168 { 148 {
169 fprintf(stderr,"usage: ssltest [args ...]\n"); 149 fprintf(stderr,"usage: ssltest [args ...]\n");
170 fprintf(stderr,"\n"); 150 fprintf(stderr,"\n");
@@ -182,9 +162,7 @@ static void sv_usage()
182 fprintf(stderr," -ssl3 - just SSLv3n\n"); 162 fprintf(stderr," -ssl3 - just SSLv3n\n");
183 } 163 }
184 164
185int main(argc, argv) 165int main(int argc, char *argv[])
186int argc;
187char *argv[];
188 { 166 {
189 char *CApath=NULL,*CAfile=NULL; 167 char *CApath=NULL,*CAfile=NULL;
190 int badop=0; 168 int badop=0;
@@ -197,6 +175,8 @@ char *argv[];
197 char *ccert=TEST_CLIENT_CERT; 175 char *ccert=TEST_CLIENT_CERT;
198 SSL_METHOD *ssl_method=SSLv23_method(); 176 SSL_METHOD *ssl_method=SSLv23_method();
199 177
178 RAND_seed(rnd_seed, sizeof rnd_seed);
179
200 if (bio_err == NULL) 180 if (bio_err == NULL)
201 bio_err=BIO_new_fp(stderr,BIO_NOCLOSE); 181 bio_err=BIO_new_fp(stderr,BIO_NOCLOSE);
202 if (bio_stdout == NULL) 182 if (bio_stdout == NULL)
@@ -271,7 +251,7 @@ bad:
271 if (cipher == NULL) cipher=getenv("SSL_CIPHER"); 251 if (cipher == NULL) cipher=getenv("SSL_CIPHER");
272 252
273 SSL_load_error_strings(); 253 SSL_load_error_strings();
274 SSLeay_add_ssl_algorithms(); 254 OpenSSL_add_ssl_algorithms();
275 255
276 c_ctx=SSL_CTX_new(ssl_method); 256 c_ctx=SSL_CTX_new(ssl_method);
277 s_ctx=SSL_CTX_new(ssl_method); 257 s_ctx=SSL_CTX_new(ssl_method);
@@ -286,8 +266,15 @@ bad:
286 SSL_CTX_set_session_cache_mode(c_ctx, 266 SSL_CTX_set_session_cache_mode(c_ctx,
287 SSL_SESS_CACHE_NO_AUTO_CLEAR|SSL_SESS_CACHE_SERVER); 267 SSL_SESS_CACHE_NO_AUTO_CLEAR|SSL_SESS_CACHE_SERVER);
288 268
289 SSL_CTX_use_certificate_file(s_ctx,scert,SSL_FILETYPE_PEM); 269 if (!SSL_CTX_use_certificate_file(s_ctx,scert,SSL_FILETYPE_PEM))
290 SSL_CTX_use_RSAPrivateKey_file(s_ctx,scert,SSL_FILETYPE_PEM); 270 {
271 ERR_print_errors(bio_err);
272 }
273 else if (!SSL_CTX_use_RSAPrivateKey_file(s_ctx,scert,SSL_FILETYPE_PEM))
274 {
275 ERR_print_errors(bio_err);
276 goto end;
277 }
291 278
292 if (client_auth) 279 if (client_auth)
293 { 280 {
@@ -358,8 +345,7 @@ end:
358#define C_DONE 1 345#define C_DONE 1
359#define S_DONE 2 346#define S_DONE 2
360 347
361int ndoit(ssl_ctx) 348int ndoit(SSL_CTX *ssl_ctx[2])
362SSL_CTX *ssl_ctx[2];
363 { 349 {
364 int i; 350 int i;
365 int ret; 351 int ret;
@@ -405,8 +391,7 @@ SSL_CTX *ssl_ctx[2];
405 return(0); 391 return(0);
406 } 392 }
407 393
408int doit(ctx) 394int doit(char *ctx[4])
409char *ctx[4];
410 { 395 {
411 SSL_CTX *s_ctx,*c_ctx; 396 SSL_CTX *s_ctx,*c_ctx;
412 static char cbuf[200],sbuf[200]; 397 static char cbuf[200],sbuf[200];
@@ -518,6 +503,7 @@ char *ctx[4];
518 else 503 else
519 { 504 {
520 fprintf(stderr,"ERROR in CLIENT\n"); 505 fprintf(stderr,"ERROR in CLIENT\n");
506 ERR_print_errors_fp(stderr);
521 return(1); 507 return(1);
522 } 508 }
523 } 509 }
@@ -549,6 +535,7 @@ char *ctx[4];
549 else 535 else
550 { 536 {
551 fprintf(stderr,"ERROR in CLIENT\n"); 537 fprintf(stderr,"ERROR in CLIENT\n");
538 ERR_print_errors_fp(stderr);
552 return(1); 539 return(1);
553 } 540 }
554 } 541 }
@@ -681,38 +668,39 @@ err:
681 return(0); 668 return(0);
682 } 669 }
683 670
684int MS_CALLBACK verify_callback(ok, xs, xi, depth, error, arg) 671int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx)
685int ok;
686X509 *xs;
687X509 *xi;
688int depth;
689int error;
690char *arg;
691 { 672 {
692 char buf[256]; 673 char *s, buf[256];
693 674
694 if (verbose) 675 if (verbose)
695 { 676 {
696 X509_NAME_oneline(X509_get_subject_name(xs),buf,256); 677 s=X509_NAME_oneline(X509_get_subject_name(ctx->current_cert),
697 if (ok) 678 buf,256);
698 fprintf(stderr,"depth=%d %s\n",depth,buf); 679 if (s != NULL)
699 else 680 {
700 fprintf(stderr,"depth=%d error=%d %s\n",depth,error,buf); 681 if (ok)
682 fprintf(stderr,"depth=%d %s\n",
683 ctx->error_depth,buf);
684 else
685 fprintf(stderr,"depth=%d error=%d %s\n",
686 ctx->error_depth,ctx->error,buf);
687 }
701 } 688 }
702 return(ok); 689 return(ok);
703 } 690 }
704 691
705#define THREAD_STACK_SIZE (16*1024) 692#define THREAD_STACK_SIZE (16*1024)
706 693
707#ifdef WIN32 694#ifdef OPENSSL_SYS_WIN32
708 695
709static HANDLE lock_cs[CRYPTO_NUM_LOCKS]; 696static HANDLE *lock_cs;
710 697
711void thread_setup() 698void thread_setup(void)
712 { 699 {
713 int i; 700 int i;
714 701
715 for (i=0; i<CRYPTO_NUM_LOCKS; i++) 702 lock_cs=OPENSSL_malloc(CRYPTO_num_locks() * sizeof(HANDLE));
703 for (i=0; i<CRYPTO_num_locks(); i++)
716 { 704 {
717 lock_cs[i]=CreateMutex(NULL,FALSE,NULL); 705 lock_cs[i]=CreateMutex(NULL,FALSE,NULL);
718 } 706 }
@@ -721,20 +709,17 @@ void thread_setup()
721 /* id callback defined */ 709 /* id callback defined */
722 } 710 }
723 711
724void thread_cleanup() 712void thread_cleanup(void)
725 { 713 {
726 int i; 714 int i;
727 715
728 CRYPTO_set_locking_callback(NULL); 716 CRYPTO_set_locking_callback(NULL);
729 for (i=0; i<CRYPTO_NUM_LOCKS; i++) 717 for (i=0; i<CRYPTO_num_locks(); i++)
730 CloseHandle(lock_cs[i]); 718 CloseHandle(lock_cs[i]);
719 OPENSSL_free(lock_cs);
731 } 720 }
732 721
733void win32_locking_callback(mode,type,file,line) 722void win32_locking_callback(int mode, int type, char *file, int line)
734int mode;
735int type;
736char *file;
737int line;
738 { 723 {
739 if (mode & CRYPTO_LOCK) 724 if (mode & CRYPTO_LOCK)
740 { 725 {
@@ -746,8 +731,7 @@ int line;
746 } 731 }
747 } 732 }
748 733
749void do_threads(s_ctx,c_ctx) 734void do_threads(SSL_CTX *s_ctx, SSL_CTX *c_ctx)
750SSL_CTX *s_ctx,*c_ctx;
751 { 735 {
752 double ret; 736 double ret;
753 SSL_CTX *ssl_ctx[2]; 737 SSL_CTX *ssl_ctx[2];
@@ -798,19 +782,21 @@ SSL_CTX *s_ctx,*c_ctx;
798 printf("win32 threads done - %.3f seconds\n",ret); 782 printf("win32 threads done - %.3f seconds\n",ret);
799 } 783 }
800 784
801#endif /* WIN32 */ 785#endif /* OPENSSL_SYS_WIN32 */
802 786
803#ifdef SOLARIS 787#ifdef SOLARIS
804 788
805static mutex_t lock_cs[CRYPTO_NUM_LOCKS]; 789static mutex_t *lock_cs;
806/*static rwlock_t lock_cs[CRYPTO_NUM_LOCKS]; */ 790/*static rwlock_t *lock_cs; */
807static long lock_count[CRYPTO_NUM_LOCKS]; 791static long *lock_count;
808 792
809void thread_setup() 793void thread_setup(void)
810 { 794 {
811 int i; 795 int i;
812 796
813 for (i=0; i<CRYPTO_NUM_LOCKS; i++) 797 lock_cs=OPENSSL_malloc(CRYPTO_num_locks() * sizeof(mutex_t));
798 lock_count=OPENSSL_malloc(CRYPTO_num_locks() * sizeof(long));
799 for (i=0; i<CRYPTO_num_locks(); i++)
814 { 800 {
815 lock_count[i]=0; 801 lock_count[i]=0;
816 /* rwlock_init(&(lock_cs[i]),USYNC_THREAD,NULL); */ 802 /* rwlock_init(&(lock_cs[i]),USYNC_THREAD,NULL); */
@@ -821,40 +807,42 @@ void thread_setup()
821 CRYPTO_set_locking_callback((void (*)())solaris_locking_callback); 807 CRYPTO_set_locking_callback((void (*)())solaris_locking_callback);
822 } 808 }
823 809
824void thread_cleanup() 810void thread_cleanup(void)
825 { 811 {
826 int i; 812 int i;
827 813
828 CRYPTO_set_locking_callback(NULL); 814 CRYPTO_set_locking_callback(NULL);
829fprintf(stderr,"cleanup\n"); 815
830 for (i=0; i<CRYPTO_NUM_LOCKS; i++) 816 fprintf(stderr,"cleanup\n");
817
818 for (i=0; i<CRYPTO_num_locks(); i++)
831 { 819 {
832 /* rwlock_destroy(&(lock_cs[i])); */ 820 /* rwlock_destroy(&(lock_cs[i])); */
833 mutex_destroy(&(lock_cs[i])); 821 mutex_destroy(&(lock_cs[i]));
834 fprintf(stderr,"%8ld:%s\n",lock_count[i],CRYPTO_get_lock_name(i)); 822 fprintf(stderr,"%8ld:%s\n",lock_count[i],CRYPTO_get_lock_name(i));
835 } 823 }
836fprintf(stderr,"done cleanup\n"); 824 OPENSSL_free(lock_cs);
825 OPENSSL_free(lock_count);
826
827 fprintf(stderr,"done cleanup\n");
828
837 } 829 }
838 830
839void solaris_locking_callback(mode,type,file,line) 831void solaris_locking_callback(int mode, int type, char *file, int line)
840int mode;
841int type;
842char *file;
843int line;
844 { 832 {
845#ifdef undef 833#ifdef undef
846fprintf(stderr,"thread=%4d mode=%s lock=%s %s:%d\n", 834 fprintf(stderr,"thread=%4d mode=%s lock=%s %s:%d\n",
847 CRYPTO_thread_id(), 835 CRYPTO_thread_id(),
848 (mode&CRYPTO_LOCK)?"l":"u", 836 (mode&CRYPTO_LOCK)?"l":"u",
849 (type&CRYPTO_READ)?"r":"w",file,line); 837 (type&CRYPTO_READ)?"r":"w",file,line);
850#endif 838#endif
851 839
852/* 840 /*
853if (CRYPTO_LOCK_SSL_CERT == type) 841 if (CRYPTO_LOCK_SSL_CERT == type)
854 fprintf(stderr,"(t,m,f,l) %ld %d %s %d\n", 842 fprintf(stderr,"(t,m,f,l) %ld %d %s %d\n",
855 CRYPTO_thread_id(), 843 CRYPTO_thread_id(),
856 mode,file,line); 844 mode,file,line);
857*/ 845 */
858 if (mode & CRYPTO_LOCK) 846 if (mode & CRYPTO_LOCK)
859 { 847 {
860 /* if (mode & CRYPTO_READ) 848 /* if (mode & CRYPTO_READ)
@@ -872,8 +860,7 @@ if (CRYPTO_LOCK_SSL_CERT == type)
872 } 860 }
873 } 861 }
874 862
875void do_threads(s_ctx,c_ctx) 863void do_threads(SSL_CTX *s_ctx, SSL_CTX *c_ctx)
876SSL_CTX *s_ctx,*c_ctx;
877 { 864 {
878 SSL_CTX *ssl_ctx[2]; 865 SSL_CTX *ssl_ctx[2];
879 thread_t thread_ctx[MAX_THREAD_NUMBER]; 866 thread_t thread_ctx[MAX_THREAD_NUMBER];
@@ -902,7 +889,7 @@ SSL_CTX *s_ctx,*c_ctx;
902 s_ctx->references,c_ctx->references); 889 s_ctx->references,c_ctx->references);
903 } 890 }
904 891
905unsigned long solaris_thread_id() 892unsigned long solaris_thread_id(void)
906 { 893 {
907 unsigned long ret; 894 unsigned long ret;
908 895
@@ -915,9 +902,9 @@ unsigned long solaris_thread_id()
915 902
916 903
917static usptr_t *arena; 904static usptr_t *arena;
918static usema_t *lock_cs[CRYPTO_NUM_LOCKS]; 905static usema_t **lock_cs;
919 906
920void thread_setup() 907void thread_setup(void)
921 { 908 {
922 int i; 909 int i;
923 char filename[20]; 910 char filename[20];
@@ -932,7 +919,8 @@ void thread_setup()
932 arena=usinit(filename); 919 arena=usinit(filename);
933 unlink(filename); 920 unlink(filename);
934 921
935 for (i=0; i<CRYPTO_NUM_LOCKS; i++) 922 lock_cs=OPENSSL_malloc(CRYPTO_num_locks() * sizeof(usema_t *));
923 for (i=0; i<CRYPTO_num_locks(); i++)
936 { 924 {
937 lock_cs[i]=usnewsema(arena,1); 925 lock_cs[i]=usnewsema(arena,1);
938 } 926 }
@@ -941,12 +929,12 @@ void thread_setup()
941 CRYPTO_set_locking_callback((void (*)())irix_locking_callback); 929 CRYPTO_set_locking_callback((void (*)())irix_locking_callback);
942 } 930 }
943 931
944void thread_cleanup() 932void thread_cleanup(void)
945 { 933 {
946 int i; 934 int i;
947 935
948 CRYPTO_set_locking_callback(NULL); 936 CRYPTO_set_locking_callback(NULL);
949 for (i=0; i<CRYPTO_NUM_LOCKS; i++) 937 for (i=0; i<CRYPTO_num_locks(); i++)
950 { 938 {
951 char buf[10]; 939 char buf[10];
952 940
@@ -954,13 +942,10 @@ void thread_cleanup()
954 usdumpsema(lock_cs[i],stdout,buf); 942 usdumpsema(lock_cs[i],stdout,buf);
955 usfreesema(lock_cs[i],arena); 943 usfreesema(lock_cs[i],arena);
956 } 944 }
945 OPENSSL_free(lock_cs);
957 } 946 }
958 947
959void irix_locking_callback(mode,type,file,line) 948void irix_locking_callback(int mode, int type, char *file, int line)
960int mode;
961int type;
962char *file;
963int line;
964 { 949 {
965 if (mode & CRYPTO_LOCK) 950 if (mode & CRYPTO_LOCK)
966 { 951 {
@@ -974,8 +959,7 @@ int line;
974 } 959 }
975 } 960 }
976 961
977void do_threads(s_ctx,c_ctx) 962void do_threads(SSL_CTX *s_ctx, SSL_CTX *c_ctx)
978SSL_CTX *s_ctx,*c_ctx;
979 { 963 {
980 SSL_CTX *ssl_ctx[2]; 964 SSL_CTX *ssl_ctx[2];
981 int thread_ctx[MAX_THREAD_NUMBER]; 965 int thread_ctx[MAX_THREAD_NUMBER];
@@ -1000,7 +984,7 @@ SSL_CTX *s_ctx,*c_ctx;
1000 s_ctx->references,c_ctx->references); 984 s_ctx->references,c_ctx->references);
1001 } 985 }
1002 986
1003unsigned long irix_thread_id() 987unsigned long irix_thread_id(void)
1004 { 988 {
1005 unsigned long ret; 989 unsigned long ret;
1006 990
@@ -1011,14 +995,16 @@ unsigned long irix_thread_id()
1011 995
1012#ifdef PTHREADS 996#ifdef PTHREADS
1013 997
1014static pthread_mutex_t lock_cs[CRYPTO_NUM_LOCKS]; 998static pthread_mutex_t *lock_cs;
1015static long lock_count[CRYPTO_NUM_LOCKS]; 999static long *lock_count;
1016 1000
1017void thread_setup() 1001void thread_setup(void)
1018 { 1002 {
1019 int i; 1003 int i;
1020 1004
1021 for (i=0; i<CRYPTO_NUM_LOCKS; i++) 1005 lock_cs=OPENSSL_malloc(CRYPTO_num_locks() * sizeof(pthread_mutex_t));
1006 lock_count=OPENSSL_malloc(CRYPTO_num_locks() * sizeof(long));
1007 for (i=0; i<CRYPTO_num_locks(); i++)
1022 { 1008 {
1023 lock_count[i]=0; 1009 lock_count[i]=0;
1024 pthread_mutex_init(&(lock_cs[i]),NULL); 1010 pthread_mutex_init(&(lock_cs[i]),NULL);
@@ -1028,26 +1014,26 @@ void thread_setup()
1028 CRYPTO_set_locking_callback((void (*)())pthreads_locking_callback); 1014 CRYPTO_set_locking_callback((void (*)())pthreads_locking_callback);
1029 } 1015 }
1030 1016
1031void thread_cleanup() 1017void thread_cleanup(void)
1032 { 1018 {
1033 int i; 1019 int i;
1034 1020
1035 CRYPTO_set_locking_callback(NULL); 1021 CRYPTO_set_locking_callback(NULL);
1036 fprintf(stderr,"cleanup\n"); 1022 fprintf(stderr,"cleanup\n");
1037 for (i=0; i<CRYPTO_NUM_LOCKS; i++) 1023 for (i=0; i<CRYPTO_num_locks(); i++)
1038 { 1024 {
1039 pthread_mutex_destroy(&(lock_cs[i])); 1025 pthread_mutex_destroy(&(lock_cs[i]));
1040 fprintf(stderr,"%8ld:%s\n",lock_count[i], 1026 fprintf(stderr,"%8ld:%s\n",lock_count[i],
1041 CRYPTO_get_lock_name(i)); 1027 CRYPTO_get_lock_name(i));
1042 } 1028 }
1029 OPENSSL_free(lock_cs);
1030 OPENSSL_free(lock_count);
1031
1043 fprintf(stderr,"done cleanup\n"); 1032 fprintf(stderr,"done cleanup\n");
1044 } 1033 }
1045 1034
1046void pthreads_locking_callback(mode,type,file,line) 1035void pthreads_locking_callback(int mode, int type, char *file,
1047int mode; 1036 int line)
1048int type;
1049char *file;
1050int line;
1051 { 1037 {
1052#ifdef undef 1038#ifdef undef
1053 fprintf(stderr,"thread=%4d mode=%s lock=%s %s:%d\n", 1039 fprintf(stderr,"thread=%4d mode=%s lock=%s %s:%d\n",
@@ -1072,8 +1058,7 @@ int line;
1072 } 1058 }
1073 } 1059 }
1074 1060
1075void do_threads(s_ctx,c_ctx) 1061void do_threads(SSL_CTX *s_ctx, SSL_CTX *c_ctx)
1076SSL_CTX *s_ctx,*c_ctx;
1077 { 1062 {
1078 SSL_CTX *ssl_ctx[2]; 1063 SSL_CTX *ssl_ctx[2];
1079 pthread_t thread_ctx[MAX_THREAD_NUMBER]; 1064 pthread_t thread_ctx[MAX_THREAD_NUMBER];
@@ -1098,10 +1083,10 @@ SSL_CTX *s_ctx,*c_ctx;
1098 } 1083 }
1099 1084
1100 printf("pthreads threads done (%d,%d)\n", 1085 printf("pthreads threads done (%d,%d)\n",
1101 s_ctx->references,c_ctx->references); 1086 s_ctx->references,c_ctx->references);
1102 } 1087 }
1103 1088
1104unsigned long pthreads_thread_id() 1089unsigned long pthreads_thread_id(void)
1105 { 1090 {
1106 unsigned long ret; 1091 unsigned long ret;
1107 1092
diff --git a/src/lib/libcrypto/threads/th-lock.c b/src/lib/libcrypto/threads/th-lock.c
index 039022446d..a6a79b9f45 100644
--- a/src/lib/libcrypto/threads/th-lock.c
+++ b/src/lib/libcrypto/threads/th-lock.c
@@ -63,7 +63,7 @@
63#ifdef LINUX 63#ifdef LINUX
64#include <typedefs.h> 64#include <typedefs.h>
65#endif 65#endif
66#ifdef WIN32 66#ifdef OPENSSL_SYS_WIN32
67#include <windows.h> 67#include <windows.h>
68#endif 68#endif
69#ifdef SOLARIS 69#ifdef SOLARIS
@@ -74,16 +74,18 @@
74#include <ulocks.h> 74#include <ulocks.h>
75#include <sys/prctl.h> 75#include <sys/prctl.h>
76#endif 76#endif
77#include "lhash.h" 77#ifdef PTHREADS
78#include "crypto.h" 78#include <pthread.h>
79#include "buffer.h" 79#endif
80#include "e_os.h" 80#include <openssl/lhash.h>
81#include "x509.h" 81#include <openssl/crypto.h>
82#include "ssl.h" 82#include <openssl/buffer.h>
83#include "err.h" 83#include <openssl/e_os.h>
84 84#include <openssl/x509.h>
85#ifndef NOPROTO 85#include <openssl/ssl.h>
86int CRYPTO_thread_setup(void); 86#include <openssl/err.h>
87
88void CRYPTO_thread_setup(void);
87void CRYPTO_thread_cleanup(void); 89void CRYPTO_thread_cleanup(void);
88 90
89static void irix_locking_callback(int mode,int type,char *file,int line); 91static void irix_locking_callback(int mode,int type,char *file,int line);
@@ -95,38 +97,24 @@ static unsigned long irix_thread_id(void );
95static unsigned long solaris_thread_id(void ); 97static unsigned long solaris_thread_id(void );
96static unsigned long pthreads_thread_id(void ); 98static unsigned long pthreads_thread_id(void );
97 99
98#else
99int CRYPOTO_thread_setup();
100void CRYPTO_cleanup();
101
102static void irix_locking_callback();
103static void solaris_locking_callback();
104static void win32_locking_callback();
105static void pthreads_locking_callback();
106
107static unsigned long irix_thread_id();
108static unsigned long solaris_thread_id();
109static unsigned long pthreads_thread_id();
110
111#endif
112
113/* usage: 100/* usage:
114 * CRYPTO_thread_setup(); 101 * CRYPTO_thread_setup();
115 * applicaion code 102 * application code
116 * CRYPTO_thread_cleanup(); 103 * CRYPTO_thread_cleanup();
117 */ 104 */
118 105
119#define THREAD_STACK_SIZE (16*1024) 106#define THREAD_STACK_SIZE (16*1024)
120 107
121#ifdef WIN32 108#ifdef OPENSSL_SYS_WIN32
122 109
123static HANDLE lock_cs[CRYPTO_NUM_LOCKS]; 110static HANDLE *lock_cs;
124 111
125int CRYPTO_thread_setup() 112void CRYPTO_thread_setup(void)
126 { 113 {
127 int i; 114 int i;
128 115
129 for (i=0; i<CRYPTO_NUM_LOCKS; i++) 116 lock_cs=OPENSSL_malloc(CRYPTO_num_locks() * sizeof(HANDLE));
117 for (i=0; i<CRYPTO_num_locks(); i++)
130 { 118 {
131 lock_cs[i]=CreateMutex(NULL,FALSE,NULL); 119 lock_cs[i]=CreateMutex(NULL,FALSE,NULL);
132 } 120 }
@@ -136,20 +124,17 @@ int CRYPTO_thread_setup()
136 return(1); 124 return(1);
137 } 125 }
138 126
139static void CRYPTO_thread_cleanup() 127static void CRYPTO_thread_cleanup(void)
140 { 128 {
141 int i; 129 int i;
142 130
143 CRYPTO_set_locking_callback(NULL); 131 CRYPTO_set_locking_callback(NULL);
144 for (i=0; i<CRYPTO_NUM_LOCKS; i++) 132 for (i=0; i<CRYPTO_num_locks(); i++)
145 CloseHandle(lock_cs[i]); 133 CloseHandle(lock_cs[i]);
134 OPENSSL_free(lock_cs);
146 } 135 }
147 136
148void win32_locking_callback(mode,type,file,line) 137void win32_locking_callback(int mode, int type, char *file, int line)
149int mode;
150int type;
151char *file;
152int line;
153 { 138 {
154 if (mode & CRYPTO_LOCK) 139 if (mode & CRYPTO_LOCK)
155 { 140 {
@@ -161,24 +146,30 @@ int line;
161 } 146 }
162 } 147 }
163 148
164#endif /* WIN32 */ 149#endif /* OPENSSL_SYS_WIN32 */
165 150
166#ifdef SOLARIS 151#ifdef SOLARIS
167 152
168#define USE_MUTEX 153#define USE_MUTEX
169 154
170static mutex_t lock_cs[CRYPTO_NUM_LOCKS];
171#ifdef USE_MUTEX 155#ifdef USE_MUTEX
172static long lock_count[CRYPTO_NUM_LOCKS]; 156static mutex_t *lock_cs;
173#else 157#else
174static rwlock_t lock_cs[CRYPTO_NUM_LOCKS]; 158static rwlock_t *lock_cs;
175#endif 159#endif
160static long *lock_count;
176 161
177void CRYPTO_thread_setup() 162void CRYPTO_thread_setup(void)
178 { 163 {
179 int i; 164 int i;
180 165
181 for (i=0; i<CRYPTO_NUM_LOCKS; i++) 166#ifdef USE_MUTEX
167 lock_cs=OPENSSL_malloc(CRYPTO_num_locks() * sizeof(mutex_t));
168#else
169 lock_cs=OPENSSL_malloc(CRYPTO_num_locks() * sizeof(rwlock_t));
170#endif
171 lock_count=OPENSSL_malloc(CRYPTO_num_locks() * sizeof(long));
172 for (i=0; i<CRYPTO_num_locks(); i++)
182 { 173 {
183 lock_count[i]=0; 174 lock_count[i]=0;
184#ifdef USE_MUTEX 175#ifdef USE_MUTEX
@@ -192,12 +183,12 @@ void CRYPTO_thread_setup()
192 CRYPTO_set_locking_callback((void (*)())solaris_locking_callback); 183 CRYPTO_set_locking_callback((void (*)())solaris_locking_callback);
193 } 184 }
194 185
195void CRYPTO_thread_cleanup() 186void CRYPTO_thread_cleanup(void)
196 { 187 {
197 int i; 188 int i;
198 189
199 CRYPTO_set_locking_callback(NULL); 190 CRYPTO_set_locking_callback(NULL);
200 for (i=0; i<CRYPTO_NUM_LOCKS; i++) 191 for (i=0; i<CRYPTO_num_locks(); i++)
201 { 192 {
202#ifdef USE_MUTEX 193#ifdef USE_MUTEX
203 mutex_destroy(&(lock_cs[i])); 194 mutex_destroy(&(lock_cs[i]));
@@ -205,13 +196,11 @@ void CRYPTO_thread_cleanup()
205 rwlock_destroy(&(lock_cs[i])); 196 rwlock_destroy(&(lock_cs[i]));
206#endif 197#endif
207 } 198 }
199 OPENSSL_free(lock_cs);
200 OPENSSL_free(lock_count);
208 } 201 }
209 202
210void solaris_locking_callback(mode,type,file,line) 203void solaris_locking_callback(int mode, int type, char *file, int line)
211int mode;
212int type;
213char *file;
214int line;
215 { 204 {
216#if 0 205#if 0
217 fprintf(stderr,"thread=%4d mode=%s lock=%s %s:%d\n", 206 fprintf(stderr,"thread=%4d mode=%s lock=%s %s:%d\n",
@@ -248,7 +237,7 @@ int line;
248 } 237 }
249 } 238 }
250 239
251unsigned long solaris_thread_id() 240unsigned long solaris_thread_id(void)
252 { 241 {
253 unsigned long ret; 242 unsigned long ret;
254 243
@@ -261,9 +250,9 @@ unsigned long solaris_thread_id()
261/* I don't think this works..... */ 250/* I don't think this works..... */
262 251
263static usptr_t *arena; 252static usptr_t *arena;
264static usema_t *lock_cs[CRYPTO_NUM_LOCKS]; 253static usema_t **lock_cs;
265 254
266void CRYPTO_thread_setup() 255void CRYPTO_thread_setup(void)
267 { 256 {
268 int i; 257 int i;
269 char filename[20]; 258 char filename[20];
@@ -278,7 +267,8 @@ void CRYPTO_thread_setup()
278 arena=usinit(filename); 267 arena=usinit(filename);
279 unlink(filename); 268 unlink(filename);
280 269
281 for (i=0; i<CRYPTO_NUM_LOCKS; i++) 270 lock_cs=OPENSSL_malloc(CRYPTO_num_locks() * sizeof(usema_t *));
271 for (i=0; i<CRYPTO_num_locks(); i++)
282 { 272 {
283 lock_cs[i]=usnewsema(arena,1); 273 lock_cs[i]=usnewsema(arena,1);
284 } 274 }
@@ -287,12 +277,12 @@ void CRYPTO_thread_setup()
287 CRYPTO_set_locking_callback((void (*)())irix_locking_callback); 277 CRYPTO_set_locking_callback((void (*)())irix_locking_callback);
288 } 278 }
289 279
290void CRYPTO_thread_cleanup() 280void CRYPTO_thread_cleanup(void)
291 { 281 {
292 int i; 282 int i;
293 283
294 CRYPTO_set_locking_callback(NULL); 284 CRYPTO_set_locking_callback(NULL);
295 for (i=0; i<CRYPTO_NUM_LOCKS; i++) 285 for (i=0; i<CRYPTO_num_locks(); i++)
296 { 286 {
297 char buf[10]; 287 char buf[10];
298 288
@@ -300,13 +290,10 @@ void CRYPTO_thread_cleanup()
300 usdumpsema(lock_cs[i],stdout,buf); 290 usdumpsema(lock_cs[i],stdout,buf);
301 usfreesema(lock_cs[i],arena); 291 usfreesema(lock_cs[i],arena);
302 } 292 }
293 OPENSSL_free(lock_cs);
303 } 294 }
304 295
305void irix_locking_callback(mode,type,file,line) 296void irix_locking_callback(int mode, int type, char *file, int line)
306int mode;
307int type;
308char *file;
309int line;
310 { 297 {
311 if (mode & CRYPTO_LOCK) 298 if (mode & CRYPTO_LOCK)
312 { 299 {
@@ -318,7 +305,7 @@ int line;
318 } 305 }
319 } 306 }
320 307
321unsigned long irix_thread_id() 308unsigned long irix_thread_id(void)
322 { 309 {
323 unsigned long ret; 310 unsigned long ret;
324 311
@@ -330,14 +317,16 @@ unsigned long irix_thread_id()
330/* Linux and a few others */ 317/* Linux and a few others */
331#ifdef PTHREADS 318#ifdef PTHREADS
332 319
333static pthread_mutex_t lock_cs[CRYPTO_NUM_LOCKS]; 320static pthread_mutex_t *lock_cs;
334static long lock_count[CRYPTO_NUM_LOCKS]; 321static long *lock_count;
335 322
336void CRYPTO_thread_setup() 323void CRYPTO_thread_setup(void)
337 { 324 {
338 int i; 325 int i;
339 326
340 for (i=0; i<CRYPTO_NUM_LOCKS; i++) 327 lock_cs=OPENSSL_malloc(CRYPTO_num_locks() * sizeof(pthread_mutex_t));
328 lock_count=OPENSSL_malloc(CRYPTO_num_locks() * sizeof(long));
329 for (i=0; i<CRYPTO_num_locks(); i++)
341 { 330 {
342 lock_count[i]=0; 331 lock_count[i]=0;
343 pthread_mutex_init(&(lock_cs[i]),NULL); 332 pthread_mutex_init(&(lock_cs[i]),NULL);
@@ -347,22 +336,21 @@ void CRYPTO_thread_setup()
347 CRYPTO_set_locking_callback((void (*)())pthreads_locking_callback); 336 CRYPTO_set_locking_callback((void (*)())pthreads_locking_callback);
348 } 337 }
349 338
350void thread_cleanup() 339void thread_cleanup(void)
351 { 340 {
352 int i; 341 int i;
353 342
354 CRYPTO_set_locking_callback(NULL); 343 CRYPTO_set_locking_callback(NULL);
355 for (i=0; i<CRYPTO_NUM_LOCKS; i++) 344 for (i=0; i<CRYPTO_num_locks(); i++)
356 { 345 {
357 pthread_mutex_destroy(&(lock_cs[i])); 346 pthread_mutex_destroy(&(lock_cs[i]));
358 } 347 }
348 OPENSSL_free(lock_cs);
349 OPENSSL_free(lock_count);
359 } 350 }
360 351
361void pthreads_locking_callback(mode,type,file,line) 352void pthreads_locking_callback(int mode, int type, char *file,
362int mode; 353 int line)
363int type;
364char *file;
365int line;
366 { 354 {
367#if 0 355#if 0
368 fprintf(stderr,"thread=%4d mode=%s lock=%s %s:%d\n", 356 fprintf(stderr,"thread=%4d mode=%s lock=%s %s:%d\n",
@@ -387,7 +375,7 @@ int line;
387 } 375 }
388 } 376 }
389 377
390unsigned long pthreads_thread_id() 378unsigned long pthreads_thread_id(void)
391 { 379 {
392 unsigned long ret; 380 unsigned long ret;
393 381
diff --git a/src/lib/libcrypto/tmdiff.c b/src/lib/libcrypto/tmdiff.c
index b93799fc03..7ebf2b202a 100644
--- a/src/lib/libcrypto/tmdiff.c
+++ b/src/lib/libcrypto/tmdiff.c
@@ -57,41 +57,45 @@
57 */ 57 */
58#include <stdio.h> 58#include <stdio.h>
59#include <stdlib.h> 59#include <stdlib.h>
60#include "cryptlib.h"
61#include <openssl/tmdiff.h>
60 62
61#ifndef MSDOS 63#ifdef TIMEB
62# ifndef WIN32 64#undef OPENSSL_SYS_WIN32
63# define TIMES 65#undef TIMES
64# endif
65#endif 66#endif
66 67
67#ifndef VMS 68#if !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_WIN32) && !defined(OPENSSL_SYS_VMS) || defined(__DECC) && !defined(OPENSSL_SYS_MACOSX) && !defined(OPENSSL_SYS_VXWORKS)
68# ifndef _IRIX 69# define TIMES
69# include <time.h> 70#endif
70# endif 71
71# ifdef TIMES 72#ifndef _IRIX
72# include <sys/types.h> 73# include <time.h>
73# include <sys/times.h> 74#endif
74# endif 75#ifdef TIMES
75#else /* VMS */ 76# include <sys/types.h>
76# include <types.h> 77# include <sys/times.h>
77 struct tms { 78#endif
78 time_t tms_utime; 79
79 time_t tms_stime; 80/* Depending on the VMS version, the tms structure is perhaps defined.
80 time_t tms_uchild; /* I dunno... */ 81 The __TMS macro will show if it was. If it wasn't defined, we should
81 time_t tms_uchildsys; /* so these names are a guess :-) */ 82 undefine TIMES, since that tells the rest of the program how things
82 } 83 should be handled. -- Richard Levitte */
83#endif /* VMS */ 84#if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS)
84 85#undef TIMES
85#ifdef sun 86#endif
87
88#if defined(sun) || defined(__ultrix)
89#define _POSIX_SOURCE
86#include <limits.h> 90#include <limits.h>
87#include <sys/param.h> 91#include <sys/param.h>
88#endif 92#endif
89 93
90#ifndef TIMES 94#if !defined(TIMES) && !defined(OPENSSL_SYS_VXWORKS)
91#include <sys/timeb.h> 95#include <sys/timeb.h>
92#endif 96#endif
93 97
94#ifdef WIN32 98#ifdef OPENSSL_SYS_WIN32
95#include <windows.h> 99#include <windows.h>
96#endif 100#endif
97 101
@@ -99,11 +103,7 @@
99#ifndef HZ 103#ifndef HZ
100# ifndef CLK_TCK 104# ifndef CLK_TCK
101# ifndef _BSD_CLK_TCK_ /* FreeBSD hack */ 105# ifndef _BSD_CLK_TCK_ /* FreeBSD hack */
102# ifndef VMS 106# define HZ 100.0
103# define HZ 100.0
104# else /* VMS */
105# define HZ 100.0
106# endif
107# else /* _BSD_CLK_TCK_ */ 107# else /* _BSD_CLK_TCK_ */
108# define HZ ((double)_BSD_CLK_TCK_) 108# define HZ ((double)_BSD_CLK_TCK_)
109# endif 109# endif
@@ -117,57 +117,62 @@ typedef struct ms_tm
117#ifdef TIMES 117#ifdef TIMES
118 struct tms ms_tms; 118 struct tms ms_tms;
119#else 119#else
120# ifdef WIN32 120# ifdef OPENSSL_SYS_WIN32
121 HANDLE thread_id; 121 HANDLE thread_id;
122 FILETIME ms_win32; 122 FILETIME ms_win32;
123# else 123# else
124# ifdef OPENSSL_SYS_VSWORKS
125 unsigned long ticks;
126# else
124 struct timeb ms_timeb; 127 struct timeb ms_timeb;
128# endif
125# endif 129# endif
126#endif 130#endif
127 } MS_TM; 131 } MS_TM;
128 132
129char *ms_time_init() 133char *ms_time_new(void)
130 { 134 {
131 MS_TM *ret; 135 MS_TM *ret;
132 136
133 ret=malloc(sizeof(MS_TM)); 137 ret=(MS_TM *)OPENSSL_malloc(sizeof(MS_TM));
134 if (ret == NULL) 138 if (ret == NULL)
135 return(NULL); 139 return(NULL);
136 memset(ret,0,sizeof(MS_TM)); 140 memset(ret,0,sizeof(MS_TM));
137#ifdef WIN32 141#ifdef OPENSSL_SYS_WIN32
138 ret->thread_id=GetCurrentThread(); 142 ret->thread_id=GetCurrentThread();
139#endif 143#endif
140 return((char *)ret); 144 return((char *)ret);
141 } 145 }
142 146
143void ms_time_final(a) 147void ms_time_free(char *a)
144char *a;
145 { 148 {
146 if (a != NULL) 149 if (a != NULL)
147 free(a); 150 OPENSSL_free(a);
148 } 151 }
149 152
150void ms_time_get(a) 153void ms_time_get(char *a)
151char *a;
152 { 154 {
153 MS_TM *tm=(MS_TM *)a; 155 MS_TM *tm=(MS_TM *)a;
154 FILETIME tmpa,tmpb,tmpc; 156#ifdef OPENSSL_SYS_WIN32
157 FILETIME tmpa,tmpb,tmpc;
158#endif
155 159
156#ifdef TIMES 160#ifdef TIMES
157 printf("AAA\n");
158 times(&tm->ms_tms); 161 times(&tm->ms_tms);
159#else 162#else
160# ifdef WIN32 163# ifdef OPENSSL_SYS_WIN32
161 GetThreadTimes(tm->thread_id,&tmpa,&tmpb,&tmpc,&(tm->ms_win32)); 164 GetThreadTimes(tm->thread_id,&tmpa,&tmpb,&tmpc,&(tm->ms_win32));
162# else 165# else
163 printf("CCC\n"); 166# ifdef OPENSSL_SYS_VSWORKS
164 ftime(tm->ms_timeb); 167 tm->ticks = tickGet();
168# else
169 ftime(&tm->ms_timeb);
170# endif
165# endif 171# endif
166#endif 172#endif
167 } 173 }
168 174
169double ms_time_diff(ap,bp) 175double ms_time_diff(char *ap, char *bp)
170char *ap,*bp;
171 { 176 {
172 MS_TM *a=(MS_TM *)ap; 177 MS_TM *a=(MS_TM *)ap;
173 MS_TM *b=(MS_TM *)bp; 178 MS_TM *b=(MS_TM *)bp;
@@ -176,20 +181,35 @@ char *ap,*bp;
176#ifdef TIMES 181#ifdef TIMES
177 ret=(b->ms_tms.tms_utime-a->ms_tms.tms_utime)/HZ; 182 ret=(b->ms_tms.tms_utime-a->ms_tms.tms_utime)/HZ;
178#else 183#else
179# ifdef WIN32 184# ifdef OPENSSL_SYS_WIN32
180 ret =(double)(b->ms_win32.dwHighDateTime&0x000fffff)*10+ 185 {
181 b->ms_win32.dwLowDateTime/1e7; 186#ifdef __GNUC__
182 ret-=(double)(a->ms_win32.dwHighDateTime&0x000fffff)*10+a->ms_win32.dwLowDateTime/1e7; 187 signed long long la,lb;
188#else
189 signed _int64 la,lb;
190#endif
191 la=a->ms_win32.dwHighDateTime;
192 lb=b->ms_win32.dwHighDateTime;
193 la<<=32;
194 lb<<=32;
195 la+=a->ms_win32.dwLowDateTime;
196 lb+=b->ms_win32.dwLowDateTime;
197 ret=((double)(lb-la))/1e7;
198 }
183# else 199# else
184 ret= (double)(b->time-a->time)+ 200# ifdef OPENSSL_SYS_VSWORKS
185 ((double)((unsigned long)b->mullitm-(unsigned long)))/1000.0; 201 ret = (double)(b->ticks - a->ticks) / (double)sysClkRateGet();
202# else
203 ret= (double)(b->ms_timeb.time-a->ms_timeb.time)+
204 (((double)b->ms_timeb.millitm)-
205 ((double)a->ms_timeb.millitm))/1000.0;
186# endif 206# endif
207# endif
187#endif 208#endif
188 return((ret < 0.0000001)?0.0000001:ret); 209 return((ret < 0.0000001)?0.0000001:ret);
189 } 210 }
190 211
191int ms_time_cmp(ap,bp) 212int ms_time_cmp(char *ap, char *bp)
192char *ap,*bp;
193 { 213 {
194 MS_TM *a=(MS_TM *)ap,*b=(MS_TM *)bp; 214 MS_TM *a=(MS_TM *)ap,*b=(MS_TM *)bp;
195 double d; 215 double d;
@@ -198,13 +218,17 @@ char *ap,*bp;
198#ifdef TIMES 218#ifdef TIMES
199 d=(b->ms_tms.tms_utime-a->ms_tms.tms_utime)/HZ; 219 d=(b->ms_tms.tms_utime-a->ms_tms.tms_utime)/HZ;
200#else 220#else
201# ifdef WIN32 221# ifdef OPENSSL_SYS_WIN32
202 d =(b->ms_win32.dwHighDateTime&0x000fffff)*10+b->ms_win32.dwLowDateTime/1e7; 222 d =(b->ms_win32.dwHighDateTime&0x000fffff)*10+b->ms_win32.dwLowDateTime/1e7;
203 d-=(a->ms_win32.dwHighDateTime&0x000fffff)*10+a->ms_win32.dwLowDateTime/1e7; 223 d-=(a->ms_win32.dwHighDateTime&0x000fffff)*10+a->ms_win32.dwLowDateTime/1e7;
204# else 224# else
205 d= (double)(b->time-a->time)+ 225# ifdef OPENSSL_SYS_VSWORKS
206 ((double)((unsigned long)b->mullitm-(unsigned long)))/1000.0; 226 d = (b->ticks - a->ticks);
227# else
228 d= (double)(b->ms_timeb.time-a->ms_timeb.time)+
229 (((double)b->ms_timeb.millitm)-(double)a->ms_timeb.millitm)/1000.0;
207# endif 230# endif
231# endif
208#endif 232#endif
209 if (d == 0.0) 233 if (d == 0.0)
210 ret=0; 234 ret=0;
diff --git a/src/lib/libcrypto/uid.c b/src/lib/libcrypto/uid.c
index b5b61b76d4..d3d249c36f 100644
--- a/src/lib/libcrypto/uid.c
+++ b/src/lib/libcrypto/uid.c
@@ -54,17 +54,18 @@
54 */ 54 */
55 55
56#include <openssl/crypto.h> 56#include <openssl/crypto.h>
57#include <openssl/opensslconf.h>
57 58
58#if defined(__OpenBSD__) || (defined(__FreeBSD__) && __FreeBSD__ > 2) 59#if defined(__OpenBSD__) || (defined(__FreeBSD__) && __FreeBSD__ > 2)
59 60
60#include <unistd.h> 61#include OPENSSL_UNISTD
61 62
62int OPENSSL_issetugid(void) 63int OPENSSL_issetugid(void)
63 { 64 {
64 return issetugid(); 65 return issetugid();
65 } 66 }
66 67
67#elif defined(WIN32) 68#elif defined(OPENSSL_SYS_WIN32)
68 69
69int OPENSSL_issetugid(void) 70int OPENSSL_issetugid(void)
70 { 71 {
@@ -73,7 +74,7 @@ int OPENSSL_issetugid(void)
73 74
74#else 75#else
75 76
76#include <unistd.h> 77#include OPENSSL_UNISTD
77#include <sys/types.h> 78#include <sys/types.h>
78 79
79int OPENSSL_issetugid(void) 80int OPENSSL_issetugid(void)
diff --git a/src/lib/libcrypto/util/add_cr.pl b/src/lib/libcrypto/util/add_cr.pl
index ddd6d61e2d..c7b62c11ec 100644
--- a/src/lib/libcrypto/util/add_cr.pl
+++ b/src/lib/libcrypto/util/add_cr.pl
@@ -1,4 +1,4 @@
1#!/usr/bin/perl 1#!/usr/local/bin/perl
2# 2#
3# This adds a copyright message to a souce code file. 3# This adds a copyright message to a souce code file.
4# It also gets the file name correct. 4# It also gets the file name correct.
diff --git a/src/lib/libcrypto/util/ck_errf.pl b/src/lib/libcrypto/util/ck_errf.pl
index c5764e40df..7a24d6c5a2 100644
--- a/src/lib/libcrypto/util/ck_errf.pl
+++ b/src/lib/libcrypto/util/ck_errf.pl
@@ -1,4 +1,4 @@
1#!/usr/bin/perl 1#!/usr/local/bin/perl
2# 2#
3# This is just a quick script to scan for cases where the 'error' 3# This is just a quick script to scan for cases where the 'error'
4# function name in a XXXerr() macro is wrong. 4# function name in a XXXerr() macro is wrong.
@@ -40,5 +40,6 @@ foreach $file (@ARGV)
40 # print "$func:$1\n"; 40 # print "$func:$1\n";
41 } 41 }
42 } 42 }
43 close(IN);
43 } 44 }
44 45
diff --git a/src/lib/libcrypto/util/clean-depend.pl b/src/lib/libcrypto/util/clean-depend.pl
index af676af751..6c485d1e2f 100644
--- a/src/lib/libcrypto/util/clean-depend.pl
+++ b/src/lib/libcrypto/util/clean-depend.pl
@@ -11,20 +11,36 @@ while(<STDIN>) {
11 11
12my %files; 12my %files;
13 13
14my $thisfile="";
14while(<STDIN>) { 15while(<STDIN>) {
15 my ($file,$deps)=/^(.*): (.*)$/; 16 my ($dummy, $file,$deps)=/^((.*):)? (.*)$/;
17 my $origfile="";
18 $thisfile=$file if defined $file;
16 next if !defined $deps; 19 next if !defined $deps;
20 $origfile=$thisfile;
21 $origfile=~s/\.o$/.c/;
17 my @deps=split ' ',$deps; 22 my @deps=split ' ',$deps;
18 @deps=grep(!/^\/usr\/include/,@deps); 23 @deps=grep(!/^\//,@deps);
19 @deps=grep(!/^\/usr\/lib\/gcc-lib/,@deps); 24 @deps=grep(!/^\\$/,@deps);
20 push @{$files{$file}},@deps; 25 @deps=grep(!/^$origfile$/,@deps);
26# pull out the kludged kerberos header (if present).
27 @deps=grep(!/^[.\/]+\/krb5.h/,@deps);
28 push @{$files{$thisfile}},@deps;
21} 29}
22 30
23my $file; 31my $file;
24foreach $file (sort keys %files) { 32foreach $file (sort keys %files) {
25 my $len=0; 33 my $len=0;
26 my $dep; 34 my $dep;
35 my $origfile=$file;
36 $origfile=~s/\.o$/.c/;
37 $file=~s/^\.\///;
38 push @{$files{$file}},$origfile;
39 my $prevdep="";
27 foreach $dep (sort @{$files{$file}}) { 40 foreach $dep (sort @{$files{$file}}) {
41 $dep=~s/^\.\///;
42 next if $prevdep eq $dep; # to exterminate duplicates...
43 $prevdep = $dep;
28 $len=0 if $len+length($dep)+1 >= 80; 44 $len=0 if $len+length($dep)+1 >= 80;
29 if($len == 0) { 45 if($len == 0) {
30 print "\n$file:"; 46 print "\n$file:";
diff --git a/src/lib/libcrypto/util/deleof.pl b/src/lib/libcrypto/util/deleof.pl
index 04f30f0e47..155acd88ff 100644
--- a/src/lib/libcrypto/util/deleof.pl
+++ b/src/lib/libcrypto/util/deleof.pl
@@ -1,4 +1,4 @@
1#!/usr/bin/perl 1#!/usr/local/bin/perl
2 2
3while (<>) 3while (<>)
4 { 4 {
diff --git a/src/lib/libcrypto/util/do_ms.sh b/src/lib/libcrypto/util/do_ms.sh
index f498d842b7..515b074cff 100644
--- a/src/lib/libcrypto/util/do_ms.sh
+++ b/src/lib/libcrypto/util/do_ms.sh
@@ -5,11 +5,13 @@
5 5
6PATH=util:../util:$PATH 6PATH=util:../util:$PATH
7 7
8# perl util/mk1mf.pl VC-MSDOS no-sock >ms/msdos.mak 8# perl util/mk1mf.pl no-sock VC-MSDOS >ms/msdos.mak
9# perl util/mk1mf.pl VC-W31-32 >ms/w31.mak 9# perl util/mk1mf.pl VC-W31-32 >ms/w31.mak
10perl util/mk1mf.pl VC-WIN16 dll >ms/w31dll.mak 10perl util/mk1mf.pl dll VC-WIN16 >ms/w31dll.mak
11# perl util/mk1mf.pl VC-WIN32 >ms/nt.mak 11# perl util/mk1mf.pl VC-WIN32 >ms/nt.mak
12perl util/mk1mf.pl VC-WIN32 dll >ms/ntdll.mak 12perl util/mk1mf.pl dll VC-WIN32 >ms/ntdll.mak
13perl util/mk1mf.pl Mingw32 >ms/mingw32.mak
14perl util/mk1mf.pl Mingw32-files >ms/mingw32f.mak
13 15
14perl util/mkdef.pl 16 libeay > ms/libeay16.def 16perl util/mkdef.pl 16 libeay > ms/libeay16.def
15perl util/mkdef.pl 32 libeay > ms/libeay32.def 17perl util/mkdef.pl 32 libeay > ms/libeay32.def
diff --git a/src/lib/libcrypto/util/domd b/src/lib/libcrypto/util/domd
index 324051f60b..aa99cb0523 100644
--- a/src/lib/libcrypto/util/domd
+++ b/src/lib/libcrypto/util/domd
@@ -4,8 +4,26 @@
4 4
5TOP=$1 5TOP=$1
6shift 6shift
7if [ "$1" = "-MD" ]; then
8 shift
9 MAKEDEPEND=$1
10 shift
11fi
12if [ "$MAKEDEPEND" = "" ]; then MAKEDEPEND=makedepend; fi
7 13
8cp Makefile.ssl Makefile.save 14cp Makefile.ssl Makefile.save
9makedepend -f Makefile.ssl $@ 15# fake the presence of Kerberos
10$TOP/util/clean-depend.pl < Makefile.ssl > Makefile.new 16touch $TOP/krb5.h
17if [ "$MAKEDEPEND" = "gcc" ]; then
18 sed -e '/^# DO NOT DELETE.*/,$d' < Makefile.ssl > Makefile.tmp
19 echo '# DO NOT DELETE THIS LINE -- make depend depends on it.' >> Makefile.tmp
20 gcc -D OPENSSL_DOING_MAKEDEPEND -M $@ >> Makefile.tmp
21 perl $TOP/util/clean-depend.pl < Makefile.tmp > Makefile.new
22 rm -f Makefile.tmp
23else
24 ${MAKEDEPEND} -D OPENSSL_DOING_MAKEDEPEND -f Makefile.ssl $@
25 perl $TOP/util/clean-depend.pl < Makefile.ssl > Makefile.new
26fi
11mv Makefile.new Makefile.ssl 27mv Makefile.new Makefile.ssl
28# unfake the presence of Kerberos
29rm $TOP/krb5.h
diff --git a/src/lib/libcrypto/util/err-ins.pl b/src/lib/libcrypto/util/err-ins.pl
index db1bb48275..31b70df8d0 100644
--- a/src/lib/libcrypto/util/err-ins.pl
+++ b/src/lib/libcrypto/util/err-ins.pl
@@ -1,4 +1,4 @@
1#!/usr/bin/perl 1#!/usr/local/bin/perl
2# 2#
3# tack error codes onto the end of a file 3# tack error codes onto the end of a file
4# 4#
diff --git a/src/lib/libcrypto/util/files.pl b/src/lib/libcrypto/util/files.pl
index bf3b7effdc..41f033e3b9 100644
--- a/src/lib/libcrypto/util/files.pl
+++ b/src/lib/libcrypto/util/files.pl
@@ -1,4 +1,4 @@
1#!/usr/bin/perl 1#!/usr/local/bin/perl
2# 2#
3# used to generate the file MINFO for use by util/mk1mf.pl 3# used to generate the file MINFO for use by util/mk1mf.pl
4# It is basically a list of all variables from the passed makefile 4# It is basically a list of all variables from the passed makefile
diff --git a/src/lib/libcrypto/util/libeay.num b/src/lib/libcrypto/util/libeay.num
index fcaf254287..b74749e5de 100644
--- a/src/lib/libcrypto/util/libeay.num
+++ b/src/lib/libcrypto/util/libeay.num
@@ -1,1065 +1,2776 @@
1SSLeay 1 1SSLeay 1 EXIST::FUNCTION:
2SSLeay_version 2 2SSLeay_version 2 EXIST::FUNCTION:
3ASN1_BIT_STRING_asn1_meth 3 3ASN1_BIT_STRING_asn1_meth 3 EXIST::FUNCTION:
4ASN1_HEADER_free 4 4ASN1_HEADER_free 4 EXIST::FUNCTION:
5ASN1_HEADER_new 5 5ASN1_HEADER_new 5 EXIST::FUNCTION:
6ASN1_IA5STRING_asn1_meth 6 6ASN1_IA5STRING_asn1_meth 6 EXIST::FUNCTION:
7ASN1_INTEGER_get 7 7ASN1_INTEGER_get 7 EXIST::FUNCTION:
8ASN1_INTEGER_set 8 8ASN1_INTEGER_set 8 EXIST::FUNCTION:
9ASN1_INTEGER_to_BN 9 9ASN1_INTEGER_to_BN 9 EXIST::FUNCTION:
10ASN1_OBJECT_create 10 10ASN1_OBJECT_create 10 EXIST::FUNCTION:
11ASN1_OBJECT_free 11 11ASN1_OBJECT_free 11 EXIST::FUNCTION:
12ASN1_OBJECT_new 12 12ASN1_OBJECT_new 12 EXIST::FUNCTION:
13ASN1_PRINTABLE_type 13 13ASN1_PRINTABLE_type 13 EXIST::FUNCTION:
14ASN1_STRING_cmp 14 14ASN1_STRING_cmp 14 EXIST::FUNCTION:
15ASN1_STRING_dup 15 15ASN1_STRING_dup 15 EXIST::FUNCTION:
16ASN1_STRING_free 16 16ASN1_STRING_free 16 EXIST::FUNCTION:
17ASN1_STRING_new 17 17ASN1_STRING_new 17 EXIST::FUNCTION:
18ASN1_STRING_print 18 18ASN1_STRING_print 18 EXIST::FUNCTION:BIO
19ASN1_STRING_set 19 19ASN1_STRING_set 19 EXIST::FUNCTION:
20ASN1_STRING_type_new 20 20ASN1_STRING_type_new 20 EXIST::FUNCTION:
21ASN1_TYPE_free 21 21ASN1_TYPE_free 21 EXIST::FUNCTION:
22ASN1_TYPE_new 22 22ASN1_TYPE_new 22 EXIST::FUNCTION:
23ASN1_UNIVERSALSTRING_to_string 23 23ASN1_UNIVERSALSTRING_to_string 23 EXIST::FUNCTION:
24ASN1_UTCTIME_check 24 24ASN1_UTCTIME_check 24 EXIST::FUNCTION:
25ASN1_UTCTIME_print 25 25ASN1_UTCTIME_print 25 EXIST::FUNCTION:BIO
26ASN1_UTCTIME_set 26 26ASN1_UTCTIME_set 26 EXIST::FUNCTION:
27ASN1_check_infinite_end 27 27ASN1_check_infinite_end 27 EXIST::FUNCTION:
28ASN1_d2i_bio 28 28ASN1_d2i_bio 28 EXIST::FUNCTION:BIO
29ASN1_d2i_fp 29 29ASN1_d2i_fp 29 EXIST::FUNCTION:FP_API
30ASN1_digest 30 30ASN1_digest 30 EXIST::FUNCTION:EVP
31ASN1_dup 31 31ASN1_dup 31 EXIST::FUNCTION:
32ASN1_get_object 32 32ASN1_get_object 32 EXIST::FUNCTION:
33ASN1_i2d_bio 33 33ASN1_i2d_bio 33 EXIST::FUNCTION:BIO
34ASN1_i2d_fp 34 34ASN1_i2d_fp 34 EXIST::FUNCTION:FP_API
35ASN1_object_size 35 35ASN1_object_size 35 EXIST::FUNCTION:
36ASN1_parse 36 36ASN1_parse 36 EXIST::FUNCTION:BIO
37ASN1_put_object 37 37ASN1_put_object 37 EXIST::FUNCTION:
38ASN1_sign 38 38ASN1_sign 38 EXIST::FUNCTION:EVP
39ASN1_verify 39 39ASN1_verify 39 EXIST::FUNCTION:EVP
40BF_cbc_encrypt 40 40BF_cbc_encrypt 40 EXIST::FUNCTION:BF
41BF_cfb64_encrypt 41 41BF_cfb64_encrypt 41 EXIST::FUNCTION:BF
42BF_ecb_encrypt 42 42BF_ecb_encrypt 42 EXIST::FUNCTION:BF
43BF_encrypt 43 43BF_encrypt 43 EXIST::FUNCTION:BF
44BF_ofb64_encrypt 44 44BF_ofb64_encrypt 44 EXIST::FUNCTION:BF
45BF_options 45 45BF_options 45 EXIST::FUNCTION:BF
46BF_set_key 46 46BF_set_key 46 EXIST::FUNCTION:BF
47BIO_CONNECT_free 47 47BIO_CONNECT_free 47 NOEXIST::FUNCTION:
48BIO_CONNECT_new 48 48BIO_CONNECT_new 48 NOEXIST::FUNCTION:
49BIO_accept 51 49BIO_accept 51 EXIST::FUNCTION:
50BIO_ctrl 52 50BIO_ctrl 52 EXIST::FUNCTION:
51BIO_int_ctrl 53 51BIO_int_ctrl 53 EXIST::FUNCTION:
52BIO_debug_callback 54 52BIO_debug_callback 54 EXIST::FUNCTION:
53BIO_dump 55 53BIO_dump 55 EXIST::FUNCTION:
54BIO_dup_chain 56 54BIO_dup_chain 56 EXIST::FUNCTION:
55BIO_f_base64 57 55BIO_f_base64 57 EXIST::FUNCTION:BIO
56BIO_f_buffer 58 56BIO_f_buffer 58 EXIST::FUNCTION:
57BIO_f_cipher 59 57BIO_f_cipher 59 EXIST::FUNCTION:BIO
58BIO_f_md 60 58BIO_f_md 60 EXIST::FUNCTION:BIO
59BIO_f_null 61 59BIO_f_null 61 EXIST::FUNCTION:
60BIO_f_proxy_server 62 60BIO_f_proxy_server 62 NOEXIST::FUNCTION:
61BIO_fd_non_fatal_error 63 61BIO_fd_non_fatal_error 63 EXIST::FUNCTION:
62BIO_fd_should_retry 64 62BIO_fd_should_retry 64 EXIST::FUNCTION:
63BIO_find_type 65 63BIO_find_type 65 EXIST::FUNCTION:
64BIO_free 66 64BIO_free 66 EXIST::FUNCTION:
65BIO_free_all 67 65BIO_free_all 67 EXIST::FUNCTION:
66BIO_get_accept_socket 69 66BIO_get_accept_socket 69 EXIST::FUNCTION:
67BIO_get_filter_bio 70 67BIO_get_filter_bio 70 NOEXIST::FUNCTION:
68BIO_get_host_ip 71 68BIO_get_host_ip 71 EXIST::FUNCTION:
69BIO_get_port 72 69BIO_get_port 72 EXIST::FUNCTION:
70BIO_get_retry_BIO 73 70BIO_get_retry_BIO 73 EXIST::FUNCTION:
71BIO_get_retry_reason 74 71BIO_get_retry_reason 74 EXIST::FUNCTION:
72BIO_gethostbyname 75 72BIO_gethostbyname 75 EXIST::FUNCTION:
73BIO_gets 76 73BIO_gets 76 EXIST::FUNCTION:
74BIO_new 78 74BIO_new 78 EXIST::FUNCTION:
75BIO_new_accept 79 75BIO_new_accept 79 EXIST::FUNCTION:
76BIO_new_connect 80 76BIO_new_connect 80 EXIST::FUNCTION:
77BIO_new_fd 81 77BIO_new_fd 81 EXIST::FUNCTION:
78BIO_new_file 82 78BIO_new_file 82 EXIST:!WIN16:FUNCTION:FP_API
79BIO_new_fp 83 79BIO_new_fp 83 EXIST:!WIN16:FUNCTION:FP_API
80BIO_new_socket 84 80BIO_new_socket 84 EXIST::FUNCTION:
81BIO_pop 85 81BIO_pop 85 EXIST::FUNCTION:
82BIO_printf 86 82BIO_printf 86 EXIST::FUNCTION:
83BIO_push 87 83BIO_push 87 EXIST::FUNCTION:
84BIO_puts 88 84BIO_puts 88 EXIST::FUNCTION:
85BIO_read 89 85BIO_read 89 EXIST::FUNCTION:
86BIO_s_accept 90 86BIO_s_accept 90 EXIST::FUNCTION:
87BIO_s_connect 91 87BIO_s_connect 91 EXIST::FUNCTION:
88BIO_s_fd 92 88BIO_s_fd 92 EXIST::FUNCTION:
89BIO_s_file 93 89BIO_s_file 93 EXIST:!WIN16:FUNCTION:FP_API
90BIO_s_mem 95 90BIO_s_mem 95 EXIST::FUNCTION:
91BIO_s_null 96 91BIO_s_null 96 EXIST::FUNCTION:
92BIO_s_proxy_client 97 92BIO_s_proxy_client 97 NOEXIST::FUNCTION:
93BIO_s_socket 98 93BIO_s_socket 98 EXIST::FUNCTION:
94BIO_set 100 94BIO_set 100 EXIST::FUNCTION:
95BIO_set_cipher 101 95BIO_set_cipher 101 EXIST::FUNCTION:BIO
96BIO_set_tcp_ndelay 102 96BIO_set_tcp_ndelay 102 EXIST::FUNCTION:
97BIO_sock_cleanup 103 97BIO_sock_cleanup 103 EXIST::FUNCTION:
98BIO_sock_error 104 98BIO_sock_error 104 EXIST::FUNCTION:
99BIO_sock_init 105 99BIO_sock_init 105 EXIST::FUNCTION:
100BIO_sock_non_fatal_error 106 100BIO_sock_non_fatal_error 106 EXIST::FUNCTION:
101BIO_sock_should_retry 107 101BIO_sock_should_retry 107 EXIST::FUNCTION:
102BIO_socket_ioctl 108 102BIO_socket_ioctl 108 EXIST::FUNCTION:
103BIO_write 109 103BIO_write 109 EXIST::FUNCTION:
104BN_CTX_free 110 104BN_CTX_free 110 EXIST::FUNCTION:
105BN_CTX_new 111 105BN_CTX_new 111 EXIST::FUNCTION:
106BN_MONT_CTX_free 112 106BN_MONT_CTX_free 112 EXIST::FUNCTION:
107BN_MONT_CTX_new 113 107BN_MONT_CTX_new 113 EXIST::FUNCTION:
108BN_MONT_CTX_set 114 108BN_MONT_CTX_set 114 EXIST::FUNCTION:
109BN_add 115 109BN_add 115 EXIST::FUNCTION:
110BN_add_word 116 110BN_add_word 116 EXIST::FUNCTION:
111BN_hex2bn 117 111BN_hex2bn 117 EXIST::FUNCTION:
112BN_bin2bn 118 112BN_bin2bn 118 EXIST::FUNCTION:
113BN_bn2hex 119 113BN_bn2hex 119 EXIST::FUNCTION:
114BN_bn2bin 120 114BN_bn2bin 120 EXIST::FUNCTION:
115BN_clear 121 115BN_clear 121 EXIST::FUNCTION:
116BN_clear_bit 122 116BN_clear_bit 122 EXIST::FUNCTION:
117BN_clear_free 123 117BN_clear_free 123 EXIST::FUNCTION:
118BN_cmp 124 118BN_cmp 124 EXIST::FUNCTION:
119BN_copy 125 119BN_copy 125 EXIST::FUNCTION:
120BN_div 126 120BN_div 126 EXIST::FUNCTION:
121BN_div_word 127 121BN_div_word 127 EXIST::FUNCTION:
122BN_dup 128 122BN_dup 128 EXIST::FUNCTION:
123BN_free 129 123BN_free 129 EXIST::FUNCTION:
124BN_from_montgomery 130 124BN_from_montgomery 130 EXIST::FUNCTION:
125BN_gcd 131 125BN_gcd 131 EXIST::FUNCTION:
126BN_generate_prime 132 126BN_generate_prime 132 EXIST::FUNCTION:
127BN_get_word 133 127BN_get_word 133 EXIST::FUNCTION:
128BN_is_bit_set 134 128BN_is_bit_set 134 EXIST::FUNCTION:
129BN_is_prime 135 129BN_is_prime 135 EXIST::FUNCTION:
130BN_lshift 136 130BN_lshift 136 EXIST::FUNCTION:
131BN_lshift1 137 131BN_lshift1 137 EXIST::FUNCTION:
132BN_mask_bits 138 132BN_mask_bits 138 EXIST::FUNCTION:
133BN_mod 139 133BN_mod 139 NOEXIST::FUNCTION:
134BN_mod_exp 140 134BN_mod_exp 140 EXIST::FUNCTION:
135BN_mod_exp_mont 141 135BN_mod_exp_mont 141 EXIST::FUNCTION:
136BN_mod_exp_recp 142 136BN_mod_exp_simple 143 EXIST::FUNCTION:
137BN_mod_exp_simple 143 137BN_mod_inverse 144 EXIST::FUNCTION:
138BN_mod_inverse 144 138BN_mod_mul 145 EXIST::FUNCTION:
139BN_mod_mul 145 139BN_mod_mul_montgomery 146 EXIST::FUNCTION:
140BN_mod_mul_montgomery 146 140BN_mod_word 148 EXIST::FUNCTION:
141BN_mod_mul_reciprocal 147 141BN_mul 149 EXIST::FUNCTION:
142BN_mod_word 148 142BN_new 150 EXIST::FUNCTION:
143BN_mul 149 143BN_num_bits 151 EXIST::FUNCTION:
144BN_new 150 144BN_num_bits_word 152 EXIST::FUNCTION:
145BN_num_bits 151 145BN_options 153 EXIST::FUNCTION:
146BN_num_bits_word 152 146BN_print 154 EXIST::FUNCTION:
147BN_options 153 147BN_print_fp 155 EXIST::FUNCTION:FP_API
148BN_print 154 148BN_rand 156 EXIST::FUNCTION:
149BN_print_fp 155 149BN_reciprocal 157 EXIST::FUNCTION:
150BN_rand 156 150BN_rshift 158 EXIST::FUNCTION:
151BN_reciprocal 157 151BN_rshift1 159 EXIST::FUNCTION:
152BN_rshift 158 152BN_set_bit 160 EXIST::FUNCTION:
153BN_rshift1 159 153BN_set_word 161 EXIST::FUNCTION:
154BN_set_bit 160 154BN_sqr 162 EXIST::FUNCTION:
155BN_set_word 161 155BN_sub 163 EXIST::FUNCTION:
156BN_sqr 162 156BN_to_ASN1_INTEGER 164 EXIST::FUNCTION:
157BN_sub 163 157BN_ucmp 165 EXIST::FUNCTION:
158BN_to_ASN1_INTEGER 164 158BN_value_one 166 EXIST::FUNCTION:
159BN_ucmp 165 159BUF_MEM_free 167 EXIST::FUNCTION:
160BN_value_one 166 160BUF_MEM_grow 168 EXIST::FUNCTION:
161BUF_MEM_free 167 161BUF_MEM_new 169 EXIST::FUNCTION:
162BUF_MEM_grow 168 162BUF_strdup 170 EXIST::FUNCTION:
163BUF_MEM_new 169 163CONF_free 171 EXIST::FUNCTION:
164BUF_strdup 170 164CONF_get_number 172 EXIST::FUNCTION:
165CONF_free 171 165CONF_get_section 173 EXIST::FUNCTION:
166CONF_get_number 172 166CONF_get_string 174 EXIST::FUNCTION:
167CONF_get_section 173 167CONF_load 175 EXIST::FUNCTION:
168CONF_get_string 174 168CRYPTO_add_lock 176 EXIST::FUNCTION:
169CONF_load 175 169CRYPTO_dbg_free 177 EXIST::FUNCTION:
170CRYPTO_add_lock 176 170CRYPTO_dbg_malloc 178 EXIST::FUNCTION:
171CRYPTO_dbg_free 177 171CRYPTO_dbg_realloc 179 EXIST::FUNCTION:
172CRYPTO_dbg_malloc 178 172CRYPTO_dbg_remalloc 180 NOEXIST::FUNCTION:
173CRYPTO_dbg_realloc 179 173CRYPTO_free 181 EXIST::FUNCTION:
174CRYPTO_dbg_remalloc 180 174CRYPTO_get_add_lock_callback 182 EXIST::FUNCTION:
175CRYPTO_free 181 175CRYPTO_get_id_callback 183 EXIST::FUNCTION:
176CRYPTO_get_add_lock_callback 182 176CRYPTO_get_lock_name 184 EXIST::FUNCTION:
177CRYPTO_get_id_callback 183 177CRYPTO_get_locking_callback 185 EXIST::FUNCTION:
178CRYPTO_get_lock_name 184 178CRYPTO_get_mem_functions 186 EXIST::FUNCTION:
179CRYPTO_get_locking_callback 185 179CRYPTO_lock 187 EXIST::FUNCTION:
180CRYPTO_get_mem_functions 186 180CRYPTO_malloc 188 EXIST::FUNCTION:
181CRYPTO_lock 187 181CRYPTO_mem_ctrl 189 EXIST::FUNCTION:
182CRYPTO_malloc 188 182CRYPTO_mem_leaks 190 EXIST::FUNCTION:
183CRYPTO_mem_ctrl 189 183CRYPTO_mem_leaks_cb 191 EXIST::FUNCTION:
184CRYPTO_mem_leaks 190 184CRYPTO_mem_leaks_fp 192 EXIST::FUNCTION:FP_API
185CRYPTO_mem_leaks_cb 191 185CRYPTO_realloc 193 EXIST::FUNCTION:
186CRYPTO_mem_leaks_fp 192 186CRYPTO_remalloc 194 EXIST::FUNCTION:
187CRYPTO_realloc 193 187CRYPTO_set_add_lock_callback 195 EXIST::FUNCTION:
188CRYPTO_remalloc 194 188CRYPTO_set_id_callback 196 EXIST::FUNCTION:
189CRYPTO_set_add_lock_callback 195 189CRYPTO_set_locking_callback 197 EXIST::FUNCTION:
190CRYPTO_set_id_callback 196 190CRYPTO_set_mem_functions 198 EXIST::FUNCTION:
191CRYPTO_set_locking_callback 197 191CRYPTO_thread_id 199 EXIST::FUNCTION:
192CRYPTO_set_mem_functions 198 192DH_check 200 EXIST::FUNCTION:DH
193CRYPTO_thread_id 199 193DH_compute_key 201 EXIST::FUNCTION:DH
194DH_check 200 194DH_free 202 EXIST::FUNCTION:DH
195DH_compute_key 201 195DH_generate_key 203 EXIST::FUNCTION:DH
196DH_free 202 196DH_generate_parameters 204 EXIST::FUNCTION:DH
197DH_generate_key 203 197DH_new 205 EXIST::FUNCTION:DH
198DH_generate_parameters 204 198DH_size 206 EXIST::FUNCTION:DH
199DH_new 205 199DHparams_print 207 EXIST::FUNCTION:BIO,DH
200DH_size 206 200DHparams_print_fp 208 EXIST::FUNCTION:DH,FP_API
201DHparams_print 207 201DSA_free 209 EXIST::FUNCTION:DSA
202DHparams_print_fp 208 202DSA_generate_key 210 EXIST::FUNCTION:DSA
203DSA_free 209 203DSA_generate_parameters 211 EXIST::FUNCTION:DSA
204DSA_generate_key 210 204DSA_is_prime 212 NOEXIST::FUNCTION:
205DSA_generate_parameters 211 205DSA_new 213 EXIST::FUNCTION:DSA
206DSA_is_prime 212 206DSA_print 214 EXIST::FUNCTION:BIO,DSA
207DSA_new 213 207DSA_print_fp 215 EXIST::FUNCTION:DSA,FP_API
208DSA_print 214 208DSA_sign 216 EXIST::FUNCTION:DSA
209DSA_print_fp 215 209DSA_sign_setup 217 EXIST::FUNCTION:DSA
210DSA_sign 216 210DSA_size 218 EXIST::FUNCTION:DSA
211DSA_sign_setup 217 211DSA_verify 219 EXIST::FUNCTION:DSA
212DSA_size 218 212DSAparams_print 220 EXIST::FUNCTION:BIO,DSA
213DSA_verify 219 213DSAparams_print_fp 221 EXIST::FUNCTION:DSA,FP_API
214DSAparams_print 220 214ERR_clear_error 222 EXIST::FUNCTION:
215DSAparams_print_fp 221 215ERR_error_string 223 EXIST::FUNCTION:
216ERR_clear_error 222 216ERR_free_strings 224 EXIST::FUNCTION:
217ERR_error_string 223 217ERR_func_error_string 225 EXIST::FUNCTION:
218ERR_free_strings 224 218ERR_get_err_state_table 226 EXIST::FUNCTION:LHASH
219ERR_func_error_string 225 219ERR_get_error 227 EXIST::FUNCTION:
220ERR_get_err_state_table 226 220ERR_get_error_line 228 EXIST::FUNCTION:
221ERR_get_error 227 221ERR_get_state 229 EXIST::FUNCTION:
222ERR_get_error_line 228 222ERR_get_string_table 230 EXIST::FUNCTION:LHASH
223ERR_get_state 229 223ERR_lib_error_string 231 EXIST::FUNCTION:
224ERR_get_string_table 230 224ERR_load_ASN1_strings 232 EXIST::FUNCTION:
225ERR_lib_error_string 231 225ERR_load_BIO_strings 233 EXIST::FUNCTION:
226ERR_load_ASN1_strings 232 226ERR_load_BN_strings 234 EXIST::FUNCTION:
227ERR_load_BIO_strings 233 227ERR_load_BUF_strings 235 EXIST::FUNCTION:
228ERR_load_BN_strings 234 228ERR_load_CONF_strings 236 EXIST::FUNCTION:
229ERR_load_BUF_strings 235 229ERR_load_DH_strings 237 EXIST::FUNCTION:DH
230ERR_load_CONF_strings 236 230ERR_load_DSA_strings 238 EXIST::FUNCTION:DSA
231ERR_load_DH_strings 237 231ERR_load_ERR_strings 239 EXIST::FUNCTION:
232ERR_load_DSA_strings 238 232ERR_load_EVP_strings 240 EXIST::FUNCTION:
233ERR_load_ERR_strings 239 233ERR_load_OBJ_strings 241 EXIST::FUNCTION:
234ERR_load_EVP_strings 240 234ERR_load_PEM_strings 242 EXIST::FUNCTION:
235ERR_load_OBJ_strings 241 235ERR_load_PROXY_strings 243 NOEXIST::FUNCTION:
236ERR_load_PEM_strings 242 236ERR_load_RSA_strings 244 EXIST::FUNCTION:RSA
237ERR_load_PROXY_strings 243 237ERR_load_X509_strings 245 EXIST::FUNCTION:
238ERR_load_RSA_strings 244 238ERR_load_crypto_strings 246 EXIST::FUNCTION:
239ERR_load_X509_strings 245 239ERR_load_strings 247 EXIST::FUNCTION:
240ERR_load_crypto_strings 246 240ERR_peek_error 248 EXIST::FUNCTION:
241ERR_load_strings 247 241ERR_peek_error_line 249 EXIST::FUNCTION:
242ERR_peek_error 248 242ERR_print_errors 250 EXIST::FUNCTION:BIO
243ERR_peek_error_line 249 243ERR_print_errors_fp 251 EXIST::FUNCTION:FP_API
244ERR_print_errors 250 244ERR_put_error 252 EXIST::FUNCTION:
245ERR_print_errors_fp 251 245ERR_reason_error_string 253 EXIST::FUNCTION:
246ERR_put_error 252 246ERR_remove_state 254 EXIST::FUNCTION:
247ERR_reason_error_string 253 247EVP_BytesToKey 255 EXIST::FUNCTION:
248ERR_remove_state 254 248EVP_CIPHER_CTX_cleanup 256 EXIST::FUNCTION:
249EVP_BytesToKey 255 249EVP_CipherFinal 257 EXIST::FUNCTION:
250EVP_CIPHER_CTX_cleanup 256 250EVP_CipherInit 258 EXIST::FUNCTION:
251EVP_CipherFinal 257 251EVP_CipherUpdate 259 EXIST::FUNCTION:
252EVP_CipherInit 258 252EVP_DecodeBlock 260 EXIST::FUNCTION:
253EVP_CipherUpdate 259 253EVP_DecodeFinal 261 EXIST::FUNCTION:
254EVP_DecodeBlock 260 254EVP_DecodeInit 262 EXIST::FUNCTION:
255EVP_DecodeFinal 261 255EVP_DecodeUpdate 263 EXIST::FUNCTION:
256EVP_DecodeInit 262 256EVP_DecryptFinal 264 EXIST::FUNCTION:
257EVP_DecodeUpdate 263 257EVP_DecryptInit 265 EXIST::FUNCTION:
258EVP_DecryptFinal 264 258EVP_DecryptUpdate 266 EXIST::FUNCTION:
259EVP_DecryptInit 265 259EVP_DigestFinal 267 EXIST::FUNCTION:
260EVP_DecryptUpdate 266 260EVP_DigestInit 268 EXIST::FUNCTION:
261EVP_DigestFinal 267 261EVP_DigestUpdate 269 EXIST::FUNCTION:
262EVP_DigestInit 268 262EVP_EncodeBlock 270 EXIST::FUNCTION:
263EVP_DigestUpdate 269 263EVP_EncodeFinal 271 EXIST::FUNCTION:
264EVP_EncodeBlock 270 264EVP_EncodeInit 272 EXIST::FUNCTION:
265EVP_EncodeFinal 271 265EVP_EncodeUpdate 273 EXIST::FUNCTION:
266EVP_EncodeInit 272 266EVP_EncryptFinal 274 EXIST::FUNCTION:
267EVP_EncodeUpdate 273 267EVP_EncryptInit 275 EXIST::FUNCTION:
268EVP_EncryptFinal 274 268EVP_EncryptUpdate 276 EXIST::FUNCTION:
269EVP_EncryptInit 275 269EVP_OpenFinal 277 EXIST::FUNCTION:RSA
270EVP_EncryptUpdate 276 270EVP_OpenInit 278 EXIST::FUNCTION:RSA
271EVP_OpenFinal 277 271EVP_PKEY_assign 279 EXIST::FUNCTION:
272EVP_OpenInit 278 272EVP_PKEY_copy_parameters 280 EXIST::FUNCTION:
273EVP_PKEY_assign 279 273EVP_PKEY_free 281 EXIST::FUNCTION:
274EVP_PKEY_copy_parameters 280 274EVP_PKEY_missing_parameters 282 EXIST::FUNCTION:
275EVP_PKEY_free 281 275EVP_PKEY_new 283 EXIST::FUNCTION:
276EVP_PKEY_missing_parameters 282 276EVP_PKEY_save_parameters 284 EXIST::FUNCTION:
277EVP_PKEY_new 283 277EVP_PKEY_size 285 EXIST::FUNCTION:
278EVP_PKEY_save_parameters 284 278EVP_PKEY_type 286 EXIST::FUNCTION:
279EVP_PKEY_size 285 279EVP_SealFinal 287 EXIST::FUNCTION:RSA
280EVP_PKEY_type 286 280EVP_SealInit 288 EXIST::FUNCTION:RSA
281EVP_SealFinal 287 281EVP_SignFinal 289 EXIST::FUNCTION:
282EVP_SealInit 288 282EVP_VerifyFinal 290 EXIST::FUNCTION:
283EVP_SignFinal 289 283EVP_add_alias 291 NOEXIST::FUNCTION:
284EVP_VerifyFinal 290 284EVP_add_cipher 292 EXIST::FUNCTION:
285EVP_add_alias 291 285EVP_add_digest 293 EXIST::FUNCTION:
286EVP_add_cipher 292 286EVP_bf_cbc 294 EXIST::FUNCTION:BF
287EVP_add_digest 293 287EVP_bf_cfb 295 EXIST::FUNCTION:BF
288EVP_bf_cbc 294 288EVP_bf_ecb 296 EXIST::FUNCTION:BF
289EVP_bf_cfb 295 289EVP_bf_ofb 297 EXIST::FUNCTION:BF
290EVP_bf_ecb 296 290EVP_cleanup 298 EXIST::FUNCTION:
291EVP_bf_ofb 297 291EVP_des_cbc 299 EXIST::FUNCTION:DES
292EVP_cleanup 298 292EVP_des_cfb 300 EXIST::FUNCTION:DES
293EVP_des_cbc 299 293EVP_des_ecb 301 EXIST::FUNCTION:DES
294EVP_des_cfb 300 294EVP_des_ede 302 EXIST::FUNCTION:DES
295EVP_des_ecb 301 295EVP_des_ede3 303 EXIST::FUNCTION:DES
296EVP_des_ede 302 296EVP_des_ede3_cbc 304 EXIST::FUNCTION:DES
297EVP_des_ede3 303 297EVP_des_ede3_cfb 305 EXIST::FUNCTION:DES
298EVP_des_ede3_cbc 304 298EVP_des_ede3_ofb 306 EXIST::FUNCTION:DES
299EVP_des_ede3_cfb 305 299EVP_des_ede_cbc 307 EXIST::FUNCTION:DES
300EVP_des_ede3_ofb 306 300EVP_des_ede_cfb 308 EXIST::FUNCTION:DES
301EVP_des_ede_cbc 307 301EVP_des_ede_ofb 309 EXIST::FUNCTION:DES
302EVP_des_ede_cfb 308 302EVP_des_ofb 310 EXIST::FUNCTION:DES
303EVP_des_ede_ofb 309 303EVP_desx_cbc 311 EXIST::FUNCTION:DES
304EVP_des_ofb 310 304EVP_dss 312 EXIST::FUNCTION:DSA,SHA
305EVP_desx_cbc 311 305EVP_dss1 313 EXIST::FUNCTION:DSA,SHA
306EVP_dss 312 306EVP_enc_null 314 EXIST::FUNCTION:
307EVP_dss1 313 307EVP_get_cipherbyname 315 EXIST::FUNCTION:
308EVP_enc_null 314 308EVP_get_digestbyname 316 EXIST::FUNCTION:
309EVP_get_cipherbyname 315 309EVP_get_pw_prompt 317 EXIST::FUNCTION:
310EVP_get_digestbyname 316 310EVP_idea_cbc 318 EXIST::FUNCTION:IDEA
311EVP_get_pw_prompt 317 311EVP_idea_cfb 319 EXIST::FUNCTION:IDEA
312EVP_idea_cbc 318 312EVP_idea_ecb 320 EXIST::FUNCTION:IDEA
313EVP_idea_cfb 319 313EVP_idea_ofb 321 EXIST::FUNCTION:IDEA
314EVP_idea_ecb 320 314EVP_md2 322 EXIST::FUNCTION:MD2
315EVP_idea_ofb 321 315EVP_md5 323 EXIST::FUNCTION:MD5
316EVP_md2 322 316EVP_md_null 324 EXIST::FUNCTION:
317EVP_md5 323 317EVP_rc2_cbc 325 EXIST::FUNCTION:RC2
318EVP_md_null 324 318EVP_rc2_cfb 326 EXIST::FUNCTION:RC2
319EVP_rc2_cbc 325 319EVP_rc2_ecb 327 EXIST::FUNCTION:RC2
320EVP_rc2_cfb 326 320EVP_rc2_ofb 328 EXIST::FUNCTION:RC2
321EVP_rc2_ecb 327 321EVP_rc4 329 EXIST::FUNCTION:RC4
322EVP_rc2_ofb 328 322EVP_read_pw_string 330 EXIST::FUNCTION:
323EVP_rc4 329 323EVP_set_pw_prompt 331 EXIST::FUNCTION:
324EVP_read_pw_string 330 324EVP_sha 332 EXIST::FUNCTION:SHA
325EVP_set_pw_prompt 331 325EVP_sha1 333 EXIST::FUNCTION:SHA
326EVP_sha 332 326MD2 334 EXIST::FUNCTION:MD2
327EVP_sha1 333 327MD2_Final 335 EXIST::FUNCTION:MD2
328MD2 334 328MD2_Init 336 EXIST::FUNCTION:MD2
329MD2_Final 335 329MD2_Update 337 EXIST::FUNCTION:MD2
330MD2_Init 336 330MD2_options 338 EXIST::FUNCTION:MD2
331MD2_Update 337 331MD5 339 EXIST::FUNCTION:MD5
332MD2_options 338 332MD5_Final 340 EXIST::FUNCTION:MD5
333MD5 339 333MD5_Init 341 EXIST::FUNCTION:MD5
334MD5_Final 340 334MD5_Update 342 EXIST::FUNCTION:MD5
335MD5_Init 341 335MDC2 343 EXIST::FUNCTION:MDC2
336MD5_Update 342 336MDC2_Final 344 EXIST::FUNCTION:MDC2
337MDC2 343 337MDC2_Init 345 EXIST::FUNCTION:MDC2
338MDC2_Final 344 338MDC2_Update 346 EXIST::FUNCTION:MDC2
339MDC2_Init 345 339NETSCAPE_SPKAC_free 347 EXIST::FUNCTION:
340MDC2_Update 346 340NETSCAPE_SPKAC_new 348 EXIST::FUNCTION:
341NETSCAPE_SPKAC_free 347 341NETSCAPE_SPKI_free 349 EXIST::FUNCTION:
342NETSCAPE_SPKAC_new 348 342NETSCAPE_SPKI_new 350 EXIST::FUNCTION:
343NETSCAPE_SPKI_free 349 343NETSCAPE_SPKI_sign 351 EXIST::FUNCTION:EVP
344NETSCAPE_SPKI_new 350 344NETSCAPE_SPKI_verify 352 EXIST::FUNCTION:EVP
345NETSCAPE_SPKI_sign 351 345OBJ_add_object 353 EXIST::FUNCTION:
346NETSCAPE_SPKI_verify 352 346OBJ_bsearch 354 EXIST::FUNCTION:
347OBJ_add_object 353 347OBJ_cleanup 355 EXIST::FUNCTION:
348OBJ_bsearch 354 348OBJ_cmp 356 EXIST::FUNCTION:
349OBJ_cleanup 355 349OBJ_create 357 EXIST::FUNCTION:
350OBJ_cmp 356 350OBJ_dup 358 EXIST::FUNCTION:
351OBJ_create 357 351OBJ_ln2nid 359 EXIST::FUNCTION:
352OBJ_dup 358 352OBJ_new_nid 360 EXIST::FUNCTION:
353OBJ_ln2nid 359 353OBJ_nid2ln 361 EXIST::FUNCTION:
354OBJ_new_nid 360 354OBJ_nid2obj 362 EXIST::FUNCTION:
355OBJ_nid2ln 361 355OBJ_nid2sn 363 EXIST::FUNCTION:
356OBJ_nid2obj 362 356OBJ_obj2nid 364 EXIST::FUNCTION:
357OBJ_nid2sn 363 357OBJ_sn2nid 365 EXIST::FUNCTION:
358OBJ_obj2nid 364 358OBJ_txt2nid 366 EXIST::FUNCTION:
359OBJ_sn2nid 365 359PEM_ASN1_read 367 EXIST:!WIN16:FUNCTION:
360OBJ_txt2nid 366 360PEM_ASN1_read_bio 368 EXIST::FUNCTION:BIO
361PEM_ASN1_read 367 361PEM_ASN1_write 369 EXIST:!WIN16:FUNCTION:
362PEM_ASN1_read_bio 368 362PEM_ASN1_write_bio 370 EXIST::FUNCTION:BIO
363PEM_ASN1_write 369 363PEM_SealFinal 371 EXIST::FUNCTION:RSA
364PEM_ASN1_write_bio 370 364PEM_SealInit 372 EXIST::FUNCTION:RSA
365PEM_SealFinal 371 365PEM_SealUpdate 373 EXIST::FUNCTION:RSA
366PEM_SealInit 372 366PEM_SignFinal 374 EXIST::FUNCTION:
367PEM_SealUpdate 373 367PEM_SignInit 375 EXIST::FUNCTION:
368PEM_SignFinal 374 368PEM_SignUpdate 376 EXIST::FUNCTION:
369PEM_SignInit 375 369PEM_X509_INFO_read 377 EXIST:!WIN16:FUNCTION:
370PEM_SignUpdate 376 370PEM_X509_INFO_read_bio 378 EXIST::FUNCTION:BIO
371PEM_X509_INFO_read 377 371PEM_X509_INFO_write_bio 379 EXIST::FUNCTION:BIO
372PEM_X509_INFO_read_bio 378 372PEM_dek_info 380 EXIST::FUNCTION:
373PEM_X509_INFO_write_bio 379 373PEM_do_header 381 EXIST::FUNCTION:
374PEM_dek_info 380 374PEM_get_EVP_CIPHER_INFO 382 EXIST::FUNCTION:
375PEM_do_header 381 375PEM_proc_type 383 EXIST::FUNCTION:
376PEM_get_EVP_CIPHER_INFO 382 376PEM_read 384 EXIST:!WIN16:FUNCTION:
377PEM_proc_type 383 377PEM_read_DHparams 385 EXIST:!WIN16:FUNCTION:DH
378PEM_read 384 378PEM_read_DSAPrivateKey 386 EXIST:!WIN16:FUNCTION:DSA
379PEM_read_DHparams 385 379PEM_read_DSAparams 387 EXIST:!WIN16:FUNCTION:DSA
380PEM_read_DSAPrivateKey 386 380PEM_read_PKCS7 388 EXIST:!WIN16:FUNCTION:
381PEM_read_DSAparams 387 381PEM_read_PrivateKey 389 EXIST:!WIN16:FUNCTION:
382PEM_read_PKCS7 388 382PEM_read_RSAPrivateKey 390 EXIST:!WIN16:FUNCTION:RSA
383PEM_read_PrivateKey 389 383PEM_read_X509 391 EXIST:!WIN16:FUNCTION:
384PEM_read_RSAPrivateKey 390 384PEM_read_X509_CRL 392 EXIST:!WIN16:FUNCTION:
385PEM_read_X509 391 385PEM_read_X509_REQ 393 EXIST:!WIN16:FUNCTION:
386PEM_read_X509_CRL 392 386PEM_read_bio 394 EXIST::FUNCTION:BIO
387PEM_read_X509_REQ 393 387PEM_read_bio_DHparams 395 EXIST::FUNCTION:DH
388PEM_read_bio 394 388PEM_read_bio_DSAPrivateKey 396 EXIST::FUNCTION:DSA
389PEM_read_bio_DHparams 395 389PEM_read_bio_DSAparams 397 EXIST::FUNCTION:DSA
390PEM_read_bio_DSAPrivateKey 396 390PEM_read_bio_PKCS7 398 EXIST::FUNCTION:
391PEM_read_bio_DSAparams 397 391PEM_read_bio_PrivateKey 399 EXIST::FUNCTION:
392PEM_read_bio_PKCS7 398 392PEM_read_bio_RSAPrivateKey 400 EXIST::FUNCTION:RSA
393PEM_read_bio_PrivateKey 399 393PEM_read_bio_X509 401 EXIST::FUNCTION:
394PEM_read_bio_RSAPrivateKey 400 394PEM_read_bio_X509_CRL 402 EXIST::FUNCTION:
395PEM_read_bio_X509 401 395PEM_read_bio_X509_REQ 403 EXIST::FUNCTION:
396PEM_read_bio_X509_CRL 402 396PEM_write 404 EXIST:!WIN16:FUNCTION:
397PEM_read_bio_X509_REQ 403 397PEM_write_DHparams 405 EXIST:!WIN16:FUNCTION:DH
398PEM_write 404 398PEM_write_DSAPrivateKey 406 EXIST:!WIN16:FUNCTION:DSA
399PEM_write_DHparams 405 399PEM_write_DSAparams 407 EXIST:!WIN16:FUNCTION:DSA
400PEM_write_DSAPrivateKey 406 400PEM_write_PKCS7 408 EXIST:!WIN16:FUNCTION:
401PEM_write_DSAparams 407 401PEM_write_PrivateKey 409 EXIST:!WIN16:FUNCTION:
402PEM_write_PKCS7 408 402PEM_write_RSAPrivateKey 410 EXIST:!WIN16:FUNCTION:RSA
403PEM_write_PrivateKey 409 403PEM_write_X509 411 EXIST:!WIN16:FUNCTION:
404PEM_write_RSAPrivateKey 410 404PEM_write_X509_CRL 412 EXIST:!WIN16:FUNCTION:
405PEM_write_X509 411 405PEM_write_X509_REQ 413 EXIST:!WIN16:FUNCTION:
406PEM_write_X509_CRL 412 406PEM_write_bio 414 EXIST::FUNCTION:BIO
407PEM_write_X509_REQ 413 407PEM_write_bio_DHparams 415 EXIST::FUNCTION:DH
408PEM_write_bio 414 408PEM_write_bio_DSAPrivateKey 416 EXIST::FUNCTION:DSA
409PEM_write_bio_DHparams 415 409PEM_write_bio_DSAparams 417 EXIST::FUNCTION:DSA
410PEM_write_bio_DSAPrivateKey 416 410PEM_write_bio_PKCS7 418 EXIST::FUNCTION:
411PEM_write_bio_DSAparams 417 411PEM_write_bio_PrivateKey 419 EXIST::FUNCTION:
412PEM_write_bio_PKCS7 418 412PEM_write_bio_RSAPrivateKey 420 EXIST::FUNCTION:RSA
413PEM_write_bio_PrivateKey 419 413PEM_write_bio_X509 421 EXIST::FUNCTION:
414PEM_write_bio_RSAPrivateKey 420 414PEM_write_bio_X509_CRL 422 EXIST::FUNCTION:
415PEM_write_bio_X509 421 415PEM_write_bio_X509_REQ 423 EXIST::FUNCTION:
416PEM_write_bio_X509_CRL 422 416PKCS7_DIGEST_free 424 EXIST::FUNCTION:
417PEM_write_bio_X509_REQ 423 417PKCS7_DIGEST_new 425 EXIST::FUNCTION:
418PKCS7_DIGEST_free 424 418PKCS7_ENCRYPT_free 426 EXIST::FUNCTION:
419PKCS7_DIGEST_new 425 419PKCS7_ENCRYPT_new 427 EXIST::FUNCTION:
420PKCS7_ENCRYPT_free 426 420PKCS7_ENC_CONTENT_free 428 EXIST::FUNCTION:
421PKCS7_ENCRYPT_new 427 421PKCS7_ENC_CONTENT_new 429 EXIST::FUNCTION:
422PKCS7_ENC_CONTENT_free 428 422PKCS7_ENVELOPE_free 430 EXIST::FUNCTION:
423PKCS7_ENC_CONTENT_new 429 423PKCS7_ENVELOPE_new 431 EXIST::FUNCTION:
424PKCS7_ENVELOPE_free 430 424PKCS7_ISSUER_AND_SERIAL_digest 432 EXIST::FUNCTION:
425PKCS7_ENVELOPE_new 431 425PKCS7_ISSUER_AND_SERIAL_free 433 EXIST::FUNCTION:
426PKCS7_ISSUER_AND_SERIAL_digest 432 426PKCS7_ISSUER_AND_SERIAL_new 434 EXIST::FUNCTION:
427PKCS7_ISSUER_AND_SERIAL_free 433 427PKCS7_RECIP_INFO_free 435 EXIST::FUNCTION:
428PKCS7_ISSUER_AND_SERIAL_new 434 428PKCS7_RECIP_INFO_new 436 EXIST::FUNCTION:
429PKCS7_RECIP_INFO_free 435 429PKCS7_SIGNED_free 437 EXIST::FUNCTION:
430PKCS7_RECIP_INFO_new 436 430PKCS7_SIGNED_new 438 EXIST::FUNCTION:
431PKCS7_SIGNED_free 437 431PKCS7_SIGNER_INFO_free 439 EXIST::FUNCTION:
432PKCS7_SIGNED_new 438 432PKCS7_SIGNER_INFO_new 440 EXIST::FUNCTION:
433PKCS7_SIGNER_INFO_free 439 433PKCS7_SIGN_ENVELOPE_free 441 EXIST::FUNCTION:
434PKCS7_SIGNER_INFO_new 440 434PKCS7_SIGN_ENVELOPE_new 442 EXIST::FUNCTION:
435PKCS7_SIGN_ENVELOPE_free 441 435PKCS7_dup 443 EXIST::FUNCTION:
436PKCS7_SIGN_ENVELOPE_new 442 436PKCS7_free 444 EXIST::FUNCTION:
437PKCS7_dup 443 437PKCS7_new 445 EXIST::FUNCTION:
438PKCS7_free 444 438PROXY_ENTRY_add_noproxy 446 NOEXIST::FUNCTION:
439PKCS7_new 445 439PROXY_ENTRY_clear_noproxy 447 NOEXIST::FUNCTION:
440PROXY_ENTRY_add_noproxy 446 440PROXY_ENTRY_free 448 NOEXIST::FUNCTION:
441PROXY_ENTRY_clear_noproxy 447 441PROXY_ENTRY_get_noproxy 449 NOEXIST::FUNCTION:
442PROXY_ENTRY_free 448 442PROXY_ENTRY_new 450 NOEXIST::FUNCTION:
443PROXY_ENTRY_get_noproxy 449 443PROXY_ENTRY_set_server 451 NOEXIST::FUNCTION:
444PROXY_ENTRY_new 450 444PROXY_add_noproxy 452 NOEXIST::FUNCTION:
445PROXY_ENTRY_set_server 451 445PROXY_add_server 453 NOEXIST::FUNCTION:
446PROXY_add_noproxy 452 446PROXY_check_by_host 454 NOEXIST::FUNCTION:
447PROXY_add_server 453 447PROXY_check_url 455 NOEXIST::FUNCTION:
448PROXY_check_by_host 454 448PROXY_clear_noproxy 456 NOEXIST::FUNCTION:
449PROXY_check_url 455 449PROXY_free 457 NOEXIST::FUNCTION:
450PROXY_clear_noproxy 456 450PROXY_get_noproxy 458 NOEXIST::FUNCTION:
451PROXY_free 457 451PROXY_get_proxies 459 NOEXIST::FUNCTION:
452PROXY_get_noproxy 458 452PROXY_get_proxy_entry 460 NOEXIST::FUNCTION:
453PROXY_get_proxies 459 453PROXY_load_conf 461 NOEXIST::FUNCTION:
454PROXY_get_proxy_entry 460 454PROXY_new 462 NOEXIST::FUNCTION:
455PROXY_load_conf 461 455PROXY_print 463 NOEXIST::FUNCTION:
456PROXY_new 462 456RAND_bytes 464 EXIST::FUNCTION:
457PROXY_print 463 457RAND_cleanup 465 EXIST::FUNCTION:
458RAND_bytes 464 458RAND_file_name 466 EXIST::FUNCTION:
459RAND_cleanup 465 459RAND_load_file 467 EXIST::FUNCTION:
460RAND_file_name 466 460RAND_screen 468 EXIST:WIN32:FUNCTION:
461RAND_load_file 467 461RAND_seed 469 EXIST::FUNCTION:
462RAND_screen 468 462RAND_write_file 470 EXIST::FUNCTION:
463RAND_seed 469 463RC2_cbc_encrypt 471 EXIST::FUNCTION:RC2
464RAND_write_file 470 464RC2_cfb64_encrypt 472 EXIST::FUNCTION:RC2
465RC2_cbc_encrypt 471 465RC2_ecb_encrypt 473 EXIST::FUNCTION:RC2
466RC2_cfb64_encrypt 472 466RC2_encrypt 474 EXIST::FUNCTION:RC2
467RC2_ecb_encrypt 473 467RC2_ofb64_encrypt 475 EXIST::FUNCTION:RC2
468RC2_encrypt 474 468RC2_set_key 476 EXIST::FUNCTION:RC2
469RC2_ofb64_encrypt 475 469RC4 477 EXIST::FUNCTION:RC4
470RC2_set_key 476 470RC4_options 478 EXIST::FUNCTION:RC4
471RC4 477 471RC4_set_key 479 EXIST::FUNCTION:RC4
472RC4_options 478 472RSAPrivateKey_asn1_meth 480 EXIST::FUNCTION:RSA
473RC4_set_key 479 473RSAPrivateKey_dup 481 EXIST::FUNCTION:RSA
474RSAPrivateKey_asn1_meth 480 474RSAPublicKey_dup 482 EXIST::FUNCTION:RSA
475RSAPrivateKey_dup 481 475RSA_PKCS1_SSLeay 483 EXIST::FUNCTION:RSA
476RSAPublicKey_dup 482 476RSA_free 484 EXIST::FUNCTION:RSA
477RSA_PKCS1_SSLeay 483 477RSA_generate_key 485 EXIST::FUNCTION:RSA
478RSA_free 484 478RSA_new 486 EXIST::FUNCTION:RSA
479RSA_generate_key 485 479RSA_new_method 487 EXIST::FUNCTION:RSA
480RSA_new 486 480RSA_print 488 EXIST::FUNCTION:BIO,RSA
481RSA_new_method 487 481RSA_print_fp 489 EXIST::FUNCTION:FP_API,RSA
482RSA_print 488 482RSA_private_decrypt 490 EXIST::FUNCTION:RSA
483RSA_print_fp 489 483RSA_private_encrypt 491 EXIST::FUNCTION:RSA
484RSA_private_decrypt 490 484RSA_public_decrypt 492 EXIST::FUNCTION:RSA
485RSA_private_encrypt 491 485RSA_public_encrypt 493 EXIST::FUNCTION:RSA
486RSA_public_decrypt 492 486RSA_set_default_method 494 EXIST::FUNCTION:RSA
487RSA_public_encrypt 493 487RSA_sign 495 EXIST::FUNCTION:RSA
488RSA_set_default_method 494 488RSA_sign_ASN1_OCTET_STRING 496 EXIST::FUNCTION:RSA
489RSA_sign 495 489RSA_size 497 EXIST::FUNCTION:RSA
490RSA_sign_ASN1_OCTET_STRING 496 490RSA_verify 498 EXIST::FUNCTION:RSA
491RSA_size 497 491RSA_verify_ASN1_OCTET_STRING 499 EXIST::FUNCTION:RSA
492RSA_verify 498 492SHA 500 EXIST::FUNCTION:SHA,SHA0
493RSA_verify_ASN1_OCTET_STRING 499 493SHA1 501 EXIST::FUNCTION:SHA,SHA1
494SHA 500 494SHA1_Final 502 EXIST::FUNCTION:SHA,SHA1
495SHA1 501 495SHA1_Init 503 EXIST::FUNCTION:SHA,SHA1
496SHA1_Final 502 496SHA1_Update 504 EXIST::FUNCTION:SHA,SHA1
497SHA1_Init 503 497SHA_Final 505 EXIST::FUNCTION:SHA,SHA0
498SHA1_Update 504 498SHA_Init 506 EXIST::FUNCTION:SHA,SHA0
499SHA_Final 505 499SHA_Update 507 EXIST::FUNCTION:SHA,SHA0
500SHA_Init 506 500OpenSSL_add_all_algorithms 508 NOEXIST::FUNCTION:
501SHA_Update 507 501OpenSSL_add_all_ciphers 509 EXIST::FUNCTION:
502SSLeay_add_all_algorithms 508 502OpenSSL_add_all_digests 510 EXIST::FUNCTION:
503SSLeay_add_all_ciphers 509 503TXT_DB_create_index 511 EXIST::FUNCTION:
504SSLeay_add_all_digests 510 504TXT_DB_free 512 EXIST::FUNCTION:
505TXT_DB_create_index 511 505TXT_DB_get_by_index 513 EXIST::FUNCTION:
506TXT_DB_free 512 506TXT_DB_insert 514 EXIST::FUNCTION:
507TXT_DB_get_by_index 513 507TXT_DB_read 515 EXIST::FUNCTION:BIO
508TXT_DB_insert 514 508TXT_DB_write 516 EXIST::FUNCTION:BIO
509TXT_DB_read 515 509X509_ALGOR_free 517 EXIST::FUNCTION:
510TXT_DB_write 516 510X509_ALGOR_new 518 EXIST::FUNCTION:
511X509_ALGOR_free 517 511X509_ATTRIBUTE_free 519 EXIST::FUNCTION:
512X509_ALGOR_new 518 512X509_ATTRIBUTE_new 520 EXIST::FUNCTION:
513X509_ATTRIBUTE_free 519 513X509_CINF_free 521 EXIST::FUNCTION:
514X509_ATTRIBUTE_new 520 514X509_CINF_new 522 EXIST::FUNCTION:
515X509_CINF_free 521 515X509_CRL_INFO_free 523 EXIST::FUNCTION:
516X509_CINF_new 522 516X509_CRL_INFO_new 524 EXIST::FUNCTION:
517X509_CRL_INFO_free 523 517X509_CRL_add_ext 525 EXIST::FUNCTION:
518X509_CRL_INFO_new 524 518X509_CRL_cmp 526 EXIST::FUNCTION:
519X509_CRL_add_ext 525 519X509_CRL_delete_ext 527 EXIST::FUNCTION:
520X509_CRL_cmp 526 520X509_CRL_dup 528 EXIST::FUNCTION:
521X509_CRL_delete_ext 527 521X509_CRL_free 529 EXIST::FUNCTION:
522X509_CRL_dup 528 522X509_CRL_get_ext 530 EXIST::FUNCTION:
523X509_CRL_free 529 523X509_CRL_get_ext_by_NID 531 EXIST::FUNCTION:
524X509_CRL_get_ext 530 524X509_CRL_get_ext_by_OBJ 532 EXIST::FUNCTION:
525X509_CRL_get_ext_by_NID 531 525X509_CRL_get_ext_by_critical 533 EXIST::FUNCTION:
526X509_CRL_get_ext_by_OBJ 532 526X509_CRL_get_ext_count 534 EXIST::FUNCTION:
527X509_CRL_get_ext_by_critical 533 527X509_CRL_new 535 EXIST::FUNCTION:
528X509_CRL_get_ext_count 534 528X509_CRL_sign 536 EXIST::FUNCTION:EVP
529X509_CRL_new 535 529X509_CRL_verify 537 EXIST::FUNCTION:EVP
530X509_CRL_sign 536 530X509_EXTENSION_create_by_NID 538 EXIST::FUNCTION:
531X509_CRL_verify 537 531X509_EXTENSION_create_by_OBJ 539 EXIST::FUNCTION:
532X509_EXTENSION_create_by_NID 538 532X509_EXTENSION_dup 540 EXIST::FUNCTION:
533X509_EXTENSION_create_by_OBJ 539 533X509_EXTENSION_free 541 EXIST::FUNCTION:
534X509_EXTENSION_dup 540 534X509_EXTENSION_get_critical 542 EXIST::FUNCTION:
535X509_EXTENSION_free 541 535X509_EXTENSION_get_data 543 EXIST::FUNCTION:
536X509_EXTENSION_get_critical 542 536X509_EXTENSION_get_object 544 EXIST::FUNCTION:
537X509_EXTENSION_get_data 543 537X509_EXTENSION_new 545 EXIST::FUNCTION:
538X509_EXTENSION_get_object 544 538X509_EXTENSION_set_critical 546 EXIST::FUNCTION:
539X509_EXTENSION_new 545 539X509_EXTENSION_set_data 547 EXIST::FUNCTION:
540X509_EXTENSION_set_critical 546 540X509_EXTENSION_set_object 548 EXIST::FUNCTION:
541X509_EXTENSION_set_data 547 541X509_INFO_free 549 EXIST::FUNCTION:EVP
542X509_EXTENSION_set_object 548 542X509_INFO_new 550 EXIST::FUNCTION:EVP
543X509_INFO_free 549 543X509_LOOKUP_by_alias 551 EXIST::FUNCTION:
544X509_INFO_new 550 544X509_LOOKUP_by_fingerprint 552 EXIST::FUNCTION:
545X509_LOOKUP_by_alias 551 545X509_LOOKUP_by_issuer_serial 553 EXIST::FUNCTION:
546X509_LOOKUP_by_fingerprint 552 546X509_LOOKUP_by_subject 554 EXIST::FUNCTION:
547X509_LOOKUP_by_issuer_serial 553 547X509_LOOKUP_ctrl 555 EXIST::FUNCTION:
548X509_LOOKUP_by_subject 554 548X509_LOOKUP_file 556 EXIST::FUNCTION:
549X509_LOOKUP_ctrl 555 549X509_LOOKUP_free 557 EXIST::FUNCTION:
550X509_LOOKUP_file 556 550X509_LOOKUP_hash_dir 558 EXIST::FUNCTION:
551X509_LOOKUP_free 557 551X509_LOOKUP_init 559 EXIST::FUNCTION:
552X509_LOOKUP_hash_dir 558 552X509_LOOKUP_new 560 EXIST::FUNCTION:
553X509_LOOKUP_init 559 553X509_LOOKUP_shutdown 561 EXIST::FUNCTION:
554X509_LOOKUP_new 560 554X509_NAME_ENTRY_create_by_NID 562 EXIST::FUNCTION:
555X509_LOOKUP_shutdown 561 555X509_NAME_ENTRY_create_by_OBJ 563 EXIST::FUNCTION:
556X509_NAME_ENTRY_create_by_NID 562 556X509_NAME_ENTRY_dup 564 EXIST::FUNCTION:
557X509_NAME_ENTRY_create_by_OBJ 563 557X509_NAME_ENTRY_free 565 EXIST::FUNCTION:
558X509_NAME_ENTRY_dup 564 558X509_NAME_ENTRY_get_data 566 EXIST::FUNCTION:
559X509_NAME_ENTRY_free 565 559X509_NAME_ENTRY_get_object 567 EXIST::FUNCTION:
560X509_NAME_ENTRY_get_data 566 560X509_NAME_ENTRY_new 568 EXIST::FUNCTION:
561X509_NAME_ENTRY_get_object 567 561X509_NAME_ENTRY_set_data 569 EXIST::FUNCTION:
562X509_NAME_ENTRY_new 568 562X509_NAME_ENTRY_set_object 570 EXIST::FUNCTION:
563X509_NAME_ENTRY_set_data 569 563X509_NAME_add_entry 571 EXIST::FUNCTION:
564X509_NAME_ENTRY_set_object 570 564X509_NAME_cmp 572 EXIST::FUNCTION:
565X509_NAME_add_entry 571 565X509_NAME_delete_entry 573 EXIST::FUNCTION:
566X509_NAME_cmp 572 566X509_NAME_digest 574 EXIST::FUNCTION:EVP
567X509_NAME_delete_entry 573 567X509_NAME_dup 575 EXIST::FUNCTION:
568X509_NAME_digest 574 568X509_NAME_entry_count 576 EXIST::FUNCTION:
569X509_NAME_dup 575 569X509_NAME_free 577 EXIST::FUNCTION:
570X509_NAME_entry_count 576 570X509_NAME_get_entry 578 EXIST::FUNCTION:
571X509_NAME_free 577 571X509_NAME_get_index_by_NID 579 EXIST::FUNCTION:
572X509_NAME_get_entry 578 572X509_NAME_get_index_by_OBJ 580 EXIST::FUNCTION:
573X509_NAME_get_index_by_NID 579 573X509_NAME_get_text_by_NID 581 EXIST::FUNCTION:
574X509_NAME_get_index_by_OBJ 580 574X509_NAME_get_text_by_OBJ 582 EXIST::FUNCTION:
575X509_NAME_get_text_by_NID 581 575X509_NAME_hash 583 EXIST::FUNCTION:
576X509_NAME_get_text_by_OBJ 582 576X509_NAME_new 584 EXIST::FUNCTION:
577X509_NAME_hash 583 577X509_NAME_oneline 585 EXIST::FUNCTION:EVP
578X509_NAME_new 584 578X509_NAME_print 586 EXIST::FUNCTION:BIO
579X509_NAME_oneline 585 579X509_NAME_set 587 EXIST::FUNCTION:
580X509_NAME_print 586 580X509_OBJECT_free_contents 588 EXIST::FUNCTION:
581X509_NAME_set 587 581X509_OBJECT_retrieve_by_subject 589 EXIST::FUNCTION:
582X509_OBJECT_free_contents 588 582X509_OBJECT_up_ref_count 590 EXIST::FUNCTION:
583X509_OBJECT_retrive_by_subject 589 583X509_PKEY_free 591 EXIST::FUNCTION:
584X509_OBJECT_up_ref_count 590 584X509_PKEY_new 592 EXIST::FUNCTION:
585X509_PKEY_free 591 585X509_PUBKEY_free 593 EXIST::FUNCTION:
586X509_PKEY_new 592 586X509_PUBKEY_get 594 EXIST::FUNCTION:
587X509_PUBKEY_free 593 587X509_PUBKEY_new 595 EXIST::FUNCTION:
588X509_PUBKEY_get 594 588X509_PUBKEY_set 596 EXIST::FUNCTION:
589X509_PUBKEY_new 595 589X509_REQ_INFO_free 597 EXIST::FUNCTION:
590X509_PUBKEY_set 596 590X509_REQ_INFO_new 598 EXIST::FUNCTION:
591X509_REQ_INFO_free 597 591X509_REQ_dup 599 EXIST::FUNCTION:
592X509_REQ_INFO_new 598 592X509_REQ_free 600 EXIST::FUNCTION:
593X509_REQ_dup 599 593X509_REQ_get_pubkey 601 EXIST::FUNCTION:
594X509_REQ_free 600 594X509_REQ_new 602 EXIST::FUNCTION:
595X509_REQ_get_pubkey 601 595X509_REQ_print 603 EXIST::FUNCTION:BIO
596X509_REQ_new 602 596X509_REQ_print_fp 604 EXIST::FUNCTION:FP_API
597X509_REQ_print 603 597X509_REQ_set_pubkey 605 EXIST::FUNCTION:
598X509_REQ_print_fp 604 598X509_REQ_set_subject_name 606 EXIST::FUNCTION:
599X509_REQ_set_pubkey 605 599X509_REQ_set_version 607 EXIST::FUNCTION:
600X509_REQ_set_subject_name 606 600X509_REQ_sign 608 EXIST::FUNCTION:EVP
601X509_REQ_set_version 607 601X509_REQ_to_X509 609 EXIST::FUNCTION:
602X509_REQ_sign 608 602X509_REQ_verify 610 EXIST::FUNCTION:EVP
603X509_REQ_to_X509 609 603X509_REVOKED_add_ext 611 EXIST::FUNCTION:
604X509_REQ_verify 610 604X509_REVOKED_delete_ext 612 EXIST::FUNCTION:
605X509_REVOKED_add_ext 611 605X509_REVOKED_free 613 EXIST::FUNCTION:
606X509_REVOKED_delete_ext 612 606X509_REVOKED_get_ext 614 EXIST::FUNCTION:
607X509_REVOKED_free 613 607X509_REVOKED_get_ext_by_NID 615 EXIST::FUNCTION:
608X509_REVOKED_get_ext 614 608X509_REVOKED_get_ext_by_OBJ 616 EXIST::FUNCTION:
609X509_REVOKED_get_ext_by_NID 615 609X509_REVOKED_get_ext_by_critical 617 EXIST:!VMS:FUNCTION:
610X509_REVOKED_get_ext_by_OBJ 616 610X509_REVOKED_get_ext_by_critic 617 EXIST:VMS:FUNCTION:
611X509_REVOKED_get_ext_by_critical 617 611X509_REVOKED_get_ext_count 618 EXIST::FUNCTION:
612X509_REVOKED_get_ext_count 618 612X509_REVOKED_new 619 EXIST::FUNCTION:
613X509_REVOKED_new 619 613X509_SIG_free 620 EXIST::FUNCTION:
614X509_SIG_free 620 614X509_SIG_new 621 EXIST::FUNCTION:
615X509_SIG_new 621 615X509_STORE_CTX_cleanup 622 EXIST::FUNCTION:
616X509_STORE_CTX_cleanup 622 616X509_STORE_CTX_init 623 EXIST::FUNCTION:
617X509_STORE_CTX_init 623 617X509_STORE_add_cert 624 EXIST::FUNCTION:
618X509_STORE_add_cert 624 618X509_STORE_add_lookup 625 EXIST::FUNCTION:
619X509_STORE_add_lookup 625 619X509_STORE_free 626 EXIST::FUNCTION:
620X509_STORE_free 626 620X509_STORE_get_by_subject 627 EXIST::FUNCTION:
621X509_STORE_get_by_subject 627 621X509_STORE_load_locations 628 EXIST::FUNCTION:STDIO
622X509_STORE_load_locations 628 622X509_STORE_new 629 EXIST::FUNCTION:
623X509_STORE_new 629 623X509_STORE_set_default_paths 630 EXIST::FUNCTION:STDIO
624X509_STORE_set_default_paths 630 624X509_VAL_free 631 EXIST::FUNCTION:
625X509_VAL_free 631 625X509_VAL_new 632 EXIST::FUNCTION:
626X509_VAL_new 632 626X509_add_ext 633 EXIST::FUNCTION:
627X509_add_ext 633 627X509_asn1_meth 634 EXIST::FUNCTION:
628X509_asn1_meth 634 628X509_certificate_type 635 EXIST::FUNCTION:
629X509_certificate_type 635 629X509_check_private_key 636 EXIST::FUNCTION:
630X509_check_private_key 636 630X509_cmp_current_time 637 EXIST::FUNCTION:
631X509_cmp_current_time 637 631X509_delete_ext 638 EXIST::FUNCTION:
632X509_delete_ext 638 632X509_digest 639 EXIST::FUNCTION:EVP
633X509_digest 639 633X509_dup 640 EXIST::FUNCTION:
634X509_dup 640 634X509_free 641 EXIST::FUNCTION:
635X509_free 641 635X509_get_default_cert_area 642 EXIST::FUNCTION:
636X509_get_default_cert_area 642 636X509_get_default_cert_dir 643 EXIST::FUNCTION:
637X509_get_default_cert_dir 643 637X509_get_default_cert_dir_env 644 EXIST::FUNCTION:
638X509_get_default_cert_dir_env 644 638X509_get_default_cert_file 645 EXIST::FUNCTION:
639X509_get_default_cert_file 645 639X509_get_default_cert_file_env 646 EXIST::FUNCTION:
640X509_get_default_cert_file_env 646 640X509_get_default_private_dir 647 EXIST::FUNCTION:
641X509_get_default_private_dir 647 641X509_get_ext 648 EXIST::FUNCTION:
642X509_get_ext 648 642X509_get_ext_by_NID 649 EXIST::FUNCTION:
643X509_get_ext_by_NID 649 643X509_get_ext_by_OBJ 650 EXIST::FUNCTION:
644X509_get_ext_by_OBJ 650 644X509_get_ext_by_critical 651 EXIST::FUNCTION:
645X509_get_ext_by_critical 651 645X509_get_ext_count 652 EXIST::FUNCTION:
646X509_get_ext_count 652 646X509_get_issuer_name 653 EXIST::FUNCTION:
647X509_get_issuer_name 653 647X509_get_pubkey 654 EXIST::FUNCTION:
648X509_get_pubkey 654 648X509_get_pubkey_parameters 655 EXIST::FUNCTION:
649X509_get_pubkey_parameters 655 649X509_get_serialNumber 656 EXIST::FUNCTION:
650X509_get_serialNumber 656 650X509_get_subject_name 657 EXIST::FUNCTION:
651X509_get_subject_name 657 651X509_gmtime_adj 658 EXIST::FUNCTION:
652X509_gmtime_adj 658 652X509_issuer_and_serial_cmp 659 EXIST::FUNCTION:
653X509_issuer_and_serial_cmp 659 653X509_issuer_and_serial_hash 660 EXIST::FUNCTION:
654X509_issuer_and_serial_hash 660 654X509_issuer_name_cmp 661 EXIST::FUNCTION:
655X509_issuer_name_cmp 661 655X509_issuer_name_hash 662 EXIST::FUNCTION:
656X509_issuer_name_hash 662 656X509_load_cert_file 663 EXIST::FUNCTION:STDIO
657X509_load_cert_file 663 657X509_new 664 EXIST::FUNCTION:
658X509_new 664 658X509_print 665 EXIST::FUNCTION:BIO
659X509_print 665 659X509_print_fp 666 EXIST::FUNCTION:FP_API
660X509_print_fp 666 660X509_set_issuer_name 667 EXIST::FUNCTION:
661X509_set_issuer_name 667 661X509_set_notAfter 668 EXIST::FUNCTION:
662X509_set_notAfter 668 662X509_set_notBefore 669 EXIST::FUNCTION:
663X509_set_notBefore 669 663X509_set_pubkey 670 EXIST::FUNCTION:
664X509_set_pubkey 670 664X509_set_serialNumber 671 EXIST::FUNCTION:
665X509_set_serialNumber 671 665X509_set_subject_name 672 EXIST::FUNCTION:
666X509_set_subject_name 672 666X509_set_version 673 EXIST::FUNCTION:
667X509_set_version 673 667X509_sign 674 EXIST::FUNCTION:EVP
668X509_sign 674 668X509_subject_name_cmp 675 EXIST::FUNCTION:
669X509_subject_name_cmp 675 669X509_subject_name_hash 676 EXIST::FUNCTION:
670X509_subject_name_hash 676 670X509_to_X509_REQ 677 EXIST::FUNCTION:
671X509_to_X509_REQ 677 671X509_verify 678 EXIST::FUNCTION:EVP
672X509_verify 678 672X509_verify_cert 679 EXIST::FUNCTION:
673X509_verify_cert 679 673X509_verify_cert_error_string 680 EXIST::FUNCTION:
674X509_verify_cert_error_string 680 674X509v3_add_ext 681 EXIST::FUNCTION:
675X509v3_add_ext 681 675X509v3_add_extension 682 NOEXIST::FUNCTION:
676X509v3_add_extension 682 676X509v3_add_netscape_extensions 683 NOEXIST::FUNCTION:
677X509v3_add_netscape_extensions 683 677X509v3_add_standard_extensions 684 NOEXIST::FUNCTION:
678X509v3_add_standard_extensions 684 678X509v3_cleanup_extensions 685 NOEXIST::FUNCTION:
679X509v3_cleanup_extensions 685 679X509v3_data_type_by_NID 686 NOEXIST::FUNCTION:
680X509v3_data_type_by_NID 686 680X509v3_data_type_by_OBJ 687 NOEXIST::FUNCTION:
681X509v3_data_type_by_OBJ 687 681X509v3_delete_ext 688 EXIST::FUNCTION:
682X509v3_delete_ext 688 682X509v3_get_ext 689 EXIST::FUNCTION:
683X509v3_get_ext 689 683X509v3_get_ext_by_NID 690 EXIST::FUNCTION:
684X509v3_get_ext_by_NID 690 684X509v3_get_ext_by_OBJ 691 EXIST::FUNCTION:
685X509v3_get_ext_by_OBJ 691 685X509v3_get_ext_by_critical 692 EXIST::FUNCTION:
686X509v3_get_ext_by_critical 692 686X509v3_get_ext_count 693 EXIST::FUNCTION:
687X509v3_get_ext_count 693 687X509v3_pack_string 694 NOEXIST::FUNCTION:
688X509v3_pack_string 694 688X509v3_pack_type_by_NID 695 NOEXIST::FUNCTION:
689X509v3_pack_type_by_NID 695 689X509v3_pack_type_by_OBJ 696 NOEXIST::FUNCTION:
690X509v3_pack_type_by_OBJ 696 690X509v3_unpack_string 697 NOEXIST::FUNCTION:
691X509v3_unpack_string 697 691_des_crypt 698 NOEXIST::FUNCTION:
692_des_crypt 698 692a2d_ASN1_OBJECT 699 EXIST::FUNCTION:
693a2d_ASN1_OBJECT 699 693a2i_ASN1_INTEGER 700 EXIST::FUNCTION:BIO
694a2i_ASN1_INTEGER 700 694a2i_ASN1_STRING 701 EXIST::FUNCTION:BIO
695a2i_ASN1_STRING 701 695asn1_Finish 702 EXIST::FUNCTION:
696asn1_Finish 702 696asn1_GetSequence 703 EXIST::FUNCTION:
697asn1_GetSequence 703 697bn_div_words 704 EXIST::FUNCTION:
698bn_div64 704 698bn_expand2 705 EXIST::FUNCTION:
699bn_expand2 705 699bn_mul_add_words 706 EXIST::FUNCTION:
700bn_mul_add_words 706 700bn_mul_words 707 EXIST::FUNCTION:
701bn_mul_words 707 701BN_uadd 708 EXIST::FUNCTION:
702bn_qadd 708 702BN_usub 709 EXIST::FUNCTION:
703bn_qsub 709 703bn_sqr_words 710 EXIST::FUNCTION:
704bn_sqr_words 710 704_ossl_old_crypt 711 EXIST:!NeXT,!PERL5,!__FreeBSD__:FUNCTION:DES
705crypt 711 705d2i_ASN1_BIT_STRING 712 EXIST::FUNCTION:
706d2i_ASN1_BIT_STRING 712 706d2i_ASN1_BOOLEAN 713 EXIST::FUNCTION:
707d2i_ASN1_BOOLEAN 713 707d2i_ASN1_HEADER 714 EXIST::FUNCTION:
708d2i_ASN1_HEADER 714 708d2i_ASN1_IA5STRING 715 EXIST::FUNCTION:
709d2i_ASN1_IA5STRING 715 709d2i_ASN1_INTEGER 716 EXIST::FUNCTION:
710d2i_ASN1_INTEGER 716 710d2i_ASN1_OBJECT 717 EXIST::FUNCTION:
711d2i_ASN1_OBJECT 717 711d2i_ASN1_OCTET_STRING 718 EXIST::FUNCTION:
712d2i_ASN1_OCTET_STRING 718 712d2i_ASN1_PRINTABLE 719 EXIST::FUNCTION:
713d2i_ASN1_PRINTABLE 719 713d2i_ASN1_PRINTABLESTRING 720 EXIST::FUNCTION:
714d2i_ASN1_PRINTABLESTRING 720 714d2i_ASN1_SET 721 EXIST::FUNCTION:
715d2i_ASN1_SET 721 715d2i_ASN1_T61STRING 722 EXIST::FUNCTION:
716d2i_ASN1_T61STRING 722 716d2i_ASN1_TYPE 723 EXIST::FUNCTION:
717d2i_ASN1_TYPE 723 717d2i_ASN1_UTCTIME 724 EXIST::FUNCTION:
718d2i_ASN1_UTCTIME 724 718d2i_ASN1_bytes 725 EXIST::FUNCTION:
719d2i_ASN1_bytes 725 719d2i_ASN1_type_bytes 726 EXIST::FUNCTION:
720d2i_ASN1_type_bytes 726 720d2i_DHparams 727 EXIST::FUNCTION:DH
721d2i_DHparams 727 721d2i_DSAPrivateKey 728 EXIST::FUNCTION:DSA
722d2i_DSAPrivateKey 728 722d2i_DSAPrivateKey_bio 729 EXIST::FUNCTION:BIO,DSA
723d2i_DSAPrivateKey_bio 729 723d2i_DSAPrivateKey_fp 730 EXIST::FUNCTION:DSA,FP_API
724d2i_DSAPrivateKey_fp 730 724d2i_DSAPublicKey 731 EXIST::FUNCTION:DSA
725d2i_DSAPublicKey 731 725d2i_DSAparams 732 EXIST::FUNCTION:DSA
726d2i_DSAparams 732 726d2i_NETSCAPE_SPKAC 733 EXIST::FUNCTION:
727d2i_NETSCAPE_SPKAC 733 727d2i_NETSCAPE_SPKI 734 EXIST::FUNCTION:
728d2i_NETSCAPE_SPKI 734 728d2i_Netscape_RSA 735 EXIST::FUNCTION:RSA
729d2i_Netscape_RSA 735 729d2i_PKCS7 736 EXIST::FUNCTION:
730d2i_PKCS7 736 730d2i_PKCS7_DIGEST 737 EXIST::FUNCTION:
731d2i_PKCS7_DIGEST 737 731d2i_PKCS7_ENCRYPT 738 EXIST::FUNCTION:
732d2i_PKCS7_ENCRYPT 738 732d2i_PKCS7_ENC_CONTENT 739 EXIST::FUNCTION:
733d2i_PKCS7_ENC_CONTENT 739 733d2i_PKCS7_ENVELOPE 740 EXIST::FUNCTION:
734d2i_PKCS7_ENVELOPE 740 734d2i_PKCS7_ISSUER_AND_SERIAL 741 EXIST::FUNCTION:
735d2i_PKCS7_ISSUER_AND_SERIAL 741 735d2i_PKCS7_RECIP_INFO 742 EXIST::FUNCTION:
736d2i_PKCS7_RECIP_INFO 742 736d2i_PKCS7_SIGNED 743 EXIST::FUNCTION:
737d2i_PKCS7_SIGNED 743 737d2i_PKCS7_SIGNER_INFO 744 EXIST::FUNCTION:
738d2i_PKCS7_SIGNER_INFO 744 738d2i_PKCS7_SIGN_ENVELOPE 745 EXIST::FUNCTION:
739d2i_PKCS7_SIGN_ENVELOPE 745 739d2i_PKCS7_bio 746 EXIST::FUNCTION:
740d2i_PKCS7_bio 746 740d2i_PKCS7_fp 747 EXIST::FUNCTION:FP_API
741d2i_PKCS7_fp 747 741d2i_PrivateKey 748 EXIST::FUNCTION:
742d2i_PrivateKey 748 742d2i_PublicKey 749 EXIST::FUNCTION:
743d2i_PublicKey 749 743d2i_RSAPrivateKey 750 EXIST::FUNCTION:RSA
744d2i_RSAPrivateKey 750 744d2i_RSAPrivateKey_bio 751 EXIST::FUNCTION:BIO,RSA
745d2i_RSAPrivateKey_bio 751 745d2i_RSAPrivateKey_fp 752 EXIST::FUNCTION:FP_API,RSA
746d2i_RSAPrivateKey_fp 752 746d2i_RSAPublicKey 753 EXIST::FUNCTION:RSA
747d2i_RSAPublicKey 753 747d2i_X509 754 EXIST::FUNCTION:
748d2i_X509 754 748d2i_X509_ALGOR 755 EXIST::FUNCTION:
749d2i_X509_ALGOR 755 749d2i_X509_ATTRIBUTE 756 EXIST::FUNCTION:
750d2i_X509_ATTRIBUTE 756 750d2i_X509_CINF 757 EXIST::FUNCTION:
751d2i_X509_CINF 757 751d2i_X509_CRL 758 EXIST::FUNCTION:
752d2i_X509_CRL 758 752d2i_X509_CRL_INFO 759 EXIST::FUNCTION:
753d2i_X509_CRL_INFO 759 753d2i_X509_CRL_bio 760 EXIST::FUNCTION:BIO
754d2i_X509_CRL_bio 760 754d2i_X509_CRL_fp 761 EXIST::FUNCTION:FP_API
755d2i_X509_CRL_fp 761 755d2i_X509_EXTENSION 762 EXIST::FUNCTION:
756d2i_X509_EXTENSION 762 756d2i_X509_NAME 763 EXIST::FUNCTION:
757d2i_X509_NAME 763 757d2i_X509_NAME_ENTRY 764 EXIST::FUNCTION:
758d2i_X509_NAME_ENTRY 764 758d2i_X509_PKEY 765 EXIST::FUNCTION:
759d2i_X509_PKEY 765 759d2i_X509_PUBKEY 766 EXIST::FUNCTION:
760d2i_X509_PUBKEY 766 760d2i_X509_REQ 767 EXIST::FUNCTION:
761d2i_X509_REQ 767 761d2i_X509_REQ_INFO 768 EXIST::FUNCTION:
762d2i_X509_REQ_INFO 768 762d2i_X509_REQ_bio 769 EXIST::FUNCTION:BIO
763d2i_X509_REQ_bio 769 763d2i_X509_REQ_fp 770 EXIST::FUNCTION:FP_API
764d2i_X509_REQ_fp 770 764d2i_X509_REVOKED 771 EXIST::FUNCTION:
765d2i_X509_REVOKED 771 765d2i_X509_SIG 772 EXIST::FUNCTION:
766d2i_X509_SIG 772 766d2i_X509_VAL 773 EXIST::FUNCTION:
767d2i_X509_VAL 773 767d2i_X509_bio 774 EXIST::FUNCTION:BIO
768d2i_X509_bio 774 768d2i_X509_fp 775 EXIST::FUNCTION:FP_API
769d2i_X509_fp 775 769DES_cbc_cksum 777 EXIST::FUNCTION:DES
770des_cbc_cksum 777 770DES_cbc_encrypt 778 EXIST::FUNCTION:DES
771des_cbc_encrypt 778 771DES_cblock_print_file 779 NOEXIST::FUNCTION:
772des_cblock_print_file 779 772DES_cfb64_encrypt 780 EXIST::FUNCTION:DES
773des_cfb64_encrypt 780 773DES_cfb_encrypt 781 EXIST::FUNCTION:DES
774des_cfb_encrypt 781 774DES_decrypt3 782 EXIST::FUNCTION:DES
775des_decrypt3 782 775DES_ecb3_encrypt 783 EXIST::FUNCTION:DES
776des_ecb3_encrypt 783 776DES_ecb_encrypt 784 EXIST::FUNCTION:DES
777des_ecb_encrypt 784 777DES_ede3_cbc_encrypt 785 EXIST::FUNCTION:DES
778des_ede3_cbc_encrypt 785 778DES_ede3_cfb64_encrypt 786 EXIST::FUNCTION:DES
779des_ede3_cfb64_encrypt 786 779DES_ede3_ofb64_encrypt 787 EXIST::FUNCTION:DES
780des_ede3_ofb64_encrypt 787 780DES_enc_read 788 EXIST::FUNCTION:DES
781des_enc_read 788 781DES_enc_write 789 EXIST::FUNCTION:DES
782des_enc_write 789 782DES_encrypt1 790 EXIST::FUNCTION:DES
783des_encrypt 790 783DES_encrypt2 791 EXIST::FUNCTION:DES
784des_encrypt2 791 784DES_encrypt3 792 EXIST::FUNCTION:DES
785des_encrypt3 792 785DES_fcrypt 793 EXIST::FUNCTION:DES
786des_fcrypt 793 786DES_is_weak_key 794 EXIST::FUNCTION:DES
787des_is_weak_key 794 787DES_key_sched 795 EXIST::FUNCTION:DES
788des_key_sched 795 788DES_ncbc_encrypt 796 EXIST::FUNCTION:DES
789des_ncbc_encrypt 796 789DES_ofb64_encrypt 797 EXIST::FUNCTION:DES
790des_ofb64_encrypt 797 790DES_ofb_encrypt 798 EXIST::FUNCTION:DES
791des_ofb_encrypt 798 791DES_options 799 EXIST::FUNCTION:DES
792des_options 799 792DES_pcbc_encrypt 800 EXIST::FUNCTION:DES
793des_pcbc_encrypt 800 793DES_quad_cksum 801 EXIST::FUNCTION:DES
794des_quad_cksum 801 794DES_random_key 802 EXIST::FUNCTION:DES
795des_random_key 802 795_ossl_old_des_random_seed 803 EXIST::FUNCTION:DES
796des_random_seed 803 796_ossl_old_des_read_2passwords 804 EXIST::FUNCTION:DES
797des_read_2passwords 804 797_ossl_old_des_read_password 805 EXIST::FUNCTION:DES
798des_read_password 805 798_ossl_old_des_read_pw 806 EXIST::FUNCTION:
799des_read_pw 806 799_ossl_old_des_read_pw_string 807 EXIST::FUNCTION:
800des_read_pw_string 807 800DES_set_key 808 EXIST::FUNCTION:DES
801des_set_key 808 801DES_set_odd_parity 809 EXIST::FUNCTION:DES
802des_set_odd_parity 809 802DES_string_to_2keys 810 EXIST::FUNCTION:DES
803des_string_to_2keys 810 803DES_string_to_key 811 EXIST::FUNCTION:DES
804des_string_to_key 811 804DES_xcbc_encrypt 812 EXIST::FUNCTION:DES
805des_xcbc_encrypt 812 805DES_xwhite_in2out 813 EXIST::FUNCTION:DES
806des_xwhite_in2out 813 806fcrypt_body 814 NOEXIST::FUNCTION:
807fcrypt_body 814 807i2a_ASN1_INTEGER 815 EXIST::FUNCTION:BIO
808i2a_ASN1_INTEGER 815 808i2a_ASN1_OBJECT 816 EXIST::FUNCTION:BIO
809i2a_ASN1_OBJECT 816 809i2a_ASN1_STRING 817 EXIST::FUNCTION:BIO
810i2a_ASN1_STRING 817 810i2d_ASN1_BIT_STRING 818 EXIST::FUNCTION:
811i2d_ASN1_BIT_STRING 818 811i2d_ASN1_BOOLEAN 819 EXIST::FUNCTION:
812i2d_ASN1_BOOLEAN 819 812i2d_ASN1_HEADER 820 EXIST::FUNCTION:
813i2d_ASN1_HEADER 820 813i2d_ASN1_IA5STRING 821 EXIST::FUNCTION:
814i2d_ASN1_IA5STRING 821 814i2d_ASN1_INTEGER 822 EXIST::FUNCTION:
815i2d_ASN1_INTEGER 822 815i2d_ASN1_OBJECT 823 EXIST::FUNCTION:
816i2d_ASN1_OBJECT 823 816i2d_ASN1_OCTET_STRING 824 EXIST::FUNCTION:
817i2d_ASN1_OCTET_STRING 824 817i2d_ASN1_PRINTABLE 825 EXIST::FUNCTION:
818i2d_ASN1_PRINTABLE 825 818i2d_ASN1_SET 826 EXIST::FUNCTION:
819i2d_ASN1_SET 826 819i2d_ASN1_TYPE 827 EXIST::FUNCTION:
820i2d_ASN1_TYPE 827 820i2d_ASN1_UTCTIME 828 EXIST::FUNCTION:
821i2d_ASN1_UTCTIME 828 821i2d_ASN1_bytes 829 EXIST::FUNCTION:
822i2d_ASN1_bytes 829 822i2d_DHparams 830 EXIST::FUNCTION:DH
823i2d_DHparams 830 823i2d_DSAPrivateKey 831 EXIST::FUNCTION:DSA
824i2d_DSAPrivateKey 831 824i2d_DSAPrivateKey_bio 832 EXIST::FUNCTION:BIO,DSA
825i2d_DSAPrivateKey_bio 832 825i2d_DSAPrivateKey_fp 833 EXIST::FUNCTION:DSA,FP_API
826i2d_DSAPrivateKey_fp 833 826i2d_DSAPublicKey 834 EXIST::FUNCTION:DSA
827i2d_DSAPublicKey 834 827i2d_DSAparams 835 EXIST::FUNCTION:DSA
828i2d_DSAparams 835 828i2d_NETSCAPE_SPKAC 836 EXIST::FUNCTION:
829i2d_NETSCAPE_SPKAC 836 829i2d_NETSCAPE_SPKI 837 EXIST::FUNCTION:
830i2d_NETSCAPE_SPKI 837 830i2d_Netscape_RSA 838 EXIST::FUNCTION:RSA
831i2d_Netscape_RSA 838 831i2d_PKCS7 839 EXIST::FUNCTION:
832i2d_PKCS7 839 832i2d_PKCS7_DIGEST 840 EXIST::FUNCTION:
833i2d_PKCS7_DIGEST 840 833i2d_PKCS7_ENCRYPT 841 EXIST::FUNCTION:
834i2d_PKCS7_ENCRYPT 841 834i2d_PKCS7_ENC_CONTENT 842 EXIST::FUNCTION:
835i2d_PKCS7_ENC_CONTENT 842 835i2d_PKCS7_ENVELOPE 843 EXIST::FUNCTION:
836i2d_PKCS7_ENVELOPE 843 836i2d_PKCS7_ISSUER_AND_SERIAL 844 EXIST::FUNCTION:
837i2d_PKCS7_ISSUER_AND_SERIAL 844 837i2d_PKCS7_RECIP_INFO 845 EXIST::FUNCTION:
838i2d_PKCS7_RECIP_INFO 845 838i2d_PKCS7_SIGNED 846 EXIST::FUNCTION:
839i2d_PKCS7_SIGNED 846 839i2d_PKCS7_SIGNER_INFO 847 EXIST::FUNCTION:
840i2d_PKCS7_SIGNER_INFO 847 840i2d_PKCS7_SIGN_ENVELOPE 848 EXIST::FUNCTION:
841i2d_PKCS7_SIGN_ENVELOPE 848 841i2d_PKCS7_bio 849 EXIST::FUNCTION:
842i2d_PKCS7_bio 849 842i2d_PKCS7_fp 850 EXIST::FUNCTION:FP_API
843i2d_PKCS7_fp 850 843i2d_PrivateKey 851 EXIST::FUNCTION:
844i2d_PrivateKey 851 844i2d_PublicKey 852 EXIST::FUNCTION:
845i2d_PublicKey 852 845i2d_RSAPrivateKey 853 EXIST::FUNCTION:RSA
846i2d_RSAPrivateKey 853 846i2d_RSAPrivateKey_bio 854 EXIST::FUNCTION:BIO,RSA
847i2d_RSAPrivateKey_bio 854 847i2d_RSAPrivateKey_fp 855 EXIST::FUNCTION:FP_API,RSA
848i2d_RSAPrivateKey_fp 855 848i2d_RSAPublicKey 856 EXIST::FUNCTION:RSA
849i2d_RSAPublicKey 856 849i2d_X509 857 EXIST::FUNCTION:
850i2d_X509 857 850i2d_X509_ALGOR 858 EXIST::FUNCTION:
851i2d_X509_ALGOR 858 851i2d_X509_ATTRIBUTE 859 EXIST::FUNCTION:
852i2d_X509_ATTRIBUTE 859 852i2d_X509_CINF 860 EXIST::FUNCTION:
853i2d_X509_CINF 860 853i2d_X509_CRL 861 EXIST::FUNCTION:
854i2d_X509_CRL 861 854i2d_X509_CRL_INFO 862 EXIST::FUNCTION:
855i2d_X509_CRL_INFO 862 855i2d_X509_CRL_bio 863 EXIST::FUNCTION:BIO
856i2d_X509_CRL_bio 863 856i2d_X509_CRL_fp 864 EXIST::FUNCTION:FP_API
857i2d_X509_CRL_fp 864 857i2d_X509_EXTENSION 865 EXIST::FUNCTION:
858i2d_X509_EXTENSION 865 858i2d_X509_NAME 866 EXIST::FUNCTION:
859i2d_X509_NAME 866 859i2d_X509_NAME_ENTRY 867 EXIST::FUNCTION:
860i2d_X509_NAME_ENTRY 867 860i2d_X509_PKEY 868 EXIST::FUNCTION:
861i2d_X509_PKEY 868 861i2d_X509_PUBKEY 869 EXIST::FUNCTION:
862i2d_X509_PUBKEY 869 862i2d_X509_REQ 870 EXIST::FUNCTION:
863i2d_X509_REQ 870 863i2d_X509_REQ_INFO 871 EXIST::FUNCTION:
864i2d_X509_REQ_INFO 871 864i2d_X509_REQ_bio 872 EXIST::FUNCTION:BIO
865i2d_X509_REQ_bio 872 865i2d_X509_REQ_fp 873 EXIST::FUNCTION:FP_API
866i2d_X509_REQ_fp 873 866i2d_X509_REVOKED 874 EXIST::FUNCTION:
867i2d_X509_REVOKED 874 867i2d_X509_SIG 875 EXIST::FUNCTION:
868i2d_X509_SIG 875 868i2d_X509_VAL 876 EXIST::FUNCTION:
869i2d_X509_VAL 876 869i2d_X509_bio 877 EXIST::FUNCTION:BIO
870i2d_X509_bio 877 870i2d_X509_fp 878 EXIST::FUNCTION:FP_API
871i2d_X509_fp 878 871idea_cbc_encrypt 879 EXIST::FUNCTION:IDEA
872idea_cbc_encrypt 879 872idea_cfb64_encrypt 880 EXIST::FUNCTION:IDEA
873idea_cfb64_encrypt 880 873idea_ecb_encrypt 881 EXIST::FUNCTION:IDEA
874idea_ecb_encrypt 881 874idea_encrypt 882 EXIST::FUNCTION:IDEA
875idea_encrypt 882 875idea_ofb64_encrypt 883 EXIST::FUNCTION:IDEA
876idea_ofb64_encrypt 883 876idea_options 884 EXIST::FUNCTION:IDEA
877idea_options 884 877idea_set_decrypt_key 885 EXIST::FUNCTION:IDEA
878idea_set_decrypt_key 885 878idea_set_encrypt_key 886 EXIST::FUNCTION:IDEA
879idea_set_encrypt_key 886 879lh_delete 887 EXIST::FUNCTION:
880lh_delete 887 880lh_doall 888 EXIST::FUNCTION:
881lh_doall 888 881lh_doall_arg 889 EXIST::FUNCTION:
882lh_doall_arg 889 882lh_free 890 EXIST::FUNCTION:
883lh_free 890 883lh_insert 891 EXIST::FUNCTION:
884lh_insert 891 884lh_new 892 EXIST::FUNCTION:
885lh_new 892 885lh_node_stats 893 EXIST::FUNCTION:FP_API
886lh_node_stats 893 886lh_node_stats_bio 894 EXIST::FUNCTION:BIO
887lh_node_stats_bio 894 887lh_node_usage_stats 895 EXIST::FUNCTION:FP_API
888lh_node_usage_stats 895 888lh_node_usage_stats_bio 896 EXIST::FUNCTION:BIO
889lh_node_usage_stats_bio 896 889lh_retrieve 897 EXIST::FUNCTION:
890lh_retrieve 897 890lh_stats 898 EXIST::FUNCTION:FP_API
891lh_stats 898 891lh_stats_bio 899 EXIST::FUNCTION:BIO
892lh_stats_bio 899 892lh_strhash 900 EXIST::FUNCTION:
893lh_strhash 900 893sk_delete 901 EXIST::FUNCTION:
894sk_delete 901 894sk_delete_ptr 902 EXIST::FUNCTION:
895sk_delete_ptr 902 895sk_dup 903 EXIST::FUNCTION:
896sk_dup 903 896sk_find 904 EXIST::FUNCTION:
897sk_find 904 897sk_free 905 EXIST::FUNCTION:
898sk_free 905 898sk_insert 906 EXIST::FUNCTION:
899sk_insert 906 899sk_new 907 EXIST::FUNCTION:
900sk_new 907 900sk_pop 908 EXIST::FUNCTION:
901sk_pop 908 901sk_pop_free 909 EXIST::FUNCTION:
902sk_pop_free 909 902sk_push 910 EXIST::FUNCTION:
903sk_push 910 903sk_set_cmp_func 911 EXIST::FUNCTION:
904sk_set_cmp_func 911 904sk_shift 912 EXIST::FUNCTION:
905sk_shift 912 905sk_unshift 913 EXIST::FUNCTION:
906sk_unshift 913 906sk_zero 914 EXIST::FUNCTION:
907sk_zero 914 907BIO_f_nbio_test 915 EXIST::FUNCTION:
908BIO_f_nbio_test 915 908ASN1_TYPE_get 916 EXIST::FUNCTION:
909ASN1_TYPE_get 916 909ASN1_TYPE_set 917 EXIST::FUNCTION:
910ASN1_TYPE_set 917 910PKCS7_content_free 918 NOEXIST::FUNCTION:
911PKCS7_content_free 918 911ERR_load_PKCS7_strings 919 EXIST::FUNCTION:
912ERR_load_PKCS7_strings 919 912X509_find_by_issuer_and_serial 920 EXIST::FUNCTION:
913X509_find_by_issuer_and_serial 920 913X509_find_by_subject 921 EXIST::FUNCTION:
914X509_find_by_subject 921 914PKCS7_ctrl 927 EXIST::FUNCTION:
915PKCS7_ctrl 927 915PKCS7_set_type 928 EXIST::FUNCTION:
916PKCS7_set_type 928 916PKCS7_set_content 929 EXIST::FUNCTION:
917PKCS7_set_content 929 917PKCS7_SIGNER_INFO_set 930 EXIST::FUNCTION:
918PKCS7_SIGNER_INFO_set 930 918PKCS7_add_signer 931 EXIST::FUNCTION:
919PKCS7_add_signer 931 919PKCS7_add_certificate 932 EXIST::FUNCTION:
920PKCS7_add_certificate 932 920PKCS7_add_crl 933 EXIST::FUNCTION:
921PKCS7_add_crl 933 921PKCS7_content_new 934 EXIST::FUNCTION:
922PKCS7_content_new 934 922PKCS7_dataSign 935 NOEXIST::FUNCTION:
923PKCS7_dataSign 935 923PKCS7_dataVerify 936 EXIST::FUNCTION:
924PKCS7_dataVerify 936 924PKCS7_dataInit 937 EXIST::FUNCTION:
925PKCS7_dataInit 937 925PKCS7_add_signature 938 EXIST::FUNCTION:
926PKCS7_add_signature 938 926PKCS7_cert_from_signer_info 939 EXIST::FUNCTION:
927PKCS7_cert_from_signer_info 939 927PKCS7_get_signer_info 940 EXIST::FUNCTION:
928PKCS7_get_signer_info 940 928EVP_delete_alias 941 NOEXIST::FUNCTION:
929EVP_delete_alias 941 929EVP_mdc2 942 EXIST::FUNCTION:MDC2
930EVP_mdc2 942 930PEM_read_bio_RSAPublicKey 943 EXIST::FUNCTION:RSA
931PEM_read_bio_RSAPublicKey 943 931PEM_write_bio_RSAPublicKey 944 EXIST::FUNCTION:RSA
932PEM_write_bio_RSAPublicKey 944 932d2i_RSAPublicKey_bio 945 EXIST::FUNCTION:BIO,RSA
933d2i_RSAPublicKey_bio 945 933i2d_RSAPublicKey_bio 946 EXIST::FUNCTION:BIO,RSA
934i2d_RSAPublicKey_bio 946 934PEM_read_RSAPublicKey 947 EXIST:!WIN16:FUNCTION:RSA
935PEM_read_RSAPublicKey 947 935PEM_write_RSAPublicKey 949 EXIST:!WIN16:FUNCTION:RSA
936PEM_write_RSAPublicKey 949 936d2i_RSAPublicKey_fp 952 EXIST::FUNCTION:FP_API,RSA
937d2i_RSAPublicKey_fp 952 937i2d_RSAPublicKey_fp 954 EXIST::FUNCTION:FP_API,RSA
938i2d_RSAPublicKey_fp 954 938BIO_copy_next_retry 955 EXIST::FUNCTION:
939BIO_copy_next_retry 955 939RSA_flags 956 EXIST::FUNCTION:RSA
940RSA_flags 956 940X509_STORE_add_crl 957 EXIST::FUNCTION:
941X509_STORE_add_crl 957 941X509_load_crl_file 958 EXIST::FUNCTION:STDIO
942X509_load_crl_file 958 942EVP_rc2_40_cbc 959 EXIST::FUNCTION:RC2
943EVP_rc2_40_cbc 959 943EVP_rc4_40 960 EXIST::FUNCTION:RC4
944EVP_rc4_40 960 944EVP_CIPHER_CTX_init 961 EXIST::FUNCTION:
945EVP_CIPHER_CTX_init 961 945HMAC 962 EXIST::FUNCTION:HMAC
946HMAC 962 946HMAC_Init 963 EXIST::FUNCTION:HMAC
947HMAC_Init 963 947HMAC_Update 964 EXIST::FUNCTION:HMAC
948HMAC_Update 964 948HMAC_Final 965 EXIST::FUNCTION:HMAC
949HMAC_Final 965 949ERR_get_next_error_library 966 EXIST::FUNCTION:
950ERR_get_next_error_library 966 950EVP_PKEY_cmp_parameters 967 EXIST::FUNCTION:
951EVP_PKEY_cmp_parameters 967 951HMAC_cleanup 968 NOEXIST::FUNCTION:
952HMAC_cleanup 968 952BIO_ptr_ctrl 969 EXIST::FUNCTION:
953BIO_ptr_ctrl 969 953BIO_new_file_internal 970 EXIST:WIN16:FUNCTION:FP_API
954BIO_new_file_internal 970 954BIO_new_fp_internal 971 EXIST:WIN16:FUNCTION:FP_API
955BIO_new_fp_internal 971 955BIO_s_file_internal 972 EXIST:WIN16:FUNCTION:FP_API
956BIO_s_file_internal 972 956BN_BLINDING_convert 973 EXIST::FUNCTION:
957BN_BLINDING_convert 973 957BN_BLINDING_invert 974 EXIST::FUNCTION:
958BN_BLINDING_invert 974 958BN_BLINDING_update 975 EXIST::FUNCTION:
959BN_BLINDING_update 975 959RSA_blinding_on 977 EXIST::FUNCTION:RSA
960RSA_blinding_on 977 960RSA_blinding_off 978 EXIST::FUNCTION:RSA
961RSA_blinding_off 978 961i2t_ASN1_OBJECT 979 EXIST::FUNCTION:
962i2t_ASN1_OBJECT 979 962BN_BLINDING_new 980 EXIST::FUNCTION:
963BN_BLINDING_new 980 963BN_BLINDING_free 981 EXIST::FUNCTION:
964BN_BLINDING_free 981 964EVP_cast5_cbc 983 EXIST::FUNCTION:CAST
965EVP_cast5_cbc 983 965EVP_cast5_cfb 984 EXIST::FUNCTION:CAST
966EVP_cast5_cfb 984 966EVP_cast5_ecb 985 EXIST::FUNCTION:CAST
967EVP_cast5_ecb 985 967EVP_cast5_ofb 986 EXIST::FUNCTION:CAST
968EVP_cast5_ofb 986 968BF_decrypt 987 EXIST::FUNCTION:BF
969BF_decrypt 987 969CAST_set_key 988 EXIST::FUNCTION:CAST
970CAST_set_key 988 970CAST_encrypt 989 EXIST::FUNCTION:CAST
971CAST_encrypt 989 971CAST_decrypt 990 EXIST::FUNCTION:CAST
972CAST_decrypt 990 972CAST_ecb_encrypt 991 EXIST::FUNCTION:CAST
973CAST_ecb_encrypt 991 973CAST_cbc_encrypt 992 EXIST::FUNCTION:CAST
974CAST_cbc_encrypt 992 974CAST_cfb64_encrypt 993 EXIST::FUNCTION:CAST
975CAST_cfb64_encrypt 993 975CAST_ofb64_encrypt 994 EXIST::FUNCTION:CAST
976CAST_ofb64_encrypt 994 976RC2_decrypt 995 EXIST::FUNCTION:RC2
977RC2_decrypt 995 977OBJ_create_objects 997 EXIST::FUNCTION:
978OBJ_create_objects 997 978BN_exp 998 EXIST::FUNCTION:
979BN_exp 998 979BN_mul_word 999 EXIST::FUNCTION:
980BN_mul_word 999 980BN_sub_word 1000 EXIST::FUNCTION:
981BN_sub_word 1000 981BN_dec2bn 1001 EXIST::FUNCTION:
982BN_dec2bn 1001 982BN_bn2dec 1002 EXIST::FUNCTION:
983BN_bn2dec 1002 983BIO_ghbn_ctrl 1003 EXIST::FUNCTION:
984BIO_ghbn_ctrl 1003 984CRYPTO_free_ex_data 1004 EXIST::FUNCTION:
985CRYPTO_free_ex_data 1004 985CRYPTO_get_ex_data 1005 EXIST::FUNCTION:
986CRYPTO_get_ex_data 1005 986CRYPTO_set_ex_data 1007 EXIST::FUNCTION:
987CRYPTO_set_ex_data 1007 987ERR_load_CRYPTO_strings 1009 EXIST:!VMS,!WIN16:FUNCTION:
988ERR_load_CRYPTO_strings 1009 988ERR_load_CRYPTOlib_strings 1009 EXIST:VMS,WIN16:FUNCTION:
989ERR_load_CRYPTOlib_strings 1009 989EVP_PKEY_bits 1010 EXIST::FUNCTION:
990EVP_PKEY_bits 1010 990MD5_Transform 1011 EXIST::FUNCTION:MD5
991MD5_Transform 1011 991SHA1_Transform 1012 EXIST::FUNCTION:SHA,SHA1
992SHA1_Transform 1012 992SHA_Transform 1013 EXIST::FUNCTION:SHA,SHA0
993SHA_Transform 1013 993X509_STORE_CTX_get_chain 1014 EXIST::FUNCTION:
994X509_STORE_CTX_get_chain 1014 994X509_STORE_CTX_get_current_cert 1015 EXIST::FUNCTION:
995X509_STORE_CTX_get_current_cert 1015 995X509_STORE_CTX_get_error 1016 EXIST::FUNCTION:
996X509_STORE_CTX_get_error 1016 996X509_STORE_CTX_get_error_depth 1017 EXIST::FUNCTION:
997X509_STORE_CTX_get_error_depth 1017 997X509_STORE_CTX_get_ex_data 1018 EXIST::FUNCTION:
998X509_STORE_CTX_get_ex_data 1018 998X509_STORE_CTX_set_cert 1020 EXIST::FUNCTION:
999X509_STORE_CTX_set_cert 1020 999X509_STORE_CTX_set_chain 1021 EXIST::FUNCTION:
1000X509_STORE_CTX_set_chain 1021 1000X509_STORE_CTX_set_error 1022 EXIST::FUNCTION:
1001X509_STORE_CTX_set_error 1022 1001X509_STORE_CTX_set_ex_data 1023 EXIST::FUNCTION:
1002X509_STORE_CTX_set_ex_data 1023 1002CRYPTO_dup_ex_data 1025 EXIST::FUNCTION:
1003CRYPTO_dup_ex_data 1025 1003CRYPTO_get_new_lockid 1026 EXIST::FUNCTION:
1004CRYPTO_get_new_lockid 1026 1004CRYPTO_new_ex_data 1027 EXIST::FUNCTION:
1005CRYPTO_new_ex_data 1027 1005RSA_set_ex_data 1028 EXIST::FUNCTION:RSA
1006RSA_set_ex_data 1028 1006RSA_get_ex_data 1029 EXIST::FUNCTION:RSA
1007RSA_get_ex_data 1029 1007RSA_get_ex_new_index 1030 EXIST::FUNCTION:RSA
1008RSA_get_ex_new_index 1030 1008RSA_padding_add_PKCS1_type_1 1031 EXIST::FUNCTION:RSA
1009RSA_padding_add_PKCS1_type_1 1031 1009RSA_padding_add_PKCS1_type_2 1032 EXIST::FUNCTION:RSA
1010RSA_padding_add_PKCS1_type_2 1032 1010RSA_padding_add_SSLv23 1033 EXIST::FUNCTION:RSA
1011RSA_padding_add_SSLv23 1033 1011RSA_padding_add_none 1034 EXIST::FUNCTION:RSA
1012RSA_padding_add_none 1034 1012RSA_padding_check_PKCS1_type_1 1035 EXIST::FUNCTION:RSA
1013RSA_padding_check_PKCS1_type_1 1035 1013RSA_padding_check_PKCS1_type_2 1036 EXIST::FUNCTION:RSA
1014RSA_padding_check_PKCS1_type_2 1036 1014RSA_padding_check_SSLv23 1037 EXIST::FUNCTION:RSA
1015RSA_padding_check_SSLv23 1037 1015RSA_padding_check_none 1038 EXIST::FUNCTION:RSA
1016RSA_padding_check_none 1038 1016bn_add_words 1039 EXIST::FUNCTION:
1017bn_add_words 1039 1017d2i_Netscape_RSA_2 1040 NOEXIST::FUNCTION:
1018d2i_Netscape_RSA_2 1040 1018CRYPTO_get_ex_new_index 1041 EXIST::FUNCTION:
1019CRYPTO_get_ex_new_index 1041 1019RIPEMD160_Init 1042 EXIST::FUNCTION:RIPEMD
1020RIPEMD160_Init 1042 1020RIPEMD160_Update 1043 EXIST::FUNCTION:RIPEMD
1021RIPEMD160_Update 1043 1021RIPEMD160_Final 1044 EXIST::FUNCTION:RIPEMD
1022RIPEMD160_Final 1044 1022RIPEMD160 1045 EXIST::FUNCTION:RIPEMD
1023RIPEMD160 1045 1023RIPEMD160_Transform 1046 EXIST::FUNCTION:RIPEMD
1024RIPEMD160_Transform 1046 1024RC5_32_set_key 1047 EXIST::FUNCTION:RC5
1025RC5_32_set_key 1047 1025RC5_32_ecb_encrypt 1048 EXIST::FUNCTION:RC5
1026RC5_32_ecb_encrypt 1048 1026RC5_32_encrypt 1049 EXIST::FUNCTION:RC5
1027RC5_32_encrypt 1049 1027RC5_32_decrypt 1050 EXIST::FUNCTION:RC5
1028RC5_32_decrypt 1050 1028RC5_32_cbc_encrypt 1051 EXIST::FUNCTION:RC5
1029RC5_32_cbc_encrypt 1051 1029RC5_32_cfb64_encrypt 1052 EXIST::FUNCTION:RC5
1030RC5_32_cfb64_encrypt 1052 1030RC5_32_ofb64_encrypt 1053 EXIST::FUNCTION:RC5
1031RC5_32_ofb64_encrypt 1053 1031BN_bn2mpi 1058 EXIST::FUNCTION:
1032BN_bn2mpi 1058 1032BN_mpi2bn 1059 EXIST::FUNCTION:
1033BN_mpi2bn 1059 1033ASN1_BIT_STRING_get_bit 1060 EXIST::FUNCTION:
1034ASN1_BIT_STRING_get_bit 1060 1034ASN1_BIT_STRING_set_bit 1061 EXIST::FUNCTION:
1035ASN1_BIT_STRING_set_bit 1061 1035BIO_get_ex_data 1062 EXIST::FUNCTION:
1036BIO_get_ex_data 1062 1036BIO_get_ex_new_index 1063 EXIST::FUNCTION:
1037BIO_get_ex_new_index 1063 1037BIO_set_ex_data 1064 EXIST::FUNCTION:
1038BIO_set_ex_data 1064 1038X509v3_get_key_usage 1066 NOEXIST::FUNCTION:
1039X509_STORE_CTX_get_ex_new_index 1065 1039X509v3_set_key_usage 1067 NOEXIST::FUNCTION:
1040X509v3_get_key_usage 1066 1040a2i_X509v3_key_usage 1068 NOEXIST::FUNCTION:
1041X509v3_set_key_usage 1067 1041i2a_X509v3_key_usage 1069 NOEXIST::FUNCTION:
1042a2i_X509v3_key_usage 1068 1042EVP_PKEY_decrypt 1070 EXIST::FUNCTION:
1043i2a_X509v3_key_usage 1069 1043EVP_PKEY_encrypt 1071 EXIST::FUNCTION:
1044EVP_PKEY_decrypt 1070 1044PKCS7_RECIP_INFO_set 1072 EXIST::FUNCTION:
1045EVP_PKEY_encrypt 1071 1045PKCS7_add_recipient 1073 EXIST::FUNCTION:
1046PKCS7_RECIP_INFO_set 1072 1046PKCS7_add_recipient_info 1074 EXIST::FUNCTION:
1047PKCS7_add_recipient 1073 1047PKCS7_set_cipher 1075 EXIST::FUNCTION:
1048PKCS7_add_recipient_info 1074 1048ASN1_TYPE_get_int_octetstring 1076 EXIST::FUNCTION:
1049PKCS7_set_cipher 1075 1049ASN1_TYPE_get_octetstring 1077 EXIST::FUNCTION:
1050ASN1_TYPE_get_int_octetstring 1076 1050ASN1_TYPE_set_int_octetstring 1078 EXIST::FUNCTION:
1051ASN1_TYPE_get_octetstring 1077 1051ASN1_TYPE_set_octetstring 1079 EXIST::FUNCTION:
1052ASN1_TYPE_set_int_octetstring 1078 1052ASN1_UTCTIME_set_string 1080 EXIST::FUNCTION:
1053ASN1_TYPE_set_octetstring 1079 1053ERR_add_error_data 1081 EXIST::FUNCTION:BIO
1054ASN1_UTCTIME_set_string 1080 1054ERR_set_error_data 1082 EXIST::FUNCTION:
1055ERR_add_error_data 1081 1055EVP_CIPHER_asn1_to_param 1083 EXIST::FUNCTION:
1056ERR_set_error_data 1082 1056EVP_CIPHER_param_to_asn1 1084 EXIST::FUNCTION:
1057EVP_CIPHER_asn1_to_param 1083 1057EVP_CIPHER_get_asn1_iv 1085 EXIST::FUNCTION:
1058EVP_CIPHER_param_to_asn1 1084 1058EVP_CIPHER_set_asn1_iv 1086 EXIST::FUNCTION:
1059EVP_CIPHER_get_asn1_iv 1085 1059EVP_rc5_32_12_16_cbc 1087 EXIST::FUNCTION:RC5
1060EVP_CIPHER_set_asn1_iv 1086 1060EVP_rc5_32_12_16_cfb 1088 EXIST::FUNCTION:RC5
1061EVP_rc5_32_12_16_cbc 1087 1061EVP_rc5_32_12_16_ecb 1089 EXIST::FUNCTION:RC5
1062EVP_rc5_32_12_16_cfb 1088 1062EVP_rc5_32_12_16_ofb 1090 EXIST::FUNCTION:RC5
1063EVP_rc5_32_12_16_ecb 1089 1063asn1_add_error 1091 EXIST::FUNCTION:
1064EVP_rc5_32_12_16_ofb 1090 1064d2i_ASN1_BMPSTRING 1092 EXIST::FUNCTION:
1065asn1_add_error 1091 1065i2d_ASN1_BMPSTRING 1093 EXIST::FUNCTION:
1066BIO_f_ber 1094 NOEXIST::FUNCTION:
1067BN_init 1095 EXIST::FUNCTION:
1068COMP_CTX_new 1096 EXIST::FUNCTION:
1069COMP_CTX_free 1097 EXIST::FUNCTION:
1070COMP_CTX_compress_block 1098 NOEXIST::FUNCTION:
1071COMP_CTX_expand_block 1099 NOEXIST::FUNCTION:
1072X509_STORE_CTX_get_ex_new_index 1100 EXIST::FUNCTION:
1073OBJ_NAME_add 1101 EXIST::FUNCTION:
1074BIO_socket_nbio 1102 EXIST::FUNCTION:
1075EVP_rc2_64_cbc 1103 EXIST::FUNCTION:RC2
1076OBJ_NAME_cleanup 1104 EXIST::FUNCTION:
1077OBJ_NAME_get 1105 EXIST::FUNCTION:
1078OBJ_NAME_init 1106 EXIST::FUNCTION:
1079OBJ_NAME_new_index 1107 EXIST::FUNCTION:
1080OBJ_NAME_remove 1108 EXIST::FUNCTION:
1081BN_MONT_CTX_copy 1109 EXIST::FUNCTION:
1082BIO_new_socks4a_connect 1110 NOEXIST::FUNCTION:
1083BIO_s_socks4a_connect 1111 NOEXIST::FUNCTION:
1084PROXY_set_connect_mode 1112 NOEXIST::FUNCTION:
1085RAND_SSLeay 1113 EXIST::FUNCTION:
1086RAND_set_rand_method 1114 EXIST::FUNCTION:
1087RSA_memory_lock 1115 EXIST::FUNCTION:RSA
1088bn_sub_words 1116 EXIST::FUNCTION:
1089bn_mul_normal 1117 NOEXIST::FUNCTION:
1090bn_mul_comba8 1118 NOEXIST::FUNCTION:
1091bn_mul_comba4 1119 NOEXIST::FUNCTION:
1092bn_sqr_normal 1120 NOEXIST::FUNCTION:
1093bn_sqr_comba8 1121 NOEXIST::FUNCTION:
1094bn_sqr_comba4 1122 NOEXIST::FUNCTION:
1095bn_cmp_words 1123 NOEXIST::FUNCTION:
1096bn_mul_recursive 1124 NOEXIST::FUNCTION:
1097bn_mul_part_recursive 1125 NOEXIST::FUNCTION:
1098bn_sqr_recursive 1126 NOEXIST::FUNCTION:
1099bn_mul_low_normal 1127 NOEXIST::FUNCTION:
1100BN_RECP_CTX_init 1128 EXIST::FUNCTION:
1101BN_RECP_CTX_new 1129 EXIST::FUNCTION:
1102BN_RECP_CTX_free 1130 EXIST::FUNCTION:
1103BN_RECP_CTX_set 1131 EXIST::FUNCTION:
1104BN_mod_mul_reciprocal 1132 EXIST::FUNCTION:
1105BN_mod_exp_recp 1133 EXIST::FUNCTION:
1106BN_div_recp 1134 EXIST::FUNCTION:
1107BN_CTX_init 1135 EXIST::FUNCTION:
1108BN_MONT_CTX_init 1136 EXIST::FUNCTION:
1109RAND_get_rand_method 1137 EXIST::FUNCTION:
1110PKCS7_add_attribute 1138 EXIST::FUNCTION:
1111PKCS7_add_signed_attribute 1139 EXIST::FUNCTION:
1112PKCS7_digest_from_attributes 1140 EXIST::FUNCTION:
1113PKCS7_get_attribute 1141 EXIST::FUNCTION:
1114PKCS7_get_issuer_and_serial 1142 EXIST::FUNCTION:
1115PKCS7_get_signed_attribute 1143 EXIST::FUNCTION:
1116COMP_compress_block 1144 EXIST::FUNCTION:
1117COMP_expand_block 1145 EXIST::FUNCTION:
1118COMP_rle 1146 EXIST::FUNCTION:
1119COMP_zlib 1147 EXIST::FUNCTION:
1120ms_time_diff 1148 EXIST::FUNCTION:
1121ms_time_new 1149 EXIST::FUNCTION:
1122ms_time_free 1150 EXIST::FUNCTION:
1123ms_time_cmp 1151 EXIST::FUNCTION:
1124ms_time_get 1152 EXIST::FUNCTION:
1125PKCS7_set_attributes 1153 EXIST::FUNCTION:
1126PKCS7_set_signed_attributes 1154 EXIST::FUNCTION:
1127X509_ATTRIBUTE_create 1155 EXIST::FUNCTION:
1128X509_ATTRIBUTE_dup 1156 EXIST::FUNCTION:
1129ASN1_GENERALIZEDTIME_check 1157 EXIST::FUNCTION:
1130ASN1_GENERALIZEDTIME_print 1158 EXIST::FUNCTION:BIO
1131ASN1_GENERALIZEDTIME_set 1159 EXIST::FUNCTION:
1132ASN1_GENERALIZEDTIME_set_string 1160 EXIST::FUNCTION:
1133ASN1_TIME_print 1161 EXIST::FUNCTION:BIO
1134BASIC_CONSTRAINTS_free 1162 EXIST::FUNCTION:
1135BASIC_CONSTRAINTS_new 1163 EXIST::FUNCTION:
1136ERR_load_X509V3_strings 1164 EXIST::FUNCTION:
1137NETSCAPE_CERT_SEQUENCE_free 1165 EXIST::FUNCTION:
1138NETSCAPE_CERT_SEQUENCE_new 1166 EXIST::FUNCTION:
1139OBJ_txt2obj 1167 EXIST::FUNCTION:
1140PEM_read_NETSCAPE_CERT_SEQUENCE 1168 EXIST:!VMS,!WIN16:FUNCTION:
1141PEM_read_NS_CERT_SEQ 1168 EXIST:VMS:FUNCTION:
1142PEM_read_bio_NETSCAPE_CERT_SEQUENCE 1169 EXIST:!VMS:FUNCTION:
1143PEM_read_bio_NS_CERT_SEQ 1169 EXIST:VMS:FUNCTION:
1144PEM_write_NETSCAPE_CERT_SEQUENCE 1170 EXIST:!VMS,!WIN16:FUNCTION:
1145PEM_write_NS_CERT_SEQ 1170 EXIST:VMS:FUNCTION:
1146PEM_write_bio_NETSCAPE_CERT_SEQUENCE 1171 EXIST:!VMS:FUNCTION:
1147PEM_write_bio_NS_CERT_SEQ 1171 EXIST:VMS:FUNCTION:
1148X509V3_EXT_add 1172 EXIST::FUNCTION:
1149X509V3_EXT_add_alias 1173 EXIST::FUNCTION:
1150X509V3_EXT_add_conf 1174 EXIST::FUNCTION:
1151X509V3_EXT_cleanup 1175 EXIST::FUNCTION:
1152X509V3_EXT_conf 1176 EXIST::FUNCTION:
1153X509V3_EXT_conf_nid 1177 EXIST::FUNCTION:
1154X509V3_EXT_get 1178 EXIST::FUNCTION:
1155X509V3_EXT_get_nid 1179 EXIST::FUNCTION:
1156X509V3_EXT_print 1180 EXIST::FUNCTION:
1157X509V3_EXT_print_fp 1181 EXIST::FUNCTION:
1158X509V3_add_standard_extensions 1182 EXIST::FUNCTION:
1159X509V3_add_value 1183 EXIST::FUNCTION:
1160X509V3_add_value_bool 1184 EXIST::FUNCTION:
1161X509V3_add_value_int 1185 EXIST::FUNCTION:
1162X509V3_conf_free 1186 EXIST::FUNCTION:
1163X509V3_get_value_bool 1187 EXIST::FUNCTION:
1164X509V3_get_value_int 1188 EXIST::FUNCTION:
1165X509V3_parse_list 1189 EXIST::FUNCTION:
1166d2i_ASN1_GENERALIZEDTIME 1190 EXIST::FUNCTION:
1167d2i_ASN1_TIME 1191 EXIST::FUNCTION:
1168d2i_BASIC_CONSTRAINTS 1192 EXIST::FUNCTION:
1169d2i_NETSCAPE_CERT_SEQUENCE 1193 EXIST::FUNCTION:
1170d2i_ext_ku 1194 NOEXIST::FUNCTION:
1171ext_ku_free 1195 NOEXIST::FUNCTION:
1172ext_ku_new 1196 NOEXIST::FUNCTION:
1173i2d_ASN1_GENERALIZEDTIME 1197 EXIST::FUNCTION:
1174i2d_ASN1_TIME 1198 EXIST::FUNCTION:
1175i2d_BASIC_CONSTRAINTS 1199 EXIST::FUNCTION:
1176i2d_NETSCAPE_CERT_SEQUENCE 1200 EXIST::FUNCTION:
1177i2d_ext_ku 1201 NOEXIST::FUNCTION:
1178EVP_MD_CTX_copy 1202 EXIST::FUNCTION:
1179i2d_ASN1_ENUMERATED 1203 EXIST::FUNCTION:
1180d2i_ASN1_ENUMERATED 1204 EXIST::FUNCTION:
1181ASN1_ENUMERATED_set 1205 EXIST::FUNCTION:
1182ASN1_ENUMERATED_get 1206 EXIST::FUNCTION:
1183BN_to_ASN1_ENUMERATED 1207 EXIST::FUNCTION:
1184ASN1_ENUMERATED_to_BN 1208 EXIST::FUNCTION:
1185i2a_ASN1_ENUMERATED 1209 EXIST::FUNCTION:BIO
1186a2i_ASN1_ENUMERATED 1210 EXIST::FUNCTION:BIO
1187i2d_GENERAL_NAME 1211 EXIST::FUNCTION:
1188d2i_GENERAL_NAME 1212 EXIST::FUNCTION:
1189GENERAL_NAME_new 1213 EXIST::FUNCTION:
1190GENERAL_NAME_free 1214 EXIST::FUNCTION:
1191GENERAL_NAMES_new 1215 EXIST::FUNCTION:
1192GENERAL_NAMES_free 1216 EXIST::FUNCTION:
1193d2i_GENERAL_NAMES 1217 EXIST::FUNCTION:
1194i2d_GENERAL_NAMES 1218 EXIST::FUNCTION:
1195i2v_GENERAL_NAMES 1219 EXIST::FUNCTION:
1196i2s_ASN1_OCTET_STRING 1220 EXIST::FUNCTION:
1197s2i_ASN1_OCTET_STRING 1221 EXIST::FUNCTION:
1198X509V3_EXT_check_conf 1222 NOEXIST::FUNCTION:
1199hex_to_string 1223 EXIST::FUNCTION:
1200string_to_hex 1224 EXIST::FUNCTION:
1201DES_ede3_cbcm_encrypt 1225 EXIST::FUNCTION:DES
1202RSA_padding_add_PKCS1_OAEP 1226 EXIST::FUNCTION:RSA
1203RSA_padding_check_PKCS1_OAEP 1227 EXIST::FUNCTION:RSA
1204X509_CRL_print_fp 1228 EXIST::FUNCTION:FP_API
1205X509_CRL_print 1229 EXIST::FUNCTION:BIO
1206i2v_GENERAL_NAME 1230 EXIST::FUNCTION:
1207v2i_GENERAL_NAME 1231 EXIST::FUNCTION:
1208i2d_PKEY_USAGE_PERIOD 1232 EXIST::FUNCTION:
1209d2i_PKEY_USAGE_PERIOD 1233 EXIST::FUNCTION:
1210PKEY_USAGE_PERIOD_new 1234 EXIST::FUNCTION:
1211PKEY_USAGE_PERIOD_free 1235 EXIST::FUNCTION:
1212v2i_GENERAL_NAMES 1236 EXIST::FUNCTION:
1213i2s_ASN1_INTEGER 1237 EXIST::FUNCTION:
1214X509V3_EXT_d2i 1238 EXIST::FUNCTION:
1215name_cmp 1239 EXIST::FUNCTION:
1216str_dup 1240 NOEXIST::FUNCTION:
1217i2s_ASN1_ENUMERATED 1241 EXIST::FUNCTION:
1218i2s_ASN1_ENUMERATED_TABLE 1242 EXIST::FUNCTION:
1219BIO_s_log 1243 EXIST:!WIN16,!WIN32,!macintosh:FUNCTION:
1220BIO_f_reliable 1244 EXIST::FUNCTION:BIO
1221PKCS7_dataFinal 1245 EXIST::FUNCTION:
1222PKCS7_dataDecode 1246 EXIST::FUNCTION:
1223X509V3_EXT_CRL_add_conf 1247 EXIST::FUNCTION:
1224BN_set_params 1248 EXIST::FUNCTION:
1225BN_get_params 1249 EXIST::FUNCTION:
1226BIO_get_ex_num 1250 NOEXIST::FUNCTION:
1227BIO_set_ex_free_func 1251 NOEXIST::FUNCTION:
1228EVP_ripemd160 1252 EXIST::FUNCTION:RIPEMD
1229ASN1_TIME_set 1253 EXIST::FUNCTION:
1230i2d_AUTHORITY_KEYID 1254 EXIST::FUNCTION:
1231d2i_AUTHORITY_KEYID 1255 EXIST::FUNCTION:
1232AUTHORITY_KEYID_new 1256 EXIST::FUNCTION:
1233AUTHORITY_KEYID_free 1257 EXIST::FUNCTION:
1234ASN1_seq_unpack 1258 EXIST::FUNCTION:
1235ASN1_seq_pack 1259 EXIST::FUNCTION:
1236ASN1_unpack_string 1260 EXIST::FUNCTION:
1237ASN1_pack_string 1261 EXIST::FUNCTION:
1238PKCS12_pack_safebag 1262 NOEXIST::FUNCTION:
1239PKCS12_MAKE_KEYBAG 1263 EXIST::FUNCTION:
1240PKCS8_encrypt 1264 EXIST::FUNCTION:
1241PKCS12_MAKE_SHKEYBAG 1265 EXIST::FUNCTION:
1242PKCS12_pack_p7data 1266 EXIST::FUNCTION:
1243PKCS12_pack_p7encdata 1267 EXIST::FUNCTION:
1244PKCS12_add_localkeyid 1268 EXIST::FUNCTION:
1245PKCS12_add_friendlyname_asc 1269 EXIST::FUNCTION:
1246PKCS12_add_friendlyname_uni 1270 EXIST::FUNCTION:
1247PKCS12_get_friendlyname 1271 EXIST::FUNCTION:
1248PKCS12_pbe_crypt 1272 EXIST::FUNCTION:
1249PKCS12_decrypt_d2i 1273 NOEXIST::FUNCTION:
1250PKCS12_i2d_encrypt 1274 NOEXIST::FUNCTION:
1251PKCS12_init 1275 EXIST::FUNCTION:
1252PKCS12_key_gen_asc 1276 EXIST::FUNCTION:
1253PKCS12_key_gen_uni 1277 EXIST::FUNCTION:
1254PKCS12_gen_mac 1278 EXIST::FUNCTION:
1255PKCS12_verify_mac 1279 EXIST::FUNCTION:
1256PKCS12_set_mac 1280 EXIST::FUNCTION:
1257PKCS12_setup_mac 1281 EXIST::FUNCTION:
1258asc2uni 1282 EXIST::FUNCTION:
1259uni2asc 1283 EXIST::FUNCTION:
1260i2d_PKCS12_BAGS 1284 EXIST::FUNCTION:
1261PKCS12_BAGS_new 1285 EXIST::FUNCTION:
1262d2i_PKCS12_BAGS 1286 EXIST::FUNCTION:
1263PKCS12_BAGS_free 1287 EXIST::FUNCTION:
1264i2d_PKCS12 1288 EXIST::FUNCTION:
1265d2i_PKCS12 1289 EXIST::FUNCTION:
1266PKCS12_new 1290 EXIST::FUNCTION:
1267PKCS12_free 1291 EXIST::FUNCTION:
1268i2d_PKCS12_MAC_DATA 1292 EXIST::FUNCTION:
1269PKCS12_MAC_DATA_new 1293 EXIST::FUNCTION:
1270d2i_PKCS12_MAC_DATA 1294 EXIST::FUNCTION:
1271PKCS12_MAC_DATA_free 1295 EXIST::FUNCTION:
1272i2d_PKCS12_SAFEBAG 1296 EXIST::FUNCTION:
1273PKCS12_SAFEBAG_new 1297 EXIST::FUNCTION:
1274d2i_PKCS12_SAFEBAG 1298 EXIST::FUNCTION:
1275PKCS12_SAFEBAG_free 1299 EXIST::FUNCTION:
1276ERR_load_PKCS12_strings 1300 EXIST::FUNCTION:
1277PKCS12_PBE_add 1301 EXIST::FUNCTION:
1278PKCS8_add_keyusage 1302 EXIST::FUNCTION:
1279PKCS12_get_attr_gen 1303 EXIST::FUNCTION:
1280PKCS12_parse 1304 EXIST::FUNCTION:
1281PKCS12_create 1305 EXIST::FUNCTION:
1282i2d_PKCS12_bio 1306 EXIST::FUNCTION:
1283i2d_PKCS12_fp 1307 EXIST::FUNCTION:
1284d2i_PKCS12_bio 1308 EXIST::FUNCTION:
1285d2i_PKCS12_fp 1309 EXIST::FUNCTION:
1286i2d_PBEPARAM 1310 EXIST::FUNCTION:
1287PBEPARAM_new 1311 EXIST::FUNCTION:
1288d2i_PBEPARAM 1312 EXIST::FUNCTION:
1289PBEPARAM_free 1313 EXIST::FUNCTION:
1290i2d_PKCS8_PRIV_KEY_INFO 1314 EXIST::FUNCTION:
1291PKCS8_PRIV_KEY_INFO_new 1315 EXIST::FUNCTION:
1292d2i_PKCS8_PRIV_KEY_INFO 1316 EXIST::FUNCTION:
1293PKCS8_PRIV_KEY_INFO_free 1317 EXIST::FUNCTION:
1294EVP_PKCS82PKEY 1318 EXIST::FUNCTION:
1295EVP_PKEY2PKCS8 1319 EXIST::FUNCTION:
1296PKCS8_set_broken 1320 EXIST::FUNCTION:
1297EVP_PBE_ALGOR_CipherInit 1321 NOEXIST::FUNCTION:
1298EVP_PBE_alg_add 1322 EXIST::FUNCTION:
1299PKCS5_pbe_set 1323 EXIST::FUNCTION:
1300EVP_PBE_cleanup 1324 EXIST::FUNCTION:
1301i2d_SXNET 1325 EXIST::FUNCTION:
1302d2i_SXNET 1326 EXIST::FUNCTION:
1303SXNET_new 1327 EXIST::FUNCTION:
1304SXNET_free 1328 EXIST::FUNCTION:
1305i2d_SXNETID 1329 EXIST::FUNCTION:
1306d2i_SXNETID 1330 EXIST::FUNCTION:
1307SXNETID_new 1331 EXIST::FUNCTION:
1308SXNETID_free 1332 EXIST::FUNCTION:
1309DSA_SIG_new 1333 EXIST::FUNCTION:DSA
1310DSA_SIG_free 1334 EXIST::FUNCTION:DSA
1311DSA_do_sign 1335 EXIST::FUNCTION:DSA
1312DSA_do_verify 1336 EXIST::FUNCTION:DSA
1313d2i_DSA_SIG 1337 EXIST::FUNCTION:DSA
1314i2d_DSA_SIG 1338 EXIST::FUNCTION:DSA
1315i2d_ASN1_VISIBLESTRING 1339 EXIST::FUNCTION:
1316d2i_ASN1_VISIBLESTRING 1340 EXIST::FUNCTION:
1317i2d_ASN1_UTF8STRING 1341 EXIST::FUNCTION:
1318d2i_ASN1_UTF8STRING 1342 EXIST::FUNCTION:
1319i2d_DIRECTORYSTRING 1343 EXIST::FUNCTION:
1320d2i_DIRECTORYSTRING 1344 EXIST::FUNCTION:
1321i2d_DISPLAYTEXT 1345 EXIST::FUNCTION:
1322d2i_DISPLAYTEXT 1346 EXIST::FUNCTION:
1323d2i_ASN1_SET_OF_X509 1379 NOEXIST::FUNCTION:
1324i2d_ASN1_SET_OF_X509 1380 NOEXIST::FUNCTION:
1325i2d_PBKDF2PARAM 1397 EXIST::FUNCTION:
1326PBKDF2PARAM_new 1398 EXIST::FUNCTION:
1327d2i_PBKDF2PARAM 1399 EXIST::FUNCTION:
1328PBKDF2PARAM_free 1400 EXIST::FUNCTION:
1329i2d_PBE2PARAM 1401 EXIST::FUNCTION:
1330PBE2PARAM_new 1402 EXIST::FUNCTION:
1331d2i_PBE2PARAM 1403 EXIST::FUNCTION:
1332PBE2PARAM_free 1404 EXIST::FUNCTION:
1333d2i_ASN1_SET_OF_GENERAL_NAME 1421 NOEXIST::FUNCTION:
1334i2d_ASN1_SET_OF_GENERAL_NAME 1422 NOEXIST::FUNCTION:
1335d2i_ASN1_SET_OF_SXNETID 1439 NOEXIST::FUNCTION:
1336i2d_ASN1_SET_OF_SXNETID 1440 NOEXIST::FUNCTION:
1337d2i_ASN1_SET_OF_POLICYQUALINFO 1457 NOEXIST::FUNCTION:
1338i2d_ASN1_SET_OF_POLICYQUALINFO 1458 NOEXIST::FUNCTION:
1339d2i_ASN1_SET_OF_POLICYINFO 1475 NOEXIST::FUNCTION:
1340i2d_ASN1_SET_OF_POLICYINFO 1476 NOEXIST::FUNCTION:
1341SXNET_add_id_asc 1477 EXIST::FUNCTION:
1342SXNET_add_id_ulong 1478 EXIST::FUNCTION:
1343SXNET_add_id_INTEGER 1479 EXIST::FUNCTION:
1344SXNET_get_id_asc 1480 EXIST::FUNCTION:
1345SXNET_get_id_ulong 1481 EXIST::FUNCTION:
1346SXNET_get_id_INTEGER 1482 EXIST::FUNCTION:
1347X509V3_set_conf_lhash 1483 EXIST::FUNCTION:
1348i2d_CERTIFICATEPOLICIES 1484 EXIST::FUNCTION:
1349CERTIFICATEPOLICIES_new 1485 EXIST::FUNCTION:
1350CERTIFICATEPOLICIES_free 1486 EXIST::FUNCTION:
1351d2i_CERTIFICATEPOLICIES 1487 EXIST::FUNCTION:
1352i2d_POLICYINFO 1488 EXIST::FUNCTION:
1353POLICYINFO_new 1489 EXIST::FUNCTION:
1354d2i_POLICYINFO 1490 EXIST::FUNCTION:
1355POLICYINFO_free 1491 EXIST::FUNCTION:
1356i2d_POLICYQUALINFO 1492 EXIST::FUNCTION:
1357POLICYQUALINFO_new 1493 EXIST::FUNCTION:
1358d2i_POLICYQUALINFO 1494 EXIST::FUNCTION:
1359POLICYQUALINFO_free 1495 EXIST::FUNCTION:
1360i2d_USERNOTICE 1496 EXIST::FUNCTION:
1361USERNOTICE_new 1497 EXIST::FUNCTION:
1362d2i_USERNOTICE 1498 EXIST::FUNCTION:
1363USERNOTICE_free 1499 EXIST::FUNCTION:
1364i2d_NOTICEREF 1500 EXIST::FUNCTION:
1365NOTICEREF_new 1501 EXIST::FUNCTION:
1366d2i_NOTICEREF 1502 EXIST::FUNCTION:
1367NOTICEREF_free 1503 EXIST::FUNCTION:
1368X509V3_get_string 1504 EXIST::FUNCTION:
1369X509V3_get_section 1505 EXIST::FUNCTION:
1370X509V3_string_free 1506 EXIST::FUNCTION:
1371X509V3_section_free 1507 EXIST::FUNCTION:
1372X509V3_set_ctx 1508 EXIST::FUNCTION:
1373s2i_ASN1_INTEGER 1509 EXIST::FUNCTION:
1374CRYPTO_set_locked_mem_functions 1510 EXIST::FUNCTION:
1375CRYPTO_get_locked_mem_functions 1511 EXIST::FUNCTION:
1376CRYPTO_malloc_locked 1512 EXIST::FUNCTION:
1377CRYPTO_free_locked 1513 EXIST::FUNCTION:
1378BN_mod_exp2_mont 1514 EXIST::FUNCTION:
1379ERR_get_error_line_data 1515 EXIST::FUNCTION:
1380ERR_peek_error_line_data 1516 EXIST::FUNCTION:
1381PKCS12_PBE_keyivgen 1517 EXIST::FUNCTION:
1382X509_ALGOR_dup 1518 EXIST::FUNCTION:
1383d2i_ASN1_SET_OF_DIST_POINT 1535 NOEXIST::FUNCTION:
1384i2d_ASN1_SET_OF_DIST_POINT 1536 NOEXIST::FUNCTION:
1385i2d_CRL_DIST_POINTS 1537 EXIST::FUNCTION:
1386CRL_DIST_POINTS_new 1538 EXIST::FUNCTION:
1387CRL_DIST_POINTS_free 1539 EXIST::FUNCTION:
1388d2i_CRL_DIST_POINTS 1540 EXIST::FUNCTION:
1389i2d_DIST_POINT 1541 EXIST::FUNCTION:
1390DIST_POINT_new 1542 EXIST::FUNCTION:
1391d2i_DIST_POINT 1543 EXIST::FUNCTION:
1392DIST_POINT_free 1544 EXIST::FUNCTION:
1393i2d_DIST_POINT_NAME 1545 EXIST::FUNCTION:
1394DIST_POINT_NAME_new 1546 EXIST::FUNCTION:
1395DIST_POINT_NAME_free 1547 EXIST::FUNCTION:
1396d2i_DIST_POINT_NAME 1548 EXIST::FUNCTION:
1397X509V3_add_value_uchar 1549 EXIST::FUNCTION:
1398d2i_ASN1_SET_OF_X509_ATTRIBUTE 1555 NOEXIST::FUNCTION:
1399i2d_ASN1_SET_OF_ASN1_TYPE 1560 NOEXIST::FUNCTION:
1400d2i_ASN1_SET_OF_X509_EXTENSION 1567 NOEXIST::FUNCTION:
1401d2i_ASN1_SET_OF_X509_NAME_ENTRY 1574 NOEXIST::FUNCTION:
1402d2i_ASN1_SET_OF_ASN1_TYPE 1589 NOEXIST::FUNCTION:
1403i2d_ASN1_SET_OF_X509_ATTRIBUTE 1615 NOEXIST::FUNCTION:
1404i2d_ASN1_SET_OF_X509_EXTENSION 1624 NOEXIST::FUNCTION:
1405i2d_ASN1_SET_OF_X509_NAME_ENTRY 1633 NOEXIST::FUNCTION:
1406X509V3_EXT_i2d 1646 EXIST::FUNCTION:
1407X509V3_EXT_val_prn 1647 EXIST::FUNCTION:
1408X509V3_EXT_add_list 1648 EXIST::FUNCTION:
1409EVP_CIPHER_type 1649 EXIST::FUNCTION:
1410EVP_PBE_CipherInit 1650 EXIST::FUNCTION:
1411X509V3_add_value_bool_nf 1651 EXIST::FUNCTION:
1412d2i_ASN1_UINTEGER 1652 EXIST::FUNCTION:
1413sk_value 1653 EXIST::FUNCTION:
1414sk_num 1654 EXIST::FUNCTION:
1415sk_set 1655 EXIST::FUNCTION:
1416i2d_ASN1_SET_OF_X509_REVOKED 1661 NOEXIST::FUNCTION:
1417sk_sort 1671 EXIST::FUNCTION:
1418d2i_ASN1_SET_OF_X509_REVOKED 1674 NOEXIST::FUNCTION:
1419i2d_ASN1_SET_OF_X509_ALGOR 1682 NOEXIST::FUNCTION:
1420i2d_ASN1_SET_OF_X509_CRL 1685 NOEXIST::FUNCTION:
1421d2i_ASN1_SET_OF_X509_ALGOR 1696 NOEXIST::FUNCTION:
1422d2i_ASN1_SET_OF_X509_CRL 1702 NOEXIST::FUNCTION:
1423i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO 1723 NOEXIST::FUNCTION:
1424i2d_ASN1_SET_OF_PKCS7_RECIP_INFO 1738 NOEXIST::FUNCTION:
1425d2i_ASN1_SET_OF_PKCS7_SIGNER_INFO 1748 NOEXIST::FUNCTION:
1426d2i_ASN1_SET_OF_PKCS7_RECIP_INFO 1753 NOEXIST::FUNCTION:
1427PKCS5_PBE_add 1775 EXIST::FUNCTION:
1428PEM_write_bio_PKCS8 1776 EXIST::FUNCTION:
1429i2d_PKCS8_fp 1777 EXIST::FUNCTION:FP_API
1430PEM_read_bio_PKCS8_PRIV_KEY_INFO 1778 EXIST:!VMS:FUNCTION:
1431PEM_read_bio_P8_PRIV_KEY_INFO 1778 EXIST:VMS:FUNCTION:
1432d2i_PKCS8_bio 1779 EXIST::FUNCTION:BIO
1433d2i_PKCS8_PRIV_KEY_INFO_fp 1780 EXIST::FUNCTION:FP_API
1434PEM_write_bio_PKCS8_PRIV_KEY_INFO 1781 EXIST:!VMS:FUNCTION:
1435PEM_write_bio_P8_PRIV_KEY_INFO 1781 EXIST:VMS:FUNCTION:
1436PEM_read_PKCS8 1782 EXIST:!WIN16:FUNCTION:
1437d2i_PKCS8_PRIV_KEY_INFO_bio 1783 EXIST::FUNCTION:BIO
1438d2i_PKCS8_fp 1784 EXIST::FUNCTION:FP_API
1439PEM_write_PKCS8 1785 EXIST:!WIN16:FUNCTION:
1440PEM_read_PKCS8_PRIV_KEY_INFO 1786 EXIST:!VMS,!WIN16:FUNCTION:
1441PEM_read_P8_PRIV_KEY_INFO 1786 EXIST:VMS:FUNCTION:
1442PEM_read_bio_PKCS8 1787 EXIST::FUNCTION:
1443PEM_write_PKCS8_PRIV_KEY_INFO 1788 EXIST:!VMS,!WIN16:FUNCTION:
1444PEM_write_P8_PRIV_KEY_INFO 1788 EXIST:VMS:FUNCTION:
1445PKCS5_PBE_keyivgen 1789 EXIST::FUNCTION:
1446i2d_PKCS8_bio 1790 EXIST::FUNCTION:BIO
1447i2d_PKCS8_PRIV_KEY_INFO_fp 1791 EXIST::FUNCTION:FP_API
1448i2d_PKCS8_PRIV_KEY_INFO_bio 1792 EXIST::FUNCTION:BIO
1449BIO_s_bio 1793 EXIST::FUNCTION:
1450PKCS5_pbe2_set 1794 EXIST::FUNCTION:
1451PKCS5_PBKDF2_HMAC_SHA1 1795 EXIST::FUNCTION:
1452PKCS5_v2_PBE_keyivgen 1796 EXIST::FUNCTION:
1453PEM_write_bio_PKCS8PrivateKey 1797 EXIST::FUNCTION:
1454PEM_write_PKCS8PrivateKey 1798 EXIST::FUNCTION:
1455BIO_ctrl_get_read_request 1799 EXIST::FUNCTION:
1456BIO_ctrl_pending 1800 EXIST::FUNCTION:
1457BIO_ctrl_wpending 1801 EXIST::FUNCTION:
1458BIO_new_bio_pair 1802 EXIST::FUNCTION:
1459BIO_ctrl_get_write_guarantee 1803 EXIST::FUNCTION:
1460CRYPTO_num_locks 1804 EXIST::FUNCTION:
1461CONF_load_bio 1805 EXIST::FUNCTION:
1462CONF_load_fp 1806 EXIST::FUNCTION:FP_API
1463i2d_ASN1_SET_OF_ASN1_OBJECT 1837 NOEXIST::FUNCTION:
1464d2i_ASN1_SET_OF_ASN1_OBJECT 1844 NOEXIST::FUNCTION:
1465PKCS7_signatureVerify 1845 EXIST::FUNCTION:
1466RSA_set_method 1846 EXIST::FUNCTION:RSA
1467RSA_get_method 1847 EXIST::FUNCTION:RSA
1468RSA_get_default_method 1848 EXIST::FUNCTION:RSA
1469RSA_check_key 1869 EXIST::FUNCTION:RSA
1470OBJ_obj2txt 1870 EXIST::FUNCTION:
1471DSA_dup_DH 1871 EXIST::FUNCTION:DH,DSA
1472X509_REQ_get_extensions 1872 EXIST::FUNCTION:
1473X509_REQ_set_extension_nids 1873 EXIST::FUNCTION:
1474BIO_nwrite 1874 EXIST::FUNCTION:
1475X509_REQ_extension_nid 1875 EXIST::FUNCTION:
1476BIO_nread 1876 EXIST::FUNCTION:
1477X509_REQ_get_extension_nids 1877 EXIST::FUNCTION:
1478BIO_nwrite0 1878 EXIST::FUNCTION:
1479X509_REQ_add_extensions_nid 1879 EXIST::FUNCTION:
1480BIO_nread0 1880 EXIST::FUNCTION:
1481X509_REQ_add_extensions 1881 EXIST::FUNCTION:
1482BIO_new_mem_buf 1882 EXIST::FUNCTION:
1483DH_set_ex_data 1883 EXIST::FUNCTION:DH
1484DH_set_method 1884 EXIST::FUNCTION:DH
1485DSA_OpenSSL 1885 EXIST::FUNCTION:DSA
1486DH_get_ex_data 1886 EXIST::FUNCTION:DH
1487DH_get_ex_new_index 1887 EXIST::FUNCTION:DH
1488DSA_new_method 1888 EXIST::FUNCTION:DSA
1489DH_new_method 1889 EXIST::FUNCTION:DH
1490DH_OpenSSL 1890 EXIST::FUNCTION:DH
1491DSA_get_ex_new_index 1891 EXIST::FUNCTION:DSA
1492DH_get_default_method 1892 EXIST::FUNCTION:DH
1493DSA_set_ex_data 1893 EXIST::FUNCTION:DSA
1494DH_set_default_method 1894 EXIST::FUNCTION:DH
1495DSA_get_ex_data 1895 EXIST::FUNCTION:DSA
1496X509V3_EXT_REQ_add_conf 1896 EXIST::FUNCTION:
1497NETSCAPE_SPKI_print 1897 EXIST::FUNCTION:EVP
1498NETSCAPE_SPKI_set_pubkey 1898 EXIST::FUNCTION:EVP
1499NETSCAPE_SPKI_b64_encode 1899 EXIST::FUNCTION:EVP
1500NETSCAPE_SPKI_get_pubkey 1900 EXIST::FUNCTION:EVP
1501NETSCAPE_SPKI_b64_decode 1901 EXIST::FUNCTION:EVP
1502UTF8_putc 1902 EXIST::FUNCTION:
1503UTF8_getc 1903 EXIST::FUNCTION:
1504RSA_null_method 1904 EXIST::FUNCTION:RSA
1505ASN1_tag2str 1905 EXIST::FUNCTION:
1506BIO_ctrl_reset_read_request 1906 EXIST::FUNCTION:
1507DISPLAYTEXT_new 1907 EXIST::FUNCTION:
1508ASN1_GENERALIZEDTIME_free 1908 EXIST::FUNCTION:
1509X509_REVOKED_get_ext_d2i 1909 EXIST::FUNCTION:
1510X509_set_ex_data 1910 EXIST::FUNCTION:
1511X509_reject_set_bit_asc 1911 NOEXIST::FUNCTION:
1512X509_NAME_add_entry_by_txt 1912 EXIST::FUNCTION:
1513X509_NAME_add_entry_by_NID 1914 EXIST::FUNCTION:
1514X509_PURPOSE_get0 1915 EXIST::FUNCTION:
1515PEM_read_X509_AUX 1917 EXIST:!WIN16:FUNCTION:
1516d2i_AUTHORITY_INFO_ACCESS 1918 EXIST::FUNCTION:
1517PEM_write_PUBKEY 1921 EXIST:!WIN16:FUNCTION:
1518ACCESS_DESCRIPTION_new 1925 EXIST::FUNCTION:
1519X509_CERT_AUX_free 1926 EXIST::FUNCTION:
1520d2i_ACCESS_DESCRIPTION 1927 EXIST::FUNCTION:
1521X509_trust_clear 1928 EXIST::FUNCTION:
1522X509_TRUST_add 1931 EXIST::FUNCTION:
1523ASN1_VISIBLESTRING_new 1932 EXIST::FUNCTION:
1524X509_alias_set1 1933 EXIST::FUNCTION:
1525ASN1_PRINTABLESTRING_free 1934 EXIST::FUNCTION:
1526EVP_PKEY_get1_DSA 1935 EXIST::FUNCTION:DSA
1527ASN1_BMPSTRING_new 1936 EXIST::FUNCTION:
1528ASN1_mbstring_copy 1937 EXIST::FUNCTION:
1529ASN1_UTF8STRING_new 1938 EXIST::FUNCTION:
1530DSA_get_default_method 1941 EXIST::FUNCTION:DSA
1531i2d_ASN1_SET_OF_ACCESS_DESCRIPTION 1945 NOEXIST::FUNCTION:
1532ASN1_T61STRING_free 1946 EXIST::FUNCTION:
1533DSA_set_method 1949 EXIST::FUNCTION:DSA
1534X509_get_ex_data 1950 EXIST::FUNCTION:
1535ASN1_STRING_type 1951 EXIST::FUNCTION:
1536X509_PURPOSE_get_by_sname 1952 EXIST::FUNCTION:
1537ASN1_TIME_free 1954 EXIST::FUNCTION:
1538ASN1_OCTET_STRING_cmp 1955 EXIST::FUNCTION:
1539ASN1_BIT_STRING_new 1957 EXIST::FUNCTION:
1540X509_get_ext_d2i 1958 EXIST::FUNCTION:
1541PEM_read_bio_X509_AUX 1959 EXIST::FUNCTION:
1542ASN1_STRING_set_default_mask_asc 1960 EXIST:!VMS:FUNCTION:
1543ASN1_STRING_set_def_mask_asc 1960 EXIST:VMS:FUNCTION:
1544PEM_write_bio_RSA_PUBKEY 1961 EXIST::FUNCTION:RSA
1545ASN1_INTEGER_cmp 1963 EXIST::FUNCTION:
1546d2i_RSA_PUBKEY_fp 1964 EXIST::FUNCTION:FP_API,RSA
1547X509_trust_set_bit_asc 1967 NOEXIST::FUNCTION:
1548PEM_write_bio_DSA_PUBKEY 1968 EXIST::FUNCTION:DSA
1549X509_STORE_CTX_free 1969 EXIST::FUNCTION:
1550EVP_PKEY_set1_DSA 1970 EXIST::FUNCTION:DSA
1551i2d_DSA_PUBKEY_fp 1971 EXIST::FUNCTION:DSA,FP_API
1552X509_load_cert_crl_file 1972 EXIST::FUNCTION:STDIO
1553ASN1_TIME_new 1973 EXIST::FUNCTION:
1554i2d_RSA_PUBKEY 1974 EXIST::FUNCTION:RSA
1555X509_STORE_CTX_purpose_inherit 1976 EXIST::FUNCTION:
1556PEM_read_RSA_PUBKEY 1977 EXIST:!WIN16:FUNCTION:RSA
1557d2i_X509_AUX 1980 EXIST::FUNCTION:
1558i2d_DSA_PUBKEY 1981 EXIST::FUNCTION:DSA
1559X509_CERT_AUX_print 1982 EXIST::FUNCTION:BIO
1560PEM_read_DSA_PUBKEY 1984 EXIST:!WIN16:FUNCTION:DSA
1561i2d_RSA_PUBKEY_bio 1985 EXIST::FUNCTION:BIO,RSA
1562ASN1_BIT_STRING_num_asc 1986 EXIST::FUNCTION:
1563i2d_PUBKEY 1987 EXIST::FUNCTION:
1564ASN1_UTCTIME_free 1988 EXIST::FUNCTION:
1565DSA_set_default_method 1989 EXIST::FUNCTION:DSA
1566X509_PURPOSE_get_by_id 1990 EXIST::FUNCTION:
1567ACCESS_DESCRIPTION_free 1994 EXIST::FUNCTION:
1568PEM_read_bio_PUBKEY 1995 EXIST::FUNCTION:
1569ASN1_STRING_set_by_NID 1996 EXIST::FUNCTION:
1570X509_PURPOSE_get_id 1997 EXIST::FUNCTION:
1571DISPLAYTEXT_free 1998 EXIST::FUNCTION:
1572OTHERNAME_new 1999 EXIST::FUNCTION:
1573X509_CERT_AUX_new 2001 EXIST::FUNCTION:
1574X509_TRUST_cleanup 2007 EXIST::FUNCTION:
1575X509_NAME_add_entry_by_OBJ 2008 EXIST::FUNCTION:
1576X509_CRL_get_ext_d2i 2009 EXIST::FUNCTION:
1577X509_PURPOSE_get0_name 2011 EXIST::FUNCTION:
1578PEM_read_PUBKEY 2012 EXIST:!WIN16:FUNCTION:
1579i2d_DSA_PUBKEY_bio 2014 EXIST::FUNCTION:BIO,DSA
1580i2d_OTHERNAME 2015 EXIST::FUNCTION:
1581ASN1_OCTET_STRING_free 2016 EXIST::FUNCTION:
1582ASN1_BIT_STRING_set_asc 2017 EXIST::FUNCTION:
1583X509_get_ex_new_index 2019 EXIST::FUNCTION:
1584ASN1_STRING_TABLE_cleanup 2020 EXIST::FUNCTION:
1585X509_TRUST_get_by_id 2021 EXIST::FUNCTION:
1586X509_PURPOSE_get_trust 2022 EXIST::FUNCTION:
1587ASN1_STRING_length 2023 EXIST::FUNCTION:
1588d2i_ASN1_SET_OF_ACCESS_DESCRIPTION 2024 NOEXIST::FUNCTION:
1589ASN1_PRINTABLESTRING_new 2025 EXIST::FUNCTION:
1590X509V3_get_d2i 2026 EXIST::FUNCTION:
1591ASN1_ENUMERATED_free 2027 EXIST::FUNCTION:
1592i2d_X509_CERT_AUX 2028 EXIST::FUNCTION:
1593X509_STORE_CTX_set_trust 2030 EXIST::FUNCTION:
1594ASN1_STRING_set_default_mask 2032 EXIST::FUNCTION:
1595X509_STORE_CTX_new 2033 EXIST::FUNCTION:
1596EVP_PKEY_get1_RSA 2034 EXIST::FUNCTION:RSA
1597DIRECTORYSTRING_free 2038 EXIST::FUNCTION:
1598PEM_write_X509_AUX 2039 EXIST:!WIN16:FUNCTION:
1599ASN1_OCTET_STRING_set 2040 EXIST::FUNCTION:
1600d2i_DSA_PUBKEY_fp 2041 EXIST::FUNCTION:DSA,FP_API
1601d2i_RSA_PUBKEY 2044 EXIST::FUNCTION:RSA
1602X509_TRUST_get0_name 2046 EXIST::FUNCTION:
1603X509_TRUST_get0 2047 EXIST::FUNCTION:
1604AUTHORITY_INFO_ACCESS_free 2048 EXIST::FUNCTION:
1605ASN1_IA5STRING_new 2049 EXIST::FUNCTION:
1606d2i_DSA_PUBKEY 2050 EXIST::FUNCTION:DSA
1607X509_check_purpose 2051 EXIST::FUNCTION:
1608ASN1_ENUMERATED_new 2052 EXIST::FUNCTION:
1609d2i_RSA_PUBKEY_bio 2053 EXIST::FUNCTION:BIO,RSA
1610d2i_PUBKEY 2054 EXIST::FUNCTION:
1611X509_TRUST_get_trust 2055 EXIST::FUNCTION:
1612X509_TRUST_get_flags 2056 EXIST::FUNCTION:
1613ASN1_BMPSTRING_free 2057 EXIST::FUNCTION:
1614ASN1_T61STRING_new 2058 EXIST::FUNCTION:
1615ASN1_UTCTIME_new 2060 EXIST::FUNCTION:
1616i2d_AUTHORITY_INFO_ACCESS 2062 EXIST::FUNCTION:
1617EVP_PKEY_set1_RSA 2063 EXIST::FUNCTION:RSA
1618X509_STORE_CTX_set_purpose 2064 EXIST::FUNCTION:
1619ASN1_IA5STRING_free 2065 EXIST::FUNCTION:
1620PEM_write_bio_X509_AUX 2066 EXIST::FUNCTION:
1621X509_PURPOSE_get_count 2067 EXIST::FUNCTION:
1622CRYPTO_add_info 2068 NOEXIST::FUNCTION:
1623X509_NAME_ENTRY_create_by_txt 2071 EXIST::FUNCTION:
1624ASN1_STRING_get_default_mask 2072 EXIST::FUNCTION:
1625X509_alias_get0 2074 EXIST::FUNCTION:
1626ASN1_STRING_data 2075 EXIST::FUNCTION:
1627i2d_ACCESS_DESCRIPTION 2077 EXIST::FUNCTION:
1628X509_trust_set_bit 2078 NOEXIST::FUNCTION:
1629ASN1_BIT_STRING_free 2080 EXIST::FUNCTION:
1630PEM_read_bio_RSA_PUBKEY 2081 EXIST::FUNCTION:RSA
1631X509_add1_reject_object 2082 EXIST::FUNCTION:
1632X509_check_trust 2083 EXIST::FUNCTION:
1633PEM_read_bio_DSA_PUBKEY 2088 EXIST::FUNCTION:DSA
1634X509_PURPOSE_add 2090 EXIST::FUNCTION:
1635ASN1_STRING_TABLE_get 2091 EXIST::FUNCTION:
1636ASN1_UTF8STRING_free 2092 EXIST::FUNCTION:
1637d2i_DSA_PUBKEY_bio 2093 EXIST::FUNCTION:BIO,DSA
1638PEM_write_RSA_PUBKEY 2095 EXIST:!WIN16:FUNCTION:RSA
1639d2i_OTHERNAME 2096 EXIST::FUNCTION:
1640X509_reject_set_bit 2098 NOEXIST::FUNCTION:
1641PEM_write_DSA_PUBKEY 2101 EXIST:!WIN16:FUNCTION:DSA
1642X509_PURPOSE_get0_sname 2105 EXIST::FUNCTION:
1643EVP_PKEY_set1_DH 2107 EXIST::FUNCTION:DH
1644ASN1_OCTET_STRING_dup 2108 EXIST::FUNCTION:
1645ASN1_BIT_STRING_set 2109 EXIST::FUNCTION:
1646X509_TRUST_get_count 2110 EXIST::FUNCTION:
1647ASN1_INTEGER_free 2111 EXIST::FUNCTION:
1648OTHERNAME_free 2112 EXIST::FUNCTION:
1649i2d_RSA_PUBKEY_fp 2113 EXIST::FUNCTION:FP_API,RSA
1650ASN1_INTEGER_dup 2114 EXIST::FUNCTION:
1651d2i_X509_CERT_AUX 2115 EXIST::FUNCTION:
1652PEM_write_bio_PUBKEY 2117 EXIST::FUNCTION:
1653ASN1_VISIBLESTRING_free 2118 EXIST::FUNCTION:
1654X509_PURPOSE_cleanup 2119 EXIST::FUNCTION:
1655ASN1_mbstring_ncopy 2123 EXIST::FUNCTION:
1656ASN1_GENERALIZEDTIME_new 2126 EXIST::FUNCTION:
1657EVP_PKEY_get1_DH 2128 EXIST::FUNCTION:DH
1658ASN1_OCTET_STRING_new 2130 EXIST::FUNCTION:
1659ASN1_INTEGER_new 2131 EXIST::FUNCTION:
1660i2d_X509_AUX 2132 EXIST::FUNCTION:
1661ASN1_BIT_STRING_name_print 2134 EXIST::FUNCTION:BIO
1662X509_cmp 2135 EXIST::FUNCTION:
1663ASN1_STRING_length_set 2136 EXIST::FUNCTION:
1664DIRECTORYSTRING_new 2137 EXIST::FUNCTION:
1665X509_add1_trust_object 2140 EXIST::FUNCTION:
1666PKCS12_newpass 2141 EXIST::FUNCTION:
1667SMIME_write_PKCS7 2142 EXIST::FUNCTION:
1668SMIME_read_PKCS7 2143 EXIST::FUNCTION:
1669DES_set_key_checked 2144 EXIST::FUNCTION:DES
1670PKCS7_verify 2145 EXIST::FUNCTION:
1671PKCS7_encrypt 2146 EXIST::FUNCTION:
1672DES_set_key_unchecked 2147 EXIST::FUNCTION:DES
1673SMIME_crlf_copy 2148 EXIST::FUNCTION:
1674i2d_ASN1_PRINTABLESTRING 2149 EXIST::FUNCTION:
1675PKCS7_get0_signers 2150 EXIST::FUNCTION:
1676PKCS7_decrypt 2151 EXIST::FUNCTION:
1677SMIME_text 2152 EXIST::FUNCTION:
1678PKCS7_simple_smimecap 2153 EXIST::FUNCTION:
1679PKCS7_get_smimecap 2154 EXIST::FUNCTION:
1680PKCS7_sign 2155 EXIST::FUNCTION:
1681PKCS7_add_attrib_smimecap 2156 EXIST::FUNCTION:
1682CRYPTO_dbg_set_options 2157 EXIST::FUNCTION:
1683CRYPTO_remove_all_info 2158 EXIST::FUNCTION:
1684CRYPTO_get_mem_debug_functions 2159 EXIST::FUNCTION:
1685CRYPTO_is_mem_check_on 2160 EXIST::FUNCTION:
1686CRYPTO_set_mem_debug_functions 2161 EXIST::FUNCTION:
1687CRYPTO_pop_info 2162 EXIST::FUNCTION:
1688CRYPTO_push_info_ 2163 EXIST::FUNCTION:
1689CRYPTO_set_mem_debug_options 2164 EXIST::FUNCTION:
1690PEM_write_PKCS8PrivateKey_nid 2165 EXIST::FUNCTION:
1691PEM_write_bio_PKCS8PrivateKey_nid 2166 EXIST:!VMS:FUNCTION:
1692PEM_write_bio_PKCS8PrivKey_nid 2166 EXIST:VMS:FUNCTION:
1693d2i_PKCS8PrivateKey_bio 2167 EXIST::FUNCTION:
1694ASN1_NULL_free 2168 EXIST::FUNCTION:
1695d2i_ASN1_NULL 2169 EXIST::FUNCTION:
1696ASN1_NULL_new 2170 EXIST::FUNCTION:
1697i2d_PKCS8PrivateKey_bio 2171 EXIST::FUNCTION:
1698i2d_PKCS8PrivateKey_fp 2172 EXIST::FUNCTION:
1699i2d_ASN1_NULL 2173 EXIST::FUNCTION:
1700i2d_PKCS8PrivateKey_nid_fp 2174 EXIST::FUNCTION:
1701d2i_PKCS8PrivateKey_fp 2175 EXIST::FUNCTION:
1702i2d_PKCS8PrivateKey_nid_bio 2176 EXIST::FUNCTION:
1703i2d_PKCS8PrivateKeyInfo_fp 2177 EXIST::FUNCTION:FP_API
1704i2d_PKCS8PrivateKeyInfo_bio 2178 EXIST::FUNCTION:BIO
1705PEM_cb 2179 NOEXIST::FUNCTION:
1706i2d_PrivateKey_fp 2180 EXIST::FUNCTION:FP_API
1707d2i_PrivateKey_bio 2181 EXIST::FUNCTION:BIO
1708d2i_PrivateKey_fp 2182 EXIST::FUNCTION:FP_API
1709i2d_PrivateKey_bio 2183 EXIST::FUNCTION:BIO
1710X509_reject_clear 2184 EXIST::FUNCTION:
1711X509_TRUST_set_default 2185 EXIST::FUNCTION:
1712d2i_AutoPrivateKey 2186 EXIST::FUNCTION:
1713X509_ATTRIBUTE_get0_type 2187 EXIST::FUNCTION:
1714X509_ATTRIBUTE_set1_data 2188 EXIST::FUNCTION:
1715X509at_get_attr 2189 EXIST::FUNCTION:
1716X509at_get_attr_count 2190 EXIST::FUNCTION:
1717X509_ATTRIBUTE_create_by_NID 2191 EXIST::FUNCTION:
1718X509_ATTRIBUTE_set1_object 2192 EXIST::FUNCTION:
1719X509_ATTRIBUTE_count 2193 EXIST::FUNCTION:
1720X509_ATTRIBUTE_create_by_OBJ 2194 EXIST::FUNCTION:
1721X509_ATTRIBUTE_get0_object 2195 EXIST::FUNCTION:
1722X509at_get_attr_by_NID 2196 EXIST::FUNCTION:
1723X509at_add1_attr 2197 EXIST::FUNCTION:
1724X509_ATTRIBUTE_get0_data 2198 EXIST::FUNCTION:
1725X509at_delete_attr 2199 EXIST::FUNCTION:
1726X509at_get_attr_by_OBJ 2200 EXIST::FUNCTION:
1727RAND_add 2201 EXIST::FUNCTION:
1728BIO_number_written 2202 EXIST::FUNCTION:
1729BIO_number_read 2203 EXIST::FUNCTION:
1730X509_STORE_CTX_get1_chain 2204 EXIST::FUNCTION:
1731ERR_load_RAND_strings 2205 EXIST::FUNCTION:
1732RAND_pseudo_bytes 2206 EXIST::FUNCTION:
1733X509_REQ_get_attr_by_NID 2207 EXIST::FUNCTION:
1734X509_REQ_get_attr 2208 EXIST::FUNCTION:
1735X509_REQ_add1_attr_by_NID 2209 EXIST::FUNCTION:
1736X509_REQ_get_attr_by_OBJ 2210 EXIST::FUNCTION:
1737X509at_add1_attr_by_NID 2211 EXIST::FUNCTION:
1738X509_REQ_add1_attr_by_OBJ 2212 EXIST::FUNCTION:
1739X509_REQ_get_attr_count 2213 EXIST::FUNCTION:
1740X509_REQ_add1_attr 2214 EXIST::FUNCTION:
1741X509_REQ_delete_attr 2215 EXIST::FUNCTION:
1742X509at_add1_attr_by_OBJ 2216 EXIST::FUNCTION:
1743X509_REQ_add1_attr_by_txt 2217 EXIST::FUNCTION:
1744X509_ATTRIBUTE_create_by_txt 2218 EXIST::FUNCTION:
1745X509at_add1_attr_by_txt 2219 EXIST::FUNCTION:
1746BN_pseudo_rand 2239 EXIST::FUNCTION:
1747BN_is_prime_fasttest 2240 EXIST::FUNCTION:
1748BN_CTX_end 2241 EXIST::FUNCTION:
1749BN_CTX_start 2242 EXIST::FUNCTION:
1750BN_CTX_get 2243 EXIST::FUNCTION:
1751EVP_PKEY2PKCS8_broken 2244 EXIST::FUNCTION:
1752ASN1_STRING_TABLE_add 2245 EXIST::FUNCTION:
1753CRYPTO_dbg_get_options 2246 EXIST::FUNCTION:
1754AUTHORITY_INFO_ACCESS_new 2247 EXIST::FUNCTION:
1755CRYPTO_get_mem_debug_options 2248 EXIST::FUNCTION:
1756DES_crypt 2249 EXIST::FUNCTION:DES
1757PEM_write_bio_X509_REQ_NEW 2250 EXIST::FUNCTION:
1758PEM_write_X509_REQ_NEW 2251 EXIST:!WIN16:FUNCTION:
1759BIO_callback_ctrl 2252 EXIST::FUNCTION:
1760RAND_egd 2253 EXIST::FUNCTION:
1761RAND_status 2254 EXIST::FUNCTION:
1762bn_dump1 2255 NOEXIST::FUNCTION:
1763DES_check_key_parity 2256 EXIST::FUNCTION:DES
1764lh_num_items 2257 EXIST::FUNCTION:
1765RAND_event 2258 EXIST:WIN32:FUNCTION:
1766DSO_new 2259 EXIST::FUNCTION:
1767DSO_new_method 2260 EXIST::FUNCTION:
1768DSO_free 2261 EXIST::FUNCTION:
1769DSO_flags 2262 EXIST::FUNCTION:
1770DSO_up 2263 NOEXIST::FUNCTION:
1771DSO_set_default_method 2264 EXIST::FUNCTION:
1772DSO_get_default_method 2265 EXIST::FUNCTION:
1773DSO_get_method 2266 EXIST::FUNCTION:
1774DSO_set_method 2267 EXIST::FUNCTION:
1775DSO_load 2268 EXIST::FUNCTION:
1776DSO_bind_var 2269 EXIST::FUNCTION:
1777DSO_METHOD_null 2270 EXIST::FUNCTION:
1778DSO_METHOD_openssl 2271 EXIST::FUNCTION:
1779DSO_METHOD_dlfcn 2272 EXIST::FUNCTION:
1780DSO_METHOD_win32 2273 EXIST::FUNCTION:
1781ERR_load_DSO_strings 2274 EXIST::FUNCTION:
1782DSO_METHOD_dl 2275 EXIST::FUNCTION:
1783NCONF_load 2276 EXIST::FUNCTION:
1784NCONF_load_fp 2278 EXIST::FUNCTION:FP_API
1785NCONF_new 2279 EXIST::FUNCTION:
1786NCONF_get_string 2280 EXIST::FUNCTION:
1787NCONF_free 2281 EXIST::FUNCTION:
1788NCONF_get_number 2282 NOEXIST::FUNCTION:
1789CONF_dump_fp 2283 EXIST::FUNCTION:
1790NCONF_load_bio 2284 EXIST::FUNCTION:
1791NCONF_dump_fp 2285 EXIST::FUNCTION:
1792NCONF_get_section 2286 EXIST::FUNCTION:
1793NCONF_dump_bio 2287 EXIST::FUNCTION:
1794CONF_dump_bio 2288 EXIST::FUNCTION:
1795NCONF_free_data 2289 EXIST::FUNCTION:
1796CONF_set_default_method 2290 EXIST::FUNCTION:
1797ERR_error_string_n 2291 EXIST::FUNCTION:
1798BIO_snprintf 2292 EXIST::FUNCTION:
1799DSO_ctrl 2293 EXIST::FUNCTION:
1800i2d_ASN1_SET_OF_ASN1_INTEGER 2317 NOEXIST::FUNCTION:
1801i2d_ASN1_SET_OF_PKCS12_SAFEBAG 2320 NOEXIST::FUNCTION:
1802i2d_ASN1_SET_OF_PKCS7 2328 NOEXIST::FUNCTION:
1803BIO_vfree 2334 EXIST::FUNCTION:
1804d2i_ASN1_SET_OF_ASN1_INTEGER 2339 NOEXIST::FUNCTION:
1805d2i_ASN1_SET_OF_PKCS12_SAFEBAG 2341 NOEXIST::FUNCTION:
1806ASN1_UTCTIME_get 2350 NOEXIST::FUNCTION:
1807X509_REQ_digest 2362 EXIST::FUNCTION:EVP
1808X509_CRL_digest 2391 EXIST::FUNCTION:EVP
1809d2i_ASN1_SET_OF_PKCS7 2397 NOEXIST::FUNCTION:
1810EVP_CIPHER_CTX_set_key_length 2399 EXIST::FUNCTION:
1811EVP_CIPHER_CTX_ctrl 2400 EXIST::FUNCTION:
1812BN_mod_exp_mont_word 2401 EXIST::FUNCTION:
1813RAND_egd_bytes 2402 EXIST::FUNCTION:
1814X509_REQ_get1_email 2403 EXIST::FUNCTION:
1815X509_get1_email 2404 EXIST::FUNCTION:
1816X509_email_free 2405 EXIST::FUNCTION:
1817i2d_RSA_NET 2406 EXIST::FUNCTION:RSA
1818d2i_RSA_NET_2 2407 NOEXIST::FUNCTION:
1819d2i_RSA_NET 2408 EXIST::FUNCTION:RSA
1820DSO_bind_func 2409 EXIST::FUNCTION:
1821CRYPTO_get_new_dynlockid 2410 EXIST::FUNCTION:
1822sk_new_null 2411 EXIST::FUNCTION:
1823CRYPTO_set_dynlock_destroy_callback 2412 EXIST:!VMS:FUNCTION:
1824CRYPTO_set_dynlock_destroy_cb 2412 EXIST:VMS:FUNCTION:
1825CRYPTO_destroy_dynlockid 2413 EXIST::FUNCTION:
1826CRYPTO_set_dynlock_size 2414 NOEXIST::FUNCTION:
1827CRYPTO_set_dynlock_create_callback 2415 EXIST:!VMS:FUNCTION:
1828CRYPTO_set_dynlock_create_cb 2415 EXIST:VMS:FUNCTION:
1829CRYPTO_set_dynlock_lock_callback 2416 EXIST:!VMS:FUNCTION:
1830CRYPTO_set_dynlock_lock_cb 2416 EXIST:VMS:FUNCTION:
1831CRYPTO_get_dynlock_lock_callback 2417 EXIST:!VMS:FUNCTION:
1832CRYPTO_get_dynlock_lock_cb 2417 EXIST:VMS:FUNCTION:
1833CRYPTO_get_dynlock_destroy_callback 2418 EXIST:!VMS:FUNCTION:
1834CRYPTO_get_dynlock_destroy_cb 2418 EXIST:VMS:FUNCTION:
1835CRYPTO_get_dynlock_value 2419 EXIST::FUNCTION:
1836CRYPTO_get_dynlock_create_callback 2420 EXIST:!VMS:FUNCTION:
1837CRYPTO_get_dynlock_create_cb 2420 EXIST:VMS:FUNCTION:
1838c2i_ASN1_BIT_STRING 2421 EXIST::FUNCTION:
1839i2c_ASN1_BIT_STRING 2422 EXIST::FUNCTION:
1840RAND_poll 2423 EXIST::FUNCTION:
1841c2i_ASN1_INTEGER 2424 EXIST::FUNCTION:
1842i2c_ASN1_INTEGER 2425 EXIST::FUNCTION:
1843BIO_dump_indent 2426 EXIST::FUNCTION:
1844ASN1_parse_dump 2427 EXIST::FUNCTION:BIO
1845c2i_ASN1_OBJECT 2428 EXIST::FUNCTION:
1846X509_NAME_print_ex_fp 2429 EXIST::FUNCTION:FP_API
1847ASN1_STRING_print_ex_fp 2430 EXIST::FUNCTION:FP_API
1848X509_NAME_print_ex 2431 EXIST::FUNCTION:BIO
1849ASN1_STRING_print_ex 2432 EXIST::FUNCTION:BIO
1850MD4 2433 EXIST::FUNCTION:MD4
1851MD4_Transform 2434 EXIST::FUNCTION:MD4
1852MD4_Final 2435 EXIST::FUNCTION:MD4
1853MD4_Update 2436 EXIST::FUNCTION:MD4
1854MD4_Init 2437 EXIST::FUNCTION:MD4
1855EVP_md4 2438 EXIST::FUNCTION:MD4
1856i2d_PUBKEY_bio 2439 EXIST::FUNCTION:BIO
1857i2d_PUBKEY_fp 2440 EXIST::FUNCTION:FP_API
1858d2i_PUBKEY_bio 2441 EXIST::FUNCTION:BIO
1859ASN1_STRING_to_UTF8 2442 EXIST::FUNCTION:
1860BIO_vprintf 2443 EXIST::FUNCTION:
1861BIO_vsnprintf 2444 EXIST::FUNCTION:
1862d2i_PUBKEY_fp 2445 EXIST::FUNCTION:FP_API
1863X509_cmp_time 2446 EXIST::FUNCTION:
1864X509_STORE_CTX_set_time 2447 EXIST::FUNCTION:
1865X509_STORE_CTX_get1_issuer 2448 EXIST::FUNCTION:
1866X509_OBJECT_retrieve_match 2449 EXIST::FUNCTION:
1867X509_OBJECT_idx_by_subject 2450 EXIST::FUNCTION:
1868X509_STORE_CTX_set_flags 2451 EXIST::FUNCTION:
1869X509_STORE_CTX_trusted_stack 2452 EXIST::FUNCTION:
1870X509_time_adj 2453 EXIST::FUNCTION:
1871X509_check_issued 2454 EXIST::FUNCTION:
1872ASN1_UTCTIME_cmp_time_t 2455 EXIST::FUNCTION:
1873DES_set_weak_key_flag 2456 NOEXIST::FUNCTION:
1874DES_check_key 2457 NOEXIST::FUNCTION:
1875DES_rw_mode 2458 NOEXIST::FUNCTION:
1876RSA_PKCS1_RSAref 2459 NOEXIST::FUNCTION:
1877X509_keyid_set1 2460 EXIST::FUNCTION:
1878BIO_next 2461 EXIST::FUNCTION:
1879DSO_METHOD_vms 2462 EXIST::FUNCTION:
1880BIO_f_linebuffer 2463 EXIST:VMS:FUNCTION:
1881BN_bntest_rand 2464 EXIST::FUNCTION:
1882OPENSSL_issetugid 2465 EXIST::FUNCTION:
1883BN_rand_range 2466 EXIST::FUNCTION:
1884ERR_load_ENGINE_strings 2467 EXIST::FUNCTION:
1885ENGINE_set_DSA 2468 EXIST::FUNCTION:
1886ENGINE_get_finish_function 2469 EXIST::FUNCTION:
1887ENGINE_get_default_RSA 2470 EXIST::FUNCTION:
1888ENGINE_get_BN_mod_exp 2471 NOEXIST::FUNCTION:
1889DSA_get_default_openssl_method 2472 NOEXIST::FUNCTION:
1890ENGINE_set_DH 2473 EXIST::FUNCTION:
1891ENGINE_set_def_BN_mod_exp_crt 2474 NOEXIST::FUNCTION:
1892ENGINE_set_default_BN_mod_exp_crt 2474 NOEXIST::FUNCTION:
1893ENGINE_init 2475 EXIST::FUNCTION:
1894DH_get_default_openssl_method 2476 NOEXIST::FUNCTION:
1895RSA_set_default_openssl_method 2477 NOEXIST::FUNCTION:
1896ENGINE_finish 2478 EXIST::FUNCTION:
1897ENGINE_load_public_key 2479 EXIST::FUNCTION:
1898ENGINE_get_DH 2480 EXIST::FUNCTION:
1899ENGINE_ctrl 2481 EXIST::FUNCTION:
1900ENGINE_get_init_function 2482 EXIST::FUNCTION:
1901ENGINE_set_init_function 2483 EXIST::FUNCTION:
1902ENGINE_set_default_DSA 2484 EXIST::FUNCTION:
1903ENGINE_get_name 2485 EXIST::FUNCTION:
1904ENGINE_get_last 2486 EXIST::FUNCTION:
1905ENGINE_get_prev 2487 EXIST::FUNCTION:
1906ENGINE_get_default_DH 2488 EXIST::FUNCTION:
1907ENGINE_get_RSA 2489 EXIST::FUNCTION:
1908ENGINE_set_default 2490 EXIST::FUNCTION:
1909ENGINE_get_RAND 2491 EXIST::FUNCTION:
1910ENGINE_get_first 2492 EXIST::FUNCTION:
1911ENGINE_by_id 2493 EXIST::FUNCTION:
1912ENGINE_set_finish_function 2494 EXIST::FUNCTION:
1913ENGINE_get_def_BN_mod_exp_crt 2495 NOEXIST::FUNCTION:
1914ENGINE_get_default_BN_mod_exp_crt 2495 NOEXIST::FUNCTION:
1915RSA_get_default_openssl_method 2496 NOEXIST::FUNCTION:
1916ENGINE_set_RSA 2497 EXIST::FUNCTION:
1917ENGINE_load_private_key 2498 EXIST::FUNCTION:
1918ENGINE_set_default_RAND 2499 EXIST::FUNCTION:
1919ENGINE_set_BN_mod_exp 2500 NOEXIST::FUNCTION:
1920ENGINE_remove 2501 EXIST::FUNCTION:
1921ENGINE_free 2502 EXIST::FUNCTION:
1922ENGINE_get_BN_mod_exp_crt 2503 NOEXIST::FUNCTION:
1923ENGINE_get_next 2504 EXIST::FUNCTION:
1924ENGINE_set_name 2505 EXIST::FUNCTION:
1925ENGINE_get_default_DSA 2506 EXIST::FUNCTION:
1926ENGINE_set_default_BN_mod_exp 2507 NOEXIST::FUNCTION:
1927ENGINE_set_default_RSA 2508 EXIST::FUNCTION:
1928ENGINE_get_default_RAND 2509 EXIST::FUNCTION:
1929ENGINE_get_default_BN_mod_exp 2510 NOEXIST::FUNCTION:
1930ENGINE_set_RAND 2511 EXIST::FUNCTION:
1931ENGINE_set_id 2512 EXIST::FUNCTION:
1932ENGINE_set_BN_mod_exp_crt 2513 NOEXIST::FUNCTION:
1933ENGINE_set_default_DH 2514 EXIST::FUNCTION:
1934ENGINE_new 2515 EXIST::FUNCTION:
1935ENGINE_get_id 2516 EXIST::FUNCTION:
1936DSA_set_default_openssl_method 2517 NOEXIST::FUNCTION:
1937ENGINE_add 2518 EXIST::FUNCTION:
1938DH_set_default_openssl_method 2519 NOEXIST::FUNCTION:
1939ENGINE_get_DSA 2520 EXIST::FUNCTION:
1940ENGINE_get_ctrl_function 2521 EXIST::FUNCTION:
1941ENGINE_set_ctrl_function 2522 EXIST::FUNCTION:
1942BN_pseudo_rand_range 2523 EXIST::FUNCTION:
1943X509_STORE_CTX_set_verify_cb 2524 EXIST::FUNCTION:
1944ERR_load_COMP_strings 2525 EXIST::FUNCTION:
1945PKCS12_item_decrypt_d2i 2526 EXIST::FUNCTION:
1946ASN1_UTF8STRING_it 2527 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
1947ASN1_UTF8STRING_it 2527 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
1948ENGINE_unregister_ciphers 2528 EXIST::FUNCTION:
1949ENGINE_get_ciphers 2529 EXIST::FUNCTION:
1950d2i_OCSP_BASICRESP 2530 EXIST::FUNCTION:
1951KRB5_CHECKSUM_it 2531 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
1952KRB5_CHECKSUM_it 2531 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
1953EC_POINT_add 2532 EXIST::FUNCTION:EC
1954ASN1_item_ex_i2d 2533 EXIST::FUNCTION:
1955OCSP_CERTID_it 2534 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
1956OCSP_CERTID_it 2534 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
1957d2i_OCSP_RESPBYTES 2535 EXIST::FUNCTION:
1958X509V3_add1_i2d 2536 EXIST::FUNCTION:
1959PKCS7_ENVELOPE_it 2537 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
1960PKCS7_ENVELOPE_it 2537 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
1961UI_add_input_boolean 2538 EXIST::FUNCTION:
1962ENGINE_unregister_RSA 2539 EXIST::FUNCTION:
1963X509V3_EXT_nconf 2540 EXIST::FUNCTION:
1964ASN1_GENERALSTRING_free 2541 EXIST::FUNCTION:
1965d2i_OCSP_CERTSTATUS 2542 EXIST::FUNCTION:
1966X509_REVOKED_set_serialNumber 2543 EXIST::FUNCTION:
1967X509_print_ex 2544 EXIST::FUNCTION:BIO
1968OCSP_ONEREQ_get1_ext_d2i 2545 EXIST::FUNCTION:
1969ENGINE_register_all_RAND 2546 EXIST::FUNCTION:
1970ENGINE_load_dynamic 2547 EXIST::FUNCTION:
1971PBKDF2PARAM_it 2548 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
1972PBKDF2PARAM_it 2548 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
1973EXTENDED_KEY_USAGE_new 2549 EXIST::FUNCTION:
1974EC_GROUP_clear_free 2550 EXIST::FUNCTION:EC
1975OCSP_sendreq_bio 2551 EXIST::FUNCTION:
1976ASN1_item_digest 2552 EXIST::FUNCTION:EVP
1977OCSP_BASICRESP_delete_ext 2553 EXIST::FUNCTION:
1978OCSP_SIGNATURE_it 2554 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
1979OCSP_SIGNATURE_it 2554 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
1980X509_CRL_it 2555 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
1981X509_CRL_it 2555 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
1982OCSP_BASICRESP_add_ext 2556 EXIST::FUNCTION:
1983KRB5_ENCKEY_it 2557 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
1984KRB5_ENCKEY_it 2557 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
1985UI_method_set_closer 2558 EXIST::FUNCTION:
1986X509_STORE_set_purpose 2559 EXIST::FUNCTION:
1987i2d_ASN1_GENERALSTRING 2560 EXIST::FUNCTION:
1988OCSP_response_status 2561 EXIST::FUNCTION:
1989i2d_OCSP_SERVICELOC 2562 EXIST::FUNCTION:
1990ENGINE_get_digest_engine 2563 EXIST::FUNCTION:
1991EC_GROUP_set_curve_GFp 2564 EXIST::FUNCTION:EC
1992OCSP_REQUEST_get_ext_by_OBJ 2565 EXIST::FUNCTION:
1993_ossl_old_des_random_key 2566 EXIST::FUNCTION:DES
1994ASN1_T61STRING_it 2567 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
1995ASN1_T61STRING_it 2567 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
1996EC_GROUP_method_of 2568 EXIST::FUNCTION:EC
1997i2d_KRB5_APREQ 2569 EXIST::FUNCTION:
1998_ossl_old_des_encrypt 2570 EXIST::FUNCTION:DES
1999ASN1_PRINTABLE_new 2571 EXIST::FUNCTION:
2000HMAC_Init_ex 2572 EXIST::FUNCTION:HMAC
2001d2i_KRB5_AUTHENT 2573 EXIST::FUNCTION:
2002OCSP_archive_cutoff_new 2574 EXIST::FUNCTION:
2003EC_POINT_set_Jprojective_coordinates_GFp 2575 EXIST:!VMS:FUNCTION:EC
2004EC_POINT_set_Jproj_coords_GFp 2575 EXIST:VMS:FUNCTION:EC
2005_ossl_old_des_is_weak_key 2576 EXIST::FUNCTION:DES
2006OCSP_BASICRESP_get_ext_by_OBJ 2577 EXIST::FUNCTION:
2007EC_POINT_oct2point 2578 EXIST::FUNCTION:EC
2008OCSP_SINGLERESP_get_ext_count 2579 EXIST::FUNCTION:
2009UI_ctrl 2580 EXIST::FUNCTION:
2010_shadow_DES_rw_mode 2581 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:DES
2011_shadow_DES_rw_mode 2581 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:DES
2012asn1_do_adb 2582 EXIST::FUNCTION:
2013ASN1_template_i2d 2583 EXIST::FUNCTION:
2014ENGINE_register_DH 2584 EXIST::FUNCTION:
2015UI_construct_prompt 2585 EXIST::FUNCTION:
2016X509_STORE_set_trust 2586 EXIST::FUNCTION:
2017UI_dup_input_string 2587 EXIST::FUNCTION:
2018d2i_KRB5_APREQ 2588 EXIST::FUNCTION:
2019EVP_MD_CTX_copy_ex 2589 EXIST::FUNCTION:
2020OCSP_request_is_signed 2590 EXIST::FUNCTION:
2021i2d_OCSP_REQINFO 2591 EXIST::FUNCTION:
2022KRB5_ENCKEY_free 2592 EXIST::FUNCTION:
2023OCSP_resp_get0 2593 EXIST::FUNCTION:
2024GENERAL_NAME_it 2594 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2025GENERAL_NAME_it 2594 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2026ASN1_GENERALIZEDTIME_it 2595 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2027ASN1_GENERALIZEDTIME_it 2595 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2028X509_STORE_set_flags 2596 EXIST::FUNCTION:
2029EC_POINT_set_compressed_coordinates_GFp 2597 EXIST:!VMS:FUNCTION:EC
2030EC_POINT_set_compr_coords_GFp 2597 EXIST:VMS:FUNCTION:EC
2031OCSP_response_status_str 2598 EXIST::FUNCTION:
2032d2i_OCSP_REVOKEDINFO 2599 EXIST::FUNCTION:
2033OCSP_basic_add1_cert 2600 EXIST::FUNCTION:
2034ERR_get_implementation 2601 EXIST::FUNCTION:
2035EVP_CipherFinal_ex 2602 EXIST::FUNCTION:
2036OCSP_CERTSTATUS_new 2603 EXIST::FUNCTION:
2037CRYPTO_cleanup_all_ex_data 2604 EXIST::FUNCTION:
2038OCSP_resp_find 2605 EXIST::FUNCTION:
2039BN_nnmod 2606 EXIST::FUNCTION:
2040X509_CRL_sort 2607 EXIST::FUNCTION:
2041X509_REVOKED_set_revocationDate 2608 EXIST::FUNCTION:
2042ENGINE_register_RAND 2609 EXIST::FUNCTION:
2043OCSP_SERVICELOC_new 2610 EXIST::FUNCTION:
2044EC_POINT_set_affine_coordinates_GFp 2611 EXIST:!VMS:FUNCTION:EC
2045EC_POINT_set_affine_coords_GFp 2611 EXIST:VMS:FUNCTION:EC
2046_ossl_old_des_options 2612 EXIST::FUNCTION:DES
2047SXNET_it 2613 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2048SXNET_it 2613 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2049UI_dup_input_boolean 2614 EXIST::FUNCTION:
2050PKCS12_add_CSPName_asc 2615 EXIST::FUNCTION:
2051EC_POINT_is_at_infinity 2616 EXIST::FUNCTION:EC
2052ENGINE_load_openbsd_dev_crypto 2617 EXIST::FUNCTION:
2053DSO_convert_filename 2618 EXIST::FUNCTION:
2054POLICYQUALINFO_it 2619 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2055POLICYQUALINFO_it 2619 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2056ENGINE_register_ciphers 2620 EXIST::FUNCTION:
2057BN_mod_lshift_quick 2621 EXIST::FUNCTION:
2058DSO_set_filename 2622 EXIST::FUNCTION:
2059ASN1_item_free 2623 EXIST::FUNCTION:
2060KRB5_TKTBODY_free 2624 EXIST::FUNCTION:
2061AUTHORITY_KEYID_it 2625 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2062AUTHORITY_KEYID_it 2625 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2063KRB5_APREQBODY_new 2626 EXIST::FUNCTION:
2064X509V3_EXT_REQ_add_nconf 2627 EXIST::FUNCTION:
2065ENGINE_ctrl_cmd_string 2628 EXIST::FUNCTION:
2066i2d_OCSP_RESPDATA 2629 EXIST::FUNCTION:
2067EVP_MD_CTX_init 2630 EXIST::FUNCTION:
2068EXTENDED_KEY_USAGE_free 2631 EXIST::FUNCTION:
2069PKCS7_ATTR_SIGN_it 2632 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2070PKCS7_ATTR_SIGN_it 2632 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2071UI_add_error_string 2633 EXIST::FUNCTION:
2072KRB5_CHECKSUM_free 2634 EXIST::FUNCTION:
2073OCSP_REQUEST_get_ext 2635 EXIST::FUNCTION:
2074ENGINE_load_ubsec 2636 EXIST::FUNCTION:
2075ENGINE_register_all_digests 2637 EXIST::FUNCTION:
2076PKEY_USAGE_PERIOD_it 2638 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2077PKEY_USAGE_PERIOD_it 2638 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2078PKCS12_unpack_authsafes 2639 EXIST::FUNCTION:
2079ASN1_item_unpack 2640 EXIST::FUNCTION:
2080NETSCAPE_SPKAC_it 2641 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2081NETSCAPE_SPKAC_it 2641 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2082X509_REVOKED_it 2642 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2083X509_REVOKED_it 2642 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2084ASN1_STRING_encode 2643 EXIST::FUNCTION:
2085EVP_aes_128_ecb 2644 EXIST::FUNCTION:AES
2086KRB5_AUTHENT_free 2645 EXIST::FUNCTION:
2087OCSP_BASICRESP_get_ext_by_critical 2646 EXIST:!VMS:FUNCTION:
2088OCSP_BASICRESP_get_ext_by_crit 2646 EXIST:VMS:FUNCTION:
2089OCSP_cert_status_str 2647 EXIST::FUNCTION:
2090d2i_OCSP_REQUEST 2648 EXIST::FUNCTION:
2091UI_dup_info_string 2649 EXIST::FUNCTION:
2092_ossl_old_des_xwhite_in2out 2650 EXIST::FUNCTION:DES
2093PKCS12_it 2651 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2094PKCS12_it 2651 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2095OCSP_SINGLERESP_get_ext_by_critical 2652 EXIST:!VMS:FUNCTION:
2096OCSP_SINGLERESP_get_ext_by_crit 2652 EXIST:VMS:FUNCTION:
2097OCSP_CERTSTATUS_free 2653 EXIST::FUNCTION:
2098_ossl_old_des_crypt 2654 EXIST::FUNCTION:DES
2099ASN1_item_i2d 2655 EXIST::FUNCTION:
2100EVP_DecryptFinal_ex 2656 EXIST::FUNCTION:
2101ENGINE_load_openssl 2657 EXIST::FUNCTION:
2102ENGINE_get_cmd_defns 2658 EXIST::FUNCTION:
2103ENGINE_set_load_privkey_function 2659 EXIST:!VMS:FUNCTION:
2104ENGINE_set_load_privkey_fn 2659 EXIST:VMS:FUNCTION:
2105EVP_EncryptFinal_ex 2660 EXIST::FUNCTION:
2106ENGINE_set_default_digests 2661 EXIST::FUNCTION:
2107X509_get0_pubkey_bitstr 2662 EXIST::FUNCTION:
2108asn1_ex_i2c 2663 EXIST::FUNCTION:
2109ENGINE_register_RSA 2664 EXIST::FUNCTION:
2110ENGINE_unregister_DSA 2665 EXIST::FUNCTION:
2111_ossl_old_des_key_sched 2666 EXIST::FUNCTION:DES
2112X509_EXTENSION_it 2667 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2113X509_EXTENSION_it 2667 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2114i2d_KRB5_AUTHENT 2668 EXIST::FUNCTION:
2115SXNETID_it 2669 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2116SXNETID_it 2669 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2117d2i_OCSP_SINGLERESP 2670 EXIST::FUNCTION:
2118EDIPARTYNAME_new 2671 EXIST::FUNCTION:
2119PKCS12_certbag2x509 2672 EXIST::FUNCTION:
2120_ossl_old_des_ofb64_encrypt 2673 EXIST::FUNCTION:DES
2121d2i_EXTENDED_KEY_USAGE 2674 EXIST::FUNCTION:
2122ERR_print_errors_cb 2675 EXIST::FUNCTION:
2123ENGINE_set_ciphers 2676 EXIST::FUNCTION:
2124d2i_KRB5_APREQBODY 2677 EXIST::FUNCTION:
2125UI_method_get_flusher 2678 EXIST::FUNCTION:
2126X509_PUBKEY_it 2679 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2127X509_PUBKEY_it 2679 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2128_ossl_old_des_enc_read 2680 EXIST::FUNCTION:DES
2129PKCS7_ENCRYPT_it 2681 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2130PKCS7_ENCRYPT_it 2681 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2131i2d_OCSP_RESPONSE 2682 EXIST::FUNCTION:
2132EC_GROUP_get_cofactor 2683 EXIST::FUNCTION:EC
2133PKCS12_unpack_p7data 2684 EXIST::FUNCTION:
2134d2i_KRB5_AUTHDATA 2685 EXIST::FUNCTION:
2135OCSP_copy_nonce 2686 EXIST::FUNCTION:
2136KRB5_AUTHDATA_new 2687 EXIST::FUNCTION:
2137OCSP_RESPDATA_new 2688 EXIST::FUNCTION:
2138EC_GFp_mont_method 2689 EXIST::FUNCTION:EC
2139OCSP_REVOKEDINFO_free 2690 EXIST::FUNCTION:
2140UI_get_ex_data 2691 EXIST::FUNCTION:
2141KRB5_APREQBODY_free 2692 EXIST::FUNCTION:
2142EC_GROUP_get0_generator 2693 EXIST::FUNCTION:EC
2143UI_get_default_method 2694 EXIST::FUNCTION:
2144X509V3_set_nconf 2695 EXIST::FUNCTION:
2145PKCS12_item_i2d_encrypt 2696 EXIST::FUNCTION:
2146X509_add1_ext_i2d 2697 EXIST::FUNCTION:
2147PKCS7_SIGNER_INFO_it 2698 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2148PKCS7_SIGNER_INFO_it 2698 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2149KRB5_PRINCNAME_new 2699 EXIST::FUNCTION:
2150PKCS12_SAFEBAG_it 2700 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2151PKCS12_SAFEBAG_it 2700 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2152EC_GROUP_get_order 2701 EXIST::FUNCTION:EC
2153d2i_OCSP_RESPID 2702 EXIST::FUNCTION:
2154OCSP_request_verify 2703 EXIST::FUNCTION:
2155NCONF_get_number_e 2704 EXIST::FUNCTION:
2156_ossl_old_des_decrypt3 2705 EXIST::FUNCTION:DES
2157X509_signature_print 2706 EXIST::FUNCTION:EVP
2158OCSP_SINGLERESP_free 2707 EXIST::FUNCTION:
2159ENGINE_load_builtin_engines 2708 EXIST::FUNCTION:
2160i2d_OCSP_ONEREQ 2709 EXIST::FUNCTION:
2161OCSP_REQUEST_add_ext 2710 EXIST::FUNCTION:
2162OCSP_RESPBYTES_new 2711 EXIST::FUNCTION:
2163EVP_MD_CTX_create 2712 EXIST::FUNCTION:
2164OCSP_resp_find_status 2713 EXIST::FUNCTION:
2165X509_ALGOR_it 2714 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2166X509_ALGOR_it 2714 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2167ASN1_TIME_it 2715 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2168ASN1_TIME_it 2715 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2169OCSP_request_set1_name 2716 EXIST::FUNCTION:
2170OCSP_ONEREQ_get_ext_count 2717 EXIST::FUNCTION:
2171UI_get0_result 2718 EXIST::FUNCTION:
2172PKCS12_AUTHSAFES_it 2719 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2173PKCS12_AUTHSAFES_it 2719 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2174EVP_aes_256_ecb 2720 EXIST::FUNCTION:AES
2175PKCS12_pack_authsafes 2721 EXIST::FUNCTION:
2176ASN1_IA5STRING_it 2722 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2177ASN1_IA5STRING_it 2722 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2178UI_get_input_flags 2723 EXIST::FUNCTION:
2179EC_GROUP_set_generator 2724 EXIST::FUNCTION:EC
2180_ossl_old_des_string_to_2keys 2725 EXIST::FUNCTION:DES
2181OCSP_CERTID_free 2726 EXIST::FUNCTION:
2182X509_CERT_AUX_it 2727 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2183X509_CERT_AUX_it 2727 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2184CERTIFICATEPOLICIES_it 2728 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2185CERTIFICATEPOLICIES_it 2728 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2186_ossl_old_des_ede3_cbc_encrypt 2729 EXIST::FUNCTION:DES
2187RAND_set_rand_engine 2730 EXIST::FUNCTION:
2188DSO_get_loaded_filename 2731 EXIST::FUNCTION:
2189X509_ATTRIBUTE_it 2732 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2190X509_ATTRIBUTE_it 2732 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2191OCSP_ONEREQ_get_ext_by_NID 2733 EXIST::FUNCTION:
2192PKCS12_decrypt_skey 2734 EXIST::FUNCTION:
2193KRB5_AUTHENT_it 2735 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2194KRB5_AUTHENT_it 2735 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2195UI_dup_error_string 2736 EXIST::FUNCTION:
2196RSAPublicKey_it 2737 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RSA
2197RSAPublicKey_it 2737 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RSA
2198i2d_OCSP_REQUEST 2738 EXIST::FUNCTION:
2199PKCS12_x509crl2certbag 2739 EXIST::FUNCTION:
2200OCSP_SERVICELOC_it 2740 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2201OCSP_SERVICELOC_it 2740 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2202ASN1_item_sign 2741 EXIST::FUNCTION:EVP
2203X509_CRL_set_issuer_name 2742 EXIST::FUNCTION:
2204OBJ_NAME_do_all_sorted 2743 EXIST::FUNCTION:
2205i2d_OCSP_BASICRESP 2744 EXIST::FUNCTION:
2206i2d_OCSP_RESPBYTES 2745 EXIST::FUNCTION:
2207PKCS12_unpack_p7encdata 2746 EXIST::FUNCTION:
2208HMAC_CTX_init 2747 EXIST::FUNCTION:HMAC
2209ENGINE_get_digest 2748 EXIST::FUNCTION:
2210OCSP_RESPONSE_print 2749 EXIST::FUNCTION:
2211KRB5_TKTBODY_it 2750 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2212KRB5_TKTBODY_it 2750 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2213ACCESS_DESCRIPTION_it 2751 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2214ACCESS_DESCRIPTION_it 2751 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2215PKCS7_ISSUER_AND_SERIAL_it 2752 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2216PKCS7_ISSUER_AND_SERIAL_it 2752 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2217PBE2PARAM_it 2753 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2218PBE2PARAM_it 2753 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2219PKCS12_certbag2x509crl 2754 EXIST::FUNCTION:
2220PKCS7_SIGNED_it 2755 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2221PKCS7_SIGNED_it 2755 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2222ENGINE_get_cipher 2756 EXIST::FUNCTION:
2223i2d_OCSP_CRLID 2757 EXIST::FUNCTION:
2224OCSP_SINGLERESP_new 2758 EXIST::FUNCTION:
2225ENGINE_cmd_is_executable 2759 EXIST::FUNCTION:
2226RSA_up_ref 2760 EXIST::FUNCTION:RSA
2227ASN1_GENERALSTRING_it 2761 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2228ASN1_GENERALSTRING_it 2761 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2229ENGINE_register_DSA 2762 EXIST::FUNCTION:
2230X509V3_EXT_add_nconf_sk 2763 EXIST::FUNCTION:
2231ENGINE_set_load_pubkey_function 2764 EXIST::FUNCTION:
2232PKCS8_decrypt 2765 EXIST::FUNCTION:
2233PEM_bytes_read_bio 2766 EXIST::FUNCTION:BIO
2234DIRECTORYSTRING_it 2767 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2235DIRECTORYSTRING_it 2767 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2236d2i_OCSP_CRLID 2768 EXIST::FUNCTION:
2237EC_POINT_is_on_curve 2769 EXIST::FUNCTION:EC
2238CRYPTO_set_locked_mem_ex_functions 2770 EXIST:!VMS:FUNCTION:
2239CRYPTO_set_locked_mem_ex_funcs 2770 EXIST:VMS:FUNCTION:
2240d2i_KRB5_CHECKSUM 2771 EXIST::FUNCTION:
2241ASN1_item_dup 2772 EXIST::FUNCTION:
2242X509_it 2773 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2243X509_it 2773 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2244BN_mod_add 2774 EXIST::FUNCTION:
2245KRB5_AUTHDATA_free 2775 EXIST::FUNCTION:
2246_ossl_old_des_cbc_cksum 2776 EXIST::FUNCTION:DES
2247ASN1_item_verify 2777 EXIST::FUNCTION:EVP
2248CRYPTO_set_mem_ex_functions 2778 EXIST::FUNCTION:
2249EC_POINT_get_Jprojective_coordinates_GFp 2779 EXIST:!VMS:FUNCTION:EC
2250EC_POINT_get_Jproj_coords_GFp 2779 EXIST:VMS:FUNCTION:EC
2251ZLONG_it 2780 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2252ZLONG_it 2780 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2253CRYPTO_get_locked_mem_ex_functions 2781 EXIST:!VMS:FUNCTION:
2254CRYPTO_get_locked_mem_ex_funcs 2781 EXIST:VMS:FUNCTION:
2255ASN1_TIME_check 2782 EXIST::FUNCTION:
2256UI_get0_user_data 2783 EXIST::FUNCTION:
2257HMAC_CTX_cleanup 2784 EXIST::FUNCTION:HMAC
2258DSA_up_ref 2785 EXIST::FUNCTION:DSA
2259_ossl_old_des_ede3_cfb64_encrypt 2786 EXIST:!VMS:FUNCTION:DES
2260_ossl_odes_ede3_cfb64_encrypt 2786 EXIST:VMS:FUNCTION:DES
2261ASN1_BMPSTRING_it 2787 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2262ASN1_BMPSTRING_it 2787 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2263ASN1_tag2bit 2788 EXIST::FUNCTION:
2264UI_method_set_flusher 2789 EXIST::FUNCTION:
2265X509_ocspid_print 2790 EXIST::FUNCTION:BIO
2266KRB5_ENCDATA_it 2791 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2267KRB5_ENCDATA_it 2791 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2268ENGINE_get_load_pubkey_function 2792 EXIST::FUNCTION:
2269UI_add_user_data 2793 EXIST::FUNCTION:
2270OCSP_REQUEST_delete_ext 2794 EXIST::FUNCTION:
2271UI_get_method 2795 EXIST::FUNCTION:
2272OCSP_ONEREQ_free 2796 EXIST::FUNCTION:
2273ASN1_PRINTABLESTRING_it 2797 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2274ASN1_PRINTABLESTRING_it 2797 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2275X509_CRL_set_nextUpdate 2798 EXIST::FUNCTION:
2276OCSP_REQUEST_it 2799 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2277OCSP_REQUEST_it 2799 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2278OCSP_BASICRESP_it 2800 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2279OCSP_BASICRESP_it 2800 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2280AES_ecb_encrypt 2801 EXIST::FUNCTION:AES
2281BN_mod_sqr 2802 EXIST::FUNCTION:
2282NETSCAPE_CERT_SEQUENCE_it 2803 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2283NETSCAPE_CERT_SEQUENCE_it 2803 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2284GENERAL_NAMES_it 2804 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2285GENERAL_NAMES_it 2804 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2286AUTHORITY_INFO_ACCESS_it 2805 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2287AUTHORITY_INFO_ACCESS_it 2805 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2288ASN1_FBOOLEAN_it 2806 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2289ASN1_FBOOLEAN_it 2806 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2290UI_set_ex_data 2807 EXIST::FUNCTION:
2291_ossl_old_des_string_to_key 2808 EXIST::FUNCTION:DES
2292ENGINE_register_all_RSA 2809 EXIST::FUNCTION:
2293d2i_KRB5_PRINCNAME 2810 EXIST::FUNCTION:
2294OCSP_RESPBYTES_it 2811 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2295OCSP_RESPBYTES_it 2811 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2296X509_CINF_it 2812 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2297X509_CINF_it 2812 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2298ENGINE_unregister_digests 2813 EXIST::FUNCTION:
2299d2i_EDIPARTYNAME 2814 EXIST::FUNCTION:
2300d2i_OCSP_SERVICELOC 2815 EXIST::FUNCTION:
2301ENGINE_get_digests 2816 EXIST::FUNCTION:
2302_ossl_old_des_set_odd_parity 2817 EXIST::FUNCTION:DES
2303OCSP_RESPDATA_free 2818 EXIST::FUNCTION:
2304d2i_KRB5_TICKET 2819 EXIST::FUNCTION:
2305OTHERNAME_it 2820 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2306OTHERNAME_it 2820 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2307EVP_MD_CTX_cleanup 2821 EXIST::FUNCTION:
2308d2i_ASN1_GENERALSTRING 2822 EXIST::FUNCTION:
2309X509_CRL_set_version 2823 EXIST::FUNCTION:
2310BN_mod_sub 2824 EXIST::FUNCTION:
2311OCSP_SINGLERESP_get_ext_by_NID 2825 EXIST::FUNCTION:
2312ENGINE_get_ex_new_index 2826 EXIST::FUNCTION:
2313OCSP_REQUEST_free 2827 EXIST::FUNCTION:
2314OCSP_REQUEST_add1_ext_i2d 2828 EXIST::FUNCTION:
2315X509_VAL_it 2829 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2316X509_VAL_it 2829 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2317EC_POINTs_make_affine 2830 EXIST::FUNCTION:EC
2318EC_POINT_mul 2831 EXIST::FUNCTION:EC
2319X509V3_EXT_add_nconf 2832 EXIST::FUNCTION:
2320X509_TRUST_set 2833 EXIST::FUNCTION:
2321X509_CRL_add1_ext_i2d 2834 EXIST::FUNCTION:
2322_ossl_old_des_fcrypt 2835 EXIST::FUNCTION:DES
2323DISPLAYTEXT_it 2836 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2324DISPLAYTEXT_it 2836 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2325X509_CRL_set_lastUpdate 2837 EXIST::FUNCTION:
2326OCSP_BASICRESP_free 2838 EXIST::FUNCTION:
2327OCSP_BASICRESP_add1_ext_i2d 2839 EXIST::FUNCTION:
2328d2i_KRB5_AUTHENTBODY 2840 EXIST::FUNCTION:
2329CRYPTO_set_ex_data_implementation 2841 EXIST:!VMS:FUNCTION:
2330CRYPTO_set_ex_data_impl 2841 EXIST:VMS:FUNCTION:
2331KRB5_ENCDATA_new 2842 EXIST::FUNCTION:
2332DSO_up_ref 2843 EXIST::FUNCTION:
2333OCSP_crl_reason_str 2844 EXIST::FUNCTION:
2334UI_get0_result_string 2845 EXIST::FUNCTION:
2335ASN1_GENERALSTRING_new 2846 EXIST::FUNCTION:
2336X509_SIG_it 2847 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2337X509_SIG_it 2847 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2338ERR_set_implementation 2848 EXIST::FUNCTION:
2339ERR_load_EC_strings 2849 EXIST::FUNCTION:EC
2340UI_get0_action_string 2850 EXIST::FUNCTION:
2341OCSP_ONEREQ_get_ext 2851 EXIST::FUNCTION:
2342EC_POINT_method_of 2852 EXIST::FUNCTION:EC
2343i2d_KRB5_APREQBODY 2853 EXIST::FUNCTION:
2344_ossl_old_des_ecb3_encrypt 2854 EXIST::FUNCTION:DES
2345CRYPTO_get_mem_ex_functions 2855 EXIST::FUNCTION:
2346ENGINE_get_ex_data 2856 EXIST::FUNCTION:
2347UI_destroy_method 2857 EXIST::FUNCTION:
2348ASN1_item_i2d_bio 2858 EXIST::FUNCTION:BIO
2349OCSP_ONEREQ_get_ext_by_OBJ 2859 EXIST::FUNCTION:
2350ASN1_primitive_new 2860 EXIST::FUNCTION:
2351ASN1_PRINTABLE_it 2861 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2352ASN1_PRINTABLE_it 2861 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2353EVP_aes_192_ecb 2862 EXIST::FUNCTION:AES
2354OCSP_SIGNATURE_new 2863 EXIST::FUNCTION:
2355LONG_it 2864 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2356LONG_it 2864 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2357ASN1_VISIBLESTRING_it 2865 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2358ASN1_VISIBLESTRING_it 2865 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2359OCSP_SINGLERESP_add1_ext_i2d 2866 EXIST::FUNCTION:
2360d2i_OCSP_CERTID 2867 EXIST::FUNCTION:
2361ASN1_item_d2i_fp 2868 EXIST::FUNCTION:FP_API
2362CRL_DIST_POINTS_it 2869 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2363CRL_DIST_POINTS_it 2869 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2364GENERAL_NAME_print 2870 EXIST::FUNCTION:
2365OCSP_SINGLERESP_delete_ext 2871 EXIST::FUNCTION:
2366PKCS12_SAFEBAGS_it 2872 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2367PKCS12_SAFEBAGS_it 2872 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2368d2i_OCSP_SIGNATURE 2873 EXIST::FUNCTION:
2369OCSP_request_add1_nonce 2874 EXIST::FUNCTION:
2370ENGINE_set_cmd_defns 2875 EXIST::FUNCTION:
2371OCSP_SERVICELOC_free 2876 EXIST::FUNCTION:
2372EC_GROUP_free 2877 EXIST::FUNCTION:EC
2373ASN1_BIT_STRING_it 2878 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2374ASN1_BIT_STRING_it 2878 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2375X509_REQ_it 2879 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2376X509_REQ_it 2879 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2377_ossl_old_des_cbc_encrypt 2880 EXIST::FUNCTION:DES
2378ERR_unload_strings 2881 EXIST::FUNCTION:
2379PKCS7_SIGN_ENVELOPE_it 2882 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2380PKCS7_SIGN_ENVELOPE_it 2882 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2381EDIPARTYNAME_free 2883 EXIST::FUNCTION:
2382OCSP_REQINFO_free 2884 EXIST::FUNCTION:
2383EC_GROUP_new_curve_GFp 2885 EXIST::FUNCTION:EC
2384OCSP_REQUEST_get1_ext_d2i 2886 EXIST::FUNCTION:
2385PKCS12_item_pack_safebag 2887 EXIST::FUNCTION:
2386asn1_ex_c2i 2888 EXIST::FUNCTION:
2387ENGINE_register_digests 2889 EXIST::FUNCTION:
2388i2d_OCSP_REVOKEDINFO 2890 EXIST::FUNCTION:
2389asn1_enc_restore 2891 EXIST::FUNCTION:
2390UI_free 2892 EXIST::FUNCTION:
2391UI_new_method 2893 EXIST::FUNCTION:
2392EVP_EncryptInit_ex 2894 EXIST::FUNCTION:
2393X509_pubkey_digest 2895 EXIST::FUNCTION:EVP
2394EC_POINT_invert 2896 EXIST::FUNCTION:EC
2395OCSP_basic_sign 2897 EXIST::FUNCTION:
2396i2d_OCSP_RESPID 2898 EXIST::FUNCTION:
2397OCSP_check_nonce 2899 EXIST::FUNCTION:
2398ENGINE_ctrl_cmd 2900 EXIST::FUNCTION:
2399d2i_KRB5_ENCKEY 2901 EXIST::FUNCTION:
2400OCSP_parse_url 2902 EXIST::FUNCTION:
2401OCSP_SINGLERESP_get_ext 2903 EXIST::FUNCTION:
2402OCSP_CRLID_free 2904 EXIST::FUNCTION:
2403OCSP_BASICRESP_get1_ext_d2i 2905 EXIST::FUNCTION:
2404RSAPrivateKey_it 2906 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RSA
2405RSAPrivateKey_it 2906 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RSA
2406ENGINE_register_all_DH 2907 EXIST::FUNCTION:
2407i2d_EDIPARTYNAME 2908 EXIST::FUNCTION:
2408EC_POINT_get_affine_coordinates_GFp 2909 EXIST:!VMS:FUNCTION:EC
2409EC_POINT_get_affine_coords_GFp 2909 EXIST:VMS:FUNCTION:EC
2410OCSP_CRLID_new 2910 EXIST::FUNCTION:
2411ENGINE_get_flags 2911 EXIST::FUNCTION:
2412OCSP_ONEREQ_it 2912 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2413OCSP_ONEREQ_it 2912 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2414UI_process 2913 EXIST::FUNCTION:
2415ASN1_INTEGER_it 2914 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2416ASN1_INTEGER_it 2914 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2417EVP_CipherInit_ex 2915 EXIST::FUNCTION:
2418UI_get_string_type 2916 EXIST::FUNCTION:
2419ENGINE_unregister_DH 2917 EXIST::FUNCTION:
2420ENGINE_register_all_DSA 2918 EXIST::FUNCTION:
2421OCSP_ONEREQ_get_ext_by_critical 2919 EXIST::FUNCTION:
2422bn_dup_expand 2920 EXIST::FUNCTION:
2423OCSP_cert_id_new 2921 EXIST::FUNCTION:
2424BASIC_CONSTRAINTS_it 2922 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2425BASIC_CONSTRAINTS_it 2922 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2426BN_mod_add_quick 2923 EXIST::FUNCTION:
2427EC_POINT_new 2924 EXIST::FUNCTION:EC
2428EVP_MD_CTX_destroy 2925 EXIST::FUNCTION:
2429OCSP_RESPBYTES_free 2926 EXIST::FUNCTION:
2430EVP_aes_128_cbc 2927 EXIST::FUNCTION:AES
2431OCSP_SINGLERESP_get1_ext_d2i 2928 EXIST::FUNCTION:
2432EC_POINT_free 2929 EXIST::FUNCTION:EC
2433DH_up_ref 2930 EXIST::FUNCTION:DH
2434X509_NAME_ENTRY_it 2931 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2435X509_NAME_ENTRY_it 2931 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2436UI_get_ex_new_index 2932 EXIST::FUNCTION:
2437BN_mod_sub_quick 2933 EXIST::FUNCTION:
2438OCSP_ONEREQ_add_ext 2934 EXIST::FUNCTION:
2439OCSP_request_sign 2935 EXIST::FUNCTION:
2440EVP_DigestFinal_ex 2936 EXIST::FUNCTION:
2441ENGINE_set_digests 2937 EXIST::FUNCTION:
2442OCSP_id_issuer_cmp 2938 EXIST::FUNCTION:
2443OBJ_NAME_do_all 2939 EXIST::FUNCTION:
2444EC_POINTs_mul 2940 EXIST::FUNCTION:EC
2445ENGINE_register_complete 2941 EXIST::FUNCTION:
2446X509V3_EXT_nconf_nid 2942 EXIST::FUNCTION:
2447ASN1_SEQUENCE_it 2943 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2448ASN1_SEQUENCE_it 2943 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2449UI_set_default_method 2944 EXIST::FUNCTION:
2450RAND_query_egd_bytes 2945 EXIST::FUNCTION:
2451UI_method_get_writer 2946 EXIST::FUNCTION:
2452UI_OpenSSL 2947 EXIST::FUNCTION:
2453PEM_def_callback 2948 EXIST::FUNCTION:
2454ENGINE_cleanup 2949 EXIST::FUNCTION:
2455DIST_POINT_it 2950 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2456DIST_POINT_it 2950 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2457OCSP_SINGLERESP_it 2951 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2458OCSP_SINGLERESP_it 2951 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2459d2i_KRB5_TKTBODY 2952 EXIST::FUNCTION:
2460EC_POINT_cmp 2953 EXIST::FUNCTION:EC
2461OCSP_REVOKEDINFO_new 2954 EXIST::FUNCTION:
2462i2d_OCSP_CERTSTATUS 2955 EXIST::FUNCTION:
2463OCSP_basic_add1_nonce 2956 EXIST::FUNCTION:
2464ASN1_item_ex_d2i 2957 EXIST::FUNCTION:
2465BN_mod_lshift1_quick 2958 EXIST::FUNCTION:
2466UI_set_method 2959 EXIST::FUNCTION:
2467OCSP_id_get0_info 2960 EXIST::FUNCTION:
2468BN_mod_sqrt 2961 EXIST::FUNCTION:
2469EC_GROUP_copy 2962 EXIST::FUNCTION:EC
2470KRB5_ENCDATA_free 2963 EXIST::FUNCTION:
2471_ossl_old_des_cfb_encrypt 2964 EXIST::FUNCTION:DES
2472OCSP_SINGLERESP_get_ext_by_OBJ 2965 EXIST::FUNCTION:
2473OCSP_cert_to_id 2966 EXIST::FUNCTION:
2474OCSP_RESPID_new 2967 EXIST::FUNCTION:
2475OCSP_RESPDATA_it 2968 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2476OCSP_RESPDATA_it 2968 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2477d2i_OCSP_RESPDATA 2969 EXIST::FUNCTION:
2478ENGINE_register_all_complete 2970 EXIST::FUNCTION:
2479OCSP_check_validity 2971 EXIST::FUNCTION:
2480PKCS12_BAGS_it 2972 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2481PKCS12_BAGS_it 2972 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2482OCSP_url_svcloc_new 2973 EXIST::FUNCTION:
2483ASN1_template_free 2974 EXIST::FUNCTION:
2484OCSP_SINGLERESP_add_ext 2975 EXIST::FUNCTION:
2485KRB5_AUTHENTBODY_it 2976 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2486KRB5_AUTHENTBODY_it 2976 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2487X509_supported_extension 2977 EXIST::FUNCTION:
2488i2d_KRB5_AUTHDATA 2978 EXIST::FUNCTION:
2489UI_method_get_opener 2979 EXIST::FUNCTION:
2490ENGINE_set_ex_data 2980 EXIST::FUNCTION:
2491OCSP_REQUEST_print 2981 EXIST::FUNCTION:
2492CBIGNUM_it 2982 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2493CBIGNUM_it 2982 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2494KRB5_TICKET_new 2983 EXIST::FUNCTION:
2495KRB5_APREQ_new 2984 EXIST::FUNCTION:
2496EC_GROUP_get_curve_GFp 2985 EXIST::FUNCTION:EC
2497KRB5_ENCKEY_new 2986 EXIST::FUNCTION:
2498ASN1_template_d2i 2987 EXIST::FUNCTION:
2499_ossl_old_des_quad_cksum 2988 EXIST::FUNCTION:DES
2500OCSP_single_get0_status 2989 EXIST::FUNCTION:
2501BN_swap 2990 EXIST::FUNCTION:
2502POLICYINFO_it 2991 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2503POLICYINFO_it 2991 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2504ENGINE_set_destroy_function 2992 EXIST::FUNCTION:
2505asn1_enc_free 2993 EXIST::FUNCTION:
2506OCSP_RESPID_it 2994 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2507OCSP_RESPID_it 2994 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2508EC_GROUP_new 2995 EXIST::FUNCTION:EC
2509EVP_aes_256_cbc 2996 EXIST::FUNCTION:AES
2510i2d_KRB5_PRINCNAME 2997 EXIST::FUNCTION:
2511_ossl_old_des_encrypt2 2998 EXIST::FUNCTION:DES
2512_ossl_old_des_encrypt3 2999 EXIST::FUNCTION:DES
2513PKCS8_PRIV_KEY_INFO_it 3000 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2514PKCS8_PRIV_KEY_INFO_it 3000 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2515OCSP_REQINFO_it 3001 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2516OCSP_REQINFO_it 3001 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2517PBEPARAM_it 3002 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2518PBEPARAM_it 3002 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2519KRB5_AUTHENTBODY_new 3003 EXIST::FUNCTION:
2520X509_CRL_add0_revoked 3004 EXIST::FUNCTION:
2521EDIPARTYNAME_it 3005 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2522EDIPARTYNAME_it 3005 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2523NETSCAPE_SPKI_it 3006 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2524NETSCAPE_SPKI_it 3006 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2525UI_get0_test_string 3007 EXIST::FUNCTION:
2526ENGINE_get_cipher_engine 3008 EXIST::FUNCTION:
2527ENGINE_register_all_ciphers 3009 EXIST::FUNCTION:
2528EC_POINT_copy 3010 EXIST::FUNCTION:EC
2529BN_kronecker 3011 EXIST::FUNCTION:
2530_ossl_old_des_ede3_ofb64_encrypt 3012 EXIST:!VMS:FUNCTION:DES
2531_ossl_odes_ede3_ofb64_encrypt 3012 EXIST:VMS:FUNCTION:DES
2532UI_method_get_reader 3013 EXIST::FUNCTION:
2533OCSP_BASICRESP_get_ext_count 3014 EXIST::FUNCTION:
2534ASN1_ENUMERATED_it 3015 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2535ASN1_ENUMERATED_it 3015 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2536UI_set_result 3016 EXIST::FUNCTION:
2537i2d_KRB5_TICKET 3017 EXIST::FUNCTION:
2538X509_print_ex_fp 3018 EXIST::FUNCTION:FP_API
2539EVP_CIPHER_CTX_set_padding 3019 EXIST::FUNCTION:
2540d2i_OCSP_RESPONSE 3020 EXIST::FUNCTION:
2541ASN1_UTCTIME_it 3021 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2542ASN1_UTCTIME_it 3021 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2543_ossl_old_des_enc_write 3022 EXIST::FUNCTION:DES
2544OCSP_RESPONSE_new 3023 EXIST::FUNCTION:
2545AES_set_encrypt_key 3024 EXIST::FUNCTION:AES
2546OCSP_resp_count 3025 EXIST::FUNCTION:
2547KRB5_CHECKSUM_new 3026 EXIST::FUNCTION:
2548ENGINE_load_cswift 3027 EXIST::FUNCTION:
2549OCSP_onereq_get0_id 3028 EXIST::FUNCTION:
2550ENGINE_set_default_ciphers 3029 EXIST::FUNCTION:
2551NOTICEREF_it 3030 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2552NOTICEREF_it 3030 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2553X509V3_EXT_CRL_add_nconf 3031 EXIST::FUNCTION:
2554OCSP_REVOKEDINFO_it 3032 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2555OCSP_REVOKEDINFO_it 3032 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2556AES_encrypt 3033 EXIST::FUNCTION:AES
2557OCSP_REQUEST_new 3034 EXIST::FUNCTION:
2558ASN1_ANY_it 3035 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2559ASN1_ANY_it 3035 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2560CRYPTO_ex_data_new_class 3036 EXIST::FUNCTION:
2561_ossl_old_des_ncbc_encrypt 3037 EXIST::FUNCTION:DES
2562i2d_KRB5_TKTBODY 3038 EXIST::FUNCTION:
2563EC_POINT_clear_free 3039 EXIST::FUNCTION:EC
2564AES_decrypt 3040 EXIST::FUNCTION:AES
2565asn1_enc_init 3041 EXIST::FUNCTION:
2566UI_get_result_maxsize 3042 EXIST::FUNCTION:
2567OCSP_CERTID_new 3043 EXIST::FUNCTION:
2568ENGINE_unregister_RAND 3044 EXIST::FUNCTION:
2569UI_method_get_closer 3045 EXIST::FUNCTION:
2570d2i_KRB5_ENCDATA 3046 EXIST::FUNCTION:
2571OCSP_request_onereq_count 3047 EXIST::FUNCTION:
2572OCSP_basic_verify 3048 EXIST::FUNCTION:
2573KRB5_AUTHENTBODY_free 3049 EXIST::FUNCTION:
2574ASN1_item_d2i 3050 EXIST::FUNCTION:
2575ASN1_primitive_free 3051 EXIST::FUNCTION:
2576i2d_EXTENDED_KEY_USAGE 3052 EXIST::FUNCTION:
2577i2d_OCSP_SIGNATURE 3053 EXIST::FUNCTION:
2578asn1_enc_save 3054 EXIST::FUNCTION:
2579ENGINE_load_nuron 3055 EXIST::FUNCTION:
2580_ossl_old_des_pcbc_encrypt 3056 EXIST::FUNCTION:DES
2581PKCS12_MAC_DATA_it 3057 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2582PKCS12_MAC_DATA_it 3057 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2583OCSP_accept_responses_new 3058 EXIST::FUNCTION:
2584asn1_do_lock 3059 EXIST::FUNCTION:
2585PKCS7_ATTR_VERIFY_it 3060 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2586PKCS7_ATTR_VERIFY_it 3060 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2587KRB5_APREQBODY_it 3061 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2588KRB5_APREQBODY_it 3061 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2589i2d_OCSP_SINGLERESP 3062 EXIST::FUNCTION:
2590ASN1_item_ex_new 3063 EXIST::FUNCTION:
2591UI_add_verify_string 3064 EXIST::FUNCTION:
2592_ossl_old_des_set_key 3065 EXIST::FUNCTION:DES
2593KRB5_PRINCNAME_it 3066 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2594KRB5_PRINCNAME_it 3066 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2595EVP_DecryptInit_ex 3067 EXIST::FUNCTION:
2596i2d_OCSP_CERTID 3068 EXIST::FUNCTION:
2597ASN1_item_d2i_bio 3069 EXIST::FUNCTION:BIO
2598EC_POINT_dbl 3070 EXIST::FUNCTION:EC
2599asn1_get_choice_selector 3071 EXIST::FUNCTION:
2600i2d_KRB5_CHECKSUM 3072 EXIST::FUNCTION:
2601ENGINE_set_table_flags 3073 EXIST::FUNCTION:
2602AES_options 3074 EXIST::FUNCTION:AES
2603ENGINE_load_chil 3075 EXIST::FUNCTION:
2604OCSP_id_cmp 3076 EXIST::FUNCTION:
2605OCSP_BASICRESP_new 3077 EXIST::FUNCTION:
2606OCSP_REQUEST_get_ext_by_NID 3078 EXIST::FUNCTION:
2607KRB5_APREQ_it 3079 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2608KRB5_APREQ_it 3079 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2609ENGINE_get_destroy_function 3080 EXIST::FUNCTION:
2610CONF_set_nconf 3081 EXIST::FUNCTION:
2611ASN1_PRINTABLE_free 3082 EXIST::FUNCTION:
2612OCSP_BASICRESP_get_ext_by_NID 3083 EXIST::FUNCTION:
2613DIST_POINT_NAME_it 3084 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2614DIST_POINT_NAME_it 3084 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2615X509V3_extensions_print 3085 EXIST::FUNCTION:
2616_ossl_old_des_cfb64_encrypt 3086 EXIST::FUNCTION:DES
2617X509_REVOKED_add1_ext_i2d 3087 EXIST::FUNCTION:
2618_ossl_old_des_ofb_encrypt 3088 EXIST::FUNCTION:DES
2619KRB5_TKTBODY_new 3089 EXIST::FUNCTION:
2620ASN1_OCTET_STRING_it 3090 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2621ASN1_OCTET_STRING_it 3090 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2622ERR_load_UI_strings 3091 EXIST::FUNCTION:
2623i2d_KRB5_ENCKEY 3092 EXIST::FUNCTION:
2624ASN1_template_new 3093 EXIST::FUNCTION:
2625OCSP_SIGNATURE_free 3094 EXIST::FUNCTION:
2626ASN1_item_i2d_fp 3095 EXIST::FUNCTION:FP_API
2627KRB5_PRINCNAME_free 3096 EXIST::FUNCTION:
2628PKCS7_RECIP_INFO_it 3097 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2629PKCS7_RECIP_INFO_it 3097 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2630EXTENDED_KEY_USAGE_it 3098 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2631EXTENDED_KEY_USAGE_it 3098 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2632EC_GFp_simple_method 3099 EXIST::FUNCTION:EC
2633EC_GROUP_precompute_mult 3100 EXIST::FUNCTION:EC
2634OCSP_request_onereq_get0 3101 EXIST::FUNCTION:
2635UI_method_set_writer 3102 EXIST::FUNCTION:
2636KRB5_AUTHENT_new 3103 EXIST::FUNCTION:
2637X509_CRL_INFO_it 3104 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2638X509_CRL_INFO_it 3104 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2639DSO_set_name_converter 3105 EXIST::FUNCTION:
2640AES_set_decrypt_key 3106 EXIST::FUNCTION:AES
2641PKCS7_DIGEST_it 3107 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2642PKCS7_DIGEST_it 3107 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2643PKCS12_x5092certbag 3108 EXIST::FUNCTION:
2644EVP_DigestInit_ex 3109 EXIST::FUNCTION:
2645i2a_ACCESS_DESCRIPTION 3110 EXIST::FUNCTION:
2646OCSP_RESPONSE_it 3111 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2647OCSP_RESPONSE_it 3111 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2648PKCS7_ENC_CONTENT_it 3112 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2649PKCS7_ENC_CONTENT_it 3112 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2650OCSP_request_add0_id 3113 EXIST::FUNCTION:
2651EC_POINT_make_affine 3114 EXIST::FUNCTION:EC
2652DSO_get_filename 3115 EXIST::FUNCTION:
2653OCSP_CERTSTATUS_it 3116 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2654OCSP_CERTSTATUS_it 3116 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2655OCSP_request_add1_cert 3117 EXIST::FUNCTION:
2656UI_get0_output_string 3118 EXIST::FUNCTION:
2657UI_dup_verify_string 3119 EXIST::FUNCTION:
2658BN_mod_lshift 3120 EXIST::FUNCTION:
2659KRB5_AUTHDATA_it 3121 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2660KRB5_AUTHDATA_it 3121 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2661asn1_set_choice_selector 3122 EXIST::FUNCTION:
2662OCSP_basic_add1_status 3123 EXIST::FUNCTION:
2663OCSP_RESPID_free 3124 EXIST::FUNCTION:
2664asn1_get_field_ptr 3125 EXIST::FUNCTION:
2665UI_add_input_string 3126 EXIST::FUNCTION:
2666OCSP_CRLID_it 3127 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2667OCSP_CRLID_it 3127 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2668i2d_KRB5_AUTHENTBODY 3128 EXIST::FUNCTION:
2669OCSP_REQUEST_get_ext_count 3129 EXIST::FUNCTION:
2670ENGINE_load_atalla 3130 EXIST::FUNCTION:
2671X509_NAME_it 3131 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2672X509_NAME_it 3131 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2673USERNOTICE_it 3132 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2674USERNOTICE_it 3132 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2675OCSP_REQINFO_new 3133 EXIST::FUNCTION:
2676OCSP_BASICRESP_get_ext 3134 EXIST::FUNCTION:
2677CRYPTO_get_ex_data_implementation 3135 EXIST:!VMS:FUNCTION:
2678CRYPTO_get_ex_data_impl 3135 EXIST:VMS:FUNCTION:
2679ASN1_item_pack 3136 EXIST::FUNCTION:
2680i2d_KRB5_ENCDATA 3137 EXIST::FUNCTION:
2681X509_PURPOSE_set 3138 EXIST::FUNCTION:
2682X509_REQ_INFO_it 3139 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2683X509_REQ_INFO_it 3139 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2684UI_method_set_opener 3140 EXIST::FUNCTION:
2685ASN1_item_ex_free 3141 EXIST::FUNCTION:
2686ASN1_BOOLEAN_it 3142 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2687ASN1_BOOLEAN_it 3142 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2688ENGINE_get_table_flags 3143 EXIST::FUNCTION:
2689UI_create_method 3144 EXIST::FUNCTION:
2690OCSP_ONEREQ_add1_ext_i2d 3145 EXIST::FUNCTION:
2691_shadow_DES_check_key 3146 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:DES
2692_shadow_DES_check_key 3146 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:DES
2693d2i_OCSP_REQINFO 3147 EXIST::FUNCTION:
2694UI_add_info_string 3148 EXIST::FUNCTION:
2695UI_get_result_minsize 3149 EXIST::FUNCTION:
2696ASN1_NULL_it 3150 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2697ASN1_NULL_it 3150 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2698BN_mod_lshift1 3151 EXIST::FUNCTION:
2699d2i_OCSP_ONEREQ 3152 EXIST::FUNCTION:
2700OCSP_ONEREQ_new 3153 EXIST::FUNCTION:
2701KRB5_TICKET_it 3154 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2702KRB5_TICKET_it 3154 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2703EVP_aes_192_cbc 3155 EXIST::FUNCTION:AES
2704KRB5_TICKET_free 3156 EXIST::FUNCTION:
2705UI_new 3157 EXIST::FUNCTION:
2706OCSP_response_create 3158 EXIST::FUNCTION:
2707_ossl_old_des_xcbc_encrypt 3159 EXIST::FUNCTION:DES
2708PKCS7_it 3160 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2709PKCS7_it 3160 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2710OCSP_REQUEST_get_ext_by_critical 3161 EXIST:!VMS:FUNCTION:
2711OCSP_REQUEST_get_ext_by_crit 3161 EXIST:VMS:FUNCTION:
2712ENGINE_set_flags 3162 EXIST::FUNCTION:
2713_ossl_old_des_ecb_encrypt 3163 EXIST::FUNCTION:DES
2714OCSP_response_get1_basic 3164 EXIST::FUNCTION:
2715EVP_Digest 3165 EXIST::FUNCTION:
2716OCSP_ONEREQ_delete_ext 3166 EXIST::FUNCTION:
2717ASN1_TBOOLEAN_it 3167 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2718ASN1_TBOOLEAN_it 3167 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2719ASN1_item_new 3168 EXIST::FUNCTION:
2720ASN1_TIME_to_generalizedtime 3169 EXIST::FUNCTION:
2721BIGNUM_it 3170 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2722BIGNUM_it 3170 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2723AES_cbc_encrypt 3171 EXIST::FUNCTION:AES
2724ENGINE_get_load_privkey_function 3172 EXIST:!VMS:FUNCTION:
2725ENGINE_get_load_privkey_fn 3172 EXIST:VMS:FUNCTION:
2726OCSP_RESPONSE_free 3173 EXIST::FUNCTION:
2727UI_method_set_reader 3174 EXIST::FUNCTION:
2728i2d_ASN1_T61STRING 3175 EXIST::FUNCTION:
2729EC_POINT_set_to_infinity 3176 EXIST::FUNCTION:EC
2730ERR_load_OCSP_strings 3177 EXIST::FUNCTION:
2731EC_POINT_point2oct 3178 EXIST::FUNCTION:EC
2732KRB5_APREQ_free 3179 EXIST::FUNCTION:
2733ASN1_OBJECT_it 3180 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2734ASN1_OBJECT_it 3180 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2735OCSP_crlID_new 3181 EXIST:!VMS,!WIN16:FUNCTION:
2736OCSP_crlID2_new 3181 EXIST:VMS,WIN16:FUNCTION:
2737CONF_modules_load_file 3182 EXIST::FUNCTION:
2738CONF_imodule_set_usr_data 3183 EXIST::FUNCTION:
2739ENGINE_set_default_string 3184 EXIST::FUNCTION:
2740CONF_module_get_usr_data 3185 EXIST::FUNCTION:
2741ASN1_add_oid_module 3186 EXIST::FUNCTION:
2742CONF_modules_finish 3187 EXIST::FUNCTION:
2743OPENSSL_config 3188 EXIST::FUNCTION:
2744CONF_modules_unload 3189 EXIST::FUNCTION:
2745CONF_imodule_get_value 3190 EXIST::FUNCTION:
2746CONF_module_set_usr_data 3191 EXIST::FUNCTION:
2747CONF_parse_list 3192 EXIST::FUNCTION:
2748CONF_module_add 3193 EXIST::FUNCTION:
2749CONF_get1_default_config_file 3194 EXIST::FUNCTION:
2750CONF_imodule_get_flags 3195 EXIST::FUNCTION:
2751CONF_imodule_get_module 3196 EXIST::FUNCTION:
2752CONF_modules_load 3197 EXIST::FUNCTION:
2753CONF_imodule_get_name 3198 EXIST::FUNCTION:
2754ERR_peek_top_error 3199 NOEXIST::FUNCTION:
2755CONF_imodule_get_usr_data 3200 EXIST::FUNCTION:
2756CONF_imodule_set_flags 3201 EXIST::FUNCTION:
2757ENGINE_add_conf_module 3202 EXIST::FUNCTION:
2758ERR_peek_last_error_line 3203 EXIST::FUNCTION:
2759ERR_peek_last_error_line_data 3204 EXIST::FUNCTION:
2760ERR_peek_last_error 3205 EXIST::FUNCTION:
2761DES_read_2passwords 3206 EXIST::FUNCTION:DES
2762DES_read_password 3207 EXIST::FUNCTION:DES
2763UI_UTIL_read_pw 3208 EXIST::FUNCTION:
2764UI_UTIL_read_pw_string 3209 EXIST::FUNCTION:
2765ENGINE_load_aep 3210 EXIST::FUNCTION:
2766ENGINE_load_sureware 3211 EXIST::FUNCTION:
2767OPENSSL_add_all_algorithms_noconf 3212 EXIST:!VMS:FUNCTION:
2768OPENSSL_add_all_algo_noconf 3212 EXIST:VMS:FUNCTION:
2769OPENSSL_add_all_algorithms_conf 3213 EXIST:!VMS:FUNCTION:
2770OPENSSL_add_all_algo_conf 3213 EXIST:VMS:FUNCTION:
2771OPENSSL_load_builtin_modules 3214 EXIST::FUNCTION:
2772AES_ofb128_encrypt 3215 EXIST::FUNCTION:AES
2773AES_ctr128_encrypt 3216 EXIST::FUNCTION:AES
2774AES_cfb128_encrypt 3217 EXIST::FUNCTION:AES
2775ENGINE_load_4758cca 3218 EXIST::FUNCTION:
2776_ossl_096_des_random_seed 3219 EXIST::FUNCTION:DES
diff --git a/src/lib/libcrypto/util/mk1mf.pl b/src/lib/libcrypto/util/mk1mf.pl
index 149a0f4f80..8b6b2e668a 100644
--- a/src/lib/libcrypto/util/mk1mf.pl
+++ b/src/lib/libcrypto/util/mk1mf.pl
@@ -1,4 +1,4 @@
1#!/usr/bin/perl 1#!/usr/local/bin/perl
2# A bit of an evil hack but it post processes the file ../MINFO which 2# A bit of an evil hack but it post processes the file ../MINFO which
3# is generated by `make files` in the top directory. 3# is generated by `make files` in the top directory.
4# This script outputs one mega makefile that has no shell stuff or any 4# This script outputs one mega makefile that has no shell stuff or any
@@ -6,88 +6,71 @@
6# 6#
7 7
8$INSTALLTOP="/usr/local/ssl"; 8$INSTALLTOP="/usr/local/ssl";
9$OPTIONS="";
10$ssl_version="";
11$banner="\t\@echo Building OpenSSL";
12
13open(IN,"<Makefile.ssl") || die "unable to open Makefile.ssl!\n";
14while(<IN>) {
15 $ssl_version=$1 if (/^VERSION=(.*)$/);
16 $OPTIONS=$1 if (/^OPTIONS=(.*)$/);
17 $INSTALLTOP=$1 if (/^INSTALLTOP=(.*$)/);
18}
19close(IN);
9 20
10$ssl_version="0.8.2"; 21die "Makefile.ssl is not the toplevel Makefile!\n" if $ssl_version eq "";
11 22
12$infile="MINFO"; 23$infile="MINFO";
13 24
14%ops=( 25%ops=(
15 "VC-WIN32", "Microsoft Visual C++ 4.[01] - Windows NT [34].x", 26 "VC-WIN32", "Microsoft Visual C++ [4-6] - Windows NT or 9X",
27 "VC-NT", "Microsoft Visual C++ [4-6] - Windows NT ONLY",
16 "VC-W31-16", "Microsoft Visual C++ 1.52 - Windows 3.1 - 286", 28 "VC-W31-16", "Microsoft Visual C++ 1.52 - Windows 3.1 - 286",
17 "VC-WIN16", "Alias for VC-W31-32", 29 "VC-WIN16", "Alias for VC-W31-32",
18 "VC-W31-32", "Microsoft Visual C++ 1.52 - Windows 3.1 - 386+", 30 "VC-W31-32", "Microsoft Visual C++ 1.52 - Windows 3.1 - 386+",
19 "VC-MSDOS","Microsoft Visual C++ 1.52 - MSDOS", 31 "VC-MSDOS","Microsoft Visual C++ 1.52 - MSDOS",
20 "BC-NT", "Borland C++ 4.5 - Windows NT - PROBABLY NOT WORKING", 32 "Mingw32", "GNU C++ - Windows NT or 9x",
33 "Mingw32-files", "Create files with DOS copy ...",
34 "BC-NT", "Borland C++ 4.5 - Windows NT",
21 "BC-W31", "Borland C++ 4.5 - Windows 3.1 - PROBABLY NOT WORKING", 35 "BC-W31", "Borland C++ 4.5 - Windows 3.1 - PROBABLY NOT WORKING",
22 "BC-MSDOS","Borland C++ 4.5 - MSDOS", 36 "BC-MSDOS","Borland C++ 4.5 - MSDOS",
23 "linux-elf","Linux elf", 37 "linux-elf","Linux elf",
38 "ultrix-mips","DEC mips ultrix",
24 "FreeBSD","FreeBSD distribution", 39 "FreeBSD","FreeBSD distribution",
40 "OS2-EMX", "EMX GCC OS/2",
25 "default","cc under unix", 41 "default","cc under unix",
26 ); 42 );
27 43
28$type=""; 44$platform="";
29foreach (@ARGV) 45foreach (@ARGV)
30 { 46 {
31 if (/^no-rc2$/) { $no_rc2=1; } 47 if (!&read_options && !defined($ops{$_}))
32 elsif (/^no-rc4$/) { $no_rc4=1; }
33 elsif (/^no-rc5$/) { $no_rc5=1; }
34 elsif (/^no-idea$/) { $no_idea=1; }
35 elsif (/^no-des$/) { $no_des=1; }
36 elsif (/^no-bf$/) { $no_bf=1; }
37 elsif (/^no-cast$/) { $no_cast=1; }
38 elsif (/^no-md2$/) { $no_md2=1; }
39 elsif (/^no-md5$/) { $no_md5=1; }
40 elsif (/^no-sha$/) { $no_sha=1; }
41 elsif (/^no-sha1$/) { $no_sha1=1; }
42 elsif (/^no-rmd160$/) { $no_rmd160=1; }
43 elsif (/^no-mdc2$/) { $no_mdc2=1; }
44 elsif (/^no-patents$/) { $no_rc2=$no_rc4=$no_rc5=$no_idea=$no_rsa=1; }
45 elsif (/^no-rsa$/) { $no_rsa=1; }
46 elsif (/^no-dsa$/) { $no_dsa=1; }
47 elsif (/^no-dh$/) { $no_dh=1; }
48 elsif (/^no-asm$/) { $no_asm=1; }
49 elsif (/^no-ssl2$/) { $no_ssl2=1; }
50 elsif (/^no-ssl3$/) { $no_ssl3=1; }
51 elsif (/^no-err$/) { $no_err=1; }
52 elsif (/^no-sock$/) { $no_sock=1; }
53
54 elsif (/^just-ssl$/) { $no_rc2=$no_idea=$no_des=$no_bf=$no_cast=1;
55 $no_md2=$no_sha=$no_mdc2=$no_dsa=$no_dh=1;
56 $no_ssl2=$no_err=1; }
57
58 elsif (/^rsaref$/) { $rsaref=1; }
59 elsif (/^gcc$/) { $gcc=1; }
60 elsif (/^debug$/) { $debug=1; }
61 elsif (/^shlib$/) { $shlib=1; }
62 elsif (/^dll$/) { $shlib=1; }
63 elsif (/^([^=]*)=(.*)$/){ $VARS{$1}=$2; }
64 elsif (/^-[lL].*$/) { $l_flags.="$_ "; }
65 elsif ((!/^-help/) && (!/^-h/) && (!/^-\?/) && /^-.*$/)
66 { $c_flags.="$_ "; }
67 else
68 { 48 {
69 if (!defined($ops{$_})) 49 print STDERR "unknown option - $_\n";
70 { 50 print STDERR "usage: perl mk1mf.pl [options] [system]\n";
71 print STDERR "unknown option - $_\n"; 51 print STDERR "\nwhere [system] can be one of the following\n";
72 print STDERR "usage: perl mk1mf.pl [system] [options]\n"; 52 foreach $i (sort keys %ops)
73 print STDERR "\nwhere [system] can be one of the following\n"; 53 { printf STDERR "\t%-10s\t%s\n",$i,$ops{$i}; }
74 foreach $i (sort keys %ops) 54 print STDERR <<"EOF";
75 { printf STDERR "\t%-10s\t%s\n",$i,$ops{$i}; }
76 print STDERR <<"EOF";
77and [options] can be one of 55and [options] can be one of
78 no-md2 no-md5 no-sha no-sha1 no-mdc2 no-rmd160 - Skip this digest 56 no-md2 no-md4 no-md5 no-sha no-mdc2 - Skip this digest
79 no-rc2 no-rc4 no-idea no-des no-bf no-cast - Skip this symetric cipher 57 no-ripemd
80 no-rc5 58 no-rc2 no-rc4 no-rc5 no-idea no-des - Skip this symetric cipher
59 no-bf no-cast no-aes
81 no-rsa no-dsa no-dh - Skip this public key cipher 60 no-rsa no-dsa no-dh - Skip this public key cipher
82 no-ssl2 no-ssl3 - Skip this version of SSL 61 no-ssl2 no-ssl3 - Skip this version of SSL
83 just-ssl - remove all non-ssl keys/digest 62 just-ssl - remove all non-ssl keys/digest
84 no-asm - No x86 asm 63 no-asm - No x86 asm
64 no-krb5 - No KRB5
65 no-ec - No EC
66 nasm - Use NASM for x86 asm
67 gaswin - Use GNU as with Mingw32
85 no-socks - No socket code 68 no-socks - No socket code
86 no-err - No error strings 69 no-err - No error strings
87 dll/shlib - Build shared libraries (MS) 70 dll/shlib - Build shared libraries (MS)
88 debug - Debug build 71 debug - Debug build
72 profile - Profiling build
89 gcc - Use Gcc (unix) 73 gcc - Use Gcc (unix)
90 rsaref - Build to require RSAref
91 74
92Values that can be set 75Values that can be set
93TMP=tmpdir OUT=outdir SRC=srcdir BIN=binpath INC=header-outdir CC=C-compiler 76TMP=tmpdir OUT=outdir SRC=srcdir BIN=binpath INC=header-outdir CC=C-compiler
@@ -96,27 +79,30 @@ TMP=tmpdir OUT=outdir SRC=srcdir BIN=binpath INC=header-outdir CC=C-compiler
96-<ex_cc_flags> - extra 'cc' flags, 79-<ex_cc_flags> - extra 'cc' flags,
97 added (MS), or replace (unix) 80 added (MS), or replace (unix)
98EOF 81EOF
99 exit(1); 82 exit(1);
100 }
101 $type=$_;
102 } 83 }
84 $platform=$_;
85 }
86foreach (grep(!/^$/, split(/ /, $OPTIONS)))
87 {
88 print STDERR "unknown option - $_\n" if !&read_options;
103 } 89 }
104 90
105$no_mdc2=1 if ($no_des); 91$no_mdc2=1 if ($no_des);
106 92
107$no_ssl3=1 if ($no_md5 || $no_sha1); 93$no_ssl3=1 if ($no_md5 || $no_sha);
108$no_ssl3=1 if ($no_rsa && $no_dh); 94$no_ssl3=1 if ($no_rsa && $no_dh);
109 95
110$no_ssl2=1 if ($no_md5 || $no_rsa); 96$no_ssl2=1 if ($no_md5);
111$no_ssl2=1 if ($no_rsa); 97$no_ssl2=1 if ($no_rsa);
112 98
113$out_def="out"; 99$out_def="out";
114$inc_def="outinc"; 100$inc_def="outinc";
115$tmp_def="tmp"; 101$tmp_def="tmp";
116 102
103$mkdir="mkdir";
117 104
118($ssl,$crypto)=("ssl","crypto"); 105($ssl,$crypto)=("ssl","crypto");
119$RSAglue="RSAglue";
120$ranlib="echo ranlib"; 106$ranlib="echo ranlib";
121 107
122$cc=(defined($VARS{'CC'}))?$VARS{'CC'}:'cc'; 108$cc=(defined($VARS{'CC'}))?$VARS{'CC'}:'cc';
@@ -125,62 +111,84 @@ $bin_dir=(defined($VARS{'BIN'}))?$VARS{'BIN'}:'';
125 111
126# $bin_dir.=$o causes a core dump on my sparc :-( 112# $bin_dir.=$o causes a core dump on my sparc :-(
127 113
114$NT=0;
115
128push(@INC,"util/pl","pl"); 116push(@INC,"util/pl","pl");
129if ($type eq "VC-MSDOS") 117if ($platform eq "VC-MSDOS")
130 { 118 {
131 $asmbits=16; 119 $asmbits=16;
132 $msdos=1; 120 $msdos=1;
133 require 'VC-16.pl'; 121 require 'VC-16.pl';
134 } 122 }
135elsif ($type eq "VC-W31-16") 123elsif ($platform eq "VC-W31-16")
136 { 124 {
137 $asmbits=16; 125 $asmbits=16;
138 $msdos=1; $win16=1; 126 $msdos=1; $win16=1;
139 require 'VC-16.pl'; 127 require 'VC-16.pl';
140 } 128 }
141elsif (($type eq "VC-W31-32") || ($type eq "VC-WIN16")) 129elsif (($platform eq "VC-W31-32") || ($platform eq "VC-WIN16"))
142 { 130 {
143 $asmbits=32; 131 $asmbits=32;
144 $msdos=1; $win16=1; 132 $msdos=1; $win16=1;
145 require 'VC-16.pl'; 133 require 'VC-16.pl';
146 } 134 }
147elsif (($type eq "VC-WIN32") || ($type eq "VC-NT")) 135elsif (($platform eq "VC-WIN32") || ($platform eq "VC-NT"))
148 { 136 {
137 $NT = 1 if $platform eq "VC-NT";
149 require 'VC-32.pl'; 138 require 'VC-32.pl';
150 } 139 }
151elsif ($type eq "BC-NT") 140elsif ($platform eq "Mingw32")
141 {
142 require 'Mingw32.pl';
143 }
144elsif ($platform eq "Mingw32-files")
145 {
146 require 'Mingw32f.pl';
147 }
148elsif ($platform eq "BC-NT")
152 { 149 {
153 $bc=1; 150 $bc=1;
154 require 'BC-32.pl'; 151 require 'BC-32.pl';
155 } 152 }
156elsif ($type eq "BC-W31") 153elsif ($platform eq "BC-W31")
157 { 154 {
158 $bc=1; 155 $bc=1;
159 $msdos=1; $w16=1; 156 $msdos=1; $w16=1;
160 require 'BC-16.pl'; 157 require 'BC-16.pl';
161 } 158 }
162elsif ($type eq "BC-Q16") 159elsif ($platform eq "BC-Q16")
163 { 160 {
164 $msdos=1; $w16=1; $shlib=0; $qw=1; 161 $msdos=1; $w16=1; $shlib=0; $qw=1;
165 require 'BC-16.pl'; 162 require 'BC-16.pl';
166 } 163 }
167elsif ($type eq "BC-MSDOS") 164elsif ($platform eq "BC-MSDOS")
168 { 165 {
169 $asmbits=16; 166 $asmbits=16;
170 $msdos=1; 167 $msdos=1;
171 require 'BC-16.pl'; 168 require 'BC-16.pl';
172 } 169 }
173elsif ($type eq "FreeBSD") 170elsif ($platform eq "FreeBSD")
174 { 171 {
175 require 'unix.pl'; 172 require 'unix.pl';
176 $cflags='-DTERMIO -D_ANSI_SOURCE -O2 -fomit-frame-pointer'; 173 $cflags='-DTERMIO -D_ANSI_SOURCE -O2 -fomit-frame-pointer';
177 } 174 }
178elsif ($type eq "linux-elf") 175elsif ($platform eq "linux-elf")
179 { 176 {
180 require "unix.pl"; 177 require "unix.pl";
181 require "linux.pl"; 178 require "linux.pl";
182 $unix=1; 179 $unix=1;
183 } 180 }
181elsif ($platform eq "ultrix-mips")
182 {
183 require "unix.pl";
184 require "ultrix.pl";
185 $unix=1;
186 }
187elsif ($platform eq "OS2-EMX")
188 {
189 $wc=1;
190 require 'OS2-EMX.pl';
191 }
184else 192else
185 { 193 {
186 require "unix.pl"; 194 require "unix.pl";
@@ -195,42 +203,45 @@ $inc_dir=(defined($VARS{'INC'}))?$VARS{'INC'}:$inc_def;
195 203
196$bin_dir=$bin_dir.$o unless ((substr($bin_dir,-1,1) eq $o) || ($bin_dir eq '')); 204$bin_dir=$bin_dir.$o unless ((substr($bin_dir,-1,1) eq $o) || ($bin_dir eq ''));
197 205
198$cflags.=" -DNO_IDEA" if $no_idea; 206$cflags.=" -DOPENSSL_NO_IDEA" if $no_idea;
199$cflags.=" -DNO_RC2" if $no_rc2; 207$cflags.=" -DOPENSSL_NO_AES" if $no_aes;
200$cflags.=" -DNO_RC4" if $no_rc4; 208$cflags.=" -DOPENSSL_NO_RC2" if $no_rc2;
201$cflags.=" -DNO_RC5" if $no_rc5; 209$cflags.=" -DOPENSSL_NO_RC4" if $no_rc4;
202$cflags.=" -DNO_MD2" if $no_md2; 210$cflags.=" -DOPENSSL_NO_RC5" if $no_rc5;
203$cflags.=" -DNO_MD5" if $no_md5; 211$cflags.=" -DOPENSSL_NO_MD2" if $no_md2;
204$cflags.=" -DNO_SHA" if $no_sha; 212$cflags.=" -DOPENSSL_NO_MD4" if $no_md4;
205$cflags.=" -DNO_SHA1" if $no_sha1; 213$cflags.=" -DOPENSSL_NO_MD5" if $no_md5;
206$cflags.=" -DNO_RMD160" if $no_rmd160; 214$cflags.=" -DOPENSSL_NO_SHA" if $no_sha;
207$cflags.=" -DNO_MDC2" if $no_mdc2; 215$cflags.=" -DOPENSSL_NO_SHA1" if $no_sha1;
208$cflags.=" -DNO_BLOWFISH" if $no_bf; 216$cflags.=" -DOPENSSL_NO_RIPEMD" if $no_rmd160;
209$cflags.=" -DNO_CAST" if $no_cast; 217$cflags.=" -DOPENSSL_NO_MDC2" if $no_mdc2;
210$cflags.=" -DNO_DES" if $no_des; 218$cflags.=" -DOPENSSL_NO_BF" if $no_bf;
211$cflags.=" -DNO_RSA" if $no_rsa; 219$cflags.=" -DOPENSSL_NO_CAST" if $no_cast;
212$cflags.=" -DNO_DSA" if $no_dsa; 220$cflags.=" -DOPENSSL_NO_DES" if $no_des;
213$cflags.=" -DNO_DH" if $no_dh; 221$cflags.=" -DOPENSSL_NO_RSA" if $no_rsa;
214$cflags.=" -DNO_SOCK" if $no_sock; 222$cflags.=" -DOPENSSL_NO_DSA" if $no_dsa;
215$cflags.=" -DNO_SSL2" if $no_ssl2; 223$cflags.=" -DOPENSSL_NO_DH" if $no_dh;
216$cflags.=" -DNO_SSL3" if $no_ssl3; 224$cflags.=" -DOPENSSL_NO_SOCK" if $no_sock;
217$cflags.=" -DNO_ERR" if $no_err; 225$cflags.=" -DOPENSSL_NO_SSL2" if $no_ssl2;
218$cflags.=" -DRSAref" if $rsaref ne ""; 226$cflags.=" -DOPENSSL_NO_SSL3" if $no_ssl3;
219 227$cflags.=" -DOPENSSL_NO_ERR" if $no_err;
220if ($unix) 228$cflags.=" -DOPENSSL_NO_KRB5" if $no_krb5;
221 { $cflags="$c_flags" if ($c_flags ne ""); } 229$cflags.=" -DOPENSSL_NO_EC" if $no_ec;
222else { $cflags="$c_flags$cflags" if ($c_flags ne ""); } 230#$cflags.=" -DRSAref" if $rsaref ne "";
231
232## if ($unix)
233## { $cflags="$c_flags" if ($c_flags ne ""); }
234##else
235 { $cflags="$c_flags$cflags" if ($c_flags ne ""); }
223 236
224$ex_libs="$l_flags$ex_libs" if ($l_flags ne ""); 237$ex_libs="$l_flags$ex_libs" if ($l_flags ne "");
225 238
226if ($ranlib ne "") 239%shlib_ex_cflags=("SSL" => " -DOPENSSL_BUILD_SHLIBSSL",
227 { 240 "CRYPTO" => " -DOPENSSL_BUILD_SHLIBCRYPTO");
228 $ranlib="\$(SRC_D)$o$ranlib";
229 }
230 241
231if ($msdos) 242if ($msdos)
232 { 243 {
233 $banner ="\t\@echo Make sure you have run 'perl Configure $type' in the\n"; 244 $banner ="\t\@echo Make sure you have run 'perl Configure $platform' in the\n";
234 $banner.="\t\@echo top level directory, if you don't have perl, you will\n"; 245 $banner.="\t\@echo top level directory, if you don't have perl, you will\n";
235 $banner.="\t\@echo need to probably edit crypto/bn/bn.h, check the\n"; 246 $banner.="\t\@echo need to probably edit crypto/bn/bn.h, check the\n";
236 $banner.="\t\@echo documentation for details.\n"; 247 $banner.="\t\@echo documentation for details.\n";
@@ -242,8 +253,8 @@ $link="$bin_dir$link" if ($link !~ /^\$/);
242$INSTALLTOP =~ s|/|$o|g; 253$INSTALLTOP =~ s|/|$o|g;
243 254
244$defs= <<"EOF"; 255$defs= <<"EOF";
245# This makefile has been automatically generated from the SSLeay distribution. 256# This makefile has been automatically generated from the OpenSSL distribution.
246# This single makefile will build the complete SSLeay distribution and 257# This single makefile will build the complete OpenSSL distribution and
247# by default leave the 'intertesting' output files in .${o}out and the stuff 258# by default leave the 'intertesting' output files in .${o}out and the stuff
248# that needs deleting in .${o}tmp. 259# that needs deleting in .${o}tmp.
249# The file was generated by running 'make makefile.one', which 260# The file was generated by running 'make makefile.one', which
@@ -258,6 +269,7 @@ $defs= <<"EOF";
258INSTALLTOP=$INSTALLTOP 269INSTALLTOP=$INSTALLTOP
259 270
260# Set your compiler options 271# Set your compiler options
272PLATFORM=$platform
261CC=$bin_dir${cc} 273CC=$bin_dir${cc}
262CFLAG=$cflags 274CFLAG=$cflags
263APP_CFLAG=$app_cflag 275APP_CFLAG=$app_cflag
@@ -269,18 +281,18 @@ SHLIB_EX_OBJ=$shlib_ex_obj
269# be added 281# be added
270EX_LIBS=$ex_libs 282EX_LIBS=$ex_libs
271 283
272# The SSLeay directory 284# The OpenSSL directory
273SRC_D=$src_dir 285SRC_D=$src_dir
274 286
275LINK=$link 287LINK=$link
276LFLAGS=$lflags 288LFLAGS=$lflags
277 289
278BN_MULW_OBJ=$bn_mulw_obj 290BN_ASM_OBJ=$bn_asm_obj
279BN_MULW_SRC=$bn_mulw_src 291BN_ASM_SRC=$bn_asm_src
292BNCO_ASM_OBJ=$bnco_asm_obj
293BNCO_ASM_SRC=$bnco_asm_src
280DES_ENC_OBJ=$des_enc_obj 294DES_ENC_OBJ=$des_enc_obj
281DES_ENC_SRC=$des_enc_src 295DES_ENC_SRC=$des_enc_src
282DES_CRYPT_OBJ=$des_crypt_obj
283DES_CRYPT_SRC=$des_crypt_src
284BF_ENC_OBJ=$bf_enc_obj 296BF_ENC_OBJ=$bf_enc_obj
285BF_ENC_SRC=$bf_enc_src 297BF_ENC_SRC=$bf_enc_src
286CAST_ENC_OBJ=$cast_enc_obj 298CAST_ENC_OBJ=$cast_enc_obj
@@ -302,11 +314,12 @@ OUT_D=$out_dir
302TMP_D=$tmp_dir 314TMP_D=$tmp_dir
303# The output directory for the header files 315# The output directory for the header files
304INC_D=$inc_dir 316INC_D=$inc_dir
317INCO_D=$inc_dir${o}openssl
305 318
306CP=$cp 319CP=$cp
307RM=$rm 320RM=$rm
308RANLIB=$ranlib 321RANLIB=$ranlib
309MKDIR=mkdir 322MKDIR=$mkdir
310MKLIB=$bin_dir$mklib 323MKLIB=$bin_dir$mklib
311MLFLAGS=$mlflags 324MLFLAGS=$mlflags
312ASM=$bin_dir$asm 325ASM=$bin_dir$asm
@@ -315,14 +328,16 @@ ASM=$bin_dir$asm
315# You should not need to touch anything below this point 328# You should not need to touch anything below this point
316###################################################### 329######################################################
317 330
318E_EXE=ssleay 331E_EXE=openssl
319SSL=$ssl 332SSL=$ssl
320CRYPTO=$crypto 333CRYPTO=$crypto
321RSAGLUE=$RSAglue
322 334
323# BIN_D - Binary output directory 335# BIN_D - Binary output directory
324# TEST_D - Binary test file output directory 336# TEST_D - Binary test file output directory
325# LIB_D - library output directory 337# LIB_D - library output directory
338# Note: if you change these point to different directories then uncomment out
339# the lines around the 'NB' comment below.
340#
326BIN_D=\$(OUT_D) 341BIN_D=\$(OUT_D)
327TEST_D=\$(OUT_D) 342TEST_D=\$(OUT_D)
328LIB_D=\$(OUT_D) 343LIB_D=\$(OUT_D)
@@ -334,14 +349,12 @@ INCL_D=\$(TMP_D)
334 349
335O_SSL= \$(LIB_D)$o$plib\$(SSL)$shlibp 350O_SSL= \$(LIB_D)$o$plib\$(SSL)$shlibp
336O_CRYPTO= \$(LIB_D)$o$plib\$(CRYPTO)$shlibp 351O_CRYPTO= \$(LIB_D)$o$plib\$(CRYPTO)$shlibp
337O_RSAGLUE= \$(LIB_D)$o$plib\$(RSAGLUE)$libp
338SO_SSL= $plib\$(SSL)$so_shlibp 352SO_SSL= $plib\$(SSL)$so_shlibp
339SO_CRYPTO= $plib\$(CRYPTO)$so_shlibp 353SO_CRYPTO= $plib\$(CRYPTO)$so_shlibp
340L_SSL= \$(LIB_D)$o\$(SSL)$libp 354L_SSL= \$(LIB_D)$o$plib\$(SSL)$libp
341L_CRYPTO= \$(LIB_D)$o\$(CRYPTO)$libp 355L_CRYPTO= \$(LIB_D)$o$plib\$(CRYPTO)$libp
342 356
343L_LIBS= \$(L_SSL) \$(L_CRYPTO) 357L_LIBS= \$(L_SSL) \$(L_CRYPTO)
344#L_LIBS= \$(O_SSL) \$(O_RSAGLUE) -lrsaref \$(O_CRYPTO)
345 358
346###################################################### 359######################################################
347# Don't touch anything below this point 360# Don't touch anything below this point
@@ -351,33 +364,37 @@ INC=-I\$(INC_D) -I\$(INCL_D)
351APP_CFLAGS=\$(INC) \$(CFLAG) \$(APP_CFLAG) 364APP_CFLAGS=\$(INC) \$(CFLAG) \$(APP_CFLAG)
352LIB_CFLAGS=\$(INC) \$(CFLAG) \$(LIB_CFLAG) 365LIB_CFLAGS=\$(INC) \$(CFLAG) \$(LIB_CFLAG)
353SHLIB_CFLAGS=\$(INC) \$(CFLAG) \$(LIB_CFLAG) \$(SHLIB_CFLAG) 366SHLIB_CFLAGS=\$(INC) \$(CFLAG) \$(LIB_CFLAG) \$(SHLIB_CFLAG)
354LIBS_DEP=\$(O_CRYPTO) \$(O_RSAGLUE) \$(O_SSL) 367LIBS_DEP=\$(O_CRYPTO) \$(O_SSL)
355 368
356############################################# 369#############################################
357EOF 370EOF
358 371
359$rules=<<"EOF"; 372$rules=<<"EOF";
360all: banner \$(TMP_D) \$(BIN_D) \$(TEST_D) \$(LIB_D) \$(INC_D) headers lib exe 373all: banner \$(TMP_D) \$(BIN_D) \$(TEST_D) \$(LIB_D) \$(INCO_D) headers lib exe
361 374
362banner: 375banner:
363$banner 376$banner
364 377
365\$(TMP_D): 378\$(TMP_D):
366 \$(MKDIR) \$(TMP_D) 379 \$(MKDIR) \$(TMP_D)
367 380# NB: uncomment out these lines if BIN_D, TEST_D and LIB_D are different
368\$(BIN_D): 381#\$(BIN_D):
369 \$(MKDIR) \$(BIN_D) 382# \$(MKDIR) \$(BIN_D)
370 383#
371\$(TEST_D): 384#\$(TEST_D):
372 \$(MKDIR) \$(TEST_D) 385# \$(MKDIR) \$(TEST_D)
373 386
374\$(LIB_D): 387\$(LIB_D):
375 \$(MKDIR) \$(LIB_D) 388 \$(MKDIR) \$(LIB_D)
376 389
390\$(INCO_D): \$(INC_D)
391 \$(MKDIR) \$(INCO_D)
392
377\$(INC_D): 393\$(INC_D):
378 \$(MKDIR) \$(INC_D) 394 \$(MKDIR) \$(INC_D)
379 395
380headers: \$(HEADER) \$(EXHEADER) 396headers: \$(HEADER) \$(EXHEADER)
397 @
381 398
382lib: \$(LIBS_DEP) 399lib: \$(LIBS_DEP)
383 400
@@ -387,8 +404,9 @@ install:
387 \$(MKDIR) \$(INSTALLTOP) 404 \$(MKDIR) \$(INSTALLTOP)
388 \$(MKDIR) \$(INSTALLTOP)${o}bin 405 \$(MKDIR) \$(INSTALLTOP)${o}bin
389 \$(MKDIR) \$(INSTALLTOP)${o}include 406 \$(MKDIR) \$(INSTALLTOP)${o}include
407 \$(MKDIR) \$(INSTALLTOP)${o}include${o}openssl
390 \$(MKDIR) \$(INSTALLTOP)${o}lib 408 \$(MKDIR) \$(INSTALLTOP)${o}lib
391 \$(CP) \$(INC_D)${o}*.\[ch\] \$(INSTALLTOP)${o}include 409 \$(CP) \$(INCO_D)${o}*.\[ch\] \$(INSTALLTOP)${o}include${o}openssl
392 \$(CP) \$(BIN_D)$o\$(E_EXE)$exep \$(INSTALLTOP)${o}bin 410 \$(CP) \$(BIN_D)$o\$(E_EXE)$exep \$(INSTALLTOP)${o}bin
393 \$(CP) \$(O_SSL) \$(INSTALLTOP)${o}lib 411 \$(CP) \$(O_SSL) \$(INSTALLTOP)${o}lib
394 \$(CP) \$(O_CRYPTO) \$(INSTALLTOP)${o}lib 412 \$(CP) \$(O_CRYPTO) \$(INSTALLTOP)${o}lib
@@ -401,6 +419,42 @@ vclean:
401 \$(RM) \$(OUT_D)$o*.* 419 \$(RM) \$(OUT_D)$o*.*
402 420
403EOF 421EOF
422
423my $platform_cpp_symbol = "MK1MF_PLATFORM_$platform";
424$platform_cpp_symbol =~ s/-/_/g;
425if (open(IN,"crypto/buildinf.h"))
426 {
427 # Remove entry for this platform in existing file buildinf.h.
428
429 my $old_buildinf_h = "";
430 while (<IN>)
431 {
432 if (/^\#ifdef $platform_cpp_symbol$/)
433 {
434 while (<IN>) { last if (/^\#endif/); }
435 }
436 else
437 {
438 $old_buildinf_h .= $_;
439 }
440 }
441 close(IN);
442
443 open(OUT,">crypto/buildinf.h") || die "Can't open buildinf.h";
444 print OUT $old_buildinf_h;
445 close(OUT);
446 }
447
448open (OUT,">>crypto/buildinf.h") || die "Can't open buildinf.h";
449printf OUT <<EOF;
450#ifdef $platform_cpp_symbol
451 /* auto-generated/updated by util/mk1mf.pl for crypto/cversion.c */
452 #define CFLAGS "$cc $cflags"
453 #define PLATFORM "$platform"
454EOF
455printf OUT " #define DATE \"%s\"\n", scalar gmtime();
456printf OUT "#endif\n";
457close(OUT);
404 458
405############################################# 459#############################################
406# We parse in input file and 'store' info for later printing. 460# We parse in input file and 'store' info for later printing.
@@ -468,8 +522,8 @@ chop($h); $header=$h;
468$defs.=&do_defs("HEADER",$header,"\$(INCL_D)",".h"); 522$defs.=&do_defs("HEADER",$header,"\$(INCL_D)",".h");
469$rules.=&do_copy_rule("\$(INCL_D)",$header,".h"); 523$rules.=&do_copy_rule("\$(INCL_D)",$header,".h");
470 524
471$defs.=&do_defs("EXHEADER",$exheader,"\$(INC_D)",".h"); 525$defs.=&do_defs("EXHEADER",$exheader,"\$(INCO_D)",".h");
472$rules.=&do_copy_rule("\$(INC_D)",$exheader,".h"); 526$rules.=&do_copy_rule("\$(INCO_D)",$exheader,".h");
473 527
474$defs.=&do_defs("T_OBJ",$test,"\$(OBJ_D)",$obj); 528$defs.=&do_defs("T_OBJ",$test,"\$(OBJ_D)",$obj);
475$rules.=&do_compile_rule("\$(OBJ_D)",$test,"\$(APP_CFLAGS)"); 529$rules.=&do_compile_rule("\$(OBJ_D)",$test,"\$(APP_CFLAGS)");
@@ -482,24 +536,21 @@ foreach (values %lib_nam)
482 $lib_obj=$lib_obj{$_}; 536 $lib_obj=$lib_obj{$_};
483 local($slib)=$shlib; 537 local($slib)=$shlib;
484 538
485 $slib=0 if ($_ eq "RSAGLUE");
486
487 if (($_ eq "SSL") && $no_ssl2 && $no_ssl3) 539 if (($_ eq "SSL") && $no_ssl2 && $no_ssl3)
488 { 540 {
489 $rules.="\$(O_SSL):\n\n"; 541 $rules.="\$(O_SSL):\n\n";
490 next; 542 next;
491 } 543 }
492 544
493 if (($_ eq "RSAGLUE") && $no_rsa) 545 if (($bn_asm_obj ne "") && ($_ eq "CRYPTO"))
494 { 546 {
495 $rules.="\$(O_RSAGLUE):\n\n"; 547 $lib_obj =~ s/\s\S*\/bn_asm\S*/ \$(BN_ASM_OBJ)/;
496 next; 548 $rules.=&do_asm_rule($bn_asm_obj,$bn_asm_src);
497 } 549 }
498 550 if (($bnco_asm_obj ne "") && ($_ eq "CRYPTO"))
499 if (($bn_mulw_obj ne "") && ($_ eq "CRYPTO"))
500 { 551 {
501 $lib_obj =~ s/\s\S*\/bn_mulw\S*/ \$(BN_MULW_OBJ)/; 552 $lib_obj .= "\$(BNCO_ASM_OBJ)";
502 $rules.=&do_asm_rule($bn_mulw_obj,$bn_mulw_src); 553 $rules.=&do_asm_rule($bnco_asm_obj,$bnco_asm_src);
503 } 554 }
504 if (($des_enc_obj ne "") && ($_ eq "CRYPTO")) 555 if (($des_enc_obj ne "") && ($_ eq "CRYPTO"))
505 { 556 {
@@ -543,7 +594,7 @@ foreach (values %lib_nam)
543 $rules.=&do_asm_rule($rmd160_asm_obj,$rmd160_asm_src); 594 $rules.=&do_asm_rule($rmd160_asm_obj,$rmd160_asm_src);
544 } 595 }
545 $defs.=&do_defs(${_}."OBJ",$lib_obj,"\$(OBJ_D)",$obj); 596 $defs.=&do_defs(${_}."OBJ",$lib_obj,"\$(OBJ_D)",$obj);
546 $lib=($slib)?" \$(SHLIB_CFLAGS)":" \$(LIB_CFLAGS)"; 597 $lib=($slib)?" \$(SHLIB_CFLAGS)".$shlib_ex_cflags{$_}:" \$(LIB_CFLAGS)";
547 $rules.=&do_compile_rule("\$(OBJ_D)",$lib_obj{$_},$lib); 598 $rules.=&do_compile_rule("\$(OBJ_D)",$lib_obj{$_},$lib);
548 } 599 }
549 600
@@ -556,13 +607,19 @@ foreach (split(/\s+/,$test))
556 } 607 }
557 608
558$rules.= &do_lib_rule("\$(SSLOBJ)","\$(O_SSL)",$ssl,$shlib,"\$(SO_SSL)"); 609$rules.= &do_lib_rule("\$(SSLOBJ)","\$(O_SSL)",$ssl,$shlib,"\$(SO_SSL)");
559$rules.= &do_lib_rule("\$(RSAGLUEOBJ)","\$(O_RSAGLUE)",$RSAglue,0,"")
560 unless $no_rsa;
561$rules.= &do_lib_rule("\$(CRYPTOOBJ)","\$(O_CRYPTO)",$crypto,$shlib,"\$(SO_CRYPTO)"); 610$rules.= &do_lib_rule("\$(CRYPTOOBJ)","\$(O_CRYPTO)",$crypto,$shlib,"\$(SO_CRYPTO)");
562 611
563$rules.=&do_link_rule("\$(BIN_D)$o\$(E_EXE)$exep","\$(E_OBJ)","\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)"); 612$rules.=&do_link_rule("\$(BIN_D)$o\$(E_EXE)$exep","\$(E_OBJ)","\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)");
564 613
565print $defs; 614print $defs;
615
616if ($platform eq "linux-elf") {
617 print <<"EOF";
618# Generate perlasm output files
619%.cpp:
620 (cd \$(\@D)/..; PERL=perl make -f Makefile.ssl asm/\$(\@F))
621EOF
622}
566print "###################################################################\n"; 623print "###################################################################\n";
567print $rules; 624print $rules;
568 625
@@ -576,6 +633,7 @@ sub var_add
576 local(@a,$_,$ret); 633 local(@a,$_,$ret);
577 634
578 return("") if $no_idea && $dir =~ /\/idea/; 635 return("") if $no_idea && $dir =~ /\/idea/;
636 return("") if $no_aes && $dir =~ /\/aes/;
579 return("") if $no_rc2 && $dir =~ /\/rc2/; 637 return("") if $no_rc2 && $dir =~ /\/rc2/;
580 return("") if $no_rc4 && $dir =~ /\/rc4/; 638 return("") if $no_rc4 && $dir =~ /\/rc4/;
581 return("") if $no_rc5 && $dir =~ /\/rc5/; 639 return("") if $no_rc5 && $dir =~ /\/rc5/;
@@ -601,7 +659,8 @@ sub var_add
601 659
602 @a=grep(!/^e_.*_3d$/,@a) if $no_des; 660 @a=grep(!/^e_.*_3d$/,@a) if $no_des;
603 @a=grep(!/^e_.*_d$/,@a) if $no_des; 661 @a=grep(!/^e_.*_d$/,@a) if $no_des;
604 @a=grep(!/^e_.*_i$/,@a) if $no_idea; 662 @a=grep(!/^e_.*_ae$/,@a) if $no_idea;
663 @a=grep(!/^e_.*_i$/,@a) if $no_aes;
605 @a=grep(!/^e_.*_r2$/,@a) if $no_rc2; 664 @a=grep(!/^e_.*_r2$/,@a) if $no_rc2;
606 @a=grep(!/^e_.*_r5$/,@a) if $no_rc5; 665 @a=grep(!/^e_.*_r5$/,@a) if $no_rc5;
607 @a=grep(!/^e_.*_bf$/,@a) if $no_bf; 666 @a=grep(!/^e_.*_bf$/,@a) if $no_bf;
@@ -614,7 +673,9 @@ sub var_add
614 @a=grep(!/(_sock$)|(_acpt$)|(_conn$)|(^pxy_)/,@a) if $no_sock; 673 @a=grep(!/(_sock$)|(_acpt$)|(_conn$)|(^pxy_)/,@a) if $no_sock;
615 674
616 @a=grep(!/(^md2)|(_md2$)/,@a) if $no_md2; 675 @a=grep(!/(^md2)|(_md2$)/,@a) if $no_md2;
676 @a=grep(!/(^md4)|(_md4$)/,@a) if $no_md4;
617 @a=grep(!/(^md5)|(_md5$)/,@a) if $no_md5; 677 @a=grep(!/(^md5)|(_md5$)/,@a) if $no_md5;
678 @a=grep(!/(rmd)|(ripemd)/,@a) if $no_rmd160;
618 679
619 @a=grep(!/(^d2i_r_)|(^i2d_r_)/,@a) if $no_rsa; 680 @a=grep(!/(^d2i_r_)|(^i2d_r_)/,@a) if $no_rsa;
620 @a=grep(!/(^p_open$)|(^p_seal$)/,@a) if $no_rsa; 681 @a=grep(!/(^p_open$)|(^p_seal$)/,@a) if $no_rsa;
@@ -631,7 +692,7 @@ sub var_add
631 @a=grep(!/(^sha1)|(_sha1$)|(m_dss1$)/,@a) if $no_sha1; 692 @a=grep(!/(^sha1)|(_sha1$)|(m_dss1$)/,@a) if $no_sha1;
632 @a=grep(!/_mdc2$/,@a) if $no_mdc2; 693 @a=grep(!/_mdc2$/,@a) if $no_mdc2;
633 694
634 @a=grep(!/(^rsa$)|(^genrsa$)|(^req$)|(^ca$)/,@a) if $no_rsa; 695 @a=grep(!/(^rsa$)|(^genrsa$)/,@a) if $no_rsa;
635 @a=grep(!/(^dsa$)|(^gendsa$)|(^dsaparam$)/,@a) if $no_dsa; 696 @a=grep(!/(^dsa$)|(^gendsa$)|(^dsaparam$)/,@a) if $no_dsa;
636 @a=grep(!/^gendsa$/,@a) if $no_sha1; 697 @a=grep(!/^gendsa$/,@a) if $no_sha1;
637 @a=grep(!/(^dh$)|(^gendh$)/,@a) if $no_dh; 698 @a=grep(!/(^dh$)|(^gendh$)/,@a) if $no_dh;
@@ -677,7 +738,8 @@ sub do_defs
677 if (($_ =~ /bss_file/) && ($postfix eq ".h")) 738 if (($_ =~ /bss_file/) && ($postfix eq ".h"))
678 { $pf=".c"; } 739 { $pf=".c"; }
679 else { $pf=$postfix; } 740 else { $pf=$postfix; }
680 if ($_ =~ /BN_MULW/) { $t="$_ "; } 741 if ($_ =~ /BN_ASM/) { $t="$_ "; }
742 elsif ($_ =~ /BNCO_ASM/){ $t="$_ "; }
681 elsif ($_ =~ /DES_ENC/) { $t="$_ "; } 743 elsif ($_ =~ /DES_ENC/) { $t="$_ "; }
682 elsif ($_ =~ /BF_ENC/) { $t="$_ "; } 744 elsif ($_ =~ /BF_ENC/) { $t="$_ "; }
683 elsif ($_ =~ /CAST_ENC/){ $t="$_ "; } 745 elsif ($_ =~ /CAST_ENC/){ $t="$_ "; }
@@ -704,23 +766,6 @@ sub bname
704 return($ret); 766 return($ret);
705 } 767 }
706 768
707# do a rule for each file that says 'copy' to new direcory on change
708sub do_copy_rule
709 {
710 local($to,$files,$p)=@_;
711 local($ret,$_,$n,$pp);
712
713 $files =~ s/\//$o/g if $o ne '/';
714 foreach (split(/\s+/,$files))
715 {
716 $n=&bname($_);
717 if ($n =~ /bss_file/)
718 { $pp=".c"; }
719 else { $pp=$p; }
720 $ret.="$to${o}$n$pp: \$(SRC_D)$o$_$pp\n\t\$(CP) \$(SRC_D)$o$_$pp $to${o}$n$pp\n\n";
721 }
722 return($ret);
723 }
724 769
725############################################################## 770##############################################################
726# do a rule for each file that says 'compile' to new direcory 771# do a rule for each file that says 'compile' to new direcory
@@ -746,8 +791,7 @@ sub cc_compile_target
746 local($target,$source,$ex_flags)=@_; 791 local($target,$source,$ex_flags)=@_;
747 local($ret); 792 local($ret);
748 793
749 # EAY EAY 794 $ex_flags.=" -DMK1MF_BUILD -D$platform_cpp_symbol" if ($source =~ /cversion/);
750 $ex_flags.=' -DCFLAGS="\"$(CC) $(CFLAG)\""' if ($source =~ /cversion/);
751 $target =~ s/\//$o/g if $o ne "/"; 795 $target =~ s/\//$o/g if $o ne "/";
752 $source =~ s/\//$o/g if $o ne "/"; 796 $source =~ s/\//$o/g if $o ne "/";
753 $ret ="$target: \$(SRC_D)$o$source\n\t"; 797 $ret ="$target: \$(SRC_D)$o$source\n\t";
@@ -791,3 +835,73 @@ sub do_shlib_rule
791 return($ret); 835 return($ret);
792 } 836 }
793 837
838# do a rule for each file that says 'copy' to new direcory on change
839sub do_copy_rule
840 {
841 local($to,$files,$p)=@_;
842 local($ret,$_,$n,$pp);
843
844 $files =~ s/\//$o/g if $o ne '/';
845 foreach (split(/\s+/,$files))
846 {
847 $n=&bname($_);
848 if ($n =~ /bss_file/)
849 { $pp=".c"; }
850 else { $pp=$p; }
851 $ret.="$to${o}$n$pp: \$(SRC_D)$o$_$pp\n\t\$(CP) \$(SRC_D)$o$_$pp $to${o}$n$pp\n\n";
852 }
853 return($ret);
854 }
855
856sub read_options
857 {
858 if (/^no-rc2$/) { $no_rc2=1; }
859 elsif (/^no-rc4$/) { $no_rc4=1; }
860 elsif (/^no-rc5$/) { $no_rc5=1; }
861 elsif (/^no-idea$/) { $no_idea=1; }
862 elsif (/^no-aes$/) { $no_aes=1; }
863 elsif (/^no-des$/) { $no_des=1; }
864 elsif (/^no-bf$/) { $no_bf=1; }
865 elsif (/^no-cast$/) { $no_cast=1; }
866 elsif (/^no-md2$/) { $no_md2=1; }
867 elsif (/^no-md4$/) { $no_md4=1; }
868 elsif (/^no-md5$/) { $no_md5=1; }
869 elsif (/^no-sha$/) { $no_sha=1; }
870 elsif (/^no-sha1$/) { $no_sha1=1; }
871 elsif (/^no-ripemd$/) { $no_ripemd=1; }
872 elsif (/^no-mdc2$/) { $no_mdc2=1; }
873 elsif (/^no-patents$/) { $no_rc2=$no_rc4=$no_rc5=$no_idea=$no_rsa=1; }
874 elsif (/^no-rsa$/) { $no_rsa=1; }
875 elsif (/^no-dsa$/) { $no_dsa=1; }
876 elsif (/^no-dh$/) { $no_dh=1; }
877 elsif (/^no-hmac$/) { $no_hmac=1; }
878 elsif (/^no-aes$/) { $no_aes=1; }
879 elsif (/^no-asm$/) { $no_asm=1; }
880 elsif (/^nasm$/) { $nasm=1; }
881 elsif (/^gaswin$/) { $gaswin=1; }
882 elsif (/^no-ssl2$/) { $no_ssl2=1; }
883 elsif (/^no-ssl3$/) { $no_ssl3=1; }
884 elsif (/^no-err$/) { $no_err=1; }
885 elsif (/^no-sock$/) { $no_sock=1; }
886 elsif (/^no-krb5$/) { $no_krb5=1; }
887 elsif (/^no-ec$/) { $no_ec=1; }
888
889 elsif (/^just-ssl$/) { $no_rc2=$no_idea=$no_des=$no_bf=$no_cast=1;
890 $no_md2=$no_sha=$no_mdc2=$no_dsa=$no_dh=1;
891 $no_ssl2=$no_err=$no_rmd160=$no_rc5=1;
892 $no_aes=1; }
893
894 elsif (/^rsaref$/) { }
895 elsif (/^gcc$/) { $gcc=1; }
896 elsif (/^debug$/) { $debug=1; }
897 elsif (/^profile$/) { $profile=1; }
898 elsif (/^shlib$/) { $shlib=1; }
899 elsif (/^dll$/) { $shlib=1; }
900 elsif (/^shared$/) { } # We just need to ignore it for now...
901 elsif (/^([^=]*)=(.*)$/){ $VARS{$1}=$2; }
902 elsif (/^-[lL].*$/) { $l_flags.="$_ "; }
903 elsif ((!/^-help/) && (!/^-h/) && (!/^-\?/) && /^-.*$/)
904 { $c_flags.="$_ "; }
905 else { return(0); }
906 return(1);
907 }
diff --git a/src/lib/libcrypto/util/mkdef.pl b/src/lib/libcrypto/util/mkdef.pl
index 8124f11292..071036a6d2 100644
--- a/src/lib/libcrypto/util/mkdef.pl
+++ b/src/lib/libcrypto/util/mkdef.pl
@@ -1,244 +1,1115 @@
1#!/usr/bin/perl 1#!/usr/local/bin/perl -w
2# 2#
3# generate a .def file 3# generate a .def file
4# 4#
5# It does this by parsing the header files and looking for the 5# It does this by parsing the header files and looking for the
6# non-prototyped functions. 6# prototyped functions: it then prunes the output.
7# 7#
8# Intermediary files are created, call libeay.num and ssleay.num,...
9# Previously, they had the following format:
10#
11# routine-name nnnn
12#
13# But that isn't enough for a number of reasons, the first on being that
14# this format is (needlessly) very Win32-centric, and even then...
15# One of the biggest problems is that there's no information about what
16# routines should actually be used, which varies with what crypto algorithms
17# are disabled. Also, some operating systems (for example VMS with VAX C)
18# need to keep track of the global variables as well as the functions.
19#
20# So, a remake of this script is done so as to include information on the
21# kind of symbol it is (function or variable) and what algorithms they're
22# part of. This will allow easy translating to .def files or the corresponding
23# file in other operating systems (a .opt file for VMS, possibly with a .mar
24# file).
25#
26# The format now becomes:
27#
28# routine-name nnnn info
29#
30# and the "info" part is actually a colon-separated string of fields with
31# the following meaning:
32#
33# existence:platform:kind:algorithms
34#
35# - "existence" can be "EXIST" or "NOEXIST" depending on if the symbol is
36# found somewhere in the source,
37# - "platforms" is empty if it exists on all platforms, otherwise it contains
38# comma-separated list of the platform, just as they are if the symbol exists
39# for those platforms, or prepended with a "!" if not. This helps resolve
40# symbol name variants for platforms where the names are too long for the
41# compiler or linker, or if the systems is case insensitive and there is a
42# clash, or the symbol is implemented differently (see
43# EXPORT_VAR_AS_FUNCTION). This script assumes renaming of symbols is found
44# in the file crypto/symhacks.h.
45# The semantics for the platforms is that every item is checked against the
46# enviroment. For the negative items ("!FOO"), if any of them is false
47# (i.e. "FOO" is true) in the enviroment, the corresponding symbol can't be
48# used. For the positive itms, if all of them are false in the environment,
49# the corresponding symbol can't be used. Any combination of positive and
50# negative items are possible, and of course leave room for some redundancy.
51# - "kind" is "FUNCTION" or "VARIABLE". The meaning of that is obvious.
52# - "algorithms" is a comma-separated list of algorithm names. This helps
53# exclude symbols that are part of an algorithm that some user wants to
54# exclude.
55#
56
57my $debug=0;
58
59my $crypto_num= "util/libeay.num";
60my $ssl_num= "util/ssleay.num";
61
62my $do_update = 0;
63my $do_rewrite = 1;
64my $do_crypto = 0;
65my $do_ssl = 0;
66my $do_ctest = 0;
67my $do_ctestall = 0;
68my $do_checkexist = 0;
8 69
9$crypto_num="util/libeay.num"; 70my $VMSVAX=0;
10$ssl_num= "util/ssleay.num"; 71my $VMSAlpha=0;
72my $VMS=0;
73my $W32=0;
74my $W16=0;
75my $NT=0;
76# Set this to make typesafe STACK definitions appear in DEF
77my $safe_stack_def = 0;
11 78
12$NT=1; 79my @known_platforms = ( "__FreeBSD__", "PERL5", "NeXT",
13foreach (@ARGV) 80 "EXPORT_VAR_AS_FUNCTION" );
81my @known_ossl_platforms = ( "VMS", "WIN16", "WIN32", "WINNT" );
82my @known_algorithms = ( "RC2", "RC4", "RC5", "IDEA", "DES", "BF",
83 "CAST", "MD2", "MD4", "MD5", "SHA", "SHA0", "SHA1",
84 "RIPEMD",
85 "MDC2", "RSA", "DSA", "DH", "EC", "HMAC", "AES",
86 # Envelope "algorithms"
87 "EVP", "X509", "ASN1_TYPEDEFS",
88 # Helper "algorithms"
89 "BIO", "COMP", "BUFFER", "LHASH", "STACK", "ERR",
90 "LOCKING",
91 # External "algorithms"
92 "FP_API", "STDIO", "SOCK", "KRB5" );
93
94my $options="";
95open(IN,"<Makefile.ssl") || die "unable to open Makefile.ssl!\n";
96while(<IN>) {
97 $options=$1 if (/^OPTIONS=(.*)$/);
98}
99close(IN);
100
101# The following ciphers may be excluded (by Configure). This means functions
102# defined with ifndef(NO_XXX) are not included in the .def file, and everything
103# in directory xxx is ignored.
104my $no_rc2; my $no_rc4; my $no_rc5; my $no_idea; my $no_des; my $no_bf;
105my $no_cast;
106my $no_md2; my $no_md4; my $no_md5; my $no_sha; my $no_ripemd; my $no_mdc2;
107my $no_rsa; my $no_dsa; my $no_dh; my $no_hmac=0; my $no_aes; my $no_krb5;
108my $no_ec;
109my $no_fp_api;
110
111foreach (@ARGV, split(/ /, $options))
14 { 112 {
15 $NT=1 if $_ eq "32"; 113 $debug=1 if $_ eq "debug";
16 $NT=0 if $_ eq "16"; 114 $W32=1 if $_ eq "32";
115 $W16=1 if $_ eq "16";
116 if($_ eq "NT") {
117 $W32 = 1;
118 $NT = 1;
119 }
120 if ($_ eq "VMS-VAX") {
121 $VMS=1;
122 $VMSVAX=1;
123 }
124 if ($_ eq "VMS-Alpha") {
125 $VMS=1;
126 $VMSAlpha=1;
127 }
128 $VMS=1 if $_ eq "VMS";
129
17 $do_ssl=1 if $_ eq "ssleay"; 130 $do_ssl=1 if $_ eq "ssleay";
131 $do_ssl=1 if $_ eq "ssl";
18 $do_crypto=1 if $_ eq "libeay"; 132 $do_crypto=1 if $_ eq "libeay";
133 $do_crypto=1 if $_ eq "crypto";
134 $do_update=1 if $_ eq "update";
135 $do_rewrite=1 if $_ eq "rewrite";
136 $do_ctest=1 if $_ eq "ctest";
137 $do_ctestall=1 if $_ eq "ctestall";
138 $do_checkexist=1 if $_ eq "exist";
139 #$safe_stack_def=1 if $_ eq "-DDEBUG_SAFESTACK";
140
141 if (/^no-rc2$/) { $no_rc2=1; }
142 elsif (/^no-rc4$/) { $no_rc4=1; }
143 elsif (/^no-rc5$/) { $no_rc5=1; }
144 elsif (/^no-idea$/) { $no_idea=1; }
145 elsif (/^no-des$/) { $no_des=1; $no_mdc2=1; }
146 elsif (/^no-bf$/) { $no_bf=1; }
147 elsif (/^no-cast$/) { $no_cast=1; }
148 elsif (/^no-md2$/) { $no_md2=1; }
149 elsif (/^no-md4$/) { $no_md4=1; }
150 elsif (/^no-md5$/) { $no_md5=1; }
151 elsif (/^no-sha$/) { $no_sha=1; }
152 elsif (/^no-ripemd$/) { $no_ripemd=1; }
153 elsif (/^no-mdc2$/) { $no_mdc2=1; }
154 elsif (/^no-rsa$/) { $no_rsa=1; }
155 elsif (/^no-dsa$/) { $no_dsa=1; }
156 elsif (/^no-dh$/) { $no_dh=1; }
157 elsif (/^no-ec$/) { $no_ec=1; }
158 elsif (/^no-hmac$/) { $no_hmac=1; }
159 elsif (/^no-aes$/) { $no_aes=1; }
160 elsif (/^no-evp$/) { $no_evp=1; }
161 elsif (/^no-lhash$/) { $no_lhash=1; }
162 elsif (/^no-stack$/) { $no_stack=1; }
163 elsif (/^no-err$/) { $no_err=1; }
164 elsif (/^no-buffer$/) { $no_buffer=1; }
165 elsif (/^no-bio$/) { $no_bio=1; }
166 #elsif (/^no-locking$/) { $no_locking=1; }
167 elsif (/^no-comp$/) { $no_comp=1; }
168 elsif (/^no-dso$/) { $no_dso=1; }
169 elsif (/^no-krb5$/) { $no_krb5=1; }
19 } 170 }
20 171
172
173# If no platform is given, assume WIN32
174if ($W32 + $W16 + $VMS == 0) {
175 $W32 = 1;
176}
177
178# Add extra knowledge
179if ($W16) {
180 $no_fp_api=1;
181}
182
21if (!$do_ssl && !$do_crypto) 183if (!$do_ssl && !$do_crypto)
22 { 184 {
23 print STDERR "usage: $0 ( ssl | crypto ) [ 16 | 32 ]\n"; 185 print STDERR "usage: $0 ( ssl | crypto ) [ 16 | 32 | NT ]\n";
24 exit(1); 186 exit(1);
25 } 187 }
26 188
27%ssl_list=&load_numbers($ssl_num); 189%ssl_list=&load_numbers($ssl_num);
190$max_ssl = $max_num;
28%crypto_list=&load_numbers($crypto_num); 191%crypto_list=&load_numbers($crypto_num);
192$max_crypto = $max_num;
193
194my $ssl="ssl/ssl.h";
195$ssl.=" ssl/kssl.h";
29 196
30$ssl="ssl/ssl.h"; 197my $crypto ="crypto/crypto.h";
31 198$crypto.=" crypto/des/des.h crypto/des/des_old.h" ; # unless $no_des;
32$crypto ="crypto/crypto.h"; 199$crypto.=" crypto/idea/idea.h" ; # unless $no_idea;
33$crypto.=" crypto/des/des.h"; 200$crypto.=" crypto/rc4/rc4.h" ; # unless $no_rc4;
34$crypto.=" crypto/idea/idea.h"; 201$crypto.=" crypto/rc5/rc5.h" ; # unless $no_rc5;
35$crypto.=" crypto/rc4/rc4.h"; 202$crypto.=" crypto/rc2/rc2.h" ; # unless $no_rc2;
36$crypto.=" crypto/rc5/rc5.h"; 203$crypto.=" crypto/bf/blowfish.h" ; # unless $no_bf;
37$crypto.=" crypto/rc2/rc2.h"; 204$crypto.=" crypto/cast/cast.h" ; # unless $no_cast;
38$crypto.=" crypto/bf/blowfish.h"; 205$crypto.=" crypto/md2/md2.h" ; # unless $no_md2;
39$crypto.=" crypto/cast/cast.h"; 206$crypto.=" crypto/md4/md4.h" ; # unless $no_md4;
40$crypto.=" crypto/md2/md2.h"; 207$crypto.=" crypto/md5/md5.h" ; # unless $no_md5;
41$crypto.=" crypto/md5/md5.h"; 208$crypto.=" crypto/mdc2/mdc2.h" ; # unless $no_mdc2;
42$crypto.=" crypto/mdc2/mdc2.h"; 209$crypto.=" crypto/sha/sha.h" ; # unless $no_sha;
43$crypto.=" crypto/sha/sha.h"; 210$crypto.=" crypto/ripemd/ripemd.h" ; # unless $no_ripemd;
44$crypto.=" crypto/ripemd/ripemd.h"; 211$crypto.=" crypto/aes/aes.h" ; # unless $no_aes;
45 212
46$crypto.=" crypto/bn/bn.h"; 213$crypto.=" crypto/bn/bn.h";
47$crypto.=" crypto/rsa/rsa.h"; 214$crypto.=" crypto/rsa/rsa.h" ; # unless $no_rsa;
48$crypto.=" crypto/dsa/dsa.h"; 215$crypto.=" crypto/dsa/dsa.h" ; # unless $no_dsa;
49$crypto.=" crypto/dh/dh.h"; 216$crypto.=" crypto/dh/dh.h" ; # unless $no_dh;
50 217$crypto.=" crypto/ec/ec.h" ; # unless $no_ec;
51$crypto.=" crypto/stack/stack.h"; 218$crypto.=" crypto/hmac/hmac.h" ; # unless $no_hmac;
52$crypto.=" crypto/buffer/buffer.h"; 219
53$crypto.=" crypto/bio/bio.h"; 220$crypto.=" crypto/engine/engine.h";
54$crypto.=" crypto/lhash/lhash.h"; 221$crypto.=" crypto/stack/stack.h" ; # unless $no_stack;
222$crypto.=" crypto/buffer/buffer.h" ; # unless $no_buffer;
223$crypto.=" crypto/bio/bio.h" ; # unless $no_bio;
224$crypto.=" crypto/dso/dso.h" ; # unless $no_dso;
225$crypto.=" crypto/lhash/lhash.h" ; # unless $no_lhash;
55$crypto.=" crypto/conf/conf.h"; 226$crypto.=" crypto/conf/conf.h";
56$crypto.=" crypto/txt_db/txt_db.h"; 227$crypto.=" crypto/txt_db/txt_db.h";
57 228
58$crypto.=" crypto/evp/evp.h"; 229$crypto.=" crypto/evp/evp.h" ; # unless $no_evp;
59$crypto.=" crypto/objects/objects.h"; 230$crypto.=" crypto/objects/objects.h";
60$crypto.=" crypto/pem/pem.h"; 231$crypto.=" crypto/pem/pem.h";
61#$crypto.=" crypto/meth/meth.h"; 232#$crypto.=" crypto/meth/meth.h";
62$crypto.=" crypto/asn1/asn1.h"; 233$crypto.=" crypto/asn1/asn1.h";
234$crypto.=" crypto/asn1/asn1t.h";
63$crypto.=" crypto/asn1/asn1_mac.h"; 235$crypto.=" crypto/asn1/asn1_mac.h";
64$crypto.=" crypto/err/err.h"; 236$crypto.=" crypto/err/err.h" ; # unless $no_err;
65$crypto.=" crypto/pkcs7/pkcs7.h"; 237$crypto.=" crypto/pkcs7/pkcs7.h";
238$crypto.=" crypto/pkcs12/pkcs12.h";
66$crypto.=" crypto/x509/x509.h"; 239$crypto.=" crypto/x509/x509.h";
67$crypto.=" crypto/x509/x509_vfy.h"; 240$crypto.=" crypto/x509/x509_vfy.h";
241$crypto.=" crypto/x509v3/x509v3.h";
68$crypto.=" crypto/rand/rand.h"; 242$crypto.=" crypto/rand/rand.h";
69$crypto.=" crypto/hmac/hmac.h"; 243$crypto.=" crypto/comp/comp.h" ; # unless $no_comp;
244$crypto.=" crypto/ocsp/ocsp.h";
245$crypto.=" crypto/ui/ui.h crypto/ui/ui_compat.h";
246$crypto.=" crypto/krb5/krb5_asn.h";
247$crypto.=" crypto/tmdiff.h";
248
249my $symhacks="crypto/symhacks.h";
250
251my @ssl_symbols = &do_defs("SSLEAY", $ssl, $symhacks);
252my @crypto_symbols = &do_defs("LIBEAY", $crypto, $symhacks);
253
254if ($do_update) {
255
256if ($do_ssl == 1) {
257
258 &maybe_add_info("SSLEAY",*ssl_list,@ssl_symbols);
259 if ($do_rewrite == 1) {
260 open(OUT, ">$ssl_num");
261 &rewrite_numbers(*OUT,"SSLEAY",*ssl_list,@ssl_symbols);
262 } else {
263 open(OUT, ">>$ssl_num");
264 }
265 &update_numbers(*OUT,"SSLEAY",*ssl_list,$max_ssl,@ssl_symbols);
266 close OUT;
267}
268
269if($do_crypto == 1) {
270
271 &maybe_add_info("LIBEAY",*crypto_list,@crypto_symbols);
272 if ($do_rewrite == 1) {
273 open(OUT, ">$crypto_num");
274 &rewrite_numbers(*OUT,"LIBEAY",*crypto_list,@crypto_symbols);
275 } else {
276 open(OUT, ">>$crypto_num");
277 }
278 &update_numbers(*OUT,"LIBEAY",*crypto_list,$max_crypto,@crypto_symbols);
279 close OUT;
280}
281
282} elsif ($do_checkexist) {
283 &check_existing(*ssl_list, @ssl_symbols)
284 if $do_ssl == 1;
285 &check_existing(*crypto_list, @crypto_symbols)
286 if $do_crypto == 1;
287} elsif ($do_ctest || $do_ctestall) {
70 288
71$match{'NOPROTO'}=1; 289 print <<"EOF";
72$match2{'PERL5'}=1;
73 290
74&print_def_file(*STDOUT,"SSLEAY",*ssl_list,&do_defs("SSLEAY",$ssl)) 291/* Test file to check all DEF file symbols are present by trying
75 if $do_ssl == 1; 292 * to link to all of them. This is *not* intended to be run!
293 */
294
295int main()
296{
297EOF
298 &print_test_file(*STDOUT,"SSLEAY",*ssl_list,$do_ctestall,@ssl_symbols)
299 if $do_ssl == 1;
300
301 &print_test_file(*STDOUT,"LIBEAY",*crypto_list,$do_ctestall,@crypto_symbols)
302 if $do_crypto == 1;
303
304 print "}\n";
305
306} else {
307
308 &print_def_file(*STDOUT,"SSLEAY",*ssl_list,@ssl_symbols)
309 if $do_ssl == 1;
310
311 &print_def_file(*STDOUT,"LIBEAY",*crypto_list,@crypto_symbols)
312 if $do_crypto == 1;
313
314}
76 315
77&print_def_file(*STDOUT,"LIBEAY",*crypto_list,&do_defs("LIBEAY",$crypto))
78 if $do_crypto == 1;
79 316
80sub do_defs 317sub do_defs
81 { 318{
82 local($name,$files)=@_; 319 my($name,$files,$symhacksfile)=@_;
83 local(@ret); 320 my $file;
321 my @ret;
322 my %syms;
323 my %platform; # For anything undefined, we assume ""
324 my %kind; # For anything undefined, we assume "FUNCTION"
325 my %algorithm; # For anything undefined, we assume ""
326 my %variant;
327 my %variant_cnt; # To be able to allocate "name{n}" if "name"
328 # is the same name as the original.
329 my $cpp;
330 my %unknown_algorithms = ();
84 331
85 $off=-1; 332 foreach $file (split(/\s+/,$symhacksfile." ".$files))
86 foreach $file (split(/\s+/,$files))
87 { 333 {
88# print STDERR "reading $file\n"; 334 print STDERR "DEBUG: starting on $file:\n" if $debug;
89 open(IN,"<$file") || die "unable to open $file:$!\n"; 335 open(IN,"<$file") || die "unable to open $file:$!\n";
90 $depth=0; 336 my $line = "", my $def= "";
91 $pr=-1; 337 my %tag = (
92 @np=""; 338 (map { $_ => 0 } @known_platforms),
93 $/=undef; 339 (map { "OPENSSL_SYS_".$_ => 0 } @known_ossl_platforms),
94 $a=<IN>; 340 (map { "OPENSSL_NO_".$_ => 0 } @known_algorithms),
95 while (($i=index($a,"/*")) >= 0) 341 NOPROTO => 0,
342 PERL5 => 0,
343 _WINDLL => 0,
344 CONST_STRICT => 0,
345 TRUE => 1,
346 );
347 my $symhacking = $file eq $symhacksfile;
348 my @current_platforms = ();
349 my @current_algorithms = ();
350
351 # params: symbol, alias, platforms, kind
352 # The reason to put this subroutine in a variable is that
353 # it will otherwise create it's own, unshared, version of
354 # %tag and %variant...
355 my $make_variant = sub
356 {
357 my ($s, $a, $p, $k) = @_;
358 my ($a1, $a2);
359
360 print STDERR "DEBUG: make_variant: Entered with ",$s,", ",$a,", ",(defined($p)?$p:""),", ",(defined($k)?$k:""),"\n" if $debug;
361 if (defined($p))
96 { 362 {
97 $j=index($a,"*/"); 363 $a1 = join(",",$p,
98 break unless ($j >= 0); 364 grep(!/^$/,
99 $a=substr($a,0,$i).substr($a,$j+2); 365 map { $tag{$_} == 1 ? $_ : "" }
100 # print "$i $j\n"; 366 @known_platforms));
101 } 367 }
102 foreach (split("\n",$a)) 368 else
369 {
370 $a1 = join(",",
371 grep(!/^$/,
372 map { $tag{$_} == 1 ? $_ : "" }
373 @known_platforms));
374 }
375 $a2 = join(",",
376 grep(!/^$/,
377 map { $tag{"OPENSSL_SYS_".$_} == 1 ? $_ : "" }
378 @known_ossl_platforms));
379 print STDERR "DEBUG: make_variant: a1 = $a1; a2 = $a2\n" if $debug;
380 if ($a1 eq "") { $a1 = $a2; }
381 elsif ($a1 ne "" && $a2 ne "") { $a1 .= ",".$a2; }
382 if ($a eq $s)
103 { 383 {
104 if (/^\#\s*ifndef (.*)/) 384 if (!defined($variant_cnt{$s}))
105 { 385 {
106 push(@tag,$1); 386 $variant_cnt{$s} = 0;
107 $tag{$1}=-1;
108 next;
109 } 387 }
110 elsif (/^\#\s*if !defined\(([^\)]+)\)/) 388 $variant_cnt{$s}++;
111 { 389 $a .= "{$variant_cnt{$s}}";
390 }
391 my $toadd = $a.":".$a1.(defined($k)?":".$k:"");
392 my $togrep = $s.'(\{[0-9]+\})?:'.$a1.(defined($k)?":".$k:"");
393 if (!grep(/^$togrep$/,
394 split(/;/, defined($variant{$s})?$variant{$s}:""))) {
395 if (defined($variant{$s})) { $variant{$s} .= ";"; }
396 $variant{$s} .= $toadd;
397 }
398 print STDERR "DEBUG: make_variant: Exit with variant of ",$s," = ",$variant{$s},"\n" if $debug;
399 };
400
401 print STDERR "DEBUG: parsing ----------\n" if $debug;
402 while(<IN>) {
403 last if (/\/\* Error codes for the \w+ functions\. \*\//);
404 if ($line ne '') {
405 $_ = $line . $_;
406 $line = '';
407 }
408
409 if (/\\$/) {
410 chomp; # remove eol
411 chop; # remove ending backslash
412 $line = $_;
413 next;
414 }
415
416 $cpp = 1 if /^\#.*ifdef.*cplusplus/;
417 if ($cpp) {
418 $cpp = 0 if /^\#.*endif/;
419 next;
420 }
421
422 s/\/\*.*?\*\///gs; # ignore comments
423 s/{[^{}]*}//gs; # ignore {} blocks
424 print STDERR "DEBUG: \$_=\"$_\"\n" if $debug;
425 if (/^\#\s*ifndef\s+(.*)/) {
426 push(@tag,"-");
112 push(@tag,$1); 427 push(@tag,$1);
113 $tag{$1}=-1; 428 $tag{$1}=-1;
114 next; 429 print STDERR "DEBUG: $file: found tag $1 = -1\n" if $debug;
430 } elsif (/^\#\s*if\s+!defined\(([^\)]+)\)/) {
431 push(@tag,"-");
432 if (/^\#\s*if\s+(!defined\(([^\)]+)\)(\s+\&\&\s+!defined\(([^\)]+)\))*)$/) {
433 my $tmp_1 = $1;
434 my $tmp_;
435 foreach $tmp_ (split '\&\&',$tmp_1) {
436 $tmp_ =~ /!defined\(([^\)]+)\)/;
437 print STDERR "DEBUG: $file: found tag $1 = -1\n" if $debug;
438 push(@tag,$1);
439 $tag{$1}=-1;
440 }
441 } else {
442 print STDERR "Warning: $file: complicated expression: $_" if $debug; # because it is O...
443 print STDERR "DEBUG: $file: found tag $1 = -1\n" if $debug;
444 push(@tag,$1);
445 $tag{$1}=-1;
115 } 446 }
116 elsif (/^\#\s*ifdef (.*)/) 447 } elsif (/^\#\s*ifdef\s+(.*)/) {
117 { 448 push(@tag,"-");
118 push(@tag,$1); 449 push(@tag,$1);
119 $tag{$1}=1; 450 $tag{$1}=1;
120 next; 451 print STDERR "DEBUG: $file: found tag $1 = 1\n" if $debug;
452 } elsif (/^\#\s*if\s+defined\(([^\)]+)\)/) {
453 push(@tag,"-");
454 if (/^\#\s*if\s+(defined\(([^\)]+)\)(\s+\|\|\s+defined\(([^\)]+)\))*)$/) {
455 my $tmp_1 = $1;
456 my $tmp_;
457 foreach $tmp_ (split '\|\|',$tmp_1) {
458 $tmp_ =~ /defined\(([^\)]+)\)/;
459 print STDERR "DEBUG: $file: found tag $1 = 1\n" if $debug;
460 push(@tag,$1);
461 $tag{$1}=1;
462 }
463 } else {
464 print STDERR "Warning: $file: complicated expression: $_\n" if $debug; # because it is O...
465 print STDERR "DEBUG: $file: found tag $1 = 1\n" if $debug;
466 push(@tag,$1);
467 $tag{$1}=1;
121 } 468 }
122 elsif (/^\#\s*if defined(.*)/) 469 } elsif (/^\#\s*error\s+(\w+) is disabled\./) {
123 { 470 my $tag_i = $#tag;
124 push(@tag,$1); 471 while($tag[$tag_i] ne "-") {
125 $tag{$1}=1; 472 if ($tag[$tag_i] eq "OPENSSL_NO_".$1) {
126 next; 473 $tag{$tag[$tag_i]}=2;
474 print STDERR "DEBUG: $file: chaged tag $1 = 2\n" if $debug;
475 }
476 $tag_i--;
477 }
478 } elsif (/^\#\s*endif/) {
479 my $tag_i = $#tag;
480 while($tag[$tag_i] ne "-") {
481 my $t=$tag[$tag_i];
482 print STDERR "DEBUG: \$t=\"$t\"\n" if $debug;
483 if ($tag{$t}==2) {
484 $tag{$t}=-1;
485 } else {
486 $tag{$t}=0;
487 }
488 print STDERR "DEBUG: $file: changed tag ",$t," = ",$tag{$t},"\n" if $debug;
489 pop(@tag);
490 if ($t =~ /^OPENSSL_NO_([A-Z0-9_]+)$/) {
491 $t=$1;
492 } else {
493 $t="";
494 }
495 if ($t ne ""
496 && !grep(/^$t$/, @known_algorithms)) {
497 $unknown_algorithms{$t} = 1;
498 #print STDERR "DEBUG: Added as unknown algorithm: $t\n" if $debug;
499 }
500 $tag_i--;
127 } 501 }
128 elsif (/^\#\s*endif/)
129 {
130 $tag{$tag[$#tag]}=0;
131 pop(@tag); 502 pop(@tag);
503 } elsif (/^\#\s*else/) {
504 my $tag_i = $#tag;
505 while($tag[$tag_i] ne "-") {
506 my $t=$tag[$tag_i];
507 $tag{$t}= -$tag{$t};
508 print STDERR "DEBUG: $file: changed tag ",$t," = ",$tag{$t},"\n" if $debug;
509 $tag_i--;
510 }
511 } elsif (/^\#\s*if\s+1/) {
512 push(@tag,"-");
513 # Dummy tag
514 push(@tag,"TRUE");
515 $tag{"TRUE"}=1;
516 print STDERR "DEBUG: $file: found 1\n" if $debug;
517 } elsif (/^\#\s*if\s+0/) {
518 push(@tag,"-");
519 # Dummy tag
520 push(@tag,"TRUE");
521 $tag{"TRUE"}=-1;
522 print STDERR "DEBUG: $file: found 0\n" if $debug;
523 } elsif (/^\#\s*define\s+(\w+)\s+(\w+)/
524 && $symhacking && $tag{'TRUE'} != -1) {
525 # This is for aliasing. When we find an alias,
526 # we have to invert
527 &$make_variant($1,$2);
528 print STDERR "DEBUG: $file: defined $1 = $2\n" if $debug;
529 }
530 if (/^\#/) {
531 @current_platforms =
532 grep(!/^$/,
533 map { $tag{$_} == 1 ? $_ :
534 $tag{$_} == -1 ? "!".$_ : "" }
535 @known_platforms);
536 push @current_platforms
537 , grep(!/^$/,
538 map { $tag{"OPENSSL_SYS_".$_} == 1 ? $_ :
539 $tag{"OPENSSL_SYS_".$_} == -1 ? "!".$_ : "" }
540 @known_ossl_platforms);
541 @current_algorithms =
542 grep(!/^$/,
543 map { $tag{"OPENSSL_NO_".$_} == -1 ? $_ : "" }
544 @known_algorithms);
545 $def .=
546 "#INFO:"
547 .join(',',@current_platforms).":"
548 .join(',',@current_algorithms).";";
132 next; 549 next;
550 }
551 if ($tag{'TRUE'} != -1) {
552 if (/^\s*DECLARE_STACK_OF\s*\(\s*(\w*)\s*\)/) {
553 next;
554 } elsif (/^\s*DECLARE_ASN1_ENCODE_FUNCTIONS\s*\(\s*(\w*)\s*,\s*(\w*)\s*,\s*(\w*)\s*\)/) {
555 $def .= "int d2i_$3(void);";
556 $def .= "int i2d_$3(void);";
557 # Variant for platforms that do not
558 # have to access globale variables
559 # in shared libraries through functions
560 $def .=
561 "#INFO:"
562 .join(',',"!EXPORT_VAR_AS_FUNCTION",@current_platforms).":"
563 .join(',',@current_algorithms).";";
564 $def .= "OPENSSL_EXTERN int $2_it;";
565 $def .=
566 "#INFO:"
567 .join(',',@current_platforms).":"
568 .join(',',@current_algorithms).";";
569 # Variant for platforms that have to
570 # access globale variables in shared
571 # libraries through functions
572 &$make_variant("$2_it","$2_it",
573 "EXPORT_VAR_AS_FUNCTION",
574 "FUNCTION");
575 next;
576 } elsif (/^\s*DECLARE_ASN1_FUNCTIONS_fname\s*\(\s*(\w*)\s*,\s*(\w*)\s*,\s*(\w*)\s*\)/) {
577 $def .= "int d2i_$3(void);";
578 $def .= "int i2d_$3(void);";
579 $def .= "int $3_free(void);";
580 $def .= "int $3_new(void);";
581 # Variant for platforms that do not
582 # have to access globale variables
583 # in shared libraries through functions
584 $def .=
585 "#INFO:"
586 .join(',',"!EXPORT_VAR_AS_FUNCTION",@current_platforms).":"
587 .join(',',@current_algorithms).";";
588 $def .= "OPENSSL_EXTERN int $2_it;";
589 $def .=
590 "#INFO:"
591 .join(',',@current_platforms).":"
592 .join(',',@current_algorithms).";";
593 # Variant for platforms that have to
594 # access globale variables in shared
595 # libraries through functions
596 &$make_variant("$2_it","$2_it",
597 "EXPORT_VAR_AS_FUNCTION",
598 "FUNCTION");
599 next;
600 } elsif (/^\s*DECLARE_ASN1_FUNCTIONS\s*\(\s*(\w*)\s*\)/ ||
601 /^\s*DECLARE_ASN1_FUNCTIONS_const\s*\(\s*(\w*)\s*\)/) {
602 $def .= "int d2i_$1(void);";
603 $def .= "int i2d_$1(void);";
604 $def .= "int $1_free(void);";
605 $def .= "int $1_new(void);";
606 # Variant for platforms that do not
607 # have to access globale variables
608 # in shared libraries through functions
609 $def .=
610 "#INFO:"
611 .join(',',"!EXPORT_VAR_AS_FUNCTION",@current_platforms).":"
612 .join(',',@current_algorithms).";";
613 $def .= "OPENSSL_EXTERN int $1_it;";
614 $def .=
615 "#INFO:"
616 .join(',',@current_platforms).":"
617 .join(',',@current_algorithms).";";
618 # Variant for platforms that have to
619 # access globale variables in shared
620 # libraries through functions
621 &$make_variant("$1_it","$1_it",
622 "EXPORT_VAR_AS_FUNCTION",
623 "FUNCTION");
624 next;
625 } elsif (/^\s*DECLARE_ASN1_ENCODE_FUNCTIONS_const\s*\(\s*(\w*)\s*,\s*(\w*)\s*\)/) {
626 $def .= "int d2i_$2(void);";
627 $def .= "int i2d_$2(void);";
628 # Variant for platforms that do not
629 # have to access globale variables
630 # in shared libraries through functions
631 $def .=
632 "#INFO:"
633 .join(',',"!EXPORT_VAR_AS_FUNCTION",@current_platforms).":"
634 .join(',',@current_algorithms).";";
635 $def .= "OPENSSL_EXTERN int $2_it;";
636 $def .=
637 "#INFO:"
638 .join(',',@current_platforms).":"
639 .join(',',@current_algorithms).";";
640 # Variant for platforms that have to
641 # access globale variables in shared
642 # libraries through functions
643 &$make_variant("$2_it","$2_it",
644 "EXPORT_VAR_AS_FUNCTION",
645 "FUNCTION");
646 next;
647 } elsif (/^\s*DECLARE_ASN1_FUNCTIONS_name\s*\(\s*(\w*)\s*,\s*(\w*)\s*\)/) {
648 $def .= "int d2i_$2(void);";
649 $def .= "int i2d_$2(void);";
650 $def .= "int $2_free(void);";
651 $def .= "int $2_new(void);";
652 # Variant for platforms that do not
653 # have to access globale variables
654 # in shared libraries through functions
655 $def .=
656 "#INFO:"
657 .join(',',"!EXPORT_VAR_AS_FUNCTION",@current_platforms).":"
658 .join(',',@current_algorithms).";";
659 $def .= "OPENSSL_EXTERN int $2_it;";
660 $def .=
661 "#INFO:"
662 .join(',',@current_platforms).":"
663 .join(',',@current_algorithms).";";
664 # Variant for platforms that have to
665 # access globale variables in shared
666 # libraries through functions
667 &$make_variant("$2_it","$2_it",
668 "EXPORT_VAR_AS_FUNCTION",
669 "FUNCTION");
670 next;
671 } elsif (/^\s*DECLARE_ASN1_ITEM\s*\(\s*(\w*)\s*\)/) {
672 # Variant for platforms that do not
673 # have to access globale variables
674 # in shared libraries through functions
675 $def .=
676 "#INFO:"
677 .join(',',"!EXPORT_VAR_AS_FUNCTION",@current_platforms).":"
678 .join(',',@current_algorithms).";";
679 $def .= "OPENSSL_EXTERN int $1_it;";
680 $def .=
681 "#INFO:"
682 .join(',',@current_platforms).":"
683 .join(',',@current_algorithms).";";
684 # Variant for platforms that have to
685 # access globale variables in shared
686 # libraries through functions
687 &$make_variant("$1_it","$1_it",
688 "EXPORT_VAR_AS_FUNCTION",
689 "FUNCTION");
690 next;
691 } elsif (/^\s*DECLARE_ASN1_SET_OF\s*\(\s*(\w*)\s*\)/) {
692 next;
693 } elsif (/^\s*DECLARE_PKCS12_STACK_OF\s*\(\s*(\w*)\s*\)/) {
694 next;
695 } elsif (/^DECLARE_PEM_rw\s*\(\s*(\w*)\s*,/ ||
696 /^DECLARE_PEM_rw_cb\s*\(\s*(\w*)\s*,/ ) {
697 # Things not in Win16
698 $def .=
699 "#INFO:"
700 .join(',',"!WIN16",@current_platforms).":"
701 .join(',',@current_algorithms).";";
702 $def .= "int PEM_read_$1(void);";
703 $def .= "int PEM_write_$1(void);";
704 $def .=
705 "#INFO:"
706 .join(',',@current_platforms).":"
707 .join(',',@current_algorithms).";";
708 # Things that are everywhere
709 $def .= "int PEM_read_bio_$1(void);";
710 $def .= "int PEM_write_bio_$1(void);";
711 next;
712 } elsif (/^DECLARE_PEM_write\s*\(\s*(\w*)\s*,/ ||
713 /^DECLARE_PEM_write_cb\s*\(\s*(\w*)\s*,/ ) {
714 # Things not in Win16
715 $def .=
716 "#INFO:"
717 .join(',',"!WIN16",@current_platforms).":"
718 .join(',',@current_algorithms).";";
719 $def .= "int PEM_write_$1(void);";
720 $def .=
721 "#INFO:"
722 .join(',',@current_platforms).":"
723 .join(',',@current_algorithms).";";
724 # Things that are everywhere
725 $def .= "int PEM_write_bio_$1(void);";
726 next;
727 } elsif (/^DECLARE_PEM_read\s*\(\s*(\w*)\s*,/ ||
728 /^DECLARE_PEM_read_cb\s*\(\s*(\w*)\s*,/ ) {
729 # Things not in Win16
730 $def .=
731 "#INFO:"
732 .join(',',"!WIN16",@current_platforms).":"
733 .join(',',@current_algorithms).";";
734 $def .= "int PEM_read_$1(void);";
735 $def .=
736 "#INFO:"
737 .join(',',@current_platforms).":"
738 .join(',',@current_algorithms).";";
739 # Things that are everywhere
740 $def .= "int PEM_read_bio_$1(void);";
741 next;
742 } elsif (/^OPENSSL_DECLARE_GLOBAL\s*\(\s*(\w*)\s*,\s*(\w*)\s*\)/) {
743 # Variant for platforms that do not
744 # have to access globale variables
745 # in shared libraries through functions
746 $def .=
747 "#INFO:"
748 .join(',',"!EXPORT_VAR_AS_FUNCTION",@current_platforms).":"
749 .join(',',@current_algorithms).";";
750 $def .= "OPENSSL_EXTERN int _shadow_$2;";
751 $def .=
752 "#INFO:"
753 .join(',',@current_platforms).":"
754 .join(',',@current_algorithms).";";
755 # Variant for platforms that have to
756 # access globale variables in shared
757 # libraries through functions
758 &$make_variant("_shadow_$2","_shadow_$2",
759 "EXPORT_VAR_AS_FUNCTION",
760 "FUNCTION");
761 } elsif ($tag{'CONST_STRICT'} != 1) {
762 if (/\{|\/\*|\([^\)]*$/) {
763 $line = $_;
764 } else {
765 $def .= $_;
766 }
133 } 767 }
134 elsif (/^\#\s*else/) 768 }
135 { 769 }
136 $t=$tag[$#tag]; 770 close(IN);
137 $tag{$t}= -$tag{$t}; 771
772 my $algs;
773 my $plays;
774
775 print STDERR "DEBUG: postprocessing ----------\n" if $debug;
776 foreach (split /;/, $def) {
777 my $s; my $k = "FUNCTION"; my $p; my $a;
778 s/^[\n\s]*//g;
779 s/[\n\s]*$//g;
780 next if(/\#undef/);
781 next if(/typedef\W/);
782 next if(/\#define/);
783
784 print STDERR "DEBUG: \$_ = \"$_\"\n" if $debug;
785 if (/^\#INFO:([^:]*):(.*)$/) {
786 $plats = $1;
787 $algs = $2;
788 print STDERR "DEBUG: found info on platforms ($plats) and algorithms ($algs)\n" if $debug;
789 next;
790 } elsif (/^\s*OPENSSL_EXTERN\s.*?(\w+(\{[0-9]+\})?)(\[[0-9]*\])*\s*$/) {
791 $s = $1;
792 $k = "VARIABLE";
793 print STDERR "DEBUG: found external variable $s\n" if $debug;
794 } elsif (/\(\*(\w*(\{[0-9]+\})?)\([^\)]+/) {
795 $s = $1;
796 print STDERR "DEBUG: found ANSI C function $s\n" if $debug;
797 } elsif (/\w+\W+(\w+)\W*\(\s*\)$/s) {
798 # K&R C
799 print STDERR "DEBUG: found K&R C function $s\n" if $debug;
138 next; 800 next;
801 } elsif (/\w+\W+\w+(\{[0-9]+\})?\W*\(.*\)$/s) {
802 while (not /\(\)$/s) {
803 s/[^\(\)]*\)$/\)/s;
804 s/\([^\(\)]*\)\)$/\)/s;
139 } 805 }
140#printf STDERR "$_\n%2d %2d %2d %2d %2d $NT\n", 806 s/\(void\)//;
141#$tag{'NOPROTO'},$tag{'FreeBSD'},$tag{'WIN16'},$tag{'PERL5'},$tag{'NO_FP_API'}; 807 /(\w+(\{[0-9]+\})?)\W*\(\)/s;
142 808 $s = $1;
143 $t=undef; 809 print STDERR "DEBUG: found function $s\n" if $debug;
144 if (/^extern .*;$/) 810 } elsif (/\(/ and not (/=/)) {
145 { $t=&do_extern($name,$_); } 811 print STDERR "File $file: cannot parse: $_;\n";
146 elsif ( ($tag{'NOPROTO'} == 1) && 812 next;
147 ($tag{'FreeBSD'} != 1) && 813 } else {
148 (($NT && ($tag{'WIN16'} != 1)) || 814 next;
149 (!$NT && ($tag{'WIN16'} != -1))) && 815 }
150 ($tag{'PERL5'} != 1) && 816
151# ($tag{'_WINDLL'} != -1) && 817 $syms{$s} = 1;
152 ((!$NT && $tag{'_WINDLL'} != -1) || 818 $kind{$s} = $k;
153 ($NT && $tag{'_WINDLL'} != 1)) && 819
154 ((($tag{'NO_FP_API'} != 1) && $NT) || 820 $p = $plats;
155 (($tag{'NO_FP_API'} != -1) && !$NT))) 821 $a = $algs;
156 { $t=&do_line($name,$_); } 822 $a .= ",BF" if($s =~ /EVP_bf/);
157 else 823 $a .= ",CAST" if($s =~ /EVP_cast/);
158 { $t=undef; } 824 $a .= ",DES" if($s =~ /EVP_des/);
159 if (($t ne undef) && (!$done{$name,$t})) 825 $a .= ",DSA" if($s =~ /EVP_dss/);
160 { 826 $a .= ",IDEA" if($s =~ /EVP_idea/);
161 $done{$name,$t}++; 827 $a .= ",MD2" if($s =~ /EVP_md2/);
162 push(@ret,$t); 828 $a .= ",MD4" if($s =~ /EVP_md4/);
163#printf STDERR "one:$t\n" if $t =~ /BIO_/; 829 $a .= ",MD5" if($s =~ /EVP_md5/);
830 $a .= ",RC2" if($s =~ /EVP_rc2/);
831 $a .= ",RC4" if($s =~ /EVP_rc4/);
832 $a .= ",RC5" if($s =~ /EVP_rc5/);
833 $a .= ",RIPEMD" if($s =~ /EVP_ripemd/);
834 $a .= ",SHA" if($s =~ /EVP_sha/);
835 $a .= ",RSA" if($s =~ /EVP_(Open|Seal)(Final|Init)/);
836 $a .= ",RSA" if($s =~ /PEM_Seal(Final|Init|Update)/);
837 $a .= ",RSA" if($s =~ /RSAPrivateKey/);
838 $a .= ",RSA" if($s =~ /SSLv23?_((client|server)_)?method/);
839
840 $platform{$s} =
841 &reduce_platforms((defined($platform{$s})?$platform{$s}.',':"").$p);
842 $algorithm{$s} .= ','.$a;
843
844 if (defined($variant{$s})) {
845 foreach $v (split /;/,$variant{$s}) {
846 (my $r, my $p, my $k) = split(/:/,$v);
847 my $ip = join ',',map({ /^!(.*)$/ ? $1 : "!".$_ } split /,/, $p);
848 $syms{$r} = 1;
849 if (!defined($k)) { $k = $kind{$s}; }
850 $kind{$r} = $k."(".$s.")";
851 $algorithm{$r} = $algorithm{$s};
852 $platform{$r} = &reduce_platforms($platform{$s}.",".$p.",".$p);
853 $platform{$s} = &reduce_platforms($platform{$s}.','.$ip.','.$ip);
854 print STDERR "DEBUG: \$variant{\"$s\"} = ",$v,"; \$r = $r; \$p = ",$platform{$r},"; \$a = ",$algorithm{$r},"; \$kind = ",$kind{$r},"\n" if $debug;
164 } 855 }
165 } 856 }
166 close(IN); 857 print STDERR "DEBUG: \$s = $s; \$p = ",$platform{$s},"; \$a = ",$algorithm{$s},"; \$kind = ",$kind{$s},"\n" if $debug;
167 } 858 }
859 }
860
861 # Prune the returned symbols
862
863 delete $syms{"bn_dump1"};
864 $platform{"BIO_s_log"} .= ",!WIN32,!WIN16,!macintosh";
865
866 $platform{"PEM_read_NS_CERT_SEQ"} = "VMS";
867 $platform{"PEM_write_NS_CERT_SEQ"} = "VMS";
868 $platform{"PEM_read_P8_PRIV_KEY_INFO"} = "VMS";
869 $platform{"PEM_write_P8_PRIV_KEY_INFO"} = "VMS";
870
871 # Info we know about
872
873 push @ret, map { $_."\\".&info_string($_,"EXIST",
874 $platform{$_},
875 $kind{$_},
876 $algorithm{$_}) } keys %syms;
877
878 if (keys %unknown_algorithms) {
879 print STDERR "WARNING: mkdef.pl doesn't know the following algorithms:\n";
880 print STDERR "\t",join("\n\t",keys %unknown_algorithms),"\n";
881 }
168 return(@ret); 882 return(@ret);
883}
884
885# Param: string of comma-separated platform-specs.
886sub reduce_platforms
887{
888 my ($platforms) = @_;
889 my $pl = defined($platforms) ? $platforms : "";
890 my %p = map { $_ => 0 } split /,/, $pl;
891 my $ret;
892
893 print STDERR "DEBUG: Entered reduce_platforms with \"$platforms\"\n"
894 if $debug;
895 # We do this, because if there's code like the following, it really
896 # means the function exists in all cases and should therefore be
897 # everywhere. By increasing and decreasing, we may attain 0:
898 #
899 # ifndef WIN16
900 # int foo();
901 # else
902 # int _fat foo();
903 # endif
904 foreach $platform (split /,/, $pl) {
905 if ($platform =~ /^!(.*)$/) {
906 $p{$1}--;
907 } else {
908 $p{$platform}++;
909 }
910 }
911 foreach $platform (keys %p) {
912 if ($p{$platform} == 0) { delete $p{$platform}; }
169 } 913 }
170 914
171sub do_line 915 delete $p{""};
172 { 916
173 local($file,$_)=@_; 917 $ret = join(',',sort(map { $p{$_} < 0 ? "!".$_ : $_ } keys %p));
174 local($n); 918 print STDERR "DEBUG: Exiting reduce_platforms with \"$ret\"\n"
175 919 if $debug;
176 return(undef) if /^$/; 920 return $ret;
177 return(undef) if /^\s/; 921}
178#printf STDERR "two:$_\n" if $_ =~ /BIO_/; 922
179 if (/(CRYPTO_get_locking_callback)/) 923sub info_string {
180 { return($1); } 924 (my $symbol, my $exist, my $platforms, my $kind, my $algorithms) = @_;
181 elsif (/(CRYPTO_get_id_callback)/) 925
182 { return($1); } 926 my %a = defined($algorithms) ?
183 elsif (/(CRYPTO_get_add_lock_callback)/) 927 map { $_ => 1 } split /,/, $algorithms : ();
184 { return($1); } 928 my $k = defined($kind) ? $kind : "FUNCTION";
185 elsif (/(SSL_CTX_get_verify_callback)/) 929 my $ret;
186 { return($1); } 930 my $p = &reduce_platforms($platforms);
187 elsif (/(SSL_get_info_callback)/) 931
188 { return($1); } 932 delete $a{""};
189 elsif ((!$NT) && /(ERR_load_CRYPTO_strings)/) 933
190 { return("ERR_load_CRYPTOlib_strings"); } 934 $ret = $exist;
191 elsif (!$NT && /BIO_s_file/) 935 $ret .= ":".$p;
192 { return(undef); } 936 $ret .= ":".$k;
193 elsif (!$NT && /BIO_new_file/) 937 $ret .= ":".join(',',sort keys %a);
194 { return(undef); } 938 return $ret;
195 elsif (!$NT && /BIO_new_fp/) 939}
196 { return(undef); } 940
197 elsif ($NT && /BIO_s_file_internal/) 941sub maybe_add_info {
198 { return(undef); } 942 (my $name, *nums, my @symbols) = @_;
199 elsif ($NT && /BIO_new_file_internal/) 943 my $sym;
200 { return(undef); } 944 my $new_info = 0;
201 elsif ($NT && /BIO_new_fp_internal/) 945 my %syms=();
202 { return(undef); } 946
203 else 947 print STDERR "Updating $name info\n";
204 { 948 foreach $sym (@symbols) {
205 /\s\**(\S+)\s*\(/; 949 (my $s, my $i) = split /\\/, $sym;
206 return($1); 950 if (defined($nums{$s})) {
951 $i =~ s/^(.*?:.*?:\w+)(\(\w+\))?/$1/;
952 (my $n, my $dummy) = split /\\/, $nums{$s};
953 if (!defined($dummy) || $i ne $dummy) {
954 $nums{$s} = $n."\\".$i;
955 $new_info++;
956 print STDERR "DEBUG: maybe_add_info for $s: \"$dummy\" => \"$i\"\n" if $debug;
957 }
207 } 958 }
959 $syms{$s} = 1;
208 } 960 }
209 961
210sub do_extern 962 my @s=sort { &parse_number($nums{$a},"n") <=> &parse_number($nums{$b},"n") } keys %nums;
963 foreach $sym (@s) {
964 (my $n, my $i) = split /\\/, $nums{$sym};
965 if (!defined($syms{$sym}) && $i !~ /^NOEXIST:/) {
966 $new_info++;
967 print STDERR "DEBUG: maybe_add_info for $sym: -> undefined\n" if $debug;
968 }
969 }
970 if ($new_info) {
971 print STDERR "$new_info old symbols got an info update\n";
972 if (!$do_rewrite) {
973 print STDERR "You should do a rewrite to fix this.\n";
974 }
975 } else {
976 print STDERR "No old symbols needed info update\n";
977 }
978}
979
980# Param: string of comma-separated keywords, each possibly prefixed with a "!"
981sub is_valid
982{
983 my ($keywords_txt,$platforms) = @_;
984 my (@keywords) = split /,/,$keywords_txt;
985 my ($falsesum, $truesum) = (0, !grep(/^[^!]/,@keywords));
986
987 # Param: one keyword
988 sub recognise
211 { 989 {
212 local($file,$_)=@_; 990 my ($keyword,$platforms) = @_;
213 local($n);
214 991
215 /\s\**(\S+);$/; 992 if ($platforms) {
216 return($1); 993 # platforms
994 if ($keyword eq "VMS" && $VMS) { return 1; }
995 if ($keyword eq "WIN32" && $W32) { return 1; }
996 if ($keyword eq "WIN16" && $W16) { return 1; }
997 if ($keyword eq "WINNT" && $NT) { return 1; }
998 # Special platforms:
999 # EXPORT_VAR_AS_FUNCTION means that global variables
1000 # will be represented as functions. This currently
1001 # only happens on VMS-VAX.
1002 if ($keyword eq "EXPORT_VAR_AS_FUNCTION" && ($VMSVAX || $W32 || $W16)) {
1003 return 1;
1004 }
1005 return 0;
1006 } else {
1007 # algorithms
1008 if ($keyword eq "RC2" && $no_rc2) { return 0; }
1009 if ($keyword eq "RC4" && $no_rc4) { return 0; }
1010 if ($keyword eq "RC5" && $no_rc5) { return 0; }
1011 if ($keyword eq "IDEA" && $no_idea) { return 0; }
1012 if ($keyword eq "DES" && $no_des) { return 0; }
1013 if ($keyword eq "BF" && $no_bf) { return 0; }
1014 if ($keyword eq "CAST" && $no_cast) { return 0; }
1015 if ($keyword eq "MD2" && $no_md2) { return 0; }
1016 if ($keyword eq "MD4" && $no_md4) { return 0; }
1017 if ($keyword eq "MD5" && $no_md5) { return 0; }
1018 if ($keyword eq "SHA" && $no_sha) { return 0; }
1019 if ($keyword eq "RIPEMD" && $no_ripemd) { return 0; }
1020 if ($keyword eq "MDC2" && $no_mdc2) { return 0; }
1021 if ($keyword eq "RSA" && $no_rsa) { return 0; }
1022 if ($keyword eq "DSA" && $no_dsa) { return 0; }
1023 if ($keyword eq "DH" && $no_dh) { return 0; }
1024 if ($keyword eq "EC" && $no_ec) { return 0; }
1025 if ($keyword eq "HMAC" && $no_hmac) { return 0; }
1026 if ($keyword eq "AES" && $no_aes) { return 0; }
1027 if ($keyword eq "EVP" && $no_evp) { return 0; }
1028 if ($keyword eq "LHASH" && $no_lhash) { return 0; }
1029 if ($keyword eq "STACK" && $no_stack) { return 0; }
1030 if ($keyword eq "ERR" && $no_err) { return 0; }
1031 if ($keyword eq "BUFFER" && $no_buffer) { return 0; }
1032 if ($keyword eq "BIO" && $no_bio) { return 0; }
1033 if ($keyword eq "COMP" && $no_comp) { return 0; }
1034 if ($keyword eq "DSO" && $no_dso) { return 0; }
1035 if ($keyword eq "KRB5" && $no_krb5) { return 0; }
1036 if ($keyword eq "FP_API" && $no_fp_api) { return 0; }
1037
1038 # Nothing recognise as true
1039 return 1;
1040 }
1041 }
1042
1043 foreach $k (@keywords) {
1044 if ($k =~ /^!(.*)$/) {
1045 $falsesum += &recognise($1,$platforms);
1046 } else {
1047 $truesum += &recognise($k,$platforms);
1048 }
217 } 1049 }
1050 print STDERR "DEBUG: [",$#keywords,",",$#keywords < 0,"] is_valid($keywords_txt) => (\!$falsesum) && $truesum = ",(!$falsesum) && $truesum,"\n" if $debug;
1051 return (!$falsesum) && $truesum;
1052}
1053
1054sub print_test_file
1055{
1056 (*OUT,my $name,*nums,my $testall,my @symbols)=@_;
1057 my $n = 1; my @e; my @r;
1058 my $sym; my $prev = ""; my $prefSSLeay;
1059
1060 (@e)=grep(/^SSLeay(\{[0-9]+\})?\\.*?:.*?:.*/,@symbols);
1061 (@r)=grep(/^\w+(\{[0-9]+\})?\\.*?:.*?:.*/ && !/^SSLeay(\{[0-9]+\})?\\.*?:.*?:.*/,@symbols);
1062 @symbols=((sort @e),(sort @r));
1063
1064 foreach $sym (@symbols) {
1065 (my $s, my $i) = $sym =~ /^(.*?)\\(.*)$/;
1066 my $v = 0;
1067 $v = 1 if $i=~ /^.*?:.*?:VARIABLE/;
1068 my $p = ($i =~ /^[^:]*:([^:]*):/,$1);
1069 my $a = ($i =~ /^[^:]*:[^:]*:[^:]*:([^:]*)/,$1);
1070 if (!defined($nums{$s})) {
1071 print STDERR "Warning: $s does not have a number assigned\n"
1072 if(!$do_update);
1073 } elsif (is_valid($p,1) && is_valid($a,0)) {
1074 my $s2 = ($s =~ /^(.*?)(\{[0-9]+\})?$/, $1);
1075 if ($prev eq $s2) {
1076 print OUT "\t/* The following has already appeared previously */\n";
1077 print STDERR "Warning: Symbol '",$s2,"' redefined. old=",($nums{$prev} =~ /^(.*?)\\/,$1),", new=",($nums{$s2} =~ /^(.*?)\\/,$1),"\n";
1078 }
1079 $prev = $s2; # To warn about duplicates...
1080
1081 ($nn,$ni)=($nums{$s2} =~ /^(.*?)\\(.*)$/);
1082 if ($v) {
1083 print OUT "\textern int $s2; /* type unknown */ /* $nn $ni */\n";
1084 } else {
1085 print OUT "\textern int $s2(); /* type unknown */ /* $nn $ni */\n";
1086 }
1087 }
1088 }
1089}
218 1090
219sub print_def_file 1091sub print_def_file
220 { 1092{
221 local(*OUT,$name,*nums,@functions)=@_; 1093 (*OUT,my $name,*nums,my @symbols)=@_;
222 local($n)=1; 1094 my $n = 1; my @e; my @r; my @v; my $prev="";
223 1095
224 if ($NT) 1096 if ($W32)
225 { $name.="32"; } 1097 { $name.="32"; }
226 else 1098 else
227 { $name.="16"; } 1099 { $name.="16"; }
228 1100
229 print OUT <<"EOF"; 1101 print OUT <<"EOF";
230; 1102;
231; Definition file for the DDL version of the $name library from SSLeay 1103; Definition file for the DLL version of the $name library from OpenSSL
232; 1104;
233 1105
234LIBRARY $name 1106LIBRARY $name
235 1107
236DESCRIPTION 'SSLeay $name - eay\@cryptsoft.com' 1108DESCRIPTION 'OpenSSL $name - http://www.openssl.org/'
237 1109
238EOF 1110EOF
239 1111
240 if (!$NT) 1112 if (!$W32) {
241 {
242 print <<"EOF"; 1113 print <<"EOF";
243CODE PRELOAD MOVEABLE 1114CODE PRELOAD MOVEABLE
244DATA PRELOAD MOVEABLE SINGLE 1115DATA PRELOAD MOVEABLE SINGLE
@@ -249,44 +1120,219 @@ HEAPSIZE 4096
249STACKSIZE 8192 1120STACKSIZE 8192
250 1121
251EOF 1122EOF
252 } 1123 }
253 1124
254 print "EXPORTS\n"; 1125 print "EXPORTS\n";
255 1126
1127 (@e)=grep(/^SSLeay(\{[0-9]+\})?\\.*?:.*?:FUNCTION/,@symbols);
1128 (@r)=grep(/^\w+(\{[0-9]+\})?\\.*?:.*?:FUNCTION/ && !/^SSLeay(\{[0-9]+\})?\\.*?:.*?:FUNCTION/,@symbols);
1129 (@v)=grep(/^\w+(\{[0-9]+\})?\\.*?:.*?:VARIABLE/,@symbols);
1130 @symbols=((sort @e),(sort @r), (sort @v));
256 1131
257 (@e)=grep(/^SSLeay/,@functions);
258 (@r)=grep(!/^SSLeay/,@functions);
259 @functions=((sort @e),(sort @r));
260 1132
261 foreach $func (@functions) 1133 foreach $sym (@symbols) {
262 { 1134 (my $s, my $i) = $sym =~ /^(.*?)\\(.*)$/;
263 if (!defined($nums{$func})) 1135 my $v = 0;
264 { 1136 $v = 1 if $i =~ /^.*?:.*?:VARIABLE/;
265 printf STDERR "$func does not have a number assigned\n"; 1137 if (!defined($nums{$s})) {
266 } 1138 printf STDERR "Warning: $s does not have a number assigned\n"
267 else 1139 if(!$do_update);
268 { 1140 } else {
269 $n=$nums{$func}; 1141 (my $n, my $dummy) = split /\\/, $nums{$s};
270 printf OUT " %s%-35s@%d\n",($NT)?"":"_",$func,$n; 1142 my %pf = ();
1143 my $p = ($i =~ /^[^:]*:([^:]*):/,$1);
1144 my $a = ($i =~ /^[^:]*:[^:]*:[^:]*:([^:]*)/,$1);
1145 if (is_valid($p,1) && is_valid($a,0)) {
1146 my $s2 = ($s =~ /^(.*?)(\{[0-9]+\})?$/, $1);
1147 if ($prev eq $s2) {
1148 print STDERR "Warning: Symbol '",$s2,"' redefined. old=",($nums{$prev} =~ /^(.*?)\\/,$1),", new=",($nums{$s2} =~ /^(.*?)\\/,$1),"\n";
1149 }
1150 $prev = $s2; # To warn about duplicates...
1151 if($v) {
1152 printf OUT " %s%-39s @%-8d DATA\n",($W32)?"":"_",$s2,$n;
1153 } else {
1154 printf OUT " %s%-39s @%d\n",($W32)?"":"_",$s2,$n;
1155 }
271 } 1156 }
272 } 1157 }
273 printf OUT "\n";
274 } 1158 }
1159 printf OUT "\n";
1160}
275 1161
276sub load_numbers 1162sub load_numbers
277 { 1163{
278 local($name)=@_; 1164 my($name)=@_;
279 local($j,@a,%ret); 1165 my(@a,%ret);
1166
1167 $max_num = 0;
1168 $num_noinfo = 0;
1169 $prev = "";
1170 $prev_cnt = 0;
280 1171
281 open(IN,"<$name") || die "unable to open $name:$!\n"; 1172 open(IN,"<$name") || die "unable to open $name:$!\n";
282 while (<IN>) 1173 while (<IN>) {
283 {
284 chop; 1174 chop;
285 s/#.*$//; 1175 s/#.*$//;
286 next if /^\s*$/; 1176 next if /^\s*$/;
287 @a=split; 1177 @a=split;
288 $ret{$a[0]}=$a[1]; 1178 if (defined $ret{$a[0]}) {
1179 # This is actually perfectly OK
1180 #print STDERR "Warning: Symbol '",$a[0],"' redefined. old=",$ret{$a[0]},", new=",$a[1],"\n";
289 } 1181 }
1182 if ($max_num > $a[1]) {
1183 print STDERR "Warning: Number decreased from ",$max_num," to ",$a[1],"\n";
1184 }
1185 elsif ($max_num == $a[1]) {
1186 # This is actually perfectly OK
1187 #print STDERR "Warning: Symbol ",$a[0]," has same number as previous ",$prev,": ",$a[1],"\n";
1188 if ($a[0] eq $prev) {
1189 $prev_cnt++;
1190 $a[0] .= "{$prev_cnt}";
1191 }
1192 }
1193 else {
1194 $prev_cnt = 0;
1195 }
1196 if ($#a < 2) {
1197 # Existence will be proven later, in do_defs
1198 $ret{$a[0]}=$a[1];
1199 $num_noinfo++;
1200 } else {
1201 $ret{$a[0]}=$a[1]."\\".$a[2]; # \\ is a special marker
1202 }
1203 $max_num = $a[1] if $a[1] > $max_num;
1204 $prev=$a[0];
1205 }
1206 if ($num_noinfo) {
1207 print STDERR "Warning: $num_noinfo symbols were without info.";
1208 if ($do_rewrite) {
1209 printf STDERR " The rewrite will fix this.\n";
1210 } else {
1211 printf STDERR " You should do a rewrite to fix this.\n";
1212 }
1213 }
290 close(IN); 1214 close(IN);
291 return(%ret); 1215 return(%ret);
1216}
1217
1218sub parse_number
1219{
1220 (my $str, my $what) = @_;
1221 (my $n, my $i) = split(/\\/,$str);
1222 if ($what eq "n") {
1223 return $n;
1224 } else {
1225 return $i;
1226 }
1227}
1228
1229sub rewrite_numbers
1230{
1231 (*OUT,$name,*nums,@symbols)=@_;
1232 my $thing;
1233
1234 print STDERR "Rewriting $name\n";
1235
1236 my @r = grep(/^\w+(\{[0-9]+\})?\\.*?:.*?:\w+\(\w+\)/,@symbols);
1237 my $r; my %r; my %rsyms;
1238 foreach $r (@r) {
1239 (my $s, my $i) = split /\\/, $r;
1240 my $a = $1 if $i =~ /^.*?:.*?:\w+\((\w+)\)/;
1241 $i =~ s/^(.*?:.*?:\w+)\(\w+\)/$1/;
1242 $r{$a} = $s."\\".$i;
1243 $rsyms{$s} = 1;
1244 }
1245
1246 my %syms = ();
1247 foreach $_ (@symbols) {
1248 (my $n, my $i) = split /\\/;
1249 $syms{$n} = 1;
1250 }
1251
1252 my @s=sort {
1253 &parse_number($nums{$a},"n") <=> &parse_number($nums{$b},"n")
1254 || $a cmp $b
1255 } keys %nums;
1256 foreach $sym (@s) {
1257 (my $n, my $i) = split /\\/, $nums{$sym};
1258 next if defined($i) && $i =~ /^.*?:.*?:\w+\(\w+\)/;
1259 next if defined($rsyms{$sym});
1260 print STDERR "DEBUG: rewrite_numbers for sym = ",$sym,": i = ",$i,", n = ",$n,", rsym{sym} = ",$rsyms{$sym},"syms{sym} = ",$syms{$sym},"\n" if $debug;
1261 $i="NOEXIST::FUNCTION:"
1262 if !defined($i) || $i eq "" || !defined($syms{$sym});
1263 my $s2 = $sym;
1264 $s2 =~ s/\{[0-9]+\}$//;
1265 printf OUT "%s%-39s %d\t%s\n","",$s2,$n,$i;
1266 if (exists $r{$sym}) {
1267 (my $s, $i) = split /\\/,$r{$sym};
1268 my $s2 = $s;
1269 $s2 =~ s/\{[0-9]+\}$//;
1270 printf OUT "%s%-39s %d\t%s\n","",$s2,$n,$i;
1271 }
1272 }
1273}
1274
1275sub update_numbers
1276{
1277 (*OUT,$name,*nums,my $start_num, my @symbols)=@_;
1278 my $new_syms = 0;
1279
1280 print STDERR "Updating $name numbers\n";
1281
1282 my @r = grep(/^\w+(\{[0-9]+\})?\\.*?:.*?:\w+\(\w+\)/,@symbols);
1283 my $r; my %r; my %rsyms;
1284 foreach $r (@r) {
1285 (my $s, my $i) = split /\\/, $r;
1286 my $a = $1 if $i =~ /^.*?:.*?:\w+\((\w+)\)/;
1287 $i =~ s/^(.*?:.*?:\w+)\(\w+\)/$1/;
1288 $r{$a} = $s."\\".$i;
1289 $rsyms{$s} = 1;
292 } 1290 }
1291
1292 foreach $sym (@symbols) {
1293 (my $s, my $i) = $sym =~ /^(.*?)\\(.*)$/;
1294 next if $i =~ /^.*?:.*?:\w+\(\w+\)/;
1295 next if defined($rsyms{$sym});
1296 die "ERROR: Symbol $sym had no info attached to it."
1297 if $i eq "";
1298 if (!exists $nums{$s}) {
1299 $new_syms++;
1300 my $s2 = $s;
1301 $s2 =~ s/\{[0-9]+\}$//;
1302 printf OUT "%s%-39s %d\t%s\n","",$s2, ++$start_num,$i;
1303 if (exists $r{$s}) {
1304 ($s, $i) = split /\\/,$r{$s};
1305 $s =~ s/\{[0-9]+\}$//;
1306 printf OUT "%s%-39s %d\t%s\n","",$s, $start_num,$i;
1307 }
1308 }
1309 }
1310 if($new_syms) {
1311 print STDERR "$new_syms New symbols added\n";
1312 } else {
1313 print STDERR "No New symbols Added\n";
1314 }
1315}
1316
1317sub check_existing
1318{
1319 (*nums, my @symbols)=@_;
1320 my %existing; my @remaining;
1321 @remaining=();
1322 foreach $sym (@symbols) {
1323 (my $s, my $i) = $sym =~ /^(.*?)\\(.*)$/;
1324 $existing{$s}=1;
1325 }
1326 foreach $sym (keys %nums) {
1327 if (!exists $existing{$sym}) {
1328 push @remaining, $sym;
1329 }
1330 }
1331 if(@remaining) {
1332 print STDERR "The following symbols do not seem to exist:\n";
1333 foreach $sym (@remaining) {
1334 print STDERR "\t",$sym,"\n";
1335 }
1336 }
1337}
1338
diff --git a/src/lib/libcrypto/util/mkfiles.pl b/src/lib/libcrypto/util/mkfiles.pl
index 6fa424bd19..29e1404c69 100644
--- a/src/lib/libcrypto/util/mkfiles.pl
+++ b/src/lib/libcrypto/util/mkfiles.pl
@@ -10,6 +10,7 @@ my @dirs = (
10".", 10".",
11"crypto", 11"crypto",
12"crypto/md2", 12"crypto/md2",
13"crypto/md4",
13"crypto/md5", 14"crypto/md5",
14"crypto/sha", 15"crypto/sha",
15"crypto/mdc2", 16"crypto/mdc2",
@@ -22,10 +23,13 @@ my @dirs = (
22"crypto/idea", 23"crypto/idea",
23"crypto/bf", 24"crypto/bf",
24"crypto/cast", 25"crypto/cast",
26"crypto/aes",
25"crypto/bn", 27"crypto/bn",
26"crypto/rsa", 28"crypto/rsa",
27"crypto/dsa", 29"crypto/dsa",
30"crypto/dso",
28"crypto/dh", 31"crypto/dh",
32"crypto/ec",
29"crypto/buffer", 33"crypto/buffer",
30"crypto/bio", 34"crypto/bio",
31"crypto/stack", 35"crypto/stack",
@@ -43,8 +47,11 @@ my @dirs = (
43"crypto/pkcs7", 47"crypto/pkcs7",
44"crypto/pkcs12", 48"crypto/pkcs12",
45"crypto/comp", 49"crypto/comp",
50"crypto/engine",
51"crypto/ocsp",
52"crypto/ui",
53"crypto/krb5",
46"ssl", 54"ssl",
47"rsaref",
48"apps", 55"apps",
49"test", 56"test",
50"tools" 57"tools"
diff --git a/src/lib/libcrypto/util/mklink.pl b/src/lib/libcrypto/util/mklink.pl
index de555820ec..9e9c9a5146 100644
--- a/src/lib/libcrypto/util/mklink.pl
+++ b/src/lib/libcrypto/util/mklink.pl
@@ -48,8 +48,13 @@ foreach $dirname (@from_path) {
48my $to = join('/', @to_path); 48my $to = join('/', @to_path);
49 49
50my $file; 50my $file;
51$symlink_exists=eval {symlink("",""); 1};
51foreach $file (@files) { 52foreach $file (@files) {
52# print "ln -s $to/$file $from/$file\n"; 53 my $err = "";
53 symlink("$to/$file", "$from/$file"); 54 if ($symlink_exists) {
54 print $file . " => $from/$file\n"; 55 symlink("$to/$file", "$from/$file") or $err = " [$!]";
56 } else {
57 system ("cp", "$file", "$from/$file") and $err = " [$!]";
58 }
59 print $file . " => $from/$file$err\n";
55} 60}
diff --git a/src/lib/libcrypto/util/perlpath.pl b/src/lib/libcrypto/util/perlpath.pl
index 9e57e10ad4..a1f236bd98 100644
--- a/src/lib/libcrypto/util/perlpath.pl
+++ b/src/lib/libcrypto/util/perlpath.pl
@@ -1,4 +1,4 @@
1#!/usr/bin/perl 1#!/usr/local/bin/perl
2# 2#
3# modify the '#!/usr/local/bin/perl' 3# modify the '#!/usr/local/bin/perl'
4# line in all scripts that rely on perl. 4# line in all scripts that rely on perl.
@@ -17,7 +17,12 @@ sub wanted
17 @a=<IN>; 17 @a=<IN>;
18 close(IN); 18 close(IN);
19 19
20 $a[0]="#!$ARGV[0]/perl\n"; 20 if (-d $ARGV[0]) {
21 $a[0]="#!$ARGV[0]/perl\n";
22 }
23 else {
24 $a[0]="#!$ARGV[0]\n";
25 }
21 26
22 # Playing it safe... 27 # Playing it safe...
23 $new="$_.new"; 28 $new="$_.new";
diff --git a/src/lib/libcrypto/util/pl/BC-16.pl b/src/lib/libcrypto/util/pl/BC-16.pl
index 7c3fdb68f4..2033f524ca 100644
--- a/src/lib/libcrypto/util/pl/BC-16.pl
+++ b/src/lib/libcrypto/util/pl/BC-16.pl
@@ -1,4 +1,4 @@
1#!/usr/bin/perl 1#!/usr/local/bin/perl
2# VCw16lib.pl - the file for Visual C++ 1.52b for windows, static libraries 2# VCw16lib.pl - the file for Visual C++ 1.52b for windows, static libraries
3# 3#
4 4
@@ -21,14 +21,14 @@ $lflags="$base_lflags";
21if ($win16) 21if ($win16)
22 { 22 {
23 $shlib=1; 23 $shlib=1;
24 $cflags.=" -DWINDOWS -DWIN16"; 24 $cflags.=" -DOPENSSL_SYSNAME_WIN16";
25 $app_cflag="-W"; 25 $app_cflag="-W";
26 $lib_cflag="-WD"; 26 $lib_cflag="-WD";
27 $lflags.="/Twe"; 27 $lflags.="/Twe";
28 } 28 }
29else 29else
30 { 30 {
31 $cflags.=" -DMSDOS"; 31 $cflags.=" -DOENSSL_SYSNAME_MSDOS";
32 $lflags.=" /Tde"; 32 $lflags.=" /Tde";
33 } 33 }
34 34
@@ -66,18 +66,18 @@ $asm='bcc -c -B -Tml';
66$afile='/o'; 66$afile='/o';
67if ($no_asm) 67if ($no_asm)
68 { 68 {
69 $bn_mulw_obj=''; 69 $bn_asm_obj='';
70 $bn_mulw_src=''; 70 $bn_asm_src='';
71 } 71 }
72elsif ($asmbits == 32) 72elsif ($asmbits == 32)
73 { 73 {
74 $bn_mulw_obj='crypto\bn\asm\x86w32.obj'; 74 $bn_asm_obj='crypto\bn\asm\x86w32.obj';
75 $bn_mulw_src='crypto\bn\asm\x86w32.asm'; 75 $bn_asm_src='crypto\bn\asm\x86w32.asm';
76 } 76 }
77else 77else
78 { 78 {
79 $bn_mulw_obj='crypto\bn\asm\x86w16.obj'; 79 $bn_asm_obj='crypto\bn\asm\x86w16.obj';
80 $bn_mulw_src='crypto\bn\asm\x86w16.asm'; 80 $bn_asm_src='crypto\bn\asm\x86w16.asm';
81 } 81 }
82 82
83sub do_lib_rule 83sub do_lib_rule
diff --git a/src/lib/libcrypto/util/pl/BC-32.pl b/src/lib/libcrypto/util/pl/BC-32.pl
index 3898d16f61..78d60616a6 100644
--- a/src/lib/libcrypto/util/pl/BC-32.pl
+++ b/src/lib/libcrypto/util/pl/BC-32.pl
@@ -1,102 +1,120 @@
1#!/usr/bin/perl 1#!/usr/local/bin/perl
2# VCw16lib.pl - the file for Visual C++ 1.52b for windows, static libraries 2# Borland C++ builder 3 and 4 -- Janez Jere <jj@void.si>
3# 3#
4 4
5$ssl= "ssleay32";
6$crypto="libeay32";
7
5$o='\\'; 8$o='\\';
6$cp='copy'; 9$cp='copy';
7$rm='del'; 10$rm='del';
8 11
9# C compiler stuff 12# C compiler stuff
10$cc='bcc32'; 13$cc='bcc32';
11 14$lflags="-ap -Tpe -x -Gn ";
15$mlflags='';
16
17$out_def="out32";
18$tmp_def="tmp32";
19$inc_def="inc32";
20#enable max error messages, disable most common warnings
21$cflags="-DWIN32_LEAN_AND_MEAN -q -w-aus -w-par -w-inl -c -tWC -tWM -DOPENSSL_SYSNAME_WIN32 -DL_ENDIAN -DDSO_WIN32 ";
12if ($debug) 22if ($debug)
13 { $op="-v "; } 23{
14else { $op="-O "; } 24 $cflags.="-Od -y -v -vi- -D_DEBUG";
15 25 $mlflags.=' ';
16$cflags="-d $op -DL_ENDIAN "; 26}
17# I add the stack opt
18$base_lflags="-c";
19$lflags="$base_lflags";
20
21$cflags.=" -DWINDOWS -DWIN32";
22$app_cflag="-WC";
23$lib_cflag="-WC";
24$lflags.=" -Tpe";
25
26if ($shlib)
27 {
28 $mlflags="$base_lflags -Tpe"; # stack if defined in .def file
29 $libs="libw ldllcew";
30 }
31else 27else
32 { $mlflags=''; } 28{
29 $cflags.="-O2 -ff -fp";
30}
33 31
34$obj='.obj'; 32$obj='.obj';
35$ofile="-o"; 33$ofile="-o";
36 34
37# EXE linking stuff 35# EXE linking stuff
38$link="tlink32"; 36$link="ilink32";
39$efile=""; 37$efile="";
40$exep='.exe'; 38$exep='.exe';
41$ex_libs="CW32.LIB IMPORT32.LIB"; 39if ($no_sock)
42$ex_libs.=$no_sock?"":" wsock32.lib"; 40 { $ex_libs=""; }
43$shlib_ex_obj="" if $shlib; 41else { $ex_libs="cw32mt.lib import32.lib"; }
44$app_ex_obj="C0X32.OBJ";
45 42
46# static library stuff 43# static library stuff
47$mklib='tlib'; 44$mklib='tlib /P64';
48$ranlib=''; 45$ranlib='';
49$plib=""; 46$plib="";
50$libp=".lib"; 47$libp=".lib";
51$shlibp=($shlib)?".dll":".lib"; 48$shlibp=($shlib)?".dll":".lib";
52$lfile=''; 49$lfile='';
53 50
54$asm='ml /Cp /c /Cx'; 51$shlib_ex_obj="";
52$app_ex_obj="c0x32.obj";
53
54$asm='n_o_T_a_s_m';
55$asm.=" /Zi" if $debug;
55$afile='/Fo'; 56$afile='/Fo';
56if ($noasm) 57
58$bn_mulw_obj='';
59$bn_mulw_src='';
60$des_enc_obj='';
61$des_enc_src='';
62$bf_enc_obj='';
63$bf_enc_src='';
64
65if (!$no_asm)
57 { 66 {
58 $bn_mulw_obj=''; 67 $bn_mulw_obj='crypto\bn\asm\bn-win32.obj';
59 $bn_mulw_src=''; 68 $bn_mulw_src='crypto\bn\asm\bn-win32.asm';
69 $des_enc_obj='crypto\des\asm\d-win32.obj crypto\des\asm\y-win32.obj';
70 $des_enc_src='crypto\des\asm\d-win32.asm crypto\des\asm\y-win32.asm';
71 $bf_enc_obj='crypto\bf\asm\b-win32.obj';
72 $bf_enc_src='crypto\bf\asm\b-win32.asm';
73 $cast_enc_obj='crypto\cast\asm\c-win32.obj';
74 $cast_enc_src='crypto\cast\asm\c-win32.asm';
75 $rc4_enc_obj='crypto\rc4\asm\r4-win32.obj';
76 $rc4_enc_src='crypto\rc4\asm\r4-win32.asm';
77 $rc5_enc_obj='crypto\rc5\asm\r5-win32.obj';
78 $rc5_enc_src='crypto\rc5\asm\r5-win32.asm';
79 $md5_asm_obj='crypto\md5\asm\m5-win32.obj';
80 $md5_asm_src='crypto\md5\asm\m5-win32.asm';
81 $sha1_asm_obj='crypto\sha\asm\s1-win32.obj';
82 $sha1_asm_src='crypto\sha\asm\s1-win32.asm';
83 $rmd160_asm_obj='crypto\ripemd\asm\rm-win32.obj';
84 $rmd160_asm_src='crypto\ripemd\asm\rm-win32.asm';
85 $cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM -DRMD160_ASM";
60 } 86 }
61else 87
88if ($shlib)
62 { 89 {
63 $bn_mulw_obj='crypto\bn\asm\x86b32.obj'; 90 $mlflags.=" $lflags /dll";
64 $bn_mulw_src='crypto\bn\asm\x86m32.asm'; 91# $cflags =~ s| /MD| /MT|;
92 $lib_cflag=" /GD -D_WINDLL -D_DLL";
93 $out_def="out32dll";
94 $tmp_def="tmp32dll";
65 } 95 }
66 96
67sub do_lib_rule 97sub do_lib_rule
68 { 98 {
69 local($target,$name,$shlib)=@_; 99 local($objs,$target,$name,$shlib)=@_;
70 local($ret,$Name); 100 local($ret,$Name);
71 101
72 $taget =~ s/\//$o/g if $o ne '/'; 102 $taget =~ s/\//$o/g if $o ne '/';
73 ($Name=$name) =~ tr/a-z/A-Z/; 103 ($Name=$name) =~ tr/a-z/A-Z/;
74 104
75 $ret.="$target: \$(${Name}OBJ)\n"; 105# $target="\$(LIB_D)$o$target";
76 $ret.="\t\$(RM) \$(O_$Name)\n"; 106 $ret.="$target: $objs\n";
77
78 # Due to a pathetic line length limit, I unwrap the args.
79 local($lib_names)="";
80 local($dll_names)="";
81 foreach $_ (sort split(/\s+/,$Vars{"${Name}OBJ"}))
82 {
83 $lib_names.=" +$_ &\n";
84 $dll_names.=" $_\n";
85 }
86
87 if (!$shlib) 107 if (!$shlib)
88 { 108 {
89 $ret.="\t\$(MKLIB) $target & <<|\n$lib_names\n,\n|\n"; 109 # $ret.="\t\$(RM) \$(O_$Name)\n";
110 $ret.="\techo LIB $<\n";
111 $ret.="\t&\$(MKLIB) $lfile$target -+\$**\n";
90 } 112 }
91 else 113 else
92 { 114 {
93 # $(SHLIB_EX_OBJ) 115 local($ex)=($target =~ /O_SSL/)?' $(L_CRYPTO)':'';
94 local($ex)=($Name eq "SSL")?' $(L_CRYPTO) winsock':""; 116 $ex.=' wsock32.lib gdi32.lib';
95 $ret.="\t\$(LINK) \$(MLFLAGS) @&&|\n"; 117 $ret.="\t\$(LINK) \$(MLFLAGS) $efile$target /def:ms/${Name}.def @<<\n \$(SHLIB_EX_OBJ) $objs $ex\n<<\n";
96 $ret.=$dll_names;
97 $ret.="\n $target\n\n $ex $libs\nms$o${name}16.def;\n|\n";
98 ($out_lib=$target) =~ s/O_/L_/;
99 $ret.="\timplib /nowep $out_lib $target\n\n";
100 } 118 }
101 $ret.="\n"; 119 $ret.="\n";
102 return($ret); 120 return($ret);
@@ -105,30 +123,12 @@ sub do_lib_rule
105sub do_link_rule 123sub do_link_rule
106 { 124 {
107 local($target,$files,$dep_libs,$libs)=@_; 125 local($target,$files,$dep_libs,$libs)=@_;
108 local($ret,$f,$_,@f); 126 local($ret,$_);
109 127
110 $file =~ s/\//$o/g if $o ne '/'; 128 $file =~ s/\//$o/g if $o ne '/';
111 $n=&bname($targer); 129 $n=&bname($targer);
112 $ret.="$target: $files $dep_libs\n"; 130 $ret.="$target: $files $dep_libs\n";
113 $ret.=" \$(LINK) @&&|"; 131 $ret.="\t\$(LINK) \$(LFLAGS) $files \$(APP_EX_OBJ), $target,, $libs\n\n";
114
115 # Due to a pathetic line length limit, I have to unwrap the args.
116 $r=" \$(LFLAGS) ";
117 if ($files =~ /\(([^)]*)\)$/)
118 {
119 @a=('$(APP_EX_OBJ)');
120 push(@a,sort split(/\s+/,$Vars{$1}));
121 foreach $_ (@a)
122 {
123 $ret.="\n $r $_ +";
124 $r="";
125 }
126 chop($ret);
127 $ret.="\n";
128 }
129 else
130 { $ret.="\n $r \$(APP_EX_OBJ) $files\n"; }
131 $ret.=" $target\n\n $libs\n\n|\n\n";
132 return($ret); 132 return($ret);
133 } 133 }
134 134
diff --git a/src/lib/libcrypto/util/pl/Mingw32.pl b/src/lib/libcrypto/util/pl/Mingw32.pl
index 84c2a22db3..45ab685974 100644
--- a/src/lib/libcrypto/util/pl/Mingw32.pl
+++ b/src/lib/libcrypto/util/pl/Mingw32.pl
@@ -17,9 +17,35 @@ $mkdir='gmkdir';
17 17
18$cc='gcc'; 18$cc='gcc';
19if ($debug) 19if ($debug)
20 { $cflags="-g2 -ggdb"; } 20 { $cflags="-DL_ENDIAN -DDSO_WIN32 -g2 -ggdb"; }
21else 21else
22 { $cflags="-DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall"; } 22 { $cflags="-DL_ENDIAN -DDSO_WIN32 -fomit-frame-pointer -O3 -m486 -Wall"; }
23
24if ($gaswin and !$no_asm)
25 {
26 $bn_asm_obj='$(OBJ_D)/bn-win32.o';
27 $bn_asm_src='crypto/bn/asm/bn-win32.s';
28 $bnco_asm_obj='$(OBJ_D)/co-win32.o';
29 $bnco_asm_src='crypto/bn/asm/co-win32.s';
30 $des_enc_obj='$(OBJ_D)/d-win32.o $(OBJ_D)/y-win32.o';
31 $des_enc_src='crypto/des/asm/d-win32.s crypto/des/asm/y-win32.s';
32 $bf_enc_obj='$(OBJ_D)/b-win32.o';
33 $bf_enc_src='crypto/bf/asm/b-win32.s';
34# $cast_enc_obj='$(OBJ_D)/c-win32.o';
35# $cast_enc_src='crypto/cast/asm/c-win32.s';
36 $rc4_enc_obj='$(OBJ_D)/r4-win32.o';
37 $rc4_enc_src='crypto/rc4/asm/r4-win32.s';
38 $rc5_enc_obj='$(OBJ_D)/r5-win32.o';
39 $rc5_enc_src='crypto/rc5/asm/r5-win32.s';
40 $md5_asm_obj='$(OBJ_D)/m5-win32.o';
41 $md5_asm_src='crypto/md5/asm/m5-win32.s';
42 $rmd160_asm_obj='$(OBJ_D)/rm-win32.o';
43 $rmd160_asm_src='crypto/ripemd/asm/rm-win32.s';
44 $sha1_asm_obj='$(OBJ_D)/s1-win32.o';
45 $sha1_asm_src='crypto/sha/asm/s1-win32.s';
46 $cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM";
47 }
48
23 49
24$obj='.o'; 50$obj='.o';
25$ofile='-o '; 51$ofile='-o ';
@@ -42,12 +68,12 @@ $lfile='';
42 68
43$asm='as'; 69$asm='as';
44$afile='-o '; 70$afile='-o ';
45$bn_asm_obj=""; 71#$bn_asm_obj="";
46$bn_asm_src=""; 72#$bn_asm_src="";
47$des_enc_obj=""; 73#$des_enc_obj="";
48$des_enc_src=""; 74#$des_enc_src="";
49$bf_enc_obj=""; 75#$bf_enc_obj="";
50$bf_enc_src=""; 76#$bf_enc_src="";
51 77
52sub do_lib_rule 78sub do_lib_rule
53 { 79 {
@@ -76,4 +102,3 @@ sub do_link_rule
76 return($ret); 102 return($ret);
77 } 103 }
781; 1041;
79
diff --git a/src/lib/libcrypto/util/pl/VC-16.pl b/src/lib/libcrypto/util/pl/VC-16.pl
index a6e6c0241c..7cda5e67a9 100644
--- a/src/lib/libcrypto/util/pl/VC-16.pl
+++ b/src/lib/libcrypto/util/pl/VC-16.pl
@@ -1,10 +1,9 @@
1#!/usr/bin/perl 1#!/usr/local/bin/perl
2# VCw16lib.pl - the file for Visual C++ 1.52b for windows, static libraries 2# VCw16lib.pl - the file for Visual C++ 1.52b for windows, static libraries
3# 3#
4 4
5$ssl= "ssleay16"; 5$ssl= "ssleay16";
6$crypto="libeay16"; 6$crypto="libeay16";
7$RSAref="RSAref16";
8 7
9$o='\\'; 8$o='\\';
10$cp='copy'; 9$cp='copy';
@@ -34,7 +33,7 @@ $lflags="$base_lflags /STACK:20000";
34 33
35if ($win16) 34if ($win16)
36 { 35 {
37 $cflags.=" -DWINDOWS -DWIN16"; 36 $cflags.=" -DOPENSSL_SYSNAME_WIN16";
38 $app_cflag="/Gw /FPi87"; 37 $app_cflag="/Gw /FPi87";
39 $lib_cflag="/Gw"; 38 $lib_cflag="/Gw";
40 $lib_cflag.=" -D_WINDLL -D_DLL" if $shlib; 39 $lib_cflag.=" -D_WINDLL -D_DLL" if $shlib;
@@ -84,8 +83,8 @@ $lfile='';
84$asm='ml /Cp /c /Cx'; 83$asm='ml /Cp /c /Cx';
85$afile='/Fo'; 84$afile='/Fo';
86 85
87$bn_mulw_obj=''; 86$bn_asm_obj='';
88$bn_mulw_src=''; 87$bn_asm_src='';
89$des_enc_obj=''; 88$des_enc_obj='';
90$des_enc_src=''; 89$des_enc_src='';
91$bf_enc_obj=''; 90$bf_enc_obj='';
@@ -95,13 +94,13 @@ if (!$no_asm)
95 { 94 {
96 if ($asmbits == 32) 95 if ($asmbits == 32)
97 { 96 {
98 $bn_mulw_obj='crypto\bn\asm\x86w32.obj'; 97 $bn_asm_obj='crypto\bn\asm\x86w32.obj';
99 $bn_mulw_src='crypto\bn\asm\x86w32.asm'; 98 $bn_asm_src='crypto\bn\asm\x86w32.asm';
100 } 99 }
101 else 100 else
102 { 101 {
103 $bn_mulw_obj='crypto\bn\asm\x86w16.obj'; 102 $bn_asm_obj='crypto\bn\asm\x86w16.obj';
104 $bn_mulw_src='crypto\bn\asm\x86w16.asm'; 103 $bn_asm_src='crypto\bn\asm\x86w16.asm';
105 } 104 }
106 } 105 }
107 106
diff --git a/src/lib/libcrypto/util/pl/VC-32.pl b/src/lib/libcrypto/util/pl/VC-32.pl
index 701e282c33..50bfb34385 100644
--- a/src/lib/libcrypto/util/pl/VC-32.pl
+++ b/src/lib/libcrypto/util/pl/VC-32.pl
@@ -1,18 +1,17 @@
1#!/usr/bin/perl 1#!/usr/local/bin/perl
2# VCw32lib.pl - the file for Visual C++ 4.[01] for windows NT, static libraries 2# VCw32lib.pl - the file for Visual C++ 4.[01] for windows NT, static libraries
3# 3#
4 4
5$ssl= "ssleay32"; 5$ssl= "ssleay32";
6$crypto="libeay32"; 6$crypto="libeay32";
7$RSAref="RSAref32";
8 7
9$o='\\'; 8$o='\\';
10$cp='copy'; 9$cp='copy nul+'; # Timestamps get stuffed otherwise
11$rm='del'; 10$rm='del';
12 11
13# C compiler stuff 12# C compiler stuff
14$cc='cl'; 13$cc='cl';
15$cflags=' /MD /W3 /WX /G5 /Ox /O2 /Ob2 /Gs0 /GF /Gy /nologo -DWIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN'; 14$cflags=' /MD /W3 /WX /G5 /Ox /O2 /Ob2 /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32';
16$lflags="/nologo /subsystem:console /machine:I386 /opt:ref"; 15$lflags="/nologo /subsystem:console /machine:I386 /opt:ref";
17$mlflags=''; 16$mlflags='';
18 17
@@ -22,10 +21,11 @@ $inc_def="inc32";
22 21
23if ($debug) 22if ($debug)
24 { 23 {
25 $cflags=" /MDd /W3 /WX /Zi /Yd /Od /nologo -DWINDOWS -DWIN32 -D_DEBUG -DL_ENDIAN"; 24 $cflags=" /MDd /W3 /WX /Zi /Yd /Od /nologo -DOPENSSL_SYSNAME_WIN32 -D_DEBUG -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -DDEBUG -DDSO_WIN32";
26 $lflags.=" /debug"; 25 $lflags.=" /debug";
27 $mlflags.=' /debug'; 26 $mlflags.=' /debug';
28 } 27 }
28$cflags .= " -DOPENSSL_SYSNAME_WINNT" if $NT == 1;
29 29
30$obj='.obj'; 30$obj='.obj';
31$ofile="/Fo"; 31$ofile="/Fo";
@@ -48,13 +48,17 @@ $lfile='/out:';
48 48
49$shlib_ex_obj=""; 49$shlib_ex_obj="";
50$app_ex_obj="setargv.obj"; 50$app_ex_obj="setargv.obj";
51 51if ($nasm) {
52$asm='ml /Cp /coff /c /Cx'; 52 $asm='nasmw -f win32';
53$asm.=" /Zi" if $debug; 53 $afile='-o ';
54$afile='/Fo'; 54} else {
55 55 $asm='ml /Cp /coff /c /Cx';
56$bn_mulw_obj=''; 56 $asm.=" /Zi" if $debug;
57$bn_mulw_src=''; 57 $afile='/Fo';
58}
59
60$bn_asm_obj='';
61$bn_asm_src='';
58$des_enc_obj=''; 62$des_enc_obj='';
59$des_enc_src=''; 63$des_enc_src='';
60$bf_enc_obj=''; 64$bf_enc_obj='';
@@ -62,8 +66,8 @@ $bf_enc_src='';
62 66
63if (!$no_asm) 67if (!$no_asm)
64 { 68 {
65 $bn_mulw_obj='crypto\bn\asm\bn-win32.obj'; 69 $bn_asm_obj='crypto\bn\asm\bn-win32.obj';
66 $bn_mulw_src='crypto\bn\asm\bn-win32.asm'; 70 $bn_asm_src='crypto\bn\asm\bn-win32.asm';
67 $des_enc_obj='crypto\des\asm\d-win32.obj crypto\des\asm\y-win32.obj'; 71 $des_enc_obj='crypto\des\asm\d-win32.obj crypto\des\asm\y-win32.obj';
68 $des_enc_src='crypto\des\asm\d-win32.asm crypto\des\asm\y-win32.asm'; 72 $des_enc_src='crypto\des\asm\d-win32.asm crypto\des\asm\y-win32.asm';
69 $bf_enc_obj='crypto\bf\asm\b-win32.obj'; 73 $bf_enc_obj='crypto\bf\asm\b-win32.obj';
@@ -87,11 +91,13 @@ if ($shlib)
87 { 91 {
88 $mlflags.=" $lflags /dll"; 92 $mlflags.=" $lflags /dll";
89# $cflags =~ s| /MD| /MT|; 93# $cflags =~ s| /MD| /MT|;
90 $lib_cflag=" /GD -D_WINDLL -D_DLL"; 94 $lib_cflag=" -D_WINDLL -D_DLL";
91 $out_def="out32dll"; 95 $out_def="out32dll";
92 $tmp_def="tmp32dll"; 96 $tmp_def="tmp32dll";
93 } 97 }
94 98
99$cflags.=" /Fd$out_def";
100
95sub do_lib_rule 101sub do_lib_rule
96 { 102 {
97 local($objs,$target,$name,$shlib)=@_; 103 local($objs,$target,$name,$shlib)=@_;
@@ -105,12 +111,13 @@ sub do_lib_rule
105 if (!$shlib) 111 if (!$shlib)
106 { 112 {
107# $ret.="\t\$(RM) \$(O_$Name)\n"; 113# $ret.="\t\$(RM) \$(O_$Name)\n";
108 $ret.="\t\$(MKLIB) $lfile$target @<<\n $objs\n<<\n"; 114 $ex =' advapi32.lib';
115 $ret.="\t\$(MKLIB) $lfile$target @<<\n $objs $ex\n<<\n";
109 } 116 }
110 else 117 else
111 { 118 {
112 local($ex)=($target =~ /O_SSL/)?' $(L_CRYPTO)':''; 119 local($ex)=($target =~ /O_SSL/)?' $(L_CRYPTO)':'';
113 $ex.=' wsock32.lib gdi32.lib'; 120 $ex.=' wsock32.lib gdi32.lib advapi32.lib';
114 $ret.="\t\$(LINK) \$(MLFLAGS) $efile$target /def:ms/${Name}.def @<<\n \$(SHLIB_EX_OBJ) $objs $ex\n<<\n"; 121 $ret.="\t\$(LINK) \$(MLFLAGS) $efile$target /def:ms/${Name}.def @<<\n \$(SHLIB_EX_OBJ) $objs $ex\n<<\n";
115 } 122 }
116 $ret.="\n"; 123 $ret.="\n";
diff --git a/src/lib/libcrypto/util/pl/linux.pl b/src/lib/libcrypto/util/pl/linux.pl
index 2b13da1bfc..8924ed5480 100644
--- a/src/lib/libcrypto/util/pl/linux.pl
+++ b/src/lib/libcrypto/util/pl/linux.pl
@@ -1,4 +1,4 @@
1#!/usr/bin/perl 1#!/usr/local/bin/perl
2# 2#
3# linux.pl - the standard unix makefile stuff. 3# linux.pl - the standard unix makefile stuff.
4# 4#
@@ -12,13 +12,17 @@ $rm='/bin/rm -f';
12$cc='gcc'; 12$cc='gcc';
13if ($debug) 13if ($debug)
14 { $cflags="-g2 -ggdb -DREF_CHECK -DCRYPTO_MDEBUG"; } 14 { $cflags="-g2 -ggdb -DREF_CHECK -DCRYPTO_MDEBUG"; }
15elsif ($profile)
16 { $cflags="-pg -O3"; }
15else 17else
16 { $cflags="-O3 -fomit-frame-pointer"; } 18 { $cflags="-O3 -fomit-frame-pointer"; }
17 19
18if (!$no_asm) 20if (!$no_asm)
19 { 21 {
20 $bn_mulw_obj='$(OBJ_D)/bn86-elf.o'; 22 $bn_asm_obj='$(OBJ_D)/bn86-elf.o';
21 $bn_mulw_src='crypto/bn/asm/bn86unix.cpp'; 23 $bn_asm_src='crypto/bn/asm/bn86unix.cpp';
24 $bnco_asm_obj='$(OBJ_D)/co86-elf.o';
25 $bnco_asm_src='crypto/bn/asm/co86unix.cpp';
22 $des_enc_obj='$(OBJ_D)/dx86-elf.o $(OBJ_D)/yx86-elf.o'; 26 $des_enc_obj='$(OBJ_D)/dx86-elf.o $(OBJ_D)/yx86-elf.o';
23 $des_enc_src='crypto/des/asm/dx86unix.cpp crypto/des/asm/yx86unix.cpp'; 27 $des_enc_src='crypto/des/asm/dx86unix.cpp crypto/des/asm/yx86unix.cpp';
24 $bf_enc_obj='$(OBJ_D)/bx86-elf.o'; 28 $bf_enc_obj='$(OBJ_D)/bx86-elf.o';
@@ -27,8 +31,12 @@ if (!$no_asm)
27 $cast_enc_src='crypto/cast/asm/cx86unix.cpp'; 31 $cast_enc_src='crypto/cast/asm/cx86unix.cpp';
28 $rc4_enc_obj='$(OBJ_D)/rx86-elf.o'; 32 $rc4_enc_obj='$(OBJ_D)/rx86-elf.o';
29 $rc4_enc_src='crypto/rc4/asm/rx86unix.cpp'; 33 $rc4_enc_src='crypto/rc4/asm/rx86unix.cpp';
34 $rc5_enc_obj='$(OBJ_D)/r586-elf.o';
35 $rc5_enc_src='crypto/rc5/asm/r586unix.cpp';
30 $md5_asm_obj='$(OBJ_D)/mx86-elf.o'; 36 $md5_asm_obj='$(OBJ_D)/mx86-elf.o';
31 $md5_asm_src='crypto/md5/asm/mx86unix.cpp'; 37 $md5_asm_src='crypto/md5/asm/mx86unix.cpp';
38 $rmd160_asm_obj='$(OBJ_D)/rm86-elf.o';
39 $rmd160_asm_src='crypto/ripemd/asm/rm86unix.cpp';
32 $sha1_asm_obj='$(OBJ_D)/sx86-elf.o'; 40 $sha1_asm_obj='$(OBJ_D)/sx86-elf.o';
33 $sha1_asm_src='crypto/sha/asm/sx86unix.cpp'; 41 $sha1_asm_src='crypto/sha/asm/sx86unix.cpp';
34 $cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM"; 42 $cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM";
@@ -51,9 +59,9 @@ sub do_shlib_rule
51 $target =~ s/\//$o/g if $o ne '/'; 59 $target =~ s/\//$o/g if $o ne '/';
52 ($Name=$name) =~ tr/a-z/A-Z/; 60 ($Name=$name) =~ tr/a-z/A-Z/;
53 61
54 $ret.="\$(LIB_D)$o$target: \$(${Name}OBJ)\n"; 62 $ret.="$target: \$(${Name}OBJ)\n";
55 $ret.="\t\$(RM) \$(LIB_D)$o$target\n"; 63 $ret.="\t\$(RM) target\n";
56 $ret.="\tgcc \${CFLAGS} -shared -Wl,-soname,$target -o \$(LIB_D)$o$target \$(${Name}OBJ)\n"; 64 $ret.="\tgcc \${CFLAGS} -shared -Wl,-soname,$target -o $target \$(${Name}OBJ)\n";
57 ($t=$target) =~ s/(^.*)\/[^\/]*$/$1/; 65 ($t=$target) =~ s/(^.*)\/[^\/]*$/$1/;
58 if ($so_name ne "") 66 if ($so_name ne "")
59 { 67 {
diff --git a/src/lib/libcrypto/util/pl/unix.pl b/src/lib/libcrypto/util/pl/unix.pl
index ab4978fd20..146611ad99 100644
--- a/src/lib/libcrypto/util/pl/unix.pl
+++ b/src/lib/libcrypto/util/pl/unix.pl
@@ -1,4 +1,4 @@
1#!/usr/bin/perl 1#!/usr/local/bin/perl
2# 2#
3# unix.pl - the standard unix makefile stuff. 3# unix.pl - the standard unix makefile stuff.
4# 4#
@@ -38,7 +38,7 @@ $ex_libs="";
38# static library stuff 38# static library stuff
39$mklib='ar r'; 39$mklib='ar r';
40$mlflags=''; 40$mlflags='';
41$ranlib='util/ranlib.sh'; 41$ranlib=&which("ranlib") or $ranlib="true";
42$plib='lib'; 42$plib='lib';
43$libp=".a"; 43$libp=".a";
44$shlibp=".a"; 44$shlibp=".a";
@@ -46,8 +46,8 @@ $lfile='';
46 46
47$asm='as'; 47$asm='as';
48$afile='-o '; 48$afile='-o ';
49$bn_mulw_obj=""; 49$bn_asm_obj="";
50$bn_mulw_src=""; 50$bn_asm_src="";
51$des_enc_obj=""; 51$des_enc_obj="";
52$des_enc_src=""; 52$des_enc_src="";
53$bf_enc_obj=""; 53$bf_enc_obj="";
@@ -59,7 +59,7 @@ sub do_lib_rule
59 local($ret,$_,$Name); 59 local($ret,$_,$Name);
60 60
61 $target =~ s/\//$o/g if $o ne '/'; 61 $target =~ s/\//$o/g if $o ne '/';
62 $target="\$(LIB_D)$o$target"; 62 $target="$target";
63 ($Name=$name) =~ tr/a-z/A-Z/; 63 ($Name=$name) =~ tr/a-z/A-Z/;
64 64
65 $ret.="$target: \$(${Name}OBJ)\n"; 65 $ret.="$target: \$(${Name}OBJ)\n";
@@ -80,4 +80,17 @@ sub do_link_rule
80 return($ret); 80 return($ret);
81 } 81 }
82 82
83sub which
84 {
85 my ($name)=@_;
86 my $path;
87 foreach $path (split /:/, $ENV{PATH})
88 {
89 if (-x "$path/$name")
90 {
91 return "$path/$name";
92 }
93 }
94 }
95
831; 961;
diff --git a/src/lib/libcrypto/util/pod2man.pl b/src/lib/libcrypto/util/pod2man.pl
index f5ec0767ed..657e4e264e 100644
--- a/src/lib/libcrypto/util/pod2man.pl
+++ b/src/lib/libcrypto/util/pod2man.pl
@@ -416,6 +416,8 @@ if ($name ne 'something') {
416 warn "$0: Improper man page - malformed NAME header in paragraph $. of $ARGV[0]\n" 416 warn "$0: Improper man page - malformed NAME header in paragraph $. of $ARGV[0]\n"
417 } 417 }
418 else { 418 else {
419 $n[0] =~ s/\n/ /g;
420 $n[1] =~ s/\n/ /g;
419 %namedesc = @n; 421 %namedesc = @n;
420 } 422 }
421 } 423 }
diff --git a/src/lib/libcrypto/util/pod2mantest b/src/lib/libcrypto/util/pod2mantest
new file mode 100644
index 0000000000..79aefafac0
--- /dev/null
+++ b/src/lib/libcrypto/util/pod2mantest
@@ -0,0 +1,53 @@
1#!/bin/sh
2
3# This script is used by test/Makefile.ssl to check whether a sane 'pod2man'
4# is installed.
5# ('make install' should not try to run 'pod2man' if it does not exist or if
6# it is a broken 'pod2man' version that is known to cause trouble. if we find
7# the system 'pod2man' to be broken, we use our own copy instead)
8#
9# In any case, output an appropriate command line for running (or not
10# running) pod2man.
11
12
13IFS=:
14try_without_dir=true
15# First we try "pod2man", then "$dir/pod2man" for each item in $PATH.
16for dir in dummy:$PATH; do
17 if [ "$try_without_dir" = true ]; then
18 # first iteration
19 pod2man=pod2man
20 try_without_dir=false
21 else
22 # second and later iterations
23 pod2man="$dir/pod2man"
24 if [ ! -f "$pod2man" ]; then # '-x' is not available on Ultrix
25 pod2man=''
26 fi
27 fi
28
29 if [ ! "$pod2man" = '' ]; then
30 failure=none
31
32
33 if "$pod2man" --section=1 --center=OpenSSL --release=dev pod2mantest.pod | grep '^MARKER - ' >/dev/null 2>&1; then
34 failure=MultilineTest
35 fi
36
37
38 if [ "$failure" = none ]; then
39 echo "$pod2man"
40 exit 0
41 fi
42
43 echo "$pod2man does not work properly ('$failure' failed). Looking for another pod2man ..." >&2
44 fi
45done
46
47echo "No working pod2man found. Consider installing a new version." >&2
48if [ "$1" = ignore ]; then
49 echo "As a workaround, we'll use a bundled old copy of pod2man.pl." >&2
50 echo "util/pod2man.pl"
51 exit 0
52fi
53exit 1
diff --git a/src/lib/libcrypto/util/pod2mantest.pod b/src/lib/libcrypto/util/pod2mantest.pod
new file mode 100644
index 0000000000..5d2539a17f
--- /dev/null
+++ b/src/lib/libcrypto/util/pod2mantest.pod
@@ -0,0 +1,15 @@
1=pod
2
3=head1 NAME
4
5foo, bar,
6MARKER - test of multiline name section
7
8=head1 DESCRIPTION
9
10This is a test .pod file to see if we have a buggy pod2man or not.
11If we have a buggy implementation, we will get a line matching the
12regular expression "^ +MARKER - test of multiline name section *$"
13at the end of the resulting document.
14
15=cut
diff --git a/src/lib/libcrypto/util/point.sh b/src/lib/libcrypto/util/point.sh
index 92c12e8282..47543c88e2 100644
--- a/src/lib/libcrypto/util/point.sh
+++ b/src/lib/libcrypto/util/point.sh
@@ -1,4 +1,6 @@
1#!/bin/sh 1#!/bin/sh
2 2
3/bin/rm -f $2 3rm -f $2
4ln -s $1 $2 4ln -s $1 $2
5echo "$2 => $1"
6
diff --git a/src/lib/libcrypto/util/selftest.pl b/src/lib/libcrypto/util/selftest.pl
index 91e962a312..276b81183d 100644
--- a/src/lib/libcrypto/util/selftest.pl
+++ b/src/lib/libcrypto/util/selftest.pl
@@ -19,13 +19,14 @@ my $ok=0;
19my $cc="cc"; 19my $cc="cc";
20my $cversion="??"; 20my $cversion="??";
21my $sep="-----------------------------------------------------------------------------\n"; 21my $sep="-----------------------------------------------------------------------------\n";
22my $not_our_fault="\nPlease ask your system administrator/vendor for more information.\n[Problems with your operating system setup should not be reported\nto the OpenSSL project.]\n";
22 23
23open(OUT,">$report") or die; 24open(OUT,">$report") or die;
24 25
25print OUT "OpenSSL self-test report:\n\n"; 26print OUT "OpenSSL self-test report:\n\n";
26 27
27$uname=`uname -a`; 28$uname=`uname -a`;
28$uname="??" if $uname eq ""; 29$uname="??\n" if $uname eq "";
29 30
30$c=`sh config -t`; 31$c=`sh config -t`;
31foreach $_ (split("\n",$c)) { 32foreach $_ (split("\n",$c)) {
@@ -49,6 +50,7 @@ if (open(IN,"<Makefile.ssl")) {
49 50
50$cversion=`$cc -v 2>&1`; 51$cversion=`$cc -v 2>&1`;
51$cversion=`$cc -V 2>&1` if $cversion =~ "usage"; 52$cversion=`$cc -V 2>&1` if $cversion =~ "usage";
53$cversion=`$cc -V |head -1` if $cversion =~ "Error";
52$cversion=`$cc --version` if $cversion eq ""; 54$cversion=`$cc --version` if $cversion eq "";
53$cversion =~ s/Reading specs.*\n//; 55$cversion =~ s/Reading specs.*\n//;
54$cversion =~ s/usage.*\n//; 56$cversion =~ s/usage.*\n//;
@@ -56,7 +58,7 @@ chomp $cversion;
56 58
57if (open(IN,"<CHANGES")) { 59if (open(IN,"<CHANGES")) {
58 while(<IN>) { 60 while(<IN>) {
59 if (/\*\) (.{0,55})/) { 61 if (/\*\) (.{0,55})/ && !/applies to/) {
60 $last=$1; 62 $last=$1;
61 last; 63 last;
62 } 64 }
@@ -76,11 +78,18 @@ print OUT "\n";
76 78
77print "Checking compiler...\n"; 79print "Checking compiler...\n";
78if (open(TEST,">cctest.c")) { 80if (open(TEST,">cctest.c")) {
79 print TEST "#include <stdio.h>\nmain(){printf(\"Hello world\\n\");}\n"; 81 print TEST "#include <stdio.h>\n#include <errno.h>\nmain(){printf(\"Hello world\\n\");}\n";
80 close(TEST); 82 close(TEST);
81 system("$cc -o cctest cctest.c"); 83 system("$cc -o cctest cctest.c");
82 if (`./cctest` !~ /Hello world/) { 84 if (`./cctest` !~ /Hello world/) {
83 print OUT "Compiler doesn't work.\n"; 85 print OUT "Compiler doesn't work.\n";
86 print OUT $not_our_fault;
87 goto err;
88 }
89 system("ar r cctest.a /dev/null");
90 if (not -f "cctest.a") {
91 print OUT "Check your archive tool (ar).\n";
92 print OUT $not_our_fault;
84 goto err; 93 goto err;
85 } 94 }
86} else { 95} else {
@@ -97,6 +106,7 @@ if (open(TEST,">cctest.c")) {
97 } else { 106 } else {
98 print OUT "Can't compile test program!\n"; 107 print OUT "Can't compile test program!\n";
99 } 108 }
109 print OUT $not_our_fault;
100 goto err; 110 goto err;
101 } 111 }
102} else { 112} else {
@@ -122,6 +132,8 @@ if (system("make 2>&1 | tee make.log") > 255) {
122 132
123$_=$options; 133$_=$options;
124s/no-asm//; 134s/no-asm//;
135s/no-shared//;
136s/no-krb5//;
125if (/no-/) 137if (/no-/)
126{ 138{
127 print OUT "Test skipped.\n"; 139 print OUT "Test skipped.\n";
@@ -129,14 +141,14 @@ if (/no-/)
129} 141}
130 142
131print "Running make test...\n"; 143print "Running make test...\n";
132if (system("make test 2>&1 | tee make.log") > 255) 144if (system("make test 2>&1 | tee maketest.log") > 255)
133 { 145 {
134 print OUT "make test failed!\n"; 146 print OUT "make test failed!\n";
135} else { 147} else {
136 $ok=1; 148 $ok=1;
137} 149}
138 150
139if ($ok and open(IN,"<make.log")) { 151if ($ok and open(IN,"<maketest.log")) {
140 while (<IN>) { 152 while (<IN>) {
141 $ok=2 if /^platform: $platform/; 153 $ok=2 if /^platform: $platform/;
142 } 154 }
@@ -155,6 +167,15 @@ if ($ok != 2) {
155 } else { 167 } else {
156 print OUT "make.log not found!\n"; 168 print OUT "make.log not found!\n";
157 } 169 }
170 if (open(IN,"<maketest.log")) {
171 while (<IN>) {
172 print OUT;
173 }
174 close(IN);
175 print OUT $sep;
176 } else {
177 print OUT "maketest.log not found!\n";
178 }
158} else { 179} else {
159 print OUT "Test passed.\n"; 180 print OUT "Test passed.\n";
160} 181}
diff --git a/src/lib/libcrypto/util/sp-diff.pl b/src/lib/libcrypto/util/sp-diff.pl
index 2c88336858..9d6c60387f 100644
--- a/src/lib/libcrypto/util/sp-diff.pl
+++ b/src/lib/libcrypto/util/sp-diff.pl
@@ -1,4 +1,4 @@
1#!/usr/bin/perl 1#!/usr/local/bin/perl
2# 2#
3# This file takes as input, the files that have been output from 3# This file takes as input, the files that have been output from
4# ssleay speed. 4# ssleay speed.
@@ -11,7 +11,7 @@
11%two=&loadfile($ARGV[1]); 11%two=&loadfile($ARGV[1]);
12 12
13$line=0; 13$line=0;
14foreach $a ("md2","md5","sha","sha1","rc4","des cfb","des cbc","des ede3", 14foreach $a ("md2","md4","md5","sha","sha1","rc4","des cfb","des cbc","des ede3",
15 "idea cfb","idea cbc","rc2 cfb","rc2 cbc","blowfish cbc","cast cbc") 15 "idea cfb","idea cbc","rc2 cfb","rc2 cbc","blowfish cbc","cast cbc")
16 { 16 {
17 if (defined($one{$a,8}) && defined($two{$a,8})) 17 if (defined($one{$a,8}) && defined($two{$a,8}))
diff --git a/src/lib/libcrypto/util/src-dep.pl b/src/lib/libcrypto/util/src-dep.pl
index 91242f7bb6..ad997e4746 100644
--- a/src/lib/libcrypto/util/src-dep.pl
+++ b/src/lib/libcrypto/util/src-dep.pl
@@ -1,4 +1,4 @@
1#!/usr/bin/perl 1#!/usr/local/bin/perl
2 2
3# we make up an array of 3# we make up an array of
4# $file{function_name}=filename; 4# $file{function_name}=filename;
diff --git a/src/lib/libcrypto/util/ssleay.num b/src/lib/libcrypto/util/ssleay.num
index 359fa15df1..fdea47205d 100644
--- a/src/lib/libcrypto/util/ssleay.num
+++ b/src/lib/libcrypto/util/ssleay.num
@@ -1,156 +1,217 @@
1ERR_load_SSL_strings 1 1ERR_load_SSL_strings 1 EXIST::FUNCTION:
2SSL_CIPHER_description 2 2SSL_CIPHER_description 2 EXIST::FUNCTION:
3SSL_CTX_add_client_CA 3 3SSL_CTX_add_client_CA 3 EXIST::FUNCTION:
4SSL_CTX_add_session 4 4SSL_CTX_add_session 4 EXIST::FUNCTION:
5SSL_CTX_check_private_key 5 5SSL_CTX_check_private_key 5 EXIST::FUNCTION:
6SSL_CTX_ctrl 6 6SSL_CTX_ctrl 6 EXIST::FUNCTION:
7SSL_CTX_flush_sessions 7 7SSL_CTX_flush_sessions 7 EXIST::FUNCTION:
8SSL_CTX_free 8 8SSL_CTX_free 8 EXIST::FUNCTION:
9SSL_CTX_get_client_CA_list 9 9SSL_CTX_get_client_CA_list 9 EXIST::FUNCTION:
10SSL_CTX_get_verify_callback 10 10SSL_CTX_get_verify_callback 10 EXIST::FUNCTION:
11SSL_CTX_get_verify_mode 11 11SSL_CTX_get_verify_mode 11 EXIST::FUNCTION:
12SSL_CTX_new 12 12SSL_CTX_new 12 EXIST::FUNCTION:
13SSL_CTX_remove_session 13 13SSL_CTX_remove_session 13 EXIST::FUNCTION:
14SSL_CTX_set_cert_verify_cb 14 14SSL_CTX_set_cipher_list 15 EXIST::FUNCTION:
15SSL_CTX_set_cipher_list 15 15SSL_CTX_set_client_CA_list 16 EXIST::FUNCTION:
16SSL_CTX_set_client_CA_list 16 16SSL_CTX_set_default_passwd_cb 17 EXIST::FUNCTION:
17SSL_CTX_set_default_passwd_cb 17 17SSL_CTX_set_ssl_version 19 EXIST::FUNCTION:
18SSL_CTX_set_ssl_version 19 18SSL_CTX_set_verify 21 EXIST::FUNCTION:
19SSL_CTX_set_verify 21 19SSL_CTX_use_PrivateKey 22 EXIST::FUNCTION:
20SSL_CTX_use_PrivateKey 22 20SSL_CTX_use_PrivateKey_ASN1 23 EXIST::FUNCTION:
21SSL_CTX_use_PrivateKey_ASN1 23 21SSL_CTX_use_PrivateKey_file 24 EXIST::FUNCTION:STDIO
22SSL_CTX_use_PrivateKey_file 24 22SSL_CTX_use_RSAPrivateKey 25 EXIST::FUNCTION:RSA
23SSL_CTX_use_RSAPrivateKey 25 23SSL_CTX_use_RSAPrivateKey_ASN1 26 EXIST::FUNCTION:RSA
24SSL_CTX_use_RSAPrivateKey_ASN1 26 24SSL_CTX_use_RSAPrivateKey_file 27 EXIST::FUNCTION:RSA,STDIO
25SSL_CTX_use_RSAPrivateKey_file 27 25SSL_CTX_use_certificate 28 EXIST::FUNCTION:
26SSL_CTX_use_certificate 28 26SSL_CTX_use_certificate_ASN1 29 EXIST::FUNCTION:
27SSL_CTX_use_certificate_ASN1 29 27SSL_CTX_use_certificate_file 30 EXIST::FUNCTION:STDIO
28SSL_CTX_use_certificate_file 30 28SSL_SESSION_free 31 EXIST::FUNCTION:
29SSL_SESSION_free 31 29SSL_SESSION_new 32 EXIST::FUNCTION:
30SSL_SESSION_new 32 30SSL_SESSION_print 33 EXIST::FUNCTION:BIO
31SSL_SESSION_print 33 31SSL_SESSION_print_fp 34 EXIST::FUNCTION:FP_API
32SSL_SESSION_print_fp 34 32SSL_accept 35 EXIST::FUNCTION:
33SSL_accept 35 33SSL_add_client_CA 36 EXIST::FUNCTION:
34SSL_add_client_CA 36 34SSL_alert_desc_string 37 EXIST::FUNCTION:
35SSL_alert_desc_string 37 35SSL_alert_desc_string_long 38 EXIST::FUNCTION:
36SSL_alert_desc_string_long 38 36SSL_alert_type_string 39 EXIST::FUNCTION:
37SSL_alert_type_string 39 37SSL_alert_type_string_long 40 EXIST::FUNCTION:
38SSL_alert_type_string_long 40 38SSL_check_private_key 41 EXIST::FUNCTION:
39SSL_check_private_key 41 39SSL_clear 42 EXIST::FUNCTION:
40SSL_clear 42 40SSL_connect 43 EXIST::FUNCTION:
41SSL_connect 43 41SSL_copy_session_id 44 EXIST::FUNCTION:
42SSL_copy_session_id 44 42SSL_ctrl 45 EXIST::FUNCTION:
43SSL_ctrl 45 43SSL_dup 46 EXIST::FUNCTION:
44SSL_dup 46 44SSL_dup_CA_list 47 EXIST::FUNCTION:
45SSL_dup_CA_list 47 45SSL_free 48 EXIST::FUNCTION:
46SSL_free 48 46SSL_get_certificate 49 EXIST::FUNCTION:
47SSL_get_certificate 49 47SSL_get_cipher_list 52 EXIST::FUNCTION:
48SSL_get_cipher_list 52 48SSL_get_ciphers 55 EXIST::FUNCTION:
49SSL_get_ciphers 55 49SSL_get_client_CA_list 56 EXIST::FUNCTION:
50SSL_get_client_CA_list 56 50SSL_get_default_timeout 57 EXIST::FUNCTION:
51SSL_get_default_timeout 57 51SSL_get_error 58 EXIST::FUNCTION:
52SSL_get_error 58 52SSL_get_fd 59 EXIST::FUNCTION:
53SSL_get_fd 59 53SSL_get_peer_cert_chain 60 EXIST::FUNCTION:
54SSL_get_peer_cert_chain 60 54SSL_get_peer_certificate 61 EXIST::FUNCTION:
55SSL_get_peer_certificate 61 55SSL_get_rbio 63 EXIST::FUNCTION:BIO
56SSL_get_rbio 63 56SSL_get_read_ahead 64 EXIST::FUNCTION:
57SSL_get_read_ahead 64 57SSL_get_shared_ciphers 65 EXIST::FUNCTION:
58SSL_get_shared_ciphers 65 58SSL_get_ssl_method 66 EXIST::FUNCTION:
59SSL_get_ssl_method 66 59SSL_get_verify_callback 69 EXIST::FUNCTION:
60SSL_get_verify_callback 69 60SSL_get_verify_mode 70 EXIST::FUNCTION:
61SSL_get_verify_mode 70 61SSL_get_version 71 EXIST::FUNCTION:
62SSL_get_version 71 62SSL_get_wbio 72 EXIST::FUNCTION:BIO
63SSL_get_wbio 72 63SSL_load_client_CA_file 73 EXIST::FUNCTION:STDIO
64SSL_load_client_CA_file 73 64SSL_load_error_strings 74 EXIST::FUNCTION:
65SSL_load_error_strings 74 65SSL_new 75 EXIST::FUNCTION:
66SSL_new 75 66SSL_peek 76 EXIST::FUNCTION:
67SSL_peek 76 67SSL_pending 77 EXIST::FUNCTION:
68SSL_pending 77 68SSL_read 78 EXIST::FUNCTION:
69SSL_read 78 69SSL_renegotiate 79 EXIST::FUNCTION:
70SSL_renegotiate 79 70SSL_rstate_string 80 EXIST::FUNCTION:
71SSL_rstate_string 80 71SSL_rstate_string_long 81 EXIST::FUNCTION:
72SSL_rstate_string_long 81 72SSL_set_accept_state 82 EXIST::FUNCTION:
73SSL_set_accept_state 82 73SSL_set_bio 83 EXIST::FUNCTION:BIO
74SSL_set_bio 83 74SSL_set_cipher_list 84 EXIST::FUNCTION:
75SSL_set_cipher_list 84 75SSL_set_client_CA_list 85 EXIST::FUNCTION:
76SSL_set_client_CA_list 85 76SSL_set_connect_state 86 EXIST::FUNCTION:
77SSL_set_connect_state 86 77SSL_set_fd 87 EXIST::FUNCTION:SOCK
78SSL_set_fd 87 78SSL_set_read_ahead 88 EXIST::FUNCTION:
79SSL_set_read_ahead 88 79SSL_set_rfd 89 EXIST::FUNCTION:SOCK
80SSL_set_rfd 89 80SSL_set_session 90 EXIST::FUNCTION:
81SSL_set_session 90 81SSL_set_ssl_method 91 EXIST::FUNCTION:
82SSL_set_ssl_method 91 82SSL_set_verify 94 EXIST::FUNCTION:
83SSL_set_verify 94 83SSL_set_wfd 95 EXIST::FUNCTION:SOCK
84SSL_set_wfd 95 84SSL_shutdown 96 EXIST::FUNCTION:
85SSL_shutdown 96 85SSL_state_string 97 EXIST::FUNCTION:
86SSL_state_string 97 86SSL_state_string_long 98 EXIST::FUNCTION:
87SSL_state_string_long 98 87SSL_use_PrivateKey 99 EXIST::FUNCTION:
88SSL_use_PrivateKey 99 88SSL_use_PrivateKey_ASN1 100 EXIST::FUNCTION:
89SSL_use_PrivateKey_ASN1 100 89SSL_use_PrivateKey_file 101 EXIST::FUNCTION:STDIO
90SSL_use_PrivateKey_file 101 90SSL_use_RSAPrivateKey 102 EXIST::FUNCTION:RSA
91SSL_use_RSAPrivateKey 102 91SSL_use_RSAPrivateKey_ASN1 103 EXIST::FUNCTION:RSA
92SSL_use_RSAPrivateKey_ASN1 103 92SSL_use_RSAPrivateKey_file 104 EXIST::FUNCTION:RSA,STDIO
93SSL_use_RSAPrivateKey_file 104 93SSL_use_certificate 105 EXIST::FUNCTION:
94SSL_use_certificate 105 94SSL_use_certificate_ASN1 106 EXIST::FUNCTION:
95SSL_use_certificate_ASN1 106 95SSL_use_certificate_file 107 EXIST::FUNCTION:STDIO
96SSL_use_certificate_file 107 96SSL_write 108 EXIST::FUNCTION:
97SSL_write 108 97SSLeay_add_ssl_algorithms 109 NOEXIST::FUNCTION:
98SSLeay_add_ssl_algorithms 109 98SSLv23_client_method 110 EXIST::FUNCTION:RSA
99SSLv23_client_method 110 99SSLv23_method 111 EXIST::FUNCTION:RSA
100SSLv23_method 111 100SSLv23_server_method 112 EXIST::FUNCTION:RSA
101SSLv23_server_method 112 101SSLv2_client_method 113 EXIST::FUNCTION:RSA
102SSLv2_client_method 113 102SSLv2_method 114 EXIST::FUNCTION:RSA
103SSLv2_method 114 103SSLv2_server_method 115 EXIST::FUNCTION:RSA
104SSLv2_server_method 115 104SSLv3_client_method 116 EXIST::FUNCTION:
105SSLv3_client_method 116 105SSLv3_method 117 EXIST::FUNCTION:
106SSLv3_method 117 106SSLv3_server_method 118 EXIST::FUNCTION:
107SSLv3_server_method 118 107d2i_SSL_SESSION 119 EXIST::FUNCTION:
108d2i_SSL_SESSION 119 108i2d_SSL_SESSION 120 EXIST::FUNCTION:
109i2d_SSL_SESSION 120 109BIO_f_ssl 121 EXIST::FUNCTION:BIO
110BIO_f_ssl 121 110BIO_new_ssl 122 EXIST::FUNCTION:BIO
111BIO_new_ssl 122 111BIO_proxy_ssl_copy_session_id 123 NOEXIST::FUNCTION:
112BIO_proxy_ssl_copy_session_id 123 112BIO_ssl_copy_session_id 124 EXIST::FUNCTION:BIO
113BIO_ssl_copy_session_id 124 113SSL_do_handshake 125 EXIST::FUNCTION:
114SSL_do_handshake 125 114SSL_get_privatekey 126 EXIST::FUNCTION:
115SSL_get_privatekey 126 115SSL_get_current_cipher 127 EXIST::FUNCTION:
116SSL_get_current_cipher 127 116SSL_CIPHER_get_bits 128 EXIST::FUNCTION:
117SSL_CIPHER_get_bits 128 117SSL_CIPHER_get_version 129 EXIST::FUNCTION:
118SSL_CIPHER_get_version 129 118SSL_CIPHER_get_name 130 EXIST::FUNCTION:
119SSL_CIPHER_get_name 130 119BIO_ssl_shutdown 131 EXIST::FUNCTION:BIO
120BIO_ssl_shutdown 131 120SSL_SESSION_cmp 132 EXIST::FUNCTION:
121SSL_SESSION_cmp 132 121SSL_SESSION_hash 133 EXIST::FUNCTION:
122SSL_SESSION_hash 133 122SSL_SESSION_get_time 134 EXIST::FUNCTION:
123SSL_SESSION_get_time 134 123SSL_SESSION_set_time 135 EXIST::FUNCTION:
124SSL_SESSION_set_time 135 124SSL_SESSION_get_timeout 136 EXIST::FUNCTION:
125SSL_SESSION_get_timeout 136 125SSL_SESSION_set_timeout 137 EXIST::FUNCTION:
126SSL_SESSION_set_timeout 137 126SSL_CTX_get_ex_data 138 EXIST::FUNCTION:
127SSL_CTX_get_ex_data 138 127SSL_CTX_get_quiet_shutdown 140 EXIST::FUNCTION:
128SSL_CTX_get_quiet_shutdown 140 128SSL_CTX_load_verify_locations 141 EXIST::FUNCTION:
129SSL_CTX_load_verify_locations 141 129SSL_CTX_set_default_verify_paths 142 EXIST:!VMS:FUNCTION:
130SSL_CTX_set_default_verify_paths 142 130SSL_CTX_set_def_verify_paths 142 EXIST:VMS:FUNCTION:
131SSL_CTX_set_ex_data 143 131SSL_CTX_set_ex_data 143 EXIST::FUNCTION:
132SSL_CTX_set_quiet_shutdown 145 132SSL_CTX_set_quiet_shutdown 145 EXIST::FUNCTION:
133SSL_SESSION_get_ex_data 146 133SSL_SESSION_get_ex_data 146 EXIST::FUNCTION:
134SSL_SESSION_set_ex_data 148 134SSL_SESSION_set_ex_data 148 EXIST::FUNCTION:
135SSL_get_SSL_CTX 150 135SSL_get_SSL_CTX 150 EXIST::FUNCTION:
136SSL_get_ex_data 151 136SSL_get_ex_data 151 EXIST::FUNCTION:
137SSL_get_quiet_shutdown 153 137SSL_get_quiet_shutdown 153 EXIST::FUNCTION:
138SSL_get_session 154 138SSL_get_session 154 EXIST::FUNCTION:
139SSL_get_shutdown 155 139SSL_get_shutdown 155 EXIST::FUNCTION:
140SSL_get_verify_result 157 140SSL_get_verify_result 157 EXIST::FUNCTION:
141SSL_set_ex_data 158 141SSL_set_ex_data 158 EXIST::FUNCTION:
142SSL_set_info_callback 160 142SSL_set_info_callback 160 EXIST::FUNCTION:
143SSL_set_quiet_shutdown 161 143SSL_set_quiet_shutdown 161 EXIST::FUNCTION:
144SSL_set_shutdown 162 144SSL_set_shutdown 162 EXIST::FUNCTION:
145SSL_set_verify_result 163 145SSL_set_verify_result 163 EXIST::FUNCTION:
146SSL_version 164 146SSL_version 164 EXIST::FUNCTION:
147SSL_get_info_callback 165 147SSL_get_info_callback 165 EXIST::FUNCTION:
148SSL_state 166 148SSL_state 166 EXIST::FUNCTION:
149SSL_CTX_get_ex_new_index 167 149SSL_CTX_get_ex_new_index 167 EXIST::FUNCTION:
150SSL_SESSION_get_ex_new_index 168 150SSL_SESSION_get_ex_new_index 168 EXIST::FUNCTION:
151SSL_get_ex_new_index 169 151SSL_get_ex_new_index 169 EXIST::FUNCTION:
152TLSv1_method 170 152TLSv1_method 170 EXIST::FUNCTION:
153TLSv1_server_method 171 153TLSv1_server_method 171 EXIST::FUNCTION:
154TLSv1_client_method 172 154TLSv1_client_method 172 EXIST::FUNCTION:
155BIO_new_buffer_ssl_connect 173 155BIO_new_buffer_ssl_connect 173 EXIST::FUNCTION:BIO
156BIO_new_ssl_connect 174 156BIO_new_ssl_connect 174 EXIST::FUNCTION:BIO
157SSL_get_ex_data_X509_STORE_CTX_idx 175 EXIST:!VMS:FUNCTION:
158SSL_get_ex_d_X509_STORE_CTX_idx 175 EXIST:VMS:FUNCTION:
159SSL_CTX_set_tmp_dh_callback 176 EXIST::FUNCTION:DH
160SSL_CTX_set_tmp_rsa_callback 177 EXIST::FUNCTION:RSA
161SSL_CTX_set_timeout 178 EXIST::FUNCTION:
162SSL_CTX_get_timeout 179 EXIST::FUNCTION:
163SSL_CTX_get_cert_store 180 EXIST::FUNCTION:
164SSL_CTX_set_cert_store 181 EXIST::FUNCTION:
165SSL_want 182 EXIST::FUNCTION:
166SSL_library_init 183 EXIST::FUNCTION:
167SSL_COMP_add_compression_method 184 EXIST::FUNCTION:COMP
168SSL_add_file_cert_subjects_to_stack 185 EXIST:!VMS:FUNCTION:STDIO
169SSL_add_file_cert_subjs_to_stk 185 EXIST:VMS:FUNCTION:STDIO
170SSL_set_tmp_rsa_callback 186 EXIST::FUNCTION:RSA
171SSL_set_tmp_dh_callback 187 EXIST::FUNCTION:DH
172SSL_add_dir_cert_subjects_to_stack 188 EXIST:!VMS,!WIN32:FUNCTION:STDIO
173SSL_add_dir_cert_subjs_to_stk 188 NOEXIST::FUNCTION:
174SSL_set_session_id_context 189 EXIST::FUNCTION:
175SSL_CTX_use_certificate_chain_file 222 EXIST:!VMS:FUNCTION:STDIO
176SSL_CTX_use_cert_chain_file 222 EXIST:VMS:FUNCTION:STDIO
177SSL_CTX_set_verify_depth 225 EXIST::FUNCTION:
178SSL_set_verify_depth 226 EXIST::FUNCTION:
179SSL_CTX_get_verify_depth 228 EXIST::FUNCTION:
180SSL_get_verify_depth 229 EXIST::FUNCTION:
181SSL_CTX_set_session_id_context 231 EXIST::FUNCTION:
182SSL_CTX_set_cert_verify_callback 232 EXIST:!VMS:FUNCTION:
183SSL_CTX_set_cert_verify_cb 232 EXIST:VMS:FUNCTION:
184SSL_CTX_set_default_passwd_cb_userdata 235 EXIST:!VMS:FUNCTION:
185SSL_CTX_set_def_passwd_cb_ud 235 EXIST:VMS:FUNCTION:
186SSL_set_purpose 236 EXIST::FUNCTION:
187SSL_CTX_set_trust 237 EXIST::FUNCTION:
188SSL_CTX_set_purpose 238 EXIST::FUNCTION:
189SSL_set_trust 239 EXIST::FUNCTION:
190SSL_get_finished 240 EXIST::FUNCTION:
191SSL_get_peer_finished 241 EXIST::FUNCTION:
192SSL_get1_session 242 EXIST::FUNCTION:
193SSL_CTX_callback_ctrl 243 EXIST::FUNCTION:
194SSL_callback_ctrl 244 EXIST::FUNCTION:
195SSL_CTX_sessions 245 EXIST::FUNCTION:
196SSL_get_rfd 246 EXIST::FUNCTION:
197SSL_get_wfd 247 EXIST::FUNCTION:
198kssl_cget_tkt 248 EXIST::FUNCTION:KRB5
199SSL_has_matching_session_id 249 EXIST::FUNCTION:
200kssl_err_set 250 EXIST::FUNCTION:KRB5
201kssl_ctx_show 251 EXIST::FUNCTION:KRB5
202kssl_validate_times 252 EXIST::FUNCTION:KRB5
203kssl_check_authent 253 EXIST::FUNCTION:KRB5
204kssl_ctx_new 254 EXIST::FUNCTION:KRB5
205kssl_build_principal_2 255 EXIST::FUNCTION:KRB5
206kssl_skip_confound 256 EXIST::FUNCTION:KRB5
207kssl_sget_tkt 257 EXIST::FUNCTION:KRB5
208SSL_set_generate_session_id 258 EXIST::FUNCTION:
209kssl_ctx_setkey 259 EXIST::FUNCTION:KRB5
210kssl_ctx_setprinc 260 EXIST::FUNCTION:KRB5
211kssl_ctx_free 261 EXIST::FUNCTION:KRB5
212kssl_krb5_free_data_contents 262 EXIST::FUNCTION:KRB5
213kssl_ctx_setstring 263 EXIST::FUNCTION:KRB5
214SSL_CTX_set_generate_session_id 264 EXIST::FUNCTION:
215SSL_renegotiate_pending 265 EXIST::FUNCTION:
216SSL_CTX_set_msg_callback 266 EXIST::FUNCTION:
217SSL_set_msg_callback 267 EXIST::FUNCTION:
diff --git a/src/lib/libcrypto/util/tab_num.pl b/src/lib/libcrypto/util/tab_num.pl
index 77b591d92f..a81ed0edc2 100644
--- a/src/lib/libcrypto/util/tab_num.pl
+++ b/src/lib/libcrypto/util/tab_num.pl
@@ -1,4 +1,4 @@
1#!/usr/bin/perl 1#!/usr/local/bin/perl
2 2
3$num=1; 3$num=1;
4$width=40; 4$width=40;
diff --git a/src/lib/libcrypto/util/x86asm.sh b/src/lib/libcrypto/util/x86asm.sh
index 81d3289860..d2090a9849 100644
--- a/src/lib/libcrypto/util/x86asm.sh
+++ b/src/lib/libcrypto/util/x86asm.sh
@@ -2,8 +2,8 @@
2 2
3echo Generating x86 assember 3echo Generating x86 assember
4echo Bignum 4echo Bignum
5(cd crypto/bn/asm; perl bn-586.pl cpp > bn86unix.cpp) 5(cd crypto/bn/asm; perl x86.pl cpp > bn86unix.cpp)
6(cd crypto/bn/asm; perl bn-586.pl win32 > bn-win32.asm) 6(cd crypto/bn/asm; perl x86.pl win32 > bn-win32.asm)
7 7
8echo DES 8echo DES
9(cd crypto/des/asm; perl des-586.pl cpp > dx86unix.cpp) 9(cd crypto/des/asm; perl des-586.pl cpp > dx86unix.cpp)
diff --git a/src/lib/libcrypto/x509v3/v3conf.c b/src/lib/libcrypto/x509v3/v3conf.c
index 21cf746f45..67ee14f334 100644
--- a/src/lib/libcrypto/x509v3/v3conf.c
+++ b/src/lib/libcrypto/x509v3/v3conf.c
@@ -60,7 +60,6 @@
60#include <stdio.h> 60#include <stdio.h>
61#include "cryptlib.h" 61#include "cryptlib.h"
62#include <openssl/asn1.h> 62#include <openssl/asn1.h>
63#include <openssl/asn1_mac.h>
64#include <openssl/conf.h> 63#include <openssl/conf.h>
65#include <openssl/x509.h> 64#include <openssl/x509.h>
66#include <openssl/x509v3.h> 65#include <openssl/x509v3.h>
diff --git a/src/lib/libcrypto/x509v3/v3prin.c b/src/lib/libcrypto/x509v3/v3prin.c
index ee798859f0..b529814319 100644
--- a/src/lib/libcrypto/x509v3/v3prin.c
+++ b/src/lib/libcrypto/x509v3/v3prin.c
@@ -59,9 +59,7 @@
59 59
60 60
61#include <stdio.h> 61#include <stdio.h>
62#include "cryptlib.h"
63#include <openssl/asn1.h> 62#include <openssl/asn1.h>
64#include <openssl/asn1_mac.h>
65#include <openssl/conf.h> 63#include <openssl/conf.h>
66#include <openssl/x509.h> 64#include <openssl/x509.h>
67#include <openssl/x509v3.h> 65#include <openssl/x509v3.h>