diff options
Diffstat (limited to 'src')
180 files changed, 21828 insertions, 4318 deletions
diff --git a/src/lib/libcrypto/aes/Makefile b/src/lib/libcrypto/aes/Makefile index 22c7203dbb..9d174f4c3e 100644 --- a/src/lib/libcrypto/aes/Makefile +++ b/src/lib/libcrypto/aes/Makefile | |||
@@ -41,7 +41,7 @@ top: | |||
41 | all: lib | 41 | all: lib |
42 | 42 | ||
43 | lib: $(LIBOBJ) | 43 | lib: $(LIBOBJ) |
44 | $(AR) $(LIB) $(LIBOBJ) | 44 | $(ARX) $(LIB) $(LIBOBJ) |
45 | $(RANLIB) $(LIB) || echo Never mind. | 45 | $(RANLIB) $(LIB) || echo Never mind. |
46 | @touch lib | 46 | @touch lib |
47 | 47 | ||
@@ -103,7 +103,8 @@ aes_cfb.o: ../../e_os.h ../../include/openssl/aes.h | |||
103 | aes_cfb.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | 103 | aes_cfb.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h |
104 | aes_cfb.o: aes_cfb.c aes_locl.h | 104 | aes_cfb.o: aes_cfb.c aes_locl.h |
105 | aes_core.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h | 105 | aes_core.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h |
106 | aes_core.o: ../../include/openssl/opensslconf.h aes_core.c aes_locl.h | 106 | aes_core.o: ../../include/openssl/fips.h ../../include/openssl/opensslconf.h |
107 | aes_core.o: aes_core.c aes_locl.h | ||
107 | aes_ctr.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h | 108 | aes_ctr.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h |
108 | aes_ctr.o: ../../include/openssl/opensslconf.h aes_ctr.c aes_locl.h | 109 | aes_ctr.o: ../../include/openssl/opensslconf.h aes_ctr.c aes_locl.h |
109 | aes_ecb.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h | 110 | aes_ecb.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h |
diff --git a/src/lib/libcrypto/asn1/Makefile b/src/lib/libcrypto/asn1/Makefile index 63066899d0..94a6885804 100644 --- a/src/lib/libcrypto/asn1/Makefile +++ b/src/lib/libcrypto/asn1/Makefile | |||
@@ -63,7 +63,7 @@ pk: pk.c | |||
63 | all: lib | 63 | all: lib |
64 | 64 | ||
65 | lib: $(LIBOBJ) | 65 | lib: $(LIBOBJ) |
66 | $(AR) $(LIB) $(LIBOBJ) | 66 | $(ARX) $(LIB) $(LIBOBJ) |
67 | $(RANLIB) $(LIB) || echo Never mind. | 67 | $(RANLIB) $(LIB) || echo Never mind. |
68 | @touch lib | 68 | @touch lib |
69 | 69 | ||
@@ -142,9 +142,9 @@ a_digest.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
142 | a_digest.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 142 | a_digest.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
143 | a_digest.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 143 | a_digest.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
144 | a_digest.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 144 | a_digest.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
145 | a_digest.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 145 | a_digest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
146 | a_digest.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 146 | a_digest.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
147 | a_digest.o: ../../include/openssl/opensslconf.h | 147 | a_digest.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
148 | a_digest.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 148 | a_digest.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
149 | a_digest.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 149 | a_digest.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
150 | a_digest.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 150 | a_digest.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -250,27 +250,27 @@ a_sign.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | |||
250 | a_sign.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 250 | a_sign.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
251 | a_sign.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 251 | a_sign.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
252 | a_sign.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 252 | a_sign.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
253 | a_sign.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 253 | a_sign.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
254 | a_sign.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 254 | a_sign.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
255 | a_sign.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 255 | a_sign.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
256 | a_sign.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 256 | a_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
257 | a_sign.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 257 | a_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
258 | a_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 258 | a_sign.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
259 | a_sign.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 259 | a_sign.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
260 | a_sign.o: ../cryptlib.h a_sign.c | 260 | a_sign.o: ../../include/openssl/x509_vfy.h ../cryptlib.h a_sign.c |
261 | a_strex.o: ../../e_os.h ../../include/openssl/asn1.h | 261 | a_strex.o: ../../e_os.h ../../include/openssl/asn1.h |
262 | a_strex.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 262 | a_strex.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
263 | a_strex.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 263 | a_strex.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
264 | a_strex.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 264 | a_strex.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
265 | a_strex.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 265 | a_strex.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
266 | a_strex.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 266 | a_strex.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
267 | a_strex.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 267 | a_strex.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
268 | a_strex.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 268 | a_strex.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
269 | a_strex.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 269 | a_strex.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
270 | a_strex.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 270 | a_strex.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
271 | a_strex.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 271 | a_strex.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
272 | a_strex.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 272 | a_strex.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
273 | a_strex.o: ../cryptlib.h a_strex.c charmap.h | 273 | a_strex.o: ../../include/openssl/x509_vfy.h ../cryptlib.h a_strex.c charmap.h |
274 | a_strnid.o: ../../e_os.h ../../include/openssl/asn1.h | 274 | a_strnid.o: ../../e_os.h ../../include/openssl/asn1.h |
275 | a_strnid.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 275 | a_strnid.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
276 | a_strnid.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 276 | a_strnid.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
@@ -318,8 +318,9 @@ a_verify.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
318 | a_verify.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 318 | a_verify.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
319 | a_verify.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 319 | a_verify.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
320 | a_verify.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 320 | a_verify.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
321 | a_verify.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 321 | a_verify.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
322 | a_verify.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 322 | a_verify.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
323 | a_verify.o: ../../include/openssl/opensslconf.h | ||
323 | a_verify.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 324 | a_verify.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
324 | a_verify.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 325 | a_verify.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
325 | a_verify.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 326 | a_verify.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -338,8 +339,9 @@ asn1_gen.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
338 | asn1_gen.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 339 | asn1_gen.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
339 | asn1_gen.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 340 | asn1_gen.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
340 | asn1_gen.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 341 | asn1_gen.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
341 | asn1_gen.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 342 | asn1_gen.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
342 | asn1_gen.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 343 | asn1_gen.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
344 | asn1_gen.o: ../../include/openssl/opensslconf.h | ||
343 | asn1_gen.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 345 | asn1_gen.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
344 | asn1_gen.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 346 | asn1_gen.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
345 | asn1_gen.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 347 | asn1_gen.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -369,8 +371,9 @@ asn_mime.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
369 | asn_mime.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 371 | asn_mime.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
370 | asn_mime.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 372 | asn_mime.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
371 | asn_mime.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 373 | asn_mime.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
372 | asn_mime.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 374 | asn_mime.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
373 | asn_mime.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 375 | asn_mime.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
376 | asn_mime.o: ../../include/openssl/opensslconf.h | ||
374 | asn_mime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 377 | asn_mime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
375 | asn_mime.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 378 | asn_mime.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
376 | asn_mime.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 379 | asn_mime.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
@@ -383,9 +386,9 @@ asn_moid.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
383 | asn_moid.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h | 386 | asn_moid.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h |
384 | asn_moid.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 387 | asn_moid.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
385 | asn_moid.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 388 | asn_moid.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
386 | asn_moid.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 389 | asn_moid.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
387 | asn_moid.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 390 | asn_moid.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
388 | asn_moid.o: ../../include/openssl/opensslconf.h | 391 | asn_moid.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
389 | asn_moid.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 392 | asn_moid.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
390 | asn_moid.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 393 | asn_moid.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
391 | asn_moid.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 394 | asn_moid.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -404,23 +407,23 @@ d2i_pr.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | |||
404 | d2i_pr.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h | 407 | d2i_pr.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h |
405 | d2i_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 408 | d2i_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
406 | d2i_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 409 | d2i_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
407 | d2i_pr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 410 | d2i_pr.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
408 | d2i_pr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 411 | d2i_pr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
409 | d2i_pr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 412 | d2i_pr.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
410 | d2i_pr.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | 413 | d2i_pr.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h |
411 | d2i_pr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 414 | d2i_pr.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h |
412 | d2i_pr.o: ../cryptlib.h d2i_pr.c | 415 | d2i_pr.o: ../../include/openssl/symhacks.h ../cryptlib.h d2i_pr.c |
413 | d2i_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 416 | d2i_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
414 | d2i_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | 417 | d2i_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h |
415 | d2i_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h | 418 | d2i_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h |
416 | d2i_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 419 | d2i_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
417 | d2i_pu.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 420 | d2i_pu.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
418 | d2i_pu.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 421 | d2i_pu.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
419 | d2i_pu.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 422 | d2i_pu.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
420 | d2i_pu.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 423 | d2i_pu.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
421 | d2i_pu.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | 424 | d2i_pu.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h |
422 | d2i_pu.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 425 | d2i_pu.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h |
423 | d2i_pu.o: ../cryptlib.h d2i_pu.c | 426 | d2i_pu.o: ../../include/openssl/symhacks.h ../cryptlib.h d2i_pu.c |
424 | evp_asn1.o: ../../e_os.h ../../include/openssl/asn1.h | 427 | evp_asn1.o: ../../e_os.h ../../include/openssl/asn1.h |
425 | evp_asn1.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h | 428 | evp_asn1.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h |
426 | evp_asn1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 429 | evp_asn1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
@@ -456,71 +459,73 @@ i2d_pr.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | |||
456 | i2d_pr.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h | 459 | i2d_pr.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h |
457 | i2d_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 460 | i2d_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
458 | i2d_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 461 | i2d_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
459 | i2d_pr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 462 | i2d_pr.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
460 | i2d_pr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 463 | i2d_pr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
461 | i2d_pr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 464 | i2d_pr.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
462 | i2d_pr.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | 465 | i2d_pr.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h |
463 | i2d_pr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 466 | i2d_pr.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h |
464 | i2d_pr.o: ../cryptlib.h i2d_pr.c | 467 | i2d_pr.o: ../../include/openssl/symhacks.h ../cryptlib.h i2d_pr.c |
465 | i2d_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 468 | i2d_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
466 | i2d_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | 469 | i2d_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h |
467 | i2d_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h | 470 | i2d_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h |
468 | i2d_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 471 | i2d_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
469 | i2d_pu.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 472 | i2d_pu.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
470 | i2d_pu.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 473 | i2d_pu.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
471 | i2d_pu.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 474 | i2d_pu.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
472 | i2d_pu.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 475 | i2d_pu.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
473 | i2d_pu.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | 476 | i2d_pu.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h |
474 | i2d_pu.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 477 | i2d_pu.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h |
475 | i2d_pu.o: ../cryptlib.h i2d_pu.c | 478 | i2d_pu.o: ../../include/openssl/symhacks.h ../cryptlib.h i2d_pu.c |
476 | n_pkey.o: ../../e_os.h ../../include/openssl/asn1.h | 479 | n_pkey.o: ../../e_os.h ../../include/openssl/asn1.h |
477 | n_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/asn1t.h | 480 | n_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/asn1t.h |
478 | n_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 481 | n_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
479 | n_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 482 | n_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
480 | n_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 483 | n_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
481 | n_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 484 | n_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
482 | n_pkey.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 485 | n_pkey.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
483 | n_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 486 | n_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
484 | n_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 487 | n_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
485 | n_pkey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 488 | n_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
486 | n_pkey.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | 489 | n_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h |
487 | n_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 490 | n_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
488 | n_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 491 | n_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
489 | n_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h n_pkey.c | 492 | n_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
493 | n_pkey.o: ../cryptlib.h n_pkey.c | ||
490 | nsseq.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h | 494 | nsseq.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h |
491 | nsseq.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 495 | nsseq.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
492 | nsseq.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 496 | nsseq.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
493 | nsseq.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 497 | nsseq.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
494 | nsseq.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h | 498 | nsseq.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h |
495 | nsseq.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 499 | nsseq.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
496 | nsseq.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 500 | nsseq.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
497 | nsseq.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 501 | nsseq.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
498 | nsseq.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 502 | nsseq.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
499 | nsseq.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 503 | nsseq.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
500 | nsseq.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 504 | nsseq.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
501 | nsseq.o: ../../include/openssl/x509_vfy.h nsseq.c | 505 | nsseq.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h nsseq.c |
502 | p5_pbe.o: ../../e_os.h ../../include/openssl/asn1.h | 506 | p5_pbe.o: ../../e_os.h ../../include/openssl/asn1.h |
503 | p5_pbe.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 507 | p5_pbe.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
504 | p5_pbe.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 508 | p5_pbe.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
505 | p5_pbe.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 509 | p5_pbe.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
506 | p5_pbe.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 510 | p5_pbe.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
507 | p5_pbe.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 511 | p5_pbe.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
508 | p5_pbe.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 512 | p5_pbe.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
509 | p5_pbe.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 513 | p5_pbe.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
510 | p5_pbe.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 514 | p5_pbe.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
511 | p5_pbe.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 515 | p5_pbe.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
512 | p5_pbe.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 516 | p5_pbe.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h |
513 | p5_pbe.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 517 | p5_pbe.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
514 | p5_pbe.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 518 | p5_pbe.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
515 | p5_pbe.o: ../cryptlib.h p5_pbe.c | 519 | p5_pbe.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p5_pbe.c |
516 | p5_pbev2.o: ../../e_os.h ../../include/openssl/asn1.h | 520 | p5_pbev2.o: ../../e_os.h ../../include/openssl/asn1.h |
517 | p5_pbev2.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 521 | p5_pbev2.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
518 | p5_pbev2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 522 | p5_pbev2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
519 | p5_pbev2.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 523 | p5_pbev2.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
520 | p5_pbev2.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 524 | p5_pbev2.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
521 | p5_pbev2.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 525 | p5_pbev2.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
522 | p5_pbev2.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 526 | p5_pbev2.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
523 | p5_pbev2.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 527 | p5_pbev2.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
528 | p5_pbev2.o: ../../include/openssl/opensslconf.h | ||
524 | p5_pbev2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 529 | p5_pbev2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
525 | p5_pbev2.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 530 | p5_pbev2.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
526 | p5_pbev2.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 531 | p5_pbev2.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
@@ -533,41 +538,42 @@ p8_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
533 | p8_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 538 | p8_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
534 | p8_pkey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 539 | p8_pkey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
535 | p8_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 540 | p8_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
536 | p8_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 541 | p8_pkey.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
537 | p8_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 542 | p8_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
538 | p8_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 543 | p8_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
539 | p8_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 544 | p8_pkey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
540 | p8_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 545 | p8_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
541 | p8_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 546 | p8_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
542 | p8_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p8_pkey.c | 547 | p8_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
548 | p8_pkey.o: ../cryptlib.h p8_pkey.c | ||
543 | t_bitst.o: ../../e_os.h ../../include/openssl/asn1.h | 549 | t_bitst.o: ../../e_os.h ../../include/openssl/asn1.h |
544 | t_bitst.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 550 | t_bitst.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
545 | t_bitst.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | 551 | t_bitst.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
546 | t_bitst.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 552 | t_bitst.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
547 | t_bitst.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 553 | t_bitst.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
548 | t_bitst.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 554 | t_bitst.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
549 | t_bitst.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 555 | t_bitst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
550 | t_bitst.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 556 | t_bitst.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
551 | t_bitst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 557 | t_bitst.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
552 | t_bitst.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 558 | t_bitst.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
553 | t_bitst.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 559 | t_bitst.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
554 | t_bitst.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 560 | t_bitst.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
555 | t_bitst.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 561 | t_bitst.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
556 | t_bitst.o: ../cryptlib.h t_bitst.c | 562 | t_bitst.o: ../../include/openssl/x509v3.h ../cryptlib.h t_bitst.c |
557 | t_crl.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 563 | t_crl.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
558 | t_crl.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | 564 | t_crl.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h |
559 | t_crl.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | 565 | t_crl.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
560 | t_crl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 566 | t_crl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
561 | t_crl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 567 | t_crl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
562 | t_crl.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 568 | t_crl.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
563 | t_crl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 569 | t_crl.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
564 | t_crl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 570 | t_crl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
565 | t_crl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 571 | t_crl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
566 | t_crl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 572 | t_crl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
567 | t_crl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 573 | t_crl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
568 | t_crl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 574 | t_crl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
569 | t_crl.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 575 | t_crl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
570 | t_crl.o: ../cryptlib.h t_crl.c | 576 | t_crl.o: ../../include/openssl/x509v3.h ../cryptlib.h t_crl.c |
571 | t_pkey.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 577 | t_pkey.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
572 | t_pkey.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | 578 | t_pkey.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h |
573 | t_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h | 579 | t_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h |
@@ -585,57 +591,57 @@ t_req.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
585 | t_req.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h | 591 | t_req.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h |
586 | t_req.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 592 | t_req.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
587 | t_req.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 593 | t_req.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
588 | t_req.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 594 | t_req.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
589 | t_req.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 595 | t_req.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
590 | t_req.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 596 | t_req.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
591 | t_req.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 597 | t_req.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
592 | t_req.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | 598 | t_req.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h |
593 | t_req.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 599 | t_req.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
594 | t_req.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 600 | t_req.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
595 | t_req.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 601 | t_req.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
596 | t_req.o: ../cryptlib.h t_req.c | 602 | t_req.o: ../../include/openssl/x509v3.h ../cryptlib.h t_req.c |
597 | t_spki.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 603 | t_spki.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
598 | t_spki.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | 604 | t_spki.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h |
599 | t_spki.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h | 605 | t_spki.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h |
600 | t_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 606 | t_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
601 | t_spki.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 607 | t_spki.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
602 | t_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 608 | t_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
603 | t_spki.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 609 | t_spki.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
604 | t_spki.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 610 | t_spki.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
605 | t_spki.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 611 | t_spki.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
606 | t_spki.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h | 612 | t_spki.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
607 | t_spki.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 613 | t_spki.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h |
608 | t_spki.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 614 | t_spki.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
609 | t_spki.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 615 | t_spki.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
610 | t_spki.o: ../cryptlib.h t_spki.c | 616 | t_spki.o: ../../include/openssl/x509_vfy.h ../cryptlib.h t_spki.c |
611 | t_x509.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 617 | t_x509.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
612 | t_x509.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | 618 | t_x509.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h |
613 | t_x509.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | 619 | t_x509.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
614 | t_x509.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h | 620 | t_x509.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h |
615 | t_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 621 | t_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
616 | t_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 622 | t_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
617 | t_x509.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 623 | t_x509.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
618 | t_x509.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 624 | t_x509.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
619 | t_x509.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 625 | t_x509.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
620 | t_x509.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 626 | t_x509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
621 | t_x509.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | 627 | t_x509.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h |
622 | t_x509.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 628 | t_x509.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
623 | t_x509.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 629 | t_x509.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
624 | t_x509.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 630 | t_x509.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
625 | t_x509.o: ../cryptlib.h t_x509.c | 631 | t_x509.o: ../../include/openssl/x509v3.h ../cryptlib.h t_x509.c |
626 | t_x509a.o: ../../e_os.h ../../include/openssl/asn1.h | 632 | t_x509a.o: ../../e_os.h ../../include/openssl/asn1.h |
627 | t_x509a.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 633 | t_x509a.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
628 | t_x509a.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 634 | t_x509a.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
629 | t_x509a.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 635 | t_x509a.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
630 | t_x509a.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 636 | t_x509a.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
631 | t_x509a.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 637 | t_x509a.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
632 | t_x509a.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 638 | t_x509a.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
633 | t_x509a.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 639 | t_x509a.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
634 | t_x509a.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 640 | t_x509a.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
635 | t_x509a.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 641 | t_x509a.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
636 | t_x509a.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 642 | t_x509a.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
637 | t_x509a.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 643 | t_x509a.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
638 | t_x509a.o: ../cryptlib.h t_x509a.c | 644 | t_x509a.o: ../../include/openssl/x509_vfy.h ../cryptlib.h t_x509a.c |
639 | tasn_dec.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h | 645 | tasn_dec.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h |
640 | tasn_dec.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 646 | tasn_dec.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
641 | tasn_dec.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 647 | tasn_dec.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
@@ -688,21 +694,23 @@ x_algor.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
688 | x_algor.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 694 | x_algor.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
689 | x_algor.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 695 | x_algor.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
690 | x_algor.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h | 696 | x_algor.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h |
691 | x_algor.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 697 | x_algor.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
692 | x_algor.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 698 | x_algor.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
693 | x_algor.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 699 | x_algor.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
694 | x_algor.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 700 | x_algor.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
695 | x_algor.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 701 | x_algor.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
696 | x_algor.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 702 | x_algor.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
697 | x_algor.o: ../../include/openssl/x509_vfy.h x_algor.c | 703 | x_algor.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
704 | x_algor.o: x_algor.c | ||
698 | x_attrib.o: ../../e_os.h ../../include/openssl/asn1.h | 705 | x_attrib.o: ../../e_os.h ../../include/openssl/asn1.h |
699 | x_attrib.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 706 | x_attrib.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
700 | x_attrib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 707 | x_attrib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
701 | x_attrib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 708 | x_attrib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
702 | x_attrib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 709 | x_attrib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
703 | x_attrib.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 710 | x_attrib.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
704 | x_attrib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 711 | x_attrib.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
705 | x_attrib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 712 | x_attrib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
713 | x_attrib.o: ../../include/openssl/opensslconf.h | ||
706 | x_attrib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 714 | x_attrib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
707 | x_attrib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 715 | x_attrib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
708 | x_attrib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 716 | x_attrib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -723,37 +731,40 @@ x_crl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
723 | x_crl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 731 | x_crl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
724 | x_crl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 732 | x_crl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
725 | x_crl.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 733 | x_crl.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
726 | x_crl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 734 | x_crl.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
727 | x_crl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 735 | x_crl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
728 | x_crl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 736 | x_crl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
729 | x_crl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 737 | x_crl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
730 | x_crl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 738 | x_crl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
731 | x_crl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 739 | x_crl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
732 | x_crl.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_crl.c | 740 | x_crl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
741 | x_crl.o: ../cryptlib.h x_crl.c | ||
733 | x_exten.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h | 742 | x_exten.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h |
734 | x_exten.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 743 | x_exten.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
735 | x_exten.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 744 | x_exten.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
736 | x_exten.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 745 | x_exten.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
737 | x_exten.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h | 746 | x_exten.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h |
738 | x_exten.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 747 | x_exten.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
739 | x_exten.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 748 | x_exten.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
740 | x_exten.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 749 | x_exten.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
741 | x_exten.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 750 | x_exten.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
742 | x_exten.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 751 | x_exten.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
743 | x_exten.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 752 | x_exten.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
744 | x_exten.o: ../../include/openssl/x509_vfy.h x_exten.c | 753 | x_exten.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
754 | x_exten.o: x_exten.c | ||
745 | x_info.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 755 | x_info.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
746 | x_info.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 756 | x_info.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
747 | x_info.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 757 | x_info.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
748 | x_info.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 758 | x_info.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
749 | x_info.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 759 | x_info.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
750 | x_info.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 760 | x_info.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
751 | x_info.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 761 | x_info.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
752 | x_info.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 762 | x_info.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
753 | x_info.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 763 | x_info.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
754 | x_info.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 764 | x_info.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
755 | x_info.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 765 | x_info.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
756 | x_info.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_info.c | 766 | x_info.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
767 | x_info.o: ../cryptlib.h x_info.c | ||
757 | x_long.o: ../../e_os.h ../../include/openssl/asn1.h | 768 | x_long.o: ../../e_os.h ../../include/openssl/asn1.h |
758 | x_long.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 769 | x_long.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
759 | x_long.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | 770 | x_long.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h |
@@ -769,35 +780,37 @@ x_name.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
769 | x_name.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 780 | x_name.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
770 | x_name.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 781 | x_name.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
771 | x_name.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 782 | x_name.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
772 | x_name.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 783 | x_name.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
773 | x_name.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 784 | x_name.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
774 | x_name.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 785 | x_name.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
775 | x_name.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 786 | x_name.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
776 | x_name.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 787 | x_name.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
777 | x_name.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 788 | x_name.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
778 | x_name.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_name.c | 789 | x_name.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
790 | x_name.o: ../cryptlib.h x_name.c | ||
779 | x_pkey.o: ../../e_os.h ../../include/openssl/asn1.h | 791 | x_pkey.o: ../../e_os.h ../../include/openssl/asn1.h |
780 | x_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h | 792 | x_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h |
781 | x_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 793 | x_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
782 | x_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 794 | x_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
783 | x_pkey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 795 | x_pkey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
784 | x_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 796 | x_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
785 | x_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 797 | x_pkey.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
786 | x_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 798 | x_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
787 | x_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 799 | x_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
788 | x_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 800 | x_pkey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
789 | x_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 801 | x_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
790 | x_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 802 | x_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
791 | x_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_pkey.c | 803 | x_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
804 | x_pkey.o: ../cryptlib.h x_pkey.c | ||
792 | x_pubkey.o: ../../e_os.h ../../include/openssl/asn1.h | 805 | x_pubkey.o: ../../e_os.h ../../include/openssl/asn1.h |
793 | x_pubkey.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 806 | x_pubkey.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
794 | x_pubkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 807 | x_pubkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
795 | x_pubkey.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h | 808 | x_pubkey.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h |
796 | x_pubkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 809 | x_pubkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
797 | x_pubkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 810 | x_pubkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
798 | x_pubkey.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 811 | x_pubkey.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
799 | x_pubkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 812 | x_pubkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
800 | x_pubkey.o: ../../include/openssl/opensslconf.h | 813 | x_pubkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
801 | x_pubkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 814 | x_pubkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
802 | x_pubkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h | 815 | x_pubkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h |
803 | x_pubkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 816 | x_pubkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
@@ -810,76 +823,82 @@ x_req.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
810 | x_req.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 823 | x_req.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
811 | x_req.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 824 | x_req.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
812 | x_req.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 825 | x_req.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
813 | x_req.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 826 | x_req.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
814 | x_req.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 827 | x_req.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
815 | x_req.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 828 | x_req.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
816 | x_req.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 829 | x_req.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
817 | x_req.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 830 | x_req.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
818 | x_req.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 831 | x_req.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
819 | x_req.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_req.c | 832 | x_req.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
833 | x_req.o: ../cryptlib.h x_req.c | ||
820 | x_sig.o: ../../e_os.h ../../include/openssl/asn1.h | 834 | x_sig.o: ../../e_os.h ../../include/openssl/asn1.h |
821 | x_sig.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 835 | x_sig.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
822 | x_sig.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 836 | x_sig.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
823 | x_sig.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 837 | x_sig.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
824 | x_sig.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 838 | x_sig.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
825 | x_sig.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 839 | x_sig.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
826 | x_sig.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 840 | x_sig.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
827 | x_sig.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 841 | x_sig.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
828 | x_sig.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 842 | x_sig.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
829 | x_sig.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 843 | x_sig.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
830 | x_sig.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 844 | x_sig.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
831 | x_sig.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 845 | x_sig.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
832 | x_sig.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_sig.c | 846 | x_sig.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
847 | x_sig.o: ../cryptlib.h x_sig.c | ||
833 | x_spki.o: ../../e_os.h ../../include/openssl/asn1.h | 848 | x_spki.o: ../../e_os.h ../../include/openssl/asn1.h |
834 | x_spki.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 849 | x_spki.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
835 | x_spki.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 850 | x_spki.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
836 | x_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 851 | x_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
837 | x_spki.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 852 | x_spki.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
838 | x_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 853 | x_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
839 | x_spki.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 854 | x_spki.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
840 | x_spki.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 855 | x_spki.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
841 | x_spki.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 856 | x_spki.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
842 | x_spki.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 857 | x_spki.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
843 | x_spki.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 858 | x_spki.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
844 | x_spki.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 859 | x_spki.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
845 | x_spki.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_spki.c | 860 | x_spki.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
861 | x_spki.o: ../cryptlib.h x_spki.c | ||
846 | x_val.o: ../../e_os.h ../../include/openssl/asn1.h | 862 | x_val.o: ../../e_os.h ../../include/openssl/asn1.h |
847 | x_val.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 863 | x_val.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
848 | x_val.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 864 | x_val.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
849 | x_val.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 865 | x_val.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
850 | x_val.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 866 | x_val.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
851 | x_val.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 867 | x_val.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
852 | x_val.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 868 | x_val.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
853 | x_val.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 869 | x_val.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
854 | x_val.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 870 | x_val.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
855 | x_val.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 871 | x_val.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
856 | x_val.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 872 | x_val.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
857 | x_val.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 873 | x_val.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
858 | x_val.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_val.c | 874 | x_val.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
875 | x_val.o: ../cryptlib.h x_val.c | ||
859 | x_x509.o: ../../e_os.h ../../include/openssl/asn1.h | 876 | x_x509.o: ../../e_os.h ../../include/openssl/asn1.h |
860 | x_x509.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 877 | x_x509.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
861 | x_x509.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 878 | x_x509.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
862 | x_x509.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 879 | x_x509.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
863 | x_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 880 | x_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
864 | x_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 881 | x_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
865 | x_x509.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 882 | x_x509.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
866 | x_x509.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 883 | x_x509.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
867 | x_x509.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 884 | x_x509.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
868 | x_x509.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 885 | x_x509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
869 | x_x509.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 886 | x_x509.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
870 | x_x509.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 887 | x_x509.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
871 | x_x509.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 888 | x_x509.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
872 | x_x509.o: ../../include/openssl/x509v3.h ../cryptlib.h x_x509.c | 889 | x_x509.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
890 | x_x509.o: ../cryptlib.h x_x509.c | ||
873 | x_x509a.o: ../../e_os.h ../../include/openssl/asn1.h | 891 | x_x509a.o: ../../e_os.h ../../include/openssl/asn1.h |
874 | x_x509a.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 892 | x_x509a.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
875 | x_x509a.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 893 | x_x509a.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
876 | x_x509a.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 894 | x_x509a.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
877 | x_x509a.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 895 | x_x509a.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
878 | x_x509a.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 896 | x_x509a.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
879 | x_x509a.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 897 | x_x509a.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
880 | x_x509a.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 898 | x_x509a.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
881 | x_x509a.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 899 | x_x509a.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
882 | x_x509a.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 900 | x_x509a.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
883 | x_x509a.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 901 | x_x509a.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
884 | x_x509a.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 902 | x_x509a.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
885 | x_x509a.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_x509a.c | 903 | x_x509a.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
904 | x_x509a.o: ../cryptlib.h x_x509a.c | ||
diff --git a/src/lib/libcrypto/bf/Makefile b/src/lib/libcrypto/bf/Makefile index 8441954a8d..7f4f03eb82 100644 --- a/src/lib/libcrypto/bf/Makefile +++ b/src/lib/libcrypto/bf/Makefile | |||
@@ -40,7 +40,7 @@ top: | |||
40 | all: lib | 40 | all: lib |
41 | 41 | ||
42 | lib: $(LIBOBJ) | 42 | lib: $(LIBOBJ) |
43 | $(AR) $(LIB) $(LIBOBJ) | 43 | $(ARX) $(LIB) $(LIBOBJ) |
44 | $(RANLIB) $(LIB) || echo Never mind. | 44 | $(RANLIB) $(LIB) || echo Never mind. |
45 | @touch lib | 45 | @touch lib |
46 | 46 | ||
@@ -103,5 +103,9 @@ bf_enc.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h | |||
103 | bf_enc.o: ../../include/openssl/opensslconf.h bf_enc.c bf_locl.h | 103 | bf_enc.o: ../../include/openssl/opensslconf.h bf_enc.c bf_locl.h |
104 | bf_ofb64.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h | 104 | bf_ofb64.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h |
105 | bf_ofb64.o: ../../include/openssl/opensslconf.h bf_locl.h bf_ofb64.c | 105 | bf_ofb64.o: ../../include/openssl/opensslconf.h bf_locl.h bf_ofb64.c |
106 | bf_skey.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h | 106 | bf_skey.o: ../../include/openssl/blowfish.h ../../include/openssl/crypto.h |
107 | bf_skey.o: ../../include/openssl/opensslconf.h bf_locl.h bf_pi.h bf_skey.c | 107 | bf_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/fips.h |
108 | bf_skey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | ||
109 | bf_skey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h | ||
110 | bf_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
111 | bf_skey.o: bf_locl.h bf_pi.h bf_skey.c | ||
diff --git a/src/lib/libcrypto/bio/Makefile b/src/lib/libcrypto/bio/Makefile index 1ef6c2fb9f..1cd76ce7a2 100644 --- a/src/lib/libcrypto/bio/Makefile +++ b/src/lib/libcrypto/bio/Makefile | |||
@@ -45,7 +45,7 @@ top: | |||
45 | all: lib | 45 | all: lib |
46 | 46 | ||
47 | lib: $(LIBOBJ) | 47 | lib: $(LIBOBJ) |
48 | $(AR) $(LIB) $(LIBOBJ) | 48 | $(ARX) $(LIB) $(LIBOBJ) |
49 | $(RANLIB) $(LIB) || echo Never mind. | 49 | $(RANLIB) $(LIB) || echo Never mind. |
50 | @touch lib | 50 | @touch lib |
51 | 51 | ||
diff --git a/src/lib/libcrypto/bn/bn_opt.c b/src/lib/libcrypto/bn/bn_opt.c new file mode 100644 index 0000000000..21cbb38f62 --- /dev/null +++ b/src/lib/libcrypto/bn/bn_opt.c | |||
@@ -0,0 +1,87 @@ | |||
1 | /* crypto/bn/bn_opt.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #ifndef BN_DEBUG | ||
60 | # undef NDEBUG /* avoid conflicting definitions */ | ||
61 | # define NDEBUG | ||
62 | #endif | ||
63 | |||
64 | #include <assert.h> | ||
65 | #include <limits.h> | ||
66 | #include <stdio.h> | ||
67 | #include "cryptlib.h" | ||
68 | #include "bn_lcl.h" | ||
69 | |||
70 | char *BN_options(void) | ||
71 | { | ||
72 | static int init=0; | ||
73 | static char data[16]; | ||
74 | |||
75 | if (!init) | ||
76 | { | ||
77 | init++; | ||
78 | #ifdef BN_LLONG | ||
79 | BIO_snprintf(data,sizeof data,"bn(%d,%d)", | ||
80 | (int)sizeof(BN_ULLONG)*8,(int)sizeof(BN_ULONG)*8); | ||
81 | #else | ||
82 | BIO_snprintf(data,sizeof data,"bn(%d,%d)", | ||
83 | (int)sizeof(BN_ULONG)*8,(int)sizeof(BN_ULONG)*8); | ||
84 | #endif | ||
85 | } | ||
86 | return(data); | ||
87 | } | ||
diff --git a/src/lib/libcrypto/buffer/Makefile b/src/lib/libcrypto/buffer/Makefile index 9f3a88d2d6..9e0f46e19a 100644 --- a/src/lib/libcrypto/buffer/Makefile +++ b/src/lib/libcrypto/buffer/Makefile | |||
@@ -17,8 +17,8 @@ TEST= | |||
17 | APPS= | 17 | APPS= |
18 | 18 | ||
19 | LIB=$(TOP)/libcrypto.a | 19 | LIB=$(TOP)/libcrypto.a |
20 | LIBSRC= buffer.c buf_err.c | 20 | LIBSRC= buffer.c buf_str.c buf_err.c |
21 | LIBOBJ= buffer.o buf_err.o | 21 | LIBOBJ= buffer.o buf_str.o buf_err.o |
22 | 22 | ||
23 | SRC= $(LIBSRC) | 23 | SRC= $(LIBSRC) |
24 | 24 | ||
@@ -33,7 +33,7 @@ top: | |||
33 | all: lib | 33 | all: lib |
34 | 34 | ||
35 | lib: $(LIBOBJ) | 35 | lib: $(LIBOBJ) |
36 | $(AR) $(LIB) $(LIBOBJ) | 36 | $(ARX) $(LIB) $(LIBOBJ) |
37 | $(RANLIB) $(LIB) || echo Never mind. | 37 | $(RANLIB) $(LIB) || echo Never mind. |
38 | @touch lib | 38 | @touch lib |
39 | 39 | ||
@@ -81,6 +81,13 @@ buf_err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | |||
81 | buf_err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h | 81 | buf_err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h |
82 | buf_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 82 | buf_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
83 | buf_err.o: buf_err.c | 83 | buf_err.o: buf_err.c |
84 | buf_str.o: ../../e_os.h ../../include/openssl/bio.h | ||
85 | buf_str.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | ||
86 | buf_str.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
87 | buf_str.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h | ||
88 | buf_str.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
89 | buf_str.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
90 | buf_str.o: ../../include/openssl/symhacks.h ../cryptlib.h buf_str.c | ||
84 | buffer.o: ../../e_os.h ../../include/openssl/bio.h | 91 | buffer.o: ../../e_os.h ../../include/openssl/bio.h |
85 | buffer.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 92 | buffer.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
86 | buffer.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | 93 | buffer.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
diff --git a/src/lib/libcrypto/cast/Makefile b/src/lib/libcrypto/cast/Makefile index 149956ee90..2e026dbe0d 100644 --- a/src/lib/libcrypto/cast/Makefile +++ b/src/lib/libcrypto/cast/Makefile | |||
@@ -38,7 +38,7 @@ top: | |||
38 | all: lib | 38 | all: lib |
39 | 39 | ||
40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) |
41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(ARX) $(LIB) $(LIBOBJ) |
42 | $(RANLIB) $(LIB) || echo Never mind. | 42 | $(RANLIB) $(LIB) || echo Never mind. |
43 | @touch lib | 43 | @touch lib |
44 | 44 | ||
@@ -102,5 +102,8 @@ c_ofb64.o: ../../e_os.h ../../include/openssl/cast.h | |||
102 | c_ofb64.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | 102 | c_ofb64.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h |
103 | c_ofb64.o: c_ofb64.c cast_lcl.h | 103 | c_ofb64.o: c_ofb64.c cast_lcl.h |
104 | c_skey.o: ../../e_os.h ../../include/openssl/cast.h | 104 | c_skey.o: ../../e_os.h ../../include/openssl/cast.h |
105 | c_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | 105 | c_skey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
106 | c_skey.o: c_skey.c cast_lcl.h cast_s.h | 106 | c_skey.o: ../../include/openssl/fips.h ../../include/openssl/opensslconf.h |
107 | c_skey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
108 | c_skey.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
109 | c_skey.o: ../../include/openssl/symhacks.h c_skey.c cast_lcl.h cast_s.h | ||
diff --git a/src/lib/libcrypto/comp/Makefile b/src/lib/libcrypto/comp/Makefile index efda832dce..5d364b8513 100644 --- a/src/lib/libcrypto/comp/Makefile +++ b/src/lib/libcrypto/comp/Makefile | |||
@@ -36,7 +36,7 @@ top: | |||
36 | all: lib | 36 | all: lib |
37 | 37 | ||
38 | lib: $(LIBOBJ) | 38 | lib: $(LIBOBJ) |
39 | $(AR) $(LIB) $(LIBOBJ) | 39 | $(ARX) $(LIB) $(LIBOBJ) |
40 | $(RANLIB) $(LIB) || echo Never mind. | 40 | $(RANLIB) $(LIB) || echo Never mind. |
41 | @touch lib | 41 | @touch lib |
42 | 42 | ||
diff --git a/src/lib/libcrypto/conf/Makefile b/src/lib/libcrypto/conf/Makefile index 78bb324106..ccd0721332 100644 --- a/src/lib/libcrypto/conf/Makefile +++ b/src/lib/libcrypto/conf/Makefile | |||
@@ -36,7 +36,7 @@ top: | |||
36 | all: lib | 36 | all: lib |
37 | 37 | ||
38 | lib: $(LIBOBJ) | 38 | lib: $(LIBOBJ) |
39 | $(AR) $(LIB) $(LIBOBJ) | 39 | $(ARX) $(LIB) $(LIBOBJ) |
40 | $(RANLIB) $(LIB) || echo Never mind. | 40 | $(RANLIB) $(LIB) || echo Never mind. |
41 | @touch lib | 41 | @touch lib |
42 | 42 | ||
@@ -114,8 +114,8 @@ conf_mall.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h | |||
114 | conf_mall.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 114 | conf_mall.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
115 | conf_mall.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h | 115 | conf_mall.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h |
116 | conf_mall.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 116 | conf_mall.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
117 | conf_mall.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 117 | conf_mall.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
118 | conf_mall.o: ../../include/openssl/objects.h | 118 | conf_mall.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
119 | conf_mall.o: ../../include/openssl/opensslconf.h | 119 | conf_mall.o: ../../include/openssl/opensslconf.h |
120 | conf_mall.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 120 | conf_mall.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
121 | conf_mall.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 121 | conf_mall.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
@@ -128,9 +128,9 @@ conf_mod.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
128 | conf_mod.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h | 128 | conf_mod.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h |
129 | conf_mod.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 129 | conf_mod.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
130 | conf_mod.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 130 | conf_mod.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
131 | conf_mod.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 131 | conf_mod.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
132 | conf_mod.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 132 | conf_mod.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
133 | conf_mod.o: ../../include/openssl/opensslconf.h | 133 | conf_mod.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
134 | conf_mod.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 134 | conf_mod.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
135 | conf_mod.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 135 | conf_mod.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
136 | conf_mod.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 136 | conf_mod.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -143,8 +143,9 @@ conf_sap.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h | |||
143 | conf_sap.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 143 | conf_sap.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
144 | conf_sap.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h | 144 | conf_sap.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h |
145 | conf_sap.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 145 | conf_sap.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
146 | conf_sap.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 146 | conf_sap.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
147 | conf_sap.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 147 | conf_sap.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
148 | conf_sap.o: ../../include/openssl/opensslconf.h | ||
148 | conf_sap.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 149 | conf_sap.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
149 | conf_sap.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 150 | conf_sap.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
150 | conf_sap.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 151 | conf_sap.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
diff --git a/src/lib/libcrypto/des/Makefile b/src/lib/libcrypto/des/Makefile index 523dfe38f2..786e68802e 100644 --- a/src/lib/libcrypto/des/Makefile +++ b/src/lib/libcrypto/des/Makefile | |||
@@ -24,7 +24,7 @@ TEST=destest.c | |||
24 | APPS= | 24 | APPS= |
25 | 25 | ||
26 | LIB=$(TOP)/libcrypto.a | 26 | LIB=$(TOP)/libcrypto.a |
27 | LIBSRC= cbc_cksm.c cbc_enc.c cfb64enc.c cfb_enc.c \ | 27 | LIBSRC= des_lib.c cbc_cksm.c cbc_enc.c cfb64enc.c cfb_enc.c \ |
28 | ecb3_enc.c ecb_enc.c enc_read.c enc_writ.c \ | 28 | ecb3_enc.c ecb_enc.c enc_read.c enc_writ.c \ |
29 | fcrypt.c ofb64enc.c ofb_enc.c pcbc_enc.c \ | 29 | fcrypt.c ofb64enc.c ofb_enc.c pcbc_enc.c \ |
30 | qud_cksm.c rand_key.c rpc_enc.c set_key.c \ | 30 | qud_cksm.c rand_key.c rpc_enc.c set_key.c \ |
@@ -33,7 +33,7 @@ LIBSRC= cbc_cksm.c cbc_enc.c cfb64enc.c cfb_enc.c \ | |||
33 | str2key.c cfb64ede.c ofb64ede.c ede_cbcm_enc.c des_old.c des_old2.c \ | 33 | str2key.c cfb64ede.c ofb64ede.c ede_cbcm_enc.c des_old.c des_old2.c \ |
34 | read2pwd.c | 34 | read2pwd.c |
35 | 35 | ||
36 | LIBOBJ= set_key.o ecb_enc.o cbc_enc.o \ | 36 | LIBOBJ= des_lib.o set_key.o ecb_enc.o cbc_enc.o \ |
37 | ecb3_enc.o cfb64enc.o cfb64ede.o cfb_enc.o ofb64ede.o \ | 37 | ecb3_enc.o cfb64enc.o cfb64ede.o cfb_enc.o ofb64ede.o \ |
38 | enc_read.o enc_writ.o ofb64enc.o \ | 38 | enc_read.o enc_writ.o ofb64enc.o \ |
39 | ofb_enc.o str2key.o pcbc_enc.o qud_cksm.o rand_key.o \ | 39 | ofb_enc.o str2key.o pcbc_enc.o qud_cksm.o rand_key.o \ |
@@ -54,7 +54,7 @@ top: | |||
54 | all: lib | 54 | all: lib |
55 | 55 | ||
56 | lib: $(LIBOBJ) | 56 | lib: $(LIBOBJ) |
57 | $(AR) $(LIB) $(LIBOBJ) | 57 | $(ARX) $(LIB) $(LIBOBJ) |
58 | $(RANLIB) $(LIB) || echo Never mind. | 58 | $(RANLIB) $(LIB) || echo Never mind. |
59 | @touch lib | 59 | @touch lib |
60 | 60 | ||
@@ -157,6 +157,13 @@ des_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h | |||
157 | des_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 157 | des_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
158 | des_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h | 158 | des_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h |
159 | des_enc.o: des_enc.c des_locl.h ncbc_enc.c | 159 | des_enc.o: des_enc.c des_locl.h ncbc_enc.c |
160 | des_lib.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h | ||
161 | des_lib.o: ../../include/openssl/des.h ../../include/openssl/des_old.h | ||
162 | des_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | ||
163 | des_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
164 | des_lib.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
165 | des_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h | ||
166 | des_lib.o: ../../include/openssl/ui_compat.h des_lib.c des_locl.h des_ver.h | ||
160 | des_old.o: ../../include/openssl/des.h ../../include/openssl/des_old.h | 167 | des_old.o: ../../include/openssl/des.h ../../include/openssl/des_old.h |
161 | des_old.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | 168 | des_old.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h |
162 | des_old.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h | 169 | des_old.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h |
@@ -175,14 +182,12 @@ ecb3_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h | |||
175 | ecb3_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 182 | ecb3_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
176 | ecb3_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h | 183 | ecb3_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h |
177 | ecb3_enc.o: des_locl.h ecb3_enc.c | 184 | ecb3_enc.o: des_locl.h ecb3_enc.c |
178 | ecb_enc.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h | ||
179 | ecb_enc.o: ../../include/openssl/des.h ../../include/openssl/des_old.h | 185 | ecb_enc.o: ../../include/openssl/des.h ../../include/openssl/des_old.h |
180 | ecb_enc.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | 186 | ecb_enc.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h |
181 | ecb_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 187 | ecb_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h |
182 | ecb_enc.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | 188 | ecb_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
183 | ecb_enc.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h | 189 | ecb_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h |
184 | ecb_enc.o: ../../include/openssl/ui_compat.h des_locl.h des_ver.h ecb_enc.c | 190 | ecb_enc.o: des_locl.h ecb_enc.c spr.h |
185 | ecb_enc.o: spr.h | ||
186 | ede_cbcm_enc.o: ../../include/openssl/des.h ../../include/openssl/des_old.h | 191 | ede_cbcm_enc.o: ../../include/openssl/des.h ../../include/openssl/des_old.h |
187 | ede_cbcm_enc.o: ../../include/openssl/e_os2.h | 192 | ede_cbcm_enc.o: ../../include/openssl/e_os2.h |
188 | ede_cbcm_enc.o: ../../include/openssl/opensslconf.h | 193 | ede_cbcm_enc.o: ../../include/openssl/opensslconf.h |
@@ -272,11 +277,11 @@ rpc_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | |||
272 | rpc_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h | 277 | rpc_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h |
273 | rpc_enc.o: des_locl.h des_ver.h rpc_des.h rpc_enc.c | 278 | rpc_enc.o: des_locl.h des_ver.h rpc_des.h rpc_enc.c |
274 | set_key.o: ../../include/openssl/des.h ../../include/openssl/des_old.h | 279 | set_key.o: ../../include/openssl/des.h ../../include/openssl/des_old.h |
275 | set_key.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | 280 | set_key.o: ../../include/openssl/e_os2.h ../../include/openssl/fips.h |
276 | set_key.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h | 281 | set_key.o: ../../include/openssl/opensslconf.h ../../include/openssl/ossl_typ.h |
277 | set_key.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 282 | set_key.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h |
278 | set_key.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h | 283 | set_key.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h |
279 | set_key.o: des_locl.h set_key.c | 284 | set_key.o: ../../include/openssl/ui_compat.h des_locl.h set_key.c |
280 | str2key.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | 285 | str2key.o: ../../include/openssl/crypto.h ../../include/openssl/des.h |
281 | str2key.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h | 286 | str2key.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h |
282 | str2key.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 287 | str2key.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
diff --git a/src/lib/libcrypto/des/des_lib.c b/src/lib/libcrypto/des/des_lib.c new file mode 100644 index 0000000000..d4b3047932 --- /dev/null +++ b/src/lib/libcrypto/des/des_lib.c | |||
@@ -0,0 +1,106 @@ | |||
1 | /* crypto/des/ecb_enc.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include "des_locl.h" | ||
60 | #include "des_ver.h" | ||
61 | #include <openssl/opensslv.h> | ||
62 | #include <openssl/bio.h> | ||
63 | |||
64 | OPENSSL_GLOBAL const char libdes_version[]="libdes" OPENSSL_VERSION_PTEXT; | ||
65 | OPENSSL_GLOBAL const char DES_version[]="DES" OPENSSL_VERSION_PTEXT; | ||
66 | |||
67 | const char *DES_options(void) | ||
68 | { | ||
69 | static int init=1; | ||
70 | static char buf[32]; | ||
71 | |||
72 | if (init) | ||
73 | { | ||
74 | const char *ptr,*unroll,*risc,*size; | ||
75 | |||
76 | #ifdef DES_PTR | ||
77 | ptr="ptr"; | ||
78 | #else | ||
79 | ptr="idx"; | ||
80 | #endif | ||
81 | #if defined(DES_RISC1) || defined(DES_RISC2) | ||
82 | #ifdef DES_RISC1 | ||
83 | risc="risc1"; | ||
84 | #endif | ||
85 | #ifdef DES_RISC2 | ||
86 | risc="risc2"; | ||
87 | #endif | ||
88 | #else | ||
89 | risc="cisc"; | ||
90 | #endif | ||
91 | #ifdef DES_UNROLL | ||
92 | unroll="16"; | ||
93 | #else | ||
94 | unroll="4"; | ||
95 | #endif | ||
96 | if (sizeof(DES_LONG) != sizeof(long)) | ||
97 | size="int"; | ||
98 | else | ||
99 | size="long"; | ||
100 | BIO_snprintf(buf,sizeof buf,"des(%s,%s,%s,%s)",ptr,risc,unroll, | ||
101 | size); | ||
102 | init=0; | ||
103 | } | ||
104 | return(buf); | ||
105 | } | ||
106 | |||
diff --git a/src/lib/libcrypto/dsa/dsa_utl.c b/src/lib/libcrypto/dsa/dsa_utl.c new file mode 100644 index 0000000000..24c021d120 --- /dev/null +++ b/src/lib/libcrypto/dsa/dsa_utl.c | |||
@@ -0,0 +1,95 @@ | |||
1 | /* crypto/dsa/dsa_lib.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | /* Original version from Steven Schoch <schoch@sheba.arc.nasa.gov> */ | ||
60 | |||
61 | #include <stdio.h> | ||
62 | #include "cryptlib.h" | ||
63 | #include <openssl/bn.h> | ||
64 | #include <openssl/dsa.h> | ||
65 | #include <openssl/asn1.h> | ||
66 | #ifndef OPENSSL_NO_ENGINE | ||
67 | #include <openssl/engine.h> | ||
68 | #endif | ||
69 | #ifndef OPENSSL_NO_DH | ||
70 | #include <openssl/dh.h> | ||
71 | #endif | ||
72 | |||
73 | DSA_SIG *DSA_SIG_new(void) | ||
74 | { | ||
75 | DSA_SIG *sig; | ||
76 | sig = OPENSSL_malloc(sizeof(DSA_SIG)); | ||
77 | if (!sig) | ||
78 | return NULL; | ||
79 | sig->r = NULL; | ||
80 | sig->s = NULL; | ||
81 | return sig; | ||
82 | } | ||
83 | |||
84 | void DSA_SIG_free(DSA_SIG *sig) | ||
85 | { | ||
86 | if (sig) | ||
87 | { | ||
88 | if (sig->r) | ||
89 | BN_free(sig->r); | ||
90 | if (sig->s) | ||
91 | BN_free(sig->s); | ||
92 | OPENSSL_free(sig); | ||
93 | } | ||
94 | } | ||
95 | |||
diff --git a/src/lib/libcrypto/dso/Makefile b/src/lib/libcrypto/dso/Makefile index 07f5d8d159..52f152888c 100644 --- a/src/lib/libcrypto/dso/Makefile +++ b/src/lib/libcrypto/dso/Makefile | |||
@@ -35,7 +35,7 @@ top: | |||
35 | all: lib | 35 | all: lib |
36 | 36 | ||
37 | lib: $(LIBOBJ) | 37 | lib: $(LIBOBJ) |
38 | $(AR) $(LIB) $(LIBOBJ) | 38 | $(ARX) $(LIB) $(LIBOBJ) |
39 | $(RANLIB) $(LIB) || echo Never mind. | 39 | $(RANLIB) $(LIB) || echo Never mind. |
40 | @touch lib | 40 | @touch lib |
41 | 41 | ||
diff --git a/src/lib/libcrypto/dyn_lck.c b/src/lib/libcrypto/dyn_lck.c new file mode 100644 index 0000000000..7f82c41264 --- /dev/null +++ b/src/lib/libcrypto/dyn_lck.c | |||
@@ -0,0 +1,428 @@ | |||
1 | /* crypto/cryptlib.c */ | ||
2 | /* ==================================================================== | ||
3 | * Copyright (c) 1998-2003 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 | */ | ||
55 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
56 | * All rights reserved. | ||
57 | * | ||
58 | * This package is an SSL implementation written | ||
59 | * by Eric Young (eay@cryptsoft.com). | ||
60 | * The implementation was written so as to conform with Netscapes SSL. | ||
61 | * | ||
62 | * This library is free for commercial and non-commercial use as long as | ||
63 | * the following conditions are aheared to. The following conditions | ||
64 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
65 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
66 | * included with this distribution is covered by the same copyright terms | ||
67 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
68 | * | ||
69 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
70 | * the code are not to be removed. | ||
71 | * If this package is used in a product, Eric Young should be given attribution | ||
72 | * as the author of the parts of the library used. | ||
73 | * This can be in the form of a textual message at program startup or | ||
74 | * in documentation (online or textual) provided with the package. | ||
75 | * | ||
76 | * Redistribution and use in source and binary forms, with or without | ||
77 | * modification, are permitted provided that the following conditions | ||
78 | * are met: | ||
79 | * 1. Redistributions of source code must retain the copyright | ||
80 | * notice, this list of conditions and the following disclaimer. | ||
81 | * 2. Redistributions in binary form must reproduce the above copyright | ||
82 | * notice, this list of conditions and the following disclaimer in the | ||
83 | * documentation and/or other materials provided with the distribution. | ||
84 | * 3. All advertising materials mentioning features or use of this software | ||
85 | * must display the following acknowledgement: | ||
86 | * "This product includes cryptographic software written by | ||
87 | * Eric Young (eay@cryptsoft.com)" | ||
88 | * The word 'cryptographic' can be left out if the rouines from the library | ||
89 | * being used are not cryptographic related :-). | ||
90 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
91 | * the apps directory (application code) you must include an acknowledgement: | ||
92 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
93 | * | ||
94 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
95 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
96 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
97 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
98 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
99 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
100 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
101 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
102 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
103 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
104 | * SUCH DAMAGE. | ||
105 | * | ||
106 | * The licence and distribution terms for any publically available version or | ||
107 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
108 | * copied and put under another distribution licence | ||
109 | * [including the GNU Public Licence.] | ||
110 | */ | ||
111 | /* ==================================================================== | ||
112 | * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. | ||
113 | * ECDH support in OpenSSL originally developed by | ||
114 | * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. | ||
115 | */ | ||
116 | |||
117 | #include "cryptlib.h" | ||
118 | #include <openssl/safestack.h> | ||
119 | |||
120 | #if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN16) | ||
121 | static double SSLeay_MSVC5_hack=0.0; /* and for VC1.5 */ | ||
122 | #endif | ||
123 | |||
124 | DECLARE_STACK_OF(CRYPTO_dynlock) | ||
125 | IMPLEMENT_STACK_OF(CRYPTO_dynlock) | ||
126 | |||
127 | /* real #defines in crypto.h, keep these upto date */ | ||
128 | static const char* const lock_names[CRYPTO_NUM_LOCKS] = | ||
129 | { | ||
130 | "<<ERROR>>", | ||
131 | "err", | ||
132 | "ex_data", | ||
133 | "x509", | ||
134 | "x509_info", | ||
135 | "x509_pkey", | ||
136 | "x509_crl", | ||
137 | "x509_req", | ||
138 | "dsa", | ||
139 | "rsa", | ||
140 | "evp_pkey", | ||
141 | "x509_store", | ||
142 | "ssl_ctx", | ||
143 | "ssl_cert", | ||
144 | "ssl_session", | ||
145 | "ssl_sess_cert", | ||
146 | "ssl", | ||
147 | "ssl_method", | ||
148 | "rand", | ||
149 | "rand2", | ||
150 | "debug_malloc", | ||
151 | "BIO", | ||
152 | "gethostbyname", | ||
153 | "getservbyname", | ||
154 | "readdir", | ||
155 | "RSA_blinding", | ||
156 | "dh", | ||
157 | "debug_malloc2", | ||
158 | "dso", | ||
159 | "dynlock", | ||
160 | "engine", | ||
161 | "ui", | ||
162 | "ecdsa", | ||
163 | "ec", | ||
164 | "ecdh", | ||
165 | "bn", | ||
166 | "ec_pre_comp", | ||
167 | "store", | ||
168 | "comp", | ||
169 | #ifndef OPENSSL_FIPS | ||
170 | # if CRYPTO_NUM_LOCKS != 39 | ||
171 | # error "Inconsistency between crypto.h and cryptlib.c" | ||
172 | # endif | ||
173 | #else | ||
174 | "fips", | ||
175 | "fips2", | ||
176 | # if CRYPTO_NUM_LOCKS != 41 | ||
177 | # error "Inconsistency between crypto.h and cryptlib.c" | ||
178 | # endif | ||
179 | #endif | ||
180 | }; | ||
181 | |||
182 | /* This is for applications to allocate new type names in the non-dynamic | ||
183 | array of lock names. These are numbered with positive numbers. */ | ||
184 | static STACK *app_locks=NULL; | ||
185 | |||
186 | /* For applications that want a more dynamic way of handling threads, the | ||
187 | following stack is used. These are externally numbered with negative | ||
188 | numbers. */ | ||
189 | static STACK_OF(CRYPTO_dynlock) *dyn_locks=NULL; | ||
190 | |||
191 | |||
192 | static struct CRYPTO_dynlock_value *(MS_FAR *dynlock_create_callback) | ||
193 | (const char *file,int line)=NULL; | ||
194 | static void (MS_FAR *dynlock_lock_callback)(int mode, | ||
195 | struct CRYPTO_dynlock_value *l, const char *file,int line)=NULL; | ||
196 | static void (MS_FAR *dynlock_destroy_callback)(struct CRYPTO_dynlock_value *l, | ||
197 | const char *file,int line)=NULL; | ||
198 | |||
199 | int CRYPTO_get_new_lockid(char *name) | ||
200 | { | ||
201 | char *str; | ||
202 | int i; | ||
203 | |||
204 | #if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN16) | ||
205 | /* A hack to make Visual C++ 5.0 work correctly when linking as | ||
206 | * a DLL using /MT. Without this, the application cannot use | ||
207 | * and floating point printf's. | ||
208 | * It also seems to be needed for Visual C 1.5 (win16) */ | ||
209 | SSLeay_MSVC5_hack=(double)name[0]*(double)name[1]; | ||
210 | #endif | ||
211 | |||
212 | if ((app_locks == NULL) && ((app_locks=sk_new_null()) == NULL)) | ||
213 | { | ||
214 | CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_LOCKID,ERR_R_MALLOC_FAILURE); | ||
215 | return(0); | ||
216 | } | ||
217 | if ((str=BUF_strdup(name)) == NULL) | ||
218 | { | ||
219 | CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_LOCKID,ERR_R_MALLOC_FAILURE); | ||
220 | return(0); | ||
221 | } | ||
222 | i=sk_push(app_locks,str); | ||
223 | if (!i) | ||
224 | OPENSSL_free(str); | ||
225 | else | ||
226 | i+=CRYPTO_NUM_LOCKS; /* gap of one :-) */ | ||
227 | return(i); | ||
228 | } | ||
229 | |||
230 | int CRYPTO_get_new_dynlockid(void) | ||
231 | { | ||
232 | int i = 0; | ||
233 | CRYPTO_dynlock *pointer = NULL; | ||
234 | |||
235 | if (dynlock_create_callback == NULL) | ||
236 | { | ||
237 | CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID,CRYPTO_R_NO_DYNLOCK_CREATE_CALLBACK); | ||
238 | return(0); | ||
239 | } | ||
240 | CRYPTO_w_lock(CRYPTO_LOCK_DYNLOCK); | ||
241 | if ((dyn_locks == NULL) | ||
242 | && ((dyn_locks=sk_CRYPTO_dynlock_new_null()) == NULL)) | ||
243 | { | ||
244 | CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK); | ||
245 | CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID,ERR_R_MALLOC_FAILURE); | ||
246 | return(0); | ||
247 | } | ||
248 | CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK); | ||
249 | |||
250 | pointer = (CRYPTO_dynlock *)OPENSSL_malloc(sizeof(CRYPTO_dynlock)); | ||
251 | if (pointer == NULL) | ||
252 | { | ||
253 | CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID,ERR_R_MALLOC_FAILURE); | ||
254 | return(0); | ||
255 | } | ||
256 | pointer->references = 1; | ||
257 | pointer->data = dynlock_create_callback(__FILE__,__LINE__); | ||
258 | if (pointer->data == NULL) | ||
259 | { | ||
260 | OPENSSL_free(pointer); | ||
261 | CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID,ERR_R_MALLOC_FAILURE); | ||
262 | return(0); | ||
263 | } | ||
264 | |||
265 | CRYPTO_w_lock(CRYPTO_LOCK_DYNLOCK); | ||
266 | /* First, try to find an existing empty slot */ | ||
267 | i=sk_CRYPTO_dynlock_find(dyn_locks,NULL); | ||
268 | /* If there was none, push, thereby creating a new one */ | ||
269 | if (i == -1) | ||
270 | /* Since sk_push() returns the number of items on the | ||
271 | stack, not the location of the pushed item, we need | ||
272 | to transform the returned number into a position, | ||
273 | by decreasing it. */ | ||
274 | i=sk_CRYPTO_dynlock_push(dyn_locks,pointer) - 1; | ||
275 | else | ||
276 | /* If we found a place with a NULL pointer, put our pointer | ||
277 | in it. */ | ||
278 | (void)sk_CRYPTO_dynlock_set(dyn_locks,i,pointer); | ||
279 | CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK); | ||
280 | |||
281 | if (i == -1) | ||
282 | { | ||
283 | dynlock_destroy_callback(pointer->data,__FILE__,__LINE__); | ||
284 | OPENSSL_free(pointer); | ||
285 | } | ||
286 | else | ||
287 | i += 1; /* to avoid 0 */ | ||
288 | return -i; | ||
289 | } | ||
290 | |||
291 | void CRYPTO_destroy_dynlockid(int i) | ||
292 | { | ||
293 | CRYPTO_dynlock *pointer = NULL; | ||
294 | if (i) | ||
295 | i = -i-1; | ||
296 | if (dynlock_destroy_callback == NULL) | ||
297 | return; | ||
298 | |||
299 | CRYPTO_w_lock(CRYPTO_LOCK_DYNLOCK); | ||
300 | |||
301 | if (dyn_locks == NULL || i >= sk_CRYPTO_dynlock_num(dyn_locks)) | ||
302 | { | ||
303 | CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK); | ||
304 | return; | ||
305 | } | ||
306 | pointer = sk_CRYPTO_dynlock_value(dyn_locks, i); | ||
307 | if (pointer != NULL) | ||
308 | { | ||
309 | --pointer->references; | ||
310 | #ifdef REF_CHECK | ||
311 | if (pointer->references < 0) | ||
312 | { | ||
313 | fprintf(stderr,"CRYPTO_destroy_dynlockid, bad reference count\n"); | ||
314 | abort(); | ||
315 | } | ||
316 | else | ||
317 | #endif | ||
318 | if (pointer->references <= 0) | ||
319 | { | ||
320 | (void)sk_CRYPTO_dynlock_set(dyn_locks, i, NULL); | ||
321 | } | ||
322 | else | ||
323 | pointer = NULL; | ||
324 | } | ||
325 | CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK); | ||
326 | |||
327 | if (pointer) | ||
328 | { | ||
329 | dynlock_destroy_callback(pointer->data,__FILE__,__LINE__); | ||
330 | OPENSSL_free(pointer); | ||
331 | } | ||
332 | } | ||
333 | |||
334 | struct CRYPTO_dynlock_value *CRYPTO_get_dynlock_value(int i) | ||
335 | { | ||
336 | CRYPTO_dynlock *pointer = NULL; | ||
337 | if (i) | ||
338 | i = -i-1; | ||
339 | |||
340 | CRYPTO_w_lock(CRYPTO_LOCK_DYNLOCK); | ||
341 | |||
342 | if (dyn_locks != NULL && i < sk_CRYPTO_dynlock_num(dyn_locks)) | ||
343 | pointer = sk_CRYPTO_dynlock_value(dyn_locks, i); | ||
344 | if (pointer) | ||
345 | pointer->references++; | ||
346 | |||
347 | CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK); | ||
348 | |||
349 | if (pointer) | ||
350 | return pointer->data; | ||
351 | return NULL; | ||
352 | } | ||
353 | |||
354 | struct CRYPTO_dynlock_value *(*CRYPTO_get_dynlock_create_callback(void)) | ||
355 | (const char *file,int line) | ||
356 | { | ||
357 | return(dynlock_create_callback); | ||
358 | } | ||
359 | |||
360 | void (*CRYPTO_get_dynlock_lock_callback(void))(int mode, | ||
361 | struct CRYPTO_dynlock_value *l, const char *file,int line) | ||
362 | { | ||
363 | return(dynlock_lock_callback); | ||
364 | } | ||
365 | |||
366 | void (*CRYPTO_get_dynlock_destroy_callback(void)) | ||
367 | (struct CRYPTO_dynlock_value *l, const char *file,int line) | ||
368 | { | ||
369 | return(dynlock_destroy_callback); | ||
370 | } | ||
371 | |||
372 | void CRYPTO_set_dynlock_create_callback(struct CRYPTO_dynlock_value *(*func) | ||
373 | (const char *file, int line)) | ||
374 | { | ||
375 | dynlock_create_callback=func; | ||
376 | } | ||
377 | |||
378 | static void do_dynlock(int mode, int type, const char *file, int line) | ||
379 | { | ||
380 | if (dynlock_lock_callback != NULL) | ||
381 | { | ||
382 | struct CRYPTO_dynlock_value *pointer | ||
383 | = CRYPTO_get_dynlock_value(type); | ||
384 | |||
385 | OPENSSL_assert(pointer != NULL); | ||
386 | |||
387 | dynlock_lock_callback(mode, pointer, file, line); | ||
388 | |||
389 | CRYPTO_destroy_dynlockid(type); | ||
390 | } | ||
391 | } | ||
392 | |||
393 | void CRYPTO_set_dynlock_lock_callback(void (*func)(int mode, | ||
394 | struct CRYPTO_dynlock_value *l, const char *file, int line)) | ||
395 | { | ||
396 | /* Set callback so CRYPTO_lock() can now handle dynamic locks. | ||
397 | * This is OK because at this point and application shouldn't be using | ||
398 | * OpenSSL from multiple threads because it is setting up the locking | ||
399 | * callbacks. | ||
400 | */ | ||
401 | static int done = 0; | ||
402 | if (!done) | ||
403 | { | ||
404 | int_CRYPTO_set_do_dynlock_callback(do_dynlock); | ||
405 | done = 1; | ||
406 | } | ||
407 | |||
408 | dynlock_lock_callback=func; | ||
409 | } | ||
410 | |||
411 | void CRYPTO_set_dynlock_destroy_callback(void (*func) | ||
412 | (struct CRYPTO_dynlock_value *l, const char *file, int line)) | ||
413 | { | ||
414 | dynlock_destroy_callback=func; | ||
415 | } | ||
416 | |||
417 | const char *CRYPTO_get_lock_name(int type) | ||
418 | { | ||
419 | if (type < 0) | ||
420 | return("dynamic"); | ||
421 | else if (type < CRYPTO_NUM_LOCKS) | ||
422 | return(lock_names[type]); | ||
423 | else if (type-CRYPTO_NUM_LOCKS > sk_num(app_locks)) | ||
424 | return("ERROR"); | ||
425 | else | ||
426 | return(sk_value(app_locks,type-CRYPTO_NUM_LOCKS)); | ||
427 | } | ||
428 | |||
diff --git a/src/lib/libcrypto/ec/Makefile b/src/lib/libcrypto/ec/Makefile index 42f7bb7fc8..b5bbc9faa1 100644 --- a/src/lib/libcrypto/ec/Makefile +++ b/src/lib/libcrypto/ec/Makefile | |||
@@ -38,7 +38,7 @@ top: | |||
38 | all: lib | 38 | all: lib |
39 | 39 | ||
40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) |
41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(ARX) $(LIB) $(LIBOBJ) |
42 | $(RANLIB) $(LIB) || echo Never mind. | 42 | $(RANLIB) $(LIB) || echo Never mind. |
43 | @touch lib | 43 | @touch lib |
44 | 44 | ||
diff --git a/src/lib/libcrypto/err/Makefile b/src/lib/libcrypto/err/Makefile index 23e38409c8..91d1379d41 100644 --- a/src/lib/libcrypto/err/Makefile +++ b/src/lib/libcrypto/err/Makefile | |||
@@ -17,8 +17,8 @@ TEST= | |||
17 | APPS= | 17 | APPS= |
18 | 18 | ||
19 | LIB=$(TOP)/libcrypto.a | 19 | LIB=$(TOP)/libcrypto.a |
20 | LIBSRC=err.c err_all.c err_prn.c | 20 | LIBSRC=err.c err_def.c err_all.c err_prn.c err_str.c err_bio.c |
21 | LIBOBJ=err.o err_all.o err_prn.o | 21 | LIBOBJ=err.o err_def.o err_all.o err_prn.o err_str.o err_bio.o |
22 | 22 | ||
23 | SRC= $(LIBSRC) | 23 | SRC= $(LIBSRC) |
24 | 24 | ||
@@ -33,7 +33,7 @@ top: | |||
33 | all: lib | 33 | all: lib |
34 | 34 | ||
35 | lib: $(LIBOBJ) | 35 | lib: $(LIBOBJ) |
36 | $(AR) $(LIB) $(LIBOBJ) | 36 | $(ARX) $(LIB) $(LIBOBJ) |
37 | $(RANLIB) $(LIB) || echo Never mind. | 37 | $(RANLIB) $(LIB) || echo Never mind. |
38 | @touch lib | 38 | @touch lib |
39 | 39 | ||
@@ -89,17 +89,31 @@ err_all.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h | |||
89 | err_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 89 | err_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
90 | err_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h | 90 | err_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h |
91 | err_all.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 91 | err_all.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
92 | err_all.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 92 | err_all.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
93 | err_all.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h | 93 | err_all.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
94 | err_all.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 94 | err_all.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h |
95 | err_all.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem2.h | 95 | err_all.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
96 | err_all.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 96 | err_all.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs12.h |
97 | err_all.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h | 97 | err_all.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
98 | err_all.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 98 | err_all.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h |
99 | err_all.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 99 | err_all.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
100 | err_all.o: ../../include/openssl/ui.h ../../include/openssl/x509.h | 100 | err_all.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h |
101 | err_all.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 101 | err_all.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
102 | err_all.o: err_all.c | 102 | err_all.o: ../../include/openssl/x509v3.h err_all.c |
103 | err_bio.o: ../../e_os.h ../../include/openssl/bio.h | ||
104 | err_bio.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | ||
105 | err_bio.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
106 | err_bio.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h | ||
107 | err_bio.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
108 | err_bio.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
109 | err_bio.o: ../../include/openssl/symhacks.h ../cryptlib.h err_bio.c | ||
110 | err_def.o: ../../e_os.h ../../include/openssl/bio.h | ||
111 | err_def.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | ||
112 | err_def.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
113 | err_def.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h | ||
114 | err_def.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
115 | err_def.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
116 | err_def.o: ../../include/openssl/symhacks.h ../cryptlib.h err_def.c | ||
103 | err_prn.o: ../../e_os.h ../../include/openssl/bio.h | 117 | err_prn.o: ../../e_os.h ../../include/openssl/bio.h |
104 | err_prn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 118 | err_prn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
105 | err_prn.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | 119 | err_prn.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
@@ -107,3 +121,10 @@ err_prn.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h | |||
107 | err_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 121 | err_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
108 | err_prn.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | 122 | err_prn.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h |
109 | err_prn.o: ../../include/openssl/symhacks.h ../cryptlib.h err_prn.c | 123 | err_prn.o: ../../include/openssl/symhacks.h ../cryptlib.h err_prn.c |
124 | err_str.o: ../../e_os.h ../../include/openssl/bio.h | ||
125 | err_str.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | ||
126 | err_str.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
127 | err_str.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h | ||
128 | err_str.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
129 | err_str.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
130 | err_str.o: ../../include/openssl/symhacks.h ../cryptlib.h err_str.c | ||
diff --git a/src/lib/libcrypto/err/err_bio.c b/src/lib/libcrypto/err/err_bio.c new file mode 100644 index 0000000000..a42f804840 --- /dev/null +++ b/src/lib/libcrypto/err/err_bio.c | |||
@@ -0,0 +1,75 @@ | |||
1 | /* crypto/err/err_prn.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/lhash.h> | ||
62 | #include <openssl/crypto.h> | ||
63 | #include <openssl/buffer.h> | ||
64 | #include <openssl/err.h> | ||
65 | |||
66 | static int print_bio(const char *str, size_t len, void *bp) | ||
67 | { | ||
68 | return BIO_write((BIO *)bp, str, len); | ||
69 | } | ||
70 | void ERR_print_errors(BIO *bp) | ||
71 | { | ||
72 | ERR_print_errors_cb(print_bio, bp); | ||
73 | } | ||
74 | |||
75 | |||
diff --git a/src/lib/libcrypto/err/err_def.c b/src/lib/libcrypto/err/err_def.c new file mode 100644 index 0000000000..7ed3d84955 --- /dev/null +++ b/src/lib/libcrypto/err/err_def.c | |||
@@ -0,0 +1,665 @@ | |||
1 | /* crypto/err/err_def.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
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 | */ | ||
111 | |||
112 | #include <stdio.h> | ||
113 | #include <stdarg.h> | ||
114 | #include <string.h> | ||
115 | #include "cryptlib.h" | ||
116 | #include <openssl/lhash.h> | ||
117 | #include <openssl/crypto.h> | ||
118 | #include <openssl/buffer.h> | ||
119 | #include <openssl/bio.h> | ||
120 | #include <openssl/err.h> | ||
121 | |||
122 | #define err_clear_data(p,i) \ | ||
123 | do { \ | ||
124 | if (((p)->err_data[i] != NULL) && \ | ||
125 | (p)->err_data_flags[i] & ERR_TXT_MALLOCED) \ | ||
126 | { \ | ||
127 | OPENSSL_free((p)->err_data[i]); \ | ||
128 | (p)->err_data[i]=NULL; \ | ||
129 | } \ | ||
130 | (p)->err_data_flags[i]=0; \ | ||
131 | } while(0) | ||
132 | |||
133 | #define err_clear(p,i) \ | ||
134 | do { \ | ||
135 | (p)->err_flags[i]=0; \ | ||
136 | (p)->err_buffer[i]=0; \ | ||
137 | err_clear_data(p,i); \ | ||
138 | (p)->err_file[i]=NULL; \ | ||
139 | (p)->err_line[i]= -1; \ | ||
140 | } while(0) | ||
141 | |||
142 | static void err_load_strings(int lib, ERR_STRING_DATA *str); | ||
143 | |||
144 | static void ERR_STATE_free(ERR_STATE *s); | ||
145 | |||
146 | /* Define the predeclared (but externally opaque) "ERR_FNS" type */ | ||
147 | struct st_ERR_FNS | ||
148 | { | ||
149 | /* Works on the "error_hash" string table */ | ||
150 | LHASH *(*cb_err_get)(int create); | ||
151 | void (*cb_err_del)(void); | ||
152 | ERR_STRING_DATA *(*cb_err_get_item)(const ERR_STRING_DATA *); | ||
153 | ERR_STRING_DATA *(*cb_err_set_item)(ERR_STRING_DATA *); | ||
154 | ERR_STRING_DATA *(*cb_err_del_item)(ERR_STRING_DATA *); | ||
155 | /* Works on the "thread_hash" error-state table */ | ||
156 | LHASH *(*cb_thread_get)(int create); | ||
157 | void (*cb_thread_release)(LHASH **hash); | ||
158 | ERR_STATE *(*cb_thread_get_item)(const ERR_STATE *); | ||
159 | ERR_STATE *(*cb_thread_set_item)(ERR_STATE *); | ||
160 | void (*cb_thread_del_item)(const ERR_STATE *); | ||
161 | /* Returns the next available error "library" numbers */ | ||
162 | int (*cb_get_next_lib)(void); | ||
163 | }; | ||
164 | |||
165 | /* Predeclarations of the "err_defaults" functions */ | ||
166 | static LHASH *int_err_get(int create); | ||
167 | static void int_err_del(void); | ||
168 | static ERR_STRING_DATA *int_err_get_item(const ERR_STRING_DATA *); | ||
169 | static ERR_STRING_DATA *int_err_set_item(ERR_STRING_DATA *); | ||
170 | static ERR_STRING_DATA *int_err_del_item(ERR_STRING_DATA *); | ||
171 | static LHASH *int_thread_get(int create); | ||
172 | static void int_thread_release(LHASH **hash); | ||
173 | static ERR_STATE *int_thread_get_item(const ERR_STATE *); | ||
174 | static ERR_STATE *int_thread_set_item(ERR_STATE *); | ||
175 | static void int_thread_del_item(const ERR_STATE *); | ||
176 | static int int_err_get_next_lib(void); | ||
177 | /* The static ERR_FNS table using these defaults functions */ | ||
178 | static const ERR_FNS err_defaults = | ||
179 | { | ||
180 | int_err_get, | ||
181 | int_err_del, | ||
182 | int_err_get_item, | ||
183 | int_err_set_item, | ||
184 | int_err_del_item, | ||
185 | int_thread_get, | ||
186 | int_thread_release, | ||
187 | int_thread_get_item, | ||
188 | int_thread_set_item, | ||
189 | int_thread_del_item, | ||
190 | int_err_get_next_lib | ||
191 | }; | ||
192 | |||
193 | /* The replacable table of ERR_FNS functions we use at run-time */ | ||
194 | static const ERR_FNS *err_fns = NULL; | ||
195 | |||
196 | /* Eg. rather than using "err_get()", use "ERRFN(err_get)()". */ | ||
197 | #define ERRFN(a) err_fns->cb_##a | ||
198 | |||
199 | /* The internal state used by "err_defaults" - as such, the setting, reading, | ||
200 | * creating, and deleting of this data should only be permitted via the | ||
201 | * "err_defaults" functions. This way, a linked module can completely defer all | ||
202 | * ERR state operation (together with requisite locking) to the implementations | ||
203 | * and state in the loading application. */ | ||
204 | static LHASH *int_error_hash = NULL; | ||
205 | static LHASH *int_thread_hash = NULL; | ||
206 | static int int_thread_hash_references = 0; | ||
207 | static int int_err_library_number= ERR_LIB_USER; | ||
208 | |||
209 | /* Internal function that checks whether "err_fns" is set and if not, sets it to | ||
210 | * the defaults. */ | ||
211 | static void err_fns_check(void) | ||
212 | { | ||
213 | if (err_fns) return; | ||
214 | |||
215 | CRYPTO_w_lock(CRYPTO_LOCK_ERR); | ||
216 | if (!err_fns) | ||
217 | err_fns = &err_defaults; | ||
218 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
219 | } | ||
220 | |||
221 | /* API functions to get or set the underlying ERR functions. */ | ||
222 | |||
223 | const ERR_FNS *ERR_get_implementation(void) | ||
224 | { | ||
225 | err_fns_check(); | ||
226 | return err_fns; | ||
227 | } | ||
228 | |||
229 | int ERR_set_implementation(const ERR_FNS *fns) | ||
230 | { | ||
231 | int ret = 0; | ||
232 | |||
233 | CRYPTO_w_lock(CRYPTO_LOCK_ERR); | ||
234 | /* It's too late if 'err_fns' is non-NULL. BTW: not much point setting | ||
235 | * an error is there?! */ | ||
236 | if (!err_fns) | ||
237 | { | ||
238 | err_fns = fns; | ||
239 | ret = 1; | ||
240 | } | ||
241 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
242 | return ret; | ||
243 | } | ||
244 | |||
245 | /* These are the callbacks provided to "lh_new()" when creating the LHASH tables | ||
246 | * internal to the "err_defaults" implementation. */ | ||
247 | |||
248 | /* static unsigned long err_hash(ERR_STRING_DATA *a); */ | ||
249 | static unsigned long err_hash(const void *a_void); | ||
250 | /* static int err_cmp(ERR_STRING_DATA *a, ERR_STRING_DATA *b); */ | ||
251 | static int err_cmp(const void *a_void, const void *b_void); | ||
252 | /* static unsigned long pid_hash(ERR_STATE *pid); */ | ||
253 | static unsigned long pid_hash(const void *pid_void); | ||
254 | /* static int pid_cmp(ERR_STATE *a,ERR_STATE *pid); */ | ||
255 | static int pid_cmp(const void *a_void,const void *pid_void); | ||
256 | |||
257 | /* The internal functions used in the "err_defaults" implementation */ | ||
258 | |||
259 | static LHASH *int_err_get(int create) | ||
260 | { | ||
261 | LHASH *ret = NULL; | ||
262 | |||
263 | CRYPTO_w_lock(CRYPTO_LOCK_ERR); | ||
264 | if (!int_error_hash && create) | ||
265 | { | ||
266 | CRYPTO_push_info("int_err_get (err.c)"); | ||
267 | int_error_hash = lh_new(err_hash, err_cmp); | ||
268 | CRYPTO_pop_info(); | ||
269 | } | ||
270 | if (int_error_hash) | ||
271 | ret = int_error_hash; | ||
272 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
273 | |||
274 | return ret; | ||
275 | } | ||
276 | |||
277 | static void int_err_del(void) | ||
278 | { | ||
279 | CRYPTO_w_lock(CRYPTO_LOCK_ERR); | ||
280 | if (int_error_hash) | ||
281 | { | ||
282 | lh_free(int_error_hash); | ||
283 | int_error_hash = NULL; | ||
284 | } | ||
285 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
286 | } | ||
287 | |||
288 | static ERR_STRING_DATA *int_err_get_item(const ERR_STRING_DATA *d) | ||
289 | { | ||
290 | ERR_STRING_DATA *p; | ||
291 | LHASH *hash; | ||
292 | |||
293 | err_fns_check(); | ||
294 | hash = ERRFN(err_get)(0); | ||
295 | if (!hash) | ||
296 | return NULL; | ||
297 | |||
298 | CRYPTO_r_lock(CRYPTO_LOCK_ERR); | ||
299 | p = (ERR_STRING_DATA *)lh_retrieve(hash, d); | ||
300 | CRYPTO_r_unlock(CRYPTO_LOCK_ERR); | ||
301 | |||
302 | return p; | ||
303 | } | ||
304 | |||
305 | static ERR_STRING_DATA *int_err_set_item(ERR_STRING_DATA *d) | ||
306 | { | ||
307 | ERR_STRING_DATA *p; | ||
308 | LHASH *hash; | ||
309 | |||
310 | err_fns_check(); | ||
311 | hash = ERRFN(err_get)(1); | ||
312 | if (!hash) | ||
313 | return NULL; | ||
314 | |||
315 | CRYPTO_w_lock(CRYPTO_LOCK_ERR); | ||
316 | p = (ERR_STRING_DATA *)lh_insert(hash, d); | ||
317 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
318 | |||
319 | return p; | ||
320 | } | ||
321 | |||
322 | static ERR_STRING_DATA *int_err_del_item(ERR_STRING_DATA *d) | ||
323 | { | ||
324 | ERR_STRING_DATA *p; | ||
325 | LHASH *hash; | ||
326 | |||
327 | err_fns_check(); | ||
328 | hash = ERRFN(err_get)(0); | ||
329 | if (!hash) | ||
330 | return NULL; | ||
331 | |||
332 | CRYPTO_w_lock(CRYPTO_LOCK_ERR); | ||
333 | p = (ERR_STRING_DATA *)lh_delete(hash, d); | ||
334 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
335 | |||
336 | return p; | ||
337 | } | ||
338 | |||
339 | static LHASH *int_thread_get(int create) | ||
340 | { | ||
341 | LHASH *ret = NULL; | ||
342 | |||
343 | CRYPTO_w_lock(CRYPTO_LOCK_ERR); | ||
344 | if (!int_thread_hash && create) | ||
345 | { | ||
346 | CRYPTO_push_info("int_thread_get (err.c)"); | ||
347 | int_thread_hash = lh_new(pid_hash, pid_cmp); | ||
348 | CRYPTO_pop_info(); | ||
349 | } | ||
350 | if (int_thread_hash) | ||
351 | { | ||
352 | int_thread_hash_references++; | ||
353 | ret = int_thread_hash; | ||
354 | } | ||
355 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
356 | return ret; | ||
357 | } | ||
358 | |||
359 | static void int_thread_release(LHASH **hash) | ||
360 | { | ||
361 | int i; | ||
362 | |||
363 | if (hash == NULL || *hash == NULL) | ||
364 | return; | ||
365 | |||
366 | i = CRYPTO_add(&int_thread_hash_references, -1, CRYPTO_LOCK_ERR); | ||
367 | |||
368 | #ifdef REF_PRINT | ||
369 | fprintf(stderr,"%4d:%s\n",int_thread_hash_references,"ERR"); | ||
370 | #endif | ||
371 | if (i > 0) return; | ||
372 | #ifdef REF_CHECK | ||
373 | if (i < 0) | ||
374 | { | ||
375 | fprintf(stderr,"int_thread_release, bad reference count\n"); | ||
376 | abort(); /* ok */ | ||
377 | } | ||
378 | #endif | ||
379 | *hash = NULL; | ||
380 | } | ||
381 | |||
382 | static ERR_STATE *int_thread_get_item(const ERR_STATE *d) | ||
383 | { | ||
384 | ERR_STATE *p; | ||
385 | LHASH *hash; | ||
386 | |||
387 | err_fns_check(); | ||
388 | hash = ERRFN(thread_get)(0); | ||
389 | if (!hash) | ||
390 | return NULL; | ||
391 | |||
392 | CRYPTO_r_lock(CRYPTO_LOCK_ERR); | ||
393 | p = (ERR_STATE *)lh_retrieve(hash, d); | ||
394 | CRYPTO_r_unlock(CRYPTO_LOCK_ERR); | ||
395 | |||
396 | ERRFN(thread_release)(&hash); | ||
397 | return p; | ||
398 | } | ||
399 | |||
400 | static ERR_STATE *int_thread_set_item(ERR_STATE *d) | ||
401 | { | ||
402 | ERR_STATE *p; | ||
403 | LHASH *hash; | ||
404 | |||
405 | err_fns_check(); | ||
406 | hash = ERRFN(thread_get)(1); | ||
407 | if (!hash) | ||
408 | return NULL; | ||
409 | |||
410 | CRYPTO_w_lock(CRYPTO_LOCK_ERR); | ||
411 | p = (ERR_STATE *)lh_insert(hash, d); | ||
412 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
413 | |||
414 | ERRFN(thread_release)(&hash); | ||
415 | return p; | ||
416 | } | ||
417 | |||
418 | static void int_thread_del_item(const ERR_STATE *d) | ||
419 | { | ||
420 | ERR_STATE *p; | ||
421 | LHASH *hash; | ||
422 | |||
423 | err_fns_check(); | ||
424 | hash = ERRFN(thread_get)(0); | ||
425 | if (!hash) | ||
426 | return; | ||
427 | |||
428 | CRYPTO_w_lock(CRYPTO_LOCK_ERR); | ||
429 | p = (ERR_STATE *)lh_delete(hash, d); | ||
430 | /* make sure we don't leak memory */ | ||
431 | if (int_thread_hash_references == 1 | ||
432 | && int_thread_hash && (lh_num_items(int_thread_hash) == 0)) | ||
433 | { | ||
434 | lh_free(int_thread_hash); | ||
435 | int_thread_hash = NULL; | ||
436 | } | ||
437 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
438 | |||
439 | ERRFN(thread_release)(&hash); | ||
440 | if (p) | ||
441 | ERR_STATE_free(p); | ||
442 | } | ||
443 | |||
444 | static int int_err_get_next_lib(void) | ||
445 | { | ||
446 | int ret; | ||
447 | |||
448 | CRYPTO_w_lock(CRYPTO_LOCK_ERR); | ||
449 | ret = int_err_library_number++; | ||
450 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
451 | |||
452 | return ret; | ||
453 | } | ||
454 | |||
455 | static void ERR_STATE_free(ERR_STATE *s) | ||
456 | { | ||
457 | int i; | ||
458 | |||
459 | if (s == NULL) | ||
460 | return; | ||
461 | |||
462 | for (i=0; i<ERR_NUM_ERRORS; i++) | ||
463 | { | ||
464 | err_clear_data(s,i); | ||
465 | } | ||
466 | OPENSSL_free(s); | ||
467 | } | ||
468 | |||
469 | static void err_load_strings(int lib, ERR_STRING_DATA *str) | ||
470 | { | ||
471 | while (str->error) | ||
472 | { | ||
473 | if (lib) | ||
474 | str->error|=ERR_PACK(lib,0,0); | ||
475 | ERRFN(err_set_item)(str); | ||
476 | str++; | ||
477 | } | ||
478 | } | ||
479 | |||
480 | void ERR_load_strings(int lib, ERR_STRING_DATA *str) | ||
481 | { | ||
482 | err_fns_check(); | ||
483 | err_load_strings(lib, str); | ||
484 | } | ||
485 | |||
486 | void ERR_unload_strings(int lib, ERR_STRING_DATA *str) | ||
487 | { | ||
488 | while (str->error) | ||
489 | { | ||
490 | if (lib) | ||
491 | str->error|=ERR_PACK(lib,0,0); | ||
492 | ERRFN(err_del_item)(str); | ||
493 | str++; | ||
494 | } | ||
495 | } | ||
496 | |||
497 | void ERR_free_strings(void) | ||
498 | { | ||
499 | err_fns_check(); | ||
500 | ERRFN(err_del)(); | ||
501 | } | ||
502 | |||
503 | LHASH *ERR_get_string_table(void) | ||
504 | { | ||
505 | err_fns_check(); | ||
506 | return ERRFN(err_get)(0); | ||
507 | } | ||
508 | |||
509 | LHASH *ERR_get_err_state_table(void) | ||
510 | { | ||
511 | err_fns_check(); | ||
512 | return ERRFN(thread_get)(0); | ||
513 | } | ||
514 | |||
515 | void ERR_release_err_state_table(LHASH **hash) | ||
516 | { | ||
517 | err_fns_check(); | ||
518 | ERRFN(thread_release)(hash); | ||
519 | } | ||
520 | |||
521 | const char *ERR_lib_error_string(unsigned long e) | ||
522 | { | ||
523 | ERR_STRING_DATA d,*p; | ||
524 | unsigned long l; | ||
525 | |||
526 | err_fns_check(); | ||
527 | l=ERR_GET_LIB(e); | ||
528 | d.error=ERR_PACK(l,0,0); | ||
529 | p=ERRFN(err_get_item)(&d); | ||
530 | return((p == NULL)?NULL:p->string); | ||
531 | } | ||
532 | |||
533 | const char *ERR_func_error_string(unsigned long e) | ||
534 | { | ||
535 | ERR_STRING_DATA d,*p; | ||
536 | unsigned long l,f; | ||
537 | |||
538 | err_fns_check(); | ||
539 | l=ERR_GET_LIB(e); | ||
540 | f=ERR_GET_FUNC(e); | ||
541 | d.error=ERR_PACK(l,f,0); | ||
542 | p=ERRFN(err_get_item)(&d); | ||
543 | return((p == NULL)?NULL:p->string); | ||
544 | } | ||
545 | |||
546 | const char *ERR_reason_error_string(unsigned long e) | ||
547 | { | ||
548 | ERR_STRING_DATA d,*p=NULL; | ||
549 | unsigned long l,r; | ||
550 | |||
551 | err_fns_check(); | ||
552 | l=ERR_GET_LIB(e); | ||
553 | r=ERR_GET_REASON(e); | ||
554 | d.error=ERR_PACK(l,0,r); | ||
555 | p=ERRFN(err_get_item)(&d); | ||
556 | if (!p) | ||
557 | { | ||
558 | d.error=ERR_PACK(0,0,r); | ||
559 | p=ERRFN(err_get_item)(&d); | ||
560 | } | ||
561 | return((p == NULL)?NULL:p->string); | ||
562 | } | ||
563 | |||
564 | /* static unsigned long err_hash(ERR_STRING_DATA *a) */ | ||
565 | static unsigned long err_hash(const void *a_void) | ||
566 | { | ||
567 | unsigned long ret,l; | ||
568 | |||
569 | l=((const ERR_STRING_DATA *)a_void)->error; | ||
570 | ret=l^ERR_GET_LIB(l)^ERR_GET_FUNC(l); | ||
571 | return(ret^ret%19*13); | ||
572 | } | ||
573 | |||
574 | /* static int err_cmp(ERR_STRING_DATA *a, ERR_STRING_DATA *b) */ | ||
575 | static int err_cmp(const void *a_void, const void *b_void) | ||
576 | { | ||
577 | return((int)(((const ERR_STRING_DATA *)a_void)->error - | ||
578 | ((const ERR_STRING_DATA *)b_void)->error)); | ||
579 | } | ||
580 | |||
581 | /* static unsigned long pid_hash(ERR_STATE *a) */ | ||
582 | static unsigned long pid_hash(const void *a_void) | ||
583 | { | ||
584 | return(((const ERR_STATE *)a_void)->pid*13); | ||
585 | } | ||
586 | |||
587 | /* static int pid_cmp(ERR_STATE *a, ERR_STATE *b) */ | ||
588 | static int pid_cmp(const void *a_void, const void *b_void) | ||
589 | { | ||
590 | return((int)((long)((const ERR_STATE *)a_void)->pid - | ||
591 | (long)((const ERR_STATE *)b_void)->pid)); | ||
592 | } | ||
593 | #ifdef OPENSSL_FIPS | ||
594 | static void int_err_remove_state(unsigned long pid) | ||
595 | #else | ||
596 | void ERR_remove_state(unsigned long pid) | ||
597 | #endif | ||
598 | { | ||
599 | ERR_STATE tmp; | ||
600 | |||
601 | err_fns_check(); | ||
602 | if (pid == 0) | ||
603 | pid=(unsigned long)CRYPTO_thread_id(); | ||
604 | tmp.pid=pid; | ||
605 | /* thread_del_item automatically destroys the LHASH if the number of | ||
606 | * items reaches zero. */ | ||
607 | ERRFN(thread_del_item)(&tmp); | ||
608 | } | ||
609 | |||
610 | #ifdef OPENSSL_FIPS | ||
611 | static ERR_STATE *int_err_get_state(void) | ||
612 | #else | ||
613 | ERR_STATE *ERR_get_state(void) | ||
614 | #endif | ||
615 | { | ||
616 | static ERR_STATE fallback; | ||
617 | ERR_STATE *ret,tmp,*tmpp=NULL; | ||
618 | int i; | ||
619 | unsigned long pid; | ||
620 | |||
621 | err_fns_check(); | ||
622 | pid=(unsigned long)CRYPTO_thread_id(); | ||
623 | tmp.pid=pid; | ||
624 | ret=ERRFN(thread_get_item)(&tmp); | ||
625 | |||
626 | /* ret == the error state, if NULL, make a new one */ | ||
627 | if (ret == NULL) | ||
628 | { | ||
629 | ret=(ERR_STATE *)OPENSSL_malloc(sizeof(ERR_STATE)); | ||
630 | if (ret == NULL) return(&fallback); | ||
631 | ret->pid=pid; | ||
632 | ret->top=0; | ||
633 | ret->bottom=0; | ||
634 | for (i=0; i<ERR_NUM_ERRORS; i++) | ||
635 | { | ||
636 | ret->err_data[i]=NULL; | ||
637 | ret->err_data_flags[i]=0; | ||
638 | } | ||
639 | tmpp = ERRFN(thread_set_item)(ret); | ||
640 | /* To check if insertion failed, do a get. */ | ||
641 | if (ERRFN(thread_get_item)(ret) != ret) | ||
642 | { | ||
643 | ERR_STATE_free(ret); /* could not insert it */ | ||
644 | return(&fallback); | ||
645 | } | ||
646 | /* If a race occured in this function and we came second, tmpp | ||
647 | * is the first one that we just replaced. */ | ||
648 | if (tmpp) | ||
649 | ERR_STATE_free(tmpp); | ||
650 | } | ||
651 | return ret; | ||
652 | } | ||
653 | |||
654 | #ifdef OPENSSL_FIPS | ||
655 | void int_ERR_lib_init(void) | ||
656 | { | ||
657 | int_ERR_set_state_func(int_err_get_state, int_err_remove_state); | ||
658 | } | ||
659 | #endif | ||
660 | |||
661 | int ERR_get_next_error_library(void) | ||
662 | { | ||
663 | err_fns_check(); | ||
664 | return ERRFN(get_next_lib)(); | ||
665 | } | ||
diff --git a/src/lib/libcrypto/err/err_str.c b/src/lib/libcrypto/err/err_str.c new file mode 100644 index 0000000000..d39040888d --- /dev/null +++ b/src/lib/libcrypto/err/err_str.c | |||
@@ -0,0 +1,295 @@ | |||
1 | /* crypto/err/err_str.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
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 | */ | ||
111 | |||
112 | #include <stdio.h> | ||
113 | #include <stdarg.h> | ||
114 | #include <string.h> | ||
115 | #include "cryptlib.h" | ||
116 | #include <openssl/lhash.h> | ||
117 | #include <openssl/crypto.h> | ||
118 | #include <openssl/buffer.h> | ||
119 | #include <openssl/bio.h> | ||
120 | #include <openssl/err.h> | ||
121 | |||
122 | #ifndef OPENSSL_NO_ERR | ||
123 | static ERR_STRING_DATA ERR_str_libraries[]= | ||
124 | { | ||
125 | {ERR_PACK(ERR_LIB_NONE,0,0) ,"unknown library"}, | ||
126 | {ERR_PACK(ERR_LIB_SYS,0,0) ,"system library"}, | ||
127 | {ERR_PACK(ERR_LIB_BN,0,0) ,"bignum routines"}, | ||
128 | {ERR_PACK(ERR_LIB_RSA,0,0) ,"rsa routines"}, | ||
129 | {ERR_PACK(ERR_LIB_DH,0,0) ,"Diffie-Hellman routines"}, | ||
130 | {ERR_PACK(ERR_LIB_EVP,0,0) ,"digital envelope routines"}, | ||
131 | {ERR_PACK(ERR_LIB_BUF,0,0) ,"memory buffer routines"}, | ||
132 | {ERR_PACK(ERR_LIB_OBJ,0,0) ,"object identifier routines"}, | ||
133 | {ERR_PACK(ERR_LIB_PEM,0,0) ,"PEM routines"}, | ||
134 | {ERR_PACK(ERR_LIB_DSA,0,0) ,"dsa routines"}, | ||
135 | {ERR_PACK(ERR_LIB_X509,0,0) ,"x509 certificate routines"}, | ||
136 | {ERR_PACK(ERR_LIB_ASN1,0,0) ,"asn1 encoding routines"}, | ||
137 | {ERR_PACK(ERR_LIB_CONF,0,0) ,"configuration file routines"}, | ||
138 | {ERR_PACK(ERR_LIB_CRYPTO,0,0) ,"common libcrypto routines"}, | ||
139 | {ERR_PACK(ERR_LIB_EC,0,0) ,"elliptic curve routines"}, | ||
140 | {ERR_PACK(ERR_LIB_SSL,0,0) ,"SSL routines"}, | ||
141 | {ERR_PACK(ERR_LIB_BIO,0,0) ,"BIO routines"}, | ||
142 | {ERR_PACK(ERR_LIB_PKCS7,0,0) ,"PKCS7 routines"}, | ||
143 | {ERR_PACK(ERR_LIB_X509V3,0,0) ,"X509 V3 routines"}, | ||
144 | {ERR_PACK(ERR_LIB_PKCS12,0,0) ,"PKCS12 routines"}, | ||
145 | {ERR_PACK(ERR_LIB_RAND,0,0) ,"random number generator"}, | ||
146 | {ERR_PACK(ERR_LIB_DSO,0,0) ,"DSO support routines"}, | ||
147 | {ERR_PACK(ERR_LIB_ENGINE,0,0) ,"engine routines"}, | ||
148 | {ERR_PACK(ERR_LIB_OCSP,0,0) ,"OCSP routines"}, | ||
149 | {ERR_PACK(ERR_LIB_FIPS,0,0) ,"FIPS routines"}, | ||
150 | {ERR_PACK(ERR_LIB_CMS,0,0) ,"CMS routines"}, | ||
151 | {ERR_PACK(ERR_LIB_JPAKE,0,0) ,"JPAKE routines"}, | ||
152 | {0,NULL}, | ||
153 | }; | ||
154 | |||
155 | static ERR_STRING_DATA ERR_str_functs[]= | ||
156 | { | ||
157 | {ERR_PACK(0,SYS_F_FOPEN,0), "fopen"}, | ||
158 | {ERR_PACK(0,SYS_F_CONNECT,0), "connect"}, | ||
159 | {ERR_PACK(0,SYS_F_GETSERVBYNAME,0), "getservbyname"}, | ||
160 | {ERR_PACK(0,SYS_F_SOCKET,0), "socket"}, | ||
161 | {ERR_PACK(0,SYS_F_IOCTLSOCKET,0), "ioctlsocket"}, | ||
162 | {ERR_PACK(0,SYS_F_BIND,0), "bind"}, | ||
163 | {ERR_PACK(0,SYS_F_LISTEN,0), "listen"}, | ||
164 | {ERR_PACK(0,SYS_F_ACCEPT,0), "accept"}, | ||
165 | #ifdef OPENSSL_SYS_WINDOWS | ||
166 | {ERR_PACK(0,SYS_F_WSASTARTUP,0), "WSAstartup"}, | ||
167 | #endif | ||
168 | {ERR_PACK(0,SYS_F_OPENDIR,0), "opendir"}, | ||
169 | {ERR_PACK(0,SYS_F_FREAD,0), "fread"}, | ||
170 | {0,NULL}, | ||
171 | }; | ||
172 | |||
173 | static ERR_STRING_DATA ERR_str_reasons[]= | ||
174 | { | ||
175 | {ERR_R_SYS_LIB ,"system lib"}, | ||
176 | {ERR_R_BN_LIB ,"BN lib"}, | ||
177 | {ERR_R_RSA_LIB ,"RSA lib"}, | ||
178 | {ERR_R_DH_LIB ,"DH lib"}, | ||
179 | {ERR_R_EVP_LIB ,"EVP lib"}, | ||
180 | {ERR_R_BUF_LIB ,"BUF lib"}, | ||
181 | {ERR_R_OBJ_LIB ,"OBJ lib"}, | ||
182 | {ERR_R_PEM_LIB ,"PEM lib"}, | ||
183 | {ERR_R_DSA_LIB ,"DSA lib"}, | ||
184 | {ERR_R_X509_LIB ,"X509 lib"}, | ||
185 | {ERR_R_ASN1_LIB ,"ASN1 lib"}, | ||
186 | {ERR_R_CONF_LIB ,"CONF lib"}, | ||
187 | {ERR_R_CRYPTO_LIB ,"CRYPTO lib"}, | ||
188 | {ERR_R_EC_LIB ,"EC lib"}, | ||
189 | {ERR_R_SSL_LIB ,"SSL lib"}, | ||
190 | {ERR_R_BIO_LIB ,"BIO lib"}, | ||
191 | {ERR_R_PKCS7_LIB ,"PKCS7 lib"}, | ||
192 | {ERR_R_X509V3_LIB ,"X509V3 lib"}, | ||
193 | {ERR_R_PKCS12_LIB ,"PKCS12 lib"}, | ||
194 | {ERR_R_RAND_LIB ,"RAND lib"}, | ||
195 | {ERR_R_DSO_LIB ,"DSO lib"}, | ||
196 | {ERR_R_ENGINE_LIB ,"ENGINE lib"}, | ||
197 | {ERR_R_OCSP_LIB ,"OCSP lib"}, | ||
198 | |||
199 | {ERR_R_NESTED_ASN1_ERROR ,"nested asn1 error"}, | ||
200 | {ERR_R_BAD_ASN1_OBJECT_HEADER ,"bad asn1 object header"}, | ||
201 | {ERR_R_BAD_GET_ASN1_OBJECT_CALL ,"bad get asn1 object call"}, | ||
202 | {ERR_R_EXPECTING_AN_ASN1_SEQUENCE ,"expecting an asn1 sequence"}, | ||
203 | {ERR_R_ASN1_LENGTH_MISMATCH ,"asn1 length mismatch"}, | ||
204 | {ERR_R_MISSING_ASN1_EOS ,"missing asn1 eos"}, | ||
205 | |||
206 | {ERR_R_FATAL ,"fatal"}, | ||
207 | {ERR_R_MALLOC_FAILURE ,"malloc failure"}, | ||
208 | {ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED ,"called a function you should not call"}, | ||
209 | {ERR_R_PASSED_NULL_PARAMETER ,"passed a null parameter"}, | ||
210 | {ERR_R_INTERNAL_ERROR ,"internal error"}, | ||
211 | {ERR_R_DISABLED ,"called a function that was disabled at compile-time"}, | ||
212 | |||
213 | {0,NULL}, | ||
214 | }; | ||
215 | #endif | ||
216 | |||
217 | #ifndef OPENSSL_NO_ERR | ||
218 | #define NUM_SYS_STR_REASONS 127 | ||
219 | #define LEN_SYS_STR_REASON 32 | ||
220 | |||
221 | static ERR_STRING_DATA SYS_str_reasons[NUM_SYS_STR_REASONS + 1]; | ||
222 | /* SYS_str_reasons is filled with copies of strerror() results at | ||
223 | * initialization. | ||
224 | * 'errno' values up to 127 should cover all usual errors, | ||
225 | * others will be displayed numerically by ERR_error_string. | ||
226 | * It is crucial that we have something for each reason code | ||
227 | * that occurs in ERR_str_reasons, or bogus reason strings | ||
228 | * will be returned for SYSerr, which always gets an errno | ||
229 | * value and never one of those 'standard' reason codes. */ | ||
230 | |||
231 | static void build_SYS_str_reasons(void) | ||
232 | { | ||
233 | /* OPENSSL_malloc cannot be used here, use static storage instead */ | ||
234 | static char strerror_tab[NUM_SYS_STR_REASONS][LEN_SYS_STR_REASON]; | ||
235 | int i; | ||
236 | static int init = 1; | ||
237 | |||
238 | CRYPTO_r_lock(CRYPTO_LOCK_ERR); | ||
239 | if (!init) | ||
240 | { | ||
241 | CRYPTO_r_unlock(CRYPTO_LOCK_ERR); | ||
242 | return; | ||
243 | } | ||
244 | |||
245 | CRYPTO_r_unlock(CRYPTO_LOCK_ERR); | ||
246 | CRYPTO_w_lock(CRYPTO_LOCK_ERR); | ||
247 | if (!init) | ||
248 | { | ||
249 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
250 | return; | ||
251 | } | ||
252 | |||
253 | for (i = 1; i <= NUM_SYS_STR_REASONS; i++) | ||
254 | { | ||
255 | ERR_STRING_DATA *str = &SYS_str_reasons[i - 1]; | ||
256 | |||
257 | str->error = (unsigned long)i; | ||
258 | if (str->string == NULL) | ||
259 | { | ||
260 | char (*dest)[LEN_SYS_STR_REASON] = &(strerror_tab[i - 1]); | ||
261 | char *src = strerror(i); | ||
262 | if (src != NULL) | ||
263 | { | ||
264 | strncpy(*dest, src, sizeof *dest); | ||
265 | (*dest)[sizeof *dest - 1] = '\0'; | ||
266 | str->string = *dest; | ||
267 | } | ||
268 | } | ||
269 | if (str->string == NULL) | ||
270 | str->string = "unknown"; | ||
271 | } | ||
272 | |||
273 | /* Now we still have SYS_str_reasons[NUM_SYS_STR_REASONS] = {0, NULL}, | ||
274 | * as required by ERR_load_strings. */ | ||
275 | |||
276 | init = 0; | ||
277 | |||
278 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
279 | } | ||
280 | #endif | ||
281 | |||
282 | void ERR_load_ERR_strings(void) | ||
283 | { | ||
284 | #ifndef OPENSSL_NO_ERR | ||
285 | if (ERR_func_error_string(ERR_str_functs[0].error) == NULL) | ||
286 | { | ||
287 | ERR_load_strings(0,ERR_str_libraries); | ||
288 | ERR_load_strings(0,ERR_str_reasons); | ||
289 | ERR_load_strings(ERR_LIB_SYS,ERR_str_functs); | ||
290 | build_SYS_str_reasons(); | ||
291 | ERR_load_strings(ERR_LIB_SYS,SYS_str_reasons); | ||
292 | } | ||
293 | #endif | ||
294 | } | ||
295 | |||
diff --git a/src/lib/libcrypto/evp/dig_eng.c b/src/lib/libcrypto/evp/dig_eng.c new file mode 100644 index 0000000000..64cdf9366c --- /dev/null +++ b/src/lib/libcrypto/evp/dig_eng.c | |||
@@ -0,0 +1,180 @@ | |||
1 | /* crypto/evp/digest.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
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 | */ | ||
111 | |||
112 | #include <stdio.h> | ||
113 | #include "cryptlib.h" | ||
114 | #include <openssl/objects.h> | ||
115 | #include <openssl/evp.h> | ||
116 | #ifndef OPENSSL_NO_ENGINE | ||
117 | #include <openssl/engine.h> | ||
118 | #endif | ||
119 | #include "evp_locl.h" | ||
120 | |||
121 | #ifndef OPENSSL_NO_ENGINE | ||
122 | |||
123 | #ifdef OPENSSL_FIPS | ||
124 | |||
125 | static int do_evp_md_engine_full(EVP_MD_CTX *ctx, const EVP_MD **ptype, ENGINE *impl) | ||
126 | { | ||
127 | if (*ptype) | ||
128 | { | ||
129 | /* Ensure an ENGINE left lying around from last time is cleared | ||
130 | * (the previous check attempted to avoid this if the same | ||
131 | * ENGINE and EVP_MD could be used). */ | ||
132 | if(ctx->engine) | ||
133 | ENGINE_finish(ctx->engine); | ||
134 | if(impl) | ||
135 | { | ||
136 | if (!ENGINE_init(impl)) | ||
137 | { | ||
138 | EVPerr(EVP_F_DO_EVP_MD_ENGINE_FULL,EVP_R_INITIALIZATION_ERROR); | ||
139 | return 0; | ||
140 | } | ||
141 | } | ||
142 | else | ||
143 | /* Ask if an ENGINE is reserved for this job */ | ||
144 | impl = ENGINE_get_digest_engine((*ptype)->type); | ||
145 | if(impl) | ||
146 | { | ||
147 | /* There's an ENGINE for this job ... (apparently) */ | ||
148 | const EVP_MD *d = ENGINE_get_digest(impl, (*ptype)->type); | ||
149 | if(!d) | ||
150 | { | ||
151 | /* Same comment from evp_enc.c */ | ||
152 | EVPerr(EVP_F_DO_EVP_MD_ENGINE_FULL,EVP_R_INITIALIZATION_ERROR); | ||
153 | return 0; | ||
154 | } | ||
155 | /* We'll use the ENGINE's private digest definition */ | ||
156 | *ptype = d; | ||
157 | /* Store the ENGINE functional reference so we know | ||
158 | * 'type' came from an ENGINE and we need to release | ||
159 | * it when done. */ | ||
160 | ctx->engine = impl; | ||
161 | } | ||
162 | else | ||
163 | ctx->engine = NULL; | ||
164 | } | ||
165 | else | ||
166 | if(!ctx->digest) | ||
167 | { | ||
168 | EVPerr(EVP_F_DO_EVP_MD_ENGINE_FULL,EVP_R_NO_DIGEST_SET); | ||
169 | return 0; | ||
170 | } | ||
171 | return 1; | ||
172 | } | ||
173 | |||
174 | void int_EVP_MD_init_engine_callbacks(void) | ||
175 | { | ||
176 | int_EVP_MD_set_engine_callbacks( | ||
177 | ENGINE_init, ENGINE_finish, do_evp_md_engine_full); | ||
178 | } | ||
179 | #endif | ||
180 | #endif | ||
diff --git a/src/lib/libcrypto/evp/enc_min.c b/src/lib/libcrypto/evp/enc_min.c new file mode 100644 index 0000000000..3cb4626bef --- /dev/null +++ b/src/lib/libcrypto/evp/enc_min.c | |||
@@ -0,0 +1,390 @@ | |||
1 | /* crypto/evp/enc_min.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/evp.h> | ||
62 | #include <openssl/err.h> | ||
63 | #include <openssl/rand.h> | ||
64 | #ifndef OPENSSL_NO_ENGINE | ||
65 | #include <openssl/engine.h> | ||
66 | #endif | ||
67 | #include "evp_locl.h" | ||
68 | |||
69 | void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *ctx) | ||
70 | { | ||
71 | #ifdef OPENSSL_FIPS | ||
72 | FIPS_selftest_check(); | ||
73 | #endif | ||
74 | memset(ctx,0,sizeof(EVP_CIPHER_CTX)); | ||
75 | /* ctx->cipher=NULL; */ | ||
76 | } | ||
77 | |||
78 | #ifdef OPENSSL_FIPS | ||
79 | |||
80 | /* The purpose of these is to trap programs that attempt to use non FIPS | ||
81 | * algorithms in FIPS mode and ignore the errors. | ||
82 | */ | ||
83 | |||
84 | static int bad_init(EVP_CIPHER_CTX *ctx, const unsigned char *key, | ||
85 | const unsigned char *iv, int enc) | ||
86 | { FIPS_ERROR_IGNORED("Cipher init"); return 0;} | ||
87 | |||
88 | static int bad_do_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | ||
89 | const unsigned char *in, unsigned int inl) | ||
90 | { FIPS_ERROR_IGNORED("Cipher update"); return 0;} | ||
91 | |||
92 | /* NB: no cleanup because it is allowed after failed init */ | ||
93 | |||
94 | static int bad_set_asn1(EVP_CIPHER_CTX *ctx, ASN1_TYPE *typ) | ||
95 | { FIPS_ERROR_IGNORED("Cipher set_asn1"); return 0;} | ||
96 | static int bad_get_asn1(EVP_CIPHER_CTX *ctx, ASN1_TYPE *typ) | ||
97 | { FIPS_ERROR_IGNORED("Cipher get_asn1"); return 0;} | ||
98 | static int bad_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr) | ||
99 | { FIPS_ERROR_IGNORED("Cipher ctrl"); return 0;} | ||
100 | |||
101 | static const EVP_CIPHER bad_cipher = | ||
102 | { | ||
103 | 0, | ||
104 | 0, | ||
105 | 0, | ||
106 | 0, | ||
107 | 0, | ||
108 | bad_init, | ||
109 | bad_do_cipher, | ||
110 | NULL, | ||
111 | 0, | ||
112 | bad_set_asn1, | ||
113 | bad_get_asn1, | ||
114 | bad_ctrl, | ||
115 | NULL | ||
116 | }; | ||
117 | |||
118 | #endif | ||
119 | |||
120 | #ifndef OPENSSL_NO_ENGINE | ||
121 | |||
122 | #ifdef OPENSSL_FIPS | ||
123 | |||
124 | static int do_engine_null(ENGINE *impl) { return 0;} | ||
125 | static int do_evp_enc_engine_null(EVP_CIPHER_CTX *ctx, | ||
126 | const EVP_CIPHER **pciph, ENGINE *impl) | ||
127 | { return 1; } | ||
128 | |||
129 | static int (*do_engine_finish)(ENGINE *impl) | ||
130 | = do_engine_null; | ||
131 | |||
132 | static int (*do_evp_enc_engine) | ||
133 | (EVP_CIPHER_CTX *ctx, const EVP_CIPHER **pciph, ENGINE *impl) | ||
134 | = do_evp_enc_engine_null; | ||
135 | |||
136 | void int_EVP_CIPHER_set_engine_callbacks( | ||
137 | int (*eng_ciph_fin)(ENGINE *impl), | ||
138 | int (*eng_ciph_evp) | ||
139 | (EVP_CIPHER_CTX *ctx, const EVP_CIPHER **pciph, ENGINE *impl)) | ||
140 | { | ||
141 | do_engine_finish = eng_ciph_fin; | ||
142 | do_evp_enc_engine = eng_ciph_evp; | ||
143 | } | ||
144 | |||
145 | #else | ||
146 | |||
147 | #define do_engine_finish ENGINE_finish | ||
148 | |||
149 | static int do_evp_enc_engine(EVP_CIPHER_CTX *ctx, const EVP_CIPHER **pcipher, ENGINE *impl) | ||
150 | { | ||
151 | if(impl) | ||
152 | { | ||
153 | if (!ENGINE_init(impl)) | ||
154 | { | ||
155 | EVPerr(EVP_F_DO_EVP_ENC_ENGINE, EVP_R_INITIALIZATION_ERROR); | ||
156 | return 0; | ||
157 | } | ||
158 | } | ||
159 | else | ||
160 | /* Ask if an ENGINE is reserved for this job */ | ||
161 | impl = ENGINE_get_cipher_engine((*pcipher)->nid); | ||
162 | if(impl) | ||
163 | { | ||
164 | /* There's an ENGINE for this job ... (apparently) */ | ||
165 | const EVP_CIPHER *c = ENGINE_get_cipher(impl, (*pcipher)->nid); | ||
166 | if(!c) | ||
167 | { | ||
168 | /* One positive side-effect of US's export | ||
169 | * control history, is that we should at least | ||
170 | * be able to avoid using US mispellings of | ||
171 | * "initialisation"? */ | ||
172 | EVPerr(EVP_F_DO_EVP_ENC_ENGINE, EVP_R_INITIALIZATION_ERROR); | ||
173 | return 0; | ||
174 | } | ||
175 | /* We'll use the ENGINE's private cipher definition */ | ||
176 | *pcipher = c; | ||
177 | /* Store the ENGINE functional reference so we know | ||
178 | * 'cipher' came from an ENGINE and we need to release | ||
179 | * it when done. */ | ||
180 | ctx->engine = impl; | ||
181 | } | ||
182 | else | ||
183 | ctx->engine = NULL; | ||
184 | return 1; | ||
185 | } | ||
186 | |||
187 | #endif | ||
188 | |||
189 | #endif | ||
190 | |||
191 | int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *impl, | ||
192 | const unsigned char *key, const unsigned char *iv, int enc) | ||
193 | { | ||
194 | if (enc == -1) | ||
195 | enc = ctx->encrypt; | ||
196 | else | ||
197 | { | ||
198 | if (enc) | ||
199 | enc = 1; | ||
200 | ctx->encrypt = enc; | ||
201 | } | ||
202 | #ifdef OPENSSL_NO_FIPS | ||
203 | if(FIPS_selftest_failed()) | ||
204 | { | ||
205 | FIPSerr(FIPS_F_EVP_CIPHERINIT_EX,FIPS_R_FIPS_SELFTEST_FAILED); | ||
206 | ctx->cipher = &bad_cipher; | ||
207 | return 0; | ||
208 | } | ||
209 | #endif | ||
210 | #ifndef OPENSSL_NO_ENGINE | ||
211 | /* Whether it's nice or not, "Inits" can be used on "Final"'d contexts | ||
212 | * so this context may already have an ENGINE! Try to avoid releasing | ||
213 | * the previous handle, re-querying for an ENGINE, and having a | ||
214 | * reinitialisation, when it may all be unecessary. */ | ||
215 | if (ctx->engine && ctx->cipher && (!cipher || | ||
216 | (cipher && (cipher->nid == ctx->cipher->nid)))) | ||
217 | goto skip_to_init; | ||
218 | #endif | ||
219 | if (cipher) | ||
220 | { | ||
221 | /* Ensure a context left lying around from last time is cleared | ||
222 | * (the previous check attempted to avoid this if the same | ||
223 | * ENGINE and EVP_CIPHER could be used). */ | ||
224 | EVP_CIPHER_CTX_cleanup(ctx); | ||
225 | |||
226 | /* Restore encrypt field: it is zeroed by cleanup */ | ||
227 | ctx->encrypt = enc; | ||
228 | #ifndef OPENSSL_NO_ENGINE | ||
229 | if (!do_evp_enc_engine(ctx, &cipher, impl)) | ||
230 | return 0; | ||
231 | #endif | ||
232 | |||
233 | ctx->cipher=cipher; | ||
234 | if (ctx->cipher->ctx_size) | ||
235 | { | ||
236 | ctx->cipher_data=OPENSSL_malloc(ctx->cipher->ctx_size); | ||
237 | if (!ctx->cipher_data) | ||
238 | { | ||
239 | EVPerr(EVP_F_EVP_CIPHERINIT_EX, ERR_R_MALLOC_FAILURE); | ||
240 | return 0; | ||
241 | } | ||
242 | } | ||
243 | else | ||
244 | { | ||
245 | ctx->cipher_data = NULL; | ||
246 | } | ||
247 | ctx->key_len = cipher->key_len; | ||
248 | ctx->flags = 0; | ||
249 | if(ctx->cipher->flags & EVP_CIPH_CTRL_INIT) | ||
250 | { | ||
251 | if(!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_INIT, 0, NULL)) | ||
252 | { | ||
253 | EVPerr(EVP_F_EVP_CIPHERINIT_EX, EVP_R_INITIALIZATION_ERROR); | ||
254 | return 0; | ||
255 | } | ||
256 | } | ||
257 | } | ||
258 | else if(!ctx->cipher) | ||
259 | { | ||
260 | EVPerr(EVP_F_EVP_CIPHERINIT_EX, EVP_R_NO_CIPHER_SET); | ||
261 | return 0; | ||
262 | } | ||
263 | #ifndef OPENSSL_NO_ENGINE | ||
264 | skip_to_init: | ||
265 | #endif | ||
266 | /* we assume block size is a power of 2 in *cryptUpdate */ | ||
267 | OPENSSL_assert(ctx->cipher->block_size == 1 | ||
268 | || ctx->cipher->block_size == 8 | ||
269 | || ctx->cipher->block_size == 16); | ||
270 | |||
271 | if(!(EVP_CIPHER_CTX_flags(ctx) & EVP_CIPH_CUSTOM_IV)) { | ||
272 | switch(EVP_CIPHER_CTX_mode(ctx)) { | ||
273 | |||
274 | case EVP_CIPH_STREAM_CIPHER: | ||
275 | case EVP_CIPH_ECB_MODE: | ||
276 | break; | ||
277 | |||
278 | case EVP_CIPH_CFB_MODE: | ||
279 | case EVP_CIPH_OFB_MODE: | ||
280 | |||
281 | ctx->num = 0; | ||
282 | |||
283 | case EVP_CIPH_CBC_MODE: | ||
284 | |||
285 | OPENSSL_assert(EVP_CIPHER_CTX_iv_length(ctx) <= | ||
286 | (int)sizeof(ctx->iv)); | ||
287 | if(iv) memcpy(ctx->oiv, iv, EVP_CIPHER_CTX_iv_length(ctx)); | ||
288 | memcpy(ctx->iv, ctx->oiv, EVP_CIPHER_CTX_iv_length(ctx)); | ||
289 | break; | ||
290 | |||
291 | default: | ||
292 | return 0; | ||
293 | break; | ||
294 | } | ||
295 | } | ||
296 | |||
297 | #ifdef OPENSSL_FIPS | ||
298 | /* After 'key' is set no further parameters changes are permissible. | ||
299 | * So only check for non FIPS enabling at this point. | ||
300 | */ | ||
301 | if (key && FIPS_mode()) | ||
302 | { | ||
303 | if (!(ctx->cipher->flags & EVP_CIPH_FLAG_FIPS) | ||
304 | & !(ctx->flags & EVP_CIPH_FLAG_NON_FIPS_ALLOW)) | ||
305 | { | ||
306 | EVPerr(EVP_F_EVP_CIPHERINIT_EX, EVP_R_DISABLED_FOR_FIPS); | ||
307 | #if 0 | ||
308 | ERR_add_error_data(2, "cipher=", | ||
309 | EVP_CIPHER_name(ctx->cipher)); | ||
310 | #endif | ||
311 | ctx->cipher = &bad_cipher; | ||
312 | return 0; | ||
313 | } | ||
314 | } | ||
315 | #endif | ||
316 | |||
317 | if(key || (ctx->cipher->flags & EVP_CIPH_ALWAYS_CALL_INIT)) { | ||
318 | if(!ctx->cipher->init(ctx,key,iv,enc)) return 0; | ||
319 | } | ||
320 | ctx->buf_len=0; | ||
321 | ctx->final_used=0; | ||
322 | ctx->block_mask=ctx->cipher->block_size-1; | ||
323 | return 1; | ||
324 | } | ||
325 | |||
326 | int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *c) | ||
327 | { | ||
328 | if (c->cipher != NULL) | ||
329 | { | ||
330 | if(c->cipher->cleanup && !c->cipher->cleanup(c)) | ||
331 | return 0; | ||
332 | /* Cleanse cipher context data */ | ||
333 | if (c->cipher_data) | ||
334 | OPENSSL_cleanse(c->cipher_data, c->cipher->ctx_size); | ||
335 | } | ||
336 | if (c->cipher_data) | ||
337 | OPENSSL_free(c->cipher_data); | ||
338 | #ifndef OPENSSL_NO_ENGINE | ||
339 | if (c->engine) | ||
340 | /* The EVP_CIPHER we used belongs to an ENGINE, release the | ||
341 | * functional reference we held for this reason. */ | ||
342 | do_engine_finish(c->engine); | ||
343 | #endif | ||
344 | memset(c,0,sizeof(EVP_CIPHER_CTX)); | ||
345 | return 1; | ||
346 | } | ||
347 | |||
348 | int EVP_Cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) | ||
349 | { | ||
350 | #ifdef OPENSSL_FIPS | ||
351 | FIPS_selftest_check(); | ||
352 | #endif | ||
353 | return ctx->cipher->do_cipher(ctx,out,in,inl); | ||
354 | } | ||
355 | |||
356 | int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr) | ||
357 | { | ||
358 | int ret; | ||
359 | if(!ctx->cipher) { | ||
360 | EVPerr(EVP_F_EVP_CIPHER_CTX_CTRL, EVP_R_NO_CIPHER_SET); | ||
361 | return 0; | ||
362 | } | ||
363 | |||
364 | if(!ctx->cipher->ctrl) { | ||
365 | EVPerr(EVP_F_EVP_CIPHER_CTX_CTRL, EVP_R_CTRL_NOT_IMPLEMENTED); | ||
366 | return 0; | ||
367 | } | ||
368 | |||
369 | ret = ctx->cipher->ctrl(ctx, type, arg, ptr); | ||
370 | if(ret == -1) { | ||
371 | EVPerr(EVP_F_EVP_CIPHER_CTX_CTRL, EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED); | ||
372 | return 0; | ||
373 | } | ||
374 | return ret; | ||
375 | } | ||
376 | |||
377 | unsigned long EVP_CIPHER_CTX_flags(const EVP_CIPHER_CTX *ctx) | ||
378 | { | ||
379 | return ctx->cipher->flags; | ||
380 | } | ||
381 | |||
382 | int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx) | ||
383 | { | ||
384 | return ctx->cipher->iv_len; | ||
385 | } | ||
386 | |||
387 | int EVP_CIPHER_nid(const EVP_CIPHER *cipher) | ||
388 | { | ||
389 | return cipher->nid; | ||
390 | } | ||
diff --git a/src/lib/libcrypto/evp/evp_cnf.c b/src/lib/libcrypto/evp/evp_cnf.c new file mode 100644 index 0000000000..2e4db30235 --- /dev/null +++ b/src/lib/libcrypto/evp/evp_cnf.c | |||
@@ -0,0 +1,125 @@ | |||
1 | /* evp_cnf.c */ | ||
2 | /* Written by Stephen Henson (steve@openssl.org) for the OpenSSL | ||
3 | * project 2007. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 2007 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include <ctype.h> | ||
61 | #include <openssl/crypto.h> | ||
62 | #include "cryptlib.h" | ||
63 | #include <openssl/conf.h> | ||
64 | #include <openssl/dso.h> | ||
65 | #include <openssl/x509.h> | ||
66 | #include <openssl/x509v3.h> | ||
67 | #ifdef OPENSSL_FIPS | ||
68 | #include <openssl/fips.h> | ||
69 | #endif | ||
70 | |||
71 | |||
72 | /* Algorithm configuration module. */ | ||
73 | |||
74 | static int alg_module_init(CONF_IMODULE *md, const CONF *cnf) | ||
75 | { | ||
76 | int i; | ||
77 | const char *oid_section; | ||
78 | STACK_OF(CONF_VALUE) *sktmp; | ||
79 | CONF_VALUE *oval; | ||
80 | oid_section = CONF_imodule_get_value(md); | ||
81 | if(!(sktmp = NCONF_get_section(cnf, oid_section))) | ||
82 | { | ||
83 | EVPerr(EVP_F_ALG_MODULE_INIT, EVP_R_ERROR_LOADING_SECTION); | ||
84 | return 0; | ||
85 | } | ||
86 | for(i = 0; i < sk_CONF_VALUE_num(sktmp); i++) | ||
87 | { | ||
88 | oval = sk_CONF_VALUE_value(sktmp, i); | ||
89 | if (!strcmp(oval->name, "fips_mode")) | ||
90 | { | ||
91 | int m; | ||
92 | if (!X509V3_get_value_bool(oval, &m)) | ||
93 | { | ||
94 | EVPerr(EVP_F_ALG_MODULE_INIT, EVP_R_INVALID_FIPS_MODE); | ||
95 | return 0; | ||
96 | } | ||
97 | if (m > 0) | ||
98 | { | ||
99 | #ifdef OPENSSL_FIPS | ||
100 | if (!FIPS_mode() && !FIPS_mode_set(1)) | ||
101 | { | ||
102 | EVPerr(EVP_F_ALG_MODULE_INIT, EVP_R_ERROR_SETTING_FIPS_MODE); | ||
103 | return 0; | ||
104 | } | ||
105 | #else | ||
106 | EVPerr(EVP_F_ALG_MODULE_INIT, EVP_R_FIPS_MODE_NOT_SUPPORTED); | ||
107 | return 0; | ||
108 | #endif | ||
109 | } | ||
110 | } | ||
111 | else | ||
112 | { | ||
113 | EVPerr(EVP_F_ALG_MODULE_INIT, EVP_R_UNKNOWN_OPTION); | ||
114 | ERR_add_error_data(4, "name=", oval->name, | ||
115 | ", value=", oval->value); | ||
116 | } | ||
117 | |||
118 | } | ||
119 | return 1; | ||
120 | } | ||
121 | |||
122 | void EVP_add_alg_module(void) | ||
123 | { | ||
124 | CONF_module_add("alg_section", alg_module_init, 0); | ||
125 | } | ||
diff --git a/src/lib/libcrypto/fips_err.c b/src/lib/libcrypto/fips_err.c new file mode 100644 index 0000000000..09f11748f6 --- /dev/null +++ b/src/lib/libcrypto/fips_err.c | |||
@@ -0,0 +1,7 @@ | |||
1 | #include <openssl/opensslconf.h> | ||
2 | |||
3 | #ifdef OPENSSL_FIPS | ||
4 | # include "fips_err.h" | ||
5 | #else | ||
6 | static void *dummy=&dummy; | ||
7 | #endif | ||
diff --git a/src/lib/libcrypto/hmac/Makefile b/src/lib/libcrypto/hmac/Makefile index 01f10c396f..5cfa37d99c 100644 --- a/src/lib/libcrypto/hmac/Makefile +++ b/src/lib/libcrypto/hmac/Makefile | |||
@@ -33,7 +33,7 @@ top: | |||
33 | all: lib | 33 | all: lib |
34 | 34 | ||
35 | lib: $(LIBOBJ) | 35 | lib: $(LIBOBJ) |
36 | $(AR) $(LIB) $(LIBOBJ) | 36 | $(ARX) $(LIB) $(LIBOBJ) |
37 | $(RANLIB) $(LIB) || echo Never mind. | 37 | $(RANLIB) $(LIB) || echo Never mind. |
38 | @touch lib | 38 | @touch lib |
39 | 39 | ||
@@ -77,9 +77,10 @@ clean: | |||
77 | hmac.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 77 | hmac.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
78 | hmac.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 78 | hmac.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
79 | hmac.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | 79 | hmac.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
80 | hmac.o: ../../include/openssl/evp.h ../../include/openssl/hmac.h | 80 | hmac.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
81 | hmac.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 81 | hmac.o: ../../include/openssl/hmac.h ../../include/openssl/lhash.h |
82 | hmac.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 82 | hmac.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
83 | hmac.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 83 | hmac.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
84 | hmac.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | 84 | hmac.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h |
85 | hmac.o: ../../include/openssl/symhacks.h ../cryptlib.h hmac.c | 85 | hmac.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
86 | hmac.o: ../cryptlib.h hmac.c | ||
diff --git a/src/lib/libcrypto/idea/Makefile b/src/lib/libcrypto/idea/Makefile index b2e7add666..55c0d4dbff 100644 --- a/src/lib/libcrypto/idea/Makefile +++ b/src/lib/libcrypto/idea/Makefile | |||
@@ -33,7 +33,7 @@ top: | |||
33 | all: lib | 33 | all: lib |
34 | 34 | ||
35 | lib: $(LIBOBJ) | 35 | lib: $(LIBOBJ) |
36 | $(AR) $(LIB) $(LIBOBJ) | 36 | $(ARX) $(LIB) $(LIBOBJ) |
37 | $(RANLIB) $(LIB) || echo Never mind. | 37 | $(RANLIB) $(LIB) || echo Never mind. |
38 | @touch lib | 38 | @touch lib |
39 | 39 | ||
@@ -82,5 +82,9 @@ i_ecb.o: ../../include/openssl/idea.h ../../include/openssl/opensslconf.h | |||
82 | i_ecb.o: ../../include/openssl/opensslv.h i_ecb.c idea_lcl.h | 82 | i_ecb.o: ../../include/openssl/opensslv.h i_ecb.c idea_lcl.h |
83 | i_ofb64.o: ../../include/openssl/idea.h ../../include/openssl/opensslconf.h | 83 | i_ofb64.o: ../../include/openssl/idea.h ../../include/openssl/opensslconf.h |
84 | i_ofb64.o: i_ofb64.c idea_lcl.h | 84 | i_ofb64.o: i_ofb64.c idea_lcl.h |
85 | i_skey.o: ../../include/openssl/idea.h ../../include/openssl/opensslconf.h | 85 | i_skey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
86 | i_skey.o: ../../include/openssl/fips.h ../../include/openssl/idea.h | ||
87 | i_skey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | ||
88 | i_skey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h | ||
89 | i_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
86 | i_skey.o: i_skey.c idea_lcl.h | 90 | i_skey.o: i_skey.c idea_lcl.h |
diff --git a/src/lib/libcrypto/krb5/Makefile b/src/lib/libcrypto/krb5/Makefile index 14077390d6..8efb9e8910 100644 --- a/src/lib/libcrypto/krb5/Makefile +++ b/src/lib/libcrypto/krb5/Makefile | |||
@@ -34,7 +34,7 @@ top: | |||
34 | all: lib | 34 | all: lib |
35 | 35 | ||
36 | lib: $(LIBOBJ) | 36 | lib: $(LIBOBJ) |
37 | $(AR) $(LIB) $(LIBOBJ) | 37 | $(ARX) $(LIB) $(LIBOBJ) |
38 | $(RANLIB) $(LIB) || echo Never mind. | 38 | $(RANLIB) $(LIB) || echo Never mind. |
39 | @touch lib | 39 | @touch lib |
40 | 40 | ||
diff --git a/src/lib/libcrypto/lhash/Makefile b/src/lib/libcrypto/lhash/Makefile index 82bddac474..35f0932971 100644 --- a/src/lib/libcrypto/lhash/Makefile +++ b/src/lib/libcrypto/lhash/Makefile | |||
@@ -33,7 +33,7 @@ top: | |||
33 | all: lib | 33 | all: lib |
34 | 34 | ||
35 | lib: $(LIBOBJ) | 35 | lib: $(LIBOBJ) |
36 | $(AR) $(LIB) $(LIBOBJ) | 36 | $(ARX) $(LIB) $(LIBOBJ) |
37 | $(RANLIB) $(LIB) || echo Never mind. | 37 | $(RANLIB) $(LIB) || echo Never mind. |
38 | @touch lib | 38 | @touch lib |
39 | 39 | ||
diff --git a/src/lib/libcrypto/md2/Makefile b/src/lib/libcrypto/md2/Makefile index 17f878aeb7..7f43321ab2 100644 --- a/src/lib/libcrypto/md2/Makefile +++ b/src/lib/libcrypto/md2/Makefile | |||
@@ -33,7 +33,7 @@ top: | |||
33 | all: lib | 33 | all: lib |
34 | 34 | ||
35 | lib: $(LIBOBJ) | 35 | lib: $(LIBOBJ) |
36 | $(AR) $(LIB) $(LIBOBJ) | 36 | $(ARX) $(LIB) $(LIBOBJ) |
37 | $(RANLIB) $(LIB) || echo Never mind. | 37 | $(RANLIB) $(LIB) || echo Never mind. |
38 | @touch lib | 38 | @touch lib |
39 | 39 | ||
@@ -74,7 +74,9 @@ clean: | |||
74 | 74 | ||
75 | # DO NOT DELETE THIS LINE -- make depend depends on it. | 75 | # DO NOT DELETE THIS LINE -- make depend depends on it. |
76 | 76 | ||
77 | md2_dgst.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 77 | md2_dgst.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h |
78 | md2_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
79 | md2_dgst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h | ||
78 | md2_dgst.o: ../../include/openssl/md2.h ../../include/openssl/opensslconf.h | 80 | md2_dgst.o: ../../include/openssl/md2.h ../../include/openssl/opensslconf.h |
79 | md2_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 81 | md2_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
80 | md2_dgst.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | 82 | md2_dgst.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h |
diff --git a/src/lib/libcrypto/md4/Makefile b/src/lib/libcrypto/md4/Makefile index ef97bb0cbe..0bc4896585 100644 --- a/src/lib/libcrypto/md4/Makefile +++ b/src/lib/libcrypto/md4/Makefile | |||
@@ -34,7 +34,7 @@ top: | |||
34 | all: lib | 34 | all: lib |
35 | 35 | ||
36 | lib: $(LIBOBJ) | 36 | lib: $(LIBOBJ) |
37 | $(AR) $(LIB) $(LIBOBJ) | 37 | $(ARX) $(LIB) $(LIBOBJ) |
38 | $(RANLIB) $(LIB) || echo Never mind. | 38 | $(RANLIB) $(LIB) || echo Never mind. |
39 | @touch lib | 39 | @touch lib |
40 | 40 | ||
@@ -75,9 +75,13 @@ clean: | |||
75 | 75 | ||
76 | # DO NOT DELETE THIS LINE -- make depend depends on it. | 76 | # DO NOT DELETE THIS LINE -- make depend depends on it. |
77 | 77 | ||
78 | md4_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/md4.h | 78 | md4_dgst.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h |
79 | md4_dgst.o: ../../include/openssl/opensslconf.h | 79 | md4_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
80 | md4_dgst.o: ../../include/openssl/opensslv.h ../md32_common.h md4_dgst.c | 80 | md4_dgst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
81 | md4_dgst.o: ../../include/openssl/md4.h ../../include/openssl/opensslconf.h | ||
82 | md4_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
83 | md4_dgst.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
84 | md4_dgst.o: ../../include/openssl/symhacks.h ../md32_common.h md4_dgst.c | ||
81 | md4_dgst.o: md4_locl.h | 85 | md4_dgst.o: md4_locl.h |
82 | md4_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 86 | md4_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
83 | md4_one.o: ../../include/openssl/md4.h ../../include/openssl/opensslconf.h | 87 | md4_one.o: ../../include/openssl/md4.h ../../include/openssl/opensslconf.h |
diff --git a/src/lib/libcrypto/md5/Makefile b/src/lib/libcrypto/md5/Makefile index ceb00e8956..3c450fcfc0 100644 --- a/src/lib/libcrypto/md5/Makefile +++ b/src/lib/libcrypto/md5/Makefile | |||
@@ -38,7 +38,7 @@ top: | |||
38 | all: lib | 38 | all: lib |
39 | 39 | ||
40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) |
41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(ARX) $(LIB) $(LIBOBJ) |
42 | $(RANLIB) $(LIB) || echo Never mind. | 42 | $(RANLIB) $(LIB) || echo Never mind. |
43 | @touch lib | 43 | @touch lib |
44 | 44 | ||
@@ -91,9 +91,13 @@ clean: | |||
91 | 91 | ||
92 | # DO NOT DELETE THIS LINE -- make depend depends on it. | 92 | # DO NOT DELETE THIS LINE -- make depend depends on it. |
93 | 93 | ||
94 | md5_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/md5.h | 94 | md5_dgst.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h |
95 | md5_dgst.o: ../../include/openssl/opensslconf.h | 95 | md5_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
96 | md5_dgst.o: ../../include/openssl/opensslv.h ../md32_common.h md5_dgst.c | 96 | md5_dgst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
97 | md5_dgst.o: ../../include/openssl/md5.h ../../include/openssl/opensslconf.h | ||
98 | md5_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
99 | md5_dgst.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
100 | md5_dgst.o: ../../include/openssl/symhacks.h ../md32_common.h md5_dgst.c | ||
97 | md5_dgst.o: md5_locl.h | 101 | md5_dgst.o: md5_locl.h |
98 | md5_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 102 | md5_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
99 | md5_one.o: ../../include/openssl/md5.h ../../include/openssl/opensslconf.h | 103 | md5_one.o: ../../include/openssl/md5.h ../../include/openssl/opensslconf.h |
diff --git a/src/lib/libcrypto/objects/Makefile b/src/lib/libcrypto/objects/Makefile index 9c5615099c..25e8b23b5d 100644 --- a/src/lib/libcrypto/objects/Makefile +++ b/src/lib/libcrypto/objects/Makefile | |||
@@ -34,7 +34,7 @@ top: | |||
34 | all: obj_dat.h lib | 34 | all: obj_dat.h lib |
35 | 35 | ||
36 | lib: $(LIBOBJ) | 36 | lib: $(LIBOBJ) |
37 | $(AR) $(LIB) $(LIBOBJ) | 37 | $(ARX) $(LIB) $(LIBOBJ) |
38 | $(RANLIB) $(LIB) || echo Never mind. | 38 | $(RANLIB) $(LIB) || echo Never mind. |
39 | @touch lib | 39 | @touch lib |
40 | 40 | ||
diff --git a/src/lib/libcrypto/ocsp/Makefile b/src/lib/libcrypto/ocsp/Makefile index 0fe028960e..30a00b3372 100644 --- a/src/lib/libcrypto/ocsp/Makefile +++ b/src/lib/libcrypto/ocsp/Makefile | |||
@@ -36,7 +36,7 @@ top: | |||
36 | all: lib | 36 | all: lib |
37 | 37 | ||
38 | lib: $(LIBOBJ) | 38 | lib: $(LIBOBJ) |
39 | $(AR) $(LIB) $(LIBOBJ) | 39 | $(ARX) $(LIB) $(LIBOBJ) |
40 | $(RANLIB) $(LIB) || echo Never mind. | 40 | $(RANLIB) $(LIB) || echo Never mind. |
41 | @touch lib | 41 | @touch lib |
42 | 42 | ||
@@ -82,9 +82,10 @@ ocsp_asn.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
82 | ocsp_asn.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | 82 | ocsp_asn.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
83 | ocsp_asn.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 83 | ocsp_asn.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
84 | ocsp_asn.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 84 | ocsp_asn.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
85 | ocsp_asn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 85 | ocsp_asn.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
86 | ocsp_asn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 86 | ocsp_asn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
87 | ocsp_asn.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h | 87 | ocsp_asn.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h |
88 | ocsp_asn.o: ../../include/openssl/opensslconf.h | ||
88 | ocsp_asn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 89 | ocsp_asn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
89 | ocsp_asn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 90 | ocsp_asn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
90 | ocsp_asn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 91 | ocsp_asn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -97,24 +98,25 @@ ocsp_cl.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
97 | ocsp_cl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 98 | ocsp_cl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
98 | ocsp_cl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 99 | ocsp_cl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
99 | ocsp_cl.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 100 | ocsp_cl.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
100 | ocsp_cl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 101 | ocsp_cl.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
101 | ocsp_cl.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h | 102 | ocsp_cl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
102 | ocsp_cl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 103 | ocsp_cl.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h |
103 | ocsp_cl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h | 104 | ocsp_cl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
104 | ocsp_cl.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h | 105 | ocsp_cl.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
105 | ocsp_cl.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h | 106 | ocsp_cl.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
106 | ocsp_cl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 107 | ocsp_cl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
107 | ocsp_cl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 108 | ocsp_cl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
108 | ocsp_cl.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 109 | ocsp_cl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
109 | ocsp_cl.o: ../cryptlib.h ocsp_cl.c | 110 | ocsp_cl.o: ../../include/openssl/x509v3.h ../cryptlib.h ocsp_cl.c |
110 | ocsp_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | 111 | ocsp_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h |
111 | ocsp_err.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 112 | ocsp_err.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
112 | ocsp_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 113 | ocsp_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
113 | ocsp_err.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 114 | ocsp_err.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
114 | ocsp_err.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 115 | ocsp_err.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
115 | ocsp_err.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 116 | ocsp_err.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
116 | ocsp_err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 117 | ocsp_err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
117 | ocsp_err.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h | 118 | ocsp_err.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h |
119 | ocsp_err.o: ../../include/openssl/opensslconf.h | ||
118 | ocsp_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 120 | ocsp_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
119 | ocsp_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 121 | ocsp_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
120 | ocsp_err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 122 | ocsp_err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -127,21 +129,22 @@ ocsp_ext.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
127 | ocsp_ext.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 129 | ocsp_ext.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
128 | ocsp_ext.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 130 | ocsp_ext.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
129 | ocsp_ext.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 131 | ocsp_ext.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
130 | ocsp_ext.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 132 | ocsp_ext.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
131 | ocsp_ext.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h | 133 | ocsp_ext.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
132 | ocsp_ext.o: ../../include/openssl/opensslconf.h | 134 | ocsp_ext.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h |
133 | ocsp_ext.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 135 | ocsp_ext.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
134 | ocsp_ext.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 136 | ocsp_ext.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
135 | ocsp_ext.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 137 | ocsp_ext.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
136 | ocsp_ext.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 138 | ocsp_ext.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
137 | ocsp_ext.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 139 | ocsp_ext.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
138 | ocsp_ext.o: ../../include/openssl/x509v3.h ../cryptlib.h ocsp_ext.c | 140 | ocsp_ext.o: ../../include/openssl/x509v3.h ../cryptlib.h ocsp_ext.c |
139 | ocsp_ht.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | 141 | ocsp_ht.o: ../../e_os.h ../../include/openssl/asn1.h |
140 | ocsp_ht.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 142 | ocsp_ht.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
141 | ocsp_ht.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 143 | ocsp_ht.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
142 | ocsp_ht.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 144 | ocsp_ht.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
143 | ocsp_ht.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 145 | ocsp_ht.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
144 | ocsp_ht.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 146 | ocsp_ht.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
147 | ocsp_ht.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h | ||
145 | ocsp_ht.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 148 | ocsp_ht.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
146 | ocsp_ht.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h | 149 | ocsp_ht.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h |
147 | ocsp_ht.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 150 | ocsp_ht.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
@@ -156,9 +159,9 @@ ocsp_lib.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
156 | ocsp_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 159 | ocsp_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
157 | ocsp_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 160 | ocsp_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
158 | ocsp_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 161 | ocsp_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
159 | ocsp_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 162 | ocsp_lib.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
160 | ocsp_lib.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h | 163 | ocsp_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
161 | ocsp_lib.o: ../../include/openssl/opensslconf.h | 164 | ocsp_lib.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h |
162 | ocsp_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 165 | ocsp_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
163 | ocsp_lib.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 166 | ocsp_lib.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
164 | ocsp_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 167 | ocsp_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
@@ -171,9 +174,10 @@ ocsp_prn.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | |||
171 | ocsp_prn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 174 | ocsp_prn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
172 | ocsp_prn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 175 | ocsp_prn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
173 | ocsp_prn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 176 | ocsp_prn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
174 | ocsp_prn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 177 | ocsp_prn.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
175 | ocsp_prn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 178 | ocsp_prn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
176 | ocsp_prn.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h | 179 | ocsp_prn.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h |
180 | ocsp_prn.o: ../../include/openssl/opensslconf.h | ||
177 | ocsp_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 181 | ocsp_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
178 | ocsp_prn.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 182 | ocsp_prn.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
179 | ocsp_prn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 183 | ocsp_prn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
@@ -187,9 +191,9 @@ ocsp_srv.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
187 | ocsp_srv.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 191 | ocsp_srv.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
188 | ocsp_srv.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 192 | ocsp_srv.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
189 | ocsp_srv.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 193 | ocsp_srv.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
190 | ocsp_srv.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 194 | ocsp_srv.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
191 | ocsp_srv.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h | 195 | ocsp_srv.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
192 | ocsp_srv.o: ../../include/openssl/opensslconf.h | 196 | ocsp_srv.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h |
193 | ocsp_srv.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 197 | ocsp_srv.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
194 | ocsp_srv.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 198 | ocsp_srv.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
195 | ocsp_srv.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 199 | ocsp_srv.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
@@ -202,9 +206,10 @@ ocsp_vfy.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | |||
202 | ocsp_vfy.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 206 | ocsp_vfy.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
203 | ocsp_vfy.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 207 | ocsp_vfy.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
204 | ocsp_vfy.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 208 | ocsp_vfy.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
205 | ocsp_vfy.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 209 | ocsp_vfy.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
206 | ocsp_vfy.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 210 | ocsp_vfy.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
207 | ocsp_vfy.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h | 211 | ocsp_vfy.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h |
212 | ocsp_vfy.o: ../../include/openssl/opensslconf.h | ||
208 | ocsp_vfy.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 213 | ocsp_vfy.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
209 | ocsp_vfy.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 214 | ocsp_vfy.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
210 | ocsp_vfy.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 215 | ocsp_vfy.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
diff --git a/src/lib/libcrypto/pem/Makefile b/src/lib/libcrypto/pem/Makefile index 742194fd24..669f36612c 100644 --- a/src/lib/libcrypto/pem/Makefile +++ b/src/lib/libcrypto/pem/Makefile | |||
@@ -36,7 +36,7 @@ top: | |||
36 | all: lib | 36 | all: lib |
37 | 37 | ||
38 | lib: $(LIBOBJ) | 38 | lib: $(LIBOBJ) |
39 | $(AR) $(LIB) $(LIBOBJ) | 39 | $(ARX) $(LIB) $(LIBOBJ) |
40 | $(RANLIB) $(LIB) || echo Never mind. | 40 | $(RANLIB) $(LIB) || echo Never mind. |
41 | @touch lib | 41 | @touch lib |
42 | 42 | ||
@@ -83,36 +83,39 @@ pem_all.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h | |||
83 | pem_all.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h | 83 | pem_all.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h |
84 | pem_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 84 | pem_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
85 | pem_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 85 | pem_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
86 | pem_all.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 86 | pem_all.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
87 | pem_all.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 87 | pem_all.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
88 | pem_all.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 88 | pem_all.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
89 | pem_all.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h | 89 | pem_all.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
90 | pem_all.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h | 90 | pem_all.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
91 | pem_all.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | 91 | pem_all.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h |
92 | pem_all.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 92 | pem_all.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
93 | pem_all.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 93 | pem_all.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
94 | pem_all.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_all.c | 94 | pem_all.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
95 | pem_all.o: ../cryptlib.h pem_all.c | ||
95 | pem_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | 96 | pem_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h |
96 | pem_err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 97 | pem_err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
97 | pem_err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 98 | pem_err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
98 | pem_err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 99 | pem_err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
99 | pem_err.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 100 | pem_err.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
100 | pem_err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 101 | pem_err.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
101 | pem_err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 102 | pem_err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
102 | pem_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 103 | pem_err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
103 | pem_err.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 104 | pem_err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h |
104 | pem_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 105 | pem_err.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h |
105 | pem_err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 106 | pem_err.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
106 | pem_err.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 107 | pem_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
107 | pem_err.o: ../../include/openssl/x509_vfy.h pem_err.c | 108 | pem_err.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
109 | pem_err.o: pem_err.c | ||
108 | pem_info.o: ../../e_os.h ../../include/openssl/asn1.h | 110 | pem_info.o: ../../e_os.h ../../include/openssl/asn1.h |
109 | pem_info.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 111 | pem_info.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
110 | pem_info.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h | 112 | pem_info.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h |
111 | pem_info.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 113 | pem_info.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
112 | pem_info.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 114 | pem_info.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
113 | pem_info.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 115 | pem_info.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
114 | pem_info.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 116 | pem_info.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
115 | pem_info.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 117 | pem_info.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
118 | pem_info.o: ../../include/openssl/opensslconf.h | ||
116 | pem_info.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 119 | pem_info.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
117 | pem_info.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 120 | pem_info.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
118 | pem_info.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h | 121 | pem_info.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h |
@@ -126,54 +129,55 @@ pem_lib.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | |||
126 | pem_lib.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h | 129 | pem_lib.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h |
127 | pem_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 130 | pem_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
128 | pem_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 131 | pem_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
129 | pem_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 132 | pem_lib.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
130 | pem_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 133 | pem_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
131 | pem_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 134 | pem_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
132 | pem_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h | 135 | pem_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
133 | pem_lib.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs12.h | 136 | pem_lib.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
134 | pem_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 137 | pem_lib.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
135 | pem_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 138 | pem_lib.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h |
136 | pem_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 139 | pem_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
137 | pem_lib.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h | 140 | pem_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h |
138 | pem_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 141 | pem_lib.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h |
139 | pem_lib.o: ../cryptlib.h pem_lib.c | 142 | pem_lib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_lib.c |
140 | pem_oth.o: ../../e_os.h ../../include/openssl/asn1.h | 143 | pem_oth.o: ../../e_os.h ../../include/openssl/asn1.h |
141 | pem_oth.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 144 | pem_oth.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
142 | pem_oth.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 145 | pem_oth.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
143 | pem_oth.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 146 | pem_oth.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
144 | pem_oth.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 147 | pem_oth.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
145 | pem_oth.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 148 | pem_oth.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
146 | pem_oth.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 149 | pem_oth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
147 | pem_oth.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 150 | pem_oth.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
148 | pem_oth.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h | 151 | pem_oth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
149 | pem_oth.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h | 152 | pem_oth.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
150 | pem_oth.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h | 153 | pem_oth.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
151 | pem_oth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 154 | pem_oth.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
152 | pem_oth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 155 | pem_oth.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
153 | pem_oth.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_oth.c | 156 | pem_oth.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
157 | pem_oth.o: ../cryptlib.h pem_oth.c | ||
154 | pem_pk8.o: ../../e_os.h ../../include/openssl/asn1.h | 158 | pem_pk8.o: ../../e_os.h ../../include/openssl/asn1.h |
155 | pem_pk8.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 159 | pem_pk8.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
156 | pem_pk8.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 160 | pem_pk8.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
157 | pem_pk8.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 161 | pem_pk8.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
158 | pem_pk8.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 162 | pem_pk8.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
159 | pem_pk8.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 163 | pem_pk8.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
160 | pem_pk8.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 164 | pem_pk8.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
161 | pem_pk8.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 165 | pem_pk8.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
162 | pem_pk8.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h | 166 | pem_pk8.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
163 | pem_pk8.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs12.h | 167 | pem_pk8.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
164 | pem_pk8.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 168 | pem_pk8.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
165 | pem_pk8.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 169 | pem_pk8.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h |
166 | pem_pk8.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 170 | pem_pk8.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
167 | pem_pk8.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 171 | pem_pk8.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
168 | pem_pk8.o: ../cryptlib.h pem_pk8.c | 172 | pem_pk8.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_pk8.c |
169 | pem_pkey.o: ../../e_os.h ../../include/openssl/asn1.h | 173 | pem_pkey.o: ../../e_os.h ../../include/openssl/asn1.h |
170 | pem_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 174 | pem_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
171 | pem_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 175 | pem_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
172 | pem_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 176 | pem_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
173 | pem_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 177 | pem_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
174 | pem_pkey.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 178 | pem_pkey.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
175 | pem_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 179 | pem_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
176 | pem_pkey.o: ../../include/openssl/opensslconf.h | 180 | pem_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
177 | pem_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 181 | pem_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
178 | pem_pkey.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 182 | pem_pkey.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
179 | pem_pkey.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 183 | pem_pkey.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
@@ -186,9 +190,9 @@ pem_seal.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
186 | pem_seal.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 190 | pem_seal.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
187 | pem_seal.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 191 | pem_seal.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
188 | pem_seal.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 192 | pem_seal.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
189 | pem_seal.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 193 | pem_seal.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
190 | pem_seal.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 194 | pem_seal.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
191 | pem_seal.o: ../../include/openssl/opensslconf.h | 195 | pem_seal.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
192 | pem_seal.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 196 | pem_seal.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
193 | pem_seal.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 197 | pem_seal.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
194 | pem_seal.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 198 | pem_seal.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
@@ -201,9 +205,9 @@ pem_sign.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
201 | pem_sign.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 205 | pem_sign.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
202 | pem_sign.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 206 | pem_sign.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
203 | pem_sign.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 207 | pem_sign.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
204 | pem_sign.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 208 | pem_sign.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
205 | pem_sign.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 209 | pem_sign.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
206 | pem_sign.o: ../../include/openssl/opensslconf.h | 210 | pem_sign.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
207 | pem_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 211 | pem_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
208 | pem_sign.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 212 | pem_sign.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
209 | pem_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 213 | pem_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
@@ -216,9 +220,9 @@ pem_x509.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
216 | pem_x509.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 220 | pem_x509.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
217 | pem_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 221 | pem_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
218 | pem_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 222 | pem_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
219 | pem_x509.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 223 | pem_x509.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
220 | pem_x509.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 224 | pem_x509.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
221 | pem_x509.o: ../../include/openssl/opensslconf.h | 225 | pem_x509.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
222 | pem_x509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 226 | pem_x509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
223 | pem_x509.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 227 | pem_x509.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
224 | pem_x509.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 228 | pem_x509.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
@@ -230,9 +234,9 @@ pem_xaux.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
230 | pem_xaux.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 234 | pem_xaux.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
231 | pem_xaux.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 235 | pem_xaux.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
232 | pem_xaux.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 236 | pem_xaux.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
233 | pem_xaux.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 237 | pem_xaux.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
234 | pem_xaux.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 238 | pem_xaux.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
235 | pem_xaux.o: ../../include/openssl/opensslconf.h | 239 | pem_xaux.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
236 | pem_xaux.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 240 | pem_xaux.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
237 | pem_xaux.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 241 | pem_xaux.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
238 | pem_xaux.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 242 | pem_xaux.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
diff --git a/src/lib/libcrypto/pkcs12/Makefile b/src/lib/libcrypto/pkcs12/Makefile index 3a7498fe7a..eed226b30d 100644 --- a/src/lib/libcrypto/pkcs12/Makefile +++ b/src/lib/libcrypto/pkcs12/Makefile | |||
@@ -39,7 +39,7 @@ test: | |||
39 | all: lib | 39 | all: lib |
40 | 40 | ||
41 | lib: $(LIBOBJ) | 41 | lib: $(LIBOBJ) |
42 | $(AR) $(LIB) $(LIBOBJ) | 42 | $(ARX) $(LIB) $(LIBOBJ) |
43 | $(RANLIB) $(LIB) || echo Never mind. | 43 | $(RANLIB) $(LIB) || echo Never mind. |
44 | @touch lib | 44 | @touch lib |
45 | 45 | ||
@@ -85,36 +85,37 @@ p12_add.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
85 | p12_add.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 85 | p12_add.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
86 | p12_add.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 86 | p12_add.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
87 | p12_add.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 87 | p12_add.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
88 | p12_add.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 88 | p12_add.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
89 | p12_add.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 89 | p12_add.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
90 | p12_add.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 90 | p12_add.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
91 | p12_add.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h | 91 | p12_add.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
92 | p12_add.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 92 | p12_add.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
93 | p12_add.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 93 | p12_add.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
94 | p12_add.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 94 | p12_add.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
95 | p12_add.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_add.c | 95 | p12_add.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
96 | p12_add.o: ../cryptlib.h p12_add.c | ||
96 | p12_asn.o: ../../e_os.h ../../include/openssl/asn1.h | 97 | p12_asn.o: ../../e_os.h ../../include/openssl/asn1.h |
97 | p12_asn.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 98 | p12_asn.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
98 | p12_asn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 99 | p12_asn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
99 | p12_asn.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 100 | p12_asn.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
100 | p12_asn.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 101 | p12_asn.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
101 | p12_asn.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 102 | p12_asn.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
102 | p12_asn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 103 | p12_asn.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
103 | p12_asn.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 104 | p12_asn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
104 | p12_asn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 105 | p12_asn.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
105 | p12_asn.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 106 | p12_asn.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h |
106 | p12_asn.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 107 | p12_asn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
107 | p12_asn.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 108 | p12_asn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
108 | p12_asn.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 109 | p12_asn.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
109 | p12_asn.o: ../cryptlib.h p12_asn.c | 110 | p12_asn.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_asn.c |
110 | p12_attr.o: ../../e_os.h ../../include/openssl/asn1.h | 111 | p12_attr.o: ../../e_os.h ../../include/openssl/asn1.h |
111 | p12_attr.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 112 | p12_attr.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
112 | p12_attr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 113 | p12_attr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
113 | p12_attr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 114 | p12_attr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
114 | p12_attr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 115 | p12_attr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
115 | p12_attr.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 116 | p12_attr.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
116 | p12_attr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 117 | p12_attr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
117 | p12_attr.o: ../../include/openssl/opensslconf.h | 118 | p12_attr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
118 | p12_attr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 119 | p12_attr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
119 | p12_attr.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 120 | p12_attr.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
120 | p12_attr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 121 | p12_attr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
@@ -126,9 +127,9 @@ p12_crpt.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
126 | p12_crpt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 127 | p12_crpt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
127 | p12_crpt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 128 | p12_crpt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
128 | p12_crpt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 129 | p12_crpt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
129 | p12_crpt.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 130 | p12_crpt.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
130 | p12_crpt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 131 | p12_crpt.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
131 | p12_crpt.o: ../../include/openssl/opensslconf.h | 132 | p12_crpt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
132 | p12_crpt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 133 | p12_crpt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
133 | p12_crpt.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 134 | p12_crpt.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
134 | p12_crpt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 135 | p12_crpt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
@@ -140,22 +141,23 @@ p12_crt.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
140 | p12_crt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 141 | p12_crt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
141 | p12_crt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 142 | p12_crt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
142 | p12_crt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 143 | p12_crt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
143 | p12_crt.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 144 | p12_crt.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
144 | p12_crt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 145 | p12_crt.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
145 | p12_crt.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 146 | p12_crt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
146 | p12_crt.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h | 147 | p12_crt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
147 | p12_crt.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 148 | p12_crt.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
148 | p12_crt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 149 | p12_crt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
149 | p12_crt.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 150 | p12_crt.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
150 | p12_crt.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_crt.c | 151 | p12_crt.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
152 | p12_crt.o: ../cryptlib.h p12_crt.c | ||
151 | p12_decr.o: ../../e_os.h ../../include/openssl/asn1.h | 153 | p12_decr.o: ../../e_os.h ../../include/openssl/asn1.h |
152 | p12_decr.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 154 | p12_decr.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
153 | p12_decr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 155 | p12_decr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
154 | p12_decr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 156 | p12_decr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
155 | p12_decr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 157 | p12_decr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
156 | p12_decr.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 158 | p12_decr.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
157 | p12_decr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 159 | p12_decr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
158 | p12_decr.o: ../../include/openssl/opensslconf.h | 160 | p12_decr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
159 | p12_decr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 161 | p12_decr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
160 | p12_decr.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 162 | p12_decr.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
161 | p12_decr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 163 | p12_decr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
@@ -167,9 +169,9 @@ p12_init.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
167 | p12_init.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 169 | p12_init.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
168 | p12_init.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 170 | p12_init.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
169 | p12_init.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 171 | p12_init.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
170 | p12_init.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 172 | p12_init.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
171 | p12_init.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 173 | p12_init.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
172 | p12_init.o: ../../include/openssl/opensslconf.h | 174 | p12_init.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
173 | p12_init.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 175 | p12_init.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
174 | p12_init.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 176 | p12_init.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
175 | p12_init.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 177 | p12_init.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
@@ -182,22 +184,22 @@ p12_key.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
182 | p12_key.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 184 | p12_key.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
183 | p12_key.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 185 | p12_key.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
184 | p12_key.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 186 | p12_key.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
185 | p12_key.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 187 | p12_key.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
186 | p12_key.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 188 | p12_key.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
187 | p12_key.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 189 | p12_key.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
188 | p12_key.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 190 | p12_key.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h |
189 | p12_key.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 191 | p12_key.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
190 | p12_key.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 192 | p12_key.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
191 | p12_key.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 193 | p12_key.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
192 | p12_key.o: ../cryptlib.h p12_key.c | 194 | p12_key.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_key.c |
193 | p12_kiss.o: ../../e_os.h ../../include/openssl/asn1.h | 195 | p12_kiss.o: ../../e_os.h ../../include/openssl/asn1.h |
194 | p12_kiss.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 196 | p12_kiss.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
195 | p12_kiss.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 197 | p12_kiss.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
196 | p12_kiss.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 198 | p12_kiss.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
197 | p12_kiss.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 199 | p12_kiss.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
198 | p12_kiss.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 200 | p12_kiss.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
199 | p12_kiss.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 201 | p12_kiss.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
200 | p12_kiss.o: ../../include/openssl/opensslconf.h | 202 | p12_kiss.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
201 | p12_kiss.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 203 | p12_kiss.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
202 | p12_kiss.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 204 | p12_kiss.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
203 | p12_kiss.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 205 | p12_kiss.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
@@ -209,9 +211,10 @@ p12_mutl.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
209 | p12_mutl.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 211 | p12_mutl.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
210 | p12_mutl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 212 | p12_mutl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
211 | p12_mutl.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 213 | p12_mutl.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
212 | p12_mutl.o: ../../include/openssl/evp.h ../../include/openssl/hmac.h | 214 | p12_mutl.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
213 | p12_mutl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 215 | p12_mutl.o: ../../include/openssl/hmac.h ../../include/openssl/lhash.h |
214 | p12_mutl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 216 | p12_mutl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
217 | p12_mutl.o: ../../include/openssl/opensslconf.h | ||
215 | p12_mutl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 218 | p12_mutl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
216 | p12_mutl.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 219 | p12_mutl.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
217 | p12_mutl.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h | 220 | p12_mutl.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h |
@@ -223,8 +226,9 @@ p12_npas.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
223 | p12_npas.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 226 | p12_npas.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
224 | p12_npas.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 227 | p12_npas.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
225 | p12_npas.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 228 | p12_npas.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
226 | p12_npas.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 229 | p12_npas.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
227 | p12_npas.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 230 | p12_npas.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
231 | p12_npas.o: ../../include/openssl/opensslconf.h | ||
228 | p12_npas.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 232 | p12_npas.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
229 | p12_npas.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 233 | p12_npas.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
230 | p12_npas.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 234 | p12_npas.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
@@ -237,50 +241,53 @@ p12_p8d.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
237 | p12_p8d.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 241 | p12_p8d.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
238 | p12_p8d.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 242 | p12_p8d.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
239 | p12_p8d.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 243 | p12_p8d.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
240 | p12_p8d.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 244 | p12_p8d.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
241 | p12_p8d.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 245 | p12_p8d.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
242 | p12_p8d.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 246 | p12_p8d.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
243 | p12_p8d.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h | 247 | p12_p8d.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
244 | p12_p8d.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 248 | p12_p8d.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
245 | p12_p8d.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 249 | p12_p8d.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
246 | p12_p8d.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 250 | p12_p8d.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
247 | p12_p8d.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_p8d.c | 251 | p12_p8d.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
252 | p12_p8d.o: ../cryptlib.h p12_p8d.c | ||
248 | p12_p8e.o: ../../e_os.h ../../include/openssl/asn1.h | 253 | p12_p8e.o: ../../e_os.h ../../include/openssl/asn1.h |
249 | p12_p8e.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 254 | p12_p8e.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
250 | p12_p8e.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 255 | p12_p8e.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
251 | p12_p8e.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 256 | p12_p8e.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
252 | p12_p8e.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 257 | p12_p8e.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
253 | p12_p8e.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 258 | p12_p8e.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
254 | p12_p8e.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 259 | p12_p8e.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
255 | p12_p8e.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 260 | p12_p8e.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
256 | p12_p8e.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h | 261 | p12_p8e.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
257 | p12_p8e.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 262 | p12_p8e.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
258 | p12_p8e.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 263 | p12_p8e.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
259 | p12_p8e.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 264 | p12_p8e.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
260 | p12_p8e.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_p8e.c | 265 | p12_p8e.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
266 | p12_p8e.o: ../cryptlib.h p12_p8e.c | ||
261 | p12_utl.o: ../../e_os.h ../../include/openssl/asn1.h | 267 | p12_utl.o: ../../e_os.h ../../include/openssl/asn1.h |
262 | p12_utl.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 268 | p12_utl.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
263 | p12_utl.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 269 | p12_utl.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
264 | p12_utl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 270 | p12_utl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
265 | p12_utl.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 271 | p12_utl.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
266 | p12_utl.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 272 | p12_utl.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
267 | p12_utl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 273 | p12_utl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
268 | p12_utl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 274 | p12_utl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
269 | p12_utl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h | 275 | p12_utl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
270 | p12_utl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 276 | p12_utl.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
271 | p12_utl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 277 | p12_utl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
272 | p12_utl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 278 | p12_utl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
273 | p12_utl.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_utl.c | 279 | p12_utl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
280 | p12_utl.o: ../cryptlib.h p12_utl.c | ||
274 | pk12err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | 281 | pk12err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h |
275 | pk12err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 282 | pk12err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
276 | pk12err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 283 | pk12err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
277 | pk12err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 284 | pk12err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
278 | pk12err.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 285 | pk12err.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
279 | pk12err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 286 | pk12err.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
280 | pk12err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 287 | pk12err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
281 | pk12err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 288 | pk12err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
282 | pk12err.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 289 | pk12err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h |
283 | pk12err.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 290 | pk12err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
284 | pk12err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 291 | pk12err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
285 | pk12err.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 292 | pk12err.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
286 | pk12err.o: pk12err.c | 293 | pk12err.o: ../../include/openssl/x509_vfy.h pk12err.c |
diff --git a/src/lib/libcrypto/pkcs7/Makefile b/src/lib/libcrypto/pkcs7/Makefile index 3f7e88b40f..790d8edf36 100644 --- a/src/lib/libcrypto/pkcs7/Makefile +++ b/src/lib/libcrypto/pkcs7/Makefile | |||
@@ -54,7 +54,7 @@ verify: verify.o example.o lib | |||
54 | $(CC) $(CFLAGS) -o verify verify.o $(PEX_LIBS) example.o $(LIB) $(EX_LIBS) | 54 | $(CC) $(CFLAGS) -o verify verify.o $(PEX_LIBS) example.o $(LIB) $(EX_LIBS) |
55 | 55 | ||
56 | lib: $(LIBOBJ) | 56 | lib: $(LIBOBJ) |
57 | $(AR) $(LIB) $(LIBOBJ) | 57 | $(ARX) $(LIB) $(LIBOBJ) |
58 | $(RANLIB) $(LIB) || echo Never mind. | 58 | $(RANLIB) $(LIB) || echo Never mind. |
59 | @touch lib | 59 | @touch lib |
60 | 60 | ||
@@ -101,8 +101,9 @@ pk7_asn1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
101 | pk7_asn1.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 101 | pk7_asn1.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
102 | pk7_asn1.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 102 | pk7_asn1.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
103 | pk7_asn1.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 103 | pk7_asn1.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
104 | pk7_asn1.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 104 | pk7_asn1.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
105 | pk7_asn1.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 105 | pk7_asn1.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
106 | pk7_asn1.o: ../../include/openssl/opensslconf.h | ||
106 | pk7_asn1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 107 | pk7_asn1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
107 | pk7_asn1.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 108 | pk7_asn1.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
108 | pk7_asn1.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 109 | pk7_asn1.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -113,8 +114,9 @@ pk7_attr.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
113 | pk7_attr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 114 | pk7_attr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
114 | pk7_attr.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 115 | pk7_attr.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
115 | pk7_attr.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 116 | pk7_attr.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
116 | pk7_attr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 117 | pk7_attr.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
117 | pk7_attr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 118 | pk7_attr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
119 | pk7_attr.o: ../../include/openssl/opensslconf.h | ||
118 | pk7_attr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 120 | pk7_attr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
119 | pk7_attr.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 121 | pk7_attr.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
120 | pk7_attr.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 122 | pk7_attr.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
@@ -127,8 +129,9 @@ pk7_doit.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
127 | pk7_doit.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 129 | pk7_doit.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
128 | pk7_doit.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 130 | pk7_doit.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
129 | pk7_doit.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 131 | pk7_doit.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
130 | pk7_doit.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 132 | pk7_doit.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
131 | pk7_doit.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 133 | pk7_doit.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
134 | pk7_doit.o: ../../include/openssl/opensslconf.h | ||
132 | pk7_doit.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 135 | pk7_doit.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
133 | pk7_doit.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 136 | pk7_doit.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
134 | pk7_doit.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 137 | pk7_doit.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
@@ -140,22 +143,22 @@ pk7_lib.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
140 | pk7_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 143 | pk7_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
141 | pk7_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 144 | pk7_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
142 | pk7_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 145 | pk7_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
143 | pk7_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 146 | pk7_lib.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
144 | pk7_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 147 | pk7_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
145 | pk7_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 148 | pk7_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
146 | pk7_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 149 | pk7_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
147 | pk7_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 150 | pk7_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
148 | pk7_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 151 | pk7_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
149 | pk7_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 152 | pk7_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
150 | pk7_lib.o: ../cryptlib.h pk7_lib.c | 153 | pk7_lib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pk7_lib.c |
151 | pk7_mime.o: ../../e_os.h ../../include/openssl/asn1.h | 154 | pk7_mime.o: ../../e_os.h ../../include/openssl/asn1.h |
152 | pk7_mime.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 155 | pk7_mime.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
153 | pk7_mime.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 156 | pk7_mime.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
154 | pk7_mime.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 157 | pk7_mime.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
155 | pk7_mime.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 158 | pk7_mime.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
156 | pk7_mime.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 159 | pk7_mime.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
157 | pk7_mime.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 160 | pk7_mime.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
158 | pk7_mime.o: ../../include/openssl/opensslconf.h | 161 | pk7_mime.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
159 | pk7_mime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 162 | pk7_mime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
160 | pk7_mime.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 163 | pk7_mime.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
161 | pk7_mime.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 164 | pk7_mime.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
@@ -168,8 +171,8 @@ pk7_smime.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
168 | pk7_smime.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 171 | pk7_smime.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
169 | pk7_smime.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 172 | pk7_smime.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
170 | pk7_smime.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 173 | pk7_smime.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
171 | pk7_smime.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 174 | pk7_smime.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
172 | pk7_smime.o: ../../include/openssl/objects.h | 175 | pk7_smime.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
173 | pk7_smime.o: ../../include/openssl/opensslconf.h | 176 | pk7_smime.o: ../../include/openssl/opensslconf.h |
174 | pk7_smime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 177 | pk7_smime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
175 | pk7_smime.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 178 | pk7_smime.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
diff --git a/src/lib/libcrypto/pqueue/pq_compat.h b/src/lib/libcrypto/pqueue/pq_compat.h index fd36578882..7b2c32725c 100644 --- a/src/lib/libcrypto/pqueue/pq_compat.h +++ b/src/lib/libcrypto/pqueue/pq_compat.h | |||
@@ -57,6 +57,9 @@ | |||
57 | * | 57 | * |
58 | */ | 58 | */ |
59 | 59 | ||
60 | #ifndef HEADER_PQ_COMPAT_H | ||
61 | #define HEADER_PQ_COMPAT_H | ||
62 | |||
60 | #include <openssl/opensslconf.h> | 63 | #include <openssl/opensslconf.h> |
61 | #include <openssl/bn.h> | 64 | #include <openssl/bn.h> |
62 | 65 | ||
@@ -145,3 +148,5 @@ | |||
145 | *(x) |= mask; \ | 148 | *(x) |= mask; \ |
146 | } while(0) | 149 | } while(0) |
147 | #endif /* OPENSSL_SYS_VMS */ | 150 | #endif /* OPENSSL_SYS_VMS */ |
151 | |||
152 | #endif | ||
diff --git a/src/lib/libcrypto/rand/rand_eng.c b/src/lib/libcrypto/rand/rand_eng.c new file mode 100644 index 0000000000..1669cef43c --- /dev/null +++ b/src/lib/libcrypto/rand/rand_eng.c | |||
@@ -0,0 +1,152 @@ | |||
1 | /* crypto/rand/rand_lib.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include <time.h> | ||
61 | #include "cryptlib.h" | ||
62 | #include "rand_lcl.h" | ||
63 | #include <openssl/rand.h> | ||
64 | #ifdef OPENSSL_FIPS | ||
65 | #include <openssl/fips.h> | ||
66 | #include <openssl/fips_rand.h> | ||
67 | #endif | ||
68 | |||
69 | #ifndef OPENSSL_NO_ENGINE | ||
70 | #include <openssl/engine.h> | ||
71 | #endif | ||
72 | |||
73 | #if defined(OPENSSL_FIPS) && !defined(OPENSSL_NO_ENGINE) | ||
74 | |||
75 | /* non-NULL if default_RAND_meth is ENGINE-provided */ | ||
76 | static ENGINE *funct_ref =NULL; | ||
77 | |||
78 | int eng_RAND_set_rand_method(const RAND_METHOD *meth, const RAND_METHOD **pmeth) | ||
79 | { | ||
80 | if(funct_ref) | ||
81 | { | ||
82 | ENGINE_finish(funct_ref); | ||
83 | funct_ref = NULL; | ||
84 | } | ||
85 | *pmeth = meth; | ||
86 | return 1; | ||
87 | } | ||
88 | |||
89 | const RAND_METHOD *eng_RAND_get_rand_method(const RAND_METHOD **pmeth) | ||
90 | { | ||
91 | if (!*pmeth) | ||
92 | { | ||
93 | ENGINE *e = ENGINE_get_default_RAND(); | ||
94 | if(e) | ||
95 | { | ||
96 | *pmeth = ENGINE_get_RAND(e); | ||
97 | if(!*pmeth) | ||
98 | { | ||
99 | ENGINE_finish(e); | ||
100 | e = NULL; | ||
101 | } | ||
102 | } | ||
103 | if(e) | ||
104 | funct_ref = e; | ||
105 | else | ||
106 | if(FIPS_mode()) | ||
107 | *pmeth=FIPS_rand_method(); | ||
108 | else | ||
109 | *pmeth = RAND_SSLeay(); | ||
110 | } | ||
111 | |||
112 | if(FIPS_mode() | ||
113 | && *pmeth != FIPS_rand_check()) | ||
114 | { | ||
115 | RANDerr(RAND_F_ENG_RAND_GET_RAND_METHOD,RAND_R_NON_FIPS_METHOD); | ||
116 | return 0; | ||
117 | } | ||
118 | |||
119 | return *pmeth; | ||
120 | } | ||
121 | |||
122 | int RAND_set_rand_engine(ENGINE *engine) | ||
123 | { | ||
124 | const RAND_METHOD *tmp_meth = NULL; | ||
125 | if(engine) | ||
126 | { | ||
127 | if(!ENGINE_init(engine)) | ||
128 | return 0; | ||
129 | tmp_meth = ENGINE_get_RAND(engine); | ||
130 | if(!tmp_meth) | ||
131 | { | ||
132 | ENGINE_finish(engine); | ||
133 | return 0; | ||
134 | } | ||
135 | } | ||
136 | /* This function releases any prior ENGINE so call it first */ | ||
137 | RAND_set_rand_method(tmp_meth); | ||
138 | funct_ref = engine; | ||
139 | return 1; | ||
140 | } | ||
141 | |||
142 | void int_RAND_init_engine_callbacks(void) | ||
143 | { | ||
144 | static int done = 0; | ||
145 | if (done) | ||
146 | return; | ||
147 | int_RAND_set_callbacks(eng_RAND_set_rand_method, | ||
148 | eng_RAND_get_rand_method); | ||
149 | done = 1; | ||
150 | } | ||
151 | |||
152 | #endif | ||
diff --git a/src/lib/libcrypto/rc2/Makefile b/src/lib/libcrypto/rc2/Makefile index 73eac347e7..4b6292b65f 100644 --- a/src/lib/libcrypto/rc2/Makefile +++ b/src/lib/libcrypto/rc2/Makefile | |||
@@ -33,7 +33,7 @@ top: | |||
33 | all: lib | 33 | all: lib |
34 | 34 | ||
35 | lib: $(LIBOBJ) | 35 | lib: $(LIBOBJ) |
36 | $(AR) $(LIB) $(LIBOBJ) | 36 | $(ARX) $(LIB) $(LIBOBJ) |
37 | $(RANLIB) $(LIB) || echo Never mind. | 37 | $(RANLIB) $(LIB) || echo Never mind. |
38 | @touch lib | 38 | @touch lib |
39 | 39 | ||
@@ -78,7 +78,11 @@ rc2_cbc.o: ../../include/openssl/opensslconf.h ../../include/openssl/rc2.h | |||
78 | rc2_cbc.o: rc2_cbc.c rc2_locl.h | 78 | rc2_cbc.o: rc2_cbc.c rc2_locl.h |
79 | rc2_ecb.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 79 | rc2_ecb.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
80 | rc2_ecb.o: ../../include/openssl/rc2.h rc2_ecb.c rc2_locl.h | 80 | rc2_ecb.o: ../../include/openssl/rc2.h rc2_ecb.c rc2_locl.h |
81 | rc2_skey.o: ../../include/openssl/opensslconf.h ../../include/openssl/rc2.h | 81 | rc2_skey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
82 | rc2_skey.o: ../../include/openssl/fips.h ../../include/openssl/opensslconf.h | ||
83 | rc2_skey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
84 | rc2_skey.o: ../../include/openssl/rc2.h ../../include/openssl/safestack.h | ||
85 | rc2_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
82 | rc2_skey.o: rc2_locl.h rc2_skey.c | 86 | rc2_skey.o: rc2_locl.h rc2_skey.c |
83 | rc2cfb64.o: ../../include/openssl/opensslconf.h ../../include/openssl/rc2.h | 87 | rc2cfb64.o: ../../include/openssl/opensslconf.h ../../include/openssl/rc2.h |
84 | rc2cfb64.o: rc2_locl.h rc2cfb64.c | 88 | rc2cfb64.o: rc2_locl.h rc2cfb64.c |
diff --git a/src/lib/libcrypto/rc4/Makefile b/src/lib/libcrypto/rc4/Makefile index 187ed5c668..f0bd7678fc 100644 --- a/src/lib/libcrypto/rc4/Makefile +++ b/src/lib/libcrypto/rc4/Makefile | |||
@@ -21,8 +21,8 @@ TEST=rc4test.c | |||
21 | APPS= | 21 | APPS= |
22 | 22 | ||
23 | LIB=$(TOP)/libcrypto.a | 23 | LIB=$(TOP)/libcrypto.a |
24 | LIBSRC=rc4_skey.c rc4_enc.c | 24 | LIBSRC=rc4_skey.c rc4_enc.c rc4_fblk.c |
25 | LIBOBJ=$(RC4_ENC) | 25 | LIBOBJ=$(RC4_ENC) rc4_fblk.o |
26 | 26 | ||
27 | SRC= $(LIBSRC) | 27 | SRC= $(LIBSRC) |
28 | 28 | ||
@@ -37,7 +37,7 @@ top: | |||
37 | all: lib | 37 | all: lib |
38 | 38 | ||
39 | lib: $(LIBOBJ) | 39 | lib: $(LIBOBJ) |
40 | $(AR) $(LIB) $(LIBOBJ) | 40 | $(ARX) $(LIB) $(LIBOBJ) |
41 | $(RANLIB) $(LIB) || echo Never mind. | 41 | $(RANLIB) $(LIB) || echo Never mind. |
42 | @touch lib | 42 | @touch lib |
43 | 43 | ||
@@ -105,10 +105,20 @@ rc4_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | |||
105 | rc4_enc.o: ../../include/openssl/rc4.h ../../include/openssl/safestack.h | 105 | rc4_enc.o: ../../include/openssl/rc4.h ../../include/openssl/safestack.h |
106 | rc4_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 106 | rc4_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
107 | rc4_enc.o: ../cryptlib.h rc4_enc.c rc4_locl.h | 107 | rc4_enc.o: ../cryptlib.h rc4_enc.c rc4_locl.h |
108 | rc4_fblk.o: ../../e_os.h ../../include/openssl/bio.h | ||
109 | rc4_fblk.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | ||
110 | rc4_fblk.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
111 | rc4_fblk.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h | ||
112 | rc4_fblk.o: ../../include/openssl/opensslconf.h | ||
113 | rc4_fblk.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
114 | rc4_fblk.o: ../../include/openssl/rc4.h ../../include/openssl/safestack.h | ||
115 | rc4_fblk.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
116 | rc4_fblk.o: ../cryptlib.h rc4_fblk.c rc4_locl.h | ||
108 | rc4_skey.o: ../../e_os.h ../../include/openssl/bio.h | 117 | rc4_skey.o: ../../e_os.h ../../include/openssl/bio.h |
109 | rc4_skey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 118 | rc4_skey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
110 | rc4_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | 119 | rc4_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
111 | rc4_skey.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h | 120 | rc4_skey.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
121 | rc4_skey.o: ../../include/openssl/opensslconf.h | ||
112 | rc4_skey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 122 | rc4_skey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
113 | rc4_skey.o: ../../include/openssl/rc4.h ../../include/openssl/safestack.h | 123 | rc4_skey.o: ../../include/openssl/rc4.h ../../include/openssl/safestack.h |
114 | rc4_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 124 | rc4_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
diff --git a/src/lib/libcrypto/rc4/rc4_fblk.c b/src/lib/libcrypto/rc4/rc4_fblk.c new file mode 100644 index 0000000000..1b2a42979b --- /dev/null +++ b/src/lib/libcrypto/rc4/rc4_fblk.c | |||
@@ -0,0 +1,75 @@ | |||
1 | /* crypto/rc4/rc4_fblk.c */ | ||
2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | ||
3 | * project. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 2008 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | */ | ||
53 | |||
54 | |||
55 | #include <openssl/rc4.h> | ||
56 | #include "rc4_locl.h" | ||
57 | #include <openssl/opensslv.h> | ||
58 | #include <openssl/crypto.h> | ||
59 | #ifdef OPENSSL_FIPS | ||
60 | #include <openssl/fips.h> | ||
61 | #endif | ||
62 | |||
63 | /* FIPS mode blocking for RC4 has to be done separately since RC4_set_key | ||
64 | * may be implemented in an assembly language file. | ||
65 | */ | ||
66 | |||
67 | #ifdef OPENSSL_FIPS | ||
68 | void RC4_set_key(RC4_KEY *key, int len, const unsigned char *data) | ||
69 | { | ||
70 | if (FIPS_mode()) | ||
71 | FIPS_BAD_ABORT(RC4) | ||
72 | private_RC4_set_key(key, len, data); | ||
73 | } | ||
74 | #endif | ||
75 | |||
diff --git a/src/lib/libcrypto/rc5/Makefile b/src/lib/libcrypto/rc5/Makefile index efb0f36b59..b4e21c9bb2 100644 --- a/src/lib/libcrypto/rc5/Makefile +++ b/src/lib/libcrypto/rc5/Makefile | |||
@@ -40,7 +40,7 @@ top: | |||
40 | all: lib | 40 | all: lib |
41 | 41 | ||
42 | lib: $(LIBOBJ) | 42 | lib: $(LIBOBJ) |
43 | $(AR) $(LIB) $(LIBOBJ) | 43 | $(ARX) $(LIB) $(LIBOBJ) |
44 | $(RANLIB) $(LIB) || echo Never mind. | 44 | $(RANLIB) $(LIB) || echo Never mind. |
45 | @touch lib | 45 | @touch lib |
46 | 46 | ||
diff --git a/src/lib/libcrypto/ripemd/Makefile b/src/lib/libcrypto/ripemd/Makefile index d55875c20c..6145f13699 100644 --- a/src/lib/libcrypto/ripemd/Makefile +++ b/src/lib/libcrypto/ripemd/Makefile | |||
@@ -38,7 +38,7 @@ top: | |||
38 | all: lib | 38 | all: lib |
39 | 39 | ||
40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) |
41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(ARX) $(LIB) $(LIBOBJ) |
42 | $(RANLIB) $(LIB) || echo Never mind. | 42 | $(RANLIB) $(LIB) || echo Never mind. |
43 | @touch lib | 43 | @touch lib |
44 | 44 | ||
@@ -89,8 +89,13 @@ clean: | |||
89 | 89 | ||
90 | # DO NOT DELETE THIS LINE -- make depend depends on it. | 90 | # DO NOT DELETE THIS LINE -- make depend depends on it. |
91 | 91 | ||
92 | rmd_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | 92 | rmd_dgst.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h |
93 | rmd_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ripemd.h | 93 | rmd_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
94 | rmd_dgst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h | ||
95 | rmd_dgst.o: ../../include/openssl/opensslconf.h | ||
96 | rmd_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
97 | rmd_dgst.o: ../../include/openssl/ripemd.h ../../include/openssl/safestack.h | ||
98 | rmd_dgst.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
94 | rmd_dgst.o: ../md32_common.h rmd_dgst.c rmd_locl.h rmdconst.h | 99 | rmd_dgst.o: ../md32_common.h rmd_dgst.c rmd_locl.h rmdconst.h |
95 | rmd_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 100 | rmd_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
96 | rmd_one.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 101 | rmd_one.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
diff --git a/src/lib/libcrypto/rsa/rsa_eng.c b/src/lib/libcrypto/rsa/rsa_eng.c new file mode 100644 index 0000000000..383a7045b2 --- /dev/null +++ b/src/lib/libcrypto/rsa/rsa_eng.c | |||
@@ -0,0 +1,348 @@ | |||
1 | /* crypto/rsa/rsa_lib.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include <openssl/crypto.h> | ||
61 | #include "cryptlib.h" | ||
62 | #include <openssl/lhash.h> | ||
63 | #include <openssl/bn.h> | ||
64 | #include <openssl/rsa.h> | ||
65 | #include <openssl/rand.h> | ||
66 | #ifndef OPENSSL_NO_ENGINE | ||
67 | #include <openssl/engine.h> | ||
68 | #endif | ||
69 | |||
70 | const char RSA_version[]="RSA" OPENSSL_VERSION_PTEXT; | ||
71 | |||
72 | static const RSA_METHOD *default_RSA_meth=NULL; | ||
73 | |||
74 | RSA *RSA_new(void) | ||
75 | { | ||
76 | RSA *r=RSA_new_method(NULL); | ||
77 | |||
78 | return r; | ||
79 | } | ||
80 | |||
81 | void RSA_set_default_method(const RSA_METHOD *meth) | ||
82 | { | ||
83 | #ifdef OPENSSL_FIPS | ||
84 | if (FIPS_mode() && !(meth->flags & RSA_FLAG_FIPS_METHOD)) | ||
85 | { | ||
86 | RSAerr(RSA_F_RSA_SET_DEFAULT_METHOD, RSA_R_NON_FIPS_METHOD); | ||
87 | return; | ||
88 | } | ||
89 | #endif | ||
90 | default_RSA_meth = meth; | ||
91 | } | ||
92 | |||
93 | const RSA_METHOD *RSA_get_default_method(void) | ||
94 | { | ||
95 | if (default_RSA_meth == NULL) | ||
96 | { | ||
97 | #ifdef RSA_NULL | ||
98 | default_RSA_meth=RSA_null_method(); | ||
99 | #else | ||
100 | #if 0 /* was: #ifdef RSAref */ | ||
101 | default_RSA_meth=RSA_PKCS1_RSAref(); | ||
102 | #else | ||
103 | default_RSA_meth=RSA_PKCS1_SSLeay(); | ||
104 | #endif | ||
105 | #endif | ||
106 | } | ||
107 | |||
108 | return default_RSA_meth; | ||
109 | } | ||
110 | |||
111 | const RSA_METHOD *RSA_get_method(const RSA *rsa) | ||
112 | { | ||
113 | return rsa->meth; | ||
114 | } | ||
115 | |||
116 | int RSA_set_method(RSA *rsa, const RSA_METHOD *meth) | ||
117 | { | ||
118 | /* NB: The caller is specifically setting a method, so it's not up to us | ||
119 | * to deal with which ENGINE it comes from. */ | ||
120 | const RSA_METHOD *mtmp; | ||
121 | #ifdef OPENSSL_FIPS | ||
122 | if (FIPS_mode() && !(meth->flags & RSA_FLAG_FIPS_METHOD)) | ||
123 | { | ||
124 | RSAerr(RSA_F_RSA_SET_METHOD, RSA_R_NON_FIPS_METHOD); | ||
125 | return 0; | ||
126 | } | ||
127 | #endif | ||
128 | mtmp = rsa->meth; | ||
129 | if (mtmp->finish) mtmp->finish(rsa); | ||
130 | #ifndef OPENSSL_NO_ENGINE | ||
131 | if (rsa->engine) | ||
132 | { | ||
133 | ENGINE_finish(rsa->engine); | ||
134 | rsa->engine = NULL; | ||
135 | } | ||
136 | #endif | ||
137 | rsa->meth = meth; | ||
138 | if (meth->init) meth->init(rsa); | ||
139 | return 1; | ||
140 | } | ||
141 | |||
142 | RSA *RSA_new_method(ENGINE *engine) | ||
143 | { | ||
144 | RSA *ret; | ||
145 | |||
146 | ret=(RSA *)OPENSSL_malloc(sizeof(RSA)); | ||
147 | if (ret == NULL) | ||
148 | { | ||
149 | RSAerr(RSA_F_RSA_NEW_METHOD,ERR_R_MALLOC_FAILURE); | ||
150 | return NULL; | ||
151 | } | ||
152 | |||
153 | ret->meth = RSA_get_default_method(); | ||
154 | #ifndef OPENSSL_NO_ENGINE | ||
155 | if (engine) | ||
156 | { | ||
157 | if (!ENGINE_init(engine)) | ||
158 | { | ||
159 | RSAerr(RSA_F_RSA_NEW_METHOD, ERR_R_ENGINE_LIB); | ||
160 | OPENSSL_free(ret); | ||
161 | return NULL; | ||
162 | } | ||
163 | ret->engine = engine; | ||
164 | } | ||
165 | else | ||
166 | ret->engine = ENGINE_get_default_RSA(); | ||
167 | if(ret->engine) | ||
168 | { | ||
169 | ret->meth = ENGINE_get_RSA(ret->engine); | ||
170 | if(!ret->meth) | ||
171 | { | ||
172 | RSAerr(RSA_F_RSA_NEW_METHOD, | ||
173 | ERR_R_ENGINE_LIB); | ||
174 | ENGINE_finish(ret->engine); | ||
175 | OPENSSL_free(ret); | ||
176 | return NULL; | ||
177 | } | ||
178 | } | ||
179 | #endif | ||
180 | #ifdef OPENSSL_FIPS | ||
181 | if (FIPS_mode() && !(ret->meth->flags & RSA_FLAG_FIPS_METHOD)) | ||
182 | { | ||
183 | RSAerr(RSA_F_RSA_NEW_METHOD, RSA_R_NON_FIPS_METHOD); | ||
184 | #ifndef OPENSSL_NO_ENGINE | ||
185 | if (ret->engine) | ||
186 | ENGINE_finish(ret->engine); | ||
187 | #endif | ||
188 | OPENSSL_free(ret); | ||
189 | return NULL; | ||
190 | } | ||
191 | #endif | ||
192 | |||
193 | ret->pad=0; | ||
194 | ret->version=0; | ||
195 | ret->n=NULL; | ||
196 | ret->e=NULL; | ||
197 | ret->d=NULL; | ||
198 | ret->p=NULL; | ||
199 | ret->q=NULL; | ||
200 | ret->dmp1=NULL; | ||
201 | ret->dmq1=NULL; | ||
202 | ret->iqmp=NULL; | ||
203 | ret->references=1; | ||
204 | ret->_method_mod_n=NULL; | ||
205 | ret->_method_mod_p=NULL; | ||
206 | ret->_method_mod_q=NULL; | ||
207 | ret->blinding=NULL; | ||
208 | ret->mt_blinding=NULL; | ||
209 | ret->bignum_data=NULL; | ||
210 | ret->flags=ret->meth->flags; | ||
211 | CRYPTO_new_ex_data(CRYPTO_EX_INDEX_RSA, ret, &ret->ex_data); | ||
212 | if ((ret->meth->init != NULL) && !ret->meth->init(ret)) | ||
213 | { | ||
214 | #ifndef OPENSSL_NO_ENGINE | ||
215 | if (ret->engine) | ||
216 | ENGINE_finish(ret->engine); | ||
217 | #endif | ||
218 | CRYPTO_free_ex_data(CRYPTO_EX_INDEX_RSA, ret, &ret->ex_data); | ||
219 | OPENSSL_free(ret); | ||
220 | ret=NULL; | ||
221 | } | ||
222 | return(ret); | ||
223 | } | ||
224 | |||
225 | void RSA_free(RSA *r) | ||
226 | { | ||
227 | int i; | ||
228 | |||
229 | if (r == NULL) return; | ||
230 | |||
231 | i=CRYPTO_add(&r->references,-1,CRYPTO_LOCK_RSA); | ||
232 | #ifdef REF_PRINT | ||
233 | REF_PRINT("RSA",r); | ||
234 | #endif | ||
235 | if (i > 0) return; | ||
236 | #ifdef REF_CHECK | ||
237 | if (i < 0) | ||
238 | { | ||
239 | fprintf(stderr,"RSA_free, bad reference count\n"); | ||
240 | abort(); | ||
241 | } | ||
242 | #endif | ||
243 | |||
244 | if (r->meth->finish) | ||
245 | r->meth->finish(r); | ||
246 | #ifndef OPENSSL_NO_ENGINE | ||
247 | if (r->engine) | ||
248 | ENGINE_finish(r->engine); | ||
249 | #endif | ||
250 | |||
251 | CRYPTO_free_ex_data(CRYPTO_EX_INDEX_RSA, r, &r->ex_data); | ||
252 | |||
253 | if (r->n != NULL) BN_clear_free(r->n); | ||
254 | if (r->e != NULL) BN_clear_free(r->e); | ||
255 | if (r->d != NULL) BN_clear_free(r->d); | ||
256 | if (r->p != NULL) BN_clear_free(r->p); | ||
257 | if (r->q != NULL) BN_clear_free(r->q); | ||
258 | if (r->dmp1 != NULL) BN_clear_free(r->dmp1); | ||
259 | if (r->dmq1 != NULL) BN_clear_free(r->dmq1); | ||
260 | if (r->iqmp != NULL) BN_clear_free(r->iqmp); | ||
261 | if (r->blinding != NULL) BN_BLINDING_free(r->blinding); | ||
262 | if (r->mt_blinding != NULL) BN_BLINDING_free(r->mt_blinding); | ||
263 | if (r->bignum_data != NULL) OPENSSL_free_locked(r->bignum_data); | ||
264 | OPENSSL_free(r); | ||
265 | } | ||
266 | |||
267 | int RSA_up_ref(RSA *r) | ||
268 | { | ||
269 | int i = CRYPTO_add(&r->references, 1, CRYPTO_LOCK_RSA); | ||
270 | #ifdef REF_PRINT | ||
271 | REF_PRINT("RSA",r); | ||
272 | #endif | ||
273 | #ifdef REF_CHECK | ||
274 | if (i < 2) | ||
275 | { | ||
276 | fprintf(stderr, "RSA_up_ref, bad reference count\n"); | ||
277 | abort(); | ||
278 | } | ||
279 | #endif | ||
280 | return ((i > 1) ? 1 : 0); | ||
281 | } | ||
282 | |||
283 | int RSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, | ||
284 | CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func) | ||
285 | { | ||
286 | return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_RSA, argl, argp, | ||
287 | new_func, dup_func, free_func); | ||
288 | } | ||
289 | |||
290 | int RSA_set_ex_data(RSA *r, int idx, void *arg) | ||
291 | { | ||
292 | return(CRYPTO_set_ex_data(&r->ex_data,idx,arg)); | ||
293 | } | ||
294 | |||
295 | void *RSA_get_ex_data(const RSA *r, int idx) | ||
296 | { | ||
297 | return(CRYPTO_get_ex_data(&r->ex_data,idx)); | ||
298 | } | ||
299 | |||
300 | int RSA_flags(const RSA *r) | ||
301 | { | ||
302 | return((r == NULL)?0:r->meth->flags); | ||
303 | } | ||
304 | |||
305 | int RSA_memory_lock(RSA *r) | ||
306 | { | ||
307 | int i,j,k,off; | ||
308 | char *p; | ||
309 | BIGNUM *bn,**t[6],*b; | ||
310 | BN_ULONG *ul; | ||
311 | |||
312 | if (r->d == NULL) return(1); | ||
313 | t[0]= &r->d; | ||
314 | t[1]= &r->p; | ||
315 | t[2]= &r->q; | ||
316 | t[3]= &r->dmp1; | ||
317 | t[4]= &r->dmq1; | ||
318 | t[5]= &r->iqmp; | ||
319 | k=sizeof(BIGNUM)*6; | ||
320 | off=k/sizeof(BN_ULONG)+1; | ||
321 | j=1; | ||
322 | for (i=0; i<6; i++) | ||
323 | j+= (*t[i])->top; | ||
324 | if ((p=OPENSSL_malloc_locked((off+j)*sizeof(BN_ULONG))) == NULL) | ||
325 | { | ||
326 | RSAerr(RSA_F_RSA_MEMORY_LOCK,ERR_R_MALLOC_FAILURE); | ||
327 | return(0); | ||
328 | } | ||
329 | bn=(BIGNUM *)p; | ||
330 | ul=(BN_ULONG *)&(p[off]); | ||
331 | for (i=0; i<6; i++) | ||
332 | { | ||
333 | b= *(t[i]); | ||
334 | *(t[i])= &(bn[i]); | ||
335 | memcpy((char *)&(bn[i]),(char *)b,sizeof(BIGNUM)); | ||
336 | bn[i].flags=BN_FLG_STATIC_DATA; | ||
337 | bn[i].d=ul; | ||
338 | memcpy((char *)ul,b->d,sizeof(BN_ULONG)*b->top); | ||
339 | ul+=b->top; | ||
340 | BN_clear_free(b); | ||
341 | } | ||
342 | |||
343 | /* I should fix this so it can still be done */ | ||
344 | r->flags&= ~(RSA_FLAG_CACHE_PRIVATE|RSA_FLAG_CACHE_PUBLIC); | ||
345 | |||
346 | r->bignum_data=p; | ||
347 | return(1); | ||
348 | } | ||
diff --git a/src/lib/libcrypto/rsa/rsa_x931g.c b/src/lib/libcrypto/rsa/rsa_x931g.c new file mode 100644 index 0000000000..c640cc2ec9 --- /dev/null +++ b/src/lib/libcrypto/rsa/rsa_x931g.c | |||
@@ -0,0 +1,255 @@ | |||
1 | /* crypto/rsa/rsa_gen.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include <string.h> | ||
61 | #include <time.h> | ||
62 | #include <openssl/err.h> | ||
63 | #include <openssl/bn.h> | ||
64 | #include <openssl/rsa.h> | ||
65 | |||
66 | #ifndef OPENSSL_FIPS | ||
67 | |||
68 | /* X9.31 RSA key derivation and generation */ | ||
69 | |||
70 | int RSA_X931_derive_ex(RSA *rsa, BIGNUM *p1, BIGNUM *p2, BIGNUM *q1, BIGNUM *q2, | ||
71 | const BIGNUM *Xp1, const BIGNUM *Xp2, const BIGNUM *Xp, | ||
72 | const BIGNUM *Xq1, const BIGNUM *Xq2, const BIGNUM *Xq, | ||
73 | const BIGNUM *e, BN_GENCB *cb) | ||
74 | { | ||
75 | BIGNUM *r0=NULL,*r1=NULL,*r2=NULL,*r3=NULL; | ||
76 | BN_CTX *ctx=NULL,*ctx2=NULL; | ||
77 | |||
78 | if (!rsa) | ||
79 | goto err; | ||
80 | |||
81 | ctx = BN_CTX_new(); | ||
82 | BN_CTX_start(ctx); | ||
83 | if (!ctx) | ||
84 | goto err; | ||
85 | |||
86 | r0 = BN_CTX_get(ctx); | ||
87 | r1 = BN_CTX_get(ctx); | ||
88 | r2 = BN_CTX_get(ctx); | ||
89 | r3 = BN_CTX_get(ctx); | ||
90 | |||
91 | if (r3 == NULL) | ||
92 | goto err; | ||
93 | if (!rsa->e) | ||
94 | { | ||
95 | rsa->e = BN_dup(e); | ||
96 | if (!rsa->e) | ||
97 | goto err; | ||
98 | } | ||
99 | else | ||
100 | e = rsa->e; | ||
101 | |||
102 | /* If not all parameters present only calculate what we can. | ||
103 | * This allows test programs to output selective parameters. | ||
104 | */ | ||
105 | |||
106 | if (Xp && !rsa->p) | ||
107 | { | ||
108 | rsa->p = BN_new(); | ||
109 | if (!rsa->p) | ||
110 | goto err; | ||
111 | |||
112 | if (!BN_X931_derive_prime_ex(rsa->p, p1, p2, | ||
113 | Xp, Xp1, Xp2, e, ctx, cb)) | ||
114 | goto err; | ||
115 | } | ||
116 | |||
117 | if (Xq && !rsa->q) | ||
118 | { | ||
119 | rsa->q = BN_new(); | ||
120 | if (!rsa->q) | ||
121 | goto err; | ||
122 | if (!BN_X931_derive_prime_ex(rsa->q, q1, q2, | ||
123 | Xq, Xq1, Xq2, e, ctx, cb)) | ||
124 | goto err; | ||
125 | } | ||
126 | |||
127 | if (!rsa->p || !rsa->q) | ||
128 | { | ||
129 | BN_CTX_end(ctx); | ||
130 | BN_CTX_free(ctx); | ||
131 | return 2; | ||
132 | } | ||
133 | |||
134 | /* Since both primes are set we can now calculate all remaining | ||
135 | * components. | ||
136 | */ | ||
137 | |||
138 | /* calculate n */ | ||
139 | rsa->n=BN_new(); | ||
140 | if (rsa->n == NULL) | ||
141 | goto err; | ||
142 | if (!BN_mul(rsa->n,rsa->p,rsa->q,ctx)) | ||
143 | goto err; | ||
144 | |||
145 | /* calculate d */ | ||
146 | if (!BN_sub(r1,rsa->p,BN_value_one())) | ||
147 | goto err; /* p-1 */ | ||
148 | if (!BN_sub(r2,rsa->q,BN_value_one())) | ||
149 | goto err; /* q-1 */ | ||
150 | if (!BN_mul(r0,r1,r2,ctx)) | ||
151 | goto err; /* (p-1)(q-1) */ | ||
152 | |||
153 | if (!BN_gcd(r3, r1, r2, ctx)) | ||
154 | goto err; | ||
155 | |||
156 | if (!BN_div(r0, NULL, r0, r3, ctx)) | ||
157 | goto err; /* LCM((p-1)(q-1)) */ | ||
158 | |||
159 | ctx2 = BN_CTX_new(); | ||
160 | if (!ctx2) | ||
161 | goto err; | ||
162 | |||
163 | rsa->d=BN_mod_inverse(NULL,rsa->e,r0,ctx2); /* d */ | ||
164 | if (rsa->d == NULL) | ||
165 | goto err; | ||
166 | |||
167 | /* calculate d mod (p-1) */ | ||
168 | rsa->dmp1=BN_new(); | ||
169 | if (rsa->dmp1 == NULL) | ||
170 | goto err; | ||
171 | if (!BN_mod(rsa->dmp1,rsa->d,r1,ctx)) | ||
172 | goto err; | ||
173 | |||
174 | /* calculate d mod (q-1) */ | ||
175 | rsa->dmq1=BN_new(); | ||
176 | if (rsa->dmq1 == NULL) | ||
177 | goto err; | ||
178 | if (!BN_mod(rsa->dmq1,rsa->d,r2,ctx)) | ||
179 | goto err; | ||
180 | |||
181 | /* calculate inverse of q mod p */ | ||
182 | rsa->iqmp=BN_mod_inverse(NULL,rsa->q,rsa->p,ctx2); | ||
183 | |||
184 | err: | ||
185 | if (ctx) | ||
186 | { | ||
187 | BN_CTX_end(ctx); | ||
188 | BN_CTX_free(ctx); | ||
189 | } | ||
190 | if (ctx2) | ||
191 | BN_CTX_free(ctx2); | ||
192 | /* If this is set all calls successful */ | ||
193 | if (rsa->iqmp != NULL) | ||
194 | return 1; | ||
195 | |||
196 | return 0; | ||
197 | |||
198 | } | ||
199 | |||
200 | int RSA_X931_generate_key_ex(RSA *rsa, int bits, const BIGNUM *e, BN_GENCB *cb) | ||
201 | { | ||
202 | int ok = 0; | ||
203 | BIGNUM *Xp = NULL, *Xq = NULL; | ||
204 | BN_CTX *ctx = NULL; | ||
205 | |||
206 | ctx = BN_CTX_new(); | ||
207 | if (!ctx) | ||
208 | goto error; | ||
209 | |||
210 | BN_CTX_start(ctx); | ||
211 | Xp = BN_CTX_get(ctx); | ||
212 | Xq = BN_CTX_get(ctx); | ||
213 | if (!BN_X931_generate_Xpq(Xp, Xq, bits, ctx)) | ||
214 | goto error; | ||
215 | |||
216 | rsa->p = BN_new(); | ||
217 | rsa->q = BN_new(); | ||
218 | if (!rsa->p || !rsa->q) | ||
219 | goto error; | ||
220 | |||
221 | /* Generate two primes from Xp, Xq */ | ||
222 | |||
223 | if (!BN_X931_generate_prime_ex(rsa->p, NULL, NULL, NULL, NULL, Xp, | ||
224 | e, ctx, cb)) | ||
225 | goto error; | ||
226 | |||
227 | if (!BN_X931_generate_prime_ex(rsa->q, NULL, NULL, NULL, NULL, Xq, | ||
228 | e, ctx, cb)) | ||
229 | goto error; | ||
230 | |||
231 | /* Since rsa->p and rsa->q are valid this call will just derive | ||
232 | * remaining RSA components. | ||
233 | */ | ||
234 | |||
235 | if (!RSA_X931_derive_ex(rsa, NULL, NULL, NULL, NULL, | ||
236 | NULL, NULL, NULL, NULL, NULL, NULL, e, cb)) | ||
237 | goto error; | ||
238 | |||
239 | ok = 1; | ||
240 | |||
241 | error: | ||
242 | if (ctx) | ||
243 | { | ||
244 | BN_CTX_end(ctx); | ||
245 | BN_CTX_free(ctx); | ||
246 | } | ||
247 | |||
248 | if (ok) | ||
249 | return 1; | ||
250 | |||
251 | return 0; | ||
252 | |||
253 | } | ||
254 | |||
255 | #endif | ||
diff --git a/src/lib/libcrypto/sha/Makefile b/src/lib/libcrypto/sha/Makefile index ac64fb61d3..f4741b9ee6 100644 --- a/src/lib/libcrypto/sha/Makefile +++ b/src/lib/libcrypto/sha/Makefile | |||
@@ -38,7 +38,7 @@ top: | |||
38 | all: lib | 38 | all: lib |
39 | 39 | ||
40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) |
41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(ARX) $(LIB) $(LIBOBJ) |
42 | $(RANLIB) $(LIB) || echo Never mind. | 42 | $(RANLIB) $(LIB) || echo Never mind. |
43 | @touch lib | 43 | @touch lib |
44 | 44 | ||
@@ -59,7 +59,7 @@ s512sse2-out.s: asm/sha512-sse2.pl ../perlasm/x86asm.pl | |||
59 | (cd asm; $(PERL) sha512-sse2.pl a.out $(CFLAGS) $(PROCESSOR) > ../$@) | 59 | (cd asm; $(PERL) sha512-sse2.pl a.out $(CFLAGS) $(PROCESSOR) > ../$@) |
60 | 60 | ||
61 | sha1-ia64.s: asm/sha1-ia64.pl | 61 | sha1-ia64.s: asm/sha1-ia64.pl |
62 | (cd asm; $(PERL) sha1-ia64.pl $(CFLAGS) ) > $@ | 62 | (cd asm; $(PERL) sha1-ia64.pl ../$@ $(CFLAGS)) |
63 | sha256-ia64.s: asm/sha512-ia64.pl | 63 | sha256-ia64.s: asm/sha512-ia64.pl |
64 | (cd asm; $(PERL) sha512-ia64.pl ../$@ $(CFLAGS)) | 64 | (cd asm; $(PERL) sha512-ia64.pl ../$@ $(CFLAGS)) |
65 | sha512-ia64.s: asm/sha512-ia64.pl | 65 | sha512-ia64.s: asm/sha512-ia64.pl |
@@ -113,24 +113,31 @@ sha1_one.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | |||
113 | sha1_one.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 113 | sha1_one.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
114 | sha1_one.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 114 | sha1_one.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
115 | sha1_one.o: sha1_one.c | 115 | sha1_one.o: sha1_one.c |
116 | sha1dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | 116 | sha1dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/fips.h |
117 | sha1dgst.o: ../../include/openssl/opensslconf.h | ||
117 | sha1dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/sha.h | 118 | sha1dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/sha.h |
118 | sha1dgst.o: ../md32_common.h sha1dgst.c sha_locl.h | 119 | sha1dgst.o: ../md32_common.h sha1dgst.c sha_locl.h |
119 | sha256.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 120 | sha256.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
120 | sha256.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 121 | sha256.o: ../../include/openssl/fips.h ../../include/openssl/opensslconf.h |
121 | sha256.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h | 122 | sha256.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
122 | sha256.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 123 | sha256.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
123 | sha256.o: ../../include/openssl/symhacks.h ../md32_common.h sha256.c | 124 | sha256.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
125 | sha256.o: ../md32_common.h sha256.c | ||
124 | sha512.o: ../../e_os.h ../../include/openssl/bio.h | 126 | sha512.o: ../../e_os.h ../../include/openssl/bio.h |
125 | sha512.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 127 | sha512.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
126 | sha512.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | 128 | sha512.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
127 | sha512.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h | 129 | sha512.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
128 | sha512.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 130 | sha512.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
129 | sha512.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 131 | sha512.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h |
130 | sha512.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 132 | sha512.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
131 | sha512.o: ../cryptlib.h sha512.c | 133 | sha512.o: ../../include/openssl/symhacks.h ../cryptlib.h sha512.c |
132 | sha_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | 134 | sha_dgst.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h |
133 | sha_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/sha.h | 135 | sha_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
136 | sha_dgst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h | ||
137 | sha_dgst.o: ../../include/openssl/opensslconf.h | ||
138 | sha_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
139 | sha_dgst.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
140 | sha_dgst.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
134 | sha_dgst.o: ../md32_common.h sha_dgst.c sha_locl.h | 141 | sha_dgst.o: ../md32_common.h sha_dgst.c sha_locl.h |
135 | sha_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 142 | sha_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
136 | sha_one.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 143 | sha_one.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
diff --git a/src/lib/libcrypto/stack/Makefile b/src/lib/libcrypto/stack/Makefile index 5327692ac8..489a77b93c 100644 --- a/src/lib/libcrypto/stack/Makefile +++ b/src/lib/libcrypto/stack/Makefile | |||
@@ -33,7 +33,7 @@ top: | |||
33 | all: lib | 33 | all: lib |
34 | 34 | ||
35 | lib: $(LIBOBJ) | 35 | lib: $(LIBOBJ) |
36 | $(AR) $(LIB) $(LIBOBJ) | 36 | $(ARX) $(LIB) $(LIBOBJ) |
37 | $(RANLIB) $(LIB) || echo Never mind. | 37 | $(RANLIB) $(LIB) || echo Never mind. |
38 | @touch lib | 38 | @touch lib |
39 | 39 | ||
diff --git a/src/lib/libcrypto/txt_db/Makefile b/src/lib/libcrypto/txt_db/Makefile index e6f30331d8..87e57b49f6 100644 --- a/src/lib/libcrypto/txt_db/Makefile +++ b/src/lib/libcrypto/txt_db/Makefile | |||
@@ -33,7 +33,7 @@ top: | |||
33 | all: lib | 33 | all: lib |
34 | 34 | ||
35 | lib: $(LIBOBJ) | 35 | lib: $(LIBOBJ) |
36 | $(AR) $(LIB) $(LIBOBJ) | 36 | $(ARX) $(LIB) $(LIBOBJ) |
37 | $(RANLIB) $(LIB) || echo Never mind. | 37 | $(RANLIB) $(LIB) || echo Never mind. |
38 | @touch lib | 38 | @touch lib |
39 | 39 | ||
diff --git a/src/lib/libcrypto/ui/Makefile b/src/lib/libcrypto/ui/Makefile index a685659fb4..4755e206f6 100644 --- a/src/lib/libcrypto/ui/Makefile +++ b/src/lib/libcrypto/ui/Makefile | |||
@@ -37,7 +37,7 @@ top: | |||
37 | all: lib | 37 | all: lib |
38 | 38 | ||
39 | lib: $(LIBOBJ) | 39 | lib: $(LIBOBJ) |
40 | $(AR) $(LIB) $(LIBOBJ) | 40 | $(ARX) $(LIB) $(LIBOBJ) |
41 | $(RANLIB) $(LIB) || echo Never mind. | 41 | $(RANLIB) $(LIB) || echo Never mind. |
42 | @touch lib | 42 | @touch lib |
43 | 43 | ||
diff --git a/src/lib/libcrypto/util/arx.pl b/src/lib/libcrypto/util/arx.pl new file mode 100644 index 0000000000..ce62625c33 --- /dev/null +++ b/src/lib/libcrypto/util/arx.pl | |||
@@ -0,0 +1,15 @@ | |||
1 | #!/bin/perl | ||
2 | |||
3 | # Simple perl script to wrap round "ar" program and exclude any | ||
4 | # object files in the environment variable EXCL_OBJ | ||
5 | |||
6 | map { s/^.*\/([^\/]*)$/$1/ ; $EXCL{$_} = 1} split(' ', $ENV{EXCL_OBJ}); | ||
7 | |||
8 | #my @ks = keys %EXCL; | ||
9 | #print STDERR "Excluding: @ks \n"; | ||
10 | |||
11 | my @ARGS = grep { !exists $EXCL{$_} } @ARGV; | ||
12 | |||
13 | system @ARGS; | ||
14 | |||
15 | exit $? >> 8; | ||
diff --git a/src/lib/libcrypto/util/fipslink.pl b/src/lib/libcrypto/util/fipslink.pl index a893833c5c..3597bc1740 100644 --- a/src/lib/libcrypto/util/fipslink.pl +++ b/src/lib/libcrypto/util/fipslink.pl | |||
@@ -28,7 +28,7 @@ if (exists $ENV{"PREMAIN_DSO_EXE"}) | |||
28 | } | 28 | } |
29 | 29 | ||
30 | check_hash($sha1_exe, "fips_premain.c"); | 30 | check_hash($sha1_exe, "fips_premain.c"); |
31 | check_hash($sha1_exe, "fipscanister.o"); | 31 | check_hash($sha1_exe, "fipscanister.lib"); |
32 | 32 | ||
33 | 33 | ||
34 | print "Integrity check OK\n"; | 34 | print "Integrity check OK\n"; |
diff --git a/src/lib/libcrypto/util/mksdef.pl b/src/lib/libcrypto/util/mksdef.pl new file mode 100644 index 0000000000..065dc675f1 --- /dev/null +++ b/src/lib/libcrypto/util/mksdef.pl | |||
@@ -0,0 +1,87 @@ | |||
1 | |||
2 | # Perl script to split libeay32.def into two distinct DEF files for use in | ||
3 | # fipdso mode. It works out symbols in each case by running "link" command and | ||
4 | # parsing the output to find the list of missing symbols then splitting | ||
5 | # libeay32.def based on the result. | ||
6 | |||
7 | |||
8 | # Get list of unknown symbols | ||
9 | |||
10 | my @deferr = `link @ARGV`; | ||
11 | |||
12 | my $preamble = ""; | ||
13 | my @fipsdll; | ||
14 | my @fipsrest; | ||
15 | my %nosym; | ||
16 | |||
17 | # Add symbols to a hash for easy lookup | ||
18 | |||
19 | foreach (@deferr) | ||
20 | { | ||
21 | if (/^.*symbol (\S+)$/) | ||
22 | { | ||
23 | $nosym{$1} = 1; | ||
24 | } | ||
25 | } | ||
26 | |||
27 | open (IN, "ms/libeay32.def") || die "Can't Open DEF file for spliting"; | ||
28 | |||
29 | my $started = 0; | ||
30 | |||
31 | # Parse libeay32.def into two arrays depending on whether the symbol matches | ||
32 | # the missing list. | ||
33 | |||
34 | |||
35 | foreach (<IN>) | ||
36 | { | ||
37 | if (/^\s*(\S+)\s*(\@\S+)\s*$/) | ||
38 | { | ||
39 | $started = 1; | ||
40 | if (exists $nosym{$1}) | ||
41 | { | ||
42 | push @fipsrest, $_; | ||
43 | } | ||
44 | else | ||
45 | { | ||
46 | my $imptmp = sprintf " %-39s %s\n", | ||
47 | "$1=libosslfips.$1", $2; | ||
48 | push @fipsrest, $imptmp; | ||
49 | push @fipsdll, "\t$1\n"; | ||
50 | } | ||
51 | } | ||
52 | $preamble .= $_ unless $started; | ||
53 | } | ||
54 | |||
55 | close IN; | ||
56 | |||
57 | # Hack! Add some additional exports needed for libcryptofips.dll | ||
58 | # | ||
59 | |||
60 | push @fipsdll, "\tOPENSSL_showfatal\n"; | ||
61 | push @fipsdll, "\tOPENSSL_cpuid_setup\n"; | ||
62 | |||
63 | # Write out DEF files for each array | ||
64 | |||
65 | write_def("ms/libosslfips.def", "LIBOSSLFIPS", $preamble, \@fipsdll); | ||
66 | write_def("ms/libeayfips.def", "", $preamble, \@fipsrest); | ||
67 | |||
68 | |||
69 | sub write_def | ||
70 | { | ||
71 | my ($fnam, $defname, $preamble, $rdefs) = @_; | ||
72 | open (OUT, ">$fnam") || die "Can't Open DEF file $fnam for Writing\n"; | ||
73 | |||
74 | if ($defname ne "") | ||
75 | { | ||
76 | $preamble =~ s/LIBEAY32/$defname/g; | ||
77 | $preamble =~ s/LIBEAY/$defname/g; | ||
78 | } | ||
79 | print OUT $preamble; | ||
80 | foreach (@$rdefs) | ||
81 | { | ||
82 | print OUT $_; | ||
83 | } | ||
84 | close OUT; | ||
85 | } | ||
86 | |||
87 | |||
diff --git a/src/lib/libcrypto/x509/Makefile b/src/lib/libcrypto/x509/Makefile index ddcc3124a7..464752b159 100644 --- a/src/lib/libcrypto/x509/Makefile +++ b/src/lib/libcrypto/x509/Makefile | |||
@@ -43,7 +43,7 @@ top: | |||
43 | all: lib | 43 | all: lib |
44 | 44 | ||
45 | lib: $(LIBOBJ) | 45 | lib: $(LIBOBJ) |
46 | $(AR) $(LIB) $(LIBOBJ) | 46 | $(ARX) $(LIB) $(LIBOBJ) |
47 | $(RANLIB) $(LIB) || echo Never mind. | 47 | $(RANLIB) $(LIB) || echo Never mind. |
48 | @touch lib | 48 | @touch lib |
49 | 49 | ||
@@ -89,35 +89,37 @@ by_dir.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
89 | by_dir.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 89 | by_dir.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
90 | by_dir.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 90 | by_dir.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
91 | by_dir.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 91 | by_dir.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
92 | by_dir.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 92 | by_dir.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
93 | by_dir.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 93 | by_dir.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
94 | by_dir.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 94 | by_dir.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
95 | by_dir.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 95 | by_dir.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
96 | by_dir.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 96 | by_dir.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
97 | by_dir.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 97 | by_dir.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
98 | by_dir.o: ../../include/openssl/x509_vfy.h ../cryptlib.h by_dir.c | 98 | by_dir.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
99 | by_dir.o: ../cryptlib.h by_dir.c | ||
99 | by_file.o: ../../e_os.h ../../include/openssl/asn1.h | 100 | by_file.o: ../../e_os.h ../../include/openssl/asn1.h |
100 | by_file.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 101 | by_file.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
101 | by_file.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 102 | by_file.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
102 | by_file.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 103 | by_file.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
103 | by_file.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 104 | by_file.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
104 | by_file.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 105 | by_file.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
105 | by_file.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 106 | by_file.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
106 | by_file.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 107 | by_file.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
107 | by_file.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h | 108 | by_file.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
108 | by_file.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h | 109 | by_file.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
109 | by_file.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 110 | by_file.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
110 | by_file.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 111 | by_file.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
111 | by_file.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 112 | by_file.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
112 | by_file.o: ../cryptlib.h by_file.c | 113 | by_file.o: ../../include/openssl/x509_vfy.h ../cryptlib.h by_file.c |
113 | x509_att.o: ../../e_os.h ../../include/openssl/asn1.h | 114 | x509_att.o: ../../e_os.h ../../include/openssl/asn1.h |
114 | x509_att.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 115 | x509_att.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
115 | x509_att.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | 116 | x509_att.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
116 | x509_att.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 117 | x509_att.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
117 | x509_att.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 118 | x509_att.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
118 | x509_att.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 119 | x509_att.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
119 | x509_att.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 120 | x509_att.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
120 | x509_att.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 121 | x509_att.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
122 | x509_att.o: ../../include/openssl/opensslconf.h | ||
121 | x509_att.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 123 | x509_att.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
122 | x509_att.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 124 | x509_att.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
123 | x509_att.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 125 | x509_att.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -130,8 +132,9 @@ x509_cmp.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
130 | x509_cmp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 132 | x509_cmp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
131 | x509_cmp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 133 | x509_cmp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
132 | x509_cmp.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 134 | x509_cmp.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
133 | x509_cmp.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 135 | x509_cmp.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
134 | x509_cmp.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 136 | x509_cmp.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
137 | x509_cmp.o: ../../include/openssl/opensslconf.h | ||
135 | x509_cmp.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 138 | x509_cmp.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
136 | x509_cmp.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 139 | x509_cmp.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
137 | x509_cmp.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 140 | x509_cmp.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -143,22 +146,22 @@ x509_d2.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
143 | x509_d2.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 146 | x509_d2.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
144 | x509_d2.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 147 | x509_d2.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
145 | x509_d2.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 148 | x509_d2.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
146 | x509_d2.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 149 | x509_d2.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
147 | x509_d2.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 150 | x509_d2.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
148 | x509_d2.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 151 | x509_d2.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
149 | x509_d2.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 152 | x509_d2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
150 | x509_d2.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 153 | x509_d2.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
151 | x509_d2.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 154 | x509_d2.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
152 | x509_d2.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 155 | x509_d2.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
153 | x509_d2.o: ../cryptlib.h x509_d2.c | 156 | x509_d2.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x509_d2.c |
154 | x509_def.o: ../../e_os.h ../../include/openssl/asn1.h | 157 | x509_def.o: ../../e_os.h ../../include/openssl/asn1.h |
155 | x509_def.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 158 | x509_def.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
156 | x509_def.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 159 | x509_def.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
157 | x509_def.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 160 | x509_def.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
158 | x509_def.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 161 | x509_def.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
159 | x509_def.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 162 | x509_def.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
160 | x509_def.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 163 | x509_def.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
161 | x509_def.o: ../../include/openssl/opensslconf.h | 164 | x509_def.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
162 | x509_def.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 165 | x509_def.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
163 | x509_def.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 166 | x509_def.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
164 | x509_def.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 167 | x509_def.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -169,8 +172,9 @@ x509_err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
169 | x509_err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 172 | x509_err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
170 | x509_err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 173 | x509_err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
171 | x509_err.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 174 | x509_err.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
172 | x509_err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 175 | x509_err.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
173 | x509_err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 176 | x509_err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
177 | x509_err.o: ../../include/openssl/opensslconf.h | ||
174 | x509_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 178 | x509_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
175 | x509_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 179 | x509_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
176 | x509_err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 180 | x509_err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -182,8 +186,9 @@ x509_ext.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
182 | x509_ext.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 186 | x509_ext.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
183 | x509_ext.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 187 | x509_ext.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
184 | x509_ext.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 188 | x509_ext.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
185 | x509_ext.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 189 | x509_ext.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
186 | x509_ext.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 190 | x509_ext.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
191 | x509_ext.o: ../../include/openssl/opensslconf.h | ||
187 | x509_ext.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 192 | x509_ext.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
188 | x509_ext.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 193 | x509_ext.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
189 | x509_ext.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 194 | x509_ext.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -196,22 +201,22 @@ x509_lu.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
196 | x509_lu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 201 | x509_lu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
197 | x509_lu.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 202 | x509_lu.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
198 | x509_lu.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 203 | x509_lu.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
199 | x509_lu.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 204 | x509_lu.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
200 | x509_lu.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 205 | x509_lu.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
201 | x509_lu.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 206 | x509_lu.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
202 | x509_lu.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 207 | x509_lu.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
203 | x509_lu.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 208 | x509_lu.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
204 | x509_lu.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 209 | x509_lu.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
205 | x509_lu.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 210 | x509_lu.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
206 | x509_lu.o: ../cryptlib.h x509_lu.c | 211 | x509_lu.o: ../../include/openssl/x509v3.h ../cryptlib.h x509_lu.c |
207 | x509_obj.o: ../../e_os.h ../../include/openssl/asn1.h | 212 | x509_obj.o: ../../e_os.h ../../include/openssl/asn1.h |
208 | x509_obj.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 213 | x509_obj.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
209 | x509_obj.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 214 | x509_obj.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
210 | x509_obj.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 215 | x509_obj.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
211 | x509_obj.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 216 | x509_obj.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
212 | x509_obj.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 217 | x509_obj.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
213 | x509_obj.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 218 | x509_obj.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
214 | x509_obj.o: ../../include/openssl/opensslconf.h | 219 | x509_obj.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
215 | x509_obj.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 220 | x509_obj.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
216 | x509_obj.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 221 | x509_obj.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
217 | x509_obj.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 222 | x509_obj.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -223,8 +228,9 @@ x509_r2x.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
223 | x509_r2x.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 228 | x509_r2x.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
224 | x509_r2x.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 229 | x509_r2x.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
225 | x509_r2x.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 230 | x509_r2x.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
226 | x509_r2x.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 231 | x509_r2x.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
227 | x509_r2x.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 232 | x509_r2x.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
233 | x509_r2x.o: ../../include/openssl/opensslconf.h | ||
228 | x509_r2x.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 234 | x509_r2x.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
229 | x509_r2x.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 235 | x509_r2x.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
230 | x509_r2x.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 236 | x509_r2x.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -236,8 +242,9 @@ x509_req.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
236 | x509_req.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 242 | x509_req.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
237 | x509_req.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 243 | x509_req.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
238 | x509_req.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 244 | x509_req.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
239 | x509_req.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 245 | x509_req.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
240 | x509_req.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 246 | x509_req.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
247 | x509_req.o: ../../include/openssl/opensslconf.h | ||
241 | x509_req.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 248 | x509_req.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
242 | x509_req.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 249 | x509_req.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
243 | x509_req.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 250 | x509_req.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
@@ -249,9 +256,9 @@ x509_set.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
249 | x509_set.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 256 | x509_set.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
250 | x509_set.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 257 | x509_set.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
251 | x509_set.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 258 | x509_set.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
252 | x509_set.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 259 | x509_set.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
253 | x509_set.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 260 | x509_set.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
254 | x509_set.o: ../../include/openssl/opensslconf.h | 261 | x509_set.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
255 | x509_set.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 262 | x509_set.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
256 | x509_set.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 263 | x509_set.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
257 | x509_set.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 264 | x509_set.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -263,8 +270,9 @@ x509_trs.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
263 | x509_trs.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 270 | x509_trs.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
264 | x509_trs.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 271 | x509_trs.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
265 | x509_trs.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 272 | x509_trs.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
266 | x509_trs.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 273 | x509_trs.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
267 | x509_trs.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 274 | x509_trs.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
275 | x509_trs.o: ../../include/openssl/opensslconf.h | ||
268 | x509_trs.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 276 | x509_trs.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
269 | x509_trs.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 277 | x509_trs.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
270 | x509_trs.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 278 | x509_trs.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -276,9 +284,9 @@ x509_txt.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
276 | x509_txt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 284 | x509_txt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
277 | x509_txt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 285 | x509_txt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
278 | x509_txt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 286 | x509_txt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
279 | x509_txt.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 287 | x509_txt.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
280 | x509_txt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 288 | x509_txt.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
281 | x509_txt.o: ../../include/openssl/opensslconf.h | 289 | x509_txt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
282 | x509_txt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 290 | x509_txt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
283 | x509_txt.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 291 | x509_txt.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
284 | x509_txt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 292 | x509_txt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -290,22 +298,23 @@ x509_v3.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
290 | x509_v3.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 298 | x509_v3.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
291 | x509_v3.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 299 | x509_v3.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
292 | x509_v3.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 300 | x509_v3.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
293 | x509_v3.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 301 | x509_v3.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
294 | x509_v3.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 302 | x509_v3.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
295 | x509_v3.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 303 | x509_v3.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
296 | x509_v3.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 304 | x509_v3.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
297 | x509_v3.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 305 | x509_v3.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
298 | x509_v3.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 306 | x509_v3.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
299 | x509_v3.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 307 | x509_v3.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
300 | x509_v3.o: ../cryptlib.h x509_v3.c | 308 | x509_v3.o: ../../include/openssl/x509v3.h ../cryptlib.h x509_v3.c |
301 | x509_vfy.o: ../../e_os.h ../../include/openssl/asn1.h | 309 | x509_vfy.o: ../../e_os.h ../../include/openssl/asn1.h |
302 | x509_vfy.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 310 | x509_vfy.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
303 | x509_vfy.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | 311 | x509_vfy.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
304 | x509_vfy.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 312 | x509_vfy.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
305 | x509_vfy.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 313 | x509_vfy.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
306 | x509_vfy.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 314 | x509_vfy.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
307 | x509_vfy.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 315 | x509_vfy.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
308 | x509_vfy.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 316 | x509_vfy.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
317 | x509_vfy.o: ../../include/openssl/opensslconf.h | ||
309 | x509_vfy.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 318 | x509_vfy.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
310 | x509_vfy.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 319 | x509_vfy.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
311 | x509_vfy.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 320 | x509_vfy.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -318,8 +327,9 @@ x509_vpm.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
318 | x509_vpm.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 327 | x509_vpm.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
319 | x509_vpm.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 328 | x509_vpm.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
320 | x509_vpm.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 329 | x509_vpm.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
321 | x509_vpm.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 330 | x509_vpm.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
322 | x509_vpm.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 331 | x509_vpm.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
332 | x509_vpm.o: ../../include/openssl/opensslconf.h | ||
323 | x509_vpm.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 333 | x509_vpm.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
324 | x509_vpm.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 334 | x509_vpm.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
325 | x509_vpm.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 335 | x509_vpm.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -331,9 +341,9 @@ x509cset.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
331 | x509cset.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 341 | x509cset.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
332 | x509cset.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 342 | x509cset.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
333 | x509cset.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 343 | x509cset.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
334 | x509cset.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 344 | x509cset.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
335 | x509cset.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 345 | x509cset.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
336 | x509cset.o: ../../include/openssl/opensslconf.h | 346 | x509cset.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
337 | x509cset.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 347 | x509cset.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
338 | x509cset.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 348 | x509cset.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
339 | x509cset.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 349 | x509cset.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -344,9 +354,9 @@ x509name.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
344 | x509name.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 354 | x509name.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
345 | x509name.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 355 | x509name.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
346 | x509name.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 356 | x509name.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
347 | x509name.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 357 | x509name.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
348 | x509name.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 358 | x509name.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
349 | x509name.o: ../../include/openssl/opensslconf.h | 359 | x509name.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
350 | x509name.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 360 | x509name.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
351 | x509name.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 361 | x509name.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
352 | x509name.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 362 | x509name.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -357,9 +367,9 @@ x509rset.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
357 | x509rset.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 367 | x509rset.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
358 | x509rset.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 368 | x509rset.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
359 | x509rset.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 369 | x509rset.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
360 | x509rset.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 370 | x509rset.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
361 | x509rset.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 371 | x509rset.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
362 | x509rset.o: ../../include/openssl/opensslconf.h | 372 | x509rset.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
363 | x509rset.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 373 | x509rset.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
364 | x509rset.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 374 | x509rset.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
365 | x509rset.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 375 | x509rset.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -370,9 +380,9 @@ x509spki.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
370 | x509spki.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 380 | x509spki.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
371 | x509spki.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 381 | x509spki.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
372 | x509spki.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 382 | x509spki.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
373 | x509spki.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 383 | x509spki.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
374 | x509spki.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 384 | x509spki.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
375 | x509spki.o: ../../include/openssl/opensslconf.h | 385 | x509spki.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
376 | x509spki.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 386 | x509spki.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
377 | x509spki.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 387 | x509spki.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
378 | x509spki.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 388 | x509spki.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -383,9 +393,9 @@ x509type.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
383 | x509type.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 393 | x509type.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
384 | x509type.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 394 | x509type.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
385 | x509type.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 395 | x509type.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
386 | x509type.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 396 | x509type.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
387 | x509type.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 397 | x509type.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
388 | x509type.o: ../../include/openssl/opensslconf.h | 398 | x509type.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
389 | x509type.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 399 | x509type.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
390 | x509type.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 400 | x509type.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
391 | x509type.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 401 | x509type.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -396,11 +406,12 @@ x_all.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
396 | x_all.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h | 406 | x_all.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h |
397 | x_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 407 | x_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
398 | x_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 408 | x_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
399 | x_all.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 409 | x_all.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
400 | x_all.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 410 | x_all.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
401 | x_all.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 411 | x_all.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
402 | x_all.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 412 | x_all.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
403 | x_all.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | 413 | x_all.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h |
404 | x_all.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 414 | x_all.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
405 | x_all.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 415 | x_all.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
406 | x_all.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_all.c | 416 | x_all.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
417 | x_all.o: ../cryptlib.h x_all.c | ||
diff --git a/src/lib/libcrypto/x509v3/Makefile b/src/lib/libcrypto/x509v3/Makefile index 556ef351bf..e71dc42f9f 100644 --- a/src/lib/libcrypto/x509v3/Makefile +++ b/src/lib/libcrypto/x509v3/Makefile | |||
@@ -43,7 +43,7 @@ top: | |||
43 | all: lib | 43 | all: lib |
44 | 44 | ||
45 | lib: $(LIBOBJ) | 45 | lib: $(LIBOBJ) |
46 | $(AR) $(LIB) $(LIBOBJ) | 46 | $(ARX) $(LIB) $(LIBOBJ) |
47 | $(RANLIB) $(LIB) || echo Never mind. | 47 | $(RANLIB) $(LIB) || echo Never mind. |
48 | @touch lib | 48 | @touch lib |
49 | 49 | ||
@@ -90,8 +90,8 @@ pcy_cache.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
90 | pcy_cache.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 90 | pcy_cache.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
91 | pcy_cache.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 91 | pcy_cache.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
92 | pcy_cache.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 92 | pcy_cache.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
93 | pcy_cache.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 93 | pcy_cache.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
94 | pcy_cache.o: ../../include/openssl/objects.h | 94 | pcy_cache.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
95 | pcy_cache.o: ../../include/openssl/opensslconf.h | 95 | pcy_cache.o: ../../include/openssl/opensslconf.h |
96 | pcy_cache.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 96 | pcy_cache.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
97 | pcy_cache.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 97 | pcy_cache.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
@@ -105,8 +105,9 @@ pcy_data.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
105 | pcy_data.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 105 | pcy_data.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
106 | pcy_data.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 106 | pcy_data.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
107 | pcy_data.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 107 | pcy_data.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
108 | pcy_data.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 108 | pcy_data.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
109 | pcy_data.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 109 | pcy_data.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
110 | pcy_data.o: ../../include/openssl/opensslconf.h | ||
110 | pcy_data.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 111 | pcy_data.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
111 | pcy_data.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 112 | pcy_data.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
112 | pcy_data.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 113 | pcy_data.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -119,35 +120,36 @@ pcy_lib.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
119 | pcy_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 120 | pcy_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
120 | pcy_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 121 | pcy_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
121 | pcy_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 122 | pcy_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
122 | pcy_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 123 | pcy_lib.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
123 | pcy_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 124 | pcy_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
124 | pcy_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 125 | pcy_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
125 | pcy_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 126 | pcy_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
126 | pcy_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 127 | pcy_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
127 | pcy_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 128 | pcy_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
128 | pcy_lib.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 129 | pcy_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
129 | pcy_lib.o: ../cryptlib.h pcy_int.h pcy_lib.c | 130 | pcy_lib.o: ../../include/openssl/x509v3.h ../cryptlib.h pcy_int.h pcy_lib.c |
130 | pcy_map.o: ../../e_os.h ../../include/openssl/asn1.h | 131 | pcy_map.o: ../../e_os.h ../../include/openssl/asn1.h |
131 | pcy_map.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 132 | pcy_map.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
132 | pcy_map.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | 133 | pcy_map.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
133 | pcy_map.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 134 | pcy_map.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
134 | pcy_map.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 135 | pcy_map.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
135 | pcy_map.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 136 | pcy_map.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
136 | pcy_map.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 137 | pcy_map.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
137 | pcy_map.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 138 | pcy_map.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
138 | pcy_map.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 139 | pcy_map.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
139 | pcy_map.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 140 | pcy_map.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
140 | pcy_map.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 141 | pcy_map.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
141 | pcy_map.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 142 | pcy_map.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
142 | pcy_map.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 143 | pcy_map.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
143 | pcy_map.o: ../cryptlib.h pcy_int.h pcy_map.c | 144 | pcy_map.o: ../../include/openssl/x509v3.h ../cryptlib.h pcy_int.h pcy_map.c |
144 | pcy_node.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | 145 | pcy_node.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h |
145 | pcy_node.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 146 | pcy_node.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
146 | pcy_node.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 147 | pcy_node.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
147 | pcy_node.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 148 | pcy_node.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
148 | pcy_node.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h | 149 | pcy_node.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h |
149 | pcy_node.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 150 | pcy_node.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
150 | pcy_node.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 151 | pcy_node.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
152 | pcy_node.o: ../../include/openssl/opensslconf.h | ||
151 | pcy_node.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 153 | pcy_node.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
152 | pcy_node.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 154 | pcy_node.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
153 | pcy_node.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 155 | pcy_node.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -160,8 +162,9 @@ pcy_tree.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
160 | pcy_tree.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 162 | pcy_tree.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
161 | pcy_tree.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 163 | pcy_tree.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
162 | pcy_tree.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 164 | pcy_tree.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
163 | pcy_tree.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 165 | pcy_tree.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
164 | pcy_tree.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 166 | pcy_tree.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
167 | pcy_tree.o: ../../include/openssl/opensslconf.h | ||
165 | pcy_tree.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 168 | pcy_tree.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
166 | pcy_tree.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 169 | pcy_tree.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
167 | pcy_tree.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 170 | pcy_tree.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -174,37 +177,39 @@ v3_addr.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | |||
174 | v3_addr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 177 | v3_addr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
175 | v3_addr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 178 | v3_addr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
176 | v3_addr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 179 | v3_addr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
177 | v3_addr.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 180 | v3_addr.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
178 | v3_addr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 181 | v3_addr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
179 | v3_addr.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 182 | v3_addr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
180 | v3_addr.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 183 | v3_addr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
181 | v3_addr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 184 | v3_addr.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
182 | v3_addr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 185 | v3_addr.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
183 | v3_addr.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 186 | v3_addr.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
184 | v3_addr.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_addr.c | 187 | v3_addr.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
188 | v3_addr.o: ../cryptlib.h v3_addr.c | ||
185 | v3_akey.o: ../../e_os.h ../../include/openssl/asn1.h | 189 | v3_akey.o: ../../e_os.h ../../include/openssl/asn1.h |
186 | v3_akey.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 190 | v3_akey.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
187 | v3_akey.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 191 | v3_akey.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
188 | v3_akey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 192 | v3_akey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
189 | v3_akey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 193 | v3_akey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
190 | v3_akey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 194 | v3_akey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
191 | v3_akey.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 195 | v3_akey.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
192 | v3_akey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 196 | v3_akey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
193 | v3_akey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 197 | v3_akey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
194 | v3_akey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 198 | v3_akey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
195 | v3_akey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 199 | v3_akey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
196 | v3_akey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 200 | v3_akey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
197 | v3_akey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 201 | v3_akey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
198 | v3_akey.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_akey.c | 202 | v3_akey.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
203 | v3_akey.o: ../cryptlib.h v3_akey.c | ||
199 | v3_akeya.o: ../../e_os.h ../../include/openssl/asn1.h | 204 | v3_akeya.o: ../../e_os.h ../../include/openssl/asn1.h |
200 | v3_akeya.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 205 | v3_akeya.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
201 | v3_akeya.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 206 | v3_akeya.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
202 | v3_akeya.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 207 | v3_akeya.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
203 | v3_akeya.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 208 | v3_akeya.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
204 | v3_akeya.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 209 | v3_akeya.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
205 | v3_akeya.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 210 | v3_akeya.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
206 | v3_akeya.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 211 | v3_akeya.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
207 | v3_akeya.o: ../../include/openssl/opensslconf.h | 212 | v3_akeya.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
208 | v3_akeya.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 213 | v3_akeya.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
209 | v3_akeya.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 214 | v3_akeya.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
210 | v3_akeya.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 215 | v3_akeya.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -216,14 +221,15 @@ v3_alt.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | |||
216 | v3_alt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 221 | v3_alt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
217 | v3_alt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 222 | v3_alt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
218 | v3_alt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 223 | v3_alt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
219 | v3_alt.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 224 | v3_alt.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
220 | v3_alt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 225 | v3_alt.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
221 | v3_alt.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 226 | v3_alt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
222 | v3_alt.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 227 | v3_alt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
223 | v3_alt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 228 | v3_alt.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
224 | v3_alt.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 229 | v3_alt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
225 | v3_alt.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 230 | v3_alt.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
226 | v3_alt.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_alt.c | 231 | v3_alt.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
232 | v3_alt.o: ../cryptlib.h v3_alt.c | ||
227 | v3_asid.o: ../../e_os.h ../../include/openssl/asn1.h | 233 | v3_asid.o: ../../e_os.h ../../include/openssl/asn1.h |
228 | v3_asid.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 234 | v3_asid.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
229 | v3_asid.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | 235 | v3_asid.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h |
@@ -231,23 +237,23 @@ v3_asid.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
231 | v3_asid.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 237 | v3_asid.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
232 | v3_asid.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 238 | v3_asid.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
233 | v3_asid.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 239 | v3_asid.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
234 | v3_asid.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 240 | v3_asid.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
235 | v3_asid.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 241 | v3_asid.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
236 | v3_asid.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 242 | v3_asid.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
237 | v3_asid.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 243 | v3_asid.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
238 | v3_asid.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 244 | v3_asid.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
239 | v3_asid.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 245 | v3_asid.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
240 | v3_asid.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 246 | v3_asid.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
241 | v3_asid.o: ../cryptlib.h v3_asid.c | 247 | v3_asid.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_asid.c |
242 | v3_bcons.o: ../../e_os.h ../../include/openssl/asn1.h | 248 | v3_bcons.o: ../../e_os.h ../../include/openssl/asn1.h |
243 | v3_bcons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 249 | v3_bcons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
244 | v3_bcons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 250 | v3_bcons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
245 | v3_bcons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 251 | v3_bcons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
246 | v3_bcons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 252 | v3_bcons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
247 | v3_bcons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 253 | v3_bcons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
248 | v3_bcons.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 254 | v3_bcons.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
249 | v3_bcons.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 255 | v3_bcons.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
250 | v3_bcons.o: ../../include/openssl/opensslconf.h | 256 | v3_bcons.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
251 | v3_bcons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 257 | v3_bcons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
252 | v3_bcons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 258 | v3_bcons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
253 | v3_bcons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 259 | v3_bcons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -260,8 +266,9 @@ v3_bitst.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
260 | v3_bitst.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 266 | v3_bitst.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
261 | v3_bitst.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 267 | v3_bitst.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
262 | v3_bitst.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 268 | v3_bitst.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
263 | v3_bitst.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 269 | v3_bitst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
264 | v3_bitst.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 270 | v3_bitst.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
271 | v3_bitst.o: ../../include/openssl/opensslconf.h | ||
265 | v3_bitst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 272 | v3_bitst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
266 | v3_bitst.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 273 | v3_bitst.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
267 | v3_bitst.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 274 | v3_bitst.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -274,23 +281,23 @@ v3_conf.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
274 | v3_conf.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 281 | v3_conf.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
275 | v3_conf.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 282 | v3_conf.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
276 | v3_conf.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 283 | v3_conf.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
277 | v3_conf.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 284 | v3_conf.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
278 | v3_conf.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 285 | v3_conf.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
279 | v3_conf.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 286 | v3_conf.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
280 | v3_conf.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 287 | v3_conf.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
281 | v3_conf.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 288 | v3_conf.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
282 | v3_conf.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 289 | v3_conf.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
283 | v3_conf.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 290 | v3_conf.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
284 | v3_conf.o: ../cryptlib.h v3_conf.c | 291 | v3_conf.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_conf.c |
285 | v3_cpols.o: ../../e_os.h ../../include/openssl/asn1.h | 292 | v3_cpols.o: ../../e_os.h ../../include/openssl/asn1.h |
286 | v3_cpols.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 293 | v3_cpols.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
287 | v3_cpols.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 294 | v3_cpols.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
288 | v3_cpols.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 295 | v3_cpols.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
289 | v3_cpols.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 296 | v3_cpols.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
290 | v3_cpols.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 297 | v3_cpols.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
291 | v3_cpols.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 298 | v3_cpols.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
292 | v3_cpols.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 299 | v3_cpols.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
293 | v3_cpols.o: ../../include/openssl/opensslconf.h | 300 | v3_cpols.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
294 | v3_cpols.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 301 | v3_cpols.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
295 | v3_cpols.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 302 | v3_cpols.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
296 | v3_cpols.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 303 | v3_cpols.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -303,37 +310,38 @@ v3_crld.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | |||
303 | v3_crld.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 310 | v3_crld.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
304 | v3_crld.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 311 | v3_crld.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
305 | v3_crld.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 312 | v3_crld.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
306 | v3_crld.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 313 | v3_crld.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
307 | v3_crld.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 314 | v3_crld.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
308 | v3_crld.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 315 | v3_crld.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
309 | v3_crld.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 316 | v3_crld.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
310 | v3_crld.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 317 | v3_crld.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
311 | v3_crld.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 318 | v3_crld.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
312 | v3_crld.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 319 | v3_crld.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
313 | v3_crld.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_crld.c | 320 | v3_crld.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
321 | v3_crld.o: ../cryptlib.h v3_crld.c | ||
314 | v3_enum.o: ../../e_os.h ../../include/openssl/asn1.h | 322 | v3_enum.o: ../../e_os.h ../../include/openssl/asn1.h |
315 | v3_enum.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 323 | v3_enum.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
316 | v3_enum.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | 324 | v3_enum.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
317 | v3_enum.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 325 | v3_enum.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
318 | v3_enum.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 326 | v3_enum.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
319 | v3_enum.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 327 | v3_enum.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
320 | v3_enum.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 328 | v3_enum.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
321 | v3_enum.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 329 | v3_enum.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
322 | v3_enum.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 330 | v3_enum.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
323 | v3_enum.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 331 | v3_enum.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
324 | v3_enum.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 332 | v3_enum.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
325 | v3_enum.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 333 | v3_enum.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
326 | v3_enum.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 334 | v3_enum.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
327 | v3_enum.o: ../cryptlib.h v3_enum.c | 335 | v3_enum.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_enum.c |
328 | v3_extku.o: ../../e_os.h ../../include/openssl/asn1.h | 336 | v3_extku.o: ../../e_os.h ../../include/openssl/asn1.h |
329 | v3_extku.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 337 | v3_extku.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
330 | v3_extku.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 338 | v3_extku.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
331 | v3_extku.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 339 | v3_extku.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
332 | v3_extku.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 340 | v3_extku.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
333 | v3_extku.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 341 | v3_extku.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
334 | v3_extku.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 342 | v3_extku.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
335 | v3_extku.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 343 | v3_extku.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
336 | v3_extku.o: ../../include/openssl/opensslconf.h | 344 | v3_extku.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
337 | v3_extku.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 345 | v3_extku.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
338 | v3_extku.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 346 | v3_extku.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
339 | v3_extku.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 347 | v3_extku.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -346,76 +354,81 @@ v3_genn.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | |||
346 | v3_genn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 354 | v3_genn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
347 | v3_genn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 355 | v3_genn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
348 | v3_genn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 356 | v3_genn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
349 | v3_genn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 357 | v3_genn.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
350 | v3_genn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 358 | v3_genn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
351 | v3_genn.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 359 | v3_genn.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
352 | v3_genn.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 360 | v3_genn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
353 | v3_genn.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 361 | v3_genn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
354 | v3_genn.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 362 | v3_genn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
355 | v3_genn.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 363 | v3_genn.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
356 | v3_genn.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_genn.c | 364 | v3_genn.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
365 | v3_genn.o: ../cryptlib.h v3_genn.c | ||
357 | v3_ia5.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 366 | v3_ia5.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
358 | v3_ia5.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 367 | v3_ia5.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
359 | v3_ia5.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 368 | v3_ia5.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
360 | v3_ia5.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 369 | v3_ia5.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
361 | v3_ia5.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 370 | v3_ia5.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
362 | v3_ia5.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 371 | v3_ia5.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
363 | v3_ia5.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 372 | v3_ia5.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
364 | v3_ia5.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 373 | v3_ia5.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
365 | v3_ia5.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 374 | v3_ia5.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
366 | v3_ia5.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 375 | v3_ia5.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
367 | v3_ia5.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 376 | v3_ia5.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
368 | v3_ia5.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 377 | v3_ia5.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
369 | v3_ia5.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_ia5.c | 378 | v3_ia5.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
379 | v3_ia5.o: ../cryptlib.h v3_ia5.c | ||
370 | v3_info.o: ../../e_os.h ../../include/openssl/asn1.h | 380 | v3_info.o: ../../e_os.h ../../include/openssl/asn1.h |
371 | v3_info.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 381 | v3_info.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
372 | v3_info.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 382 | v3_info.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
373 | v3_info.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 383 | v3_info.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
374 | v3_info.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 384 | v3_info.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
375 | v3_info.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 385 | v3_info.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
376 | v3_info.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 386 | v3_info.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
377 | v3_info.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 387 | v3_info.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
378 | v3_info.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 388 | v3_info.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
379 | v3_info.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 389 | v3_info.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
380 | v3_info.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 390 | v3_info.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
381 | v3_info.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 391 | v3_info.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
382 | v3_info.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 392 | v3_info.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
383 | v3_info.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_info.c | 393 | v3_info.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
394 | v3_info.o: ../cryptlib.h v3_info.c | ||
384 | v3_int.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 395 | v3_int.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
385 | v3_int.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 396 | v3_int.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
386 | v3_int.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 397 | v3_int.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
387 | v3_int.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 398 | v3_int.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
388 | v3_int.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 399 | v3_int.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
389 | v3_int.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 400 | v3_int.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
390 | v3_int.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 401 | v3_int.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
391 | v3_int.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 402 | v3_int.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
392 | v3_int.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 403 | v3_int.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
393 | v3_int.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 404 | v3_int.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
394 | v3_int.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 405 | v3_int.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
395 | v3_int.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 406 | v3_int.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
396 | v3_int.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_int.c | 407 | v3_int.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
408 | v3_int.o: ../cryptlib.h v3_int.c | ||
397 | v3_lib.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 409 | v3_lib.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
398 | v3_lib.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 410 | v3_lib.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
399 | v3_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 411 | v3_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
400 | v3_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 412 | v3_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
401 | v3_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 413 | v3_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
402 | v3_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 414 | v3_lib.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
403 | v3_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 415 | v3_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
404 | v3_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 416 | v3_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
405 | v3_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 417 | v3_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
406 | v3_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 418 | v3_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
407 | v3_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 419 | v3_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
408 | v3_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 420 | v3_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
409 | v3_lib.o: ../../include/openssl/x509v3.h ../cryptlib.h ext_dat.h v3_lib.c | 421 | v3_lib.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
422 | v3_lib.o: ../cryptlib.h ext_dat.h v3_lib.c | ||
410 | v3_ncons.o: ../../e_os.h ../../include/openssl/asn1.h | 423 | v3_ncons.o: ../../e_os.h ../../include/openssl/asn1.h |
411 | v3_ncons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 424 | v3_ncons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
412 | v3_ncons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 425 | v3_ncons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
413 | v3_ncons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 426 | v3_ncons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
414 | v3_ncons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 427 | v3_ncons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
415 | v3_ncons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 428 | v3_ncons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
416 | v3_ncons.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 429 | v3_ncons.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
417 | v3_ncons.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 430 | v3_ncons.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
418 | v3_ncons.o: ../../include/openssl/opensslconf.h | 431 | v3_ncons.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
419 | v3_ncons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 432 | v3_ncons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
420 | v3_ncons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 433 | v3_ncons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
421 | v3_ncons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 434 | v3_ncons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -428,49 +441,52 @@ v3_ocsp.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
428 | v3_ocsp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 441 | v3_ocsp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
429 | v3_ocsp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 442 | v3_ocsp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
430 | v3_ocsp.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 443 | v3_ocsp.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
431 | v3_ocsp.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 444 | v3_ocsp.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
432 | v3_ocsp.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h | 445 | v3_ocsp.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
433 | v3_ocsp.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 446 | v3_ocsp.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h |
434 | v3_ocsp.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 447 | v3_ocsp.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
435 | v3_ocsp.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 448 | v3_ocsp.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
436 | v3_ocsp.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 449 | v3_ocsp.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
437 | v3_ocsp.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 450 | v3_ocsp.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
438 | v3_ocsp.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_ocsp.c | 451 | v3_ocsp.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
452 | v3_ocsp.o: ../cryptlib.h v3_ocsp.c | ||
439 | v3_pci.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 453 | v3_pci.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
440 | v3_pci.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 454 | v3_pci.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
441 | v3_pci.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 455 | v3_pci.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
442 | v3_pci.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 456 | v3_pci.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
443 | v3_pci.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 457 | v3_pci.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
444 | v3_pci.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 458 | v3_pci.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
445 | v3_pci.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 459 | v3_pci.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
446 | v3_pci.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 460 | v3_pci.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
447 | v3_pci.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 461 | v3_pci.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
448 | v3_pci.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 462 | v3_pci.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
449 | v3_pci.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 463 | v3_pci.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
450 | v3_pci.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 464 | v3_pci.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
451 | v3_pci.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_pci.c | 465 | v3_pci.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
466 | v3_pci.o: ../cryptlib.h v3_pci.c | ||
452 | v3_pcia.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h | 467 | v3_pcia.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h |
453 | v3_pcia.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 468 | v3_pcia.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
454 | v3_pcia.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | 469 | v3_pcia.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
455 | v3_pcia.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 470 | v3_pcia.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
456 | v3_pcia.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 471 | v3_pcia.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
457 | v3_pcia.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 472 | v3_pcia.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
458 | v3_pcia.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 473 | v3_pcia.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
459 | v3_pcia.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 474 | v3_pcia.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
460 | v3_pcia.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 475 | v3_pcia.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
461 | v3_pcia.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 476 | v3_pcia.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
462 | v3_pcia.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 477 | v3_pcia.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
463 | v3_pcia.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 478 | v3_pcia.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
464 | v3_pcia.o: ../../include/openssl/x509v3.h v3_pcia.c | 479 | v3_pcia.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
480 | v3_pcia.o: v3_pcia.c | ||
465 | v3_pcons.o: ../../e_os.h ../../include/openssl/asn1.h | 481 | v3_pcons.o: ../../e_os.h ../../include/openssl/asn1.h |
466 | v3_pcons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 482 | v3_pcons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
467 | v3_pcons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 483 | v3_pcons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
468 | v3_pcons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 484 | v3_pcons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
469 | v3_pcons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 485 | v3_pcons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
470 | v3_pcons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 486 | v3_pcons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
471 | v3_pcons.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 487 | v3_pcons.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
472 | v3_pcons.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 488 | v3_pcons.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
473 | v3_pcons.o: ../../include/openssl/opensslconf.h | 489 | v3_pcons.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
474 | v3_pcons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 490 | v3_pcons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
475 | v3_pcons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 491 | v3_pcons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
476 | v3_pcons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 492 | v3_pcons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -483,23 +499,24 @@ v3_pku.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | |||
483 | v3_pku.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 499 | v3_pku.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
484 | v3_pku.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 500 | v3_pku.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
485 | v3_pku.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 501 | v3_pku.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
486 | v3_pku.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 502 | v3_pku.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
487 | v3_pku.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 503 | v3_pku.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
488 | v3_pku.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 504 | v3_pku.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
489 | v3_pku.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 505 | v3_pku.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
490 | v3_pku.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 506 | v3_pku.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
491 | v3_pku.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 507 | v3_pku.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
492 | v3_pku.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 508 | v3_pku.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
493 | v3_pku.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_pku.c | 509 | v3_pku.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
510 | v3_pku.o: ../cryptlib.h v3_pku.c | ||
494 | v3_pmaps.o: ../../e_os.h ../../include/openssl/asn1.h | 511 | v3_pmaps.o: ../../e_os.h ../../include/openssl/asn1.h |
495 | v3_pmaps.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 512 | v3_pmaps.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
496 | v3_pmaps.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 513 | v3_pmaps.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
497 | v3_pmaps.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 514 | v3_pmaps.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
498 | v3_pmaps.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 515 | v3_pmaps.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
499 | v3_pmaps.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 516 | v3_pmaps.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
500 | v3_pmaps.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 517 | v3_pmaps.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
501 | v3_pmaps.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 518 | v3_pmaps.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
502 | v3_pmaps.o: ../../include/openssl/opensslconf.h | 519 | v3_pmaps.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
503 | v3_pmaps.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 520 | v3_pmaps.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
504 | v3_pmaps.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 521 | v3_pmaps.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
505 | v3_pmaps.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 522 | v3_pmaps.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -511,51 +528,52 @@ v3_prn.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | |||
511 | v3_prn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 528 | v3_prn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
512 | v3_prn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 529 | v3_prn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
513 | v3_prn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 530 | v3_prn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
514 | v3_prn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 531 | v3_prn.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
515 | v3_prn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 532 | v3_prn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
516 | v3_prn.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 533 | v3_prn.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
517 | v3_prn.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 534 | v3_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
518 | v3_prn.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 535 | v3_prn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
519 | v3_prn.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 536 | v3_prn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
520 | v3_prn.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 537 | v3_prn.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
521 | v3_prn.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_prn.c | 538 | v3_prn.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
539 | v3_prn.o: ../cryptlib.h v3_prn.c | ||
522 | v3_purp.o: ../../e_os.h ../../include/openssl/asn1.h | 540 | v3_purp.o: ../../e_os.h ../../include/openssl/asn1.h |
523 | v3_purp.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 541 | v3_purp.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
524 | v3_purp.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | 542 | v3_purp.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
525 | v3_purp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 543 | v3_purp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
526 | v3_purp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 544 | v3_purp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
527 | v3_purp.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 545 | v3_purp.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
528 | v3_purp.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 546 | v3_purp.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
529 | v3_purp.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 547 | v3_purp.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
530 | v3_purp.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 548 | v3_purp.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
531 | v3_purp.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 549 | v3_purp.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
532 | v3_purp.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 550 | v3_purp.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
533 | v3_purp.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 551 | v3_purp.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
534 | v3_purp.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 552 | v3_purp.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
535 | v3_purp.o: ../cryptlib.h v3_purp.c | 553 | v3_purp.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_purp.c |
536 | v3_skey.o: ../../e_os.h ../../include/openssl/asn1.h | 554 | v3_skey.o: ../../e_os.h ../../include/openssl/asn1.h |
537 | v3_skey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 555 | v3_skey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
538 | v3_skey.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | 556 | v3_skey.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
539 | v3_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 557 | v3_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
540 | v3_skey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 558 | v3_skey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
541 | v3_skey.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 559 | v3_skey.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
542 | v3_skey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 560 | v3_skey.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
543 | v3_skey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 561 | v3_skey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
544 | v3_skey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 562 | v3_skey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
545 | v3_skey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 563 | v3_skey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
546 | v3_skey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 564 | v3_skey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
547 | v3_skey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 565 | v3_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
548 | v3_skey.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 566 | v3_skey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
549 | v3_skey.o: ../cryptlib.h v3_skey.c | 567 | v3_skey.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_skey.c |
550 | v3_sxnet.o: ../../e_os.h ../../include/openssl/asn1.h | 568 | v3_sxnet.o: ../../e_os.h ../../include/openssl/asn1.h |
551 | v3_sxnet.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 569 | v3_sxnet.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
552 | v3_sxnet.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 570 | v3_sxnet.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
553 | v3_sxnet.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 571 | v3_sxnet.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
554 | v3_sxnet.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 572 | v3_sxnet.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
555 | v3_sxnet.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 573 | v3_sxnet.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
556 | v3_sxnet.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 574 | v3_sxnet.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
557 | v3_sxnet.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 575 | v3_sxnet.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
558 | v3_sxnet.o: ../../include/openssl/opensslconf.h | 576 | v3_sxnet.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
559 | v3_sxnet.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 577 | v3_sxnet.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
560 | v3_sxnet.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 578 | v3_sxnet.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
561 | v3_sxnet.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 579 | v3_sxnet.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -568,24 +586,25 @@ v3_utl.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
568 | v3_utl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 586 | v3_utl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
569 | v3_utl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 587 | v3_utl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
570 | v3_utl.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 588 | v3_utl.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
571 | v3_utl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 589 | v3_utl.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
572 | v3_utl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 590 | v3_utl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
573 | v3_utl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 591 | v3_utl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
574 | v3_utl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 592 | v3_utl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
575 | v3_utl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 593 | v3_utl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
576 | v3_utl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 594 | v3_utl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
577 | v3_utl.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 595 | v3_utl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
578 | v3_utl.o: ../cryptlib.h v3_utl.c | 596 | v3_utl.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_utl.c |
579 | v3err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | 597 | v3err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h |
580 | v3err.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 598 | v3err.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
581 | v3err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 599 | v3err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
582 | v3err.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 600 | v3err.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
583 | v3err.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 601 | v3err.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
584 | v3err.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 602 | v3err.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
585 | v3err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 603 | v3err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
586 | v3err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 604 | v3err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
587 | v3err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 605 | v3err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
588 | v3err.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 606 | v3err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
589 | v3err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 607 | v3err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
590 | v3err.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 608 | v3err.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
591 | v3err.o: ../../include/openssl/x509v3.h v3err.c | 609 | v3err.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
610 | v3err.o: v3err.c | ||
diff --git a/src/lib/libssl/src/crypto/aes/Makefile b/src/lib/libssl/src/crypto/aes/Makefile index 22c7203dbb..9d174f4c3e 100644 --- a/src/lib/libssl/src/crypto/aes/Makefile +++ b/src/lib/libssl/src/crypto/aes/Makefile | |||
@@ -41,7 +41,7 @@ top: | |||
41 | all: lib | 41 | all: lib |
42 | 42 | ||
43 | lib: $(LIBOBJ) | 43 | lib: $(LIBOBJ) |
44 | $(AR) $(LIB) $(LIBOBJ) | 44 | $(ARX) $(LIB) $(LIBOBJ) |
45 | $(RANLIB) $(LIB) || echo Never mind. | 45 | $(RANLIB) $(LIB) || echo Never mind. |
46 | @touch lib | 46 | @touch lib |
47 | 47 | ||
@@ -103,7 +103,8 @@ aes_cfb.o: ../../e_os.h ../../include/openssl/aes.h | |||
103 | aes_cfb.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | 103 | aes_cfb.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h |
104 | aes_cfb.o: aes_cfb.c aes_locl.h | 104 | aes_cfb.o: aes_cfb.c aes_locl.h |
105 | aes_core.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h | 105 | aes_core.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h |
106 | aes_core.o: ../../include/openssl/opensslconf.h aes_core.c aes_locl.h | 106 | aes_core.o: ../../include/openssl/fips.h ../../include/openssl/opensslconf.h |
107 | aes_core.o: aes_core.c aes_locl.h | ||
107 | aes_ctr.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h | 108 | aes_ctr.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h |
108 | aes_ctr.o: ../../include/openssl/opensslconf.h aes_ctr.c aes_locl.h | 109 | aes_ctr.o: ../../include/openssl/opensslconf.h aes_ctr.c aes_locl.h |
109 | aes_ecb.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h | 110 | aes_ecb.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h |
diff --git a/src/lib/libssl/src/crypto/asn1/Makefile b/src/lib/libssl/src/crypto/asn1/Makefile index 63066899d0..94a6885804 100644 --- a/src/lib/libssl/src/crypto/asn1/Makefile +++ b/src/lib/libssl/src/crypto/asn1/Makefile | |||
@@ -63,7 +63,7 @@ pk: pk.c | |||
63 | all: lib | 63 | all: lib |
64 | 64 | ||
65 | lib: $(LIBOBJ) | 65 | lib: $(LIBOBJ) |
66 | $(AR) $(LIB) $(LIBOBJ) | 66 | $(ARX) $(LIB) $(LIBOBJ) |
67 | $(RANLIB) $(LIB) || echo Never mind. | 67 | $(RANLIB) $(LIB) || echo Never mind. |
68 | @touch lib | 68 | @touch lib |
69 | 69 | ||
@@ -142,9 +142,9 @@ a_digest.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
142 | a_digest.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 142 | a_digest.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
143 | a_digest.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 143 | a_digest.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
144 | a_digest.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 144 | a_digest.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
145 | a_digest.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 145 | a_digest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
146 | a_digest.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 146 | a_digest.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
147 | a_digest.o: ../../include/openssl/opensslconf.h | 147 | a_digest.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
148 | a_digest.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 148 | a_digest.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
149 | a_digest.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 149 | a_digest.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
150 | a_digest.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 150 | a_digest.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -250,27 +250,27 @@ a_sign.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | |||
250 | a_sign.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 250 | a_sign.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
251 | a_sign.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 251 | a_sign.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
252 | a_sign.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 252 | a_sign.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
253 | a_sign.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 253 | a_sign.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
254 | a_sign.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 254 | a_sign.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
255 | a_sign.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 255 | a_sign.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
256 | a_sign.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 256 | a_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
257 | a_sign.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 257 | a_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
258 | a_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 258 | a_sign.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
259 | a_sign.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 259 | a_sign.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
260 | a_sign.o: ../cryptlib.h a_sign.c | 260 | a_sign.o: ../../include/openssl/x509_vfy.h ../cryptlib.h a_sign.c |
261 | a_strex.o: ../../e_os.h ../../include/openssl/asn1.h | 261 | a_strex.o: ../../e_os.h ../../include/openssl/asn1.h |
262 | a_strex.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 262 | a_strex.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
263 | a_strex.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 263 | a_strex.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
264 | a_strex.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 264 | a_strex.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
265 | a_strex.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 265 | a_strex.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
266 | a_strex.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 266 | a_strex.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
267 | a_strex.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 267 | a_strex.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
268 | a_strex.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 268 | a_strex.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
269 | a_strex.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 269 | a_strex.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
270 | a_strex.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 270 | a_strex.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
271 | a_strex.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 271 | a_strex.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
272 | a_strex.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 272 | a_strex.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
273 | a_strex.o: ../cryptlib.h a_strex.c charmap.h | 273 | a_strex.o: ../../include/openssl/x509_vfy.h ../cryptlib.h a_strex.c charmap.h |
274 | a_strnid.o: ../../e_os.h ../../include/openssl/asn1.h | 274 | a_strnid.o: ../../e_os.h ../../include/openssl/asn1.h |
275 | a_strnid.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 275 | a_strnid.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
276 | a_strnid.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 276 | a_strnid.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
@@ -318,8 +318,9 @@ a_verify.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
318 | a_verify.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 318 | a_verify.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
319 | a_verify.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 319 | a_verify.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
320 | a_verify.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 320 | a_verify.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
321 | a_verify.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 321 | a_verify.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
322 | a_verify.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 322 | a_verify.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
323 | a_verify.o: ../../include/openssl/opensslconf.h | ||
323 | a_verify.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 324 | a_verify.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
324 | a_verify.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 325 | a_verify.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
325 | a_verify.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 326 | a_verify.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -338,8 +339,9 @@ asn1_gen.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
338 | asn1_gen.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 339 | asn1_gen.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
339 | asn1_gen.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 340 | asn1_gen.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
340 | asn1_gen.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 341 | asn1_gen.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
341 | asn1_gen.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 342 | asn1_gen.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
342 | asn1_gen.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 343 | asn1_gen.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
344 | asn1_gen.o: ../../include/openssl/opensslconf.h | ||
343 | asn1_gen.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 345 | asn1_gen.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
344 | asn1_gen.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 346 | asn1_gen.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
345 | asn1_gen.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 347 | asn1_gen.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -369,8 +371,9 @@ asn_mime.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
369 | asn_mime.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 371 | asn_mime.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
370 | asn_mime.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 372 | asn_mime.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
371 | asn_mime.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 373 | asn_mime.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
372 | asn_mime.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 374 | asn_mime.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
373 | asn_mime.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 375 | asn_mime.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
376 | asn_mime.o: ../../include/openssl/opensslconf.h | ||
374 | asn_mime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 377 | asn_mime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
375 | asn_mime.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 378 | asn_mime.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
376 | asn_mime.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 379 | asn_mime.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
@@ -383,9 +386,9 @@ asn_moid.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
383 | asn_moid.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h | 386 | asn_moid.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h |
384 | asn_moid.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 387 | asn_moid.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
385 | asn_moid.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 388 | asn_moid.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
386 | asn_moid.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 389 | asn_moid.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
387 | asn_moid.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 390 | asn_moid.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
388 | asn_moid.o: ../../include/openssl/opensslconf.h | 391 | asn_moid.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
389 | asn_moid.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 392 | asn_moid.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
390 | asn_moid.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 393 | asn_moid.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
391 | asn_moid.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 394 | asn_moid.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -404,23 +407,23 @@ d2i_pr.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | |||
404 | d2i_pr.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h | 407 | d2i_pr.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h |
405 | d2i_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 408 | d2i_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
406 | d2i_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 409 | d2i_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
407 | d2i_pr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 410 | d2i_pr.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
408 | d2i_pr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 411 | d2i_pr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
409 | d2i_pr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 412 | d2i_pr.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
410 | d2i_pr.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | 413 | d2i_pr.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h |
411 | d2i_pr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 414 | d2i_pr.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h |
412 | d2i_pr.o: ../cryptlib.h d2i_pr.c | 415 | d2i_pr.o: ../../include/openssl/symhacks.h ../cryptlib.h d2i_pr.c |
413 | d2i_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 416 | d2i_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
414 | d2i_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | 417 | d2i_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h |
415 | d2i_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h | 418 | d2i_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h |
416 | d2i_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 419 | d2i_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
417 | d2i_pu.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 420 | d2i_pu.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
418 | d2i_pu.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 421 | d2i_pu.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
419 | d2i_pu.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 422 | d2i_pu.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
420 | d2i_pu.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 423 | d2i_pu.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
421 | d2i_pu.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | 424 | d2i_pu.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h |
422 | d2i_pu.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 425 | d2i_pu.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h |
423 | d2i_pu.o: ../cryptlib.h d2i_pu.c | 426 | d2i_pu.o: ../../include/openssl/symhacks.h ../cryptlib.h d2i_pu.c |
424 | evp_asn1.o: ../../e_os.h ../../include/openssl/asn1.h | 427 | evp_asn1.o: ../../e_os.h ../../include/openssl/asn1.h |
425 | evp_asn1.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h | 428 | evp_asn1.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h |
426 | evp_asn1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 429 | evp_asn1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
@@ -456,71 +459,73 @@ i2d_pr.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | |||
456 | i2d_pr.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h | 459 | i2d_pr.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h |
457 | i2d_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 460 | i2d_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
458 | i2d_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 461 | i2d_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
459 | i2d_pr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 462 | i2d_pr.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
460 | i2d_pr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 463 | i2d_pr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
461 | i2d_pr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 464 | i2d_pr.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
462 | i2d_pr.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | 465 | i2d_pr.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h |
463 | i2d_pr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 466 | i2d_pr.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h |
464 | i2d_pr.o: ../cryptlib.h i2d_pr.c | 467 | i2d_pr.o: ../../include/openssl/symhacks.h ../cryptlib.h i2d_pr.c |
465 | i2d_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 468 | i2d_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
466 | i2d_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | 469 | i2d_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h |
467 | i2d_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h | 470 | i2d_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h |
468 | i2d_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 471 | i2d_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
469 | i2d_pu.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 472 | i2d_pu.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
470 | i2d_pu.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 473 | i2d_pu.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
471 | i2d_pu.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 474 | i2d_pu.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
472 | i2d_pu.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 475 | i2d_pu.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
473 | i2d_pu.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | 476 | i2d_pu.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h |
474 | i2d_pu.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 477 | i2d_pu.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h |
475 | i2d_pu.o: ../cryptlib.h i2d_pu.c | 478 | i2d_pu.o: ../../include/openssl/symhacks.h ../cryptlib.h i2d_pu.c |
476 | n_pkey.o: ../../e_os.h ../../include/openssl/asn1.h | 479 | n_pkey.o: ../../e_os.h ../../include/openssl/asn1.h |
477 | n_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/asn1t.h | 480 | n_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/asn1t.h |
478 | n_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 481 | n_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
479 | n_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 482 | n_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
480 | n_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 483 | n_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
481 | n_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 484 | n_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
482 | n_pkey.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 485 | n_pkey.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
483 | n_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 486 | n_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
484 | n_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 487 | n_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
485 | n_pkey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 488 | n_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
486 | n_pkey.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | 489 | n_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h |
487 | n_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 490 | n_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
488 | n_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 491 | n_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
489 | n_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h n_pkey.c | 492 | n_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
493 | n_pkey.o: ../cryptlib.h n_pkey.c | ||
490 | nsseq.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h | 494 | nsseq.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h |
491 | nsseq.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 495 | nsseq.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
492 | nsseq.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 496 | nsseq.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
493 | nsseq.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 497 | nsseq.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
494 | nsseq.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h | 498 | nsseq.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h |
495 | nsseq.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 499 | nsseq.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
496 | nsseq.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 500 | nsseq.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
497 | nsseq.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 501 | nsseq.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
498 | nsseq.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 502 | nsseq.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
499 | nsseq.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 503 | nsseq.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
500 | nsseq.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 504 | nsseq.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
501 | nsseq.o: ../../include/openssl/x509_vfy.h nsseq.c | 505 | nsseq.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h nsseq.c |
502 | p5_pbe.o: ../../e_os.h ../../include/openssl/asn1.h | 506 | p5_pbe.o: ../../e_os.h ../../include/openssl/asn1.h |
503 | p5_pbe.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 507 | p5_pbe.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
504 | p5_pbe.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 508 | p5_pbe.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
505 | p5_pbe.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 509 | p5_pbe.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
506 | p5_pbe.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 510 | p5_pbe.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
507 | p5_pbe.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 511 | p5_pbe.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
508 | p5_pbe.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 512 | p5_pbe.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
509 | p5_pbe.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 513 | p5_pbe.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
510 | p5_pbe.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 514 | p5_pbe.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
511 | p5_pbe.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 515 | p5_pbe.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
512 | p5_pbe.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 516 | p5_pbe.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h |
513 | p5_pbe.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 517 | p5_pbe.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
514 | p5_pbe.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 518 | p5_pbe.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
515 | p5_pbe.o: ../cryptlib.h p5_pbe.c | 519 | p5_pbe.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p5_pbe.c |
516 | p5_pbev2.o: ../../e_os.h ../../include/openssl/asn1.h | 520 | p5_pbev2.o: ../../e_os.h ../../include/openssl/asn1.h |
517 | p5_pbev2.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 521 | p5_pbev2.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
518 | p5_pbev2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 522 | p5_pbev2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
519 | p5_pbev2.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 523 | p5_pbev2.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
520 | p5_pbev2.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 524 | p5_pbev2.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
521 | p5_pbev2.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 525 | p5_pbev2.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
522 | p5_pbev2.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 526 | p5_pbev2.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
523 | p5_pbev2.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 527 | p5_pbev2.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
528 | p5_pbev2.o: ../../include/openssl/opensslconf.h | ||
524 | p5_pbev2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 529 | p5_pbev2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
525 | p5_pbev2.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 530 | p5_pbev2.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
526 | p5_pbev2.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 531 | p5_pbev2.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
@@ -533,41 +538,42 @@ p8_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
533 | p8_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 538 | p8_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
534 | p8_pkey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 539 | p8_pkey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
535 | p8_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 540 | p8_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
536 | p8_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 541 | p8_pkey.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
537 | p8_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 542 | p8_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
538 | p8_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 543 | p8_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
539 | p8_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 544 | p8_pkey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
540 | p8_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 545 | p8_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
541 | p8_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 546 | p8_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
542 | p8_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p8_pkey.c | 547 | p8_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
548 | p8_pkey.o: ../cryptlib.h p8_pkey.c | ||
543 | t_bitst.o: ../../e_os.h ../../include/openssl/asn1.h | 549 | t_bitst.o: ../../e_os.h ../../include/openssl/asn1.h |
544 | t_bitst.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 550 | t_bitst.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
545 | t_bitst.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | 551 | t_bitst.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
546 | t_bitst.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 552 | t_bitst.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
547 | t_bitst.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 553 | t_bitst.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
548 | t_bitst.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 554 | t_bitst.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
549 | t_bitst.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 555 | t_bitst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
550 | t_bitst.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 556 | t_bitst.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
551 | t_bitst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 557 | t_bitst.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
552 | t_bitst.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 558 | t_bitst.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
553 | t_bitst.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 559 | t_bitst.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
554 | t_bitst.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 560 | t_bitst.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
555 | t_bitst.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 561 | t_bitst.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
556 | t_bitst.o: ../cryptlib.h t_bitst.c | 562 | t_bitst.o: ../../include/openssl/x509v3.h ../cryptlib.h t_bitst.c |
557 | t_crl.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 563 | t_crl.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
558 | t_crl.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | 564 | t_crl.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h |
559 | t_crl.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | 565 | t_crl.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
560 | t_crl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 566 | t_crl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
561 | t_crl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 567 | t_crl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
562 | t_crl.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 568 | t_crl.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
563 | t_crl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 569 | t_crl.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
564 | t_crl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 570 | t_crl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
565 | t_crl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 571 | t_crl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
566 | t_crl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 572 | t_crl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
567 | t_crl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 573 | t_crl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
568 | t_crl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 574 | t_crl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
569 | t_crl.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 575 | t_crl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
570 | t_crl.o: ../cryptlib.h t_crl.c | 576 | t_crl.o: ../../include/openssl/x509v3.h ../cryptlib.h t_crl.c |
571 | t_pkey.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 577 | t_pkey.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
572 | t_pkey.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | 578 | t_pkey.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h |
573 | t_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h | 579 | t_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h |
@@ -585,57 +591,57 @@ t_req.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
585 | t_req.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h | 591 | t_req.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h |
586 | t_req.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 592 | t_req.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
587 | t_req.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 593 | t_req.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
588 | t_req.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 594 | t_req.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
589 | t_req.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 595 | t_req.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
590 | t_req.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 596 | t_req.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
591 | t_req.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 597 | t_req.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
592 | t_req.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | 598 | t_req.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h |
593 | t_req.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 599 | t_req.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
594 | t_req.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 600 | t_req.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
595 | t_req.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 601 | t_req.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
596 | t_req.o: ../cryptlib.h t_req.c | 602 | t_req.o: ../../include/openssl/x509v3.h ../cryptlib.h t_req.c |
597 | t_spki.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 603 | t_spki.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
598 | t_spki.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | 604 | t_spki.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h |
599 | t_spki.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h | 605 | t_spki.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h |
600 | t_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 606 | t_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
601 | t_spki.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 607 | t_spki.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
602 | t_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 608 | t_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
603 | t_spki.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 609 | t_spki.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
604 | t_spki.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 610 | t_spki.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
605 | t_spki.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 611 | t_spki.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
606 | t_spki.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h | 612 | t_spki.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
607 | t_spki.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 613 | t_spki.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h |
608 | t_spki.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 614 | t_spki.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
609 | t_spki.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 615 | t_spki.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
610 | t_spki.o: ../cryptlib.h t_spki.c | 616 | t_spki.o: ../../include/openssl/x509_vfy.h ../cryptlib.h t_spki.c |
611 | t_x509.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 617 | t_x509.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
612 | t_x509.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | 618 | t_x509.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h |
613 | t_x509.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | 619 | t_x509.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
614 | t_x509.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h | 620 | t_x509.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h |
615 | t_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 621 | t_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
616 | t_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 622 | t_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
617 | t_x509.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 623 | t_x509.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
618 | t_x509.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 624 | t_x509.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
619 | t_x509.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 625 | t_x509.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
620 | t_x509.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 626 | t_x509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
621 | t_x509.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | 627 | t_x509.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h |
622 | t_x509.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 628 | t_x509.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
623 | t_x509.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 629 | t_x509.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
624 | t_x509.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 630 | t_x509.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
625 | t_x509.o: ../cryptlib.h t_x509.c | 631 | t_x509.o: ../../include/openssl/x509v3.h ../cryptlib.h t_x509.c |
626 | t_x509a.o: ../../e_os.h ../../include/openssl/asn1.h | 632 | t_x509a.o: ../../e_os.h ../../include/openssl/asn1.h |
627 | t_x509a.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 633 | t_x509a.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
628 | t_x509a.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 634 | t_x509a.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
629 | t_x509a.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 635 | t_x509a.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
630 | t_x509a.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 636 | t_x509a.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
631 | t_x509a.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 637 | t_x509a.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
632 | t_x509a.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 638 | t_x509a.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
633 | t_x509a.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 639 | t_x509a.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
634 | t_x509a.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 640 | t_x509a.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
635 | t_x509a.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 641 | t_x509a.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
636 | t_x509a.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 642 | t_x509a.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
637 | t_x509a.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 643 | t_x509a.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
638 | t_x509a.o: ../cryptlib.h t_x509a.c | 644 | t_x509a.o: ../../include/openssl/x509_vfy.h ../cryptlib.h t_x509a.c |
639 | tasn_dec.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h | 645 | tasn_dec.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h |
640 | tasn_dec.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 646 | tasn_dec.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
641 | tasn_dec.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 647 | tasn_dec.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
@@ -688,21 +694,23 @@ x_algor.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
688 | x_algor.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 694 | x_algor.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
689 | x_algor.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 695 | x_algor.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
690 | x_algor.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h | 696 | x_algor.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h |
691 | x_algor.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 697 | x_algor.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
692 | x_algor.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 698 | x_algor.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
693 | x_algor.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 699 | x_algor.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
694 | x_algor.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 700 | x_algor.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
695 | x_algor.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 701 | x_algor.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
696 | x_algor.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 702 | x_algor.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
697 | x_algor.o: ../../include/openssl/x509_vfy.h x_algor.c | 703 | x_algor.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
704 | x_algor.o: x_algor.c | ||
698 | x_attrib.o: ../../e_os.h ../../include/openssl/asn1.h | 705 | x_attrib.o: ../../e_os.h ../../include/openssl/asn1.h |
699 | x_attrib.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 706 | x_attrib.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
700 | x_attrib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 707 | x_attrib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
701 | x_attrib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 708 | x_attrib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
702 | x_attrib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 709 | x_attrib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
703 | x_attrib.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 710 | x_attrib.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
704 | x_attrib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 711 | x_attrib.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
705 | x_attrib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 712 | x_attrib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
713 | x_attrib.o: ../../include/openssl/opensslconf.h | ||
706 | x_attrib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 714 | x_attrib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
707 | x_attrib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 715 | x_attrib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
708 | x_attrib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 716 | x_attrib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -723,37 +731,40 @@ x_crl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
723 | x_crl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 731 | x_crl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
724 | x_crl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 732 | x_crl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
725 | x_crl.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 733 | x_crl.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
726 | x_crl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 734 | x_crl.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
727 | x_crl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 735 | x_crl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
728 | x_crl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 736 | x_crl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
729 | x_crl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 737 | x_crl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
730 | x_crl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 738 | x_crl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
731 | x_crl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 739 | x_crl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
732 | x_crl.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_crl.c | 740 | x_crl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
741 | x_crl.o: ../cryptlib.h x_crl.c | ||
733 | x_exten.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h | 742 | x_exten.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h |
734 | x_exten.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 743 | x_exten.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
735 | x_exten.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 744 | x_exten.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
736 | x_exten.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 745 | x_exten.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
737 | x_exten.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h | 746 | x_exten.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h |
738 | x_exten.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 747 | x_exten.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
739 | x_exten.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 748 | x_exten.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
740 | x_exten.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 749 | x_exten.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
741 | x_exten.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 750 | x_exten.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
742 | x_exten.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 751 | x_exten.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
743 | x_exten.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 752 | x_exten.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
744 | x_exten.o: ../../include/openssl/x509_vfy.h x_exten.c | 753 | x_exten.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
754 | x_exten.o: x_exten.c | ||
745 | x_info.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 755 | x_info.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
746 | x_info.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 756 | x_info.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
747 | x_info.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 757 | x_info.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
748 | x_info.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 758 | x_info.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
749 | x_info.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 759 | x_info.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
750 | x_info.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 760 | x_info.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
751 | x_info.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 761 | x_info.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
752 | x_info.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 762 | x_info.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
753 | x_info.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 763 | x_info.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
754 | x_info.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 764 | x_info.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
755 | x_info.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 765 | x_info.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
756 | x_info.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_info.c | 766 | x_info.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
767 | x_info.o: ../cryptlib.h x_info.c | ||
757 | x_long.o: ../../e_os.h ../../include/openssl/asn1.h | 768 | x_long.o: ../../e_os.h ../../include/openssl/asn1.h |
758 | x_long.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 769 | x_long.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
759 | x_long.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | 770 | x_long.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h |
@@ -769,35 +780,37 @@ x_name.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
769 | x_name.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 780 | x_name.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
770 | x_name.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 781 | x_name.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
771 | x_name.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 782 | x_name.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
772 | x_name.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 783 | x_name.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
773 | x_name.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 784 | x_name.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
774 | x_name.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 785 | x_name.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
775 | x_name.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 786 | x_name.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
776 | x_name.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 787 | x_name.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
777 | x_name.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 788 | x_name.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
778 | x_name.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_name.c | 789 | x_name.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
790 | x_name.o: ../cryptlib.h x_name.c | ||
779 | x_pkey.o: ../../e_os.h ../../include/openssl/asn1.h | 791 | x_pkey.o: ../../e_os.h ../../include/openssl/asn1.h |
780 | x_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h | 792 | x_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h |
781 | x_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 793 | x_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
782 | x_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 794 | x_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
783 | x_pkey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 795 | x_pkey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
784 | x_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 796 | x_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
785 | x_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 797 | x_pkey.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
786 | x_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 798 | x_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
787 | x_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 799 | x_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
788 | x_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 800 | x_pkey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
789 | x_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 801 | x_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
790 | x_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 802 | x_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
791 | x_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_pkey.c | 803 | x_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
804 | x_pkey.o: ../cryptlib.h x_pkey.c | ||
792 | x_pubkey.o: ../../e_os.h ../../include/openssl/asn1.h | 805 | x_pubkey.o: ../../e_os.h ../../include/openssl/asn1.h |
793 | x_pubkey.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 806 | x_pubkey.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
794 | x_pubkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 807 | x_pubkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
795 | x_pubkey.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h | 808 | x_pubkey.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h |
796 | x_pubkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 809 | x_pubkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
797 | x_pubkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 810 | x_pubkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
798 | x_pubkey.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 811 | x_pubkey.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
799 | x_pubkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 812 | x_pubkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
800 | x_pubkey.o: ../../include/openssl/opensslconf.h | 813 | x_pubkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
801 | x_pubkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 814 | x_pubkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
802 | x_pubkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h | 815 | x_pubkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h |
803 | x_pubkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 816 | x_pubkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
@@ -810,76 +823,82 @@ x_req.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
810 | x_req.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 823 | x_req.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
811 | x_req.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 824 | x_req.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
812 | x_req.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 825 | x_req.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
813 | x_req.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 826 | x_req.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
814 | x_req.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 827 | x_req.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
815 | x_req.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 828 | x_req.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
816 | x_req.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 829 | x_req.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
817 | x_req.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 830 | x_req.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
818 | x_req.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 831 | x_req.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
819 | x_req.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_req.c | 832 | x_req.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
833 | x_req.o: ../cryptlib.h x_req.c | ||
820 | x_sig.o: ../../e_os.h ../../include/openssl/asn1.h | 834 | x_sig.o: ../../e_os.h ../../include/openssl/asn1.h |
821 | x_sig.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 835 | x_sig.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
822 | x_sig.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 836 | x_sig.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
823 | x_sig.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 837 | x_sig.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
824 | x_sig.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 838 | x_sig.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
825 | x_sig.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 839 | x_sig.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
826 | x_sig.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 840 | x_sig.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
827 | x_sig.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 841 | x_sig.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
828 | x_sig.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 842 | x_sig.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
829 | x_sig.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 843 | x_sig.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
830 | x_sig.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 844 | x_sig.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
831 | x_sig.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 845 | x_sig.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
832 | x_sig.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_sig.c | 846 | x_sig.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
847 | x_sig.o: ../cryptlib.h x_sig.c | ||
833 | x_spki.o: ../../e_os.h ../../include/openssl/asn1.h | 848 | x_spki.o: ../../e_os.h ../../include/openssl/asn1.h |
834 | x_spki.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 849 | x_spki.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
835 | x_spki.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 850 | x_spki.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
836 | x_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 851 | x_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
837 | x_spki.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 852 | x_spki.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
838 | x_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 853 | x_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
839 | x_spki.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 854 | x_spki.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
840 | x_spki.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 855 | x_spki.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
841 | x_spki.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 856 | x_spki.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
842 | x_spki.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 857 | x_spki.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
843 | x_spki.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 858 | x_spki.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
844 | x_spki.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 859 | x_spki.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
845 | x_spki.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_spki.c | 860 | x_spki.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
861 | x_spki.o: ../cryptlib.h x_spki.c | ||
846 | x_val.o: ../../e_os.h ../../include/openssl/asn1.h | 862 | x_val.o: ../../e_os.h ../../include/openssl/asn1.h |
847 | x_val.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 863 | x_val.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
848 | x_val.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 864 | x_val.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
849 | x_val.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 865 | x_val.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
850 | x_val.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 866 | x_val.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
851 | x_val.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 867 | x_val.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
852 | x_val.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 868 | x_val.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
853 | x_val.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 869 | x_val.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
854 | x_val.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 870 | x_val.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
855 | x_val.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 871 | x_val.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
856 | x_val.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 872 | x_val.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
857 | x_val.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 873 | x_val.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
858 | x_val.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_val.c | 874 | x_val.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
875 | x_val.o: ../cryptlib.h x_val.c | ||
859 | x_x509.o: ../../e_os.h ../../include/openssl/asn1.h | 876 | x_x509.o: ../../e_os.h ../../include/openssl/asn1.h |
860 | x_x509.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 877 | x_x509.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
861 | x_x509.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 878 | x_x509.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
862 | x_x509.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 879 | x_x509.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
863 | x_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 880 | x_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
864 | x_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 881 | x_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
865 | x_x509.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 882 | x_x509.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
866 | x_x509.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 883 | x_x509.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
867 | x_x509.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 884 | x_x509.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
868 | x_x509.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 885 | x_x509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
869 | x_x509.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 886 | x_x509.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
870 | x_x509.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 887 | x_x509.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
871 | x_x509.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 888 | x_x509.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
872 | x_x509.o: ../../include/openssl/x509v3.h ../cryptlib.h x_x509.c | 889 | x_x509.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
890 | x_x509.o: ../cryptlib.h x_x509.c | ||
873 | x_x509a.o: ../../e_os.h ../../include/openssl/asn1.h | 891 | x_x509a.o: ../../e_os.h ../../include/openssl/asn1.h |
874 | x_x509a.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 892 | x_x509a.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
875 | x_x509a.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 893 | x_x509a.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
876 | x_x509a.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 894 | x_x509a.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
877 | x_x509a.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 895 | x_x509a.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
878 | x_x509a.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 896 | x_x509a.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
879 | x_x509a.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 897 | x_x509a.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
880 | x_x509a.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 898 | x_x509a.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
881 | x_x509a.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 899 | x_x509a.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
882 | x_x509a.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 900 | x_x509a.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
883 | x_x509a.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 901 | x_x509a.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
884 | x_x509a.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 902 | x_x509a.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
885 | x_x509a.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_x509a.c | 903 | x_x509a.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
904 | x_x509a.o: ../cryptlib.h x_x509a.c | ||
diff --git a/src/lib/libssl/src/crypto/bf/Makefile b/src/lib/libssl/src/crypto/bf/Makefile index 8441954a8d..7f4f03eb82 100644 --- a/src/lib/libssl/src/crypto/bf/Makefile +++ b/src/lib/libssl/src/crypto/bf/Makefile | |||
@@ -40,7 +40,7 @@ top: | |||
40 | all: lib | 40 | all: lib |
41 | 41 | ||
42 | lib: $(LIBOBJ) | 42 | lib: $(LIBOBJ) |
43 | $(AR) $(LIB) $(LIBOBJ) | 43 | $(ARX) $(LIB) $(LIBOBJ) |
44 | $(RANLIB) $(LIB) || echo Never mind. | 44 | $(RANLIB) $(LIB) || echo Never mind. |
45 | @touch lib | 45 | @touch lib |
46 | 46 | ||
@@ -103,5 +103,9 @@ bf_enc.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h | |||
103 | bf_enc.o: ../../include/openssl/opensslconf.h bf_enc.c bf_locl.h | 103 | bf_enc.o: ../../include/openssl/opensslconf.h bf_enc.c bf_locl.h |
104 | bf_ofb64.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h | 104 | bf_ofb64.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h |
105 | bf_ofb64.o: ../../include/openssl/opensslconf.h bf_locl.h bf_ofb64.c | 105 | bf_ofb64.o: ../../include/openssl/opensslconf.h bf_locl.h bf_ofb64.c |
106 | bf_skey.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h | 106 | bf_skey.o: ../../include/openssl/blowfish.h ../../include/openssl/crypto.h |
107 | bf_skey.o: ../../include/openssl/opensslconf.h bf_locl.h bf_pi.h bf_skey.c | 107 | bf_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/fips.h |
108 | bf_skey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | ||
109 | bf_skey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h | ||
110 | bf_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
111 | bf_skey.o: bf_locl.h bf_pi.h bf_skey.c | ||
diff --git a/src/lib/libssl/src/crypto/bio/Makefile b/src/lib/libssl/src/crypto/bio/Makefile index 1ef6c2fb9f..1cd76ce7a2 100644 --- a/src/lib/libssl/src/crypto/bio/Makefile +++ b/src/lib/libssl/src/crypto/bio/Makefile | |||
@@ -45,7 +45,7 @@ top: | |||
45 | all: lib | 45 | all: lib |
46 | 46 | ||
47 | lib: $(LIBOBJ) | 47 | lib: $(LIBOBJ) |
48 | $(AR) $(LIB) $(LIBOBJ) | 48 | $(ARX) $(LIB) $(LIBOBJ) |
49 | $(RANLIB) $(LIB) || echo Never mind. | 49 | $(RANLIB) $(LIB) || echo Never mind. |
50 | @touch lib | 50 | @touch lib |
51 | 51 | ||
diff --git a/src/lib/libssl/src/crypto/bn/bn_opt.c b/src/lib/libssl/src/crypto/bn/bn_opt.c new file mode 100644 index 0000000000..21cbb38f62 --- /dev/null +++ b/src/lib/libssl/src/crypto/bn/bn_opt.c | |||
@@ -0,0 +1,87 @@ | |||
1 | /* crypto/bn/bn_opt.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #ifndef BN_DEBUG | ||
60 | # undef NDEBUG /* avoid conflicting definitions */ | ||
61 | # define NDEBUG | ||
62 | #endif | ||
63 | |||
64 | #include <assert.h> | ||
65 | #include <limits.h> | ||
66 | #include <stdio.h> | ||
67 | #include "cryptlib.h" | ||
68 | #include "bn_lcl.h" | ||
69 | |||
70 | char *BN_options(void) | ||
71 | { | ||
72 | static int init=0; | ||
73 | static char data[16]; | ||
74 | |||
75 | if (!init) | ||
76 | { | ||
77 | init++; | ||
78 | #ifdef BN_LLONG | ||
79 | BIO_snprintf(data,sizeof data,"bn(%d,%d)", | ||
80 | (int)sizeof(BN_ULLONG)*8,(int)sizeof(BN_ULONG)*8); | ||
81 | #else | ||
82 | BIO_snprintf(data,sizeof data,"bn(%d,%d)", | ||
83 | (int)sizeof(BN_ULONG)*8,(int)sizeof(BN_ULONG)*8); | ||
84 | #endif | ||
85 | } | ||
86 | return(data); | ||
87 | } | ||
diff --git a/src/lib/libssl/src/crypto/buffer/Makefile b/src/lib/libssl/src/crypto/buffer/Makefile index 9f3a88d2d6..9e0f46e19a 100644 --- a/src/lib/libssl/src/crypto/buffer/Makefile +++ b/src/lib/libssl/src/crypto/buffer/Makefile | |||
@@ -17,8 +17,8 @@ TEST= | |||
17 | APPS= | 17 | APPS= |
18 | 18 | ||
19 | LIB=$(TOP)/libcrypto.a | 19 | LIB=$(TOP)/libcrypto.a |
20 | LIBSRC= buffer.c buf_err.c | 20 | LIBSRC= buffer.c buf_str.c buf_err.c |
21 | LIBOBJ= buffer.o buf_err.o | 21 | LIBOBJ= buffer.o buf_str.o buf_err.o |
22 | 22 | ||
23 | SRC= $(LIBSRC) | 23 | SRC= $(LIBSRC) |
24 | 24 | ||
@@ -33,7 +33,7 @@ top: | |||
33 | all: lib | 33 | all: lib |
34 | 34 | ||
35 | lib: $(LIBOBJ) | 35 | lib: $(LIBOBJ) |
36 | $(AR) $(LIB) $(LIBOBJ) | 36 | $(ARX) $(LIB) $(LIBOBJ) |
37 | $(RANLIB) $(LIB) || echo Never mind. | 37 | $(RANLIB) $(LIB) || echo Never mind. |
38 | @touch lib | 38 | @touch lib |
39 | 39 | ||
@@ -81,6 +81,13 @@ buf_err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | |||
81 | buf_err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h | 81 | buf_err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h |
82 | buf_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 82 | buf_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
83 | buf_err.o: buf_err.c | 83 | buf_err.o: buf_err.c |
84 | buf_str.o: ../../e_os.h ../../include/openssl/bio.h | ||
85 | buf_str.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | ||
86 | buf_str.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
87 | buf_str.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h | ||
88 | buf_str.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
89 | buf_str.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
90 | buf_str.o: ../../include/openssl/symhacks.h ../cryptlib.h buf_str.c | ||
84 | buffer.o: ../../e_os.h ../../include/openssl/bio.h | 91 | buffer.o: ../../e_os.h ../../include/openssl/bio.h |
85 | buffer.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 92 | buffer.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
86 | buffer.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | 93 | buffer.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
diff --git a/src/lib/libssl/src/crypto/cast/Makefile b/src/lib/libssl/src/crypto/cast/Makefile index 149956ee90..2e026dbe0d 100644 --- a/src/lib/libssl/src/crypto/cast/Makefile +++ b/src/lib/libssl/src/crypto/cast/Makefile | |||
@@ -38,7 +38,7 @@ top: | |||
38 | all: lib | 38 | all: lib |
39 | 39 | ||
40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) |
41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(ARX) $(LIB) $(LIBOBJ) |
42 | $(RANLIB) $(LIB) || echo Never mind. | 42 | $(RANLIB) $(LIB) || echo Never mind. |
43 | @touch lib | 43 | @touch lib |
44 | 44 | ||
@@ -102,5 +102,8 @@ c_ofb64.o: ../../e_os.h ../../include/openssl/cast.h | |||
102 | c_ofb64.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | 102 | c_ofb64.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h |
103 | c_ofb64.o: c_ofb64.c cast_lcl.h | 103 | c_ofb64.o: c_ofb64.c cast_lcl.h |
104 | c_skey.o: ../../e_os.h ../../include/openssl/cast.h | 104 | c_skey.o: ../../e_os.h ../../include/openssl/cast.h |
105 | c_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | 105 | c_skey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
106 | c_skey.o: c_skey.c cast_lcl.h cast_s.h | 106 | c_skey.o: ../../include/openssl/fips.h ../../include/openssl/opensslconf.h |
107 | c_skey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
108 | c_skey.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
109 | c_skey.o: ../../include/openssl/symhacks.h c_skey.c cast_lcl.h cast_s.h | ||
diff --git a/src/lib/libssl/src/crypto/comp/Makefile b/src/lib/libssl/src/crypto/comp/Makefile index efda832dce..5d364b8513 100644 --- a/src/lib/libssl/src/crypto/comp/Makefile +++ b/src/lib/libssl/src/crypto/comp/Makefile | |||
@@ -36,7 +36,7 @@ top: | |||
36 | all: lib | 36 | all: lib |
37 | 37 | ||
38 | lib: $(LIBOBJ) | 38 | lib: $(LIBOBJ) |
39 | $(AR) $(LIB) $(LIBOBJ) | 39 | $(ARX) $(LIB) $(LIBOBJ) |
40 | $(RANLIB) $(LIB) || echo Never mind. | 40 | $(RANLIB) $(LIB) || echo Never mind. |
41 | @touch lib | 41 | @touch lib |
42 | 42 | ||
diff --git a/src/lib/libssl/src/crypto/conf/Makefile b/src/lib/libssl/src/crypto/conf/Makefile index 78bb324106..ccd0721332 100644 --- a/src/lib/libssl/src/crypto/conf/Makefile +++ b/src/lib/libssl/src/crypto/conf/Makefile | |||
@@ -36,7 +36,7 @@ top: | |||
36 | all: lib | 36 | all: lib |
37 | 37 | ||
38 | lib: $(LIBOBJ) | 38 | lib: $(LIBOBJ) |
39 | $(AR) $(LIB) $(LIBOBJ) | 39 | $(ARX) $(LIB) $(LIBOBJ) |
40 | $(RANLIB) $(LIB) || echo Never mind. | 40 | $(RANLIB) $(LIB) || echo Never mind. |
41 | @touch lib | 41 | @touch lib |
42 | 42 | ||
@@ -114,8 +114,8 @@ conf_mall.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h | |||
114 | conf_mall.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 114 | conf_mall.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
115 | conf_mall.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h | 115 | conf_mall.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h |
116 | conf_mall.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 116 | conf_mall.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
117 | conf_mall.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 117 | conf_mall.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
118 | conf_mall.o: ../../include/openssl/objects.h | 118 | conf_mall.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
119 | conf_mall.o: ../../include/openssl/opensslconf.h | 119 | conf_mall.o: ../../include/openssl/opensslconf.h |
120 | conf_mall.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 120 | conf_mall.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
121 | conf_mall.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 121 | conf_mall.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
@@ -128,9 +128,9 @@ conf_mod.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
128 | conf_mod.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h | 128 | conf_mod.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h |
129 | conf_mod.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 129 | conf_mod.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
130 | conf_mod.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 130 | conf_mod.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
131 | conf_mod.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 131 | conf_mod.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
132 | conf_mod.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 132 | conf_mod.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
133 | conf_mod.o: ../../include/openssl/opensslconf.h | 133 | conf_mod.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
134 | conf_mod.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 134 | conf_mod.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
135 | conf_mod.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 135 | conf_mod.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
136 | conf_mod.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 136 | conf_mod.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -143,8 +143,9 @@ conf_sap.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h | |||
143 | conf_sap.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 143 | conf_sap.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
144 | conf_sap.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h | 144 | conf_sap.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h |
145 | conf_sap.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 145 | conf_sap.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
146 | conf_sap.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 146 | conf_sap.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
147 | conf_sap.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 147 | conf_sap.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
148 | conf_sap.o: ../../include/openssl/opensslconf.h | ||
148 | conf_sap.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 149 | conf_sap.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
149 | conf_sap.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 150 | conf_sap.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
150 | conf_sap.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 151 | conf_sap.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
diff --git a/src/lib/libssl/src/crypto/des/Makefile b/src/lib/libssl/src/crypto/des/Makefile index 523dfe38f2..786e68802e 100644 --- a/src/lib/libssl/src/crypto/des/Makefile +++ b/src/lib/libssl/src/crypto/des/Makefile | |||
@@ -24,7 +24,7 @@ TEST=destest.c | |||
24 | APPS= | 24 | APPS= |
25 | 25 | ||
26 | LIB=$(TOP)/libcrypto.a | 26 | LIB=$(TOP)/libcrypto.a |
27 | LIBSRC= cbc_cksm.c cbc_enc.c cfb64enc.c cfb_enc.c \ | 27 | LIBSRC= des_lib.c cbc_cksm.c cbc_enc.c cfb64enc.c cfb_enc.c \ |
28 | ecb3_enc.c ecb_enc.c enc_read.c enc_writ.c \ | 28 | ecb3_enc.c ecb_enc.c enc_read.c enc_writ.c \ |
29 | fcrypt.c ofb64enc.c ofb_enc.c pcbc_enc.c \ | 29 | fcrypt.c ofb64enc.c ofb_enc.c pcbc_enc.c \ |
30 | qud_cksm.c rand_key.c rpc_enc.c set_key.c \ | 30 | qud_cksm.c rand_key.c rpc_enc.c set_key.c \ |
@@ -33,7 +33,7 @@ LIBSRC= cbc_cksm.c cbc_enc.c cfb64enc.c cfb_enc.c \ | |||
33 | str2key.c cfb64ede.c ofb64ede.c ede_cbcm_enc.c des_old.c des_old2.c \ | 33 | str2key.c cfb64ede.c ofb64ede.c ede_cbcm_enc.c des_old.c des_old2.c \ |
34 | read2pwd.c | 34 | read2pwd.c |
35 | 35 | ||
36 | LIBOBJ= set_key.o ecb_enc.o cbc_enc.o \ | 36 | LIBOBJ= des_lib.o set_key.o ecb_enc.o cbc_enc.o \ |
37 | ecb3_enc.o cfb64enc.o cfb64ede.o cfb_enc.o ofb64ede.o \ | 37 | ecb3_enc.o cfb64enc.o cfb64ede.o cfb_enc.o ofb64ede.o \ |
38 | enc_read.o enc_writ.o ofb64enc.o \ | 38 | enc_read.o enc_writ.o ofb64enc.o \ |
39 | ofb_enc.o str2key.o pcbc_enc.o qud_cksm.o rand_key.o \ | 39 | ofb_enc.o str2key.o pcbc_enc.o qud_cksm.o rand_key.o \ |
@@ -54,7 +54,7 @@ top: | |||
54 | all: lib | 54 | all: lib |
55 | 55 | ||
56 | lib: $(LIBOBJ) | 56 | lib: $(LIBOBJ) |
57 | $(AR) $(LIB) $(LIBOBJ) | 57 | $(ARX) $(LIB) $(LIBOBJ) |
58 | $(RANLIB) $(LIB) || echo Never mind. | 58 | $(RANLIB) $(LIB) || echo Never mind. |
59 | @touch lib | 59 | @touch lib |
60 | 60 | ||
@@ -157,6 +157,13 @@ des_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h | |||
157 | des_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 157 | des_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
158 | des_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h | 158 | des_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h |
159 | des_enc.o: des_enc.c des_locl.h ncbc_enc.c | 159 | des_enc.o: des_enc.c des_locl.h ncbc_enc.c |
160 | des_lib.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h | ||
161 | des_lib.o: ../../include/openssl/des.h ../../include/openssl/des_old.h | ||
162 | des_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | ||
163 | des_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
164 | des_lib.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
165 | des_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h | ||
166 | des_lib.o: ../../include/openssl/ui_compat.h des_lib.c des_locl.h des_ver.h | ||
160 | des_old.o: ../../include/openssl/des.h ../../include/openssl/des_old.h | 167 | des_old.o: ../../include/openssl/des.h ../../include/openssl/des_old.h |
161 | des_old.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | 168 | des_old.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h |
162 | des_old.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h | 169 | des_old.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h |
@@ -175,14 +182,12 @@ ecb3_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h | |||
175 | ecb3_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 182 | ecb3_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
176 | ecb3_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h | 183 | ecb3_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h |
177 | ecb3_enc.o: des_locl.h ecb3_enc.c | 184 | ecb3_enc.o: des_locl.h ecb3_enc.c |
178 | ecb_enc.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h | ||
179 | ecb_enc.o: ../../include/openssl/des.h ../../include/openssl/des_old.h | 185 | ecb_enc.o: ../../include/openssl/des.h ../../include/openssl/des_old.h |
180 | ecb_enc.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | 186 | ecb_enc.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h |
181 | ecb_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 187 | ecb_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h |
182 | ecb_enc.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | 188 | ecb_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
183 | ecb_enc.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h | 189 | ecb_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h |
184 | ecb_enc.o: ../../include/openssl/ui_compat.h des_locl.h des_ver.h ecb_enc.c | 190 | ecb_enc.o: des_locl.h ecb_enc.c spr.h |
185 | ecb_enc.o: spr.h | ||
186 | ede_cbcm_enc.o: ../../include/openssl/des.h ../../include/openssl/des_old.h | 191 | ede_cbcm_enc.o: ../../include/openssl/des.h ../../include/openssl/des_old.h |
187 | ede_cbcm_enc.o: ../../include/openssl/e_os2.h | 192 | ede_cbcm_enc.o: ../../include/openssl/e_os2.h |
188 | ede_cbcm_enc.o: ../../include/openssl/opensslconf.h | 193 | ede_cbcm_enc.o: ../../include/openssl/opensslconf.h |
@@ -272,11 +277,11 @@ rpc_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | |||
272 | rpc_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h | 277 | rpc_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h |
273 | rpc_enc.o: des_locl.h des_ver.h rpc_des.h rpc_enc.c | 278 | rpc_enc.o: des_locl.h des_ver.h rpc_des.h rpc_enc.c |
274 | set_key.o: ../../include/openssl/des.h ../../include/openssl/des_old.h | 279 | set_key.o: ../../include/openssl/des.h ../../include/openssl/des_old.h |
275 | set_key.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | 280 | set_key.o: ../../include/openssl/e_os2.h ../../include/openssl/fips.h |
276 | set_key.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h | 281 | set_key.o: ../../include/openssl/opensslconf.h ../../include/openssl/ossl_typ.h |
277 | set_key.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 282 | set_key.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h |
278 | set_key.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h | 283 | set_key.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h |
279 | set_key.o: des_locl.h set_key.c | 284 | set_key.o: ../../include/openssl/ui_compat.h des_locl.h set_key.c |
280 | str2key.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | 285 | str2key.o: ../../include/openssl/crypto.h ../../include/openssl/des.h |
281 | str2key.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h | 286 | str2key.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h |
282 | str2key.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 287 | str2key.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
diff --git a/src/lib/libssl/src/crypto/des/des_lib.c b/src/lib/libssl/src/crypto/des/des_lib.c new file mode 100644 index 0000000000..d4b3047932 --- /dev/null +++ b/src/lib/libssl/src/crypto/des/des_lib.c | |||
@@ -0,0 +1,106 @@ | |||
1 | /* crypto/des/ecb_enc.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include "des_locl.h" | ||
60 | #include "des_ver.h" | ||
61 | #include <openssl/opensslv.h> | ||
62 | #include <openssl/bio.h> | ||
63 | |||
64 | OPENSSL_GLOBAL const char libdes_version[]="libdes" OPENSSL_VERSION_PTEXT; | ||
65 | OPENSSL_GLOBAL const char DES_version[]="DES" OPENSSL_VERSION_PTEXT; | ||
66 | |||
67 | const char *DES_options(void) | ||
68 | { | ||
69 | static int init=1; | ||
70 | static char buf[32]; | ||
71 | |||
72 | if (init) | ||
73 | { | ||
74 | const char *ptr,*unroll,*risc,*size; | ||
75 | |||
76 | #ifdef DES_PTR | ||
77 | ptr="ptr"; | ||
78 | #else | ||
79 | ptr="idx"; | ||
80 | #endif | ||
81 | #if defined(DES_RISC1) || defined(DES_RISC2) | ||
82 | #ifdef DES_RISC1 | ||
83 | risc="risc1"; | ||
84 | #endif | ||
85 | #ifdef DES_RISC2 | ||
86 | risc="risc2"; | ||
87 | #endif | ||
88 | #else | ||
89 | risc="cisc"; | ||
90 | #endif | ||
91 | #ifdef DES_UNROLL | ||
92 | unroll="16"; | ||
93 | #else | ||
94 | unroll="4"; | ||
95 | #endif | ||
96 | if (sizeof(DES_LONG) != sizeof(long)) | ||
97 | size="int"; | ||
98 | else | ||
99 | size="long"; | ||
100 | BIO_snprintf(buf,sizeof buf,"des(%s,%s,%s,%s)",ptr,risc,unroll, | ||
101 | size); | ||
102 | init=0; | ||
103 | } | ||
104 | return(buf); | ||
105 | } | ||
106 | |||
diff --git a/src/lib/libssl/src/crypto/dsa/dsa_utl.c b/src/lib/libssl/src/crypto/dsa/dsa_utl.c new file mode 100644 index 0000000000..24c021d120 --- /dev/null +++ b/src/lib/libssl/src/crypto/dsa/dsa_utl.c | |||
@@ -0,0 +1,95 @@ | |||
1 | /* crypto/dsa/dsa_lib.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | /* Original version from Steven Schoch <schoch@sheba.arc.nasa.gov> */ | ||
60 | |||
61 | #include <stdio.h> | ||
62 | #include "cryptlib.h" | ||
63 | #include <openssl/bn.h> | ||
64 | #include <openssl/dsa.h> | ||
65 | #include <openssl/asn1.h> | ||
66 | #ifndef OPENSSL_NO_ENGINE | ||
67 | #include <openssl/engine.h> | ||
68 | #endif | ||
69 | #ifndef OPENSSL_NO_DH | ||
70 | #include <openssl/dh.h> | ||
71 | #endif | ||
72 | |||
73 | DSA_SIG *DSA_SIG_new(void) | ||
74 | { | ||
75 | DSA_SIG *sig; | ||
76 | sig = OPENSSL_malloc(sizeof(DSA_SIG)); | ||
77 | if (!sig) | ||
78 | return NULL; | ||
79 | sig->r = NULL; | ||
80 | sig->s = NULL; | ||
81 | return sig; | ||
82 | } | ||
83 | |||
84 | void DSA_SIG_free(DSA_SIG *sig) | ||
85 | { | ||
86 | if (sig) | ||
87 | { | ||
88 | if (sig->r) | ||
89 | BN_free(sig->r); | ||
90 | if (sig->s) | ||
91 | BN_free(sig->s); | ||
92 | OPENSSL_free(sig); | ||
93 | } | ||
94 | } | ||
95 | |||
diff --git a/src/lib/libssl/src/crypto/dso/Makefile b/src/lib/libssl/src/crypto/dso/Makefile index 07f5d8d159..52f152888c 100644 --- a/src/lib/libssl/src/crypto/dso/Makefile +++ b/src/lib/libssl/src/crypto/dso/Makefile | |||
@@ -35,7 +35,7 @@ top: | |||
35 | all: lib | 35 | all: lib |
36 | 36 | ||
37 | lib: $(LIBOBJ) | 37 | lib: $(LIBOBJ) |
38 | $(AR) $(LIB) $(LIBOBJ) | 38 | $(ARX) $(LIB) $(LIBOBJ) |
39 | $(RANLIB) $(LIB) || echo Never mind. | 39 | $(RANLIB) $(LIB) || echo Never mind. |
40 | @touch lib | 40 | @touch lib |
41 | 41 | ||
diff --git a/src/lib/libssl/src/crypto/dyn_lck.c b/src/lib/libssl/src/crypto/dyn_lck.c new file mode 100644 index 0000000000..7f82c41264 --- /dev/null +++ b/src/lib/libssl/src/crypto/dyn_lck.c | |||
@@ -0,0 +1,428 @@ | |||
1 | /* crypto/cryptlib.c */ | ||
2 | /* ==================================================================== | ||
3 | * Copyright (c) 1998-2003 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 | */ | ||
55 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
56 | * All rights reserved. | ||
57 | * | ||
58 | * This package is an SSL implementation written | ||
59 | * by Eric Young (eay@cryptsoft.com). | ||
60 | * The implementation was written so as to conform with Netscapes SSL. | ||
61 | * | ||
62 | * This library is free for commercial and non-commercial use as long as | ||
63 | * the following conditions are aheared to. The following conditions | ||
64 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
65 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
66 | * included with this distribution is covered by the same copyright terms | ||
67 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
68 | * | ||
69 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
70 | * the code are not to be removed. | ||
71 | * If this package is used in a product, Eric Young should be given attribution | ||
72 | * as the author of the parts of the library used. | ||
73 | * This can be in the form of a textual message at program startup or | ||
74 | * in documentation (online or textual) provided with the package. | ||
75 | * | ||
76 | * Redistribution and use in source and binary forms, with or without | ||
77 | * modification, are permitted provided that the following conditions | ||
78 | * are met: | ||
79 | * 1. Redistributions of source code must retain the copyright | ||
80 | * notice, this list of conditions and the following disclaimer. | ||
81 | * 2. Redistributions in binary form must reproduce the above copyright | ||
82 | * notice, this list of conditions and the following disclaimer in the | ||
83 | * documentation and/or other materials provided with the distribution. | ||
84 | * 3. All advertising materials mentioning features or use of this software | ||
85 | * must display the following acknowledgement: | ||
86 | * "This product includes cryptographic software written by | ||
87 | * Eric Young (eay@cryptsoft.com)" | ||
88 | * The word 'cryptographic' can be left out if the rouines from the library | ||
89 | * being used are not cryptographic related :-). | ||
90 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
91 | * the apps directory (application code) you must include an acknowledgement: | ||
92 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
93 | * | ||
94 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
95 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
96 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
97 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
98 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
99 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
100 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
101 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
102 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
103 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
104 | * SUCH DAMAGE. | ||
105 | * | ||
106 | * The licence and distribution terms for any publically available version or | ||
107 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
108 | * copied and put under another distribution licence | ||
109 | * [including the GNU Public Licence.] | ||
110 | */ | ||
111 | /* ==================================================================== | ||
112 | * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. | ||
113 | * ECDH support in OpenSSL originally developed by | ||
114 | * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. | ||
115 | */ | ||
116 | |||
117 | #include "cryptlib.h" | ||
118 | #include <openssl/safestack.h> | ||
119 | |||
120 | #if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN16) | ||
121 | static double SSLeay_MSVC5_hack=0.0; /* and for VC1.5 */ | ||
122 | #endif | ||
123 | |||
124 | DECLARE_STACK_OF(CRYPTO_dynlock) | ||
125 | IMPLEMENT_STACK_OF(CRYPTO_dynlock) | ||
126 | |||
127 | /* real #defines in crypto.h, keep these upto date */ | ||
128 | static const char* const lock_names[CRYPTO_NUM_LOCKS] = | ||
129 | { | ||
130 | "<<ERROR>>", | ||
131 | "err", | ||
132 | "ex_data", | ||
133 | "x509", | ||
134 | "x509_info", | ||
135 | "x509_pkey", | ||
136 | "x509_crl", | ||
137 | "x509_req", | ||
138 | "dsa", | ||
139 | "rsa", | ||
140 | "evp_pkey", | ||
141 | "x509_store", | ||
142 | "ssl_ctx", | ||
143 | "ssl_cert", | ||
144 | "ssl_session", | ||
145 | "ssl_sess_cert", | ||
146 | "ssl", | ||
147 | "ssl_method", | ||
148 | "rand", | ||
149 | "rand2", | ||
150 | "debug_malloc", | ||
151 | "BIO", | ||
152 | "gethostbyname", | ||
153 | "getservbyname", | ||
154 | "readdir", | ||
155 | "RSA_blinding", | ||
156 | "dh", | ||
157 | "debug_malloc2", | ||
158 | "dso", | ||
159 | "dynlock", | ||
160 | "engine", | ||
161 | "ui", | ||
162 | "ecdsa", | ||
163 | "ec", | ||
164 | "ecdh", | ||
165 | "bn", | ||
166 | "ec_pre_comp", | ||
167 | "store", | ||
168 | "comp", | ||
169 | #ifndef OPENSSL_FIPS | ||
170 | # if CRYPTO_NUM_LOCKS != 39 | ||
171 | # error "Inconsistency between crypto.h and cryptlib.c" | ||
172 | # endif | ||
173 | #else | ||
174 | "fips", | ||
175 | "fips2", | ||
176 | # if CRYPTO_NUM_LOCKS != 41 | ||
177 | # error "Inconsistency between crypto.h and cryptlib.c" | ||
178 | # endif | ||
179 | #endif | ||
180 | }; | ||
181 | |||
182 | /* This is for applications to allocate new type names in the non-dynamic | ||
183 | array of lock names. These are numbered with positive numbers. */ | ||
184 | static STACK *app_locks=NULL; | ||
185 | |||
186 | /* For applications that want a more dynamic way of handling threads, the | ||
187 | following stack is used. These are externally numbered with negative | ||
188 | numbers. */ | ||
189 | static STACK_OF(CRYPTO_dynlock) *dyn_locks=NULL; | ||
190 | |||
191 | |||
192 | static struct CRYPTO_dynlock_value *(MS_FAR *dynlock_create_callback) | ||
193 | (const char *file,int line)=NULL; | ||
194 | static void (MS_FAR *dynlock_lock_callback)(int mode, | ||
195 | struct CRYPTO_dynlock_value *l, const char *file,int line)=NULL; | ||
196 | static void (MS_FAR *dynlock_destroy_callback)(struct CRYPTO_dynlock_value *l, | ||
197 | const char *file,int line)=NULL; | ||
198 | |||
199 | int CRYPTO_get_new_lockid(char *name) | ||
200 | { | ||
201 | char *str; | ||
202 | int i; | ||
203 | |||
204 | #if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN16) | ||
205 | /* A hack to make Visual C++ 5.0 work correctly when linking as | ||
206 | * a DLL using /MT. Without this, the application cannot use | ||
207 | * and floating point printf's. | ||
208 | * It also seems to be needed for Visual C 1.5 (win16) */ | ||
209 | SSLeay_MSVC5_hack=(double)name[0]*(double)name[1]; | ||
210 | #endif | ||
211 | |||
212 | if ((app_locks == NULL) && ((app_locks=sk_new_null()) == NULL)) | ||
213 | { | ||
214 | CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_LOCKID,ERR_R_MALLOC_FAILURE); | ||
215 | return(0); | ||
216 | } | ||
217 | if ((str=BUF_strdup(name)) == NULL) | ||
218 | { | ||
219 | CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_LOCKID,ERR_R_MALLOC_FAILURE); | ||
220 | return(0); | ||
221 | } | ||
222 | i=sk_push(app_locks,str); | ||
223 | if (!i) | ||
224 | OPENSSL_free(str); | ||
225 | else | ||
226 | i+=CRYPTO_NUM_LOCKS; /* gap of one :-) */ | ||
227 | return(i); | ||
228 | } | ||
229 | |||
230 | int CRYPTO_get_new_dynlockid(void) | ||
231 | { | ||
232 | int i = 0; | ||
233 | CRYPTO_dynlock *pointer = NULL; | ||
234 | |||
235 | if (dynlock_create_callback == NULL) | ||
236 | { | ||
237 | CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID,CRYPTO_R_NO_DYNLOCK_CREATE_CALLBACK); | ||
238 | return(0); | ||
239 | } | ||
240 | CRYPTO_w_lock(CRYPTO_LOCK_DYNLOCK); | ||
241 | if ((dyn_locks == NULL) | ||
242 | && ((dyn_locks=sk_CRYPTO_dynlock_new_null()) == NULL)) | ||
243 | { | ||
244 | CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK); | ||
245 | CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID,ERR_R_MALLOC_FAILURE); | ||
246 | return(0); | ||
247 | } | ||
248 | CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK); | ||
249 | |||
250 | pointer = (CRYPTO_dynlock *)OPENSSL_malloc(sizeof(CRYPTO_dynlock)); | ||
251 | if (pointer == NULL) | ||
252 | { | ||
253 | CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID,ERR_R_MALLOC_FAILURE); | ||
254 | return(0); | ||
255 | } | ||
256 | pointer->references = 1; | ||
257 | pointer->data = dynlock_create_callback(__FILE__,__LINE__); | ||
258 | if (pointer->data == NULL) | ||
259 | { | ||
260 | OPENSSL_free(pointer); | ||
261 | CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID,ERR_R_MALLOC_FAILURE); | ||
262 | return(0); | ||
263 | } | ||
264 | |||
265 | CRYPTO_w_lock(CRYPTO_LOCK_DYNLOCK); | ||
266 | /* First, try to find an existing empty slot */ | ||
267 | i=sk_CRYPTO_dynlock_find(dyn_locks,NULL); | ||
268 | /* If there was none, push, thereby creating a new one */ | ||
269 | if (i == -1) | ||
270 | /* Since sk_push() returns the number of items on the | ||
271 | stack, not the location of the pushed item, we need | ||
272 | to transform the returned number into a position, | ||
273 | by decreasing it. */ | ||
274 | i=sk_CRYPTO_dynlock_push(dyn_locks,pointer) - 1; | ||
275 | else | ||
276 | /* If we found a place with a NULL pointer, put our pointer | ||
277 | in it. */ | ||
278 | (void)sk_CRYPTO_dynlock_set(dyn_locks,i,pointer); | ||
279 | CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK); | ||
280 | |||
281 | if (i == -1) | ||
282 | { | ||
283 | dynlock_destroy_callback(pointer->data,__FILE__,__LINE__); | ||
284 | OPENSSL_free(pointer); | ||
285 | } | ||
286 | else | ||
287 | i += 1; /* to avoid 0 */ | ||
288 | return -i; | ||
289 | } | ||
290 | |||
291 | void CRYPTO_destroy_dynlockid(int i) | ||
292 | { | ||
293 | CRYPTO_dynlock *pointer = NULL; | ||
294 | if (i) | ||
295 | i = -i-1; | ||
296 | if (dynlock_destroy_callback == NULL) | ||
297 | return; | ||
298 | |||
299 | CRYPTO_w_lock(CRYPTO_LOCK_DYNLOCK); | ||
300 | |||
301 | if (dyn_locks == NULL || i >= sk_CRYPTO_dynlock_num(dyn_locks)) | ||
302 | { | ||
303 | CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK); | ||
304 | return; | ||
305 | } | ||
306 | pointer = sk_CRYPTO_dynlock_value(dyn_locks, i); | ||
307 | if (pointer != NULL) | ||
308 | { | ||
309 | --pointer->references; | ||
310 | #ifdef REF_CHECK | ||
311 | if (pointer->references < 0) | ||
312 | { | ||
313 | fprintf(stderr,"CRYPTO_destroy_dynlockid, bad reference count\n"); | ||
314 | abort(); | ||
315 | } | ||
316 | else | ||
317 | #endif | ||
318 | if (pointer->references <= 0) | ||
319 | { | ||
320 | (void)sk_CRYPTO_dynlock_set(dyn_locks, i, NULL); | ||
321 | } | ||
322 | else | ||
323 | pointer = NULL; | ||
324 | } | ||
325 | CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK); | ||
326 | |||
327 | if (pointer) | ||
328 | { | ||
329 | dynlock_destroy_callback(pointer->data,__FILE__,__LINE__); | ||
330 | OPENSSL_free(pointer); | ||
331 | } | ||
332 | } | ||
333 | |||
334 | struct CRYPTO_dynlock_value *CRYPTO_get_dynlock_value(int i) | ||
335 | { | ||
336 | CRYPTO_dynlock *pointer = NULL; | ||
337 | if (i) | ||
338 | i = -i-1; | ||
339 | |||
340 | CRYPTO_w_lock(CRYPTO_LOCK_DYNLOCK); | ||
341 | |||
342 | if (dyn_locks != NULL && i < sk_CRYPTO_dynlock_num(dyn_locks)) | ||
343 | pointer = sk_CRYPTO_dynlock_value(dyn_locks, i); | ||
344 | if (pointer) | ||
345 | pointer->references++; | ||
346 | |||
347 | CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK); | ||
348 | |||
349 | if (pointer) | ||
350 | return pointer->data; | ||
351 | return NULL; | ||
352 | } | ||
353 | |||
354 | struct CRYPTO_dynlock_value *(*CRYPTO_get_dynlock_create_callback(void)) | ||
355 | (const char *file,int line) | ||
356 | { | ||
357 | return(dynlock_create_callback); | ||
358 | } | ||
359 | |||
360 | void (*CRYPTO_get_dynlock_lock_callback(void))(int mode, | ||
361 | struct CRYPTO_dynlock_value *l, const char *file,int line) | ||
362 | { | ||
363 | return(dynlock_lock_callback); | ||
364 | } | ||
365 | |||
366 | void (*CRYPTO_get_dynlock_destroy_callback(void)) | ||
367 | (struct CRYPTO_dynlock_value *l, const char *file,int line) | ||
368 | { | ||
369 | return(dynlock_destroy_callback); | ||
370 | } | ||
371 | |||
372 | void CRYPTO_set_dynlock_create_callback(struct CRYPTO_dynlock_value *(*func) | ||
373 | (const char *file, int line)) | ||
374 | { | ||
375 | dynlock_create_callback=func; | ||
376 | } | ||
377 | |||
378 | static void do_dynlock(int mode, int type, const char *file, int line) | ||
379 | { | ||
380 | if (dynlock_lock_callback != NULL) | ||
381 | { | ||
382 | struct CRYPTO_dynlock_value *pointer | ||
383 | = CRYPTO_get_dynlock_value(type); | ||
384 | |||
385 | OPENSSL_assert(pointer != NULL); | ||
386 | |||
387 | dynlock_lock_callback(mode, pointer, file, line); | ||
388 | |||
389 | CRYPTO_destroy_dynlockid(type); | ||
390 | } | ||
391 | } | ||
392 | |||
393 | void CRYPTO_set_dynlock_lock_callback(void (*func)(int mode, | ||
394 | struct CRYPTO_dynlock_value *l, const char *file, int line)) | ||
395 | { | ||
396 | /* Set callback so CRYPTO_lock() can now handle dynamic locks. | ||
397 | * This is OK because at this point and application shouldn't be using | ||
398 | * OpenSSL from multiple threads because it is setting up the locking | ||
399 | * callbacks. | ||
400 | */ | ||
401 | static int done = 0; | ||
402 | if (!done) | ||
403 | { | ||
404 | int_CRYPTO_set_do_dynlock_callback(do_dynlock); | ||
405 | done = 1; | ||
406 | } | ||
407 | |||
408 | dynlock_lock_callback=func; | ||
409 | } | ||
410 | |||
411 | void CRYPTO_set_dynlock_destroy_callback(void (*func) | ||
412 | (struct CRYPTO_dynlock_value *l, const char *file, int line)) | ||
413 | { | ||
414 | dynlock_destroy_callback=func; | ||
415 | } | ||
416 | |||
417 | const char *CRYPTO_get_lock_name(int type) | ||
418 | { | ||
419 | if (type < 0) | ||
420 | return("dynamic"); | ||
421 | else if (type < CRYPTO_NUM_LOCKS) | ||
422 | return(lock_names[type]); | ||
423 | else if (type-CRYPTO_NUM_LOCKS > sk_num(app_locks)) | ||
424 | return("ERROR"); | ||
425 | else | ||
426 | return(sk_value(app_locks,type-CRYPTO_NUM_LOCKS)); | ||
427 | } | ||
428 | |||
diff --git a/src/lib/libssl/src/crypto/ec/Makefile b/src/lib/libssl/src/crypto/ec/Makefile index 42f7bb7fc8..b5bbc9faa1 100644 --- a/src/lib/libssl/src/crypto/ec/Makefile +++ b/src/lib/libssl/src/crypto/ec/Makefile | |||
@@ -38,7 +38,7 @@ top: | |||
38 | all: lib | 38 | all: lib |
39 | 39 | ||
40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) |
41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(ARX) $(LIB) $(LIBOBJ) |
42 | $(RANLIB) $(LIB) || echo Never mind. | 42 | $(RANLIB) $(LIB) || echo Never mind. |
43 | @touch lib | 43 | @touch lib |
44 | 44 | ||
diff --git a/src/lib/libssl/src/crypto/engine/eng_padlock.c b/src/lib/libssl/src/crypto/engine/eng_padlock.c index 1ba9d85db4..743558ab33 100644 --- a/src/lib/libssl/src/crypto/engine/eng_padlock.c +++ b/src/lib/libssl/src/crypto/engine/eng_padlock.c | |||
@@ -234,8 +234,8 @@ padlock_bind_fn(ENGINE *e, const char *id) | |||
234 | return 1; | 234 | return 1; |
235 | } | 235 | } |
236 | 236 | ||
237 | IMPLEMENT_DYNAMIC_CHECK_FN (); | 237 | IMPLEMENT_DYNAMIC_CHECK_FN () |
238 | IMPLEMENT_DYNAMIC_BIND_FN (padlock_bind_fn); | 238 | IMPLEMENT_DYNAMIC_BIND_FN (padlock_bind_fn) |
239 | #endif /* DYNAMIC_ENGINE */ | 239 | #endif /* DYNAMIC_ENGINE */ |
240 | 240 | ||
241 | /* ===== Here comes the "real" engine ===== */ | 241 | /* ===== Here comes the "real" engine ===== */ |
diff --git a/src/lib/libssl/src/crypto/err/Makefile b/src/lib/libssl/src/crypto/err/Makefile index 23e38409c8..91d1379d41 100644 --- a/src/lib/libssl/src/crypto/err/Makefile +++ b/src/lib/libssl/src/crypto/err/Makefile | |||
@@ -17,8 +17,8 @@ TEST= | |||
17 | APPS= | 17 | APPS= |
18 | 18 | ||
19 | LIB=$(TOP)/libcrypto.a | 19 | LIB=$(TOP)/libcrypto.a |
20 | LIBSRC=err.c err_all.c err_prn.c | 20 | LIBSRC=err.c err_def.c err_all.c err_prn.c err_str.c err_bio.c |
21 | LIBOBJ=err.o err_all.o err_prn.o | 21 | LIBOBJ=err.o err_def.o err_all.o err_prn.o err_str.o err_bio.o |
22 | 22 | ||
23 | SRC= $(LIBSRC) | 23 | SRC= $(LIBSRC) |
24 | 24 | ||
@@ -33,7 +33,7 @@ top: | |||
33 | all: lib | 33 | all: lib |
34 | 34 | ||
35 | lib: $(LIBOBJ) | 35 | lib: $(LIBOBJ) |
36 | $(AR) $(LIB) $(LIBOBJ) | 36 | $(ARX) $(LIB) $(LIBOBJ) |
37 | $(RANLIB) $(LIB) || echo Never mind. | 37 | $(RANLIB) $(LIB) || echo Never mind. |
38 | @touch lib | 38 | @touch lib |
39 | 39 | ||
@@ -89,17 +89,31 @@ err_all.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h | |||
89 | err_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 89 | err_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
90 | err_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h | 90 | err_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h |
91 | err_all.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 91 | err_all.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
92 | err_all.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 92 | err_all.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
93 | err_all.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h | 93 | err_all.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
94 | err_all.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 94 | err_all.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h |
95 | err_all.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem2.h | 95 | err_all.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
96 | err_all.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 96 | err_all.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs12.h |
97 | err_all.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h | 97 | err_all.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
98 | err_all.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 98 | err_all.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h |
99 | err_all.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 99 | err_all.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
100 | err_all.o: ../../include/openssl/ui.h ../../include/openssl/x509.h | 100 | err_all.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h |
101 | err_all.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 101 | err_all.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
102 | err_all.o: err_all.c | 102 | err_all.o: ../../include/openssl/x509v3.h err_all.c |
103 | err_bio.o: ../../e_os.h ../../include/openssl/bio.h | ||
104 | err_bio.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | ||
105 | err_bio.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
106 | err_bio.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h | ||
107 | err_bio.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
108 | err_bio.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
109 | err_bio.o: ../../include/openssl/symhacks.h ../cryptlib.h err_bio.c | ||
110 | err_def.o: ../../e_os.h ../../include/openssl/bio.h | ||
111 | err_def.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | ||
112 | err_def.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
113 | err_def.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h | ||
114 | err_def.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
115 | err_def.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
116 | err_def.o: ../../include/openssl/symhacks.h ../cryptlib.h err_def.c | ||
103 | err_prn.o: ../../e_os.h ../../include/openssl/bio.h | 117 | err_prn.o: ../../e_os.h ../../include/openssl/bio.h |
104 | err_prn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 118 | err_prn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
105 | err_prn.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | 119 | err_prn.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
@@ -107,3 +121,10 @@ err_prn.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h | |||
107 | err_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 121 | err_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
108 | err_prn.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | 122 | err_prn.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h |
109 | err_prn.o: ../../include/openssl/symhacks.h ../cryptlib.h err_prn.c | 123 | err_prn.o: ../../include/openssl/symhacks.h ../cryptlib.h err_prn.c |
124 | err_str.o: ../../e_os.h ../../include/openssl/bio.h | ||
125 | err_str.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | ||
126 | err_str.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
127 | err_str.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h | ||
128 | err_str.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
129 | err_str.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
130 | err_str.o: ../../include/openssl/symhacks.h ../cryptlib.h err_str.c | ||
diff --git a/src/lib/libssl/src/crypto/err/err_bio.c b/src/lib/libssl/src/crypto/err/err_bio.c new file mode 100644 index 0000000000..a42f804840 --- /dev/null +++ b/src/lib/libssl/src/crypto/err/err_bio.c | |||
@@ -0,0 +1,75 @@ | |||
1 | /* crypto/err/err_prn.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/lhash.h> | ||
62 | #include <openssl/crypto.h> | ||
63 | #include <openssl/buffer.h> | ||
64 | #include <openssl/err.h> | ||
65 | |||
66 | static int print_bio(const char *str, size_t len, void *bp) | ||
67 | { | ||
68 | return BIO_write((BIO *)bp, str, len); | ||
69 | } | ||
70 | void ERR_print_errors(BIO *bp) | ||
71 | { | ||
72 | ERR_print_errors_cb(print_bio, bp); | ||
73 | } | ||
74 | |||
75 | |||
diff --git a/src/lib/libssl/src/crypto/err/err_def.c b/src/lib/libssl/src/crypto/err/err_def.c new file mode 100644 index 0000000000..7ed3d84955 --- /dev/null +++ b/src/lib/libssl/src/crypto/err/err_def.c | |||
@@ -0,0 +1,665 @@ | |||
1 | /* crypto/err/err_def.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
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 | */ | ||
111 | |||
112 | #include <stdio.h> | ||
113 | #include <stdarg.h> | ||
114 | #include <string.h> | ||
115 | #include "cryptlib.h" | ||
116 | #include <openssl/lhash.h> | ||
117 | #include <openssl/crypto.h> | ||
118 | #include <openssl/buffer.h> | ||
119 | #include <openssl/bio.h> | ||
120 | #include <openssl/err.h> | ||
121 | |||
122 | #define err_clear_data(p,i) \ | ||
123 | do { \ | ||
124 | if (((p)->err_data[i] != NULL) && \ | ||
125 | (p)->err_data_flags[i] & ERR_TXT_MALLOCED) \ | ||
126 | { \ | ||
127 | OPENSSL_free((p)->err_data[i]); \ | ||
128 | (p)->err_data[i]=NULL; \ | ||
129 | } \ | ||
130 | (p)->err_data_flags[i]=0; \ | ||
131 | } while(0) | ||
132 | |||
133 | #define err_clear(p,i) \ | ||
134 | do { \ | ||
135 | (p)->err_flags[i]=0; \ | ||
136 | (p)->err_buffer[i]=0; \ | ||
137 | err_clear_data(p,i); \ | ||
138 | (p)->err_file[i]=NULL; \ | ||
139 | (p)->err_line[i]= -1; \ | ||
140 | } while(0) | ||
141 | |||
142 | static void err_load_strings(int lib, ERR_STRING_DATA *str); | ||
143 | |||
144 | static void ERR_STATE_free(ERR_STATE *s); | ||
145 | |||
146 | /* Define the predeclared (but externally opaque) "ERR_FNS" type */ | ||
147 | struct st_ERR_FNS | ||
148 | { | ||
149 | /* Works on the "error_hash" string table */ | ||
150 | LHASH *(*cb_err_get)(int create); | ||
151 | void (*cb_err_del)(void); | ||
152 | ERR_STRING_DATA *(*cb_err_get_item)(const ERR_STRING_DATA *); | ||
153 | ERR_STRING_DATA *(*cb_err_set_item)(ERR_STRING_DATA *); | ||
154 | ERR_STRING_DATA *(*cb_err_del_item)(ERR_STRING_DATA *); | ||
155 | /* Works on the "thread_hash" error-state table */ | ||
156 | LHASH *(*cb_thread_get)(int create); | ||
157 | void (*cb_thread_release)(LHASH **hash); | ||
158 | ERR_STATE *(*cb_thread_get_item)(const ERR_STATE *); | ||
159 | ERR_STATE *(*cb_thread_set_item)(ERR_STATE *); | ||
160 | void (*cb_thread_del_item)(const ERR_STATE *); | ||
161 | /* Returns the next available error "library" numbers */ | ||
162 | int (*cb_get_next_lib)(void); | ||
163 | }; | ||
164 | |||
165 | /* Predeclarations of the "err_defaults" functions */ | ||
166 | static LHASH *int_err_get(int create); | ||
167 | static void int_err_del(void); | ||
168 | static ERR_STRING_DATA *int_err_get_item(const ERR_STRING_DATA *); | ||
169 | static ERR_STRING_DATA *int_err_set_item(ERR_STRING_DATA *); | ||
170 | static ERR_STRING_DATA *int_err_del_item(ERR_STRING_DATA *); | ||
171 | static LHASH *int_thread_get(int create); | ||
172 | static void int_thread_release(LHASH **hash); | ||
173 | static ERR_STATE *int_thread_get_item(const ERR_STATE *); | ||
174 | static ERR_STATE *int_thread_set_item(ERR_STATE *); | ||
175 | static void int_thread_del_item(const ERR_STATE *); | ||
176 | static int int_err_get_next_lib(void); | ||
177 | /* The static ERR_FNS table using these defaults functions */ | ||
178 | static const ERR_FNS err_defaults = | ||
179 | { | ||
180 | int_err_get, | ||
181 | int_err_del, | ||
182 | int_err_get_item, | ||
183 | int_err_set_item, | ||
184 | int_err_del_item, | ||
185 | int_thread_get, | ||
186 | int_thread_release, | ||
187 | int_thread_get_item, | ||
188 | int_thread_set_item, | ||
189 | int_thread_del_item, | ||
190 | int_err_get_next_lib | ||
191 | }; | ||
192 | |||
193 | /* The replacable table of ERR_FNS functions we use at run-time */ | ||
194 | static const ERR_FNS *err_fns = NULL; | ||
195 | |||
196 | /* Eg. rather than using "err_get()", use "ERRFN(err_get)()". */ | ||
197 | #define ERRFN(a) err_fns->cb_##a | ||
198 | |||
199 | /* The internal state used by "err_defaults" - as such, the setting, reading, | ||
200 | * creating, and deleting of this data should only be permitted via the | ||
201 | * "err_defaults" functions. This way, a linked module can completely defer all | ||
202 | * ERR state operation (together with requisite locking) to the implementations | ||
203 | * and state in the loading application. */ | ||
204 | static LHASH *int_error_hash = NULL; | ||
205 | static LHASH *int_thread_hash = NULL; | ||
206 | static int int_thread_hash_references = 0; | ||
207 | static int int_err_library_number= ERR_LIB_USER; | ||
208 | |||
209 | /* Internal function that checks whether "err_fns" is set and if not, sets it to | ||
210 | * the defaults. */ | ||
211 | static void err_fns_check(void) | ||
212 | { | ||
213 | if (err_fns) return; | ||
214 | |||
215 | CRYPTO_w_lock(CRYPTO_LOCK_ERR); | ||
216 | if (!err_fns) | ||
217 | err_fns = &err_defaults; | ||
218 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
219 | } | ||
220 | |||
221 | /* API functions to get or set the underlying ERR functions. */ | ||
222 | |||
223 | const ERR_FNS *ERR_get_implementation(void) | ||
224 | { | ||
225 | err_fns_check(); | ||
226 | return err_fns; | ||
227 | } | ||
228 | |||
229 | int ERR_set_implementation(const ERR_FNS *fns) | ||
230 | { | ||
231 | int ret = 0; | ||
232 | |||
233 | CRYPTO_w_lock(CRYPTO_LOCK_ERR); | ||
234 | /* It's too late if 'err_fns' is non-NULL. BTW: not much point setting | ||
235 | * an error is there?! */ | ||
236 | if (!err_fns) | ||
237 | { | ||
238 | err_fns = fns; | ||
239 | ret = 1; | ||
240 | } | ||
241 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
242 | return ret; | ||
243 | } | ||
244 | |||
245 | /* These are the callbacks provided to "lh_new()" when creating the LHASH tables | ||
246 | * internal to the "err_defaults" implementation. */ | ||
247 | |||
248 | /* static unsigned long err_hash(ERR_STRING_DATA *a); */ | ||
249 | static unsigned long err_hash(const void *a_void); | ||
250 | /* static int err_cmp(ERR_STRING_DATA *a, ERR_STRING_DATA *b); */ | ||
251 | static int err_cmp(const void *a_void, const void *b_void); | ||
252 | /* static unsigned long pid_hash(ERR_STATE *pid); */ | ||
253 | static unsigned long pid_hash(const void *pid_void); | ||
254 | /* static int pid_cmp(ERR_STATE *a,ERR_STATE *pid); */ | ||
255 | static int pid_cmp(const void *a_void,const void *pid_void); | ||
256 | |||
257 | /* The internal functions used in the "err_defaults" implementation */ | ||
258 | |||
259 | static LHASH *int_err_get(int create) | ||
260 | { | ||
261 | LHASH *ret = NULL; | ||
262 | |||
263 | CRYPTO_w_lock(CRYPTO_LOCK_ERR); | ||
264 | if (!int_error_hash && create) | ||
265 | { | ||
266 | CRYPTO_push_info("int_err_get (err.c)"); | ||
267 | int_error_hash = lh_new(err_hash, err_cmp); | ||
268 | CRYPTO_pop_info(); | ||
269 | } | ||
270 | if (int_error_hash) | ||
271 | ret = int_error_hash; | ||
272 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
273 | |||
274 | return ret; | ||
275 | } | ||
276 | |||
277 | static void int_err_del(void) | ||
278 | { | ||
279 | CRYPTO_w_lock(CRYPTO_LOCK_ERR); | ||
280 | if (int_error_hash) | ||
281 | { | ||
282 | lh_free(int_error_hash); | ||
283 | int_error_hash = NULL; | ||
284 | } | ||
285 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
286 | } | ||
287 | |||
288 | static ERR_STRING_DATA *int_err_get_item(const ERR_STRING_DATA *d) | ||
289 | { | ||
290 | ERR_STRING_DATA *p; | ||
291 | LHASH *hash; | ||
292 | |||
293 | err_fns_check(); | ||
294 | hash = ERRFN(err_get)(0); | ||
295 | if (!hash) | ||
296 | return NULL; | ||
297 | |||
298 | CRYPTO_r_lock(CRYPTO_LOCK_ERR); | ||
299 | p = (ERR_STRING_DATA *)lh_retrieve(hash, d); | ||
300 | CRYPTO_r_unlock(CRYPTO_LOCK_ERR); | ||
301 | |||
302 | return p; | ||
303 | } | ||
304 | |||
305 | static ERR_STRING_DATA *int_err_set_item(ERR_STRING_DATA *d) | ||
306 | { | ||
307 | ERR_STRING_DATA *p; | ||
308 | LHASH *hash; | ||
309 | |||
310 | err_fns_check(); | ||
311 | hash = ERRFN(err_get)(1); | ||
312 | if (!hash) | ||
313 | return NULL; | ||
314 | |||
315 | CRYPTO_w_lock(CRYPTO_LOCK_ERR); | ||
316 | p = (ERR_STRING_DATA *)lh_insert(hash, d); | ||
317 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
318 | |||
319 | return p; | ||
320 | } | ||
321 | |||
322 | static ERR_STRING_DATA *int_err_del_item(ERR_STRING_DATA *d) | ||
323 | { | ||
324 | ERR_STRING_DATA *p; | ||
325 | LHASH *hash; | ||
326 | |||
327 | err_fns_check(); | ||
328 | hash = ERRFN(err_get)(0); | ||
329 | if (!hash) | ||
330 | return NULL; | ||
331 | |||
332 | CRYPTO_w_lock(CRYPTO_LOCK_ERR); | ||
333 | p = (ERR_STRING_DATA *)lh_delete(hash, d); | ||
334 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
335 | |||
336 | return p; | ||
337 | } | ||
338 | |||
339 | static LHASH *int_thread_get(int create) | ||
340 | { | ||
341 | LHASH *ret = NULL; | ||
342 | |||
343 | CRYPTO_w_lock(CRYPTO_LOCK_ERR); | ||
344 | if (!int_thread_hash && create) | ||
345 | { | ||
346 | CRYPTO_push_info("int_thread_get (err.c)"); | ||
347 | int_thread_hash = lh_new(pid_hash, pid_cmp); | ||
348 | CRYPTO_pop_info(); | ||
349 | } | ||
350 | if (int_thread_hash) | ||
351 | { | ||
352 | int_thread_hash_references++; | ||
353 | ret = int_thread_hash; | ||
354 | } | ||
355 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
356 | return ret; | ||
357 | } | ||
358 | |||
359 | static void int_thread_release(LHASH **hash) | ||
360 | { | ||
361 | int i; | ||
362 | |||
363 | if (hash == NULL || *hash == NULL) | ||
364 | return; | ||
365 | |||
366 | i = CRYPTO_add(&int_thread_hash_references, -1, CRYPTO_LOCK_ERR); | ||
367 | |||
368 | #ifdef REF_PRINT | ||
369 | fprintf(stderr,"%4d:%s\n",int_thread_hash_references,"ERR"); | ||
370 | #endif | ||
371 | if (i > 0) return; | ||
372 | #ifdef REF_CHECK | ||
373 | if (i < 0) | ||
374 | { | ||
375 | fprintf(stderr,"int_thread_release, bad reference count\n"); | ||
376 | abort(); /* ok */ | ||
377 | } | ||
378 | #endif | ||
379 | *hash = NULL; | ||
380 | } | ||
381 | |||
382 | static ERR_STATE *int_thread_get_item(const ERR_STATE *d) | ||
383 | { | ||
384 | ERR_STATE *p; | ||
385 | LHASH *hash; | ||
386 | |||
387 | err_fns_check(); | ||
388 | hash = ERRFN(thread_get)(0); | ||
389 | if (!hash) | ||
390 | return NULL; | ||
391 | |||
392 | CRYPTO_r_lock(CRYPTO_LOCK_ERR); | ||
393 | p = (ERR_STATE *)lh_retrieve(hash, d); | ||
394 | CRYPTO_r_unlock(CRYPTO_LOCK_ERR); | ||
395 | |||
396 | ERRFN(thread_release)(&hash); | ||
397 | return p; | ||
398 | } | ||
399 | |||
400 | static ERR_STATE *int_thread_set_item(ERR_STATE *d) | ||
401 | { | ||
402 | ERR_STATE *p; | ||
403 | LHASH *hash; | ||
404 | |||
405 | err_fns_check(); | ||
406 | hash = ERRFN(thread_get)(1); | ||
407 | if (!hash) | ||
408 | return NULL; | ||
409 | |||
410 | CRYPTO_w_lock(CRYPTO_LOCK_ERR); | ||
411 | p = (ERR_STATE *)lh_insert(hash, d); | ||
412 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
413 | |||
414 | ERRFN(thread_release)(&hash); | ||
415 | return p; | ||
416 | } | ||
417 | |||
418 | static void int_thread_del_item(const ERR_STATE *d) | ||
419 | { | ||
420 | ERR_STATE *p; | ||
421 | LHASH *hash; | ||
422 | |||
423 | err_fns_check(); | ||
424 | hash = ERRFN(thread_get)(0); | ||
425 | if (!hash) | ||
426 | return; | ||
427 | |||
428 | CRYPTO_w_lock(CRYPTO_LOCK_ERR); | ||
429 | p = (ERR_STATE *)lh_delete(hash, d); | ||
430 | /* make sure we don't leak memory */ | ||
431 | if (int_thread_hash_references == 1 | ||
432 | && int_thread_hash && (lh_num_items(int_thread_hash) == 0)) | ||
433 | { | ||
434 | lh_free(int_thread_hash); | ||
435 | int_thread_hash = NULL; | ||
436 | } | ||
437 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
438 | |||
439 | ERRFN(thread_release)(&hash); | ||
440 | if (p) | ||
441 | ERR_STATE_free(p); | ||
442 | } | ||
443 | |||
444 | static int int_err_get_next_lib(void) | ||
445 | { | ||
446 | int ret; | ||
447 | |||
448 | CRYPTO_w_lock(CRYPTO_LOCK_ERR); | ||
449 | ret = int_err_library_number++; | ||
450 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
451 | |||
452 | return ret; | ||
453 | } | ||
454 | |||
455 | static void ERR_STATE_free(ERR_STATE *s) | ||
456 | { | ||
457 | int i; | ||
458 | |||
459 | if (s == NULL) | ||
460 | return; | ||
461 | |||
462 | for (i=0; i<ERR_NUM_ERRORS; i++) | ||
463 | { | ||
464 | err_clear_data(s,i); | ||
465 | } | ||
466 | OPENSSL_free(s); | ||
467 | } | ||
468 | |||
469 | static void err_load_strings(int lib, ERR_STRING_DATA *str) | ||
470 | { | ||
471 | while (str->error) | ||
472 | { | ||
473 | if (lib) | ||
474 | str->error|=ERR_PACK(lib,0,0); | ||
475 | ERRFN(err_set_item)(str); | ||
476 | str++; | ||
477 | } | ||
478 | } | ||
479 | |||
480 | void ERR_load_strings(int lib, ERR_STRING_DATA *str) | ||
481 | { | ||
482 | err_fns_check(); | ||
483 | err_load_strings(lib, str); | ||
484 | } | ||
485 | |||
486 | void ERR_unload_strings(int lib, ERR_STRING_DATA *str) | ||
487 | { | ||
488 | while (str->error) | ||
489 | { | ||
490 | if (lib) | ||
491 | str->error|=ERR_PACK(lib,0,0); | ||
492 | ERRFN(err_del_item)(str); | ||
493 | str++; | ||
494 | } | ||
495 | } | ||
496 | |||
497 | void ERR_free_strings(void) | ||
498 | { | ||
499 | err_fns_check(); | ||
500 | ERRFN(err_del)(); | ||
501 | } | ||
502 | |||
503 | LHASH *ERR_get_string_table(void) | ||
504 | { | ||
505 | err_fns_check(); | ||
506 | return ERRFN(err_get)(0); | ||
507 | } | ||
508 | |||
509 | LHASH *ERR_get_err_state_table(void) | ||
510 | { | ||
511 | err_fns_check(); | ||
512 | return ERRFN(thread_get)(0); | ||
513 | } | ||
514 | |||
515 | void ERR_release_err_state_table(LHASH **hash) | ||
516 | { | ||
517 | err_fns_check(); | ||
518 | ERRFN(thread_release)(hash); | ||
519 | } | ||
520 | |||
521 | const char *ERR_lib_error_string(unsigned long e) | ||
522 | { | ||
523 | ERR_STRING_DATA d,*p; | ||
524 | unsigned long l; | ||
525 | |||
526 | err_fns_check(); | ||
527 | l=ERR_GET_LIB(e); | ||
528 | d.error=ERR_PACK(l,0,0); | ||
529 | p=ERRFN(err_get_item)(&d); | ||
530 | return((p == NULL)?NULL:p->string); | ||
531 | } | ||
532 | |||
533 | const char *ERR_func_error_string(unsigned long e) | ||
534 | { | ||
535 | ERR_STRING_DATA d,*p; | ||
536 | unsigned long l,f; | ||
537 | |||
538 | err_fns_check(); | ||
539 | l=ERR_GET_LIB(e); | ||
540 | f=ERR_GET_FUNC(e); | ||
541 | d.error=ERR_PACK(l,f,0); | ||
542 | p=ERRFN(err_get_item)(&d); | ||
543 | return((p == NULL)?NULL:p->string); | ||
544 | } | ||
545 | |||
546 | const char *ERR_reason_error_string(unsigned long e) | ||
547 | { | ||
548 | ERR_STRING_DATA d,*p=NULL; | ||
549 | unsigned long l,r; | ||
550 | |||
551 | err_fns_check(); | ||
552 | l=ERR_GET_LIB(e); | ||
553 | r=ERR_GET_REASON(e); | ||
554 | d.error=ERR_PACK(l,0,r); | ||
555 | p=ERRFN(err_get_item)(&d); | ||
556 | if (!p) | ||
557 | { | ||
558 | d.error=ERR_PACK(0,0,r); | ||
559 | p=ERRFN(err_get_item)(&d); | ||
560 | } | ||
561 | return((p == NULL)?NULL:p->string); | ||
562 | } | ||
563 | |||
564 | /* static unsigned long err_hash(ERR_STRING_DATA *a) */ | ||
565 | static unsigned long err_hash(const void *a_void) | ||
566 | { | ||
567 | unsigned long ret,l; | ||
568 | |||
569 | l=((const ERR_STRING_DATA *)a_void)->error; | ||
570 | ret=l^ERR_GET_LIB(l)^ERR_GET_FUNC(l); | ||
571 | return(ret^ret%19*13); | ||
572 | } | ||
573 | |||
574 | /* static int err_cmp(ERR_STRING_DATA *a, ERR_STRING_DATA *b) */ | ||
575 | static int err_cmp(const void *a_void, const void *b_void) | ||
576 | { | ||
577 | return((int)(((const ERR_STRING_DATA *)a_void)->error - | ||
578 | ((const ERR_STRING_DATA *)b_void)->error)); | ||
579 | } | ||
580 | |||
581 | /* static unsigned long pid_hash(ERR_STATE *a) */ | ||
582 | static unsigned long pid_hash(const void *a_void) | ||
583 | { | ||
584 | return(((const ERR_STATE *)a_void)->pid*13); | ||
585 | } | ||
586 | |||
587 | /* static int pid_cmp(ERR_STATE *a, ERR_STATE *b) */ | ||
588 | static int pid_cmp(const void *a_void, const void *b_void) | ||
589 | { | ||
590 | return((int)((long)((const ERR_STATE *)a_void)->pid - | ||
591 | (long)((const ERR_STATE *)b_void)->pid)); | ||
592 | } | ||
593 | #ifdef OPENSSL_FIPS | ||
594 | static void int_err_remove_state(unsigned long pid) | ||
595 | #else | ||
596 | void ERR_remove_state(unsigned long pid) | ||
597 | #endif | ||
598 | { | ||
599 | ERR_STATE tmp; | ||
600 | |||
601 | err_fns_check(); | ||
602 | if (pid == 0) | ||
603 | pid=(unsigned long)CRYPTO_thread_id(); | ||
604 | tmp.pid=pid; | ||
605 | /* thread_del_item automatically destroys the LHASH if the number of | ||
606 | * items reaches zero. */ | ||
607 | ERRFN(thread_del_item)(&tmp); | ||
608 | } | ||
609 | |||
610 | #ifdef OPENSSL_FIPS | ||
611 | static ERR_STATE *int_err_get_state(void) | ||
612 | #else | ||
613 | ERR_STATE *ERR_get_state(void) | ||
614 | #endif | ||
615 | { | ||
616 | static ERR_STATE fallback; | ||
617 | ERR_STATE *ret,tmp,*tmpp=NULL; | ||
618 | int i; | ||
619 | unsigned long pid; | ||
620 | |||
621 | err_fns_check(); | ||
622 | pid=(unsigned long)CRYPTO_thread_id(); | ||
623 | tmp.pid=pid; | ||
624 | ret=ERRFN(thread_get_item)(&tmp); | ||
625 | |||
626 | /* ret == the error state, if NULL, make a new one */ | ||
627 | if (ret == NULL) | ||
628 | { | ||
629 | ret=(ERR_STATE *)OPENSSL_malloc(sizeof(ERR_STATE)); | ||
630 | if (ret == NULL) return(&fallback); | ||
631 | ret->pid=pid; | ||
632 | ret->top=0; | ||
633 | ret->bottom=0; | ||
634 | for (i=0; i<ERR_NUM_ERRORS; i++) | ||
635 | { | ||
636 | ret->err_data[i]=NULL; | ||
637 | ret->err_data_flags[i]=0; | ||
638 | } | ||
639 | tmpp = ERRFN(thread_set_item)(ret); | ||
640 | /* To check if insertion failed, do a get. */ | ||
641 | if (ERRFN(thread_get_item)(ret) != ret) | ||
642 | { | ||
643 | ERR_STATE_free(ret); /* could not insert it */ | ||
644 | return(&fallback); | ||
645 | } | ||
646 | /* If a race occured in this function and we came second, tmpp | ||
647 | * is the first one that we just replaced. */ | ||
648 | if (tmpp) | ||
649 | ERR_STATE_free(tmpp); | ||
650 | } | ||
651 | return ret; | ||
652 | } | ||
653 | |||
654 | #ifdef OPENSSL_FIPS | ||
655 | void int_ERR_lib_init(void) | ||
656 | { | ||
657 | int_ERR_set_state_func(int_err_get_state, int_err_remove_state); | ||
658 | } | ||
659 | #endif | ||
660 | |||
661 | int ERR_get_next_error_library(void) | ||
662 | { | ||
663 | err_fns_check(); | ||
664 | return ERRFN(get_next_lib)(); | ||
665 | } | ||
diff --git a/src/lib/libssl/src/crypto/err/err_str.c b/src/lib/libssl/src/crypto/err/err_str.c new file mode 100644 index 0000000000..d39040888d --- /dev/null +++ b/src/lib/libssl/src/crypto/err/err_str.c | |||
@@ -0,0 +1,295 @@ | |||
1 | /* crypto/err/err_str.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
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 | */ | ||
111 | |||
112 | #include <stdio.h> | ||
113 | #include <stdarg.h> | ||
114 | #include <string.h> | ||
115 | #include "cryptlib.h" | ||
116 | #include <openssl/lhash.h> | ||
117 | #include <openssl/crypto.h> | ||
118 | #include <openssl/buffer.h> | ||
119 | #include <openssl/bio.h> | ||
120 | #include <openssl/err.h> | ||
121 | |||
122 | #ifndef OPENSSL_NO_ERR | ||
123 | static ERR_STRING_DATA ERR_str_libraries[]= | ||
124 | { | ||
125 | {ERR_PACK(ERR_LIB_NONE,0,0) ,"unknown library"}, | ||
126 | {ERR_PACK(ERR_LIB_SYS,0,0) ,"system library"}, | ||
127 | {ERR_PACK(ERR_LIB_BN,0,0) ,"bignum routines"}, | ||
128 | {ERR_PACK(ERR_LIB_RSA,0,0) ,"rsa routines"}, | ||
129 | {ERR_PACK(ERR_LIB_DH,0,0) ,"Diffie-Hellman routines"}, | ||
130 | {ERR_PACK(ERR_LIB_EVP,0,0) ,"digital envelope routines"}, | ||
131 | {ERR_PACK(ERR_LIB_BUF,0,0) ,"memory buffer routines"}, | ||
132 | {ERR_PACK(ERR_LIB_OBJ,0,0) ,"object identifier routines"}, | ||
133 | {ERR_PACK(ERR_LIB_PEM,0,0) ,"PEM routines"}, | ||
134 | {ERR_PACK(ERR_LIB_DSA,0,0) ,"dsa routines"}, | ||
135 | {ERR_PACK(ERR_LIB_X509,0,0) ,"x509 certificate routines"}, | ||
136 | {ERR_PACK(ERR_LIB_ASN1,0,0) ,"asn1 encoding routines"}, | ||
137 | {ERR_PACK(ERR_LIB_CONF,0,0) ,"configuration file routines"}, | ||
138 | {ERR_PACK(ERR_LIB_CRYPTO,0,0) ,"common libcrypto routines"}, | ||
139 | {ERR_PACK(ERR_LIB_EC,0,0) ,"elliptic curve routines"}, | ||
140 | {ERR_PACK(ERR_LIB_SSL,0,0) ,"SSL routines"}, | ||
141 | {ERR_PACK(ERR_LIB_BIO,0,0) ,"BIO routines"}, | ||
142 | {ERR_PACK(ERR_LIB_PKCS7,0,0) ,"PKCS7 routines"}, | ||
143 | {ERR_PACK(ERR_LIB_X509V3,0,0) ,"X509 V3 routines"}, | ||
144 | {ERR_PACK(ERR_LIB_PKCS12,0,0) ,"PKCS12 routines"}, | ||
145 | {ERR_PACK(ERR_LIB_RAND,0,0) ,"random number generator"}, | ||
146 | {ERR_PACK(ERR_LIB_DSO,0,0) ,"DSO support routines"}, | ||
147 | {ERR_PACK(ERR_LIB_ENGINE,0,0) ,"engine routines"}, | ||
148 | {ERR_PACK(ERR_LIB_OCSP,0,0) ,"OCSP routines"}, | ||
149 | {ERR_PACK(ERR_LIB_FIPS,0,0) ,"FIPS routines"}, | ||
150 | {ERR_PACK(ERR_LIB_CMS,0,0) ,"CMS routines"}, | ||
151 | {ERR_PACK(ERR_LIB_JPAKE,0,0) ,"JPAKE routines"}, | ||
152 | {0,NULL}, | ||
153 | }; | ||
154 | |||
155 | static ERR_STRING_DATA ERR_str_functs[]= | ||
156 | { | ||
157 | {ERR_PACK(0,SYS_F_FOPEN,0), "fopen"}, | ||
158 | {ERR_PACK(0,SYS_F_CONNECT,0), "connect"}, | ||
159 | {ERR_PACK(0,SYS_F_GETSERVBYNAME,0), "getservbyname"}, | ||
160 | {ERR_PACK(0,SYS_F_SOCKET,0), "socket"}, | ||
161 | {ERR_PACK(0,SYS_F_IOCTLSOCKET,0), "ioctlsocket"}, | ||
162 | {ERR_PACK(0,SYS_F_BIND,0), "bind"}, | ||
163 | {ERR_PACK(0,SYS_F_LISTEN,0), "listen"}, | ||
164 | {ERR_PACK(0,SYS_F_ACCEPT,0), "accept"}, | ||
165 | #ifdef OPENSSL_SYS_WINDOWS | ||
166 | {ERR_PACK(0,SYS_F_WSASTARTUP,0), "WSAstartup"}, | ||
167 | #endif | ||
168 | {ERR_PACK(0,SYS_F_OPENDIR,0), "opendir"}, | ||
169 | {ERR_PACK(0,SYS_F_FREAD,0), "fread"}, | ||
170 | {0,NULL}, | ||
171 | }; | ||
172 | |||
173 | static ERR_STRING_DATA ERR_str_reasons[]= | ||
174 | { | ||
175 | {ERR_R_SYS_LIB ,"system lib"}, | ||
176 | {ERR_R_BN_LIB ,"BN lib"}, | ||
177 | {ERR_R_RSA_LIB ,"RSA lib"}, | ||
178 | {ERR_R_DH_LIB ,"DH lib"}, | ||
179 | {ERR_R_EVP_LIB ,"EVP lib"}, | ||
180 | {ERR_R_BUF_LIB ,"BUF lib"}, | ||
181 | {ERR_R_OBJ_LIB ,"OBJ lib"}, | ||
182 | {ERR_R_PEM_LIB ,"PEM lib"}, | ||
183 | {ERR_R_DSA_LIB ,"DSA lib"}, | ||
184 | {ERR_R_X509_LIB ,"X509 lib"}, | ||
185 | {ERR_R_ASN1_LIB ,"ASN1 lib"}, | ||
186 | {ERR_R_CONF_LIB ,"CONF lib"}, | ||
187 | {ERR_R_CRYPTO_LIB ,"CRYPTO lib"}, | ||
188 | {ERR_R_EC_LIB ,"EC lib"}, | ||
189 | {ERR_R_SSL_LIB ,"SSL lib"}, | ||
190 | {ERR_R_BIO_LIB ,"BIO lib"}, | ||
191 | {ERR_R_PKCS7_LIB ,"PKCS7 lib"}, | ||
192 | {ERR_R_X509V3_LIB ,"X509V3 lib"}, | ||
193 | {ERR_R_PKCS12_LIB ,"PKCS12 lib"}, | ||
194 | {ERR_R_RAND_LIB ,"RAND lib"}, | ||
195 | {ERR_R_DSO_LIB ,"DSO lib"}, | ||
196 | {ERR_R_ENGINE_LIB ,"ENGINE lib"}, | ||
197 | {ERR_R_OCSP_LIB ,"OCSP lib"}, | ||
198 | |||
199 | {ERR_R_NESTED_ASN1_ERROR ,"nested asn1 error"}, | ||
200 | {ERR_R_BAD_ASN1_OBJECT_HEADER ,"bad asn1 object header"}, | ||
201 | {ERR_R_BAD_GET_ASN1_OBJECT_CALL ,"bad get asn1 object call"}, | ||
202 | {ERR_R_EXPECTING_AN_ASN1_SEQUENCE ,"expecting an asn1 sequence"}, | ||
203 | {ERR_R_ASN1_LENGTH_MISMATCH ,"asn1 length mismatch"}, | ||
204 | {ERR_R_MISSING_ASN1_EOS ,"missing asn1 eos"}, | ||
205 | |||
206 | {ERR_R_FATAL ,"fatal"}, | ||
207 | {ERR_R_MALLOC_FAILURE ,"malloc failure"}, | ||
208 | {ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED ,"called a function you should not call"}, | ||
209 | {ERR_R_PASSED_NULL_PARAMETER ,"passed a null parameter"}, | ||
210 | {ERR_R_INTERNAL_ERROR ,"internal error"}, | ||
211 | {ERR_R_DISABLED ,"called a function that was disabled at compile-time"}, | ||
212 | |||
213 | {0,NULL}, | ||
214 | }; | ||
215 | #endif | ||
216 | |||
217 | #ifndef OPENSSL_NO_ERR | ||
218 | #define NUM_SYS_STR_REASONS 127 | ||
219 | #define LEN_SYS_STR_REASON 32 | ||
220 | |||
221 | static ERR_STRING_DATA SYS_str_reasons[NUM_SYS_STR_REASONS + 1]; | ||
222 | /* SYS_str_reasons is filled with copies of strerror() results at | ||
223 | * initialization. | ||
224 | * 'errno' values up to 127 should cover all usual errors, | ||
225 | * others will be displayed numerically by ERR_error_string. | ||
226 | * It is crucial that we have something for each reason code | ||
227 | * that occurs in ERR_str_reasons, or bogus reason strings | ||
228 | * will be returned for SYSerr, which always gets an errno | ||
229 | * value and never one of those 'standard' reason codes. */ | ||
230 | |||
231 | static void build_SYS_str_reasons(void) | ||
232 | { | ||
233 | /* OPENSSL_malloc cannot be used here, use static storage instead */ | ||
234 | static char strerror_tab[NUM_SYS_STR_REASONS][LEN_SYS_STR_REASON]; | ||
235 | int i; | ||
236 | static int init = 1; | ||
237 | |||
238 | CRYPTO_r_lock(CRYPTO_LOCK_ERR); | ||
239 | if (!init) | ||
240 | { | ||
241 | CRYPTO_r_unlock(CRYPTO_LOCK_ERR); | ||
242 | return; | ||
243 | } | ||
244 | |||
245 | CRYPTO_r_unlock(CRYPTO_LOCK_ERR); | ||
246 | CRYPTO_w_lock(CRYPTO_LOCK_ERR); | ||
247 | if (!init) | ||
248 | { | ||
249 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
250 | return; | ||
251 | } | ||
252 | |||
253 | for (i = 1; i <= NUM_SYS_STR_REASONS; i++) | ||
254 | { | ||
255 | ERR_STRING_DATA *str = &SYS_str_reasons[i - 1]; | ||
256 | |||
257 | str->error = (unsigned long)i; | ||
258 | if (str->string == NULL) | ||
259 | { | ||
260 | char (*dest)[LEN_SYS_STR_REASON] = &(strerror_tab[i - 1]); | ||
261 | char *src = strerror(i); | ||
262 | if (src != NULL) | ||
263 | { | ||
264 | strncpy(*dest, src, sizeof *dest); | ||
265 | (*dest)[sizeof *dest - 1] = '\0'; | ||
266 | str->string = *dest; | ||
267 | } | ||
268 | } | ||
269 | if (str->string == NULL) | ||
270 | str->string = "unknown"; | ||
271 | } | ||
272 | |||
273 | /* Now we still have SYS_str_reasons[NUM_SYS_STR_REASONS] = {0, NULL}, | ||
274 | * as required by ERR_load_strings. */ | ||
275 | |||
276 | init = 0; | ||
277 | |||
278 | CRYPTO_w_unlock(CRYPTO_LOCK_ERR); | ||
279 | } | ||
280 | #endif | ||
281 | |||
282 | void ERR_load_ERR_strings(void) | ||
283 | { | ||
284 | #ifndef OPENSSL_NO_ERR | ||
285 | if (ERR_func_error_string(ERR_str_functs[0].error) == NULL) | ||
286 | { | ||
287 | ERR_load_strings(0,ERR_str_libraries); | ||
288 | ERR_load_strings(0,ERR_str_reasons); | ||
289 | ERR_load_strings(ERR_LIB_SYS,ERR_str_functs); | ||
290 | build_SYS_str_reasons(); | ||
291 | ERR_load_strings(ERR_LIB_SYS,SYS_str_reasons); | ||
292 | } | ||
293 | #endif | ||
294 | } | ||
295 | |||
diff --git a/src/lib/libssl/src/crypto/evp/dig_eng.c b/src/lib/libssl/src/crypto/evp/dig_eng.c new file mode 100644 index 0000000000..64cdf9366c --- /dev/null +++ b/src/lib/libssl/src/crypto/evp/dig_eng.c | |||
@@ -0,0 +1,180 @@ | |||
1 | /* crypto/evp/digest.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
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 | */ | ||
111 | |||
112 | #include <stdio.h> | ||
113 | #include "cryptlib.h" | ||
114 | #include <openssl/objects.h> | ||
115 | #include <openssl/evp.h> | ||
116 | #ifndef OPENSSL_NO_ENGINE | ||
117 | #include <openssl/engine.h> | ||
118 | #endif | ||
119 | #include "evp_locl.h" | ||
120 | |||
121 | #ifndef OPENSSL_NO_ENGINE | ||
122 | |||
123 | #ifdef OPENSSL_FIPS | ||
124 | |||
125 | static int do_evp_md_engine_full(EVP_MD_CTX *ctx, const EVP_MD **ptype, ENGINE *impl) | ||
126 | { | ||
127 | if (*ptype) | ||
128 | { | ||
129 | /* Ensure an ENGINE left lying around from last time is cleared | ||
130 | * (the previous check attempted to avoid this if the same | ||
131 | * ENGINE and EVP_MD could be used). */ | ||
132 | if(ctx->engine) | ||
133 | ENGINE_finish(ctx->engine); | ||
134 | if(impl) | ||
135 | { | ||
136 | if (!ENGINE_init(impl)) | ||
137 | { | ||
138 | EVPerr(EVP_F_DO_EVP_MD_ENGINE_FULL,EVP_R_INITIALIZATION_ERROR); | ||
139 | return 0; | ||
140 | } | ||
141 | } | ||
142 | else | ||
143 | /* Ask if an ENGINE is reserved for this job */ | ||
144 | impl = ENGINE_get_digest_engine((*ptype)->type); | ||
145 | if(impl) | ||
146 | { | ||
147 | /* There's an ENGINE for this job ... (apparently) */ | ||
148 | const EVP_MD *d = ENGINE_get_digest(impl, (*ptype)->type); | ||
149 | if(!d) | ||
150 | { | ||
151 | /* Same comment from evp_enc.c */ | ||
152 | EVPerr(EVP_F_DO_EVP_MD_ENGINE_FULL,EVP_R_INITIALIZATION_ERROR); | ||
153 | return 0; | ||
154 | } | ||
155 | /* We'll use the ENGINE's private digest definition */ | ||
156 | *ptype = d; | ||
157 | /* Store the ENGINE functional reference so we know | ||
158 | * 'type' came from an ENGINE and we need to release | ||
159 | * it when done. */ | ||
160 | ctx->engine = impl; | ||
161 | } | ||
162 | else | ||
163 | ctx->engine = NULL; | ||
164 | } | ||
165 | else | ||
166 | if(!ctx->digest) | ||
167 | { | ||
168 | EVPerr(EVP_F_DO_EVP_MD_ENGINE_FULL,EVP_R_NO_DIGEST_SET); | ||
169 | return 0; | ||
170 | } | ||
171 | return 1; | ||
172 | } | ||
173 | |||
174 | void int_EVP_MD_init_engine_callbacks(void) | ||
175 | { | ||
176 | int_EVP_MD_set_engine_callbacks( | ||
177 | ENGINE_init, ENGINE_finish, do_evp_md_engine_full); | ||
178 | } | ||
179 | #endif | ||
180 | #endif | ||
diff --git a/src/lib/libssl/src/crypto/evp/enc_min.c b/src/lib/libssl/src/crypto/evp/enc_min.c new file mode 100644 index 0000000000..3cb4626bef --- /dev/null +++ b/src/lib/libssl/src/crypto/evp/enc_min.c | |||
@@ -0,0 +1,390 @@ | |||
1 | /* crypto/evp/enc_min.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include "cryptlib.h" | ||
61 | #include <openssl/evp.h> | ||
62 | #include <openssl/err.h> | ||
63 | #include <openssl/rand.h> | ||
64 | #ifndef OPENSSL_NO_ENGINE | ||
65 | #include <openssl/engine.h> | ||
66 | #endif | ||
67 | #include "evp_locl.h" | ||
68 | |||
69 | void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *ctx) | ||
70 | { | ||
71 | #ifdef OPENSSL_FIPS | ||
72 | FIPS_selftest_check(); | ||
73 | #endif | ||
74 | memset(ctx,0,sizeof(EVP_CIPHER_CTX)); | ||
75 | /* ctx->cipher=NULL; */ | ||
76 | } | ||
77 | |||
78 | #ifdef OPENSSL_FIPS | ||
79 | |||
80 | /* The purpose of these is to trap programs that attempt to use non FIPS | ||
81 | * algorithms in FIPS mode and ignore the errors. | ||
82 | */ | ||
83 | |||
84 | static int bad_init(EVP_CIPHER_CTX *ctx, const unsigned char *key, | ||
85 | const unsigned char *iv, int enc) | ||
86 | { FIPS_ERROR_IGNORED("Cipher init"); return 0;} | ||
87 | |||
88 | static int bad_do_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | ||
89 | const unsigned char *in, unsigned int inl) | ||
90 | { FIPS_ERROR_IGNORED("Cipher update"); return 0;} | ||
91 | |||
92 | /* NB: no cleanup because it is allowed after failed init */ | ||
93 | |||
94 | static int bad_set_asn1(EVP_CIPHER_CTX *ctx, ASN1_TYPE *typ) | ||
95 | { FIPS_ERROR_IGNORED("Cipher set_asn1"); return 0;} | ||
96 | static int bad_get_asn1(EVP_CIPHER_CTX *ctx, ASN1_TYPE *typ) | ||
97 | { FIPS_ERROR_IGNORED("Cipher get_asn1"); return 0;} | ||
98 | static int bad_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr) | ||
99 | { FIPS_ERROR_IGNORED("Cipher ctrl"); return 0;} | ||
100 | |||
101 | static const EVP_CIPHER bad_cipher = | ||
102 | { | ||
103 | 0, | ||
104 | 0, | ||
105 | 0, | ||
106 | 0, | ||
107 | 0, | ||
108 | bad_init, | ||
109 | bad_do_cipher, | ||
110 | NULL, | ||
111 | 0, | ||
112 | bad_set_asn1, | ||
113 | bad_get_asn1, | ||
114 | bad_ctrl, | ||
115 | NULL | ||
116 | }; | ||
117 | |||
118 | #endif | ||
119 | |||
120 | #ifndef OPENSSL_NO_ENGINE | ||
121 | |||
122 | #ifdef OPENSSL_FIPS | ||
123 | |||
124 | static int do_engine_null(ENGINE *impl) { return 0;} | ||
125 | static int do_evp_enc_engine_null(EVP_CIPHER_CTX *ctx, | ||
126 | const EVP_CIPHER **pciph, ENGINE *impl) | ||
127 | { return 1; } | ||
128 | |||
129 | static int (*do_engine_finish)(ENGINE *impl) | ||
130 | = do_engine_null; | ||
131 | |||
132 | static int (*do_evp_enc_engine) | ||
133 | (EVP_CIPHER_CTX *ctx, const EVP_CIPHER **pciph, ENGINE *impl) | ||
134 | = do_evp_enc_engine_null; | ||
135 | |||
136 | void int_EVP_CIPHER_set_engine_callbacks( | ||
137 | int (*eng_ciph_fin)(ENGINE *impl), | ||
138 | int (*eng_ciph_evp) | ||
139 | (EVP_CIPHER_CTX *ctx, const EVP_CIPHER **pciph, ENGINE *impl)) | ||
140 | { | ||
141 | do_engine_finish = eng_ciph_fin; | ||
142 | do_evp_enc_engine = eng_ciph_evp; | ||
143 | } | ||
144 | |||
145 | #else | ||
146 | |||
147 | #define do_engine_finish ENGINE_finish | ||
148 | |||
149 | static int do_evp_enc_engine(EVP_CIPHER_CTX *ctx, const EVP_CIPHER **pcipher, ENGINE *impl) | ||
150 | { | ||
151 | if(impl) | ||
152 | { | ||
153 | if (!ENGINE_init(impl)) | ||
154 | { | ||
155 | EVPerr(EVP_F_DO_EVP_ENC_ENGINE, EVP_R_INITIALIZATION_ERROR); | ||
156 | return 0; | ||
157 | } | ||
158 | } | ||
159 | else | ||
160 | /* Ask if an ENGINE is reserved for this job */ | ||
161 | impl = ENGINE_get_cipher_engine((*pcipher)->nid); | ||
162 | if(impl) | ||
163 | { | ||
164 | /* There's an ENGINE for this job ... (apparently) */ | ||
165 | const EVP_CIPHER *c = ENGINE_get_cipher(impl, (*pcipher)->nid); | ||
166 | if(!c) | ||
167 | { | ||
168 | /* One positive side-effect of US's export | ||
169 | * control history, is that we should at least | ||
170 | * be able to avoid using US mispellings of | ||
171 | * "initialisation"? */ | ||
172 | EVPerr(EVP_F_DO_EVP_ENC_ENGINE, EVP_R_INITIALIZATION_ERROR); | ||
173 | return 0; | ||
174 | } | ||
175 | /* We'll use the ENGINE's private cipher definition */ | ||
176 | *pcipher = c; | ||
177 | /* Store the ENGINE functional reference so we know | ||
178 | * 'cipher' came from an ENGINE and we need to release | ||
179 | * it when done. */ | ||
180 | ctx->engine = impl; | ||
181 | } | ||
182 | else | ||
183 | ctx->engine = NULL; | ||
184 | return 1; | ||
185 | } | ||
186 | |||
187 | #endif | ||
188 | |||
189 | #endif | ||
190 | |||
191 | int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *impl, | ||
192 | const unsigned char *key, const unsigned char *iv, int enc) | ||
193 | { | ||
194 | if (enc == -1) | ||
195 | enc = ctx->encrypt; | ||
196 | else | ||
197 | { | ||
198 | if (enc) | ||
199 | enc = 1; | ||
200 | ctx->encrypt = enc; | ||
201 | } | ||
202 | #ifdef OPENSSL_NO_FIPS | ||
203 | if(FIPS_selftest_failed()) | ||
204 | { | ||
205 | FIPSerr(FIPS_F_EVP_CIPHERINIT_EX,FIPS_R_FIPS_SELFTEST_FAILED); | ||
206 | ctx->cipher = &bad_cipher; | ||
207 | return 0; | ||
208 | } | ||
209 | #endif | ||
210 | #ifndef OPENSSL_NO_ENGINE | ||
211 | /* Whether it's nice or not, "Inits" can be used on "Final"'d contexts | ||
212 | * so this context may already have an ENGINE! Try to avoid releasing | ||
213 | * the previous handle, re-querying for an ENGINE, and having a | ||
214 | * reinitialisation, when it may all be unecessary. */ | ||
215 | if (ctx->engine && ctx->cipher && (!cipher || | ||
216 | (cipher && (cipher->nid == ctx->cipher->nid)))) | ||
217 | goto skip_to_init; | ||
218 | #endif | ||
219 | if (cipher) | ||
220 | { | ||
221 | /* Ensure a context left lying around from last time is cleared | ||
222 | * (the previous check attempted to avoid this if the same | ||
223 | * ENGINE and EVP_CIPHER could be used). */ | ||
224 | EVP_CIPHER_CTX_cleanup(ctx); | ||
225 | |||
226 | /* Restore encrypt field: it is zeroed by cleanup */ | ||
227 | ctx->encrypt = enc; | ||
228 | #ifndef OPENSSL_NO_ENGINE | ||
229 | if (!do_evp_enc_engine(ctx, &cipher, impl)) | ||
230 | return 0; | ||
231 | #endif | ||
232 | |||
233 | ctx->cipher=cipher; | ||
234 | if (ctx->cipher->ctx_size) | ||
235 | { | ||
236 | ctx->cipher_data=OPENSSL_malloc(ctx->cipher->ctx_size); | ||
237 | if (!ctx->cipher_data) | ||
238 | { | ||
239 | EVPerr(EVP_F_EVP_CIPHERINIT_EX, ERR_R_MALLOC_FAILURE); | ||
240 | return 0; | ||
241 | } | ||
242 | } | ||
243 | else | ||
244 | { | ||
245 | ctx->cipher_data = NULL; | ||
246 | } | ||
247 | ctx->key_len = cipher->key_len; | ||
248 | ctx->flags = 0; | ||
249 | if(ctx->cipher->flags & EVP_CIPH_CTRL_INIT) | ||
250 | { | ||
251 | if(!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_INIT, 0, NULL)) | ||
252 | { | ||
253 | EVPerr(EVP_F_EVP_CIPHERINIT_EX, EVP_R_INITIALIZATION_ERROR); | ||
254 | return 0; | ||
255 | } | ||
256 | } | ||
257 | } | ||
258 | else if(!ctx->cipher) | ||
259 | { | ||
260 | EVPerr(EVP_F_EVP_CIPHERINIT_EX, EVP_R_NO_CIPHER_SET); | ||
261 | return 0; | ||
262 | } | ||
263 | #ifndef OPENSSL_NO_ENGINE | ||
264 | skip_to_init: | ||
265 | #endif | ||
266 | /* we assume block size is a power of 2 in *cryptUpdate */ | ||
267 | OPENSSL_assert(ctx->cipher->block_size == 1 | ||
268 | || ctx->cipher->block_size == 8 | ||
269 | || ctx->cipher->block_size == 16); | ||
270 | |||
271 | if(!(EVP_CIPHER_CTX_flags(ctx) & EVP_CIPH_CUSTOM_IV)) { | ||
272 | switch(EVP_CIPHER_CTX_mode(ctx)) { | ||
273 | |||
274 | case EVP_CIPH_STREAM_CIPHER: | ||
275 | case EVP_CIPH_ECB_MODE: | ||
276 | break; | ||
277 | |||
278 | case EVP_CIPH_CFB_MODE: | ||
279 | case EVP_CIPH_OFB_MODE: | ||
280 | |||
281 | ctx->num = 0; | ||
282 | |||
283 | case EVP_CIPH_CBC_MODE: | ||
284 | |||
285 | OPENSSL_assert(EVP_CIPHER_CTX_iv_length(ctx) <= | ||
286 | (int)sizeof(ctx->iv)); | ||
287 | if(iv) memcpy(ctx->oiv, iv, EVP_CIPHER_CTX_iv_length(ctx)); | ||
288 | memcpy(ctx->iv, ctx->oiv, EVP_CIPHER_CTX_iv_length(ctx)); | ||
289 | break; | ||
290 | |||
291 | default: | ||
292 | return 0; | ||
293 | break; | ||
294 | } | ||
295 | } | ||
296 | |||
297 | #ifdef OPENSSL_FIPS | ||
298 | /* After 'key' is set no further parameters changes are permissible. | ||
299 | * So only check for non FIPS enabling at this point. | ||
300 | */ | ||
301 | if (key && FIPS_mode()) | ||
302 | { | ||
303 | if (!(ctx->cipher->flags & EVP_CIPH_FLAG_FIPS) | ||
304 | & !(ctx->flags & EVP_CIPH_FLAG_NON_FIPS_ALLOW)) | ||
305 | { | ||
306 | EVPerr(EVP_F_EVP_CIPHERINIT_EX, EVP_R_DISABLED_FOR_FIPS); | ||
307 | #if 0 | ||
308 | ERR_add_error_data(2, "cipher=", | ||
309 | EVP_CIPHER_name(ctx->cipher)); | ||
310 | #endif | ||
311 | ctx->cipher = &bad_cipher; | ||
312 | return 0; | ||
313 | } | ||
314 | } | ||
315 | #endif | ||
316 | |||
317 | if(key || (ctx->cipher->flags & EVP_CIPH_ALWAYS_CALL_INIT)) { | ||
318 | if(!ctx->cipher->init(ctx,key,iv,enc)) return 0; | ||
319 | } | ||
320 | ctx->buf_len=0; | ||
321 | ctx->final_used=0; | ||
322 | ctx->block_mask=ctx->cipher->block_size-1; | ||
323 | return 1; | ||
324 | } | ||
325 | |||
326 | int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *c) | ||
327 | { | ||
328 | if (c->cipher != NULL) | ||
329 | { | ||
330 | if(c->cipher->cleanup && !c->cipher->cleanup(c)) | ||
331 | return 0; | ||
332 | /* Cleanse cipher context data */ | ||
333 | if (c->cipher_data) | ||
334 | OPENSSL_cleanse(c->cipher_data, c->cipher->ctx_size); | ||
335 | } | ||
336 | if (c->cipher_data) | ||
337 | OPENSSL_free(c->cipher_data); | ||
338 | #ifndef OPENSSL_NO_ENGINE | ||
339 | if (c->engine) | ||
340 | /* The EVP_CIPHER we used belongs to an ENGINE, release the | ||
341 | * functional reference we held for this reason. */ | ||
342 | do_engine_finish(c->engine); | ||
343 | #endif | ||
344 | memset(c,0,sizeof(EVP_CIPHER_CTX)); | ||
345 | return 1; | ||
346 | } | ||
347 | |||
348 | int EVP_Cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) | ||
349 | { | ||
350 | #ifdef OPENSSL_FIPS | ||
351 | FIPS_selftest_check(); | ||
352 | #endif | ||
353 | return ctx->cipher->do_cipher(ctx,out,in,inl); | ||
354 | } | ||
355 | |||
356 | int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr) | ||
357 | { | ||
358 | int ret; | ||
359 | if(!ctx->cipher) { | ||
360 | EVPerr(EVP_F_EVP_CIPHER_CTX_CTRL, EVP_R_NO_CIPHER_SET); | ||
361 | return 0; | ||
362 | } | ||
363 | |||
364 | if(!ctx->cipher->ctrl) { | ||
365 | EVPerr(EVP_F_EVP_CIPHER_CTX_CTRL, EVP_R_CTRL_NOT_IMPLEMENTED); | ||
366 | return 0; | ||
367 | } | ||
368 | |||
369 | ret = ctx->cipher->ctrl(ctx, type, arg, ptr); | ||
370 | if(ret == -1) { | ||
371 | EVPerr(EVP_F_EVP_CIPHER_CTX_CTRL, EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED); | ||
372 | return 0; | ||
373 | } | ||
374 | return ret; | ||
375 | } | ||
376 | |||
377 | unsigned long EVP_CIPHER_CTX_flags(const EVP_CIPHER_CTX *ctx) | ||
378 | { | ||
379 | return ctx->cipher->flags; | ||
380 | } | ||
381 | |||
382 | int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx) | ||
383 | { | ||
384 | return ctx->cipher->iv_len; | ||
385 | } | ||
386 | |||
387 | int EVP_CIPHER_nid(const EVP_CIPHER *cipher) | ||
388 | { | ||
389 | return cipher->nid; | ||
390 | } | ||
diff --git a/src/lib/libssl/src/crypto/evp/evp_cnf.c b/src/lib/libssl/src/crypto/evp/evp_cnf.c new file mode 100644 index 0000000000..2e4db30235 --- /dev/null +++ b/src/lib/libssl/src/crypto/evp/evp_cnf.c | |||
@@ -0,0 +1,125 @@ | |||
1 | /* evp_cnf.c */ | ||
2 | /* Written by Stephen Henson (steve@openssl.org) for the OpenSSL | ||
3 | * project 2007. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 2007 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include <ctype.h> | ||
61 | #include <openssl/crypto.h> | ||
62 | #include "cryptlib.h" | ||
63 | #include <openssl/conf.h> | ||
64 | #include <openssl/dso.h> | ||
65 | #include <openssl/x509.h> | ||
66 | #include <openssl/x509v3.h> | ||
67 | #ifdef OPENSSL_FIPS | ||
68 | #include <openssl/fips.h> | ||
69 | #endif | ||
70 | |||
71 | |||
72 | /* Algorithm configuration module. */ | ||
73 | |||
74 | static int alg_module_init(CONF_IMODULE *md, const CONF *cnf) | ||
75 | { | ||
76 | int i; | ||
77 | const char *oid_section; | ||
78 | STACK_OF(CONF_VALUE) *sktmp; | ||
79 | CONF_VALUE *oval; | ||
80 | oid_section = CONF_imodule_get_value(md); | ||
81 | if(!(sktmp = NCONF_get_section(cnf, oid_section))) | ||
82 | { | ||
83 | EVPerr(EVP_F_ALG_MODULE_INIT, EVP_R_ERROR_LOADING_SECTION); | ||
84 | return 0; | ||
85 | } | ||
86 | for(i = 0; i < sk_CONF_VALUE_num(sktmp); i++) | ||
87 | { | ||
88 | oval = sk_CONF_VALUE_value(sktmp, i); | ||
89 | if (!strcmp(oval->name, "fips_mode")) | ||
90 | { | ||
91 | int m; | ||
92 | if (!X509V3_get_value_bool(oval, &m)) | ||
93 | { | ||
94 | EVPerr(EVP_F_ALG_MODULE_INIT, EVP_R_INVALID_FIPS_MODE); | ||
95 | return 0; | ||
96 | } | ||
97 | if (m > 0) | ||
98 | { | ||
99 | #ifdef OPENSSL_FIPS | ||
100 | if (!FIPS_mode() && !FIPS_mode_set(1)) | ||
101 | { | ||
102 | EVPerr(EVP_F_ALG_MODULE_INIT, EVP_R_ERROR_SETTING_FIPS_MODE); | ||
103 | return 0; | ||
104 | } | ||
105 | #else | ||
106 | EVPerr(EVP_F_ALG_MODULE_INIT, EVP_R_FIPS_MODE_NOT_SUPPORTED); | ||
107 | return 0; | ||
108 | #endif | ||
109 | } | ||
110 | } | ||
111 | else | ||
112 | { | ||
113 | EVPerr(EVP_F_ALG_MODULE_INIT, EVP_R_UNKNOWN_OPTION); | ||
114 | ERR_add_error_data(4, "name=", oval->name, | ||
115 | ", value=", oval->value); | ||
116 | } | ||
117 | |||
118 | } | ||
119 | return 1; | ||
120 | } | ||
121 | |||
122 | void EVP_add_alg_module(void) | ||
123 | { | ||
124 | CONF_module_add("alg_section", alg_module_init, 0); | ||
125 | } | ||
diff --git a/src/lib/libssl/src/crypto/fips_err.c b/src/lib/libssl/src/crypto/fips_err.c new file mode 100644 index 0000000000..09f11748f6 --- /dev/null +++ b/src/lib/libssl/src/crypto/fips_err.c | |||
@@ -0,0 +1,7 @@ | |||
1 | #include <openssl/opensslconf.h> | ||
2 | |||
3 | #ifdef OPENSSL_FIPS | ||
4 | # include "fips_err.h" | ||
5 | #else | ||
6 | static void *dummy=&dummy; | ||
7 | #endif | ||
diff --git a/src/lib/libssl/src/crypto/hmac/Makefile b/src/lib/libssl/src/crypto/hmac/Makefile index 01f10c396f..5cfa37d99c 100644 --- a/src/lib/libssl/src/crypto/hmac/Makefile +++ b/src/lib/libssl/src/crypto/hmac/Makefile | |||
@@ -33,7 +33,7 @@ top: | |||
33 | all: lib | 33 | all: lib |
34 | 34 | ||
35 | lib: $(LIBOBJ) | 35 | lib: $(LIBOBJ) |
36 | $(AR) $(LIB) $(LIBOBJ) | 36 | $(ARX) $(LIB) $(LIBOBJ) |
37 | $(RANLIB) $(LIB) || echo Never mind. | 37 | $(RANLIB) $(LIB) || echo Never mind. |
38 | @touch lib | 38 | @touch lib |
39 | 39 | ||
@@ -77,9 +77,10 @@ clean: | |||
77 | hmac.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 77 | hmac.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
78 | hmac.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 78 | hmac.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
79 | hmac.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | 79 | hmac.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
80 | hmac.o: ../../include/openssl/evp.h ../../include/openssl/hmac.h | 80 | hmac.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
81 | hmac.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 81 | hmac.o: ../../include/openssl/hmac.h ../../include/openssl/lhash.h |
82 | hmac.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 82 | hmac.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
83 | hmac.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 83 | hmac.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
84 | hmac.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | 84 | hmac.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h |
85 | hmac.o: ../../include/openssl/symhacks.h ../cryptlib.h hmac.c | 85 | hmac.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
86 | hmac.o: ../cryptlib.h hmac.c | ||
diff --git a/src/lib/libssl/src/crypto/idea/Makefile b/src/lib/libssl/src/crypto/idea/Makefile index b2e7add666..55c0d4dbff 100644 --- a/src/lib/libssl/src/crypto/idea/Makefile +++ b/src/lib/libssl/src/crypto/idea/Makefile | |||
@@ -33,7 +33,7 @@ top: | |||
33 | all: lib | 33 | all: lib |
34 | 34 | ||
35 | lib: $(LIBOBJ) | 35 | lib: $(LIBOBJ) |
36 | $(AR) $(LIB) $(LIBOBJ) | 36 | $(ARX) $(LIB) $(LIBOBJ) |
37 | $(RANLIB) $(LIB) || echo Never mind. | 37 | $(RANLIB) $(LIB) || echo Never mind. |
38 | @touch lib | 38 | @touch lib |
39 | 39 | ||
@@ -82,5 +82,9 @@ i_ecb.o: ../../include/openssl/idea.h ../../include/openssl/opensslconf.h | |||
82 | i_ecb.o: ../../include/openssl/opensslv.h i_ecb.c idea_lcl.h | 82 | i_ecb.o: ../../include/openssl/opensslv.h i_ecb.c idea_lcl.h |
83 | i_ofb64.o: ../../include/openssl/idea.h ../../include/openssl/opensslconf.h | 83 | i_ofb64.o: ../../include/openssl/idea.h ../../include/openssl/opensslconf.h |
84 | i_ofb64.o: i_ofb64.c idea_lcl.h | 84 | i_ofb64.o: i_ofb64.c idea_lcl.h |
85 | i_skey.o: ../../include/openssl/idea.h ../../include/openssl/opensslconf.h | 85 | i_skey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
86 | i_skey.o: ../../include/openssl/fips.h ../../include/openssl/idea.h | ||
87 | i_skey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | ||
88 | i_skey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h | ||
89 | i_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
86 | i_skey.o: i_skey.c idea_lcl.h | 90 | i_skey.o: i_skey.c idea_lcl.h |
diff --git a/src/lib/libssl/src/crypto/krb5/Makefile b/src/lib/libssl/src/crypto/krb5/Makefile index 14077390d6..8efb9e8910 100644 --- a/src/lib/libssl/src/crypto/krb5/Makefile +++ b/src/lib/libssl/src/crypto/krb5/Makefile | |||
@@ -34,7 +34,7 @@ top: | |||
34 | all: lib | 34 | all: lib |
35 | 35 | ||
36 | lib: $(LIBOBJ) | 36 | lib: $(LIBOBJ) |
37 | $(AR) $(LIB) $(LIBOBJ) | 37 | $(ARX) $(LIB) $(LIBOBJ) |
38 | $(RANLIB) $(LIB) || echo Never mind. | 38 | $(RANLIB) $(LIB) || echo Never mind. |
39 | @touch lib | 39 | @touch lib |
40 | 40 | ||
diff --git a/src/lib/libssl/src/crypto/lhash/Makefile b/src/lib/libssl/src/crypto/lhash/Makefile index 82bddac474..35f0932971 100644 --- a/src/lib/libssl/src/crypto/lhash/Makefile +++ b/src/lib/libssl/src/crypto/lhash/Makefile | |||
@@ -33,7 +33,7 @@ top: | |||
33 | all: lib | 33 | all: lib |
34 | 34 | ||
35 | lib: $(LIBOBJ) | 35 | lib: $(LIBOBJ) |
36 | $(AR) $(LIB) $(LIBOBJ) | 36 | $(ARX) $(LIB) $(LIBOBJ) |
37 | $(RANLIB) $(LIB) || echo Never mind. | 37 | $(RANLIB) $(LIB) || echo Never mind. |
38 | @touch lib | 38 | @touch lib |
39 | 39 | ||
diff --git a/src/lib/libssl/src/crypto/md2/Makefile b/src/lib/libssl/src/crypto/md2/Makefile index 17f878aeb7..7f43321ab2 100644 --- a/src/lib/libssl/src/crypto/md2/Makefile +++ b/src/lib/libssl/src/crypto/md2/Makefile | |||
@@ -33,7 +33,7 @@ top: | |||
33 | all: lib | 33 | all: lib |
34 | 34 | ||
35 | lib: $(LIBOBJ) | 35 | lib: $(LIBOBJ) |
36 | $(AR) $(LIB) $(LIBOBJ) | 36 | $(ARX) $(LIB) $(LIBOBJ) |
37 | $(RANLIB) $(LIB) || echo Never mind. | 37 | $(RANLIB) $(LIB) || echo Never mind. |
38 | @touch lib | 38 | @touch lib |
39 | 39 | ||
@@ -74,7 +74,9 @@ clean: | |||
74 | 74 | ||
75 | # DO NOT DELETE THIS LINE -- make depend depends on it. | 75 | # DO NOT DELETE THIS LINE -- make depend depends on it. |
76 | 76 | ||
77 | md2_dgst.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 77 | md2_dgst.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h |
78 | md2_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
79 | md2_dgst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h | ||
78 | md2_dgst.o: ../../include/openssl/md2.h ../../include/openssl/opensslconf.h | 80 | md2_dgst.o: ../../include/openssl/md2.h ../../include/openssl/opensslconf.h |
79 | md2_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 81 | md2_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
80 | md2_dgst.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | 82 | md2_dgst.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h |
diff --git a/src/lib/libssl/src/crypto/md4/Makefile b/src/lib/libssl/src/crypto/md4/Makefile index ef97bb0cbe..0bc4896585 100644 --- a/src/lib/libssl/src/crypto/md4/Makefile +++ b/src/lib/libssl/src/crypto/md4/Makefile | |||
@@ -34,7 +34,7 @@ top: | |||
34 | all: lib | 34 | all: lib |
35 | 35 | ||
36 | lib: $(LIBOBJ) | 36 | lib: $(LIBOBJ) |
37 | $(AR) $(LIB) $(LIBOBJ) | 37 | $(ARX) $(LIB) $(LIBOBJ) |
38 | $(RANLIB) $(LIB) || echo Never mind. | 38 | $(RANLIB) $(LIB) || echo Never mind. |
39 | @touch lib | 39 | @touch lib |
40 | 40 | ||
@@ -75,9 +75,13 @@ clean: | |||
75 | 75 | ||
76 | # DO NOT DELETE THIS LINE -- make depend depends on it. | 76 | # DO NOT DELETE THIS LINE -- make depend depends on it. |
77 | 77 | ||
78 | md4_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/md4.h | 78 | md4_dgst.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h |
79 | md4_dgst.o: ../../include/openssl/opensslconf.h | 79 | md4_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
80 | md4_dgst.o: ../../include/openssl/opensslv.h ../md32_common.h md4_dgst.c | 80 | md4_dgst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
81 | md4_dgst.o: ../../include/openssl/md4.h ../../include/openssl/opensslconf.h | ||
82 | md4_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
83 | md4_dgst.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
84 | md4_dgst.o: ../../include/openssl/symhacks.h ../md32_common.h md4_dgst.c | ||
81 | md4_dgst.o: md4_locl.h | 85 | md4_dgst.o: md4_locl.h |
82 | md4_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 86 | md4_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
83 | md4_one.o: ../../include/openssl/md4.h ../../include/openssl/opensslconf.h | 87 | md4_one.o: ../../include/openssl/md4.h ../../include/openssl/opensslconf.h |
diff --git a/src/lib/libssl/src/crypto/md5/Makefile b/src/lib/libssl/src/crypto/md5/Makefile index ceb00e8956..3c450fcfc0 100644 --- a/src/lib/libssl/src/crypto/md5/Makefile +++ b/src/lib/libssl/src/crypto/md5/Makefile | |||
@@ -38,7 +38,7 @@ top: | |||
38 | all: lib | 38 | all: lib |
39 | 39 | ||
40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) |
41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(ARX) $(LIB) $(LIBOBJ) |
42 | $(RANLIB) $(LIB) || echo Never mind. | 42 | $(RANLIB) $(LIB) || echo Never mind. |
43 | @touch lib | 43 | @touch lib |
44 | 44 | ||
@@ -91,9 +91,13 @@ clean: | |||
91 | 91 | ||
92 | # DO NOT DELETE THIS LINE -- make depend depends on it. | 92 | # DO NOT DELETE THIS LINE -- make depend depends on it. |
93 | 93 | ||
94 | md5_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/md5.h | 94 | md5_dgst.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h |
95 | md5_dgst.o: ../../include/openssl/opensslconf.h | 95 | md5_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
96 | md5_dgst.o: ../../include/openssl/opensslv.h ../md32_common.h md5_dgst.c | 96 | md5_dgst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
97 | md5_dgst.o: ../../include/openssl/md5.h ../../include/openssl/opensslconf.h | ||
98 | md5_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
99 | md5_dgst.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
100 | md5_dgst.o: ../../include/openssl/symhacks.h ../md32_common.h md5_dgst.c | ||
97 | md5_dgst.o: md5_locl.h | 101 | md5_dgst.o: md5_locl.h |
98 | md5_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 102 | md5_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
99 | md5_one.o: ../../include/openssl/md5.h ../../include/openssl/opensslconf.h | 103 | md5_one.o: ../../include/openssl/md5.h ../../include/openssl/opensslconf.h |
diff --git a/src/lib/libssl/src/crypto/objects/Makefile b/src/lib/libssl/src/crypto/objects/Makefile index 9c5615099c..25e8b23b5d 100644 --- a/src/lib/libssl/src/crypto/objects/Makefile +++ b/src/lib/libssl/src/crypto/objects/Makefile | |||
@@ -34,7 +34,7 @@ top: | |||
34 | all: obj_dat.h lib | 34 | all: obj_dat.h lib |
35 | 35 | ||
36 | lib: $(LIBOBJ) | 36 | lib: $(LIBOBJ) |
37 | $(AR) $(LIB) $(LIBOBJ) | 37 | $(ARX) $(LIB) $(LIBOBJ) |
38 | $(RANLIB) $(LIB) || echo Never mind. | 38 | $(RANLIB) $(LIB) || echo Never mind. |
39 | @touch lib | 39 | @touch lib |
40 | 40 | ||
diff --git a/src/lib/libssl/src/crypto/ocsp/Makefile b/src/lib/libssl/src/crypto/ocsp/Makefile index 0fe028960e..30a00b3372 100644 --- a/src/lib/libssl/src/crypto/ocsp/Makefile +++ b/src/lib/libssl/src/crypto/ocsp/Makefile | |||
@@ -36,7 +36,7 @@ top: | |||
36 | all: lib | 36 | all: lib |
37 | 37 | ||
38 | lib: $(LIBOBJ) | 38 | lib: $(LIBOBJ) |
39 | $(AR) $(LIB) $(LIBOBJ) | 39 | $(ARX) $(LIB) $(LIBOBJ) |
40 | $(RANLIB) $(LIB) || echo Never mind. | 40 | $(RANLIB) $(LIB) || echo Never mind. |
41 | @touch lib | 41 | @touch lib |
42 | 42 | ||
@@ -82,9 +82,10 @@ ocsp_asn.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
82 | ocsp_asn.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | 82 | ocsp_asn.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
83 | ocsp_asn.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 83 | ocsp_asn.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
84 | ocsp_asn.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 84 | ocsp_asn.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
85 | ocsp_asn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 85 | ocsp_asn.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
86 | ocsp_asn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 86 | ocsp_asn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
87 | ocsp_asn.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h | 87 | ocsp_asn.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h |
88 | ocsp_asn.o: ../../include/openssl/opensslconf.h | ||
88 | ocsp_asn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 89 | ocsp_asn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
89 | ocsp_asn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 90 | ocsp_asn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
90 | ocsp_asn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 91 | ocsp_asn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -97,24 +98,25 @@ ocsp_cl.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
97 | ocsp_cl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 98 | ocsp_cl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
98 | ocsp_cl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 99 | ocsp_cl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
99 | ocsp_cl.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 100 | ocsp_cl.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
100 | ocsp_cl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 101 | ocsp_cl.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
101 | ocsp_cl.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h | 102 | ocsp_cl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
102 | ocsp_cl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 103 | ocsp_cl.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h |
103 | ocsp_cl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h | 104 | ocsp_cl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
104 | ocsp_cl.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h | 105 | ocsp_cl.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
105 | ocsp_cl.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h | 106 | ocsp_cl.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
106 | ocsp_cl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 107 | ocsp_cl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
107 | ocsp_cl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 108 | ocsp_cl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
108 | ocsp_cl.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 109 | ocsp_cl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
109 | ocsp_cl.o: ../cryptlib.h ocsp_cl.c | 110 | ocsp_cl.o: ../../include/openssl/x509v3.h ../cryptlib.h ocsp_cl.c |
110 | ocsp_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | 111 | ocsp_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h |
111 | ocsp_err.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 112 | ocsp_err.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
112 | ocsp_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 113 | ocsp_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
113 | ocsp_err.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 114 | ocsp_err.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
114 | ocsp_err.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 115 | ocsp_err.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
115 | ocsp_err.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 116 | ocsp_err.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
116 | ocsp_err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 117 | ocsp_err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
117 | ocsp_err.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h | 118 | ocsp_err.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h |
119 | ocsp_err.o: ../../include/openssl/opensslconf.h | ||
118 | ocsp_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 120 | ocsp_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
119 | ocsp_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 121 | ocsp_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
120 | ocsp_err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 122 | ocsp_err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -127,21 +129,22 @@ ocsp_ext.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
127 | ocsp_ext.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 129 | ocsp_ext.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
128 | ocsp_ext.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 130 | ocsp_ext.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
129 | ocsp_ext.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 131 | ocsp_ext.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
130 | ocsp_ext.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 132 | ocsp_ext.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
131 | ocsp_ext.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h | 133 | ocsp_ext.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
132 | ocsp_ext.o: ../../include/openssl/opensslconf.h | 134 | ocsp_ext.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h |
133 | ocsp_ext.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 135 | ocsp_ext.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
134 | ocsp_ext.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 136 | ocsp_ext.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
135 | ocsp_ext.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 137 | ocsp_ext.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
136 | ocsp_ext.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 138 | ocsp_ext.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
137 | ocsp_ext.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 139 | ocsp_ext.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
138 | ocsp_ext.o: ../../include/openssl/x509v3.h ../cryptlib.h ocsp_ext.c | 140 | ocsp_ext.o: ../../include/openssl/x509v3.h ../cryptlib.h ocsp_ext.c |
139 | ocsp_ht.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | 141 | ocsp_ht.o: ../../e_os.h ../../include/openssl/asn1.h |
140 | ocsp_ht.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 142 | ocsp_ht.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
141 | ocsp_ht.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 143 | ocsp_ht.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
142 | ocsp_ht.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 144 | ocsp_ht.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
143 | ocsp_ht.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 145 | ocsp_ht.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
144 | ocsp_ht.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 146 | ocsp_ht.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
147 | ocsp_ht.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h | ||
145 | ocsp_ht.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 148 | ocsp_ht.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
146 | ocsp_ht.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h | 149 | ocsp_ht.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h |
147 | ocsp_ht.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 150 | ocsp_ht.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
@@ -156,9 +159,9 @@ ocsp_lib.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
156 | ocsp_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 159 | ocsp_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
157 | ocsp_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 160 | ocsp_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
158 | ocsp_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 161 | ocsp_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
159 | ocsp_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 162 | ocsp_lib.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
160 | ocsp_lib.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h | 163 | ocsp_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
161 | ocsp_lib.o: ../../include/openssl/opensslconf.h | 164 | ocsp_lib.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h |
162 | ocsp_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 165 | ocsp_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
163 | ocsp_lib.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 166 | ocsp_lib.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
164 | ocsp_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 167 | ocsp_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
@@ -171,9 +174,10 @@ ocsp_prn.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | |||
171 | ocsp_prn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 174 | ocsp_prn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
172 | ocsp_prn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 175 | ocsp_prn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
173 | ocsp_prn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 176 | ocsp_prn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
174 | ocsp_prn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 177 | ocsp_prn.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
175 | ocsp_prn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 178 | ocsp_prn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
176 | ocsp_prn.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h | 179 | ocsp_prn.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h |
180 | ocsp_prn.o: ../../include/openssl/opensslconf.h | ||
177 | ocsp_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 181 | ocsp_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
178 | ocsp_prn.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 182 | ocsp_prn.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
179 | ocsp_prn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 183 | ocsp_prn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
@@ -187,9 +191,9 @@ ocsp_srv.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
187 | ocsp_srv.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 191 | ocsp_srv.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
188 | ocsp_srv.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 192 | ocsp_srv.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
189 | ocsp_srv.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 193 | ocsp_srv.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
190 | ocsp_srv.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 194 | ocsp_srv.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
191 | ocsp_srv.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h | 195 | ocsp_srv.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
192 | ocsp_srv.o: ../../include/openssl/opensslconf.h | 196 | ocsp_srv.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h |
193 | ocsp_srv.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 197 | ocsp_srv.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
194 | ocsp_srv.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 198 | ocsp_srv.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
195 | ocsp_srv.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 199 | ocsp_srv.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
@@ -202,9 +206,10 @@ ocsp_vfy.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | |||
202 | ocsp_vfy.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 206 | ocsp_vfy.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
203 | ocsp_vfy.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 207 | ocsp_vfy.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
204 | ocsp_vfy.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 208 | ocsp_vfy.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
205 | ocsp_vfy.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 209 | ocsp_vfy.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
206 | ocsp_vfy.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 210 | ocsp_vfy.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
207 | ocsp_vfy.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h | 211 | ocsp_vfy.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h |
212 | ocsp_vfy.o: ../../include/openssl/opensslconf.h | ||
208 | ocsp_vfy.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 213 | ocsp_vfy.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
209 | ocsp_vfy.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 214 | ocsp_vfy.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
210 | ocsp_vfy.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 215 | ocsp_vfy.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
diff --git a/src/lib/libssl/src/crypto/pem/Makefile b/src/lib/libssl/src/crypto/pem/Makefile index 742194fd24..669f36612c 100644 --- a/src/lib/libssl/src/crypto/pem/Makefile +++ b/src/lib/libssl/src/crypto/pem/Makefile | |||
@@ -36,7 +36,7 @@ top: | |||
36 | all: lib | 36 | all: lib |
37 | 37 | ||
38 | lib: $(LIBOBJ) | 38 | lib: $(LIBOBJ) |
39 | $(AR) $(LIB) $(LIBOBJ) | 39 | $(ARX) $(LIB) $(LIBOBJ) |
40 | $(RANLIB) $(LIB) || echo Never mind. | 40 | $(RANLIB) $(LIB) || echo Never mind. |
41 | @touch lib | 41 | @touch lib |
42 | 42 | ||
@@ -83,36 +83,39 @@ pem_all.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h | |||
83 | pem_all.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h | 83 | pem_all.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h |
84 | pem_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 84 | pem_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
85 | pem_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 85 | pem_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
86 | pem_all.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 86 | pem_all.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
87 | pem_all.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 87 | pem_all.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
88 | pem_all.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 88 | pem_all.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
89 | pem_all.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h | 89 | pem_all.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
90 | pem_all.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h | 90 | pem_all.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
91 | pem_all.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | 91 | pem_all.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h |
92 | pem_all.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 92 | pem_all.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
93 | pem_all.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 93 | pem_all.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
94 | pem_all.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_all.c | 94 | pem_all.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
95 | pem_all.o: ../cryptlib.h pem_all.c | ||
95 | pem_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | 96 | pem_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h |
96 | pem_err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 97 | pem_err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
97 | pem_err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 98 | pem_err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
98 | pem_err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 99 | pem_err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
99 | pem_err.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 100 | pem_err.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
100 | pem_err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 101 | pem_err.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
101 | pem_err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 102 | pem_err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
102 | pem_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 103 | pem_err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
103 | pem_err.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 104 | pem_err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h |
104 | pem_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 105 | pem_err.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h |
105 | pem_err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 106 | pem_err.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
106 | pem_err.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 107 | pem_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
107 | pem_err.o: ../../include/openssl/x509_vfy.h pem_err.c | 108 | pem_err.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
109 | pem_err.o: pem_err.c | ||
108 | pem_info.o: ../../e_os.h ../../include/openssl/asn1.h | 110 | pem_info.o: ../../e_os.h ../../include/openssl/asn1.h |
109 | pem_info.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 111 | pem_info.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
110 | pem_info.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h | 112 | pem_info.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h |
111 | pem_info.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 113 | pem_info.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
112 | pem_info.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 114 | pem_info.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
113 | pem_info.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 115 | pem_info.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
114 | pem_info.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 116 | pem_info.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
115 | pem_info.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 117 | pem_info.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
118 | pem_info.o: ../../include/openssl/opensslconf.h | ||
116 | pem_info.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 119 | pem_info.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
117 | pem_info.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 120 | pem_info.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
118 | pem_info.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h | 121 | pem_info.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h |
@@ -126,54 +129,55 @@ pem_lib.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | |||
126 | pem_lib.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h | 129 | pem_lib.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h |
127 | pem_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 130 | pem_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
128 | pem_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 131 | pem_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
129 | pem_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 132 | pem_lib.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
130 | pem_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 133 | pem_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
131 | pem_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 134 | pem_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
132 | pem_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h | 135 | pem_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
133 | pem_lib.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs12.h | 136 | pem_lib.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
134 | pem_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 137 | pem_lib.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
135 | pem_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 138 | pem_lib.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h |
136 | pem_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 139 | pem_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
137 | pem_lib.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h | 140 | pem_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h |
138 | pem_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 141 | pem_lib.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h |
139 | pem_lib.o: ../cryptlib.h pem_lib.c | 142 | pem_lib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_lib.c |
140 | pem_oth.o: ../../e_os.h ../../include/openssl/asn1.h | 143 | pem_oth.o: ../../e_os.h ../../include/openssl/asn1.h |
141 | pem_oth.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 144 | pem_oth.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
142 | pem_oth.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 145 | pem_oth.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
143 | pem_oth.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 146 | pem_oth.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
144 | pem_oth.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 147 | pem_oth.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
145 | pem_oth.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 148 | pem_oth.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
146 | pem_oth.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 149 | pem_oth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
147 | pem_oth.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 150 | pem_oth.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
148 | pem_oth.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h | 151 | pem_oth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
149 | pem_oth.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h | 152 | pem_oth.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
150 | pem_oth.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h | 153 | pem_oth.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
151 | pem_oth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 154 | pem_oth.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
152 | pem_oth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 155 | pem_oth.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
153 | pem_oth.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_oth.c | 156 | pem_oth.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
157 | pem_oth.o: ../cryptlib.h pem_oth.c | ||
154 | pem_pk8.o: ../../e_os.h ../../include/openssl/asn1.h | 158 | pem_pk8.o: ../../e_os.h ../../include/openssl/asn1.h |
155 | pem_pk8.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 159 | pem_pk8.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
156 | pem_pk8.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 160 | pem_pk8.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
157 | pem_pk8.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 161 | pem_pk8.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
158 | pem_pk8.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 162 | pem_pk8.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
159 | pem_pk8.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 163 | pem_pk8.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
160 | pem_pk8.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 164 | pem_pk8.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
161 | pem_pk8.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 165 | pem_pk8.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
162 | pem_pk8.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h | 166 | pem_pk8.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
163 | pem_pk8.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs12.h | 167 | pem_pk8.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
164 | pem_pk8.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 168 | pem_pk8.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
165 | pem_pk8.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 169 | pem_pk8.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h |
166 | pem_pk8.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 170 | pem_pk8.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
167 | pem_pk8.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 171 | pem_pk8.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
168 | pem_pk8.o: ../cryptlib.h pem_pk8.c | 172 | pem_pk8.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_pk8.c |
169 | pem_pkey.o: ../../e_os.h ../../include/openssl/asn1.h | 173 | pem_pkey.o: ../../e_os.h ../../include/openssl/asn1.h |
170 | pem_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 174 | pem_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
171 | pem_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 175 | pem_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
172 | pem_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 176 | pem_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
173 | pem_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 177 | pem_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
174 | pem_pkey.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 178 | pem_pkey.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
175 | pem_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 179 | pem_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
176 | pem_pkey.o: ../../include/openssl/opensslconf.h | 180 | pem_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
177 | pem_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 181 | pem_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
178 | pem_pkey.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 182 | pem_pkey.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
179 | pem_pkey.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 183 | pem_pkey.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
@@ -186,9 +190,9 @@ pem_seal.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
186 | pem_seal.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 190 | pem_seal.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
187 | pem_seal.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 191 | pem_seal.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
188 | pem_seal.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 192 | pem_seal.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
189 | pem_seal.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 193 | pem_seal.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
190 | pem_seal.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 194 | pem_seal.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
191 | pem_seal.o: ../../include/openssl/opensslconf.h | 195 | pem_seal.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
192 | pem_seal.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 196 | pem_seal.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
193 | pem_seal.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 197 | pem_seal.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
194 | pem_seal.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 198 | pem_seal.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
@@ -201,9 +205,9 @@ pem_sign.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
201 | pem_sign.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 205 | pem_sign.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
202 | pem_sign.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 206 | pem_sign.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
203 | pem_sign.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 207 | pem_sign.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
204 | pem_sign.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 208 | pem_sign.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
205 | pem_sign.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 209 | pem_sign.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
206 | pem_sign.o: ../../include/openssl/opensslconf.h | 210 | pem_sign.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
207 | pem_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 211 | pem_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
208 | pem_sign.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 212 | pem_sign.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
209 | pem_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 213 | pem_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
@@ -216,9 +220,9 @@ pem_x509.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
216 | pem_x509.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 220 | pem_x509.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
217 | pem_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 221 | pem_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
218 | pem_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 222 | pem_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
219 | pem_x509.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 223 | pem_x509.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
220 | pem_x509.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 224 | pem_x509.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
221 | pem_x509.o: ../../include/openssl/opensslconf.h | 225 | pem_x509.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
222 | pem_x509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 226 | pem_x509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
223 | pem_x509.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 227 | pem_x509.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
224 | pem_x509.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 228 | pem_x509.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
@@ -230,9 +234,9 @@ pem_xaux.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
230 | pem_xaux.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 234 | pem_xaux.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
231 | pem_xaux.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 235 | pem_xaux.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
232 | pem_xaux.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 236 | pem_xaux.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
233 | pem_xaux.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 237 | pem_xaux.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
234 | pem_xaux.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 238 | pem_xaux.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
235 | pem_xaux.o: ../../include/openssl/opensslconf.h | 239 | pem_xaux.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
236 | pem_xaux.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 240 | pem_xaux.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
237 | pem_xaux.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 241 | pem_xaux.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
238 | pem_xaux.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 242 | pem_xaux.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
diff --git a/src/lib/libssl/src/crypto/pkcs12/Makefile b/src/lib/libssl/src/crypto/pkcs12/Makefile index 3a7498fe7a..eed226b30d 100644 --- a/src/lib/libssl/src/crypto/pkcs12/Makefile +++ b/src/lib/libssl/src/crypto/pkcs12/Makefile | |||
@@ -39,7 +39,7 @@ test: | |||
39 | all: lib | 39 | all: lib |
40 | 40 | ||
41 | lib: $(LIBOBJ) | 41 | lib: $(LIBOBJ) |
42 | $(AR) $(LIB) $(LIBOBJ) | 42 | $(ARX) $(LIB) $(LIBOBJ) |
43 | $(RANLIB) $(LIB) || echo Never mind. | 43 | $(RANLIB) $(LIB) || echo Never mind. |
44 | @touch lib | 44 | @touch lib |
45 | 45 | ||
@@ -85,36 +85,37 @@ p12_add.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
85 | p12_add.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 85 | p12_add.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
86 | p12_add.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 86 | p12_add.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
87 | p12_add.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 87 | p12_add.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
88 | p12_add.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 88 | p12_add.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
89 | p12_add.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 89 | p12_add.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
90 | p12_add.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 90 | p12_add.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
91 | p12_add.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h | 91 | p12_add.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
92 | p12_add.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 92 | p12_add.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
93 | p12_add.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 93 | p12_add.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
94 | p12_add.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 94 | p12_add.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
95 | p12_add.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_add.c | 95 | p12_add.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
96 | p12_add.o: ../cryptlib.h p12_add.c | ||
96 | p12_asn.o: ../../e_os.h ../../include/openssl/asn1.h | 97 | p12_asn.o: ../../e_os.h ../../include/openssl/asn1.h |
97 | p12_asn.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 98 | p12_asn.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
98 | p12_asn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 99 | p12_asn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
99 | p12_asn.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 100 | p12_asn.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
100 | p12_asn.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 101 | p12_asn.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
101 | p12_asn.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 102 | p12_asn.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
102 | p12_asn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 103 | p12_asn.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
103 | p12_asn.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 104 | p12_asn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
104 | p12_asn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 105 | p12_asn.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
105 | p12_asn.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 106 | p12_asn.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h |
106 | p12_asn.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 107 | p12_asn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
107 | p12_asn.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 108 | p12_asn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
108 | p12_asn.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 109 | p12_asn.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
109 | p12_asn.o: ../cryptlib.h p12_asn.c | 110 | p12_asn.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_asn.c |
110 | p12_attr.o: ../../e_os.h ../../include/openssl/asn1.h | 111 | p12_attr.o: ../../e_os.h ../../include/openssl/asn1.h |
111 | p12_attr.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 112 | p12_attr.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
112 | p12_attr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 113 | p12_attr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
113 | p12_attr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 114 | p12_attr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
114 | p12_attr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 115 | p12_attr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
115 | p12_attr.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 116 | p12_attr.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
116 | p12_attr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 117 | p12_attr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
117 | p12_attr.o: ../../include/openssl/opensslconf.h | 118 | p12_attr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
118 | p12_attr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 119 | p12_attr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
119 | p12_attr.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 120 | p12_attr.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
120 | p12_attr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 121 | p12_attr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
@@ -126,9 +127,9 @@ p12_crpt.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
126 | p12_crpt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 127 | p12_crpt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
127 | p12_crpt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 128 | p12_crpt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
128 | p12_crpt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 129 | p12_crpt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
129 | p12_crpt.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 130 | p12_crpt.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
130 | p12_crpt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 131 | p12_crpt.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
131 | p12_crpt.o: ../../include/openssl/opensslconf.h | 132 | p12_crpt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
132 | p12_crpt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 133 | p12_crpt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
133 | p12_crpt.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 134 | p12_crpt.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
134 | p12_crpt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 135 | p12_crpt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
@@ -140,22 +141,23 @@ p12_crt.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
140 | p12_crt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 141 | p12_crt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
141 | p12_crt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 142 | p12_crt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
142 | p12_crt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 143 | p12_crt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
143 | p12_crt.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 144 | p12_crt.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
144 | p12_crt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 145 | p12_crt.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
145 | p12_crt.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 146 | p12_crt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
146 | p12_crt.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h | 147 | p12_crt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
147 | p12_crt.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 148 | p12_crt.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
148 | p12_crt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 149 | p12_crt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
149 | p12_crt.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 150 | p12_crt.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
150 | p12_crt.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_crt.c | 151 | p12_crt.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
152 | p12_crt.o: ../cryptlib.h p12_crt.c | ||
151 | p12_decr.o: ../../e_os.h ../../include/openssl/asn1.h | 153 | p12_decr.o: ../../e_os.h ../../include/openssl/asn1.h |
152 | p12_decr.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 154 | p12_decr.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
153 | p12_decr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 155 | p12_decr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
154 | p12_decr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 156 | p12_decr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
155 | p12_decr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 157 | p12_decr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
156 | p12_decr.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 158 | p12_decr.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
157 | p12_decr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 159 | p12_decr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
158 | p12_decr.o: ../../include/openssl/opensslconf.h | 160 | p12_decr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
159 | p12_decr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 161 | p12_decr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
160 | p12_decr.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 162 | p12_decr.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
161 | p12_decr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 163 | p12_decr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
@@ -167,9 +169,9 @@ p12_init.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
167 | p12_init.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 169 | p12_init.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
168 | p12_init.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 170 | p12_init.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
169 | p12_init.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 171 | p12_init.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
170 | p12_init.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 172 | p12_init.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
171 | p12_init.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 173 | p12_init.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
172 | p12_init.o: ../../include/openssl/opensslconf.h | 174 | p12_init.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
173 | p12_init.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 175 | p12_init.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
174 | p12_init.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 176 | p12_init.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
175 | p12_init.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 177 | p12_init.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
@@ -182,22 +184,22 @@ p12_key.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
182 | p12_key.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 184 | p12_key.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
183 | p12_key.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 185 | p12_key.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
184 | p12_key.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 186 | p12_key.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
185 | p12_key.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 187 | p12_key.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
186 | p12_key.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 188 | p12_key.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
187 | p12_key.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 189 | p12_key.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
188 | p12_key.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 190 | p12_key.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h |
189 | p12_key.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 191 | p12_key.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
190 | p12_key.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 192 | p12_key.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
191 | p12_key.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 193 | p12_key.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
192 | p12_key.o: ../cryptlib.h p12_key.c | 194 | p12_key.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_key.c |
193 | p12_kiss.o: ../../e_os.h ../../include/openssl/asn1.h | 195 | p12_kiss.o: ../../e_os.h ../../include/openssl/asn1.h |
194 | p12_kiss.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 196 | p12_kiss.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
195 | p12_kiss.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 197 | p12_kiss.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
196 | p12_kiss.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 198 | p12_kiss.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
197 | p12_kiss.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 199 | p12_kiss.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
198 | p12_kiss.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 200 | p12_kiss.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
199 | p12_kiss.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 201 | p12_kiss.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
200 | p12_kiss.o: ../../include/openssl/opensslconf.h | 202 | p12_kiss.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
201 | p12_kiss.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 203 | p12_kiss.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
202 | p12_kiss.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 204 | p12_kiss.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
203 | p12_kiss.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 205 | p12_kiss.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
@@ -209,9 +211,10 @@ p12_mutl.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
209 | p12_mutl.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 211 | p12_mutl.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
210 | p12_mutl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 212 | p12_mutl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
211 | p12_mutl.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 213 | p12_mutl.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
212 | p12_mutl.o: ../../include/openssl/evp.h ../../include/openssl/hmac.h | 214 | p12_mutl.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
213 | p12_mutl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 215 | p12_mutl.o: ../../include/openssl/hmac.h ../../include/openssl/lhash.h |
214 | p12_mutl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 216 | p12_mutl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
217 | p12_mutl.o: ../../include/openssl/opensslconf.h | ||
215 | p12_mutl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 218 | p12_mutl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
216 | p12_mutl.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 219 | p12_mutl.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
217 | p12_mutl.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h | 220 | p12_mutl.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h |
@@ -223,8 +226,9 @@ p12_npas.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
223 | p12_npas.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 226 | p12_npas.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
224 | p12_npas.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 227 | p12_npas.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
225 | p12_npas.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 228 | p12_npas.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
226 | p12_npas.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 229 | p12_npas.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
227 | p12_npas.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 230 | p12_npas.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
231 | p12_npas.o: ../../include/openssl/opensslconf.h | ||
228 | p12_npas.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 232 | p12_npas.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
229 | p12_npas.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 233 | p12_npas.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
230 | p12_npas.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 234 | p12_npas.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
@@ -237,50 +241,53 @@ p12_p8d.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
237 | p12_p8d.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 241 | p12_p8d.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
238 | p12_p8d.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 242 | p12_p8d.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
239 | p12_p8d.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 243 | p12_p8d.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
240 | p12_p8d.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 244 | p12_p8d.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
241 | p12_p8d.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 245 | p12_p8d.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
242 | p12_p8d.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 246 | p12_p8d.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
243 | p12_p8d.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h | 247 | p12_p8d.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
244 | p12_p8d.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 248 | p12_p8d.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
245 | p12_p8d.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 249 | p12_p8d.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
246 | p12_p8d.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 250 | p12_p8d.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
247 | p12_p8d.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_p8d.c | 251 | p12_p8d.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
252 | p12_p8d.o: ../cryptlib.h p12_p8d.c | ||
248 | p12_p8e.o: ../../e_os.h ../../include/openssl/asn1.h | 253 | p12_p8e.o: ../../e_os.h ../../include/openssl/asn1.h |
249 | p12_p8e.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 254 | p12_p8e.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
250 | p12_p8e.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 255 | p12_p8e.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
251 | p12_p8e.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 256 | p12_p8e.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
252 | p12_p8e.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 257 | p12_p8e.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
253 | p12_p8e.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 258 | p12_p8e.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
254 | p12_p8e.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 259 | p12_p8e.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
255 | p12_p8e.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 260 | p12_p8e.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
256 | p12_p8e.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h | 261 | p12_p8e.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
257 | p12_p8e.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 262 | p12_p8e.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
258 | p12_p8e.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 263 | p12_p8e.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
259 | p12_p8e.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 264 | p12_p8e.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
260 | p12_p8e.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_p8e.c | 265 | p12_p8e.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
266 | p12_p8e.o: ../cryptlib.h p12_p8e.c | ||
261 | p12_utl.o: ../../e_os.h ../../include/openssl/asn1.h | 267 | p12_utl.o: ../../e_os.h ../../include/openssl/asn1.h |
262 | p12_utl.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 268 | p12_utl.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
263 | p12_utl.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 269 | p12_utl.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
264 | p12_utl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 270 | p12_utl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
265 | p12_utl.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 271 | p12_utl.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
266 | p12_utl.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 272 | p12_utl.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
267 | p12_utl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 273 | p12_utl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
268 | p12_utl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 274 | p12_utl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
269 | p12_utl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h | 275 | p12_utl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
270 | p12_utl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 276 | p12_utl.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h |
271 | p12_utl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 277 | p12_utl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
272 | p12_utl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 278 | p12_utl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
273 | p12_utl.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_utl.c | 279 | p12_utl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
280 | p12_utl.o: ../cryptlib.h p12_utl.c | ||
274 | pk12err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | 281 | pk12err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h |
275 | pk12err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 282 | pk12err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
276 | pk12err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 283 | pk12err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
277 | pk12err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 284 | pk12err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
278 | pk12err.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 285 | pk12err.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
279 | pk12err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 286 | pk12err.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
280 | pk12err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 287 | pk12err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
281 | pk12err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 288 | pk12err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
282 | pk12err.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h | 289 | pk12err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h |
283 | pk12err.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 290 | pk12err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
284 | pk12err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 291 | pk12err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
285 | pk12err.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 292 | pk12err.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
286 | pk12err.o: pk12err.c | 293 | pk12err.o: ../../include/openssl/x509_vfy.h pk12err.c |
diff --git a/src/lib/libssl/src/crypto/pkcs7/Makefile b/src/lib/libssl/src/crypto/pkcs7/Makefile index 3f7e88b40f..790d8edf36 100644 --- a/src/lib/libssl/src/crypto/pkcs7/Makefile +++ b/src/lib/libssl/src/crypto/pkcs7/Makefile | |||
@@ -54,7 +54,7 @@ verify: verify.o example.o lib | |||
54 | $(CC) $(CFLAGS) -o verify verify.o $(PEX_LIBS) example.o $(LIB) $(EX_LIBS) | 54 | $(CC) $(CFLAGS) -o verify verify.o $(PEX_LIBS) example.o $(LIB) $(EX_LIBS) |
55 | 55 | ||
56 | lib: $(LIBOBJ) | 56 | lib: $(LIBOBJ) |
57 | $(AR) $(LIB) $(LIBOBJ) | 57 | $(ARX) $(LIB) $(LIBOBJ) |
58 | $(RANLIB) $(LIB) || echo Never mind. | 58 | $(RANLIB) $(LIB) || echo Never mind. |
59 | @touch lib | 59 | @touch lib |
60 | 60 | ||
@@ -101,8 +101,9 @@ pk7_asn1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
101 | pk7_asn1.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 101 | pk7_asn1.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
102 | pk7_asn1.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 102 | pk7_asn1.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
103 | pk7_asn1.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 103 | pk7_asn1.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
104 | pk7_asn1.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 104 | pk7_asn1.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
105 | pk7_asn1.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 105 | pk7_asn1.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
106 | pk7_asn1.o: ../../include/openssl/opensslconf.h | ||
106 | pk7_asn1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 107 | pk7_asn1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
107 | pk7_asn1.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 108 | pk7_asn1.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
108 | pk7_asn1.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 109 | pk7_asn1.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -113,8 +114,9 @@ pk7_attr.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
113 | pk7_attr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 114 | pk7_attr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
114 | pk7_attr.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 115 | pk7_attr.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
115 | pk7_attr.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 116 | pk7_attr.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
116 | pk7_attr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 117 | pk7_attr.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
117 | pk7_attr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 118 | pk7_attr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
119 | pk7_attr.o: ../../include/openssl/opensslconf.h | ||
118 | pk7_attr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 120 | pk7_attr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
119 | pk7_attr.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 121 | pk7_attr.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
120 | pk7_attr.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 122 | pk7_attr.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
@@ -127,8 +129,9 @@ pk7_doit.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
127 | pk7_doit.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 129 | pk7_doit.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
128 | pk7_doit.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 130 | pk7_doit.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
129 | pk7_doit.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 131 | pk7_doit.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
130 | pk7_doit.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 132 | pk7_doit.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
131 | pk7_doit.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 133 | pk7_doit.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
134 | pk7_doit.o: ../../include/openssl/opensslconf.h | ||
132 | pk7_doit.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 135 | pk7_doit.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
133 | pk7_doit.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 136 | pk7_doit.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
134 | pk7_doit.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 137 | pk7_doit.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
@@ -140,22 +143,22 @@ pk7_lib.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
140 | pk7_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 143 | pk7_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
141 | pk7_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 144 | pk7_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
142 | pk7_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 145 | pk7_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
143 | pk7_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 146 | pk7_lib.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
144 | pk7_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 147 | pk7_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
145 | pk7_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 148 | pk7_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
146 | pk7_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 149 | pk7_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
147 | pk7_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 150 | pk7_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
148 | pk7_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 151 | pk7_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
149 | pk7_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 152 | pk7_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
150 | pk7_lib.o: ../cryptlib.h pk7_lib.c | 153 | pk7_lib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pk7_lib.c |
151 | pk7_mime.o: ../../e_os.h ../../include/openssl/asn1.h | 154 | pk7_mime.o: ../../e_os.h ../../include/openssl/asn1.h |
152 | pk7_mime.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 155 | pk7_mime.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
153 | pk7_mime.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 156 | pk7_mime.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
154 | pk7_mime.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 157 | pk7_mime.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
155 | pk7_mime.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 158 | pk7_mime.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
156 | pk7_mime.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 159 | pk7_mime.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
157 | pk7_mime.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 160 | pk7_mime.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
158 | pk7_mime.o: ../../include/openssl/opensslconf.h | 161 | pk7_mime.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
159 | pk7_mime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 162 | pk7_mime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
160 | pk7_mime.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | 163 | pk7_mime.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h |
161 | pk7_mime.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 164 | pk7_mime.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
@@ -168,8 +171,8 @@ pk7_smime.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
168 | pk7_smime.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 171 | pk7_smime.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
169 | pk7_smime.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 172 | pk7_smime.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
170 | pk7_smime.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 173 | pk7_smime.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
171 | pk7_smime.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 174 | pk7_smime.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
172 | pk7_smime.o: ../../include/openssl/objects.h | 175 | pk7_smime.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
173 | pk7_smime.o: ../../include/openssl/opensslconf.h | 176 | pk7_smime.o: ../../include/openssl/opensslconf.h |
174 | pk7_smime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 177 | pk7_smime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
175 | pk7_smime.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 178 | pk7_smime.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
diff --git a/src/lib/libssl/src/crypto/pqueue/pq_compat.h b/src/lib/libssl/src/crypto/pqueue/pq_compat.h index fd36578882..7b2c32725c 100644 --- a/src/lib/libssl/src/crypto/pqueue/pq_compat.h +++ b/src/lib/libssl/src/crypto/pqueue/pq_compat.h | |||
@@ -57,6 +57,9 @@ | |||
57 | * | 57 | * |
58 | */ | 58 | */ |
59 | 59 | ||
60 | #ifndef HEADER_PQ_COMPAT_H | ||
61 | #define HEADER_PQ_COMPAT_H | ||
62 | |||
60 | #include <openssl/opensslconf.h> | 63 | #include <openssl/opensslconf.h> |
61 | #include <openssl/bn.h> | 64 | #include <openssl/bn.h> |
62 | 65 | ||
@@ -145,3 +148,5 @@ | |||
145 | *(x) |= mask; \ | 148 | *(x) |= mask; \ |
146 | } while(0) | 149 | } while(0) |
147 | #endif /* OPENSSL_SYS_VMS */ | 150 | #endif /* OPENSSL_SYS_VMS */ |
151 | |||
152 | #endif | ||
diff --git a/src/lib/libssl/src/crypto/rand/rand_eng.c b/src/lib/libssl/src/crypto/rand/rand_eng.c new file mode 100644 index 0000000000..1669cef43c --- /dev/null +++ b/src/lib/libssl/src/crypto/rand/rand_eng.c | |||
@@ -0,0 +1,152 @@ | |||
1 | /* crypto/rand/rand_lib.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include <time.h> | ||
61 | #include "cryptlib.h" | ||
62 | #include "rand_lcl.h" | ||
63 | #include <openssl/rand.h> | ||
64 | #ifdef OPENSSL_FIPS | ||
65 | #include <openssl/fips.h> | ||
66 | #include <openssl/fips_rand.h> | ||
67 | #endif | ||
68 | |||
69 | #ifndef OPENSSL_NO_ENGINE | ||
70 | #include <openssl/engine.h> | ||
71 | #endif | ||
72 | |||
73 | #if defined(OPENSSL_FIPS) && !defined(OPENSSL_NO_ENGINE) | ||
74 | |||
75 | /* non-NULL if default_RAND_meth is ENGINE-provided */ | ||
76 | static ENGINE *funct_ref =NULL; | ||
77 | |||
78 | int eng_RAND_set_rand_method(const RAND_METHOD *meth, const RAND_METHOD **pmeth) | ||
79 | { | ||
80 | if(funct_ref) | ||
81 | { | ||
82 | ENGINE_finish(funct_ref); | ||
83 | funct_ref = NULL; | ||
84 | } | ||
85 | *pmeth = meth; | ||
86 | return 1; | ||
87 | } | ||
88 | |||
89 | const RAND_METHOD *eng_RAND_get_rand_method(const RAND_METHOD **pmeth) | ||
90 | { | ||
91 | if (!*pmeth) | ||
92 | { | ||
93 | ENGINE *e = ENGINE_get_default_RAND(); | ||
94 | if(e) | ||
95 | { | ||
96 | *pmeth = ENGINE_get_RAND(e); | ||
97 | if(!*pmeth) | ||
98 | { | ||
99 | ENGINE_finish(e); | ||
100 | e = NULL; | ||
101 | } | ||
102 | } | ||
103 | if(e) | ||
104 | funct_ref = e; | ||
105 | else | ||
106 | if(FIPS_mode()) | ||
107 | *pmeth=FIPS_rand_method(); | ||
108 | else | ||
109 | *pmeth = RAND_SSLeay(); | ||
110 | } | ||
111 | |||
112 | if(FIPS_mode() | ||
113 | && *pmeth != FIPS_rand_check()) | ||
114 | { | ||
115 | RANDerr(RAND_F_ENG_RAND_GET_RAND_METHOD,RAND_R_NON_FIPS_METHOD); | ||
116 | return 0; | ||
117 | } | ||
118 | |||
119 | return *pmeth; | ||
120 | } | ||
121 | |||
122 | int RAND_set_rand_engine(ENGINE *engine) | ||
123 | { | ||
124 | const RAND_METHOD *tmp_meth = NULL; | ||
125 | if(engine) | ||
126 | { | ||
127 | if(!ENGINE_init(engine)) | ||
128 | return 0; | ||
129 | tmp_meth = ENGINE_get_RAND(engine); | ||
130 | if(!tmp_meth) | ||
131 | { | ||
132 | ENGINE_finish(engine); | ||
133 | return 0; | ||
134 | } | ||
135 | } | ||
136 | /* This function releases any prior ENGINE so call it first */ | ||
137 | RAND_set_rand_method(tmp_meth); | ||
138 | funct_ref = engine; | ||
139 | return 1; | ||
140 | } | ||
141 | |||
142 | void int_RAND_init_engine_callbacks(void) | ||
143 | { | ||
144 | static int done = 0; | ||
145 | if (done) | ||
146 | return; | ||
147 | int_RAND_set_callbacks(eng_RAND_set_rand_method, | ||
148 | eng_RAND_get_rand_method); | ||
149 | done = 1; | ||
150 | } | ||
151 | |||
152 | #endif | ||
diff --git a/src/lib/libssl/src/crypto/rc2/Makefile b/src/lib/libssl/src/crypto/rc2/Makefile index 73eac347e7..4b6292b65f 100644 --- a/src/lib/libssl/src/crypto/rc2/Makefile +++ b/src/lib/libssl/src/crypto/rc2/Makefile | |||
@@ -33,7 +33,7 @@ top: | |||
33 | all: lib | 33 | all: lib |
34 | 34 | ||
35 | lib: $(LIBOBJ) | 35 | lib: $(LIBOBJ) |
36 | $(AR) $(LIB) $(LIBOBJ) | 36 | $(ARX) $(LIB) $(LIBOBJ) |
37 | $(RANLIB) $(LIB) || echo Never mind. | 37 | $(RANLIB) $(LIB) || echo Never mind. |
38 | @touch lib | 38 | @touch lib |
39 | 39 | ||
@@ -78,7 +78,11 @@ rc2_cbc.o: ../../include/openssl/opensslconf.h ../../include/openssl/rc2.h | |||
78 | rc2_cbc.o: rc2_cbc.c rc2_locl.h | 78 | rc2_cbc.o: rc2_cbc.c rc2_locl.h |
79 | rc2_ecb.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 79 | rc2_ecb.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
80 | rc2_ecb.o: ../../include/openssl/rc2.h rc2_ecb.c rc2_locl.h | 80 | rc2_ecb.o: ../../include/openssl/rc2.h rc2_ecb.c rc2_locl.h |
81 | rc2_skey.o: ../../include/openssl/opensslconf.h ../../include/openssl/rc2.h | 81 | rc2_skey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
82 | rc2_skey.o: ../../include/openssl/fips.h ../../include/openssl/opensslconf.h | ||
83 | rc2_skey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
84 | rc2_skey.o: ../../include/openssl/rc2.h ../../include/openssl/safestack.h | ||
85 | rc2_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
82 | rc2_skey.o: rc2_locl.h rc2_skey.c | 86 | rc2_skey.o: rc2_locl.h rc2_skey.c |
83 | rc2cfb64.o: ../../include/openssl/opensslconf.h ../../include/openssl/rc2.h | 87 | rc2cfb64.o: ../../include/openssl/opensslconf.h ../../include/openssl/rc2.h |
84 | rc2cfb64.o: rc2_locl.h rc2cfb64.c | 88 | rc2cfb64.o: rc2_locl.h rc2cfb64.c |
diff --git a/src/lib/libssl/src/crypto/rc4/Makefile b/src/lib/libssl/src/crypto/rc4/Makefile index 187ed5c668..f0bd7678fc 100644 --- a/src/lib/libssl/src/crypto/rc4/Makefile +++ b/src/lib/libssl/src/crypto/rc4/Makefile | |||
@@ -21,8 +21,8 @@ TEST=rc4test.c | |||
21 | APPS= | 21 | APPS= |
22 | 22 | ||
23 | LIB=$(TOP)/libcrypto.a | 23 | LIB=$(TOP)/libcrypto.a |
24 | LIBSRC=rc4_skey.c rc4_enc.c | 24 | LIBSRC=rc4_skey.c rc4_enc.c rc4_fblk.c |
25 | LIBOBJ=$(RC4_ENC) | 25 | LIBOBJ=$(RC4_ENC) rc4_fblk.o |
26 | 26 | ||
27 | SRC= $(LIBSRC) | 27 | SRC= $(LIBSRC) |
28 | 28 | ||
@@ -37,7 +37,7 @@ top: | |||
37 | all: lib | 37 | all: lib |
38 | 38 | ||
39 | lib: $(LIBOBJ) | 39 | lib: $(LIBOBJ) |
40 | $(AR) $(LIB) $(LIBOBJ) | 40 | $(ARX) $(LIB) $(LIBOBJ) |
41 | $(RANLIB) $(LIB) || echo Never mind. | 41 | $(RANLIB) $(LIB) || echo Never mind. |
42 | @touch lib | 42 | @touch lib |
43 | 43 | ||
@@ -105,10 +105,20 @@ rc4_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | |||
105 | rc4_enc.o: ../../include/openssl/rc4.h ../../include/openssl/safestack.h | 105 | rc4_enc.o: ../../include/openssl/rc4.h ../../include/openssl/safestack.h |
106 | rc4_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 106 | rc4_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
107 | rc4_enc.o: ../cryptlib.h rc4_enc.c rc4_locl.h | 107 | rc4_enc.o: ../cryptlib.h rc4_enc.c rc4_locl.h |
108 | rc4_fblk.o: ../../e_os.h ../../include/openssl/bio.h | ||
109 | rc4_fblk.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | ||
110 | rc4_fblk.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
111 | rc4_fblk.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h | ||
112 | rc4_fblk.o: ../../include/openssl/opensslconf.h | ||
113 | rc4_fblk.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
114 | rc4_fblk.o: ../../include/openssl/rc4.h ../../include/openssl/safestack.h | ||
115 | rc4_fblk.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
116 | rc4_fblk.o: ../cryptlib.h rc4_fblk.c rc4_locl.h | ||
108 | rc4_skey.o: ../../e_os.h ../../include/openssl/bio.h | 117 | rc4_skey.o: ../../e_os.h ../../include/openssl/bio.h |
109 | rc4_skey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 118 | rc4_skey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
110 | rc4_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | 119 | rc4_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
111 | rc4_skey.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h | 120 | rc4_skey.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
121 | rc4_skey.o: ../../include/openssl/opensslconf.h | ||
112 | rc4_skey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 122 | rc4_skey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
113 | rc4_skey.o: ../../include/openssl/rc4.h ../../include/openssl/safestack.h | 123 | rc4_skey.o: ../../include/openssl/rc4.h ../../include/openssl/safestack.h |
114 | rc4_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 124 | rc4_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
diff --git a/src/lib/libssl/src/crypto/rc4/rc4_fblk.c b/src/lib/libssl/src/crypto/rc4/rc4_fblk.c new file mode 100644 index 0000000000..1b2a42979b --- /dev/null +++ b/src/lib/libssl/src/crypto/rc4/rc4_fblk.c | |||
@@ -0,0 +1,75 @@ | |||
1 | /* crypto/rc4/rc4_fblk.c */ | ||
2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | ||
3 | * project. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 2008 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | */ | ||
53 | |||
54 | |||
55 | #include <openssl/rc4.h> | ||
56 | #include "rc4_locl.h" | ||
57 | #include <openssl/opensslv.h> | ||
58 | #include <openssl/crypto.h> | ||
59 | #ifdef OPENSSL_FIPS | ||
60 | #include <openssl/fips.h> | ||
61 | #endif | ||
62 | |||
63 | /* FIPS mode blocking for RC4 has to be done separately since RC4_set_key | ||
64 | * may be implemented in an assembly language file. | ||
65 | */ | ||
66 | |||
67 | #ifdef OPENSSL_FIPS | ||
68 | void RC4_set_key(RC4_KEY *key, int len, const unsigned char *data) | ||
69 | { | ||
70 | if (FIPS_mode()) | ||
71 | FIPS_BAD_ABORT(RC4) | ||
72 | private_RC4_set_key(key, len, data); | ||
73 | } | ||
74 | #endif | ||
75 | |||
diff --git a/src/lib/libssl/src/crypto/rc5/Makefile b/src/lib/libssl/src/crypto/rc5/Makefile index efb0f36b59..b4e21c9bb2 100644 --- a/src/lib/libssl/src/crypto/rc5/Makefile +++ b/src/lib/libssl/src/crypto/rc5/Makefile | |||
@@ -40,7 +40,7 @@ top: | |||
40 | all: lib | 40 | all: lib |
41 | 41 | ||
42 | lib: $(LIBOBJ) | 42 | lib: $(LIBOBJ) |
43 | $(AR) $(LIB) $(LIBOBJ) | 43 | $(ARX) $(LIB) $(LIBOBJ) |
44 | $(RANLIB) $(LIB) || echo Never mind. | 44 | $(RANLIB) $(LIB) || echo Never mind. |
45 | @touch lib | 45 | @touch lib |
46 | 46 | ||
diff --git a/src/lib/libssl/src/crypto/ripemd/Makefile b/src/lib/libssl/src/crypto/ripemd/Makefile index d55875c20c..6145f13699 100644 --- a/src/lib/libssl/src/crypto/ripemd/Makefile +++ b/src/lib/libssl/src/crypto/ripemd/Makefile | |||
@@ -38,7 +38,7 @@ top: | |||
38 | all: lib | 38 | all: lib |
39 | 39 | ||
40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) |
41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(ARX) $(LIB) $(LIBOBJ) |
42 | $(RANLIB) $(LIB) || echo Never mind. | 42 | $(RANLIB) $(LIB) || echo Never mind. |
43 | @touch lib | 43 | @touch lib |
44 | 44 | ||
@@ -89,8 +89,13 @@ clean: | |||
89 | 89 | ||
90 | # DO NOT DELETE THIS LINE -- make depend depends on it. | 90 | # DO NOT DELETE THIS LINE -- make depend depends on it. |
91 | 91 | ||
92 | rmd_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | 92 | rmd_dgst.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h |
93 | rmd_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ripemd.h | 93 | rmd_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
94 | rmd_dgst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h | ||
95 | rmd_dgst.o: ../../include/openssl/opensslconf.h | ||
96 | rmd_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
97 | rmd_dgst.o: ../../include/openssl/ripemd.h ../../include/openssl/safestack.h | ||
98 | rmd_dgst.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
94 | rmd_dgst.o: ../md32_common.h rmd_dgst.c rmd_locl.h rmdconst.h | 99 | rmd_dgst.o: ../md32_common.h rmd_dgst.c rmd_locl.h rmdconst.h |
95 | rmd_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 100 | rmd_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
96 | rmd_one.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 101 | rmd_one.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
diff --git a/src/lib/libssl/src/crypto/rsa/rsa_eng.c b/src/lib/libssl/src/crypto/rsa/rsa_eng.c new file mode 100644 index 0000000000..383a7045b2 --- /dev/null +++ b/src/lib/libssl/src/crypto/rsa/rsa_eng.c | |||
@@ -0,0 +1,348 @@ | |||
1 | /* crypto/rsa/rsa_lib.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include <openssl/crypto.h> | ||
61 | #include "cryptlib.h" | ||
62 | #include <openssl/lhash.h> | ||
63 | #include <openssl/bn.h> | ||
64 | #include <openssl/rsa.h> | ||
65 | #include <openssl/rand.h> | ||
66 | #ifndef OPENSSL_NO_ENGINE | ||
67 | #include <openssl/engine.h> | ||
68 | #endif | ||
69 | |||
70 | const char RSA_version[]="RSA" OPENSSL_VERSION_PTEXT; | ||
71 | |||
72 | static const RSA_METHOD *default_RSA_meth=NULL; | ||
73 | |||
74 | RSA *RSA_new(void) | ||
75 | { | ||
76 | RSA *r=RSA_new_method(NULL); | ||
77 | |||
78 | return r; | ||
79 | } | ||
80 | |||
81 | void RSA_set_default_method(const RSA_METHOD *meth) | ||
82 | { | ||
83 | #ifdef OPENSSL_FIPS | ||
84 | if (FIPS_mode() && !(meth->flags & RSA_FLAG_FIPS_METHOD)) | ||
85 | { | ||
86 | RSAerr(RSA_F_RSA_SET_DEFAULT_METHOD, RSA_R_NON_FIPS_METHOD); | ||
87 | return; | ||
88 | } | ||
89 | #endif | ||
90 | default_RSA_meth = meth; | ||
91 | } | ||
92 | |||
93 | const RSA_METHOD *RSA_get_default_method(void) | ||
94 | { | ||
95 | if (default_RSA_meth == NULL) | ||
96 | { | ||
97 | #ifdef RSA_NULL | ||
98 | default_RSA_meth=RSA_null_method(); | ||
99 | #else | ||
100 | #if 0 /* was: #ifdef RSAref */ | ||
101 | default_RSA_meth=RSA_PKCS1_RSAref(); | ||
102 | #else | ||
103 | default_RSA_meth=RSA_PKCS1_SSLeay(); | ||
104 | #endif | ||
105 | #endif | ||
106 | } | ||
107 | |||
108 | return default_RSA_meth; | ||
109 | } | ||
110 | |||
111 | const RSA_METHOD *RSA_get_method(const RSA *rsa) | ||
112 | { | ||
113 | return rsa->meth; | ||
114 | } | ||
115 | |||
116 | int RSA_set_method(RSA *rsa, const RSA_METHOD *meth) | ||
117 | { | ||
118 | /* NB: The caller is specifically setting a method, so it's not up to us | ||
119 | * to deal with which ENGINE it comes from. */ | ||
120 | const RSA_METHOD *mtmp; | ||
121 | #ifdef OPENSSL_FIPS | ||
122 | if (FIPS_mode() && !(meth->flags & RSA_FLAG_FIPS_METHOD)) | ||
123 | { | ||
124 | RSAerr(RSA_F_RSA_SET_METHOD, RSA_R_NON_FIPS_METHOD); | ||
125 | return 0; | ||
126 | } | ||
127 | #endif | ||
128 | mtmp = rsa->meth; | ||
129 | if (mtmp->finish) mtmp->finish(rsa); | ||
130 | #ifndef OPENSSL_NO_ENGINE | ||
131 | if (rsa->engine) | ||
132 | { | ||
133 | ENGINE_finish(rsa->engine); | ||
134 | rsa->engine = NULL; | ||
135 | } | ||
136 | #endif | ||
137 | rsa->meth = meth; | ||
138 | if (meth->init) meth->init(rsa); | ||
139 | return 1; | ||
140 | } | ||
141 | |||
142 | RSA *RSA_new_method(ENGINE *engine) | ||
143 | { | ||
144 | RSA *ret; | ||
145 | |||
146 | ret=(RSA *)OPENSSL_malloc(sizeof(RSA)); | ||
147 | if (ret == NULL) | ||
148 | { | ||
149 | RSAerr(RSA_F_RSA_NEW_METHOD,ERR_R_MALLOC_FAILURE); | ||
150 | return NULL; | ||
151 | } | ||
152 | |||
153 | ret->meth = RSA_get_default_method(); | ||
154 | #ifndef OPENSSL_NO_ENGINE | ||
155 | if (engine) | ||
156 | { | ||
157 | if (!ENGINE_init(engine)) | ||
158 | { | ||
159 | RSAerr(RSA_F_RSA_NEW_METHOD, ERR_R_ENGINE_LIB); | ||
160 | OPENSSL_free(ret); | ||
161 | return NULL; | ||
162 | } | ||
163 | ret->engine = engine; | ||
164 | } | ||
165 | else | ||
166 | ret->engine = ENGINE_get_default_RSA(); | ||
167 | if(ret->engine) | ||
168 | { | ||
169 | ret->meth = ENGINE_get_RSA(ret->engine); | ||
170 | if(!ret->meth) | ||
171 | { | ||
172 | RSAerr(RSA_F_RSA_NEW_METHOD, | ||
173 | ERR_R_ENGINE_LIB); | ||
174 | ENGINE_finish(ret->engine); | ||
175 | OPENSSL_free(ret); | ||
176 | return NULL; | ||
177 | } | ||
178 | } | ||
179 | #endif | ||
180 | #ifdef OPENSSL_FIPS | ||
181 | if (FIPS_mode() && !(ret->meth->flags & RSA_FLAG_FIPS_METHOD)) | ||
182 | { | ||
183 | RSAerr(RSA_F_RSA_NEW_METHOD, RSA_R_NON_FIPS_METHOD); | ||
184 | #ifndef OPENSSL_NO_ENGINE | ||
185 | if (ret->engine) | ||
186 | ENGINE_finish(ret->engine); | ||
187 | #endif | ||
188 | OPENSSL_free(ret); | ||
189 | return NULL; | ||
190 | } | ||
191 | #endif | ||
192 | |||
193 | ret->pad=0; | ||
194 | ret->version=0; | ||
195 | ret->n=NULL; | ||
196 | ret->e=NULL; | ||
197 | ret->d=NULL; | ||
198 | ret->p=NULL; | ||
199 | ret->q=NULL; | ||
200 | ret->dmp1=NULL; | ||
201 | ret->dmq1=NULL; | ||
202 | ret->iqmp=NULL; | ||
203 | ret->references=1; | ||
204 | ret->_method_mod_n=NULL; | ||
205 | ret->_method_mod_p=NULL; | ||
206 | ret->_method_mod_q=NULL; | ||
207 | ret->blinding=NULL; | ||
208 | ret->mt_blinding=NULL; | ||
209 | ret->bignum_data=NULL; | ||
210 | ret->flags=ret->meth->flags; | ||
211 | CRYPTO_new_ex_data(CRYPTO_EX_INDEX_RSA, ret, &ret->ex_data); | ||
212 | if ((ret->meth->init != NULL) && !ret->meth->init(ret)) | ||
213 | { | ||
214 | #ifndef OPENSSL_NO_ENGINE | ||
215 | if (ret->engine) | ||
216 | ENGINE_finish(ret->engine); | ||
217 | #endif | ||
218 | CRYPTO_free_ex_data(CRYPTO_EX_INDEX_RSA, ret, &ret->ex_data); | ||
219 | OPENSSL_free(ret); | ||
220 | ret=NULL; | ||
221 | } | ||
222 | return(ret); | ||
223 | } | ||
224 | |||
225 | void RSA_free(RSA *r) | ||
226 | { | ||
227 | int i; | ||
228 | |||
229 | if (r == NULL) return; | ||
230 | |||
231 | i=CRYPTO_add(&r->references,-1,CRYPTO_LOCK_RSA); | ||
232 | #ifdef REF_PRINT | ||
233 | REF_PRINT("RSA",r); | ||
234 | #endif | ||
235 | if (i > 0) return; | ||
236 | #ifdef REF_CHECK | ||
237 | if (i < 0) | ||
238 | { | ||
239 | fprintf(stderr,"RSA_free, bad reference count\n"); | ||
240 | abort(); | ||
241 | } | ||
242 | #endif | ||
243 | |||
244 | if (r->meth->finish) | ||
245 | r->meth->finish(r); | ||
246 | #ifndef OPENSSL_NO_ENGINE | ||
247 | if (r->engine) | ||
248 | ENGINE_finish(r->engine); | ||
249 | #endif | ||
250 | |||
251 | CRYPTO_free_ex_data(CRYPTO_EX_INDEX_RSA, r, &r->ex_data); | ||
252 | |||
253 | if (r->n != NULL) BN_clear_free(r->n); | ||
254 | if (r->e != NULL) BN_clear_free(r->e); | ||
255 | if (r->d != NULL) BN_clear_free(r->d); | ||
256 | if (r->p != NULL) BN_clear_free(r->p); | ||
257 | if (r->q != NULL) BN_clear_free(r->q); | ||
258 | if (r->dmp1 != NULL) BN_clear_free(r->dmp1); | ||
259 | if (r->dmq1 != NULL) BN_clear_free(r->dmq1); | ||
260 | if (r->iqmp != NULL) BN_clear_free(r->iqmp); | ||
261 | if (r->blinding != NULL) BN_BLINDING_free(r->blinding); | ||
262 | if (r->mt_blinding != NULL) BN_BLINDING_free(r->mt_blinding); | ||
263 | if (r->bignum_data != NULL) OPENSSL_free_locked(r->bignum_data); | ||
264 | OPENSSL_free(r); | ||
265 | } | ||
266 | |||
267 | int RSA_up_ref(RSA *r) | ||
268 | { | ||
269 | int i = CRYPTO_add(&r->references, 1, CRYPTO_LOCK_RSA); | ||
270 | #ifdef REF_PRINT | ||
271 | REF_PRINT("RSA",r); | ||
272 | #endif | ||
273 | #ifdef REF_CHECK | ||
274 | if (i < 2) | ||
275 | { | ||
276 | fprintf(stderr, "RSA_up_ref, bad reference count\n"); | ||
277 | abort(); | ||
278 | } | ||
279 | #endif | ||
280 | return ((i > 1) ? 1 : 0); | ||
281 | } | ||
282 | |||
283 | int RSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, | ||
284 | CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func) | ||
285 | { | ||
286 | return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_RSA, argl, argp, | ||
287 | new_func, dup_func, free_func); | ||
288 | } | ||
289 | |||
290 | int RSA_set_ex_data(RSA *r, int idx, void *arg) | ||
291 | { | ||
292 | return(CRYPTO_set_ex_data(&r->ex_data,idx,arg)); | ||
293 | } | ||
294 | |||
295 | void *RSA_get_ex_data(const RSA *r, int idx) | ||
296 | { | ||
297 | return(CRYPTO_get_ex_data(&r->ex_data,idx)); | ||
298 | } | ||
299 | |||
300 | int RSA_flags(const RSA *r) | ||
301 | { | ||
302 | return((r == NULL)?0:r->meth->flags); | ||
303 | } | ||
304 | |||
305 | int RSA_memory_lock(RSA *r) | ||
306 | { | ||
307 | int i,j,k,off; | ||
308 | char *p; | ||
309 | BIGNUM *bn,**t[6],*b; | ||
310 | BN_ULONG *ul; | ||
311 | |||
312 | if (r->d == NULL) return(1); | ||
313 | t[0]= &r->d; | ||
314 | t[1]= &r->p; | ||
315 | t[2]= &r->q; | ||
316 | t[3]= &r->dmp1; | ||
317 | t[4]= &r->dmq1; | ||
318 | t[5]= &r->iqmp; | ||
319 | k=sizeof(BIGNUM)*6; | ||
320 | off=k/sizeof(BN_ULONG)+1; | ||
321 | j=1; | ||
322 | for (i=0; i<6; i++) | ||
323 | j+= (*t[i])->top; | ||
324 | if ((p=OPENSSL_malloc_locked((off+j)*sizeof(BN_ULONG))) == NULL) | ||
325 | { | ||
326 | RSAerr(RSA_F_RSA_MEMORY_LOCK,ERR_R_MALLOC_FAILURE); | ||
327 | return(0); | ||
328 | } | ||
329 | bn=(BIGNUM *)p; | ||
330 | ul=(BN_ULONG *)&(p[off]); | ||
331 | for (i=0; i<6; i++) | ||
332 | { | ||
333 | b= *(t[i]); | ||
334 | *(t[i])= &(bn[i]); | ||
335 | memcpy((char *)&(bn[i]),(char *)b,sizeof(BIGNUM)); | ||
336 | bn[i].flags=BN_FLG_STATIC_DATA; | ||
337 | bn[i].d=ul; | ||
338 | memcpy((char *)ul,b->d,sizeof(BN_ULONG)*b->top); | ||
339 | ul+=b->top; | ||
340 | BN_clear_free(b); | ||
341 | } | ||
342 | |||
343 | /* I should fix this so it can still be done */ | ||
344 | r->flags&= ~(RSA_FLAG_CACHE_PRIVATE|RSA_FLAG_CACHE_PUBLIC); | ||
345 | |||
346 | r->bignum_data=p; | ||
347 | return(1); | ||
348 | } | ||
diff --git a/src/lib/libssl/src/crypto/rsa/rsa_x931g.c b/src/lib/libssl/src/crypto/rsa/rsa_x931g.c new file mode 100644 index 0000000000..c640cc2ec9 --- /dev/null +++ b/src/lib/libssl/src/crypto/rsa/rsa_x931g.c | |||
@@ -0,0 +1,255 @@ | |||
1 | /* crypto/rsa/rsa_gen.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include <string.h> | ||
61 | #include <time.h> | ||
62 | #include <openssl/err.h> | ||
63 | #include <openssl/bn.h> | ||
64 | #include <openssl/rsa.h> | ||
65 | |||
66 | #ifndef OPENSSL_FIPS | ||
67 | |||
68 | /* X9.31 RSA key derivation and generation */ | ||
69 | |||
70 | int RSA_X931_derive_ex(RSA *rsa, BIGNUM *p1, BIGNUM *p2, BIGNUM *q1, BIGNUM *q2, | ||
71 | const BIGNUM *Xp1, const BIGNUM *Xp2, const BIGNUM *Xp, | ||
72 | const BIGNUM *Xq1, const BIGNUM *Xq2, const BIGNUM *Xq, | ||
73 | const BIGNUM *e, BN_GENCB *cb) | ||
74 | { | ||
75 | BIGNUM *r0=NULL,*r1=NULL,*r2=NULL,*r3=NULL; | ||
76 | BN_CTX *ctx=NULL,*ctx2=NULL; | ||
77 | |||
78 | if (!rsa) | ||
79 | goto err; | ||
80 | |||
81 | ctx = BN_CTX_new(); | ||
82 | BN_CTX_start(ctx); | ||
83 | if (!ctx) | ||
84 | goto err; | ||
85 | |||
86 | r0 = BN_CTX_get(ctx); | ||
87 | r1 = BN_CTX_get(ctx); | ||
88 | r2 = BN_CTX_get(ctx); | ||
89 | r3 = BN_CTX_get(ctx); | ||
90 | |||
91 | if (r3 == NULL) | ||
92 | goto err; | ||
93 | if (!rsa->e) | ||
94 | { | ||
95 | rsa->e = BN_dup(e); | ||
96 | if (!rsa->e) | ||
97 | goto err; | ||
98 | } | ||
99 | else | ||
100 | e = rsa->e; | ||
101 | |||
102 | /* If not all parameters present only calculate what we can. | ||
103 | * This allows test programs to output selective parameters. | ||
104 | */ | ||
105 | |||
106 | if (Xp && !rsa->p) | ||
107 | { | ||
108 | rsa->p = BN_new(); | ||
109 | if (!rsa->p) | ||
110 | goto err; | ||
111 | |||
112 | if (!BN_X931_derive_prime_ex(rsa->p, p1, p2, | ||
113 | Xp, Xp1, Xp2, e, ctx, cb)) | ||
114 | goto err; | ||
115 | } | ||
116 | |||
117 | if (Xq && !rsa->q) | ||
118 | { | ||
119 | rsa->q = BN_new(); | ||
120 | if (!rsa->q) | ||
121 | goto err; | ||
122 | if (!BN_X931_derive_prime_ex(rsa->q, q1, q2, | ||
123 | Xq, Xq1, Xq2, e, ctx, cb)) | ||
124 | goto err; | ||
125 | } | ||
126 | |||
127 | if (!rsa->p || !rsa->q) | ||
128 | { | ||
129 | BN_CTX_end(ctx); | ||
130 | BN_CTX_free(ctx); | ||
131 | return 2; | ||
132 | } | ||
133 | |||
134 | /* Since both primes are set we can now calculate all remaining | ||
135 | * components. | ||
136 | */ | ||
137 | |||
138 | /* calculate n */ | ||
139 | rsa->n=BN_new(); | ||
140 | if (rsa->n == NULL) | ||
141 | goto err; | ||
142 | if (!BN_mul(rsa->n,rsa->p,rsa->q,ctx)) | ||
143 | goto err; | ||
144 | |||
145 | /* calculate d */ | ||
146 | if (!BN_sub(r1,rsa->p,BN_value_one())) | ||
147 | goto err; /* p-1 */ | ||
148 | if (!BN_sub(r2,rsa->q,BN_value_one())) | ||
149 | goto err; /* q-1 */ | ||
150 | if (!BN_mul(r0,r1,r2,ctx)) | ||
151 | goto err; /* (p-1)(q-1) */ | ||
152 | |||
153 | if (!BN_gcd(r3, r1, r2, ctx)) | ||
154 | goto err; | ||
155 | |||
156 | if (!BN_div(r0, NULL, r0, r3, ctx)) | ||
157 | goto err; /* LCM((p-1)(q-1)) */ | ||
158 | |||
159 | ctx2 = BN_CTX_new(); | ||
160 | if (!ctx2) | ||
161 | goto err; | ||
162 | |||
163 | rsa->d=BN_mod_inverse(NULL,rsa->e,r0,ctx2); /* d */ | ||
164 | if (rsa->d == NULL) | ||
165 | goto err; | ||
166 | |||
167 | /* calculate d mod (p-1) */ | ||
168 | rsa->dmp1=BN_new(); | ||
169 | if (rsa->dmp1 == NULL) | ||
170 | goto err; | ||
171 | if (!BN_mod(rsa->dmp1,rsa->d,r1,ctx)) | ||
172 | goto err; | ||
173 | |||
174 | /* calculate d mod (q-1) */ | ||
175 | rsa->dmq1=BN_new(); | ||
176 | if (rsa->dmq1 == NULL) | ||
177 | goto err; | ||
178 | if (!BN_mod(rsa->dmq1,rsa->d,r2,ctx)) | ||
179 | goto err; | ||
180 | |||
181 | /* calculate inverse of q mod p */ | ||
182 | rsa->iqmp=BN_mod_inverse(NULL,rsa->q,rsa->p,ctx2); | ||
183 | |||
184 | err: | ||
185 | if (ctx) | ||
186 | { | ||
187 | BN_CTX_end(ctx); | ||
188 | BN_CTX_free(ctx); | ||
189 | } | ||
190 | if (ctx2) | ||
191 | BN_CTX_free(ctx2); | ||
192 | /* If this is set all calls successful */ | ||
193 | if (rsa->iqmp != NULL) | ||
194 | return 1; | ||
195 | |||
196 | return 0; | ||
197 | |||
198 | } | ||
199 | |||
200 | int RSA_X931_generate_key_ex(RSA *rsa, int bits, const BIGNUM *e, BN_GENCB *cb) | ||
201 | { | ||
202 | int ok = 0; | ||
203 | BIGNUM *Xp = NULL, *Xq = NULL; | ||
204 | BN_CTX *ctx = NULL; | ||
205 | |||
206 | ctx = BN_CTX_new(); | ||
207 | if (!ctx) | ||
208 | goto error; | ||
209 | |||
210 | BN_CTX_start(ctx); | ||
211 | Xp = BN_CTX_get(ctx); | ||
212 | Xq = BN_CTX_get(ctx); | ||
213 | if (!BN_X931_generate_Xpq(Xp, Xq, bits, ctx)) | ||
214 | goto error; | ||
215 | |||
216 | rsa->p = BN_new(); | ||
217 | rsa->q = BN_new(); | ||
218 | if (!rsa->p || !rsa->q) | ||
219 | goto error; | ||
220 | |||
221 | /* Generate two primes from Xp, Xq */ | ||
222 | |||
223 | if (!BN_X931_generate_prime_ex(rsa->p, NULL, NULL, NULL, NULL, Xp, | ||
224 | e, ctx, cb)) | ||
225 | goto error; | ||
226 | |||
227 | if (!BN_X931_generate_prime_ex(rsa->q, NULL, NULL, NULL, NULL, Xq, | ||
228 | e, ctx, cb)) | ||
229 | goto error; | ||
230 | |||
231 | /* Since rsa->p and rsa->q are valid this call will just derive | ||
232 | * remaining RSA components. | ||
233 | */ | ||
234 | |||
235 | if (!RSA_X931_derive_ex(rsa, NULL, NULL, NULL, NULL, | ||
236 | NULL, NULL, NULL, NULL, NULL, NULL, e, cb)) | ||
237 | goto error; | ||
238 | |||
239 | ok = 1; | ||
240 | |||
241 | error: | ||
242 | if (ctx) | ||
243 | { | ||
244 | BN_CTX_end(ctx); | ||
245 | BN_CTX_free(ctx); | ||
246 | } | ||
247 | |||
248 | if (ok) | ||
249 | return 1; | ||
250 | |||
251 | return 0; | ||
252 | |||
253 | } | ||
254 | |||
255 | #endif | ||
diff --git a/src/lib/libssl/src/crypto/sha/Makefile b/src/lib/libssl/src/crypto/sha/Makefile index ac64fb61d3..f4741b9ee6 100644 --- a/src/lib/libssl/src/crypto/sha/Makefile +++ b/src/lib/libssl/src/crypto/sha/Makefile | |||
@@ -38,7 +38,7 @@ top: | |||
38 | all: lib | 38 | all: lib |
39 | 39 | ||
40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) |
41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(ARX) $(LIB) $(LIBOBJ) |
42 | $(RANLIB) $(LIB) || echo Never mind. | 42 | $(RANLIB) $(LIB) || echo Never mind. |
43 | @touch lib | 43 | @touch lib |
44 | 44 | ||
@@ -59,7 +59,7 @@ s512sse2-out.s: asm/sha512-sse2.pl ../perlasm/x86asm.pl | |||
59 | (cd asm; $(PERL) sha512-sse2.pl a.out $(CFLAGS) $(PROCESSOR) > ../$@) | 59 | (cd asm; $(PERL) sha512-sse2.pl a.out $(CFLAGS) $(PROCESSOR) > ../$@) |
60 | 60 | ||
61 | sha1-ia64.s: asm/sha1-ia64.pl | 61 | sha1-ia64.s: asm/sha1-ia64.pl |
62 | (cd asm; $(PERL) sha1-ia64.pl $(CFLAGS) ) > $@ | 62 | (cd asm; $(PERL) sha1-ia64.pl ../$@ $(CFLAGS)) |
63 | sha256-ia64.s: asm/sha512-ia64.pl | 63 | sha256-ia64.s: asm/sha512-ia64.pl |
64 | (cd asm; $(PERL) sha512-ia64.pl ../$@ $(CFLAGS)) | 64 | (cd asm; $(PERL) sha512-ia64.pl ../$@ $(CFLAGS)) |
65 | sha512-ia64.s: asm/sha512-ia64.pl | 65 | sha512-ia64.s: asm/sha512-ia64.pl |
@@ -113,24 +113,31 @@ sha1_one.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | |||
113 | sha1_one.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 113 | sha1_one.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
114 | sha1_one.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 114 | sha1_one.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
115 | sha1_one.o: sha1_one.c | 115 | sha1_one.o: sha1_one.c |
116 | sha1dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | 116 | sha1dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/fips.h |
117 | sha1dgst.o: ../../include/openssl/opensslconf.h | ||
117 | sha1dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/sha.h | 118 | sha1dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/sha.h |
118 | sha1dgst.o: ../md32_common.h sha1dgst.c sha_locl.h | 119 | sha1dgst.o: ../md32_common.h sha1dgst.c sha_locl.h |
119 | sha256.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 120 | sha256.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
120 | sha256.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 121 | sha256.o: ../../include/openssl/fips.h ../../include/openssl/opensslconf.h |
121 | sha256.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h | 122 | sha256.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
122 | sha256.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 123 | sha256.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
123 | sha256.o: ../../include/openssl/symhacks.h ../md32_common.h sha256.c | 124 | sha256.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
125 | sha256.o: ../md32_common.h sha256.c | ||
124 | sha512.o: ../../e_os.h ../../include/openssl/bio.h | 126 | sha512.o: ../../e_os.h ../../include/openssl/bio.h |
125 | sha512.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | 127 | sha512.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
126 | sha512.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | 128 | sha512.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
127 | sha512.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h | 129 | sha512.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
128 | sha512.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 130 | sha512.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
129 | sha512.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 131 | sha512.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h |
130 | sha512.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 132 | sha512.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
131 | sha512.o: ../cryptlib.h sha512.c | 133 | sha512.o: ../../include/openssl/symhacks.h ../cryptlib.h sha512.c |
132 | sha_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h | 134 | sha_dgst.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h |
133 | sha_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/sha.h | 135 | sha_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
136 | sha_dgst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h | ||
137 | sha_dgst.o: ../../include/openssl/opensslconf.h | ||
138 | sha_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
139 | sha_dgst.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
140 | sha_dgst.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
134 | sha_dgst.o: ../md32_common.h sha_dgst.c sha_locl.h | 141 | sha_dgst.o: ../md32_common.h sha_dgst.c sha_locl.h |
135 | sha_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 142 | sha_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
136 | sha_one.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 143 | sha_one.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
diff --git a/src/lib/libssl/src/crypto/stack/Makefile b/src/lib/libssl/src/crypto/stack/Makefile index 5327692ac8..489a77b93c 100644 --- a/src/lib/libssl/src/crypto/stack/Makefile +++ b/src/lib/libssl/src/crypto/stack/Makefile | |||
@@ -33,7 +33,7 @@ top: | |||
33 | all: lib | 33 | all: lib |
34 | 34 | ||
35 | lib: $(LIBOBJ) | 35 | lib: $(LIBOBJ) |
36 | $(AR) $(LIB) $(LIBOBJ) | 36 | $(ARX) $(LIB) $(LIBOBJ) |
37 | $(RANLIB) $(LIB) || echo Never mind. | 37 | $(RANLIB) $(LIB) || echo Never mind. |
38 | @touch lib | 38 | @touch lib |
39 | 39 | ||
diff --git a/src/lib/libssl/src/crypto/txt_db/Makefile b/src/lib/libssl/src/crypto/txt_db/Makefile index e6f30331d8..87e57b49f6 100644 --- a/src/lib/libssl/src/crypto/txt_db/Makefile +++ b/src/lib/libssl/src/crypto/txt_db/Makefile | |||
@@ -33,7 +33,7 @@ top: | |||
33 | all: lib | 33 | all: lib |
34 | 34 | ||
35 | lib: $(LIBOBJ) | 35 | lib: $(LIBOBJ) |
36 | $(AR) $(LIB) $(LIBOBJ) | 36 | $(ARX) $(LIB) $(LIBOBJ) |
37 | $(RANLIB) $(LIB) || echo Never mind. | 37 | $(RANLIB) $(LIB) || echo Never mind. |
38 | @touch lib | 38 | @touch lib |
39 | 39 | ||
diff --git a/src/lib/libssl/src/crypto/ui/Makefile b/src/lib/libssl/src/crypto/ui/Makefile index a685659fb4..4755e206f6 100644 --- a/src/lib/libssl/src/crypto/ui/Makefile +++ b/src/lib/libssl/src/crypto/ui/Makefile | |||
@@ -37,7 +37,7 @@ top: | |||
37 | all: lib | 37 | all: lib |
38 | 38 | ||
39 | lib: $(LIBOBJ) | 39 | lib: $(LIBOBJ) |
40 | $(AR) $(LIB) $(LIBOBJ) | 40 | $(ARX) $(LIB) $(LIBOBJ) |
41 | $(RANLIB) $(LIB) || echo Never mind. | 41 | $(RANLIB) $(LIB) || echo Never mind. |
42 | @touch lib | 42 | @touch lib |
43 | 43 | ||
diff --git a/src/lib/libssl/src/crypto/x509/Makefile b/src/lib/libssl/src/crypto/x509/Makefile index ddcc3124a7..464752b159 100644 --- a/src/lib/libssl/src/crypto/x509/Makefile +++ b/src/lib/libssl/src/crypto/x509/Makefile | |||
@@ -43,7 +43,7 @@ top: | |||
43 | all: lib | 43 | all: lib |
44 | 44 | ||
45 | lib: $(LIBOBJ) | 45 | lib: $(LIBOBJ) |
46 | $(AR) $(LIB) $(LIBOBJ) | 46 | $(ARX) $(LIB) $(LIBOBJ) |
47 | $(RANLIB) $(LIB) || echo Never mind. | 47 | $(RANLIB) $(LIB) || echo Never mind. |
48 | @touch lib | 48 | @touch lib |
49 | 49 | ||
@@ -89,35 +89,37 @@ by_dir.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
89 | by_dir.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 89 | by_dir.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
90 | by_dir.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 90 | by_dir.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
91 | by_dir.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 91 | by_dir.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
92 | by_dir.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 92 | by_dir.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
93 | by_dir.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 93 | by_dir.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
94 | by_dir.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 94 | by_dir.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
95 | by_dir.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 95 | by_dir.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
96 | by_dir.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 96 | by_dir.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
97 | by_dir.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 97 | by_dir.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
98 | by_dir.o: ../../include/openssl/x509_vfy.h ../cryptlib.h by_dir.c | 98 | by_dir.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
99 | by_dir.o: ../cryptlib.h by_dir.c | ||
99 | by_file.o: ../../e_os.h ../../include/openssl/asn1.h | 100 | by_file.o: ../../e_os.h ../../include/openssl/asn1.h |
100 | by_file.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 101 | by_file.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
101 | by_file.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 102 | by_file.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
102 | by_file.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 103 | by_file.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
103 | by_file.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 104 | by_file.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
104 | by_file.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 105 | by_file.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
105 | by_file.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 106 | by_file.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
106 | by_file.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 107 | by_file.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
107 | by_file.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h | 108 | by_file.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
108 | by_file.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h | 109 | by_file.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
109 | by_file.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 110 | by_file.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
110 | by_file.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 111 | by_file.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
111 | by_file.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 112 | by_file.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
112 | by_file.o: ../cryptlib.h by_file.c | 113 | by_file.o: ../../include/openssl/x509_vfy.h ../cryptlib.h by_file.c |
113 | x509_att.o: ../../e_os.h ../../include/openssl/asn1.h | 114 | x509_att.o: ../../e_os.h ../../include/openssl/asn1.h |
114 | x509_att.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 115 | x509_att.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
115 | x509_att.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | 116 | x509_att.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
116 | x509_att.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 117 | x509_att.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
117 | x509_att.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 118 | x509_att.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
118 | x509_att.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 119 | x509_att.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
119 | x509_att.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 120 | x509_att.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
120 | x509_att.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 121 | x509_att.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
122 | x509_att.o: ../../include/openssl/opensslconf.h | ||
121 | x509_att.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 123 | x509_att.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
122 | x509_att.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 124 | x509_att.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
123 | x509_att.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 125 | x509_att.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -130,8 +132,9 @@ x509_cmp.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
130 | x509_cmp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 132 | x509_cmp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
131 | x509_cmp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 133 | x509_cmp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
132 | x509_cmp.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 134 | x509_cmp.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
133 | x509_cmp.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 135 | x509_cmp.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
134 | x509_cmp.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 136 | x509_cmp.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
137 | x509_cmp.o: ../../include/openssl/opensslconf.h | ||
135 | x509_cmp.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 138 | x509_cmp.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
136 | x509_cmp.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 139 | x509_cmp.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
137 | x509_cmp.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 140 | x509_cmp.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -143,22 +146,22 @@ x509_d2.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
143 | x509_d2.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 146 | x509_d2.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
144 | x509_d2.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 147 | x509_d2.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
145 | x509_d2.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 148 | x509_d2.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
146 | x509_d2.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 149 | x509_d2.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
147 | x509_d2.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 150 | x509_d2.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
148 | x509_d2.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 151 | x509_d2.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
149 | x509_d2.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 152 | x509_d2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
150 | x509_d2.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 153 | x509_d2.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
151 | x509_d2.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 154 | x509_d2.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
152 | x509_d2.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 155 | x509_d2.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
153 | x509_d2.o: ../cryptlib.h x509_d2.c | 156 | x509_d2.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x509_d2.c |
154 | x509_def.o: ../../e_os.h ../../include/openssl/asn1.h | 157 | x509_def.o: ../../e_os.h ../../include/openssl/asn1.h |
155 | x509_def.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 158 | x509_def.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
156 | x509_def.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 159 | x509_def.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
157 | x509_def.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 160 | x509_def.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
158 | x509_def.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 161 | x509_def.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
159 | x509_def.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 162 | x509_def.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
160 | x509_def.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 163 | x509_def.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
161 | x509_def.o: ../../include/openssl/opensslconf.h | 164 | x509_def.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
162 | x509_def.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 165 | x509_def.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
163 | x509_def.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 166 | x509_def.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
164 | x509_def.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 167 | x509_def.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -169,8 +172,9 @@ x509_err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
169 | x509_err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 172 | x509_err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
170 | x509_err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 173 | x509_err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
171 | x509_err.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 174 | x509_err.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
172 | x509_err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 175 | x509_err.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
173 | x509_err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 176 | x509_err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
177 | x509_err.o: ../../include/openssl/opensslconf.h | ||
174 | x509_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 178 | x509_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
175 | x509_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 179 | x509_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
176 | x509_err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 180 | x509_err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -182,8 +186,9 @@ x509_ext.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
182 | x509_ext.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 186 | x509_ext.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
183 | x509_ext.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 187 | x509_ext.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
184 | x509_ext.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 188 | x509_ext.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
185 | x509_ext.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 189 | x509_ext.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
186 | x509_ext.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 190 | x509_ext.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
191 | x509_ext.o: ../../include/openssl/opensslconf.h | ||
187 | x509_ext.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 192 | x509_ext.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
188 | x509_ext.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 193 | x509_ext.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
189 | x509_ext.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 194 | x509_ext.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -196,22 +201,22 @@ x509_lu.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
196 | x509_lu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 201 | x509_lu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
197 | x509_lu.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 202 | x509_lu.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
198 | x509_lu.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 203 | x509_lu.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
199 | x509_lu.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 204 | x509_lu.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
200 | x509_lu.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 205 | x509_lu.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
201 | x509_lu.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 206 | x509_lu.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
202 | x509_lu.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 207 | x509_lu.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
203 | x509_lu.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 208 | x509_lu.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
204 | x509_lu.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 209 | x509_lu.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
205 | x509_lu.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 210 | x509_lu.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
206 | x509_lu.o: ../cryptlib.h x509_lu.c | 211 | x509_lu.o: ../../include/openssl/x509v3.h ../cryptlib.h x509_lu.c |
207 | x509_obj.o: ../../e_os.h ../../include/openssl/asn1.h | 212 | x509_obj.o: ../../e_os.h ../../include/openssl/asn1.h |
208 | x509_obj.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 213 | x509_obj.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
209 | x509_obj.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 214 | x509_obj.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
210 | x509_obj.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 215 | x509_obj.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
211 | x509_obj.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 216 | x509_obj.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
212 | x509_obj.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 217 | x509_obj.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
213 | x509_obj.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 218 | x509_obj.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
214 | x509_obj.o: ../../include/openssl/opensslconf.h | 219 | x509_obj.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
215 | x509_obj.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 220 | x509_obj.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
216 | x509_obj.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 221 | x509_obj.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
217 | x509_obj.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 222 | x509_obj.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -223,8 +228,9 @@ x509_r2x.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
223 | x509_r2x.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 228 | x509_r2x.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
224 | x509_r2x.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 229 | x509_r2x.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
225 | x509_r2x.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 230 | x509_r2x.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
226 | x509_r2x.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 231 | x509_r2x.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
227 | x509_r2x.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 232 | x509_r2x.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
233 | x509_r2x.o: ../../include/openssl/opensslconf.h | ||
228 | x509_r2x.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 234 | x509_r2x.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
229 | x509_r2x.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 235 | x509_r2x.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
230 | x509_r2x.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 236 | x509_r2x.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -236,8 +242,9 @@ x509_req.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
236 | x509_req.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 242 | x509_req.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
237 | x509_req.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 243 | x509_req.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
238 | x509_req.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 244 | x509_req.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
239 | x509_req.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 245 | x509_req.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
240 | x509_req.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 246 | x509_req.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
247 | x509_req.o: ../../include/openssl/opensslconf.h | ||
241 | x509_req.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 248 | x509_req.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
242 | x509_req.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h | 249 | x509_req.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h |
243 | x509_req.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 250 | x509_req.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
@@ -249,9 +256,9 @@ x509_set.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
249 | x509_set.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 256 | x509_set.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
250 | x509_set.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 257 | x509_set.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
251 | x509_set.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 258 | x509_set.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
252 | x509_set.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 259 | x509_set.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
253 | x509_set.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 260 | x509_set.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
254 | x509_set.o: ../../include/openssl/opensslconf.h | 261 | x509_set.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
255 | x509_set.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 262 | x509_set.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
256 | x509_set.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 263 | x509_set.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
257 | x509_set.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 264 | x509_set.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -263,8 +270,9 @@ x509_trs.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
263 | x509_trs.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 270 | x509_trs.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
264 | x509_trs.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 271 | x509_trs.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
265 | x509_trs.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 272 | x509_trs.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
266 | x509_trs.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 273 | x509_trs.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
267 | x509_trs.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 274 | x509_trs.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
275 | x509_trs.o: ../../include/openssl/opensslconf.h | ||
268 | x509_trs.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 276 | x509_trs.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
269 | x509_trs.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 277 | x509_trs.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
270 | x509_trs.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 278 | x509_trs.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -276,9 +284,9 @@ x509_txt.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
276 | x509_txt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 284 | x509_txt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
277 | x509_txt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 285 | x509_txt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
278 | x509_txt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 286 | x509_txt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
279 | x509_txt.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 287 | x509_txt.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
280 | x509_txt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 288 | x509_txt.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
281 | x509_txt.o: ../../include/openssl/opensslconf.h | 289 | x509_txt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
282 | x509_txt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 290 | x509_txt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
283 | x509_txt.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 291 | x509_txt.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
284 | x509_txt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 292 | x509_txt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -290,22 +298,23 @@ x509_v3.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
290 | x509_v3.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 298 | x509_v3.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
291 | x509_v3.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 299 | x509_v3.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
292 | x509_v3.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 300 | x509_v3.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
293 | x509_v3.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 301 | x509_v3.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
294 | x509_v3.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 302 | x509_v3.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
295 | x509_v3.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 303 | x509_v3.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
296 | x509_v3.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 304 | x509_v3.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
297 | x509_v3.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 305 | x509_v3.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
298 | x509_v3.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 306 | x509_v3.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
299 | x509_v3.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 307 | x509_v3.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
300 | x509_v3.o: ../cryptlib.h x509_v3.c | 308 | x509_v3.o: ../../include/openssl/x509v3.h ../cryptlib.h x509_v3.c |
301 | x509_vfy.o: ../../e_os.h ../../include/openssl/asn1.h | 309 | x509_vfy.o: ../../e_os.h ../../include/openssl/asn1.h |
302 | x509_vfy.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 310 | x509_vfy.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
303 | x509_vfy.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | 311 | x509_vfy.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
304 | x509_vfy.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 312 | x509_vfy.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
305 | x509_vfy.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 313 | x509_vfy.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
306 | x509_vfy.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 314 | x509_vfy.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
307 | x509_vfy.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 315 | x509_vfy.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
308 | x509_vfy.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 316 | x509_vfy.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
317 | x509_vfy.o: ../../include/openssl/opensslconf.h | ||
309 | x509_vfy.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 318 | x509_vfy.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
310 | x509_vfy.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 319 | x509_vfy.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
311 | x509_vfy.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 320 | x509_vfy.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -318,8 +327,9 @@ x509_vpm.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
318 | x509_vpm.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 327 | x509_vpm.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
319 | x509_vpm.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 328 | x509_vpm.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
320 | x509_vpm.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 329 | x509_vpm.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
321 | x509_vpm.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 330 | x509_vpm.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
322 | x509_vpm.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 331 | x509_vpm.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
332 | x509_vpm.o: ../../include/openssl/opensslconf.h | ||
323 | x509_vpm.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 333 | x509_vpm.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
324 | x509_vpm.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 334 | x509_vpm.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
325 | x509_vpm.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 335 | x509_vpm.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -331,9 +341,9 @@ x509cset.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
331 | x509cset.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 341 | x509cset.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
332 | x509cset.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 342 | x509cset.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
333 | x509cset.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 343 | x509cset.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
334 | x509cset.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 344 | x509cset.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
335 | x509cset.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 345 | x509cset.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
336 | x509cset.o: ../../include/openssl/opensslconf.h | 346 | x509cset.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
337 | x509cset.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 347 | x509cset.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
338 | x509cset.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 348 | x509cset.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
339 | x509cset.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 349 | x509cset.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -344,9 +354,9 @@ x509name.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
344 | x509name.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 354 | x509name.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
345 | x509name.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 355 | x509name.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
346 | x509name.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 356 | x509name.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
347 | x509name.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 357 | x509name.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
348 | x509name.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 358 | x509name.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
349 | x509name.o: ../../include/openssl/opensslconf.h | 359 | x509name.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
350 | x509name.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 360 | x509name.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
351 | x509name.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 361 | x509name.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
352 | x509name.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 362 | x509name.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -357,9 +367,9 @@ x509rset.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
357 | x509rset.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 367 | x509rset.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
358 | x509rset.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 368 | x509rset.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
359 | x509rset.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 369 | x509rset.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
360 | x509rset.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 370 | x509rset.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
361 | x509rset.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 371 | x509rset.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
362 | x509rset.o: ../../include/openssl/opensslconf.h | 372 | x509rset.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
363 | x509rset.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 373 | x509rset.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
364 | x509rset.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 374 | x509rset.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
365 | x509rset.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 375 | x509rset.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -370,9 +380,9 @@ x509spki.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
370 | x509spki.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 380 | x509spki.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
371 | x509spki.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 381 | x509spki.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
372 | x509spki.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 382 | x509spki.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
373 | x509spki.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 383 | x509spki.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
374 | x509spki.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 384 | x509spki.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
375 | x509spki.o: ../../include/openssl/opensslconf.h | 385 | x509spki.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
376 | x509spki.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 386 | x509spki.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
377 | x509spki.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 387 | x509spki.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
378 | x509spki.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 388 | x509spki.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -383,9 +393,9 @@ x509type.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | |||
383 | x509type.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 393 | x509type.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
384 | x509type.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 394 | x509type.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
385 | x509type.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 395 | x509type.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
386 | x509type.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 396 | x509type.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
387 | x509type.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 397 | x509type.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
388 | x509type.o: ../../include/openssl/opensslconf.h | 398 | x509type.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
389 | x509type.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 399 | x509type.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
390 | x509type.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 400 | x509type.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
391 | x509type.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 401 | x509type.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -396,11 +406,12 @@ x_all.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h | |||
396 | x_all.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h | 406 | x_all.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h |
397 | x_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 407 | x_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
398 | x_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 408 | x_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
399 | x_all.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 409 | x_all.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
400 | x_all.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 410 | x_all.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
401 | x_all.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 411 | x_all.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
402 | x_all.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 412 | x_all.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
403 | x_all.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | 413 | x_all.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h |
404 | x_all.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 414 | x_all.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
405 | x_all.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 415 | x_all.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
406 | x_all.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_all.c | 416 | x_all.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
417 | x_all.o: ../cryptlib.h x_all.c | ||
diff --git a/src/lib/libssl/src/crypto/x509v3/Makefile b/src/lib/libssl/src/crypto/x509v3/Makefile index 556ef351bf..e71dc42f9f 100644 --- a/src/lib/libssl/src/crypto/x509v3/Makefile +++ b/src/lib/libssl/src/crypto/x509v3/Makefile | |||
@@ -43,7 +43,7 @@ top: | |||
43 | all: lib | 43 | all: lib |
44 | 44 | ||
45 | lib: $(LIBOBJ) | 45 | lib: $(LIBOBJ) |
46 | $(AR) $(LIB) $(LIBOBJ) | 46 | $(ARX) $(LIB) $(LIBOBJ) |
47 | $(RANLIB) $(LIB) || echo Never mind. | 47 | $(RANLIB) $(LIB) || echo Never mind. |
48 | @touch lib | 48 | @touch lib |
49 | 49 | ||
@@ -90,8 +90,8 @@ pcy_cache.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
90 | pcy_cache.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 90 | pcy_cache.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
91 | pcy_cache.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 91 | pcy_cache.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
92 | pcy_cache.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 92 | pcy_cache.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
93 | pcy_cache.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 93 | pcy_cache.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
94 | pcy_cache.o: ../../include/openssl/objects.h | 94 | pcy_cache.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
95 | pcy_cache.o: ../../include/openssl/opensslconf.h | 95 | pcy_cache.o: ../../include/openssl/opensslconf.h |
96 | pcy_cache.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 96 | pcy_cache.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
97 | pcy_cache.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 97 | pcy_cache.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
@@ -105,8 +105,9 @@ pcy_data.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
105 | pcy_data.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 105 | pcy_data.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
106 | pcy_data.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 106 | pcy_data.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
107 | pcy_data.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 107 | pcy_data.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
108 | pcy_data.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 108 | pcy_data.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
109 | pcy_data.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 109 | pcy_data.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
110 | pcy_data.o: ../../include/openssl/opensslconf.h | ||
110 | pcy_data.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 111 | pcy_data.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
111 | pcy_data.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 112 | pcy_data.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
112 | pcy_data.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 113 | pcy_data.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -119,35 +120,36 @@ pcy_lib.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
119 | pcy_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 120 | pcy_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
120 | pcy_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 121 | pcy_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
121 | pcy_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 122 | pcy_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
122 | pcy_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 123 | pcy_lib.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
123 | pcy_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 124 | pcy_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
124 | pcy_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 125 | pcy_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
125 | pcy_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 126 | pcy_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
126 | pcy_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 127 | pcy_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
127 | pcy_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 128 | pcy_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
128 | pcy_lib.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 129 | pcy_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
129 | pcy_lib.o: ../cryptlib.h pcy_int.h pcy_lib.c | 130 | pcy_lib.o: ../../include/openssl/x509v3.h ../cryptlib.h pcy_int.h pcy_lib.c |
130 | pcy_map.o: ../../e_os.h ../../include/openssl/asn1.h | 131 | pcy_map.o: ../../e_os.h ../../include/openssl/asn1.h |
131 | pcy_map.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 132 | pcy_map.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
132 | pcy_map.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | 133 | pcy_map.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
133 | pcy_map.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 134 | pcy_map.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
134 | pcy_map.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 135 | pcy_map.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
135 | pcy_map.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 136 | pcy_map.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
136 | pcy_map.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 137 | pcy_map.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
137 | pcy_map.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 138 | pcy_map.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
138 | pcy_map.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 139 | pcy_map.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
139 | pcy_map.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 140 | pcy_map.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
140 | pcy_map.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 141 | pcy_map.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
141 | pcy_map.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 142 | pcy_map.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
142 | pcy_map.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 143 | pcy_map.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
143 | pcy_map.o: ../cryptlib.h pcy_int.h pcy_map.c | 144 | pcy_map.o: ../../include/openssl/x509v3.h ../cryptlib.h pcy_int.h pcy_map.c |
144 | pcy_node.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | 145 | pcy_node.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h |
145 | pcy_node.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 146 | pcy_node.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
146 | pcy_node.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 147 | pcy_node.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
147 | pcy_node.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 148 | pcy_node.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
148 | pcy_node.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h | 149 | pcy_node.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h |
149 | pcy_node.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 150 | pcy_node.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
150 | pcy_node.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 151 | pcy_node.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
152 | pcy_node.o: ../../include/openssl/opensslconf.h | ||
151 | pcy_node.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 153 | pcy_node.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
152 | pcy_node.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 154 | pcy_node.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
153 | pcy_node.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 155 | pcy_node.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -160,8 +162,9 @@ pcy_tree.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
160 | pcy_tree.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 162 | pcy_tree.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
161 | pcy_tree.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 163 | pcy_tree.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
162 | pcy_tree.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 164 | pcy_tree.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
163 | pcy_tree.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 165 | pcy_tree.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
164 | pcy_tree.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 166 | pcy_tree.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
167 | pcy_tree.o: ../../include/openssl/opensslconf.h | ||
165 | pcy_tree.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 168 | pcy_tree.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
166 | pcy_tree.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 169 | pcy_tree.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
167 | pcy_tree.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 170 | pcy_tree.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -174,37 +177,39 @@ v3_addr.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | |||
174 | v3_addr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 177 | v3_addr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
175 | v3_addr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 178 | v3_addr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
176 | v3_addr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 179 | v3_addr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
177 | v3_addr.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 180 | v3_addr.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
178 | v3_addr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 181 | v3_addr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
179 | v3_addr.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 182 | v3_addr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
180 | v3_addr.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 183 | v3_addr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
181 | v3_addr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 184 | v3_addr.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
182 | v3_addr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 185 | v3_addr.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
183 | v3_addr.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 186 | v3_addr.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
184 | v3_addr.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_addr.c | 187 | v3_addr.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
188 | v3_addr.o: ../cryptlib.h v3_addr.c | ||
185 | v3_akey.o: ../../e_os.h ../../include/openssl/asn1.h | 189 | v3_akey.o: ../../e_os.h ../../include/openssl/asn1.h |
186 | v3_akey.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 190 | v3_akey.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
187 | v3_akey.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 191 | v3_akey.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
188 | v3_akey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 192 | v3_akey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
189 | v3_akey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 193 | v3_akey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
190 | v3_akey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 194 | v3_akey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
191 | v3_akey.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 195 | v3_akey.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
192 | v3_akey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 196 | v3_akey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
193 | v3_akey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 197 | v3_akey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
194 | v3_akey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 198 | v3_akey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
195 | v3_akey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 199 | v3_akey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
196 | v3_akey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 200 | v3_akey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
197 | v3_akey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 201 | v3_akey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
198 | v3_akey.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_akey.c | 202 | v3_akey.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
203 | v3_akey.o: ../cryptlib.h v3_akey.c | ||
199 | v3_akeya.o: ../../e_os.h ../../include/openssl/asn1.h | 204 | v3_akeya.o: ../../e_os.h ../../include/openssl/asn1.h |
200 | v3_akeya.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 205 | v3_akeya.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
201 | v3_akeya.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 206 | v3_akeya.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
202 | v3_akeya.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 207 | v3_akeya.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
203 | v3_akeya.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 208 | v3_akeya.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
204 | v3_akeya.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 209 | v3_akeya.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
205 | v3_akeya.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 210 | v3_akeya.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
206 | v3_akeya.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 211 | v3_akeya.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
207 | v3_akeya.o: ../../include/openssl/opensslconf.h | 212 | v3_akeya.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
208 | v3_akeya.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 213 | v3_akeya.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
209 | v3_akeya.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 214 | v3_akeya.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
210 | v3_akeya.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 215 | v3_akeya.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -216,14 +221,15 @@ v3_alt.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | |||
216 | v3_alt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 221 | v3_alt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
217 | v3_alt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 222 | v3_alt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
218 | v3_alt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 223 | v3_alt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
219 | v3_alt.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 224 | v3_alt.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
220 | v3_alt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 225 | v3_alt.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
221 | v3_alt.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 226 | v3_alt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
222 | v3_alt.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 227 | v3_alt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
223 | v3_alt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 228 | v3_alt.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
224 | v3_alt.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 229 | v3_alt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
225 | v3_alt.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 230 | v3_alt.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
226 | v3_alt.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_alt.c | 231 | v3_alt.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
232 | v3_alt.o: ../cryptlib.h v3_alt.c | ||
227 | v3_asid.o: ../../e_os.h ../../include/openssl/asn1.h | 233 | v3_asid.o: ../../e_os.h ../../include/openssl/asn1.h |
228 | v3_asid.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 234 | v3_asid.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
229 | v3_asid.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | 235 | v3_asid.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h |
@@ -231,23 +237,23 @@ v3_asid.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
231 | v3_asid.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 237 | v3_asid.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
232 | v3_asid.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 238 | v3_asid.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
233 | v3_asid.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 239 | v3_asid.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
234 | v3_asid.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 240 | v3_asid.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
235 | v3_asid.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 241 | v3_asid.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
236 | v3_asid.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 242 | v3_asid.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
237 | v3_asid.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 243 | v3_asid.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
238 | v3_asid.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 244 | v3_asid.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
239 | v3_asid.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 245 | v3_asid.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
240 | v3_asid.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 246 | v3_asid.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
241 | v3_asid.o: ../cryptlib.h v3_asid.c | 247 | v3_asid.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_asid.c |
242 | v3_bcons.o: ../../e_os.h ../../include/openssl/asn1.h | 248 | v3_bcons.o: ../../e_os.h ../../include/openssl/asn1.h |
243 | v3_bcons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 249 | v3_bcons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
244 | v3_bcons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 250 | v3_bcons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
245 | v3_bcons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 251 | v3_bcons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
246 | v3_bcons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 252 | v3_bcons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
247 | v3_bcons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 253 | v3_bcons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
248 | v3_bcons.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 254 | v3_bcons.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
249 | v3_bcons.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 255 | v3_bcons.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
250 | v3_bcons.o: ../../include/openssl/opensslconf.h | 256 | v3_bcons.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
251 | v3_bcons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 257 | v3_bcons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
252 | v3_bcons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 258 | v3_bcons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
253 | v3_bcons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 259 | v3_bcons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -260,8 +266,9 @@ v3_bitst.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
260 | v3_bitst.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 266 | v3_bitst.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
261 | v3_bitst.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 267 | v3_bitst.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
262 | v3_bitst.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 268 | v3_bitst.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
263 | v3_bitst.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 269 | v3_bitst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
264 | v3_bitst.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 270 | v3_bitst.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
271 | v3_bitst.o: ../../include/openssl/opensslconf.h | ||
265 | v3_bitst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 272 | v3_bitst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
266 | v3_bitst.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 273 | v3_bitst.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
267 | v3_bitst.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 274 | v3_bitst.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -274,23 +281,23 @@ v3_conf.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
274 | v3_conf.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 281 | v3_conf.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
275 | v3_conf.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 282 | v3_conf.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
276 | v3_conf.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 283 | v3_conf.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
277 | v3_conf.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 284 | v3_conf.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
278 | v3_conf.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 285 | v3_conf.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
279 | v3_conf.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 286 | v3_conf.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
280 | v3_conf.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 287 | v3_conf.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
281 | v3_conf.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 288 | v3_conf.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
282 | v3_conf.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 289 | v3_conf.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
283 | v3_conf.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 290 | v3_conf.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
284 | v3_conf.o: ../cryptlib.h v3_conf.c | 291 | v3_conf.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_conf.c |
285 | v3_cpols.o: ../../e_os.h ../../include/openssl/asn1.h | 292 | v3_cpols.o: ../../e_os.h ../../include/openssl/asn1.h |
286 | v3_cpols.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 293 | v3_cpols.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
287 | v3_cpols.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 294 | v3_cpols.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
288 | v3_cpols.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 295 | v3_cpols.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
289 | v3_cpols.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 296 | v3_cpols.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
290 | v3_cpols.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 297 | v3_cpols.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
291 | v3_cpols.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 298 | v3_cpols.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
292 | v3_cpols.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 299 | v3_cpols.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
293 | v3_cpols.o: ../../include/openssl/opensslconf.h | 300 | v3_cpols.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
294 | v3_cpols.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 301 | v3_cpols.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
295 | v3_cpols.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 302 | v3_cpols.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
296 | v3_cpols.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 303 | v3_cpols.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -303,37 +310,38 @@ v3_crld.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | |||
303 | v3_crld.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 310 | v3_crld.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
304 | v3_crld.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 311 | v3_crld.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
305 | v3_crld.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 312 | v3_crld.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
306 | v3_crld.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 313 | v3_crld.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
307 | v3_crld.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 314 | v3_crld.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
308 | v3_crld.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 315 | v3_crld.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
309 | v3_crld.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 316 | v3_crld.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
310 | v3_crld.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 317 | v3_crld.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
311 | v3_crld.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 318 | v3_crld.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
312 | v3_crld.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 319 | v3_crld.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
313 | v3_crld.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_crld.c | 320 | v3_crld.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
321 | v3_crld.o: ../cryptlib.h v3_crld.c | ||
314 | v3_enum.o: ../../e_os.h ../../include/openssl/asn1.h | 322 | v3_enum.o: ../../e_os.h ../../include/openssl/asn1.h |
315 | v3_enum.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 323 | v3_enum.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
316 | v3_enum.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | 324 | v3_enum.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
317 | v3_enum.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 325 | v3_enum.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
318 | v3_enum.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 326 | v3_enum.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
319 | v3_enum.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 327 | v3_enum.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
320 | v3_enum.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 328 | v3_enum.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
321 | v3_enum.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 329 | v3_enum.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
322 | v3_enum.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 330 | v3_enum.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
323 | v3_enum.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 331 | v3_enum.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
324 | v3_enum.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 332 | v3_enum.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
325 | v3_enum.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 333 | v3_enum.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
326 | v3_enum.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 334 | v3_enum.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
327 | v3_enum.o: ../cryptlib.h v3_enum.c | 335 | v3_enum.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_enum.c |
328 | v3_extku.o: ../../e_os.h ../../include/openssl/asn1.h | 336 | v3_extku.o: ../../e_os.h ../../include/openssl/asn1.h |
329 | v3_extku.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 337 | v3_extku.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
330 | v3_extku.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 338 | v3_extku.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
331 | v3_extku.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 339 | v3_extku.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
332 | v3_extku.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 340 | v3_extku.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
333 | v3_extku.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 341 | v3_extku.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
334 | v3_extku.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 342 | v3_extku.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
335 | v3_extku.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 343 | v3_extku.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
336 | v3_extku.o: ../../include/openssl/opensslconf.h | 344 | v3_extku.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
337 | v3_extku.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 345 | v3_extku.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
338 | v3_extku.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 346 | v3_extku.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
339 | v3_extku.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 347 | v3_extku.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -346,76 +354,81 @@ v3_genn.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | |||
346 | v3_genn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 354 | v3_genn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
347 | v3_genn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 355 | v3_genn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
348 | v3_genn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 356 | v3_genn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
349 | v3_genn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 357 | v3_genn.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
350 | v3_genn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 358 | v3_genn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
351 | v3_genn.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 359 | v3_genn.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
352 | v3_genn.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 360 | v3_genn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
353 | v3_genn.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 361 | v3_genn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
354 | v3_genn.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 362 | v3_genn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
355 | v3_genn.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 363 | v3_genn.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
356 | v3_genn.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_genn.c | 364 | v3_genn.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
365 | v3_genn.o: ../cryptlib.h v3_genn.c | ||
357 | v3_ia5.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 366 | v3_ia5.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
358 | v3_ia5.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 367 | v3_ia5.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
359 | v3_ia5.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 368 | v3_ia5.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
360 | v3_ia5.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 369 | v3_ia5.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
361 | v3_ia5.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 370 | v3_ia5.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
362 | v3_ia5.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 371 | v3_ia5.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
363 | v3_ia5.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 372 | v3_ia5.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
364 | v3_ia5.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 373 | v3_ia5.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
365 | v3_ia5.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 374 | v3_ia5.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
366 | v3_ia5.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 375 | v3_ia5.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
367 | v3_ia5.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 376 | v3_ia5.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
368 | v3_ia5.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 377 | v3_ia5.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
369 | v3_ia5.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_ia5.c | 378 | v3_ia5.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
379 | v3_ia5.o: ../cryptlib.h v3_ia5.c | ||
370 | v3_info.o: ../../e_os.h ../../include/openssl/asn1.h | 380 | v3_info.o: ../../e_os.h ../../include/openssl/asn1.h |
371 | v3_info.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 381 | v3_info.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
372 | v3_info.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 382 | v3_info.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
373 | v3_info.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 383 | v3_info.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
374 | v3_info.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 384 | v3_info.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
375 | v3_info.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 385 | v3_info.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
376 | v3_info.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 386 | v3_info.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
377 | v3_info.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 387 | v3_info.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
378 | v3_info.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 388 | v3_info.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
379 | v3_info.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 389 | v3_info.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
380 | v3_info.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 390 | v3_info.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
381 | v3_info.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 391 | v3_info.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
382 | v3_info.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 392 | v3_info.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
383 | v3_info.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_info.c | 393 | v3_info.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
394 | v3_info.o: ../cryptlib.h v3_info.c | ||
384 | v3_int.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 395 | v3_int.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
385 | v3_int.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 396 | v3_int.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
386 | v3_int.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 397 | v3_int.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
387 | v3_int.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 398 | v3_int.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
388 | v3_int.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 399 | v3_int.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
389 | v3_int.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 400 | v3_int.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
390 | v3_int.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 401 | v3_int.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
391 | v3_int.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 402 | v3_int.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
392 | v3_int.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 403 | v3_int.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
393 | v3_int.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 404 | v3_int.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
394 | v3_int.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 405 | v3_int.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
395 | v3_int.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 406 | v3_int.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
396 | v3_int.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_int.c | 407 | v3_int.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
408 | v3_int.o: ../cryptlib.h v3_int.c | ||
397 | v3_lib.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 409 | v3_lib.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
398 | v3_lib.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 410 | v3_lib.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
399 | v3_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 411 | v3_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
400 | v3_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 412 | v3_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
401 | v3_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 413 | v3_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
402 | v3_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 414 | v3_lib.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
403 | v3_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 415 | v3_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
404 | v3_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 416 | v3_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
405 | v3_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 417 | v3_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
406 | v3_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 418 | v3_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
407 | v3_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 419 | v3_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
408 | v3_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 420 | v3_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
409 | v3_lib.o: ../../include/openssl/x509v3.h ../cryptlib.h ext_dat.h v3_lib.c | 421 | v3_lib.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
422 | v3_lib.o: ../cryptlib.h ext_dat.h v3_lib.c | ||
410 | v3_ncons.o: ../../e_os.h ../../include/openssl/asn1.h | 423 | v3_ncons.o: ../../e_os.h ../../include/openssl/asn1.h |
411 | v3_ncons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 424 | v3_ncons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
412 | v3_ncons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 425 | v3_ncons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
413 | v3_ncons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 426 | v3_ncons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
414 | v3_ncons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 427 | v3_ncons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
415 | v3_ncons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 428 | v3_ncons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
416 | v3_ncons.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 429 | v3_ncons.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
417 | v3_ncons.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 430 | v3_ncons.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
418 | v3_ncons.o: ../../include/openssl/opensslconf.h | 431 | v3_ncons.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
419 | v3_ncons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 432 | v3_ncons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
420 | v3_ncons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 433 | v3_ncons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
421 | v3_ncons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 434 | v3_ncons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -428,49 +441,52 @@ v3_ocsp.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
428 | v3_ocsp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 441 | v3_ocsp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
429 | v3_ocsp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 442 | v3_ocsp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
430 | v3_ocsp.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 443 | v3_ocsp.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
431 | v3_ocsp.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 444 | v3_ocsp.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
432 | v3_ocsp.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h | 445 | v3_ocsp.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
433 | v3_ocsp.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 446 | v3_ocsp.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h |
434 | v3_ocsp.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 447 | v3_ocsp.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
435 | v3_ocsp.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 448 | v3_ocsp.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
436 | v3_ocsp.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 449 | v3_ocsp.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
437 | v3_ocsp.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 450 | v3_ocsp.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
438 | v3_ocsp.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_ocsp.c | 451 | v3_ocsp.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
452 | v3_ocsp.o: ../cryptlib.h v3_ocsp.c | ||
439 | v3_pci.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h | 453 | v3_pci.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h |
440 | v3_pci.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 454 | v3_pci.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
441 | v3_pci.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 455 | v3_pci.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
442 | v3_pci.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 456 | v3_pci.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
443 | v3_pci.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 457 | v3_pci.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
444 | v3_pci.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 458 | v3_pci.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
445 | v3_pci.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 459 | v3_pci.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
446 | v3_pci.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 460 | v3_pci.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
447 | v3_pci.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 461 | v3_pci.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
448 | v3_pci.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 462 | v3_pci.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
449 | v3_pci.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 463 | v3_pci.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
450 | v3_pci.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 464 | v3_pci.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
451 | v3_pci.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_pci.c | 465 | v3_pci.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
466 | v3_pci.o: ../cryptlib.h v3_pci.c | ||
452 | v3_pcia.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h | 467 | v3_pcia.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h |
453 | v3_pcia.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 468 | v3_pcia.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
454 | v3_pcia.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | 469 | v3_pcia.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
455 | v3_pcia.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 470 | v3_pcia.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
456 | v3_pcia.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 471 | v3_pcia.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
457 | v3_pcia.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 472 | v3_pcia.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
458 | v3_pcia.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 473 | v3_pcia.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
459 | v3_pcia.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 474 | v3_pcia.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
460 | v3_pcia.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 475 | v3_pcia.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
461 | v3_pcia.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 476 | v3_pcia.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
462 | v3_pcia.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 477 | v3_pcia.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
463 | v3_pcia.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 478 | v3_pcia.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
464 | v3_pcia.o: ../../include/openssl/x509v3.h v3_pcia.c | 479 | v3_pcia.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
480 | v3_pcia.o: v3_pcia.c | ||
465 | v3_pcons.o: ../../e_os.h ../../include/openssl/asn1.h | 481 | v3_pcons.o: ../../e_os.h ../../include/openssl/asn1.h |
466 | v3_pcons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 482 | v3_pcons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
467 | v3_pcons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 483 | v3_pcons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
468 | v3_pcons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 484 | v3_pcons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
469 | v3_pcons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 485 | v3_pcons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
470 | v3_pcons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 486 | v3_pcons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
471 | v3_pcons.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 487 | v3_pcons.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
472 | v3_pcons.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 488 | v3_pcons.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
473 | v3_pcons.o: ../../include/openssl/opensslconf.h | 489 | v3_pcons.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
474 | v3_pcons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 490 | v3_pcons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
475 | v3_pcons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 491 | v3_pcons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
476 | v3_pcons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 492 | v3_pcons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -483,23 +499,24 @@ v3_pku.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | |||
483 | v3_pku.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 499 | v3_pku.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
484 | v3_pku.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 500 | v3_pku.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
485 | v3_pku.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 501 | v3_pku.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
486 | v3_pku.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 502 | v3_pku.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
487 | v3_pku.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 503 | v3_pku.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
488 | v3_pku.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 504 | v3_pku.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
489 | v3_pku.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 505 | v3_pku.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
490 | v3_pku.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 506 | v3_pku.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
491 | v3_pku.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 507 | v3_pku.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
492 | v3_pku.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 508 | v3_pku.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
493 | v3_pku.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_pku.c | 509 | v3_pku.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
510 | v3_pku.o: ../cryptlib.h v3_pku.c | ||
494 | v3_pmaps.o: ../../e_os.h ../../include/openssl/asn1.h | 511 | v3_pmaps.o: ../../e_os.h ../../include/openssl/asn1.h |
495 | v3_pmaps.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 512 | v3_pmaps.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
496 | v3_pmaps.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 513 | v3_pmaps.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
497 | v3_pmaps.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 514 | v3_pmaps.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
498 | v3_pmaps.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 515 | v3_pmaps.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
499 | v3_pmaps.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 516 | v3_pmaps.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
500 | v3_pmaps.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 517 | v3_pmaps.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
501 | v3_pmaps.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 518 | v3_pmaps.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
502 | v3_pmaps.o: ../../include/openssl/opensslconf.h | 519 | v3_pmaps.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
503 | v3_pmaps.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 520 | v3_pmaps.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
504 | v3_pmaps.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 521 | v3_pmaps.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
505 | v3_pmaps.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 522 | v3_pmaps.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -511,51 +528,52 @@ v3_prn.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | |||
511 | v3_prn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 528 | v3_prn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
512 | v3_prn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 529 | v3_prn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
513 | v3_prn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 530 | v3_prn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
514 | v3_prn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 531 | v3_prn.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
515 | v3_prn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 532 | v3_prn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
516 | v3_prn.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 533 | v3_prn.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
517 | v3_prn.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 534 | v3_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
518 | v3_prn.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 535 | v3_prn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
519 | v3_prn.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 536 | v3_prn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
520 | v3_prn.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 537 | v3_prn.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
521 | v3_prn.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_prn.c | 538 | v3_prn.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
539 | v3_prn.o: ../cryptlib.h v3_prn.c | ||
522 | v3_purp.o: ../../e_os.h ../../include/openssl/asn1.h | 540 | v3_purp.o: ../../e_os.h ../../include/openssl/asn1.h |
523 | v3_purp.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 541 | v3_purp.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
524 | v3_purp.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | 542 | v3_purp.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
525 | v3_purp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 543 | v3_purp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
526 | v3_purp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 544 | v3_purp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
527 | v3_purp.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 545 | v3_purp.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
528 | v3_purp.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 546 | v3_purp.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
529 | v3_purp.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 547 | v3_purp.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
530 | v3_purp.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 548 | v3_purp.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
531 | v3_purp.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 549 | v3_purp.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
532 | v3_purp.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 550 | v3_purp.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
533 | v3_purp.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 551 | v3_purp.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
534 | v3_purp.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 552 | v3_purp.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
535 | v3_purp.o: ../cryptlib.h v3_purp.c | 553 | v3_purp.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_purp.c |
536 | v3_skey.o: ../../e_os.h ../../include/openssl/asn1.h | 554 | v3_skey.o: ../../e_os.h ../../include/openssl/asn1.h |
537 | v3_skey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | 555 | v3_skey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h |
538 | v3_skey.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | 556 | v3_skey.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h |
539 | v3_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 557 | v3_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
540 | v3_skey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 558 | v3_skey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
541 | v3_skey.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 559 | v3_skey.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
542 | v3_skey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 560 | v3_skey.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
543 | v3_skey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 561 | v3_skey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
544 | v3_skey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 562 | v3_skey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
545 | v3_skey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 563 | v3_skey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
546 | v3_skey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 564 | v3_skey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
547 | v3_skey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 565 | v3_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
548 | v3_skey.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 566 | v3_skey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
549 | v3_skey.o: ../cryptlib.h v3_skey.c | 567 | v3_skey.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_skey.c |
550 | v3_sxnet.o: ../../e_os.h ../../include/openssl/asn1.h | 568 | v3_sxnet.o: ../../e_os.h ../../include/openssl/asn1.h |
551 | v3_sxnet.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h | 569 | v3_sxnet.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h |
552 | v3_sxnet.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 570 | v3_sxnet.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
553 | v3_sxnet.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 571 | v3_sxnet.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
554 | v3_sxnet.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 572 | v3_sxnet.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
555 | v3_sxnet.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 573 | v3_sxnet.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
556 | v3_sxnet.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 574 | v3_sxnet.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
557 | v3_sxnet.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 575 | v3_sxnet.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
558 | v3_sxnet.o: ../../include/openssl/opensslconf.h | 576 | v3_sxnet.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
559 | v3_sxnet.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 577 | v3_sxnet.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
560 | v3_sxnet.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 578 | v3_sxnet.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
561 | v3_sxnet.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 579 | v3_sxnet.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
@@ -568,24 +586,25 @@ v3_utl.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | |||
568 | v3_utl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | 586 | v3_utl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
569 | v3_utl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | 587 | v3_utl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
570 | v3_utl.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 588 | v3_utl.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
571 | v3_utl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | 589 | v3_utl.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
572 | v3_utl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h | 590 | v3_utl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
573 | v3_utl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 591 | v3_utl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h |
574 | v3_utl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h | 592 | v3_utl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
575 | v3_utl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 593 | v3_utl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
576 | v3_utl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | 594 | v3_utl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
577 | v3_utl.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h | 595 | v3_utl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h |
578 | v3_utl.o: ../cryptlib.h v3_utl.c | 596 | v3_utl.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_utl.c |
579 | v3err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | 597 | v3err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h |
580 | v3err.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h | 598 | v3err.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h |
581 | v3err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | 599 | v3err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h |
582 | v3err.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | 600 | v3err.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
583 | v3err.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | 601 | v3err.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h |
584 | v3err.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h | 602 | v3err.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
585 | v3err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 603 | v3err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
586 | v3err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | 604 | v3err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h |
587 | v3err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | 605 | v3err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
588 | v3err.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 606 | v3err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h |
589 | v3err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 607 | v3err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
590 | v3err.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | 608 | v3err.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
591 | v3err.o: ../../include/openssl/x509v3.h v3err.c | 609 | v3err.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h |
610 | v3err.o: v3err.c | ||
diff --git a/src/lib/libssl/src/demos/jpake/Makefile b/src/lib/libssl/src/demos/jpake/Makefile new file mode 100644 index 0000000000..09b8f03d0c --- /dev/null +++ b/src/lib/libssl/src/demos/jpake/Makefile | |||
@@ -0,0 +1,7 @@ | |||
1 | LDFLAGS=-L../.. -lcrypto | ||
2 | CFLAGS=-I../../include -Wall -Werror -g | ||
3 | |||
4 | all: jpakedemo | ||
5 | |||
6 | jpakedemo: jpakedemo.o | ||
7 | $(CC) -g -o jpakedemo jpakedemo.o $(LDFLAGS) | ||
diff --git a/src/lib/libssl/src/demos/jpake/jpakedemo.c b/src/lib/libssl/src/demos/jpake/jpakedemo.c new file mode 100644 index 0000000000..338a8810d9 --- /dev/null +++ b/src/lib/libssl/src/demos/jpake/jpakedemo.c | |||
@@ -0,0 +1,469 @@ | |||
1 | #include "openssl/bn.h" | ||
2 | #include "openssl/sha.h" | ||
3 | #include <assert.h> | ||
4 | #include <string.h> | ||
5 | #include <stdlib.h> | ||
6 | |||
7 | /* Copyright (C) 2008 Ben Laurie (ben@links.org) */ | ||
8 | |||
9 | /* | ||
10 | * Implement J-PAKE, as described in | ||
11 | * http://grouper.ieee.org/groups/1363/Research/contributions/hao-ryan-2008.pdf | ||
12 | * | ||
13 | * With hints from http://www.cl.cam.ac.uk/~fh240/software/JPAKE2.java. | ||
14 | */ | ||
15 | |||
16 | static void showbn(const char *name, const BIGNUM *bn) | ||
17 | { | ||
18 | fputs(name, stdout); | ||
19 | fputs(" = ", stdout); | ||
20 | BN_print_fp(stdout, bn); | ||
21 | putc('\n', stdout); | ||
22 | } | ||
23 | |||
24 | typedef struct | ||
25 | { | ||
26 | BN_CTX *ctx; // Perhaps not the best place for this? | ||
27 | BIGNUM *p; | ||
28 | BIGNUM *q; | ||
29 | BIGNUM *g; | ||
30 | } JPakeParameters; | ||
31 | |||
32 | static void JPakeParametersInit(JPakeParameters *params) | ||
33 | { | ||
34 | params->ctx = BN_CTX_new(); | ||
35 | |||
36 | // For now use p, q, g from Java sample code. Later, generate them. | ||
37 | params->p = NULL; | ||
38 | BN_hex2bn(¶ms->p, "fd7f53811d75122952df4a9c2eece4e7f611b7523cef4400c31e3f80b6512669455d402251fb593d8d58fabfc5f5ba30f6cb9b556cd7813b801d346ff26660b76b9950a5a49f9fe8047b1022c24fbba9d7feb7c61bf83b57e7c6a8a6150f04fb83f6d3c51ec3023554135a169132f675f3ae2b61d72aeff22203199dd14801c7"); | ||
39 | params->q = NULL; | ||
40 | BN_hex2bn(¶ms->q, "9760508f15230bccb292b982a2eb840bf0581cf5"); | ||
41 | params->g = NULL; | ||
42 | BN_hex2bn(¶ms->g, "f7e1a085d69b3ddecbbcab5c36b857b97994afbbfa3aea82f9574c0b3d0782675159578ebad4594fe67107108180b449167123e84c281613b7cf09328cc8a6e13c167a8b547c8d28e0a3ae1e2bb3a675916ea37f0bfa213562f1fb627a01243bcca4f1bea8519089a883dfe15ae59f06928b665e807b552564014c3bfecf492a"); | ||
43 | |||
44 | showbn("p", params->p); | ||
45 | showbn("q", params->q); | ||
46 | showbn("g", params->g); | ||
47 | } | ||
48 | |||
49 | typedef struct | ||
50 | { | ||
51 | BIGNUM *gr; // g^r (r random) | ||
52 | BIGNUM *b; // b = r - x*h, h=hash(g, g^r, g^x, name) | ||
53 | } JPakeZKP; | ||
54 | |||
55 | typedef struct | ||
56 | { | ||
57 | BIGNUM *gx; // g^x | ||
58 | JPakeZKP zkpx; // ZKP(x) | ||
59 | } JPakeStep1; | ||
60 | |||
61 | typedef struct | ||
62 | { | ||
63 | BIGNUM *X; // g^(xa + xc + xd) * xb * s | ||
64 | JPakeZKP zkpxbs; // ZKP(xb * s) | ||
65 | } JPakeStep2; | ||
66 | |||
67 | typedef struct | ||
68 | { | ||
69 | const char *name; // Must be unique | ||
70 | int base; // 1 for Alice, 3 for Bob. Only used for printing stuff. | ||
71 | JPakeStep1 s1c; // Alice's g^x3, ZKP(x3) or Bob's g^x1, ZKP(x1) | ||
72 | JPakeStep1 s1d; // Alice's g^x4, ZKP(x4) or Bob's g^x2, ZKP(x2) | ||
73 | JPakeStep2 s2; // Alice's A, ZKP(x2 * s) or Bob's B, ZKP(x4 * s) | ||
74 | } JPakeUserPublic; | ||
75 | |||
76 | /* | ||
77 | * The user structure. In the definition, (xa, xb, xc, xd) are Alice's | ||
78 | * (x1, x2, x3, x4) or Bob's (x3, x4, x1, x2). If you see what I mean. | ||
79 | */ | ||
80 | typedef struct | ||
81 | { | ||
82 | JPakeUserPublic p; | ||
83 | BIGNUM *secret; // The shared secret | ||
84 | BIGNUM *key; // The calculated (shared) key | ||
85 | BIGNUM *xa; // Alice's x1 or Bob's x3 | ||
86 | BIGNUM *xb; // Alice's x2 or Bob's x4 | ||
87 | } JPakeUser; | ||
88 | |||
89 | // Generate each party's random numbers. xa is in [0, q), xb is in [1, q). | ||
90 | static void genrand(JPakeUser *user, const JPakeParameters *params) | ||
91 | { | ||
92 | BIGNUM *qm1; | ||
93 | |||
94 | // xa in [0, q) | ||
95 | user->xa = BN_new(); | ||
96 | BN_rand_range(user->xa, params->q); | ||
97 | |||
98 | // q-1 | ||
99 | qm1 = BN_new(); | ||
100 | BN_copy(qm1, params->q); | ||
101 | BN_sub_word(qm1, 1); | ||
102 | |||
103 | // ... and xb in [0, q-1) | ||
104 | user->xb = BN_new(); | ||
105 | BN_rand_range(user->xb, qm1); | ||
106 | // [1, q) | ||
107 | BN_add_word(user->xb, 1); | ||
108 | |||
109 | // cleanup | ||
110 | BN_free(qm1); | ||
111 | |||
112 | // Show | ||
113 | printf("x%d", user->p.base); | ||
114 | showbn("", user->xa); | ||
115 | printf("x%d", user->p.base+1); | ||
116 | showbn("", user->xb); | ||
117 | } | ||
118 | |||
119 | static void hashlength(SHA_CTX *sha, size_t l) | ||
120 | { | ||
121 | unsigned char b[2]; | ||
122 | |||
123 | assert(l <= 0xffff); | ||
124 | b[0] = l >> 8; | ||
125 | b[1] = l&0xff; | ||
126 | SHA1_Update(sha, b, 2); | ||
127 | } | ||
128 | |||
129 | static void hashstring(SHA_CTX *sha, const char *string) | ||
130 | { | ||
131 | size_t l = strlen(string); | ||
132 | |||
133 | hashlength(sha, l); | ||
134 | SHA1_Update(sha, string, l); | ||
135 | } | ||
136 | |||
137 | static void hashbn(SHA_CTX *sha, const BIGNUM *bn) | ||
138 | { | ||
139 | size_t l = BN_num_bytes(bn); | ||
140 | unsigned char *bin = alloca(l); | ||
141 | |||
142 | hashlength(sha, l); | ||
143 | BN_bn2bin(bn, bin); | ||
144 | SHA1_Update(sha, bin, l); | ||
145 | } | ||
146 | |||
147 | // h=hash(g, g^r, g^x, name) | ||
148 | static void zkpHash(BIGNUM *h, const JPakeZKP *zkp, const BIGNUM *gx, | ||
149 | const JPakeUserPublic *from, const JPakeParameters *params) | ||
150 | { | ||
151 | unsigned char md[SHA_DIGEST_LENGTH]; | ||
152 | SHA_CTX sha; | ||
153 | |||
154 | // XXX: hash should not allow moving of the boundaries - Java code | ||
155 | // is flawed in this respect. Length encoding seems simplest. | ||
156 | SHA1_Init(&sha); | ||
157 | hashbn(&sha, params->g); | ||
158 | hashbn(&sha, zkp->gr); | ||
159 | hashbn(&sha, gx); | ||
160 | hashstring(&sha, from->name); | ||
161 | SHA1_Final(md, &sha); | ||
162 | BN_bin2bn(md, SHA_DIGEST_LENGTH, h); | ||
163 | } | ||
164 | |||
165 | // Prove knowledge of x | ||
166 | // Note that we don't send g^x because, as it happens, we've always | ||
167 | // sent it elsewhere. Also note that because of that, we could avoid | ||
168 | // calculating it here, but we don't, for clarity... | ||
169 | static void CreateZKP(JPakeZKP *zkp, const BIGNUM *x, const JPakeUser *us, | ||
170 | const BIGNUM *zkpg, const JPakeParameters *params, | ||
171 | int n, const char *suffix) | ||
172 | { | ||
173 | BIGNUM *r = BN_new(); | ||
174 | BIGNUM *gx = BN_new(); | ||
175 | BIGNUM *h = BN_new(); | ||
176 | BIGNUM *t = BN_new(); | ||
177 | |||
178 | // r in [0,q) | ||
179 | // XXX: Java chooses r in [0, 2^160) - i.e. distribution not uniform | ||
180 | BN_rand_range(r, params->q); | ||
181 | // g^r | ||
182 | zkp->gr = BN_new(); | ||
183 | BN_mod_exp(zkp->gr, zkpg, r, params->p, params->ctx); | ||
184 | // g^x | ||
185 | BN_mod_exp(gx, zkpg, x, params->p, params->ctx); | ||
186 | |||
187 | // h=hash... | ||
188 | zkpHash(h, zkp, gx, &us->p, params); | ||
189 | |||
190 | // b = r - x*h | ||
191 | BN_mod_mul(t, x, h, params->q, params->ctx); | ||
192 | zkp->b = BN_new(); | ||
193 | BN_mod_sub(zkp->b, r, t, params->q, params->ctx); | ||
194 | |||
195 | // show | ||
196 | printf(" ZKP(x%d%s)\n", n, suffix); | ||
197 | showbn(" zkpg", zkpg); | ||
198 | showbn(" g^x", gx); | ||
199 | showbn(" g^r", zkp->gr); | ||
200 | showbn(" b", zkp->b); | ||
201 | |||
202 | // cleanup | ||
203 | BN_free(t); | ||
204 | BN_free(h); | ||
205 | BN_free(gx); | ||
206 | BN_free(r); | ||
207 | } | ||
208 | |||
209 | static int VerifyZKP(const JPakeZKP *zkp, BIGNUM *gx, | ||
210 | const JPakeUserPublic *them, const BIGNUM *zkpg, | ||
211 | const JPakeParameters *params, int n, const char *suffix) | ||
212 | { | ||
213 | BIGNUM *h = BN_new(); | ||
214 | BIGNUM *t1 = BN_new(); | ||
215 | BIGNUM *t2 = BN_new(); | ||
216 | BIGNUM *t3 = BN_new(); | ||
217 | int ret = 0; | ||
218 | |||
219 | zkpHash(h, zkp, gx, them, params); | ||
220 | |||
221 | // t1 = g^b | ||
222 | BN_mod_exp(t1, zkpg, zkp->b, params->p, params->ctx); | ||
223 | // t2 = (g^x)^h = g^{hx} | ||
224 | BN_mod_exp(t2, gx, h, params->p, params->ctx); | ||
225 | // t3 = t1 * t2 = g^{hx} * g^b = g^{hx+b} = g^r (allegedly) | ||
226 | BN_mod_mul(t3, t1, t2, params->p, params->ctx); | ||
227 | |||
228 | printf(" ZKP(x%d%s)\n", n, suffix); | ||
229 | showbn(" zkpg", zkpg); | ||
230 | showbn(" g^r'", t3); | ||
231 | |||
232 | // verify t3 == g^r | ||
233 | if(BN_cmp(t3, zkp->gr) == 0) | ||
234 | ret = 1; | ||
235 | |||
236 | // cleanup | ||
237 | BN_free(t3); | ||
238 | BN_free(t2); | ||
239 | BN_free(t1); | ||
240 | BN_free(h); | ||
241 | |||
242 | if(ret) | ||
243 | puts(" OK"); | ||
244 | else | ||
245 | puts(" FAIL"); | ||
246 | |||
247 | return ret; | ||
248 | } | ||
249 | |||
250 | static void sendstep1_substep(JPakeStep1 *s1, const BIGNUM *x, | ||
251 | const JPakeUser *us, | ||
252 | const JPakeParameters *params, int n) | ||
253 | { | ||
254 | s1->gx = BN_new(); | ||
255 | BN_mod_exp(s1->gx, params->g, x, params->p, params->ctx); | ||
256 | printf(" g^{x%d}", n); | ||
257 | showbn("", s1->gx); | ||
258 | |||
259 | CreateZKP(&s1->zkpx, x, us, params->g, params, n, ""); | ||
260 | } | ||
261 | |||
262 | static void sendstep1(const JPakeUser *us, JPakeUserPublic *them, | ||
263 | const JPakeParameters *params) | ||
264 | { | ||
265 | printf("\n%s sends %s:\n\n", us->p.name, them->name); | ||
266 | |||
267 | // from's g^xa (which becomes to's g^xc) and ZKP(xa) | ||
268 | sendstep1_substep(&them->s1c, us->xa, us, params, us->p.base); | ||
269 | // from's g^xb (which becomes to's g^xd) and ZKP(xb) | ||
270 | sendstep1_substep(&them->s1d, us->xb, us, params, us->p.base+1); | ||
271 | } | ||
272 | |||
273 | static int verifystep1(const JPakeUser *us, const JPakeUserPublic *them, | ||
274 | const JPakeParameters *params) | ||
275 | { | ||
276 | printf("\n%s verifies %s:\n\n", us->p.name, them->name); | ||
277 | |||
278 | // verify their ZKP(xc) | ||
279 | if(!VerifyZKP(&us->p.s1c.zkpx, us->p.s1c.gx, them, params->g, params, | ||
280 | them->base, "")) | ||
281 | return 0; | ||
282 | |||
283 | // verify their ZKP(xd) | ||
284 | if(!VerifyZKP(&us->p.s1d.zkpx, us->p.s1d.gx, them, params->g, params, | ||
285 | them->base+1, "")) | ||
286 | return 0; | ||
287 | |||
288 | // g^xd != 1 | ||
289 | printf(" g^{x%d} != 1: ", them->base+1); | ||
290 | if(BN_is_one(us->p.s1d.gx)) | ||
291 | { | ||
292 | puts("FAIL"); | ||
293 | return 0; | ||
294 | } | ||
295 | puts("OK"); | ||
296 | |||
297 | return 1; | ||
298 | } | ||
299 | |||
300 | static void sendstep2(const JPakeUser *us, JPakeUserPublic *them, | ||
301 | const JPakeParameters *params) | ||
302 | { | ||
303 | BIGNUM *t1 = BN_new(); | ||
304 | BIGNUM *t2 = BN_new(); | ||
305 | |||
306 | printf("\n%s sends %s:\n\n", us->p.name, them->name); | ||
307 | |||
308 | // X = g^{(xa + xc + xd) * xb * s} | ||
309 | // t1 = g^xa | ||
310 | BN_mod_exp(t1, params->g, us->xa, params->p, params->ctx); | ||
311 | // t2 = t1 * g^{xc} = g^{xa} * g^{xc} = g^{xa + xc} | ||
312 | BN_mod_mul(t2, t1, us->p.s1c.gx, params->p, params->ctx); | ||
313 | // t1 = t2 * g^{xd} = g^{xa + xc + xd} | ||
314 | BN_mod_mul(t1, t2, us->p.s1d.gx, params->p, params->ctx); | ||
315 | // t2 = xb * s | ||
316 | BN_mod_mul(t2, us->xb, us->secret, params->q, params->ctx); | ||
317 | // X = t1^{t2} = t1^{xb * s} = g^{(xa + xc + xd) * xb * s} | ||
318 | them->s2.X = BN_new(); | ||
319 | BN_mod_exp(them->s2.X, t1, t2, params->p, params->ctx); | ||
320 | |||
321 | // Show | ||
322 | printf(" g^{(x%d + x%d + x%d) * x%d * s)", us->p.base, them->base, | ||
323 | them->base+1, us->p.base+1); | ||
324 | showbn("", them->s2.X); | ||
325 | |||
326 | // ZKP(xb * s) | ||
327 | // XXX: this is kinda funky, because we're using | ||
328 | // | ||
329 | // g' = g^{xa + xc + xd} | ||
330 | // | ||
331 | // as the generator, which means X is g'^{xb * s} | ||
332 | CreateZKP(&them->s2.zkpxbs, t2, us, t1, params, us->p.base+1, " * s"); | ||
333 | |||
334 | // cleanup | ||
335 | BN_free(t1); | ||
336 | BN_free(t2); | ||
337 | } | ||
338 | |||
339 | static int verifystep2(const JPakeUser *us, const JPakeUserPublic *them, | ||
340 | const JPakeParameters *params) | ||
341 | { | ||
342 | BIGNUM *t1 = BN_new(); | ||
343 | BIGNUM *t2 = BN_new(); | ||
344 | int ret = 0; | ||
345 | |||
346 | printf("\n%s verifies %s:\n\n", us->p.name, them->name); | ||
347 | |||
348 | // g' = g^{xc + xa + xb} [from our POV] | ||
349 | // t1 = xa + xb | ||
350 | BN_mod_add(t1, us->xa, us->xb, params->q, params->ctx); | ||
351 | // t2 = g^{t1} = g^{xa+xb} | ||
352 | BN_mod_exp(t2, params->g, t1, params->p, params->ctx); | ||
353 | // t1 = g^{xc} * t2 = g^{xc + xa + xb} | ||
354 | BN_mod_mul(t1, us->p.s1c.gx, t2, params->p, params->ctx); | ||
355 | |||
356 | if(VerifyZKP(&us->p.s2.zkpxbs, us->p.s2.X, them, t1, params, them->base+1, | ||
357 | " * s")) | ||
358 | ret = 1; | ||
359 | |||
360 | // cleanup | ||
361 | BN_free(t2); | ||
362 | BN_free(t1); | ||
363 | |||
364 | return ret; | ||
365 | } | ||
366 | |||
367 | static void computekey(JPakeUser *us, const JPakeParameters *params) | ||
368 | { | ||
369 | BIGNUM *t1 = BN_new(); | ||
370 | BIGNUM *t2 = BN_new(); | ||
371 | BIGNUM *t3 = BN_new(); | ||
372 | |||
373 | printf("\n%s calculates the shared key:\n\n", us->p.name); | ||
374 | |||
375 | // K = (X/g^{xb * xd * s})^{xb} | ||
376 | // = (g^{(xc + xa + xb) * xd * s - xb * xd *s})^{xb} | ||
377 | // = (g^{(xa + xc) * xd * s})^{xb} | ||
378 | // = g^{(xa + xc) * xb * xd * s} | ||
379 | // [which is the same regardless of who calculates it] | ||
380 | |||
381 | // t1 = (g^{xd})^{xb} = g^{xb * xd} | ||
382 | BN_mod_exp(t1, us->p.s1d.gx, us->xb, params->p, params->ctx); | ||
383 | // t2 = -s = q-s | ||
384 | BN_sub(t2, params->q, us->secret); | ||
385 | // t3 = t1^t2 = g^{-xb * xd * s} | ||
386 | BN_mod_exp(t3, t1, t2, params->p, params->ctx); | ||
387 | // t1 = X * t3 = X/g^{xb * xd * s} | ||
388 | BN_mod_mul(t1, us->p.s2.X, t3, params->p, params->ctx); | ||
389 | // K = t1^{xb} | ||
390 | us->key = BN_new(); | ||
391 | BN_mod_exp(us->key, t1, us->xb, params->p, params->ctx); | ||
392 | |||
393 | // show | ||
394 | showbn(" K", us->key); | ||
395 | |||
396 | // cleanup | ||
397 | BN_free(t3); | ||
398 | BN_free(t2); | ||
399 | BN_free(t1); | ||
400 | } | ||
401 | |||
402 | int main(int argc, char **argv) | ||
403 | { | ||
404 | JPakeParameters params; | ||
405 | JPakeUser alice, bob; | ||
406 | |||
407 | alice.p.name = "Alice"; | ||
408 | alice.p.base = 1; | ||
409 | bob.p.name = "Bob"; | ||
410 | bob.p.base = 3; | ||
411 | |||
412 | JPakeParametersInit(¶ms); | ||
413 | |||
414 | // Shared secret | ||
415 | alice.secret = BN_new(); | ||
416 | BN_rand(alice.secret, 32, -1, 0); | ||
417 | bob.secret = alice.secret; | ||
418 | showbn("secret", alice.secret); | ||
419 | |||
420 | assert(BN_cmp(alice.secret, params.q) < 0); | ||
421 | |||
422 | // Alice's x1, x2 | ||
423 | genrand(&alice, ¶ms); | ||
424 | |||
425 | // Bob's x3, x4 | ||
426 | genrand(&bob, ¶ms); | ||
427 | |||
428 | // Now send stuff to each other... | ||
429 | sendstep1(&alice, &bob.p, ¶ms); | ||
430 | sendstep1(&bob, &alice.p, ¶ms); | ||
431 | |||
432 | // And verify what each other sent | ||
433 | if(!verifystep1(&alice, &bob.p, ¶ms)) | ||
434 | return 1; | ||
435 | if(!verifystep1(&bob, &alice.p, ¶ms)) | ||
436 | return 2; | ||
437 | |||
438 | // Second send | ||
439 | sendstep2(&alice, &bob.p, ¶ms); | ||
440 | sendstep2(&bob, &alice.p, ¶ms); | ||
441 | |||
442 | // And second verify | ||
443 | if(!verifystep2(&alice, &bob.p, ¶ms)) | ||
444 | return 3; | ||
445 | if(!verifystep2(&bob, &alice.p, ¶ms)) | ||
446 | return 4; | ||
447 | |||
448 | // Compute common key | ||
449 | computekey(&alice, ¶ms); | ||
450 | computekey(&bob, ¶ms); | ||
451 | |||
452 | // Confirm the common key is identical | ||
453 | // XXX: if the two secrets are not the same, everything works up | ||
454 | // to this point, so the only way to detect a failure is by the | ||
455 | // difference in the calculated keys. | ||
456 | // Since we're all the same code, just compare them directly. In a | ||
457 | // real system, Alice sends Bob H(H(K)), Bob checks it, then sends | ||
458 | // back H(K), which Alice checks, or something equivalent. | ||
459 | puts("\nAlice and Bob check keys are the same:"); | ||
460 | if(BN_cmp(alice.key, bob.key) == 0) | ||
461 | puts(" OK"); | ||
462 | else | ||
463 | { | ||
464 | puts(" FAIL"); | ||
465 | return 5; | ||
466 | } | ||
467 | |||
468 | return 0; | ||
469 | } | ||
diff --git a/src/lib/libssl/src/fips/Makefile b/src/lib/libssl/src/fips/Makefile index 63e4cf82be..d6dcb79a28 100644 --- a/src/lib/libssl/src/fips/Makefile +++ b/src/lib/libssl/src/fips/Makefile | |||
@@ -1,199 +1,219 @@ | |||
1 | # | 1 | # |
2 | # SSLeay/fips/Makefile | 2 | # OpenSSL/crypto/Makefile |
3 | # | 3 | # |
4 | 4 | ||
5 | DIR= fips | 5 | DIR= fips |
6 | TOP= .. | 6 | TOP= .. |
7 | CC= cc | 7 | CC= cc |
8 | INCLUDE= -I. -I$(TOP) -I../include | 8 | INCLUDE= -I. -I$(TOP) -I../include |
9 | # INCLUDES targets sudbirs! | ||
9 | INCLUDES= -I.. -I../.. -I../../include | 10 | INCLUDES= -I.. -I../.. -I../../include |
10 | CFLAG= -g | 11 | CFLAG= -g |
11 | INSTALL_PREFIX= | ||
12 | OPENSSLDIR= /usr/local/ssl | ||
13 | INSTALLTOP= /usr/local/ssl | ||
14 | MAKEDEPPROG= makedepend | 12 | MAKEDEPPROG= makedepend |
15 | MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) | 13 | MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) |
16 | MAKEFILE= Makefile | 14 | MAKEFILE= Makefile |
17 | RM= rm -f | 15 | RM= rm -f |
18 | AR= ar r | 16 | AR= ar r |
17 | ARD= ar d | ||
18 | TEST= fips_test_suite.c | ||
19 | FIPS_TVDIR= testvectors | ||
20 | FIPS_TVOK= $$HOME/fips/tv.ok | ||
19 | 21 | ||
20 | PEX_LIBS= | 22 | FIPSCANLOC= $(FIPSLIBDIR)fipscanister.o |
21 | EX_LIBS= | ||
22 | 23 | ||
23 | CFLAGS= $(INCLUDE) $(CFLAG) | 24 | RECURSIVE_MAKE= [ -n "$(FDIRS)" ] && for i in $(FDIRS) ; do \ |
25 | (cd $$i && echo "making $$target in $(DIR)/$$i..." && \ | ||
26 | $(MAKE) -e TOP=../.. DIR=$$i INCLUDES='${INCLUDES}' $$target ) || exit 1; \ | ||
27 | done; | ||
24 | 28 | ||
29 | PEX_LIBS= | ||
30 | EX_LIBS= | ||
31 | |||
32 | CFLAGS= $(INCLUDE) $(CFLAG) -DHMAC_EXT=\"$${HMAC_EXT:-sha1}\" | ||
33 | ASFLAGS= $(INCLUDE) $(ASFLAG) | ||
34 | AFLAGS=$(ASFLAGS) | ||
25 | 35 | ||
26 | LIBS= | 36 | LIBS= |
27 | 37 | ||
28 | FDIRS=sha1 rand des aes dsa rsa dh | 38 | FDIRS=sha rand des aes dsa rsa dh hmac |
29 | 39 | ||
30 | GENERAL=Makefile README fips-lib.com install.com | 40 | GENERAL=Makefile README fips-lib.com install.com |
31 | 41 | ||
32 | LIB= $(TOP)/libcrypto.a | 42 | LIB= $(TOP)/libcrypto.a |
33 | SHARED_LIB= libcrypto$(SHLIB_EXT) | 43 | SHARED_LIB= $(FIPSCANLIB)$(SHLIB_EXT) |
34 | LIBSRC=fips.c fips_err_wrapper.c | 44 | LIBSRC=fips.c |
35 | LIBOBJ=fips.o fips_err_wrapper.o | 45 | LIBOBJ=fips.o |
46 | |||
47 | FIPS_OBJ_LISTS=sha/lib hmac/lib rand/lib des/lib aes/lib dsa/lib rsa/lib dh/lib | ||
36 | 48 | ||
37 | SRC= $(LIBSRC) | 49 | SRC= $(LIBSRC) |
38 | 50 | ||
39 | EXHEADER=fips.h | 51 | EXHEADER=fips.h |
40 | HEADER=$(EXHEADER) fips_err.h | 52 | HEADER=$(EXHEADER) fips_utl.h fips_locl.h |
41 | EXE=openssl_fips_fingerprint | 53 | EXE=fipsld |
42 | 54 | ||
43 | ALL= $(GENERAL) $(SRC) $(HEADER) | 55 | ALL= $(GENERAL) $(SRC) $(HEADER) |
44 | 56 | ||
45 | top: | 57 | top: |
46 | @(cd ..; $(MAKE) DIRS=$(DIR) all) | 58 | @(cd ..; $(MAKE) DIRS=$(DIR) all) |
47 | 59 | ||
60 | testapps: | ||
61 | @if [ -z "$(THIS)" ]; then $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; fi | ||
62 | |||
48 | all: | 63 | all: |
49 | @if egrep 'define OPENSSL_FIPS' $(TOP)/include/openssl/opensslconf.h > /dev/null; then \ | 64 | @if [ -z "$(FIPSLIBDIR)" ]; then \ |
50 | $(MAKE) -e subdirs check lib shared; \ | 65 | $(MAKE) -e subdirs lib fips_premain_dso$(EXE_EXT); \ |
66 | else \ | ||
67 | $(MAKE) -e lib fips_premain_dso$(EXE_EXT) fips_standalone_sha1$(EXE_EXT); \ | ||
51 | fi | 68 | fi |
52 | 69 | ||
53 | check: | 70 | # Idea behind fipscanister.o is to "seize" the sequestered code between |
54 | TOP=`pwd`/$(TOP) ./fips_check_sha1 fingerprint.sha1 $(SRC) $(HEADER) | 71 | # known symbols for fingerprinting purposes, which would be commonly |
72 | # done with ld -r start.o ... end.o. The latter however presents a minor | ||
73 | # challenge on multi-ABI platforms. As just implied, we'd rather use ld, | ||
74 | # but the trouble is that we don't generally know how ABI-selection | ||
75 | # compiler flag is translated to corresponding linker flag. All compiler | ||
76 | # drivers seem to recognize -r flag and pass it down to linker, but some | ||
77 | # of them, including gcc, erroneously add -lc, as well as run-time | ||
78 | # components, such as crt1.o and alike. Fortunately among those vendor | ||
79 | # compilers which were observed to misinterpret -r flag multi-ABI ones | ||
80 | # are equipped with smart linkers, which don't require any ABI-selection | ||
81 | # flag and simply assume that all objects are of the same type as first | ||
82 | # one in command line. So the idea is to identify gcc and deficient | ||
83 | # vendor compiler drivers... | ||
84 | |||
85 | fipscanister.o: fips_start.o $(LIBOBJ) $(FIPS_OBJ_LISTS) fips_end.o | ||
86 | FIPS_ASM=""; \ | ||
87 | list="$(BN_ASM)"; for i in $$list; do FIPS_ASM="$$FIPS_ASM ../crypto/bn/$$i" ; done; \ | ||
88 | list="$(AES_ASM_OBJ)"; for i in $$list; do FIPS_ASM="$$FIPS_ASM ../crypto/aes/$$i" ; done; \ | ||
89 | list="$(DES_ENC)"; for i in $$list; do FIPS_ASM="$$FIPS_ASM ../crypto/des/$$i" ; done; \ | ||
90 | list="$(SHA1_ASM_OBJ)"; for i in $$list; do FIPS_ASM="$$FIPS_ASM ../crypto/sha/$$i" ; done; \ | ||
91 | if [ -n "$(CPUID_OBJ)" ]; then \ | ||
92 | CPUID=../crypto/$(CPUID_OBJ) ; \ | ||
93 | else \ | ||
94 | CPUID="" ; \ | ||
95 | fi ; \ | ||
96 | objs="fips_start.o $(LIBOBJ) $(FIPS_EX_OBJ) $$CPUID $$FIPS_ASM"; \ | ||
97 | for i in $(FIPS_OBJ_LISTS); do \ | ||
98 | dir=`dirname $$i`; script="s|^|$$dir/|;s| | $$dir/|g"; \ | ||
99 | objs="$$objs `sed "$$script" $$i`"; \ | ||
100 | done; \ | ||
101 | objs="$$objs fips_end.o" ; \ | ||
102 | os="`(uname -s) 2>/dev/null`"; cflags="$(CFLAGS)"; \ | ||
103 | [ "$$os" = "AIX" ] && cflags="$$cflags -Wl,-bnoobjreorder"; \ | ||
104 | if [ -n "${FIPS_SITE_LD}" ]; then \ | ||
105 | set -x; ${FIPS_SITE_LD} -r -o $@ $$objs; \ | ||
106 | elif $(CC) -dumpversion >/dev/null 2>&1; then \ | ||
107 | set -x; $(CC) $$cflags -r -nostdlib -o $@ $$objs ; \ | ||
108 | else case "$$os" in \ | ||
109 | HP-UX|OSF1|SunOS) set -x; /usr/ccs/bin/ld -r -o $@ $$objs ;; \ | ||
110 | *) set -x; $(CC) $$cflags -r -o $@ $$objs ;; \ | ||
111 | esac fi | ||
112 | ./fips_standalone_sha1 fipscanister.o > fipscanister.o.sha1 | ||
113 | |||
114 | # If another exception is immediately required, assign approprite | ||
115 | # site-specific ld command to FIPS_SITE_LD environment variable. | ||
116 | |||
117 | fips_start.o: fips_canister.c | ||
118 | $(CC) $(CFLAGS) -DFIPS_START -c -o $@ fips_canister.c | ||
119 | fips_end.o: fips_canister.c | ||
120 | $(CC) $(CFLAGS) -DFIPS_END -c -o $@ fips_canister.c | ||
121 | fips_premain_dso$(EXE_EXT): fips_premain.c | ||
122 | $(CC) $(CFLAGS) -DFINGERPRINT_PREMAIN_DSO_LOAD -o $@ fips_premain.c \ | ||
123 | $(FIPSLIBDIR)fipscanister.o ../libcrypto.a $(EX_LIBS) | ||
124 | # this is executed only when linking with external fipscanister.o | ||
125 | fips_standalone_sha1$(EXE_EXT): sha/fips_standalone_sha1.c | ||
126 | $(CC) $(CFLAGS) -DFIPSCANISTER_O -o $@ sha/fips_standalone_sha1.c $(FIPSLIBDIR)fipscanister.o | ||
55 | 127 | ||
56 | subdirs: | 128 | subdirs: |
57 | @for i in $(FDIRS) ;\ | 129 | @target=all; $(RECURSIVE_MAKE) |
58 | do \ | ||
59 | (cd $$i && echo "making all in fips/$$i..." && \ | ||
60 | $(MAKE) CC='$(CC)' INCLUDES='${INCLUDES}' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' FIPS_DES_ENC='${FIPS_DES_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' FIPS_SHA1_ASM_OBJ='${FIPS_SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' all ) || exit 1; \ | ||
61 | done; | ||
62 | |||
63 | sub_target: | ||
64 | @for i in $(FDIRS) ;\ | ||
65 | do \ | ||
66 | (cd $$i && echo "making $(TARGET) in fips/$$i..." && \ | ||
67 | $(MAKE) CC='$(CC)' INCLUDES='${INCLUDES}' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' FIPS_DES_ENC='${FIPS_DES_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' FIPS_SHA1_ASM_OBJ='${FIPS_SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' $(TARGET) ) || exit 1; \ | ||
68 | done; | ||
69 | 130 | ||
70 | files: | 131 | files: |
71 | $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO | 132 | $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO |
72 | @for i in $(FDIRS) ;\ | 133 | @target=files; $(RECURSIVE_MAKE) |
73 | do \ | ||
74 | (cd $$i && echo "making 'files' in fips/$$i..." && \ | ||
75 | $(MAKE) PERL='${PERL}' files ); \ | ||
76 | done; | ||
77 | 134 | ||
78 | links: | 135 | links: |
79 | @$(PERL) $(TOP)/util/mklink.pl ../include/openssl $(EXHEADER) | 136 | @$(PERL) $(TOP)/util/mklink.pl ../include/openssl $(EXHEADER) |
80 | @for i in $(FDIRS); do \ | 137 | @$(PERL) $(TOP)/util/mklink.pl ../test $(TEST) |
81 | (cd $$i && echo "making links in fips/$$i..." && \ | 138 | @target=links; $(RECURSIVE_MAKE) |
82 | $(MAKE) CC='$(CC)' INCLUDES='${INCLUDES}' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' FIPS_DES_ENC='${FIPS_DES_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' FIPS_SHA1_ASM_OBJ='${FIPS_SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' AR='${AR}' PERL='${PERL}' links ); \ | ||
83 | done; | ||
84 | 139 | ||
85 | lib: $(LIBOBJ) | 140 | # lib: and $(LIB): are splitted to avoid end-less loop |
86 | $(AR) $(LIB) $(LIBOBJ) | 141 | lib: $(LIB) |
87 | $(RANLIB) $(LIB) || echo Never mind. | 142 | if [ "$(FIPSCANISTERINTERNAL)" = "n" -a -n "$(FIPSCANLOC)" ]; then $(AR) ../$(FIPSCANLIB).a $(FIPSCANLOC); fi |
88 | @touch lib | 143 | @touch lib |
89 | 144 | ||
90 | shared: | 145 | $(LIB): $(FIPSLIBDIR)fipscanister.o |
91 | if [ -n "$(SHARED_LIBS)" ]; then \ | 146 | $(AR) $(LIB) $(FIPSLIBDIR)fipscanister.o |
92 | (cd ..; $(MAKE) $(SHARED_LIB)); \ | 147 | $(RANLIB) $(LIB) || echo Never mind. |
148 | |||
149 | $(FIPSCANLIB): $(FIPSCANLOC) | ||
150 | $(AR) ../$(FIPSCANLIB).a $(FIPSCANLOC) | ||
151 | if [ "$(FIPSCANLIB)" = "libfips" ]; then \ | ||
152 | $(AR) $(LIB) $(FIPSCANLOC) ; \ | ||
153 | $(RANLIB) $(LIB) || echo Never Mind. ; \ | ||
93 | fi | 154 | fi |
155 | $(RANLIB) ../$(FIPSCANLIB).a || echo Never mind. | ||
156 | @touch lib | ||
94 | 157 | ||
95 | libs: | 158 | shared: lib subdirs fips_premain_dso$(EXE_EXT) |
96 | @for i in $(FDIRS) ;\ | ||
97 | do \ | ||
98 | (cd $$i && echo "making libs in fips/$$i..." && \ | ||
99 | $(MAKE) CC='$(CC)' CFLAG='${CFLAG}' INSTALL_PREFIX='${INSTALL_PREFIX}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' AR='${AR}' lib ); \ | ||
100 | done; | ||
101 | 159 | ||
102 | tests: | 160 | libs: |
103 | @for i in $(FDIRS) ;\ | 161 | @target=lib; $(RECURSIVE_MAKE) |
104 | do \ | ||
105 | (cd $$i && echo "making tests in fips/$$i..." && \ | ||
106 | $(MAKE) CC='$(CC)' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' AR='${AR}' tests ); \ | ||
107 | done; | ||
108 | 162 | ||
109 | top_fips_test_suite: | 163 | fips_test: top |
110 | (cd $(TOP); $(MAKE) DIRS=fips FDIRS=. TARGET=fips_test_suite sub_target) | 164 | @target=fips_test; $(RECURSIVE_MAKE) |
111 | 165 | ||
112 | fips_test_suite: fips_test_suite.o $(TOP)/libcrypto.a | 166 | fips_test_diff: |
113 | $(CC) $(CFLAGS) -o fips_test_suite fips_test_suite.o $(PEX_LIBS) $(TOP)/libcrypto.a $(EX_LIBS) | 167 | @if diff -b -B -I '^\#' -cr -X fips-nodiff.txt $(FIPS_TVDIR) $(FIPS_TVOK) ; then \ |
114 | TOP=$(TOP) $(TOP)/fips/openssl_fips_fingerprint $(TOP)/libcrypto.a fips_test_suite || { rm fips_test_suite; false; } | 168 | echo "FIPS diff OK" ; \ |
169 | else \ | ||
170 | echo "***FIPS DIFF ERROR***" ; exit 1 ; \ | ||
171 | fi | ||
115 | 172 | ||
116 | fips_test: top top_fips_test_suite | ||
117 | cd testvectors && perl -p -i -e 's/COUNT=/COUNT = /' des[23]/req/*.req | ||
118 | @for i in dsa sha1 aes des ; \ | ||
119 | do \ | ||
120 | (cd $$i && echo "making fips_test in fips/$$i..." && $(MAKE) fips_test) \ | ||
121 | done; | ||
122 | 173 | ||
123 | install: | 174 | install: |
175 | @[ -n "$(INSTALLTOP)" ] # should be set by top Makefile... | ||
124 | @headerlist="$(EXHEADER)"; for i in $$headerlist ;\ | 176 | @headerlist="$(EXHEADER)"; for i in $$headerlist ;\ |
125 | do \ | 177 | do \ |
126 | (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ | 178 | (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ |
127 | chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ | 179 | chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ |
128 | done; | ||
129 | @for i in $(FDIRS) ;\ | ||
130 | do \ | ||
131 | (cd $$i && echo "making install in fips/$$i..." && \ | ||
132 | $(MAKE) CC='$(CC)' CFLAG='${CFLAG}' INSTALL_PREFIX='${INSTALL_PREFIX}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' install ); \ | ||
133 | done; | 180 | done; |
134 | @for i in $(EXE) ; \ | 181 | @target=install; $(RECURSIVE_MAKE) |
135 | do \ | 182 | @cp -p -f fipscanister.o fipscanister.o.sha1 fips_premain.c \ |
136 | echo "installing $$i"; \ | 183 | fips_premain.c.sha1 \ |
137 | cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \ | 184 | $(INSTALL_PREFIX)$(INSTALLTOP)/lib/; \ |
138 | chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \ | 185 | chmod 0444 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/fips* |
139 | mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i; \ | ||
140 | done | ||
141 | 186 | ||
142 | lint: | 187 | lint: |
143 | @for i in $(FDIRS) ;\ | 188 | @target=lint; $(RECURSIVE_MAKE) |
144 | do \ | ||
145 | (cd $$i && echo "making lint in fips/$$i..." && \ | ||
146 | $(MAKE) CC='$(CC)' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' lint ); \ | ||
147 | done; | ||
148 | 189 | ||
149 | depend: | 190 | depend: |
150 | if [ ! -f buildinf.h ]; then touch buildinf.h; fi # fake buildinf.h if it does not exist | 191 | @[ -z "$(THIS)" ] || $(MAKEDEPEND) -- $(CFLAG) $(INCLUDE) $(DEPFLAG) -- $(PROGS) $(LIBSRC) |
151 | $(MAKEDEPEND) -- $(CFLAG) $(INCLUDE) $(DEPFLAG) -- $(SRC) | 192 | @[ -z "$(THIS)" ] || (set -e; target=depend; $(RECURSIVE_MAKE) ) |
152 | if [ ! -s buildinf.h ]; then rm buildinf.h; fi | 193 | @if [ -z "$(THIS)" ]; then $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; fi |
153 | @for i in $(FDIRS) ;\ | ||
154 | do \ | ||
155 | (cd $$i && echo "making depend in fips/$$i..." && \ | ||
156 | $(MAKE) MAKEFILE='${MAKEFILE}' INCLUDES='${INCLUDES}' CFLAG='${CFLAG}' DEPFLAG='${DEPFLAG}' MAKEDEPPROG='${MAKEDEPPROG}' KRB5_INCLUDES='${KRB5_INCLUDES}' PERL='${PERL}' depend ); \ | ||
157 | done; | ||
158 | 194 | ||
159 | clean: | 195 | clean: |
160 | rm -f buildinf.h *.o */*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff | 196 | rm -f fipscanister.o.sha1 fips_premain_dso$(EXE_EXT) fips_standalone_sha1$(EXE_EXT) \ |
161 | @for i in $(FDIRS) ;\ | 197 | *.s *.o */*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff |
162 | do \ | 198 | @target=clean; $(RECURSIVE_MAKE) |
163 | (cd $$i && echo "making clean in fips/$$i..." && \ | ||
164 | $(MAKE) CC='$(CC)' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' clean ); \ | ||
165 | done; | ||
166 | 199 | ||
167 | dclean: | 200 | dclean: |
168 | $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new | 201 | $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new |
169 | mv -f Makefile.new $(MAKEFILE) | 202 | mv -f Makefile.new $(MAKEFILE) |
170 | @for i in $(FDIRS) ;\ | 203 | @target=dclean; $(RECURSIVE_MAKE) |
171 | do \ | ||
172 | (cd $$i && echo "making dclean in fips/$$i..." && \ | ||
173 | $(MAKE) PERL='${PERL}' CC='$(CC)' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' dclean ); \ | ||
174 | done; | ||
175 | 204 | ||
176 | # DO NOT DELETE THIS LINE -- make depend depends on it. | 205 | # DO NOT DELETE THIS LINE -- make depend depends on it. |
177 | 206 | ||
178 | fips.o: ../include/openssl/aes.h ../include/openssl/asn1.h | 207 | fips.o: ../include/openssl/asn1.h ../include/openssl/bio.h |
179 | fips.o: ../include/openssl/bio.h ../include/openssl/blowfish.h | ||
180 | fips.o: ../include/openssl/bn.h ../include/openssl/cast.h | ||
181 | fips.o: ../include/openssl/crypto.h ../include/openssl/des.h | 208 | fips.o: ../include/openssl/crypto.h ../include/openssl/des.h |
182 | fips.o: ../include/openssl/des_old.h ../include/openssl/dh.h | 209 | fips.o: ../include/openssl/des_old.h ../include/openssl/e_os2.h |
183 | fips.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h | ||
184 | fips.o: ../include/openssl/err.h ../include/openssl/evp.h | 210 | fips.o: ../include/openssl/err.h ../include/openssl/evp.h |
185 | fips.o: ../include/openssl/fips.h ../include/openssl/fips_rand.h | 211 | fips.o: ../include/openssl/fips.h ../include/openssl/fips_rand.h |
186 | fips.o: ../include/openssl/hmac.h ../include/openssl/idea.h | 212 | fips.o: ../include/openssl/hmac.h ../include/openssl/lhash.h |
187 | fips.o: ../include/openssl/lhash.h ../include/openssl/md2.h | 213 | fips.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h |
188 | fips.o: ../include/openssl/md4.h ../include/openssl/md5.h | 214 | fips.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h |
189 | fips.o: ../include/openssl/mdc2.h ../include/openssl/obj_mac.h | 215 | fips.o: ../include/openssl/ossl_typ.h ../include/openssl/rand.h |
190 | fips.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h | 216 | fips.o: ../include/openssl/rsa.h ../include/openssl/safestack.h |
191 | fips.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h | ||
192 | fips.o: ../include/openssl/rand.h ../include/openssl/rc2.h | ||
193 | fips.o: ../include/openssl/rc4.h ../include/openssl/rc5.h | ||
194 | fips.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h | ||
195 | fips.o: ../include/openssl/safestack.h ../include/openssl/sha.h | ||
196 | fips.o: ../include/openssl/stack.h ../include/openssl/symhacks.h | 217 | fips.o: ../include/openssl/stack.h ../include/openssl/symhacks.h |
197 | fips.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h fips.c | 218 | fips.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h fips.c |
198 | fips.o: fips_locl.h | 219 | fips.o: fips_locl.h |
199 | fips_err_wrapper.o: ../include/openssl/opensslconf.h fips_err_wrapper.c | ||
diff --git a/src/lib/libssl/src/fips/aes/Makefile b/src/lib/libssl/src/fips/aes/Makefile index fce5eeb5f7..403525d4c0 100644 --- a/src/lib/libssl/src/fips/aes/Makefile +++ b/src/lib/libssl/src/fips/aes/Makefile | |||
@@ -1,5 +1,5 @@ | |||
1 | # | 1 | # |
2 | # SSLeay/fips/aes/Makefile | 2 | # OpenSSL/fips/aes/Makefile |
3 | # | 3 | # |
4 | 4 | ||
5 | DIR= aes | 5 | DIR= aes |
@@ -15,6 +15,9 @@ MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) | |||
15 | MAKEFILE= Makefile | 15 | MAKEFILE= Makefile |
16 | AR= ar r | 16 | AR= ar r |
17 | 17 | ||
18 | ASFLAGS= $(INCLUDES) $(ASFLAG) | ||
19 | AFLAGS= $(ASFLAGS) | ||
20 | |||
18 | CFLAGS= $(INCLUDES) $(CFLAG) | 21 | CFLAGS= $(INCLUDES) $(CFLAG) |
19 | 22 | ||
20 | GENERAL=Makefile | 23 | GENERAL=Makefile |
@@ -23,28 +26,23 @@ TESTDATA=fips_aes_data | |||
23 | APPS= | 26 | APPS= |
24 | 27 | ||
25 | LIB=$(TOP)/libcrypto.a | 28 | LIB=$(TOP)/libcrypto.a |
26 | LIBSRC=fips_aes_core.c fips_aes_selftest.c | 29 | LIBSRC=fips_aes_selftest.c |
27 | LIBOBJ=fips_aes_core.o fips_aes_selftest.o | 30 | LIBOBJ=fips_aes_selftest.o |
28 | 31 | ||
29 | SRC= $(LIBSRC) | 32 | SRC= $(LIBSRC) |
30 | 33 | ||
31 | EXHEADER= | 34 | EXHEADER= |
32 | HEADER= $(EXHEADER) fips_aes_locl.h | 35 | HEADER= |
33 | 36 | ||
34 | ALL= $(GENERAL) $(SRC) $(HEADER) | 37 | ALL= $(GENERAL) $(SRC) $(HEADER) |
35 | 38 | ||
36 | top: | 39 | top: |
37 | (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) sub_all) | 40 | (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) sub_all) |
38 | 41 | ||
39 | all: check lib | 42 | all: lib |
40 | |||
41 | check: | ||
42 | TOP=`pwd`/$(TOP) ../fips_check_sha1 fingerprint.sha1 $(SRC) $(HEADER) | ||
43 | 43 | ||
44 | lib: $(LIBOBJ) | 44 | lib: $(LIBOBJ) |
45 | $(AR) $(LIB) $(LIBOBJ) | 45 | @echo $(LIBOBJ) > lib |
46 | $(RANLIB) $(LIB) || echo Never mind. | ||
47 | @sleep 2; touch lib | ||
48 | 46 | ||
49 | files: | 47 | files: |
50 | $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO | 48 | $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO |
@@ -67,18 +65,11 @@ tags: | |||
67 | 65 | ||
68 | tests: | 66 | tests: |
69 | 67 | ||
70 | top_fips_aesavs: | 68 | fips_test: |
71 | (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) TARGET=fips_aesavs sub_target) | 69 | -find ../testvectors/aes/req -name '*.req' > testlist |
72 | |||
73 | fips_aesavs: fips_aesavs.o $(TOP)/libcrypto.a | ||
74 | $(CC) $(CFLAGS) -o fips_aesavs fips_aesavs.o $(PEX_LIBS) $(TOP)/libcrypto.a $(EX_LIBS) | ||
75 | TOP=$(TOP) $(TOP)/fips/openssl_fips_fingerprint $(TOP)/libcrypto.a fips_aesavs | ||
76 | |||
77 | fips_test: top top_fips_aesavs | ||
78 | find ../testvectors/aes/req -name '*.req' > testlist | ||
79 | -rm -rf ../testvectors/aes/rsp | 70 | -rm -rf ../testvectors/aes/rsp |
80 | mkdir ../testvectors/aes/rsp | 71 | mkdir ../testvectors/aes/rsp |
81 | ./fips_aesavs -d testlist | 72 | if [ -s testlist ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_aesavs -d testlist; fi |
82 | 73 | ||
83 | lint: | 74 | lint: |
84 | lint -DLINT $(INCLUDES) $(SRC)>fluff | 75 | lint -DLINT $(INCLUDES) $(SRC)>fluff |
@@ -92,40 +83,31 @@ dclean: | |||
92 | mv -f Makefile.new $(MAKEFILE) | 83 | mv -f Makefile.new $(MAKEFILE) |
93 | 84 | ||
94 | clean: | 85 | clean: |
95 | rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff | 86 | rm -f *.o asm/*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff testlist |
96 | # DO NOT DELETE THIS LINE -- make depend depends on it. | 87 | # DO NOT DELETE THIS LINE -- make depend depends on it. |
97 | 88 | ||
98 | fips_aes_core.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h | 89 | fips_aes_selftest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h |
99 | fips_aes_core.o: ../../include/openssl/fips.h | ||
100 | fips_aes_core.o: ../../include/openssl/opensslconf.h fips_aes_core.c | ||
101 | fips_aes_core.o: fips_aes_locl.h | ||
102 | fips_aes_selftest.o: ../../include/openssl/aes.h ../../include/openssl/bio.h | ||
103 | fips_aes_selftest.o: ../../include/openssl/crypto.h | 90 | fips_aes_selftest.o: ../../include/openssl/crypto.h |
104 | fips_aes_selftest.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | 91 | fips_aes_selftest.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
105 | fips_aes_selftest.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h | 92 | fips_aes_selftest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
93 | fips_aes_selftest.o: ../../include/openssl/lhash.h | ||
94 | fips_aes_selftest.o: ../../include/openssl/obj_mac.h | ||
95 | fips_aes_selftest.o: ../../include/openssl/objects.h | ||
106 | fips_aes_selftest.o: ../../include/openssl/opensslconf.h | 96 | fips_aes_selftest.o: ../../include/openssl/opensslconf.h |
107 | fips_aes_selftest.o: ../../include/openssl/opensslv.h | 97 | fips_aes_selftest.o: ../../include/openssl/opensslv.h |
98 | fips_aes_selftest.o: ../../include/openssl/ossl_typ.h | ||
108 | fips_aes_selftest.o: ../../include/openssl/safestack.h | 99 | fips_aes_selftest.o: ../../include/openssl/safestack.h |
109 | fips_aes_selftest.o: ../../include/openssl/stack.h | 100 | fips_aes_selftest.o: ../../include/openssl/stack.h |
110 | fips_aes_selftest.o: ../../include/openssl/symhacks.h fips_aes_selftest.c | 101 | fips_aes_selftest.o: ../../include/openssl/symhacks.h fips_aes_selftest.c |
111 | fips_aesavs.o: ../../e_os.h ../../include/openssl/aes.h | 102 | fips_aesavs.o: ../../e_os.h ../../include/openssl/aes.h |
112 | fips_aesavs.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | 103 | fips_aesavs.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h |
113 | fips_aesavs.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | 104 | fips_aesavs.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h |
114 | fips_aesavs.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h | ||
115 | fips_aesavs.o: ../../include/openssl/des.h ../../include/openssl/des_old.h | ||
116 | fips_aesavs.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h | ||
117 | fips_aesavs.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | 105 | fips_aesavs.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
118 | fips_aesavs.o: ../../include/openssl/evp.h ../../include/openssl/fips.h | 106 | fips_aesavs.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
119 | fips_aesavs.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h | 107 | fips_aesavs.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
120 | fips_aesavs.o: ../../include/openssl/md2.h ../../include/openssl/md4.h | 108 | fips_aesavs.o: ../../include/openssl/objects.h |
121 | fips_aesavs.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h | ||
122 | fips_aesavs.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | ||
123 | fips_aesavs.o: ../../include/openssl/opensslconf.h | 109 | fips_aesavs.o: ../../include/openssl/opensslconf.h |
124 | fips_aesavs.o: ../../include/openssl/opensslv.h | 110 | fips_aesavs.o: ../../include/openssl/opensslv.h |
125 | fips_aesavs.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rc2.h | 111 | fips_aesavs.o: ../../include/openssl/ossl_typ.h |
126 | fips_aesavs.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | 112 | fips_aesavs.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h |
127 | fips_aesavs.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | 113 | fips_aesavs.o: ../../include/openssl/symhacks.h ../fips_utl.h fips_aesavs.c |
128 | fips_aesavs.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
129 | fips_aesavs.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
130 | fips_aesavs.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h | ||
131 | fips_aesavs.o: fips_aesavs.c | ||
diff --git a/src/lib/libssl/src/fips/aes/fips_aes_selftest.c b/src/lib/libssl/src/fips/aes/fips_aes_selftest.c index 0e53d21bd0..441bbc18e7 100644 --- a/src/lib/libssl/src/fips/aes/fips_aes_selftest.c +++ b/src/lib/libssl/src/fips/aes/fips_aes_selftest.c | |||
@@ -50,7 +50,7 @@ | |||
50 | #include <string.h> | 50 | #include <string.h> |
51 | #include <openssl/err.h> | 51 | #include <openssl/err.h> |
52 | #include <openssl/fips.h> | 52 | #include <openssl/fips.h> |
53 | #include <openssl/aes.h> | 53 | #include <openssl/evp.h> |
54 | 54 | ||
55 | #ifdef OPENSSL_FIPS | 55 | #ifdef OPENSSL_FIPS |
56 | static struct | 56 | static struct |
@@ -78,35 +78,24 @@ void FIPS_corrupt_aes() | |||
78 | int FIPS_selftest_aes() | 78 | int FIPS_selftest_aes() |
79 | { | 79 | { |
80 | int n; | 80 | int n; |
81 | int ret = 0; | ||
82 | EVP_CIPHER_CTX ctx; | ||
83 | EVP_CIPHER_CTX_init(&ctx); | ||
81 | 84 | ||
82 | /* Encrypt and check against known ciphertext */ | ||
83 | for(n=0 ; n < 1 ; ++n) | 85 | for(n=0 ; n < 1 ; ++n) |
84 | { | 86 | { |
85 | AES_KEY key; | 87 | if (fips_cipher_test(&ctx, EVP_aes_128_ecb(), |
86 | unsigned char buf[16]; | 88 | tests[n].key, NULL, |
87 | 89 | tests[n].plaintext, | |
88 | AES_set_encrypt_key(tests[n].key,128,&key); | 90 | tests[n].ciphertext, |
89 | AES_encrypt(tests[n].plaintext,buf,&key); | 91 | 16) <= 0) |
90 | if(memcmp(buf,tests[n].ciphertext,sizeof buf)) | 92 | goto err; |
91 | { | ||
92 | FIPSerr(FIPS_F_FIPS_SELFTEST_AES,FIPS_R_SELFTEST_FAILED); | ||
93 | return 0; | ||
94 | } | ||
95 | } | 93 | } |
96 | /* Decrypt and check against known plaintext */ | 94 | ret = 1; |
97 | for(n=0 ; n < 1 ; ++n) | 95 | err: |
98 | { | 96 | EVP_CIPHER_CTX_cleanup(&ctx); |
99 | AES_KEY key; | 97 | if (ret == 0) |
100 | unsigned char buf[16]; | ||
101 | |||
102 | AES_set_decrypt_key(tests[n].key,128,&key); | ||
103 | AES_decrypt(tests[n].ciphertext,buf,&key); | ||
104 | if(memcmp(buf,tests[n].plaintext,sizeof buf)) | ||
105 | { | ||
106 | FIPSerr(FIPS_F_FIPS_SELFTEST_AES,FIPS_R_SELFTEST_FAILED); | 98 | FIPSerr(FIPS_F_FIPS_SELFTEST_AES,FIPS_R_SELFTEST_FAILED); |
107 | return 0; | 99 | return ret; |
108 | } | ||
109 | } | ||
110 | return 1; | ||
111 | } | 100 | } |
112 | #endif | 101 | #endif |
diff --git a/src/lib/libssl/src/fips/aes/fips_aesavs.c b/src/lib/libssl/src/fips/aes/fips_aesavs.c index 5fc2879067..9ce613b96d 100644 --- a/src/lib/libssl/src/fips/aes/fips_aesavs.c +++ b/src/lib/libssl/src/fips/aes/fips_aesavs.c | |||
@@ -62,16 +62,30 @@ | |||
62 | #include <string.h> | 62 | #include <string.h> |
63 | #include <errno.h> | 63 | #include <errno.h> |
64 | #include <assert.h> | 64 | #include <assert.h> |
65 | 65 | #include <ctype.h> | |
66 | #include <openssl/aes.h> | 66 | #include <openssl/aes.h> |
67 | #include <openssl/evp.h> | 67 | #include <openssl/evp.h> |
68 | #include <openssl/fips.h> | 68 | #include <openssl/bn.h> |
69 | |||
69 | #include <openssl/err.h> | 70 | #include <openssl/err.h> |
70 | #include "e_os.h" | 71 | #include "e_os.h" |
71 | 72 | ||
73 | #ifndef OPENSSL_FIPS | ||
74 | |||
75 | int main(int argc, char *argv[]) | ||
76 | { | ||
77 | printf("No FIPS AES support\n"); | ||
78 | return(0); | ||
79 | } | ||
80 | |||
81 | #else | ||
82 | |||
83 | #include <openssl/fips.h> | ||
84 | #include "fips_utl.h" | ||
85 | |||
72 | #define AES_BLOCK_SIZE 16 | 86 | #define AES_BLOCK_SIZE 16 |
73 | 87 | ||
74 | #define VERBOSE 1 | 88 | #define VERBOSE 0 |
75 | 89 | ||
76 | /*-----------------------------------------------*/ | 90 | /*-----------------------------------------------*/ |
77 | 91 | ||
@@ -82,232 +96,130 @@ int AESTest(EVP_CIPHER_CTX *ctx, | |||
82 | unsigned char *plaintext, unsigned char *ciphertext, int len) | 96 | unsigned char *plaintext, unsigned char *ciphertext, int len) |
83 | { | 97 | { |
84 | const EVP_CIPHER *cipher = NULL; | 98 | const EVP_CIPHER *cipher = NULL; |
85 | int ret = 1; | ||
86 | int kt = 0; | ||
87 | |||
88 | if (ctx) | ||
89 | memset(ctx, 0, sizeof(EVP_CIPHER_CTX)); | ||
90 | 99 | ||
91 | if (strcasecmp(amode, "CBC") == 0) | 100 | if (strcasecmp(amode, "CBC") == 0) |
92 | kt = 1000; | ||
93 | else if (strcasecmp(amode, "ECB") == 0) | ||
94 | kt = 2000; | ||
95 | else if (strcasecmp(amode, "CFB128") == 0) | ||
96 | kt = 3000; | ||
97 | else if (strncasecmp(amode, "OFB", 3) == 0) | ||
98 | kt = 4000; | ||
99 | else if(!strcasecmp(amode,"CFB1")) | ||
100 | kt=5000; | ||
101 | else if(!strcasecmp(amode,"CFB8")) | ||
102 | kt=6000; | ||
103 | else | ||
104 | { | ||
105 | printf("Unknown mode: %s\n", amode); | ||
106 | EXIT(1); | ||
107 | } | ||
108 | if (ret) | ||
109 | { | 101 | { |
110 | if ((akeysz != 128) && (akeysz != 192) && (akeysz != 256)) | 102 | switch (akeysz) |
111 | { | ||
112 | printf("Invalid key size: %d\n", akeysz); | ||
113 | ret = 0; | ||
114 | } | ||
115 | else | ||
116 | { | ||
117 | kt += akeysz; | ||
118 | switch (kt) | ||
119 | { | 103 | { |
120 | case 1128: /* CBC 128 */ | 104 | case 128: |
121 | cipher = EVP_aes_128_cbc(); | 105 | cipher = EVP_aes_128_cbc(); |
122 | break; | 106 | break; |
123 | case 1192: /* CBC 192 */ | 107 | |
108 | case 192: | ||
124 | cipher = EVP_aes_192_cbc(); | 109 | cipher = EVP_aes_192_cbc(); |
125 | break; | 110 | break; |
126 | case 1256: /* CBC 256 */ | 111 | |
112 | case 256: | ||
127 | cipher = EVP_aes_256_cbc(); | 113 | cipher = EVP_aes_256_cbc(); |
128 | break; | 114 | break; |
129 | case 2128: /* ECB 128 */ | 115 | } |
116 | |||
117 | } | ||
118 | else if (strcasecmp(amode, "ECB") == 0) | ||
119 | { | ||
120 | switch (akeysz) | ||
121 | { | ||
122 | case 128: | ||
130 | cipher = EVP_aes_128_ecb(); | 123 | cipher = EVP_aes_128_ecb(); |
131 | break; | 124 | break; |
132 | case 2192: /* ECB 192 */ | 125 | |
126 | case 192: | ||
133 | cipher = EVP_aes_192_ecb(); | 127 | cipher = EVP_aes_192_ecb(); |
134 | break; | 128 | break; |
135 | case 2256: /* ECB 256 */ | 129 | |
130 | case 256: | ||
136 | cipher = EVP_aes_256_ecb(); | 131 | cipher = EVP_aes_256_ecb(); |
137 | break; | 132 | break; |
138 | case 3128: /* CFB 128 */ | 133 | } |
139 | cipher = EVP_aes_128_cfb(); | 134 | } |
135 | else if (strcasecmp(amode, "CFB128") == 0) | ||
136 | { | ||
137 | switch (akeysz) | ||
138 | { | ||
139 | case 128: | ||
140 | cipher = EVP_aes_128_cfb128(); | ||
140 | break; | 141 | break; |
141 | case 3192: /* CFB 192 */ | 142 | |
142 | cipher = EVP_aes_192_cfb(); | 143 | case 192: |
144 | cipher = EVP_aes_192_cfb128(); | ||
143 | break; | 145 | break; |
144 | case 3256: /* CFB 256 */ | 146 | |
145 | cipher = EVP_aes_256_cfb(); | 147 | case 256: |
148 | cipher = EVP_aes_256_cfb128(); | ||
146 | break; | 149 | break; |
147 | case 4128: /* OFB 128 */ | 150 | } |
151 | |||
152 | } | ||
153 | else if (strncasecmp(amode, "OFB", 3) == 0) | ||
154 | { | ||
155 | switch (akeysz) | ||
156 | { | ||
157 | case 128: | ||
148 | cipher = EVP_aes_128_ofb(); | 158 | cipher = EVP_aes_128_ofb(); |
149 | break; | 159 | break; |
150 | case 4192: /* OFB 192 */ | 160 | |
161 | case 192: | ||
151 | cipher = EVP_aes_192_ofb(); | 162 | cipher = EVP_aes_192_ofb(); |
152 | break; | 163 | break; |
153 | case 4256: /* OFB 256 */ | 164 | |
165 | case 256: | ||
154 | cipher = EVP_aes_256_ofb(); | 166 | cipher = EVP_aes_256_ofb(); |
155 | break; | 167 | break; |
156 | case 5128: | 168 | } |
157 | cipher=EVP_aes_128_cfb1(); | 169 | } |
170 | else if(!strcasecmp(amode,"CFB1")) | ||
171 | { | ||
172 | switch (akeysz) | ||
173 | { | ||
174 | case 128: | ||
175 | cipher = EVP_aes_128_cfb1(); | ||
158 | break; | 176 | break; |
159 | case 5192: | 177 | |
160 | cipher=EVP_aes_192_cfb1(); | 178 | case 192: |
179 | cipher = EVP_aes_192_cfb1(); | ||
161 | break; | 180 | break; |
162 | case 5256: | 181 | |
163 | cipher=EVP_aes_256_cfb1(); | 182 | case 256: |
183 | cipher = EVP_aes_256_cfb1(); | ||
164 | break; | 184 | break; |
165 | case 6128: | 185 | } |
166 | cipher=EVP_aes_128_cfb8(); | 186 | } |
187 | else if(!strcasecmp(amode,"CFB8")) | ||
188 | { | ||
189 | switch (akeysz) | ||
190 | { | ||
191 | case 128: | ||
192 | cipher = EVP_aes_128_cfb8(); | ||
167 | break; | 193 | break; |
168 | case 6192: | 194 | |
169 | cipher=EVP_aes_192_cfb8(); | 195 | case 192: |
196 | cipher = EVP_aes_192_cfb8(); | ||
170 | break; | 197 | break; |
171 | case 6256: | 198 | |
172 | cipher=EVP_aes_256_cfb8(); | 199 | case 256: |
200 | cipher = EVP_aes_256_cfb8(); | ||
173 | break; | 201 | break; |
174 | default: | ||
175 | printf("Didn't handle mode %d\n",kt); | ||
176 | EXIT(1); | ||
177 | } | ||
178 | if (dir) | ||
179 | { /* encrypt */ | ||
180 | if(!EVP_CipherInit(ctx, cipher, aKey, iVec, AES_ENCRYPT)) | ||
181 | { | ||
182 | ERR_print_errors_fp(stderr); | ||
183 | EXIT(1); | ||
184 | } | ||
185 | |||
186 | EVP_Cipher(ctx, ciphertext, (unsigned char*)plaintext, len); | ||
187 | } | ||
188 | else | ||
189 | { /* decrypt */ | ||
190 | if(!EVP_CipherInit(ctx, cipher, aKey, iVec, AES_DECRYPT)) | ||
191 | { | ||
192 | ERR_print_errors_fp(stderr); | ||
193 | EXIT(1); | ||
194 | } | ||
195 | EVP_Cipher(ctx, (unsigned char*)plaintext, ciphertext, len); | ||
196 | } | 202 | } |
197 | } | ||
198 | } | 203 | } |
199 | return ret; | ||
200 | } | ||
201 | |||
202 | /*-----------------------------------------------*/ | ||
203 | |||
204 | int hex2bin(char *in, int len, unsigned char *out) | ||
205 | { | ||
206 | int n1, n2; | ||
207 | unsigned char ch; | ||
208 | |||
209 | for (n1 = 0, n2 = 0; n1 < len; ) | ||
210 | { /* first byte */ | ||
211 | if ((in[n1] >= '0') && (in[n1] <= '9')) | ||
212 | ch = in[n1++] - '0'; | ||
213 | else if ((in[n1] >= 'A') && (in[n1] <= 'F')) | ||
214 | ch = in[n1++] - 'A' + 10; | ||
215 | else if ((in[n1] >= 'a') && (in[n1] <= 'f')) | ||
216 | ch = in[n1++] - 'a' + 10; | ||
217 | else | ||
218 | return -1; | ||
219 | if(len == 1) | ||
220 | { | ||
221 | out[n2++]=ch; | ||
222 | break; | ||
223 | } | ||
224 | out[n2] = ch << 4; | ||
225 | /* second byte */ | ||
226 | if ((in[n1] >= '0') && (in[n1] <= '9')) | ||
227 | ch = in[n1++] - '0'; | ||
228 | else if ((in[n1] >= 'A') && (in[n1] <= 'F')) | ||
229 | ch = in[n1++] - 'A' + 10; | ||
230 | else if ((in[n1] >= 'a') && (in[n1] <= 'f')) | ||
231 | ch = in[n1++] - 'a' + 10; | ||
232 | else | ||
233 | return -1; | ||
234 | out[n2++] |= ch; | ||
235 | } | ||
236 | return n2; | ||
237 | } | ||
238 | |||
239 | /*-----------------------------------------------*/ | ||
240 | |||
241 | int bin2hex(unsigned char *in, int len, char *out) | ||
242 | { | ||
243 | int n1, n2; | ||
244 | unsigned char ch; | ||
245 | |||
246 | for (n1 = 0, n2 = 0; n1 < len; ++n1) | ||
247 | { | ||
248 | /* first nibble */ | ||
249 | ch = in[n1] >> 4; | ||
250 | if (ch <= 0x09) | ||
251 | out[n2++] = ch + '0'; | ||
252 | else | ||
253 | out[n2++] = ch - 10 + 'a'; | ||
254 | /* second nibble */ | ||
255 | ch = in[n1] & 0x0f; | ||
256 | if (ch <= 0x09) | ||
257 | out[n2++] = ch + '0'; | ||
258 | else | ||
259 | out[n2++] = ch - 10 + 'a'; | ||
260 | } | ||
261 | return n2; | ||
262 | } | ||
263 | |||
264 | /* NB: this return the number of _bits_ read */ | ||
265 | int bint2bin(const char *in, int len, unsigned char *out) | ||
266 | { | ||
267 | int n; | ||
268 | |||
269 | memset(out,0,len); | ||
270 | for(n=0 ; n < len ; ++n) | ||
271 | if(in[n] == '1') | ||
272 | out[n/8]|=(0x80 >> (n%8)); | ||
273 | return len; | ||
274 | } | ||
275 | |||
276 | int bin2bint(const unsigned char *in,int len,char *out) | ||
277 | { | ||
278 | int n; | ||
279 | |||
280 | for(n=0 ; n < len ; ++n) | ||
281 | out[n]=(in[n/8]&(0x80 >> (n%8))) ? '1' : '0'; | ||
282 | return n; | ||
283 | } | ||
284 | |||
285 | /*-----------------------------------------------*/ | ||
286 | |||
287 | void PrintValue(char *tag, unsigned char *val, int len) | ||
288 | { | ||
289 | #if VERBOSE | ||
290 | char obuf[2048]; | ||
291 | int olen; | ||
292 | olen = bin2hex(val, len, obuf); | ||
293 | printf("%s = %.*s\n", tag, olen, obuf); | ||
294 | #endif | ||
295 | } | ||
296 | |||
297 | void OutputValue(char *tag, unsigned char *val, int len, FILE *rfp,int bitmode) | ||
298 | { | ||
299 | char obuf[2048]; | ||
300 | int olen; | ||
301 | |||
302 | if(bitmode) | ||
303 | olen=bin2bint(val,len,obuf); | ||
304 | else | 204 | else |
305 | olen=bin2hex(val,len,obuf); | 205 | { |
306 | 206 | printf("Unknown mode: %s\n", amode); | |
307 | fprintf(rfp, "%s = %.*s\n", tag, olen, obuf); | 207 | return 0; |
308 | #if VERBOSE | 208 | } |
309 | printf("%s = %.*s\n", tag, olen, obuf); | 209 | if (!cipher) |
310 | #endif | 210 | { |
211 | printf("Invalid key size: %d\n", akeysz); | ||
212 | return 0; | ||
213 | } | ||
214 | if (EVP_CipherInit_ex(ctx, cipher, NULL, aKey, iVec, dir) <= 0) | ||
215 | return 0; | ||
216 | if(!strcasecmp(amode,"CFB1")) | ||
217 | M_EVP_CIPHER_CTX_set_flags(ctx, EVP_CIPH_FLAG_LENGTH_BITS); | ||
218 | if (dir) | ||
219 | EVP_Cipher(ctx, ciphertext, plaintext, len); | ||
220 | else | ||
221 | EVP_Cipher(ctx, plaintext, ciphertext, len); | ||
222 | return 1; | ||
311 | } | 223 | } |
312 | 224 | ||
313 | /*-----------------------------------------------*/ | 225 | /*-----------------------------------------------*/ |
@@ -340,6 +252,7 @@ int do_mct(char *amode, | |||
340 | int i, j, n, n1, n2; | 252 | int i, j, n, n1, n2; |
341 | int imode = 0, nkeysz = akeysz/8; | 253 | int imode = 0, nkeysz = akeysz/8; |
342 | EVP_CIPHER_CTX ctx; | 254 | EVP_CIPHER_CTX ctx; |
255 | EVP_CIPHER_CTX_init(&ctx); | ||
343 | 256 | ||
344 | if (len > 32) | 257 | if (len > 32) |
345 | { | 258 | { |
@@ -467,10 +380,12 @@ int do_mct(char *amode, | |||
467 | case CFB1: | 380 | case CFB1: |
468 | if(j == 0) | 381 | if(j == 0) |
469 | { | 382 | { |
383 | #if 0 | ||
470 | /* compensate for wrong endianness of input file */ | 384 | /* compensate for wrong endianness of input file */ |
471 | if(i == 0) | 385 | if(i == 0) |
472 | ptext[0][0]<<=7; | 386 | ptext[0][0]<<=7; |
473 | ret=AESTest(&ctx,amode,akeysz,key[i],iv[i],dir, | 387 | #endif |
388 | ret = AESTest(&ctx,amode,akeysz,key[i],iv[i],dir, | ||
474 | ptext[j], ctext[j], len); | 389 | ptext[j], ctext[j], len); |
475 | } | 390 | } |
476 | else | 391 | else |
@@ -631,11 +546,12 @@ int do_mct(char *amode, | |||
631 | # Fri Aug 30 04:07:22 PM | 546 | # Fri Aug 30 04:07:22 PM |
632 | ----------------------------*/ | 547 | ----------------------------*/ |
633 | 548 | ||
634 | int proc_file(char *rqfile) | 549 | int proc_file(char *rqfile, char *rspfile) |
635 | { | 550 | { |
636 | char afn[256], rfn[256]; | 551 | char afn[256], rfn[256]; |
637 | FILE *afp = NULL, *rfp = NULL; | 552 | FILE *afp = NULL, *rfp = NULL; |
638 | char ibuf[2048]; | 553 | char ibuf[2048]; |
554 | char tbuf[2048]; | ||
639 | int ilen, len, ret = 0; | 555 | int ilen, len, ret = 0; |
640 | char algo[8] = ""; | 556 | char algo[8] = ""; |
641 | char amode[8] = ""; | 557 | char amode[8] = ""; |
@@ -647,6 +563,7 @@ int proc_file(char *rqfile) | |||
647 | unsigned char ciphertext[2048]; | 563 | unsigned char ciphertext[2048]; |
648 | char *rp; | 564 | char *rp; |
649 | EVP_CIPHER_CTX ctx; | 565 | EVP_CIPHER_CTX ctx; |
566 | EVP_CIPHER_CTX_init(&ctx); | ||
650 | 567 | ||
651 | if (!rqfile || !(*rqfile)) | 568 | if (!rqfile || !(*rqfile)) |
652 | { | 569 | { |
@@ -661,13 +578,21 @@ int proc_file(char *rqfile) | |||
661 | afn, strerror(errno)); | 578 | afn, strerror(errno)); |
662 | return -1; | 579 | return -1; |
663 | } | 580 | } |
664 | strcpy(rfn,afn); | 581 | if (!rspfile) |
665 | rp=strstr(rfn,"req/"); | 582 | { |
666 | assert(rp); | 583 | strcpy(rfn,afn); |
667 | memcpy(rp,"rsp",3); | 584 | rp=strstr(rfn,"req/"); |
668 | rp = strstr(rfn, ".req"); | 585 | #ifdef OPENSSL_SYS_WIN32 |
669 | memcpy(rp, ".rsp", 4); | 586 | if (!rp) |
670 | if ((rfp = fopen(rfn, "w")) == NULL) | 587 | rp=strstr(rfn,"req\\"); |
588 | #endif | ||
589 | assert(rp); | ||
590 | memcpy(rp,"rsp",3); | ||
591 | rp = strstr(rfn, ".req"); | ||
592 | memcpy(rp, ".rsp", 4); | ||
593 | rspfile = rfn; | ||
594 | } | ||
595 | if ((rfp = fopen(rspfile, "w")) == NULL) | ||
671 | { | 596 | { |
672 | printf("Cannot open file: %s, %s\n", | 597 | printf("Cannot open file: %s, %s\n", |
673 | rfn, strerror(errno)); | 598 | rfn, strerror(errno)); |
@@ -677,6 +602,7 @@ int proc_file(char *rqfile) | |||
677 | } | 602 | } |
678 | while (!err && (fgets(ibuf, sizeof(ibuf), afp)) != NULL) | 603 | while (!err && (fgets(ibuf, sizeof(ibuf), afp)) != NULL) |
679 | { | 604 | { |
605 | tidy_line(tbuf, ibuf); | ||
680 | ilen = strlen(ibuf); | 606 | ilen = strlen(ibuf); |
681 | /* printf("step=%d ibuf=%s",step,ibuf); */ | 607 | /* printf("step=%d ibuf=%s",step,ibuf); */ |
682 | switch (step) | 608 | switch (step) |
@@ -730,12 +656,14 @@ int proc_file(char *rqfile) | |||
730 | strncpy(amode, xp+1, n); | 656 | strncpy(amode, xp+1, n); |
731 | amode[n] = '\0'; | 657 | amode[n] = '\0'; |
732 | /* amode[3] = '\0'; */ | 658 | /* amode[3] = '\0'; */ |
733 | printf("Test = %s, Mode = %s\n", atest, amode); | 659 | if (VERBOSE) |
660 | printf("Test = %s, Mode = %s\n", atest, amode); | ||
734 | } | 661 | } |
735 | else if (strncasecmp(pp, "Key Length : ", 13) == 0) | 662 | else if (strncasecmp(pp, "Key Length : ", 13) == 0) |
736 | { | 663 | { |
737 | akeysz = atoi(pp+13); | 664 | akeysz = atoi(pp+13); |
738 | printf("Key size = %d\n", akeysz); | 665 | if (VERBOSE) |
666 | printf("Key size = %d\n", akeysz); | ||
739 | } | 667 | } |
740 | } | 668 | } |
741 | } | 669 | } |
@@ -780,7 +708,7 @@ int proc_file(char *rqfile) | |||
780 | } | 708 | } |
781 | else | 709 | else |
782 | { | 710 | { |
783 | len = hex2bin((char*)ibuf+6, strlen(ibuf+6)-1, aKey); | 711 | len = hex2bin((char*)ibuf+6, aKey); |
784 | if (len < 0) | 712 | if (len < 0) |
785 | { | 713 | { |
786 | printf("Invalid KEY\n"); | 714 | printf("Invalid KEY\n"); |
@@ -807,7 +735,7 @@ int proc_file(char *rqfile) | |||
807 | } | 735 | } |
808 | else | 736 | else |
809 | { | 737 | { |
810 | len = hex2bin((char*)ibuf+5, strlen(ibuf+5)-1, iVec); | 738 | len = hex2bin((char*)ibuf+5, iVec); |
811 | if (len < 0) | 739 | if (len < 0) |
812 | { | 740 | { |
813 | printf("Invalid IV\n"); | 741 | printf("Invalid IV\n"); |
@@ -832,7 +760,7 @@ int proc_file(char *rqfile) | |||
832 | if(!strcmp(amode,"CFB1")) | 760 | if(!strcmp(amode,"CFB1")) |
833 | len=bint2bin(ibuf+12,nn-1,plaintext); | 761 | len=bint2bin(ibuf+12,nn-1,plaintext); |
834 | else | 762 | else |
835 | len=hex2bin(ibuf+12, nn-1,plaintext); | 763 | len=hex2bin(ibuf+12, plaintext); |
836 | if (len < 0) | 764 | if (len < 0) |
837 | { | 765 | { |
838 | printf("Invalid PLAINTEXT: %s", ibuf+12); | 766 | printf("Invalid PLAINTEXT: %s", ibuf+12); |
@@ -875,7 +803,7 @@ int proc_file(char *rqfile) | |||
875 | if(!strcmp(amode,"CFB1")) | 803 | if(!strcmp(amode,"CFB1")) |
876 | len=bint2bin(ibuf+13,strlen(ibuf+13)-1,ciphertext); | 804 | len=bint2bin(ibuf+13,strlen(ibuf+13)-1,ciphertext); |
877 | else | 805 | else |
878 | len = hex2bin(ibuf+13,strlen(ibuf+13)-1,ciphertext); | 806 | len = hex2bin(ibuf+13,ciphertext); |
879 | if (len < 0) | 807 | if (len < 0) |
880 | { | 808 | { |
881 | printf("Invalid CIPHERTEXT\n"); | 809 | printf("Invalid CIPHERTEXT\n"); |
@@ -933,19 +861,18 @@ int proc_file(char *rqfile) | |||
933 | --------------------------------------------------*/ | 861 | --------------------------------------------------*/ |
934 | int main(int argc, char **argv) | 862 | int main(int argc, char **argv) |
935 | { | 863 | { |
936 | char *rqlist = "req.txt"; | 864 | char *rqlist = "req.txt", *rspfile = NULL; |
937 | FILE *fp = NULL; | 865 | FILE *fp = NULL; |
938 | char fn[250] = "", rfn[256] = ""; | 866 | char fn[250] = "", rfn[256] = ""; |
939 | int f_opt = 0, d_opt = 1; | 867 | int f_opt = 0, d_opt = 1; |
940 | 868 | ||
941 | #ifdef OPENSSL_FIPS | 869 | #ifdef OPENSSL_FIPS |
942 | if(!FIPS_mode_set(1,argv[0])) | 870 | if(!FIPS_mode_set(1)) |
943 | { | 871 | { |
944 | ERR_print_errors(BIO_new_fp(stderr,BIO_NOCLOSE)); | 872 | do_print_errors(); |
945 | EXIT(1); | 873 | EXIT(1); |
946 | } | 874 | } |
947 | #endif | 875 | #endif |
948 | ERR_load_crypto_strings(); | ||
949 | if (argc > 1) | 876 | if (argc > 1) |
950 | { | 877 | { |
951 | if (strcasecmp(argv[1], "-d") == 0) | 878 | if (strcasecmp(argv[1], "-d") == 0) |
@@ -970,7 +897,10 @@ int main(int argc, char **argv) | |||
970 | if (d_opt) | 897 | if (d_opt) |
971 | rqlist = argv[2]; | 898 | rqlist = argv[2]; |
972 | else | 899 | else |
900 | { | ||
973 | strcpy(fn, argv[2]); | 901 | strcpy(fn, argv[2]); |
902 | rspfile = argv[3]; | ||
903 | } | ||
974 | } | 904 | } |
975 | if (d_opt) | 905 | if (d_opt) |
976 | { /* list of files (directory) */ | 906 | { /* list of files (directory) */ |
@@ -983,8 +913,9 @@ int main(int argc, char **argv) | |||
983 | { | 913 | { |
984 | strtok(fn, "\r\n"); | 914 | strtok(fn, "\r\n"); |
985 | strcpy(rfn, fn); | 915 | strcpy(rfn, fn); |
986 | printf("Processing: %s\n", rfn); | 916 | if (VERBOSE) |
987 | if (proc_file(rfn)) | 917 | printf("Processing: %s\n", rfn); |
918 | if (proc_file(rfn, rspfile)) | ||
988 | { | 919 | { |
989 | printf(">>> Processing failed for: %s <<<\n", rfn); | 920 | printf(">>> Processing failed for: %s <<<\n", rfn); |
990 | EXIT(1); | 921 | EXIT(1); |
@@ -994,8 +925,9 @@ int main(int argc, char **argv) | |||
994 | } | 925 | } |
995 | else /* single file */ | 926 | else /* single file */ |
996 | { | 927 | { |
997 | printf("Processing: %s\n", fn); | 928 | if (VERBOSE) |
998 | if (proc_file(fn)) | 929 | printf("Processing: %s\n", fn); |
930 | if (proc_file(fn, rspfile)) | ||
999 | { | 931 | { |
1000 | printf(">>> Processing failed for: %s <<<\n", fn); | 932 | printf(">>> Processing failed for: %s <<<\n", fn); |
1001 | } | 933 | } |
@@ -1003,3 +935,5 @@ int main(int argc, char **argv) | |||
1003 | EXIT(0); | 935 | EXIT(0); |
1004 | return 0; | 936 | return 0; |
1005 | } | 937 | } |
938 | |||
939 | #endif | ||
diff --git a/src/lib/libssl/src/fips/des/Makefile b/src/lib/libssl/src/fips/des/Makefile index 87a5329d53..ba1d0952b9 100644 --- a/src/lib/libssl/src/fips/des/Makefile +++ b/src/lib/libssl/src/fips/des/Makefile | |||
@@ -1,5 +1,5 @@ | |||
1 | # | 1 | # |
2 | # SSLeay/fips/des/Makefile | 2 | # OpenSSL/fips/des/Makefile |
3 | # | 3 | # |
4 | 4 | ||
5 | DIR= des | 5 | DIR= des |
@@ -15,7 +15,8 @@ MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) | |||
15 | MAKEFILE= Makefile | 15 | MAKEFILE= Makefile |
16 | AR= ar r | 16 | AR= ar r |
17 | 17 | ||
18 | FIPS_DES_ENC=fips_des_enc.o | 18 | ASFLAGS= $(INCLUDES) $(ASFLAG) |
19 | AFLAGS= $(ASFLAGS) | ||
19 | 20 | ||
20 | CFLAGS= $(INCLUDES) $(CFLAG) | 21 | CFLAGS= $(INCLUDES) $(CFLAG) |
21 | 22 | ||
@@ -24,28 +25,23 @@ TEST= fips_desmovs.c | |||
24 | APPS= | 25 | APPS= |
25 | 26 | ||
26 | LIB=$(TOP)/libcrypto.a | 27 | LIB=$(TOP)/libcrypto.a |
27 | LIBSRC=fips_des_enc.c asm/fips-dx86-elf.s fips_des_selftest.c fips_set_key.c | 28 | LIBSRC=fips_des_selftest.c |
28 | LIBOBJ=$(FIPS_DES_ENC) fips_des_selftest.o fips_set_key.o | 29 | LIBOBJ=fips_des_selftest.o |
29 | 30 | ||
30 | SRC= $(LIBSRC) | 31 | SRC= $(LIBSRC) |
31 | 32 | ||
32 | EXHEADER= | 33 | EXHEADER= |
33 | HEADER= $(EXHEADER) fips_des_locl.h | 34 | HEADER= |
34 | 35 | ||
35 | ALL= $(GENERAL) $(SRC) $(HEADER) | 36 | ALL= $(GENERAL) $(SRC) $(HEADER) |
36 | 37 | ||
37 | top: | 38 | top: |
38 | (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) sub_all) | 39 | (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) sub_all) |
39 | 40 | ||
40 | all: check lib | 41 | all: lib |
41 | |||
42 | check: | ||
43 | TOP=`pwd`/$(TOP) ../fips_check_sha1 fingerprint.sha1 $(SRC) $(HEADER) | ||
44 | 42 | ||
45 | lib: $(LIBOBJ) | 43 | lib: $(LIBOBJ) |
46 | $(AR) $(LIB) $(LIBOBJ) | 44 | @echo $(LIBOBJ) > lib |
47 | $(RANLIB) $(LIB) || echo Never mind. | ||
48 | @sleep 2; touch lib | ||
49 | 45 | ||
50 | files: | 46 | files: |
51 | $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO | 47 | $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO |
@@ -67,26 +63,11 @@ tags: | |||
67 | 63 | ||
68 | tests: | 64 | tests: |
69 | 65 | ||
70 | top_fips_desmovs: | 66 | fips_test: |
71 | (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) TARGET=fips_desmovs sub_target) | 67 | -find ../testvectors/tdes/req -name '*.req' > testlist |
72 | 68 | -rm -rf ../testvectors/tdes/rsp | |
73 | fips_desmovs: fips_desmovs.o $(TOP)/libcrypto.a | 69 | mkdir ../testvectors/tdes/rsp |
74 | $(CC) $(CFLAGS) -o fips_desmovs fips_desmovs.o $(PEX_LIBS) $(TOP)/libcrypto.a $(EX_LIBS) | 70 | if [ -s testlist ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_desmovs -d testlist; fi |
75 | TOP=$(TOP) $(TOP)/fips/openssl_fips_fingerprint $(TOP)/libcrypto.a fips_desmovs | ||
76 | |||
77 | fips_test: top_fips_desmovs | ||
78 | find ../testvectors/des/req -name '*.req' > testlist | ||
79 | -rm -rf ../testvectors/des/rsp | ||
80 | mkdir ../testvectors/des/rsp | ||
81 | ./fips_desmovs -d testlist | ||
82 | find ../testvectors/des2/req -name '*.req' > testlist | ||
83 | -rm -rf ../testvectors/des2/rsp | ||
84 | mkdir ../testvectors/des2/rsp | ||
85 | ./fips_desmovs -d testlist | ||
86 | find ../testvectors/des3/req -name '*.req' > testlist | ||
87 | -rm -rf ../testvectors/des3/rsp | ||
88 | mkdir ../testvectors/des3/rsp | ||
89 | ./fips_desmovs -d testlist | ||
90 | 71 | ||
91 | lint: | 72 | lint: |
92 | lint -DLINT $(INCLUDES) $(SRC)>fluff | 73 | lint -DLINT $(INCLUDES) $(SRC)>fluff |
@@ -99,57 +80,32 @@ dclean: | |||
99 | mv -f Makefile.new $(MAKEFILE) | 80 | mv -f Makefile.new $(MAKEFILE) |
100 | 81 | ||
101 | clean: | 82 | clean: |
102 | rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff | 83 | rm -f *.o asm/*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff testlist |
103 | # DO NOT DELETE THIS LINE -- make depend depends on it. | 84 | # DO NOT DELETE THIS LINE -- make depend depends on it. |
104 | 85 | ||
105 | fips_des_enc.o: ../../e_os.h ../../include/openssl/crypto.h | 86 | fips_des_selftest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h |
106 | fips_des_enc.o: ../../include/openssl/des.h ../../include/openssl/des_old.h | 87 | fips_des_selftest.o: ../../include/openssl/crypto.h |
107 | fips_des_enc.o: ../../include/openssl/e_os2.h ../../include/openssl/fips.h | ||
108 | fips_des_enc.o: ../../include/openssl/opensslconf.h | ||
109 | fips_des_enc.o: ../../include/openssl/opensslv.h | ||
110 | fips_des_enc.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
111 | fips_des_enc.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h | ||
112 | fips_des_enc.o: ../../include/openssl/ui_compat.h fips_des_enc.c | ||
113 | fips_des_enc.o: fips_des_locl.h | ||
114 | fips_des_selftest.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h | ||
115 | fips_des_selftest.o: ../../include/openssl/des.h | ||
116 | fips_des_selftest.o: ../../include/openssl/des_old.h | ||
117 | fips_des_selftest.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | 88 | fips_des_selftest.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
118 | fips_des_selftest.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h | 89 | fips_des_selftest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
90 | fips_des_selftest.o: ../../include/openssl/lhash.h | ||
91 | fips_des_selftest.o: ../../include/openssl/obj_mac.h | ||
92 | fips_des_selftest.o: ../../include/openssl/objects.h | ||
119 | fips_des_selftest.o: ../../include/openssl/opensslconf.h | 93 | fips_des_selftest.o: ../../include/openssl/opensslconf.h |
120 | fips_des_selftest.o: ../../include/openssl/opensslv.h | 94 | fips_des_selftest.o: ../../include/openssl/opensslv.h |
95 | fips_des_selftest.o: ../../include/openssl/ossl_typ.h | ||
121 | fips_des_selftest.o: ../../include/openssl/safestack.h | 96 | fips_des_selftest.o: ../../include/openssl/safestack.h |
122 | fips_des_selftest.o: ../../include/openssl/stack.h | 97 | fips_des_selftest.o: ../../include/openssl/stack.h |
123 | fips_des_selftest.o: ../../include/openssl/symhacks.h | 98 | fips_des_selftest.o: ../../include/openssl/symhacks.h fips_des_selftest.c |
124 | fips_des_selftest.o: ../../include/openssl/ui.h | 99 | fips_desmovs.o: ../../e_os.h ../../include/openssl/asn1.h |
125 | fips_des_selftest.o: ../../include/openssl/ui_compat.h fips_des_selftest.c | 100 | fips_desmovs.o: ../../include/openssl/bio.h ../../include/openssl/bn.h |
126 | fips_desmovs.o: ../../e_os.h ../../include/openssl/aes.h | 101 | fips_desmovs.o: ../../include/openssl/crypto.h ../../include/openssl/des.h |
127 | fips_desmovs.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | 102 | fips_desmovs.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h |
128 | fips_desmovs.o: ../../include/openssl/blowfish.h ../../include/openssl/bn.h | 103 | fips_desmovs.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
129 | fips_desmovs.o: ../../include/openssl/cast.h ../../include/openssl/crypto.h | 104 | fips_desmovs.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
130 | fips_desmovs.o: ../../include/openssl/des.h ../../include/openssl/des_old.h | ||
131 | fips_desmovs.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h | ||
132 | fips_desmovs.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
133 | fips_desmovs.o: ../../include/openssl/evp.h ../../include/openssl/fips.h | ||
134 | fips_desmovs.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h | ||
135 | fips_desmovs.o: ../../include/openssl/md2.h ../../include/openssl/md4.h | ||
136 | fips_desmovs.o: ../../include/openssl/md5.h ../../include/openssl/mdc2.h | ||
137 | fips_desmovs.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | 105 | fips_desmovs.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
138 | fips_desmovs.o: ../../include/openssl/opensslconf.h | 106 | fips_desmovs.o: ../../include/openssl/opensslconf.h |
139 | fips_desmovs.o: ../../include/openssl/opensslv.h | 107 | fips_desmovs.o: ../../include/openssl/opensslv.h |
140 | fips_desmovs.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rc2.h | 108 | fips_desmovs.o: ../../include/openssl/ossl_typ.h |
141 | fips_desmovs.o: ../../include/openssl/rc4.h ../../include/openssl/rc5.h | 109 | fips_desmovs.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h |
142 | fips_desmovs.o: ../../include/openssl/ripemd.h ../../include/openssl/rsa.h | 110 | fips_desmovs.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h |
143 | fips_desmovs.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | 111 | fips_desmovs.o: ../../include/openssl/ui_compat.h ../fips_utl.h fips_desmovs.c |
144 | fips_desmovs.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
145 | fips_desmovs.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h | ||
146 | fips_desmovs.o: fips_desmovs.c | ||
147 | fips_set_key.o: ../../e_os.h ../../include/openssl/crypto.h | ||
148 | fips_set_key.o: ../../include/openssl/des.h ../../include/openssl/des_old.h | ||
149 | fips_set_key.o: ../../include/openssl/e_os2.h ../../include/openssl/fips.h | ||
150 | fips_set_key.o: ../../include/openssl/opensslconf.h | ||
151 | fips_set_key.o: ../../include/openssl/opensslv.h | ||
152 | fips_set_key.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
153 | fips_set_key.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h | ||
154 | fips_set_key.o: ../../include/openssl/ui_compat.h fips_des_locl.h | ||
155 | fips_set_key.o: fips_set_key.c | ||
diff --git a/src/lib/libssl/src/fips/des/fips_des_selftest.c b/src/lib/libssl/src/fips/des/fips_des_selftest.c index 3e0778eb5e..61c39ce80b 100644 --- a/src/lib/libssl/src/fips/des/fips_des_selftest.c +++ b/src/lib/libssl/src/fips/des/fips_des_selftest.c | |||
@@ -50,46 +50,27 @@ | |||
50 | #include <string.h> | 50 | #include <string.h> |
51 | #include <openssl/err.h> | 51 | #include <openssl/err.h> |
52 | #include <openssl/fips.h> | 52 | #include <openssl/fips.h> |
53 | #include <openssl/des.h> | 53 | #include <openssl/evp.h> |
54 | #include <openssl/opensslconf.h> | 54 | #include <openssl/opensslconf.h> |
55 | 55 | ||
56 | #ifdef OPENSSL_FIPS | 56 | #ifdef OPENSSL_FIPS |
57 | static struct | ||
58 | { | ||
59 | DES_cblock key; | ||
60 | unsigned char plaintext[8]; | ||
61 | unsigned char ciphertext[8]; | ||
62 | } tests[]= | ||
63 | { | ||
64 | { | ||
65 | { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, | ||
66 | { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, | ||
67 | { 0x8C,0xA6,0x4D,0xE9,0xC1,0xB1,0x23,0xA7 } | ||
68 | }, | ||
69 | { | ||
70 | { 0xFE,0xDC,0xBA,0x98,0x76,0x54,0x32,0x10 }, | ||
71 | { 0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF }, | ||
72 | { 0xED,0x39,0xD9,0x50,0xFA,0x74,0xBC,0xC4 }, | ||
73 | }, | ||
74 | }; | ||
75 | 57 | ||
76 | static struct | 58 | static struct |
77 | { | 59 | { |
78 | DES_cblock key1; | 60 | unsigned char key[16]; |
79 | DES_cblock key2; | ||
80 | unsigned char plaintext[8]; | 61 | unsigned char plaintext[8]; |
81 | unsigned char ciphertext[8]; | 62 | unsigned char ciphertext[8]; |
82 | } tests2[]= | 63 | } tests2[]= |
83 | { | 64 | { |
84 | { | 65 | { |
85 | { 0x7c,0x4f,0x6e,0xf7,0xa2,0x04,0x16,0xec }, | 66 | { 0x7c,0x4f,0x6e,0xf7,0xa2,0x04,0x16,0xec, |
86 | { 0x0b,0x6b,0x7c,0x9e,0x5e,0x19,0xa7,0xc4 }, | 67 | 0x0b,0x6b,0x7c,0x9e,0x5e,0x19,0xa7,0xc4 }, |
87 | { 0x06,0xa7,0xd8,0x79,0xaa,0xce,0x69,0xef }, | 68 | { 0x06,0xa7,0xd8,0x79,0xaa,0xce,0x69,0xef }, |
88 | { 0x4c,0x11,0x17,0x55,0xbf,0xc4,0x4e,0xfd } | 69 | { 0x4c,0x11,0x17,0x55,0xbf,0xc4,0x4e,0xfd } |
89 | }, | 70 | }, |
90 | { | 71 | { |
91 | { 0x5d,0x9e,0x01,0xd3,0x25,0xc7,0x3e,0x34 }, | 72 | { 0x5d,0x9e,0x01,0xd3,0x25,0xc7,0x3e,0x34, |
92 | { 0x01,0x16,0x7c,0x85,0x23,0xdf,0xe0,0x68 }, | 73 | 0x01,0x16,0x7c,0x85,0x23,0xdf,0xe0,0x68 }, |
93 | { 0x9c,0x50,0x09,0x0f,0x5e,0x7d,0x69,0x7e }, | 74 | { 0x9c,0x50,0x09,0x0f,0x5e,0x7d,0x69,0x7e }, |
94 | { 0xd2,0x0b,0x18,0xdf,0xd9,0x0d,0x9e,0xff }, | 75 | { 0xd2,0x0b,0x18,0xdf,0xd9,0x0d,0x9e,0xff }, |
95 | } | 76 | } |
@@ -97,24 +78,22 @@ static struct | |||
97 | 78 | ||
98 | static struct | 79 | static struct |
99 | { | 80 | { |
100 | DES_cblock key1; | 81 | unsigned char key[24]; |
101 | DES_cblock key2; | ||
102 | DES_cblock key3; | ||
103 | unsigned char plaintext[8]; | 82 | unsigned char plaintext[8]; |
104 | unsigned char ciphertext[8]; | 83 | unsigned char ciphertext[8]; |
105 | } tests3[]= | 84 | } tests3[]= |
106 | { | 85 | { |
107 | { | 86 | { |
108 | { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, | 87 | { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
109 | { 0xFE,0xDC,0xBA,0x98,0x76,0x54,0x32,0x10 }, | 88 | 0xFE,0xDC,0xBA,0x98,0x76,0x54,0x32,0x10, |
110 | { 0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0 }, | 89 | 0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0 }, |
111 | { 0x8f,0x8f,0xbf,0x9b,0x5d,0x48,0xb4,0x1c}, | 90 | { 0x8f,0x8f,0xbf,0x9b,0x5d,0x48,0xb4,0x1c }, |
112 | { 0x59,0x8c,0xe5,0xd3,0x6c,0xa2,0xea,0x1b}, | 91 | { 0x59,0x8c,0xe5,0xd3,0x6c,0xa2,0xea,0x1b }, |
113 | }, | 92 | }, |
114 | { | 93 | { |
115 | { 0xDC,0xBA,0x98,0x76,0x54,0x32,0x10,0xFE }, | 94 | { 0xDC,0xBA,0x98,0x76,0x54,0x32,0x10,0xFE, |
116 | { 0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF }, | 95 | 0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF, |
117 | { 0xED,0x39,0xD9,0x50,0xFA,0x74,0xBC,0xC4 }, | 96 | 0xED,0x39,0xD9,0x50,0xFA,0x74,0xBC,0xC4 }, |
118 | { 0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF }, | 97 | { 0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF }, |
119 | { 0x11,0x25,0xb0,0x35,0xbe,0xa0,0x82,0x86 }, | 98 | { 0x11,0x25,0xb0,0x35,0xbe,0xa0,0x82,0x86 }, |
120 | }, | 99 | }, |
@@ -122,79 +101,37 @@ static struct | |||
122 | 101 | ||
123 | void FIPS_corrupt_des() | 102 | void FIPS_corrupt_des() |
124 | { | 103 | { |
125 | tests[0].plaintext[0]++; | 104 | tests2[0].plaintext[0]++; |
126 | } | 105 | } |
127 | 106 | ||
128 | int FIPS_selftest_des() | 107 | int FIPS_selftest_des() |
129 | { | 108 | { |
130 | int n; | 109 | int n, ret = 0; |
131 | 110 | EVP_CIPHER_CTX ctx; | |
132 | /* Encrypt/decrypt with DES and compare to known answers */ | 111 | EVP_CIPHER_CTX_init(&ctx); |
133 | for(n=0 ; n < 2 ; ++n) | ||
134 | { | ||
135 | DES_key_schedule key; | ||
136 | DES_cblock buf; | ||
137 | |||
138 | DES_set_key(&tests[n].key,&key); | ||
139 | DES_ecb_encrypt(&tests[n].plaintext,&buf,&key,1); | ||
140 | if(memcmp(buf,tests[n].ciphertext,sizeof buf)) | ||
141 | { | ||
142 | FIPSerr(FIPS_F_FIPS_SELFTEST_DES,FIPS_R_SELFTEST_FAILED); | ||
143 | return 0; | ||
144 | } | ||
145 | DES_ecb_encrypt(&tests[n].ciphertext,&buf,&key,0); | ||
146 | if(memcmp(buf,tests[n].plaintext,sizeof buf)) | ||
147 | { | ||
148 | FIPSerr(FIPS_F_FIPS_SELFTEST_DES,FIPS_R_SELFTEST_FAILED); | ||
149 | return 0; | ||
150 | } | ||
151 | } | ||
152 | |||
153 | /* Encrypt/decrypt with 2-key 3DES and compare to known answers */ | 112 | /* Encrypt/decrypt with 2-key 3DES and compare to known answers */ |
154 | for(n=0 ; n < 2 ; ++n) | 113 | for(n=0 ; n < 2 ; ++n) |
155 | { | 114 | { |
156 | DES_key_schedule key1, key2; | 115 | if (!fips_cipher_test(&ctx, EVP_des_ede_ecb(), |
157 | unsigned char buf[8]; | 116 | tests2[n].key, NULL, |
158 | 117 | tests2[n].plaintext, tests2[n].ciphertext, 8)) | |
159 | DES_set_key(&tests2[n].key1,&key1); | 118 | goto err; |
160 | DES_set_key(&tests2[n].key2,&key2); | ||
161 | DES_ecb2_encrypt(tests2[n].plaintext,buf,&key1,&key2,1); | ||
162 | if(memcmp(buf,tests2[n].ciphertext,sizeof buf)) | ||
163 | { | ||
164 | FIPSerr(FIPS_F_FIPS_SELFTEST_DES,FIPS_R_SELFTEST_FAILED); | ||
165 | return 0; | ||
166 | } | ||
167 | DES_ecb2_encrypt(tests2[n].ciphertext,buf,&key1,&key2,0); | ||
168 | if(memcmp(buf,tests2[n].plaintext,sizeof buf)) | ||
169 | { | ||
170 | FIPSerr(FIPS_F_FIPS_SELFTEST_DES,FIPS_R_SELFTEST_FAILED); | ||
171 | return 0; | ||
172 | } | ||
173 | } | 119 | } |
174 | 120 | ||
175 | /* Encrypt/decrypt with 3DES and compare to known answers */ | 121 | /* Encrypt/decrypt with 3DES and compare to known answers */ |
176 | for(n=0 ; n < 2 ; ++n) | 122 | for(n=0 ; n < 2 ; ++n) |
177 | { | 123 | { |
178 | DES_key_schedule key1, key2, key3; | 124 | if (!fips_cipher_test(&ctx, EVP_des_ede3_ecb(), |
179 | unsigned char buf[8]; | 125 | tests3[n].key, NULL, |
180 | 126 | tests3[n].plaintext, tests3[n].ciphertext, 8)) | |
181 | DES_set_key(&tests3[n].key1,&key1); | 127 | goto err; |
182 | DES_set_key(&tests3[n].key2,&key2); | ||
183 | DES_set_key(&tests3[n].key3,&key3); | ||
184 | DES_ecb3_encrypt(tests3[n].plaintext,buf,&key1,&key2,&key3,1); | ||
185 | if(memcmp(buf,tests3[n].ciphertext,sizeof buf)) | ||
186 | { | ||
187 | FIPSerr(FIPS_F_FIPS_SELFTEST_DES,FIPS_R_SELFTEST_FAILED); | ||
188 | return 0; | ||
189 | } | ||
190 | DES_ecb3_encrypt(tests3[n].ciphertext,buf,&key1,&key2,&key3,0); | ||
191 | if(memcmp(buf,tests3[n].plaintext,sizeof buf)) | ||
192 | { | ||
193 | FIPSerr(FIPS_F_FIPS_SELFTEST_DES,FIPS_R_SELFTEST_FAILED); | ||
194 | return 0; | ||
195 | } | ||
196 | } | 128 | } |
129 | ret = 1; | ||
130 | err: | ||
131 | EVP_CIPHER_CTX_cleanup(&ctx); | ||
132 | if (ret == 0) | ||
133 | FIPSerr(FIPS_F_FIPS_SELFTEST_DES,FIPS_R_SELFTEST_FAILED); | ||
197 | 134 | ||
198 | return 1; | 135 | return ret; |
199 | } | 136 | } |
200 | #endif | 137 | #endif |
diff --git a/src/lib/libssl/src/fips/des/fips_desmovs.c b/src/lib/libssl/src/fips/des/fips_desmovs.c index d1b60c1a40..2d3424cf9f 100644 --- a/src/lib/libssl/src/fips/des/fips_desmovs.c +++ b/src/lib/libssl/src/fips/des/fips_desmovs.c | |||
@@ -63,18 +63,30 @@ | |||
63 | #include <string.h> | 63 | #include <string.h> |
64 | #include <errno.h> | 64 | #include <errno.h> |
65 | #include <assert.h> | 65 | #include <assert.h> |
66 | 66 | #include <ctype.h> | |
67 | #include <openssl/des.h> | 67 | #include <openssl/des.h> |
68 | #include <openssl/evp.h> | 68 | #include <openssl/evp.h> |
69 | #include <openssl/fips.h> | 69 | #include <openssl/bn.h> |
70 | |||
70 | #include <openssl/err.h> | 71 | #include <openssl/err.h> |
71 | #include "e_os.h" | 72 | #include "e_os.h" |
72 | 73 | ||
73 | /*#define AES_BLOCK_SIZE 16*/ | 74 | #ifndef OPENSSL_FIPS |
74 | 75 | ||
75 | #define VERBOSE 0 | 76 | int main(int argc, char *argv[]) |
77 | { | ||
78 | printf("No FIPS DES support\n"); | ||
79 | return(0); | ||
80 | } | ||
76 | 81 | ||
77 | /*-----------------------------------------------*/ | 82 | #else |
83 | |||
84 | #include <openssl/fips.h> | ||
85 | #include "fips_utl.h" | ||
86 | |||
87 | #define DES_BLOCK_SIZE 8 | ||
88 | |||
89 | #define VERBOSE 0 | ||
78 | 90 | ||
79 | int DESTest(EVP_CIPHER_CTX *ctx, | 91 | int DESTest(EVP_CIPHER_CTX *ctx, |
80 | char *amode, int akeysz, unsigned char *aKey, | 92 | char *amode, int akeysz, unsigned char *aKey, |
@@ -83,181 +95,41 @@ int DESTest(EVP_CIPHER_CTX *ctx, | |||
83 | unsigned char *out, unsigned char *in, int len) | 95 | unsigned char *out, unsigned char *in, int len) |
84 | { | 96 | { |
85 | const EVP_CIPHER *cipher = NULL; | 97 | const EVP_CIPHER *cipher = NULL; |
86 | int kt = 0; | ||
87 | 98 | ||
88 | if (ctx) | 99 | if (akeysz != 192) |
89 | memset(ctx, 0, sizeof(EVP_CIPHER_CTX)); | 100 | { |
101 | printf("Invalid key size: %d\n", akeysz); | ||
102 | EXIT(1); | ||
103 | } | ||
90 | 104 | ||
91 | if (strcasecmp(amode, "CBC") == 0) | 105 | if (strcasecmp(amode, "CBC") == 0) |
92 | kt = 1000; | 106 | cipher = EVP_des_ede3_cbc(); |
93 | else if (strcasecmp(amode, "ECB") == 0) | 107 | else if (strcasecmp(amode, "ECB") == 0) |
94 | kt = 2000; | 108 | cipher = EVP_des_ede3_ecb(); |
95 | else if (strcasecmp(amode, "CFB64") == 0) | 109 | else if (strcasecmp(amode, "CFB64") == 0) |
96 | kt = 3000; | 110 | cipher = EVP_des_ede3_cfb64(); |
97 | else if (strncasecmp(amode, "OFB", 3) == 0) | 111 | else if (strncasecmp(amode, "OFB", 3) == 0) |
98 | kt = 4000; | 112 | cipher = EVP_des_ede3_ofb(); |
113 | #if 0 | ||
99 | else if(!strcasecmp(amode,"CFB1")) | 114 | else if(!strcasecmp(amode,"CFB1")) |
100 | kt=5000; | 115 | { |
116 | ctx->cbits = 1; | ||
117 | ctx->cmode = EVP_CIPH_CFB_MODE; | ||
118 | } | ||
119 | #endif | ||
101 | else if(!strcasecmp(amode,"CFB8")) | 120 | else if(!strcasecmp(amode,"CFB8")) |
102 | kt=6000; | 121 | cipher = EVP_des_ede3_cfb8(); |
103 | else | 122 | else |
104 | { | 123 | { |
105 | printf("Unknown mode: %s\n", amode); | 124 | printf("Unknown mode: %s\n", amode); |
106 | EXIT(1); | 125 | EXIT(1); |
107 | } | 126 | } |
108 | if (akeysz != 64 && akeysz != 192) | ||
109 | { | ||
110 | printf("Invalid key size: %d\n", akeysz); | ||
111 | EXIT(1); | ||
112 | } | ||
113 | else | ||
114 | { | ||
115 | kt += akeysz; | ||
116 | switch (kt) | ||
117 | { | ||
118 | case 1064: | ||
119 | cipher=EVP_des_cbc(); | ||
120 | break; | ||
121 | case 1192: | ||
122 | cipher=EVP_des_ede3_cbc(); | ||
123 | break; | ||
124 | case 2064: | ||
125 | cipher=EVP_des_ecb(); | ||
126 | break; | ||
127 | case 2192: | ||
128 | cipher=EVP_des_ede3_ecb(); | ||
129 | break; | ||
130 | case 3064: | ||
131 | cipher=EVP_des_cfb64(); | ||
132 | break; | ||
133 | case 3192: | ||
134 | cipher=EVP_des_ede3_cfb64(); | ||
135 | break; | ||
136 | case 4064: | ||
137 | cipher=EVP_des_ofb(); | ||
138 | break; | ||
139 | case 4192: | ||
140 | cipher=EVP_des_ede3_ofb(); | ||
141 | break; | ||
142 | case 5064: | ||
143 | cipher=EVP_des_cfb1(); | ||
144 | break; | ||
145 | case 5192: | ||
146 | cipher=EVP_des_ede3_cfb1(); | ||
147 | break; | ||
148 | case 6064: | ||
149 | cipher=EVP_des_cfb8(); | ||
150 | break; | ||
151 | case 6192: | ||
152 | cipher=EVP_des_ede3_cfb8(); | ||
153 | break; | ||
154 | default: | ||
155 | printf("Didn't handle mode %d\n",kt); | ||
156 | EXIT(1); | ||
157 | } | ||
158 | if(!EVP_CipherInit(ctx, cipher, aKey, iVec, dir)) | ||
159 | { | ||
160 | ERR_print_errors_fp(stderr); | ||
161 | EXIT(1); | ||
162 | } | ||
163 | EVP_Cipher(ctx, out, in, len); | ||
164 | } | ||
165 | return 1; | ||
166 | } | ||
167 | |||
168 | /*-----------------------------------------------*/ | ||
169 | |||
170 | int hex2bin(char *in, int len, unsigned char *out) | ||
171 | { | ||
172 | int n1, n2; | ||
173 | unsigned char ch; | ||
174 | |||
175 | for (n1 = 0, n2 = 0; n1 < len; ) | ||
176 | { /* first byte */ | ||
177 | if ((in[n1] >= '0') && (in[n1] <= '9')) | ||
178 | ch = in[n1++] - '0'; | ||
179 | else if ((in[n1] >= 'A') && (in[n1] <= 'F')) | ||
180 | ch = in[n1++] - 'A' + 10; | ||
181 | else if ((in[n1] >= 'a') && (in[n1] <= 'f')) | ||
182 | ch = in[n1++] - 'a' + 10; | ||
183 | else | ||
184 | return -1; | ||
185 | if(len == 1) | ||
186 | { | ||
187 | out[n2++]=ch; | ||
188 | break; | ||
189 | } | ||
190 | out[n2] = ch << 4; | ||
191 | /* second byte */ | ||
192 | if ((in[n1] >= '0') && (in[n1] <= '9')) | ||
193 | ch = in[n1++] - '0'; | ||
194 | else if ((in[n1] >= 'A') && (in[n1] <= 'F')) | ||
195 | ch = in[n1++] - 'A' + 10; | ||
196 | else if ((in[n1] >= 'a') && (in[n1] <= 'f')) | ||
197 | ch = in[n1++] - 'a' + 10; | ||
198 | else | ||
199 | return -1; | ||
200 | out[n2++] |= ch; | ||
201 | } | ||
202 | return n2; | ||
203 | } | ||
204 | |||
205 | /*-----------------------------------------------*/ | ||
206 | |||
207 | int bin2hex(unsigned char *in, int len, char *out) | ||
208 | { | ||
209 | int n1, n2; | ||
210 | unsigned char ch; | ||
211 | |||
212 | for (n1 = 0, n2 = 0; n1 < len; ++n1) | ||
213 | { | ||
214 | /* first nibble */ | ||
215 | ch = in[n1] >> 4; | ||
216 | if (ch <= 0x09) | ||
217 | out[n2++] = ch + '0'; | ||
218 | else | ||
219 | out[n2++] = ch - 10 + 'a'; | ||
220 | /* second nibble */ | ||
221 | ch = in[n1] & 0x0f; | ||
222 | if (ch <= 0x09) | ||
223 | out[n2++] = ch + '0'; | ||
224 | else | ||
225 | out[n2++] = ch - 10 + 'a'; | ||
226 | } | ||
227 | return n2; | ||
228 | } | ||
229 | 127 | ||
230 | /* NB: this return the number of _bits_ read */ | 128 | if (EVP_CipherInit_ex(ctx, cipher, NULL, aKey, iVec, dir) <= 0) |
231 | int bint2bin(const char *in, int len, unsigned char *out) | 129 | return 0; |
232 | { | 130 | EVP_Cipher(ctx, out, in, len); |
233 | int n; | ||
234 | 131 | ||
235 | memset(out,0,len); | 132 | return 1; |
236 | for(n=0 ; n < len ; ++n) | ||
237 | if(in[n] == '1') | ||
238 | out[n/8]|=(0x80 >> (n%8)); | ||
239 | return len; | ||
240 | } | ||
241 | |||
242 | int bin2bint(const unsigned char *in,int len,char *out) | ||
243 | { | ||
244 | int n; | ||
245 | |||
246 | for(n=0 ; n < len ; ++n) | ||
247 | out[n]=(in[n/8]&(0x80 >> (n%8))) ? '1' : '0'; | ||
248 | return n; | ||
249 | } | ||
250 | |||
251 | /*-----------------------------------------------*/ | ||
252 | |||
253 | void PrintValue(char *tag, unsigned char *val, int len) | ||
254 | { | ||
255 | #if VERBOSE | ||
256 | char obuf[2048]; | ||
257 | int olen; | ||
258 | olen = bin2hex(val, len, obuf); | ||
259 | printf("%s = %.*s\n", tag, olen, obuf); | ||
260 | #endif | ||
261 | } | 133 | } |
262 | 134 | ||
263 | void DebugValue(char *tag, unsigned char *val, int len) | 135 | void DebugValue(char *tag, unsigned char *val, int len) |
@@ -268,22 +140,6 @@ void DebugValue(char *tag, unsigned char *val, int len) | |||
268 | printf("%s = %.*s\n", tag, olen, obuf); | 140 | printf("%s = %.*s\n", tag, olen, obuf); |
269 | } | 141 | } |
270 | 142 | ||
271 | void OutputValue(char *tag, unsigned char *val, int len, FILE *rfp,int bitmode) | ||
272 | { | ||
273 | char obuf[2048]; | ||
274 | int olen; | ||
275 | |||
276 | if(bitmode) | ||
277 | olen=bin2bint(val,len,obuf); | ||
278 | else | ||
279 | olen=bin2hex(val,len,obuf); | ||
280 | |||
281 | fprintf(rfp, "%s = %.*s\n", tag, olen, obuf); | ||
282 | #if VERBOSE | ||
283 | printf("%s = %.*s\n", tag, olen, obuf); | ||
284 | #endif | ||
285 | } | ||
286 | |||
287 | void shiftin(unsigned char *dst,unsigned char *src,int nbits) | 143 | void shiftin(unsigned char *dst,unsigned char *src,int nbits) |
288 | { | 144 | { |
289 | int n; | 145 | int n; |
@@ -326,9 +182,10 @@ void do_mct(char *amode, | |||
326 | { | 182 | { |
327 | int j; | 183 | int j; |
328 | int n; | 184 | int n; |
329 | EVP_CIPHER_CTX ctx; | ||
330 | int kp=akeysz/64; | 185 | int kp=akeysz/64; |
331 | unsigned char old_iv[8]; | 186 | unsigned char old_iv[8]; |
187 | EVP_CIPHER_CTX ctx; | ||
188 | EVP_CIPHER_CTX_init(&ctx); | ||
332 | 189 | ||
333 | fprintf(rfp,"\nCOUNT = %d\n",i); | 190 | fprintf(rfp,"\nCOUNT = %d\n",i); |
334 | if(kp == 1) | 191 | if(kp == 1) |
@@ -410,11 +267,11 @@ void do_mct(char *amode, | |||
410 | } | 267 | } |
411 | } | 268 | } |
412 | 269 | ||
413 | int proc_file(char *rqfile) | 270 | int proc_file(char *rqfile, char *rspfile) |
414 | { | 271 | { |
415 | char afn[256], rfn[256]; | 272 | char afn[256], rfn[256]; |
416 | FILE *afp = NULL, *rfp = NULL; | 273 | FILE *afp = NULL, *rfp = NULL; |
417 | char ibuf[2048]; | 274 | char ibuf[2048], tbuf[2048]; |
418 | int ilen, len, ret = 0; | 275 | int ilen, len, ret = 0; |
419 | char amode[8] = ""; | 276 | char amode[8] = ""; |
420 | char atest[100] = ""; | 277 | char atest[100] = ""; |
@@ -426,6 +283,7 @@ int proc_file(char *rqfile) | |||
426 | char *rp; | 283 | char *rp; |
427 | EVP_CIPHER_CTX ctx; | 284 | EVP_CIPHER_CTX ctx; |
428 | int numkeys=1; | 285 | int numkeys=1; |
286 | EVP_CIPHER_CTX_init(&ctx); | ||
429 | 287 | ||
430 | if (!rqfile || !(*rqfile)) | 288 | if (!rqfile || !(*rqfile)) |
431 | { | 289 | { |
@@ -440,13 +298,21 @@ int proc_file(char *rqfile) | |||
440 | afn, strerror(errno)); | 298 | afn, strerror(errno)); |
441 | return -1; | 299 | return -1; |
442 | } | 300 | } |
443 | strcpy(rfn,afn); | 301 | if (!rspfile) |
444 | rp=strstr(rfn,"req/"); | 302 | { |
445 | assert(rp); | 303 | strcpy(rfn,afn); |
446 | memcpy(rp,"rsp",3); | 304 | rp=strstr(rfn,"req/"); |
447 | rp = strstr(rfn, ".req"); | 305 | #ifdef OPENSSL_SYS_WIN32 |
448 | memcpy(rp, ".rsp", 4); | 306 | if (!rp) |
449 | if ((rfp = fopen(rfn, "w")) == NULL) | 307 | rp=strstr(rfn,"req\\"); |
308 | #endif | ||
309 | assert(rp); | ||
310 | memcpy(rp,"rsp",3); | ||
311 | rp = strstr(rfn, ".req"); | ||
312 | memcpy(rp, ".rsp", 4); | ||
313 | rspfile = rfn; | ||
314 | } | ||
315 | if ((rfp = fopen(rspfile, "w")) == NULL) | ||
450 | { | 316 | { |
451 | printf("Cannot open file: %s, %s\n", | 317 | printf("Cannot open file: %s, %s\n", |
452 | rfn, strerror(errno)); | 318 | rfn, strerror(errno)); |
@@ -456,6 +322,7 @@ int proc_file(char *rqfile) | |||
456 | } | 322 | } |
457 | while (!err && (fgets(ibuf, sizeof(ibuf), afp)) != NULL) | 323 | while (!err && (fgets(ibuf, sizeof(ibuf), afp)) != NULL) |
458 | { | 324 | { |
325 | tidy_line(tbuf, ibuf); | ||
459 | ilen = strlen(ibuf); | 326 | ilen = strlen(ibuf); |
460 | /* printf("step=%d ibuf=%s",step,ibuf);*/ | 327 | /* printf("step=%d ibuf=%s",step,ibuf);*/ |
461 | if(step == 3 && !strcmp(amode,"ECB")) | 328 | if(step == 3 && !strcmp(amode,"ECB")) |
@@ -517,7 +384,8 @@ int proc_file(char *rqfile) | |||
517 | strncpy(amode, xp+1, n); | 384 | strncpy(amode, xp+1, n); |
518 | amode[n] = '\0'; | 385 | amode[n] = '\0'; |
519 | /* amode[3] = '\0'; */ | 386 | /* amode[3] = '\0'; */ |
520 | printf("Test=%s, Mode=%s\n",atest,amode); | 387 | if (VERBOSE) |
388 | printf("Test=%s, Mode=%s\n",atest,amode); | ||
521 | } | 389 | } |
522 | } | 390 | } |
523 | } | 391 | } |
@@ -576,7 +444,7 @@ int proc_file(char *rqfile) | |||
576 | if(!strncasecmp(ibuf,"KEY = ",6)) | 444 | if(!strncasecmp(ibuf,"KEY = ",6)) |
577 | { | 445 | { |
578 | akeysz=64; | 446 | akeysz=64; |
579 | len = hex2bin((char*)ibuf+6, strlen(ibuf+6)-1, aKey); | 447 | len = hex2bin((char*)ibuf+6, aKey); |
580 | if (len < 0) | 448 | if (len < 0) |
581 | { | 449 | { |
582 | printf("Invalid KEY\n"); | 450 | printf("Invalid KEY\n"); |
@@ -589,7 +457,7 @@ int proc_file(char *rqfile) | |||
589 | else if(!strncasecmp(ibuf,"KEYs = ",7)) | 457 | else if(!strncasecmp(ibuf,"KEYs = ",7)) |
590 | { | 458 | { |
591 | akeysz=64*3; | 459 | akeysz=64*3; |
592 | len=hex2bin(ibuf+7,strlen(ibuf+7)-1,aKey); | 460 | len=hex2bin(ibuf+7,aKey); |
593 | if(len != 8) | 461 | if(len != 8) |
594 | { | 462 | { |
595 | printf("Invalid KEY\n"); | 463 | printf("Invalid KEY\n"); |
@@ -607,7 +475,7 @@ int proc_file(char *rqfile) | |||
607 | int n=ibuf[3]-'1'; | 475 | int n=ibuf[3]-'1'; |
608 | 476 | ||
609 | akeysz=64*3; | 477 | akeysz=64*3; |
610 | len=hex2bin(ibuf+7,strlen(ibuf+7)-1,aKey+n*8); | 478 | len=hex2bin(ibuf+7,aKey+n*8); |
611 | if(len != 8) | 479 | if(len != 8) |
612 | { | 480 | { |
613 | printf("Invalid KEY\n"); | 481 | printf("Invalid KEY\n"); |
@@ -635,7 +503,7 @@ int proc_file(char *rqfile) | |||
635 | } | 503 | } |
636 | else | 504 | else |
637 | { | 505 | { |
638 | len = hex2bin((char*)ibuf+5, strlen(ibuf+5)-1, iVec); | 506 | len = hex2bin((char*)ibuf+5, iVec); |
639 | if (len < 0) | 507 | if (len < 0) |
640 | { | 508 | { |
641 | printf("Invalid IV\n"); | 509 | printf("Invalid IV\n"); |
@@ -660,7 +528,7 @@ int proc_file(char *rqfile) | |||
660 | if(!strcmp(amode,"CFB1")) | 528 | if(!strcmp(amode,"CFB1")) |
661 | len=bint2bin(ibuf+12,nn-1,plaintext); | 529 | len=bint2bin(ibuf+12,nn-1,plaintext); |
662 | else | 530 | else |
663 | len=hex2bin(ibuf+12, nn-1,plaintext); | 531 | len=hex2bin(ibuf+12, plaintext); |
664 | if (len < 0) | 532 | if (len < 0) |
665 | { | 533 | { |
666 | printf("Invalid PLAINTEXT: %s", ibuf+12); | 534 | printf("Invalid PLAINTEXT: %s", ibuf+12); |
@@ -701,7 +569,7 @@ int proc_file(char *rqfile) | |||
701 | if(!strcmp(amode,"CFB1")) | 569 | if(!strcmp(amode,"CFB1")) |
702 | len=bint2bin(ibuf+13,strlen(ibuf+13)-1,ciphertext); | 570 | len=bint2bin(ibuf+13,strlen(ibuf+13)-1,ciphertext); |
703 | else | 571 | else |
704 | len = hex2bin(ibuf+13,strlen(ibuf+13)-1,ciphertext); | 572 | len = hex2bin(ibuf+13,ciphertext); |
705 | if (len < 0) | 573 | if (len < 0) |
706 | { | 574 | { |
707 | printf("Invalid CIPHERTEXT\n"); | 575 | printf("Invalid CIPHERTEXT\n"); |
@@ -760,20 +628,18 @@ int proc_file(char *rqfile) | |||
760 | --------------------------------------------------*/ | 628 | --------------------------------------------------*/ |
761 | int main(int argc, char **argv) | 629 | int main(int argc, char **argv) |
762 | { | 630 | { |
763 | char *rqlist = "req.txt"; | 631 | char *rqlist = "req.txt", *rspfile = NULL; |
764 | FILE *fp = NULL; | 632 | FILE *fp = NULL; |
765 | char fn[250] = "", rfn[256] = ""; | 633 | char fn[250] = "", rfn[256] = ""; |
766 | int f_opt = 0, d_opt = 1; | 634 | int f_opt = 0, d_opt = 1; |
767 | 635 | ||
768 | #ifdef OPENSSL_FIPS | 636 | #ifdef OPENSSL_FIPS |
769 | if(!FIPS_mode_set(1,argv[0])) | 637 | if(!FIPS_mode_set(1)) |
770 | { | 638 | { |
771 | ERR_load_crypto_strings(); | 639 | do_print_errors(); |
772 | ERR_print_errors(BIO_new_fp(stderr,BIO_NOCLOSE)); | ||
773 | EXIT(1); | 640 | EXIT(1); |
774 | } | 641 | } |
775 | #endif | 642 | #endif |
776 | ERR_load_crypto_strings(); | ||
777 | if (argc > 1) | 643 | if (argc > 1) |
778 | { | 644 | { |
779 | if (strcasecmp(argv[1], "-d") == 0) | 645 | if (strcasecmp(argv[1], "-d") == 0) |
@@ -798,7 +664,10 @@ int main(int argc, char **argv) | |||
798 | if (d_opt) | 664 | if (d_opt) |
799 | rqlist = argv[2]; | 665 | rqlist = argv[2]; |
800 | else | 666 | else |
667 | { | ||
801 | strcpy(fn, argv[2]); | 668 | strcpy(fn, argv[2]); |
669 | rspfile = argv[3]; | ||
670 | } | ||
802 | } | 671 | } |
803 | if (d_opt) | 672 | if (d_opt) |
804 | { /* list of files (directory) */ | 673 | { /* list of files (directory) */ |
@@ -812,7 +681,7 @@ int main(int argc, char **argv) | |||
812 | strtok(fn, "\r\n"); | 681 | strtok(fn, "\r\n"); |
813 | strcpy(rfn, fn); | 682 | strcpy(rfn, fn); |
814 | printf("Processing: %s\n", rfn); | 683 | printf("Processing: %s\n", rfn); |
815 | if (proc_file(rfn)) | 684 | if (proc_file(rfn, rspfile)) |
816 | { | 685 | { |
817 | printf(">>> Processing failed for: %s <<<\n", rfn); | 686 | printf(">>> Processing failed for: %s <<<\n", rfn); |
818 | EXIT(1); | 687 | EXIT(1); |
@@ -822,8 +691,9 @@ int main(int argc, char **argv) | |||
822 | } | 691 | } |
823 | else /* single file */ | 692 | else /* single file */ |
824 | { | 693 | { |
825 | printf("Processing: %s\n", fn); | 694 | if (VERBOSE) |
826 | if (proc_file(fn)) | 695 | printf("Processing: %s\n", fn); |
696 | if (proc_file(fn, rspfile)) | ||
827 | { | 697 | { |
828 | printf(">>> Processing failed for: %s <<<\n", fn); | 698 | printf(">>> Processing failed for: %s <<<\n", fn); |
829 | } | 699 | } |
@@ -831,3 +701,5 @@ int main(int argc, char **argv) | |||
831 | EXIT(0); | 701 | EXIT(0); |
832 | return 0; | 702 | return 0; |
833 | } | 703 | } |
704 | |||
705 | #endif | ||
diff --git a/src/lib/libssl/src/fips/dh/Makefile b/src/lib/libssl/src/fips/dh/Makefile index 10b40aa9f6..2d3833a822 100644 --- a/src/lib/libssl/src/fips/dh/Makefile +++ b/src/lib/libssl/src/fips/dh/Makefile | |||
@@ -1,5 +1,5 @@ | |||
1 | # | 1 | # |
2 | # SSLeay/fips/dh/Makefile | 2 | # OpenSSL/fips/dh/Makefile |
3 | # | 3 | # |
4 | 4 | ||
5 | DIR= dh | 5 | DIR= dh |
@@ -22,8 +22,8 @@ TEST= | |||
22 | APPS= | 22 | APPS= |
23 | 23 | ||
24 | LIB=$(TOP)/libcrypto.a | 24 | LIB=$(TOP)/libcrypto.a |
25 | LIBSRC=fips_dh_check.c fips_dh_gen.c fips_dh_key.c | 25 | LIBSRC=fips_dh_check.c fips_dh_gen.c fips_dh_key.c fips_dh_lib.c |
26 | LIBOBJ=fips_dh_check.o fips_dh_gen.o fips_dh_key.o | 26 | LIBOBJ=fips_dh_check.o fips_dh_gen.o fips_dh_key.o fips_dh_lib.o |
27 | 27 | ||
28 | SRC= $(LIBSRC) | 28 | SRC= $(LIBSRC) |
29 | 29 | ||
@@ -35,15 +35,10 @@ ALL= $(GENERAL) $(SRC) $(HEADER) | |||
35 | top: | 35 | top: |
36 | (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) sub_all) | 36 | (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) sub_all) |
37 | 37 | ||
38 | all: check lib | 38 | all: lib |
39 | 39 | ||
40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) |
41 | $(AR) $(LIB) $(LIBOBJ) | 41 | @echo $(LIBOBJ) > lib |
42 | $(RANLIB) $(LIB) || echo Never mind. | ||
43 | @sleep 2; touch lib | ||
44 | |||
45 | check: | ||
46 | TOP=`pwd`/$(TOP) ../fips_check_sha1 fingerprint.sha1 $(SRC) $(HEADER) | ||
47 | 42 | ||
48 | files: | 43 | files: |
49 | $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO | 44 | $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO |
@@ -65,6 +60,8 @@ tags: | |||
65 | 60 | ||
66 | tests: | 61 | tests: |
67 | 62 | ||
63 | fips_test: | ||
64 | |||
68 | lint: | 65 | lint: |
69 | lint -DLINT $(INCLUDES) $(SRC)>fluff | 66 | lint -DLINT $(INCLUDES) $(SRC)>fluff |
70 | 67 | ||
@@ -82,7 +79,8 @@ clean: | |||
82 | 79 | ||
83 | fips_dh_check.o: ../../include/openssl/bio.h ../../include/openssl/bn.h | 80 | fips_dh_check.o: ../../include/openssl/bio.h ../../include/openssl/bn.h |
84 | fips_dh_check.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h | 81 | fips_dh_check.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h |
85 | fips_dh_check.o: ../../include/openssl/e_os2.h | 82 | fips_dh_check.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
83 | fips_dh_check.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h | ||
86 | fips_dh_check.o: ../../include/openssl/opensslconf.h | 84 | fips_dh_check.o: ../../include/openssl/opensslconf.h |
87 | fips_dh_check.o: ../../include/openssl/opensslv.h | 85 | fips_dh_check.o: ../../include/openssl/opensslv.h |
88 | fips_dh_check.o: ../../include/openssl/ossl_typ.h | 86 | fips_dh_check.o: ../../include/openssl/ossl_typ.h |
@@ -101,9 +99,17 @@ fips_dh_gen.o: ../../include/openssl/symhacks.h fips_dh_gen.c | |||
101 | fips_dh_key.o: ../../include/openssl/bio.h ../../include/openssl/bn.h | 99 | fips_dh_key.o: ../../include/openssl/bio.h ../../include/openssl/bn.h |
102 | fips_dh_key.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h | 100 | fips_dh_key.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h |
103 | fips_dh_key.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | 101 | fips_dh_key.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
104 | fips_dh_key.o: ../../include/openssl/lhash.h | 102 | fips_dh_key.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
105 | fips_dh_key.o: ../../include/openssl/opensslconf.h | 103 | fips_dh_key.o: ../../include/openssl/opensslconf.h |
106 | fips_dh_key.o: ../../include/openssl/opensslv.h | 104 | fips_dh_key.o: ../../include/openssl/opensslv.h |
107 | fips_dh_key.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h | 105 | fips_dh_key.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h |
108 | fips_dh_key.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | 106 | fips_dh_key.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h |
109 | fips_dh_key.o: ../../include/openssl/symhacks.h fips_dh_key.c | 107 | fips_dh_key.o: ../../include/openssl/symhacks.h fips_dh_key.c |
108 | fips_dh_lib.o: ../../include/openssl/bio.h ../../include/openssl/bn.h | ||
109 | fips_dh_lib.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h | ||
110 | fips_dh_lib.o: ../../include/openssl/e_os2.h | ||
111 | fips_dh_lib.o: ../../include/openssl/opensslconf.h | ||
112 | fips_dh_lib.o: ../../include/openssl/opensslv.h | ||
113 | fips_dh_lib.o: ../../include/openssl/ossl_typ.h | ||
114 | fips_dh_lib.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
115 | fips_dh_lib.o: ../../include/openssl/symhacks.h fips_dh_lib.c | ||
diff --git a/src/lib/libssl/src/fips/dh/dh_gen.c b/src/lib/libssl/src/fips/dh/dh_gen.c new file mode 100644 index 0000000000..999e1deb40 --- /dev/null +++ b/src/lib/libssl/src/fips/dh/dh_gen.c | |||
@@ -0,0 +1,179 @@ | |||
1 | /* crypto/dh/dh_gen.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | /* NB: These functions have been upgraded - the previous prototypes are in | ||
60 | * dh_depr.c as wrappers to these ones. | ||
61 | * - Geoff | ||
62 | */ | ||
63 | |||
64 | #include <stdio.h> | ||
65 | #include "cryptlib.h" | ||
66 | #include <openssl/bn.h> | ||
67 | #include <openssl/dh.h> | ||
68 | |||
69 | #ifndef OPENSSL_FIPS | ||
70 | |||
71 | static int dh_builtin_genparams(DH *ret, int prime_len, int generator, BN_GENCB *cb); | ||
72 | |||
73 | int DH_generate_parameters_ex(DH *ret, int prime_len, int generator, BN_GENCB *cb) | ||
74 | { | ||
75 | if(ret->meth->generate_params) | ||
76 | return ret->meth->generate_params(ret, prime_len, generator, cb); | ||
77 | return dh_builtin_genparams(ret, prime_len, generator, cb); | ||
78 | } | ||
79 | |||
80 | /* We generate DH parameters as follows | ||
81 | * find a prime q which is prime_len/2 bits long. | ||
82 | * p=(2*q)+1 or (p-1)/2 = q | ||
83 | * For this case, g is a generator if | ||
84 | * g^((p-1)/q) mod p != 1 for values of q which are the factors of p-1. | ||
85 | * Since the factors of p-1 are q and 2, we just need to check | ||
86 | * g^2 mod p != 1 and g^q mod p != 1. | ||
87 | * | ||
88 | * Having said all that, | ||
89 | * there is another special case method for the generators 2, 3 and 5. | ||
90 | * for 2, p mod 24 == 11 | ||
91 | * for 3, p mod 12 == 5 <<<<< does not work for safe primes. | ||
92 | * for 5, p mod 10 == 3 or 7 | ||
93 | * | ||
94 | * Thanks to Phil Karn <karn@qualcomm.com> for the pointers about the | ||
95 | * special generators and for answering some of my questions. | ||
96 | * | ||
97 | * I've implemented the second simple method :-). | ||
98 | * Since DH should be using a safe prime (both p and q are prime), | ||
99 | * this generator function can take a very very long time to run. | ||
100 | */ | ||
101 | /* Actually there is no reason to insist that 'generator' be a generator. | ||
102 | * It's just as OK (and in some sense better) to use a generator of the | ||
103 | * order-q subgroup. | ||
104 | */ | ||
105 | static int dh_builtin_genparams(DH *ret, int prime_len, int generator, BN_GENCB *cb) | ||
106 | { | ||
107 | BIGNUM *t1,*t2; | ||
108 | int g,ok= -1; | ||
109 | BN_CTX *ctx=NULL; | ||
110 | |||
111 | ctx=BN_CTX_new(); | ||
112 | if (ctx == NULL) goto err; | ||
113 | BN_CTX_start(ctx); | ||
114 | t1 = BN_CTX_get(ctx); | ||
115 | t2 = BN_CTX_get(ctx); | ||
116 | if (t1 == NULL || t2 == NULL) goto err; | ||
117 | |||
118 | /* Make sure 'ret' has the necessary elements */ | ||
119 | if(!ret->p && ((ret->p = BN_new()) == NULL)) goto err; | ||
120 | if(!ret->g && ((ret->g = BN_new()) == NULL)) goto err; | ||
121 | |||
122 | if (generator <= 1) | ||
123 | { | ||
124 | DHerr(DH_F_DH_BUILTIN_GENPARAMS, DH_R_BAD_GENERATOR); | ||
125 | goto err; | ||
126 | } | ||
127 | if (generator == DH_GENERATOR_2) | ||
128 | { | ||
129 | if (!BN_set_word(t1,24)) goto err; | ||
130 | if (!BN_set_word(t2,11)) goto err; | ||
131 | g=2; | ||
132 | } | ||
133 | #if 0 /* does not work for safe primes */ | ||
134 | else if (generator == DH_GENERATOR_3) | ||
135 | { | ||
136 | if (!BN_set_word(t1,12)) goto err; | ||
137 | if (!BN_set_word(t2,5)) goto err; | ||
138 | g=3; | ||
139 | } | ||
140 | #endif | ||
141 | else if (generator == DH_GENERATOR_5) | ||
142 | { | ||
143 | if (!BN_set_word(t1,10)) goto err; | ||
144 | if (!BN_set_word(t2,3)) goto err; | ||
145 | /* BN_set_word(t3,7); just have to miss | ||
146 | * out on these ones :-( */ | ||
147 | g=5; | ||
148 | } | ||
149 | else | ||
150 | { | ||
151 | /* in the general case, don't worry if 'generator' is a | ||
152 | * generator or not: since we are using safe primes, | ||
153 | * it will generate either an order-q or an order-2q group, | ||
154 | * which both is OK */ | ||
155 | if (!BN_set_word(t1,2)) goto err; | ||
156 | if (!BN_set_word(t2,1)) goto err; | ||
157 | g=generator; | ||
158 | } | ||
159 | |||
160 | if(!BN_generate_prime_ex(ret->p,prime_len,1,t1,t2,cb)) goto err; | ||
161 | if(!BN_GENCB_call(cb, 3, 0)) goto err; | ||
162 | if (!BN_set_word(ret->g,g)) goto err; | ||
163 | ok=1; | ||
164 | err: | ||
165 | if (ok == -1) | ||
166 | { | ||
167 | DHerr(DH_F_DH_BUILTIN_GENPARAMS,ERR_R_BN_LIB); | ||
168 | ok=0; | ||
169 | } | ||
170 | |||
171 | if (ctx != NULL) | ||
172 | { | ||
173 | BN_CTX_end(ctx); | ||
174 | BN_CTX_free(ctx); | ||
175 | } | ||
176 | return ok; | ||
177 | } | ||
178 | |||
179 | #endif | ||
diff --git a/src/lib/libssl/src/fips/dh/fips_dh_check.c b/src/lib/libssl/src/fips/dh/fips_dh_check.c index 874920b466..7333f7c80f 100644 --- a/src/lib/libssl/src/fips/dh/fips_dh_check.c +++ b/src/lib/libssl/src/fips/dh/fips_dh_check.c | |||
@@ -58,10 +58,9 @@ | |||
58 | 58 | ||
59 | #include <stdio.h> | 59 | #include <stdio.h> |
60 | #include <openssl/bn.h> | 60 | #include <openssl/bn.h> |
61 | #ifndef OPENSSL_NO_DH | ||
62 | #include <openssl/dh.h> | 61 | #include <openssl/dh.h> |
63 | 62 | #include <openssl/err.h> | |
64 | #ifdef OPENSSL_FIPS | 63 | #include <openssl/fips.h> |
65 | 64 | ||
66 | /* Check that p is a safe prime and | 65 | /* Check that p is a safe prime and |
67 | * if g is 2, 3 or 5, check that is is a suitable generator | 66 | * if g is 2, 3 or 5, check that is is a suitable generator |
@@ -72,6 +71,8 @@ | |||
72 | * should hold. | 71 | * should hold. |
73 | */ | 72 | */ |
74 | 73 | ||
74 | #ifdef OPENSSL_FIPS | ||
75 | |||
75 | int DH_check(const DH *dh, int *ret) | 76 | int DH_check(const DH *dh, int *ret) |
76 | { | 77 | { |
77 | int ok=0; | 78 | int ok=0; |
@@ -106,12 +107,12 @@ int DH_check(const DH *dh, int *ret) | |||
106 | else | 107 | else |
107 | *ret|=DH_UNABLE_TO_CHECK_GENERATOR; | 108 | *ret|=DH_UNABLE_TO_CHECK_GENERATOR; |
108 | 109 | ||
109 | if (!BN_is_prime(dh->p,BN_prime_checks,NULL,ctx,NULL)) | 110 | if (!BN_is_prime_ex(dh->p,BN_prime_checks,ctx,NULL)) |
110 | *ret|=DH_CHECK_P_NOT_PRIME; | 111 | *ret|=DH_CHECK_P_NOT_PRIME; |
111 | else | 112 | else |
112 | { | 113 | { |
113 | if (!BN_rshift1(q,dh->p)) goto err; | 114 | if (!BN_rshift1(q,dh->p)) goto err; |
114 | if (!BN_is_prime(q,BN_prime_checks,NULL,ctx,NULL)) | 115 | if (!BN_is_prime_ex(q,BN_prime_checks,ctx,NULL)) |
115 | *ret|=DH_CHECK_P_NOT_SAFE_PRIME; | 116 | *ret|=DH_CHECK_P_NOT_SAFE_PRIME; |
116 | } | 117 | } |
117 | ok=1; | 118 | ok=1; |
@@ -121,5 +122,26 @@ err: | |||
121 | return(ok); | 122 | return(ok); |
122 | } | 123 | } |
123 | 124 | ||
124 | #endif | 125 | int DH_check_pub_key(const DH *dh, const BIGNUM *pub_key, int *ret) |
126 | { | ||
127 | int ok=0; | ||
128 | BIGNUM *q=NULL; | ||
129 | |||
130 | *ret=0; | ||
131 | q=BN_new(); | ||
132 | if (q == NULL) goto err; | ||
133 | BN_set_word(q,1); | ||
134 | if (BN_cmp(pub_key,q) <= 0) | ||
135 | *ret|=DH_CHECK_PUBKEY_TOO_SMALL; | ||
136 | BN_copy(q,dh->p); | ||
137 | BN_sub_word(q,1); | ||
138 | if (BN_cmp(pub_key,q) >= 0) | ||
139 | *ret|=DH_CHECK_PUBKEY_TOO_LARGE; | ||
140 | |||
141 | ok = 1; | ||
142 | err: | ||
143 | if (q != NULL) BN_free(q); | ||
144 | return(ok); | ||
145 | } | ||
146 | |||
125 | #endif | 147 | #endif |
diff --git a/src/lib/libssl/src/fips/dh/fips_dh_gen.c b/src/lib/libssl/src/fips/dh/fips_dh_gen.c index b569e3912d..d115f9d5d2 100644 --- a/src/lib/libssl/src/fips/dh/fips_dh_gen.c +++ b/src/lib/libssl/src/fips/dh/fips_dh_gen.c | |||
@@ -56,18 +56,28 @@ | |||
56 | * [including the GNU Public Licence.] | 56 | * [including the GNU Public Licence.] |
57 | */ | 57 | */ |
58 | 58 | ||
59 | /* NB: These functions have been upgraded - the previous prototypes are in | ||
60 | * dh_depr.c as wrappers to these ones. | ||
61 | * - Geoff | ||
62 | */ | ||
63 | |||
59 | #include <stdio.h> | 64 | #include <stdio.h> |
60 | #include <string.h> | ||
61 | #include <openssl/err.h> | ||
62 | #include <openssl/bn.h> | 65 | #include <openssl/bn.h> |
63 | #ifndef OPENSSL_NO_DH | ||
64 | #include <openssl/dh.h> | 66 | #include <openssl/dh.h> |
65 | #endif | 67 | #include <openssl/err.h> |
66 | #include <openssl/fips.h> | 68 | #include <openssl/fips.h> |
67 | 69 | ||
68 | #ifndef OPENSSL_NO_DH | ||
69 | #ifdef OPENSSL_FIPS | 70 | #ifdef OPENSSL_FIPS |
70 | 71 | ||
72 | static int dh_builtin_genparams(DH *ret, int prime_len, int generator, BN_GENCB *cb); | ||
73 | |||
74 | int DH_generate_parameters_ex(DH *ret, int prime_len, int generator, BN_GENCB *cb) | ||
75 | { | ||
76 | if(ret->meth->generate_params) | ||
77 | return ret->meth->generate_params(ret, prime_len, generator, cb); | ||
78 | return dh_builtin_genparams(ret, prime_len, generator, cb); | ||
79 | } | ||
80 | |||
71 | /* We generate DH parameters as follows | 81 | /* We generate DH parameters as follows |
72 | * find a prime q which is prime_len/2 bits long. | 82 | * find a prime q which is prime_len/2 bits long. |
73 | * p=(2*q)+1 or (p-1)/2 = q | 83 | * p=(2*q)+1 or (p-1)/2 = q |
@@ -93,33 +103,38 @@ | |||
93 | * It's just as OK (and in some sense better) to use a generator of the | 103 | * It's just as OK (and in some sense better) to use a generator of the |
94 | * order-q subgroup. | 104 | * order-q subgroup. |
95 | */ | 105 | */ |
96 | 106 | static int dh_builtin_genparams(DH *ret, int prime_len, int generator, BN_GENCB *cb) | |
97 | DH *DH_generate_parameters(int prime_len, int generator, | ||
98 | void (*callback)(int,int,void *), void *cb_arg) | ||
99 | { | 107 | { |
100 | BIGNUM *p=NULL,*t1,*t2; | 108 | BIGNUM *t1,*t2; |
101 | DH *ret=NULL; | ||
102 | int g,ok= -1; | 109 | int g,ok= -1; |
103 | BN_CTX *ctx=NULL; | 110 | BN_CTX *ctx=NULL; |
104 | 111 | ||
105 | if(FIPS_selftest_failed()) | 112 | if(FIPS_selftest_failed()) |
106 | { | 113 | { |
107 | FIPSerr(FIPS_F_DH_GENERATE_PARAMETERS,FIPS_R_FIPS_SELFTEST_FAILED); | 114 | FIPSerr(FIPS_F_DH_BUILTIN_GENPARAMS,FIPS_R_FIPS_SELFTEST_FAILED); |
108 | return NULL; | 115 | return 0; |
116 | } | ||
117 | |||
118 | if (FIPS_mode() && (prime_len < OPENSSL_DH_FIPS_MIN_MODULUS_BITS)) | ||
119 | { | ||
120 | DHerr(DH_F_DH_BUILTIN_GENPARAMS, DH_R_KEY_SIZE_TOO_SMALL); | ||
121 | goto err; | ||
109 | } | 122 | } |
110 | 123 | ||
111 | ret=DH_new(); | ||
112 | if (ret == NULL) goto err; | ||
113 | ctx=BN_CTX_new(); | 124 | ctx=BN_CTX_new(); |
114 | if (ctx == NULL) goto err; | 125 | if (ctx == NULL) goto err; |
115 | BN_CTX_start(ctx); | 126 | BN_CTX_start(ctx); |
116 | t1 = BN_CTX_get(ctx); | 127 | t1 = BN_CTX_get(ctx); |
117 | t2 = BN_CTX_get(ctx); | 128 | t2 = BN_CTX_get(ctx); |
118 | if (t1 == NULL || t2 == NULL) goto err; | 129 | if (t1 == NULL || t2 == NULL) goto err; |
130 | |||
131 | /* Make sure 'ret' has the necessary elements */ | ||
132 | if(!ret->p && ((ret->p = BN_new()) == NULL)) goto err; | ||
133 | if(!ret->g && ((ret->g = BN_new()) == NULL)) goto err; | ||
119 | 134 | ||
120 | if (generator <= 1) | 135 | if (generator <= 1) |
121 | { | 136 | { |
122 | DHerr(DH_F_DH_GENERATE_PARAMETERS, DH_R_BAD_GENERATOR); | 137 | DHerr(DH_F_DH_BUILTIN_GENPARAMS, DH_R_BAD_GENERATOR); |
123 | goto err; | 138 | goto err; |
124 | } | 139 | } |
125 | if (generator == DH_GENERATOR_2) | 140 | if (generator == DH_GENERATOR_2) |
@@ -155,17 +170,14 @@ DH *DH_generate_parameters(int prime_len, int generator, | |||
155 | g=generator; | 170 | g=generator; |
156 | } | 171 | } |
157 | 172 | ||
158 | p=BN_generate_prime(NULL,prime_len,1,t1,t2,callback,cb_arg); | 173 | if(!BN_generate_prime_ex(ret->p,prime_len,1,t1,t2,cb)) goto err; |
159 | if (p == NULL) goto err; | 174 | if(!BN_GENCB_call(cb, 3, 0)) goto err; |
160 | if (callback != NULL) callback(3,0,cb_arg); | ||
161 | ret->p=p; | ||
162 | ret->g=BN_new(); | ||
163 | if (!BN_set_word(ret->g,g)) goto err; | 175 | if (!BN_set_word(ret->g,g)) goto err; |
164 | ok=1; | 176 | ok=1; |
165 | err: | 177 | err: |
166 | if (ok == -1) | 178 | if (ok == -1) |
167 | { | 179 | { |
168 | DHerr(DH_F_DH_GENERATE_PARAMETERS,ERR_R_BN_LIB); | 180 | DHerr(DH_F_DH_BUILTIN_GENPARAMS,ERR_R_BN_LIB); |
169 | ok=0; | 181 | ok=0; |
170 | } | 182 | } |
171 | 183 | ||
@@ -174,13 +186,7 @@ err: | |||
174 | BN_CTX_end(ctx); | 186 | BN_CTX_end(ctx); |
175 | BN_CTX_free(ctx); | 187 | BN_CTX_free(ctx); |
176 | } | 188 | } |
177 | if (!ok && (ret != NULL)) | 189 | return ok; |
178 | { | ||
179 | DH_free(ret); | ||
180 | ret=NULL; | ||
181 | } | ||
182 | return(ret); | ||
183 | } | 190 | } |
184 | 191 | ||
185 | #endif | 192 | #endif |
186 | #endif | ||
diff --git a/src/lib/libssl/src/fips/dh/fips_dh_key.c b/src/lib/libssl/src/fips/dh/fips_dh_key.c index 41e3a661c0..d20fa91d5e 100644 --- a/src/lib/libssl/src/fips/dh/fips_dh_key.c +++ b/src/lib/libssl/src/fips/dh/fips_dh_key.c | |||
@@ -64,6 +64,7 @@ | |||
64 | #endif | 64 | #endif |
65 | #ifndef OPENSSL_NO_DH | 65 | #ifndef OPENSSL_NO_DH |
66 | #include <openssl/dh.h> | 66 | #include <openssl/dh.h> |
67 | #include <openssl/fips.h> | ||
67 | 68 | ||
68 | #ifdef OPENSSL_FIPS | 69 | #ifdef OPENSSL_FIPS |
69 | 70 | ||
@@ -86,7 +87,7 @@ int DH_compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh) | |||
86 | return dh->meth->compute_key(key, pub_key, dh); | 87 | return dh->meth->compute_key(key, pub_key, dh); |
87 | } | 88 | } |
88 | 89 | ||
89 | static DH_METHOD dh_ossl = { | 90 | static const DH_METHOD dh_ossl = { |
90 | "OpenSSL DH Method", | 91 | "OpenSSL DH Method", |
91 | generate_key, | 92 | generate_key, |
92 | compute_key, | 93 | compute_key, |
@@ -108,9 +109,15 @@ static int generate_key(DH *dh) | |||
108 | int generate_new_key=0; | 109 | int generate_new_key=0; |
109 | unsigned l; | 110 | unsigned l; |
110 | BN_CTX *ctx; | 111 | BN_CTX *ctx; |
111 | BN_MONT_CTX *mont; | 112 | BN_MONT_CTX *mont=NULL; |
112 | BIGNUM *pub_key=NULL,*priv_key=NULL; | 113 | BIGNUM *pub_key=NULL,*priv_key=NULL; |
113 | 114 | ||
115 | if (FIPS_mode() && (BN_num_bits(dh->p) < OPENSSL_DH_FIPS_MIN_MODULUS_BITS)) | ||
116 | { | ||
117 | DHerr(DH_F_GENERATE_KEY, DH_R_KEY_SIZE_TOO_SMALL); | ||
118 | return 0; | ||
119 | } | ||
120 | |||
114 | ctx = BN_CTX_new(); | 121 | ctx = BN_CTX_new(); |
115 | if (ctx == NULL) goto err; | 122 | if (ctx == NULL) goto err; |
116 | 123 | ||
@@ -131,28 +138,44 @@ static int generate_key(DH *dh) | |||
131 | else | 138 | else |
132 | pub_key=dh->pub_key; | 139 | pub_key=dh->pub_key; |
133 | 140 | ||
134 | if ((dh->method_mont_p == NULL) && (dh->flags & DH_FLAG_CACHE_MONT_P)) | 141 | if (dh->flags & DH_FLAG_CACHE_MONT_P) |
135 | { | 142 | { |
136 | if ((dh->method_mont_p=(char *)BN_MONT_CTX_new()) != NULL) | 143 | mont = BN_MONT_CTX_set_locked( |
137 | if (!BN_MONT_CTX_set((BN_MONT_CTX *)dh->method_mont_p, | 144 | (BN_MONT_CTX **)&dh->method_mont_p, |
138 | dh->p,ctx)) goto err; | 145 | CRYPTO_LOCK_DH, dh->p, ctx); |
146 | if (!mont) | ||
147 | goto err; | ||
139 | } | 148 | } |
140 | mont=(BN_MONT_CTX *)dh->method_mont_p; | ||
141 | 149 | ||
142 | if (generate_new_key) | 150 | if (generate_new_key) |
143 | { | 151 | { |
144 | l = dh->length ? dh->length : BN_num_bits(dh->p)-1; /* secret exponent length */ | 152 | l = dh->length ? dh->length : BN_num_bits(dh->p)-1; /* secret exponent length */ |
145 | if (!BN_rand(priv_key, l, 0, 0)) goto err; | 153 | if (!BN_rand(priv_key, l, 0, 0)) goto err; |
146 | } | 154 | } |
147 | if (!dh->meth->bn_mod_exp(dh, pub_key, dh->g, priv_key,dh->p,ctx,mont)) | 155 | |
148 | goto err; | 156 | { |
157 | BIGNUM local_prk; | ||
158 | BIGNUM *prk; | ||
159 | |||
160 | if ((dh->flags & DH_FLAG_NO_EXP_CONSTTIME) == 0) | ||
161 | { | ||
162 | BN_init(&local_prk); | ||
163 | prk = &local_prk; | ||
164 | BN_with_flags(prk, priv_key, BN_FLG_CONSTTIME); | ||
165 | } | ||
166 | else | ||
167 | prk = priv_key; | ||
168 | |||
169 | if (!dh->meth->bn_mod_exp(dh, pub_key, dh->g, prk, dh->p, ctx, mont)) | ||
170 | goto err; | ||
171 | } | ||
149 | 172 | ||
150 | dh->pub_key=pub_key; | 173 | dh->pub_key=pub_key; |
151 | dh->priv_key=priv_key; | 174 | dh->priv_key=priv_key; |
152 | ok=1; | 175 | ok=1; |
153 | err: | 176 | err: |
154 | if (ok != 1) | 177 | if (ok != 1) |
155 | DHerr(DH_F_DH_GENERATE_KEY,ERR_R_BN_LIB); | 178 | DHerr(DH_F_GENERATE_KEY,ERR_R_BN_LIB); |
156 | 179 | ||
157 | if ((pub_key != NULL) && (dh->pub_key == NULL)) BN_free(pub_key); | 180 | if ((pub_key != NULL) && (dh->pub_key == NULL)) BN_free(pub_key); |
158 | if ((priv_key != NULL) && (dh->priv_key == NULL)) BN_free(priv_key); | 181 | if ((priv_key != NULL) && (dh->priv_key == NULL)) BN_free(priv_key); |
@@ -163,7 +186,7 @@ err: | |||
163 | static int compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh) | 186 | static int compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh) |
164 | { | 187 | { |
165 | BN_CTX *ctx; | 188 | BN_CTX *ctx; |
166 | BN_MONT_CTX *mont; | 189 | BN_MONT_CTX *mont=NULL; |
167 | BIGNUM *tmp; | 190 | BIGNUM *tmp; |
168 | int ret= -1; | 191 | int ret= -1; |
169 | 192 | ||
@@ -171,23 +194,42 @@ static int compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh) | |||
171 | if (ctx == NULL) goto err; | 194 | if (ctx == NULL) goto err; |
172 | BN_CTX_start(ctx); | 195 | BN_CTX_start(ctx); |
173 | tmp = BN_CTX_get(ctx); | 196 | tmp = BN_CTX_get(ctx); |
174 | 197 | ||
198 | if (BN_num_bits(dh->p) > OPENSSL_DH_MAX_MODULUS_BITS) | ||
199 | { | ||
200 | DHerr(DH_F_COMPUTE_KEY,DH_R_MODULUS_TOO_LARGE); | ||
201 | goto err; | ||
202 | } | ||
203 | |||
204 | if (FIPS_mode() && (BN_num_bits(dh->p) < OPENSSL_DH_FIPS_MIN_MODULUS_BITS)) | ||
205 | { | ||
206 | DHerr(DH_F_COMPUTE_KEY, DH_R_KEY_SIZE_TOO_SMALL); | ||
207 | goto err; | ||
208 | } | ||
209 | |||
175 | if (dh->priv_key == NULL) | 210 | if (dh->priv_key == NULL) |
176 | { | 211 | { |
177 | DHerr(DH_F_DH_COMPUTE_KEY,DH_R_NO_PRIVATE_VALUE); | 212 | DHerr(DH_F_COMPUTE_KEY,DH_R_NO_PRIVATE_VALUE); |
178 | goto err; | 213 | goto err; |
179 | } | 214 | } |
180 | if ((dh->method_mont_p == NULL) && (dh->flags & DH_FLAG_CACHE_MONT_P)) | 215 | |
216 | if (dh->flags & DH_FLAG_CACHE_MONT_P) | ||
181 | { | 217 | { |
182 | if ((dh->method_mont_p=(char *)BN_MONT_CTX_new()) != NULL) | 218 | mont = BN_MONT_CTX_set_locked( |
183 | if (!BN_MONT_CTX_set((BN_MONT_CTX *)dh->method_mont_p, | 219 | (BN_MONT_CTX **)&dh->method_mont_p, |
184 | dh->p,ctx)) goto err; | 220 | CRYPTO_LOCK_DH, dh->p, ctx); |
221 | if ((dh->flags & DH_FLAG_NO_EXP_CONSTTIME) == 0) | ||
222 | { | ||
223 | /* XXX */ | ||
224 | BN_set_flags(dh->priv_key, BN_FLG_CONSTTIME); | ||
225 | } | ||
226 | if (!mont) | ||
227 | goto err; | ||
185 | } | 228 | } |
186 | 229 | ||
187 | mont=(BN_MONT_CTX *)dh->method_mont_p; | ||
188 | if (!dh->meth->bn_mod_exp(dh, tmp, pub_key, dh->priv_key,dh->p,ctx,mont)) | 230 | if (!dh->meth->bn_mod_exp(dh, tmp, pub_key, dh->priv_key,dh->p,ctx,mont)) |
189 | { | 231 | { |
190 | DHerr(DH_F_DH_COMPUTE_KEY,ERR_R_BN_LIB); | 232 | DHerr(DH_F_COMPUTE_KEY,ERR_R_BN_LIB); |
191 | goto err; | 233 | goto err; |
192 | } | 234 | } |
193 | 235 | ||
@@ -203,7 +245,10 @@ static int dh_bn_mod_exp(const DH *dh, BIGNUM *r, | |||
203 | const BIGNUM *m, BN_CTX *ctx, | 245 | const BIGNUM *m, BN_CTX *ctx, |
204 | BN_MONT_CTX *m_ctx) | 246 | BN_MONT_CTX *m_ctx) |
205 | { | 247 | { |
206 | if (a->top == 1) | 248 | /* If a is only one word long and constant time is false, use the faster |
249 | * exponenentiation function. | ||
250 | */ | ||
251 | if (a->top == 1 && ((dh->flags & DH_FLAG_NO_EXP_CONSTTIME) != 0)) | ||
207 | { | 252 | { |
208 | BN_ULONG A = a->d[0]; | 253 | BN_ULONG A = a->d[0]; |
209 | return BN_mod_exp_mont_word(r,A,p,m,ctx,m_ctx); | 254 | return BN_mod_exp_mont_word(r,A,p,m,ctx,m_ctx); |
@@ -215,6 +260,7 @@ static int dh_bn_mod_exp(const DH *dh, BIGNUM *r, | |||
215 | 260 | ||
216 | static int dh_init(DH *dh) | 261 | static int dh_init(DH *dh) |
217 | { | 262 | { |
263 | FIPS_selftest_check(); | ||
218 | dh->flags |= DH_FLAG_CACHE_MONT_P; | 264 | dh->flags |= DH_FLAG_CACHE_MONT_P; |
219 | return(1); | 265 | return(1); |
220 | } | 266 | } |
diff --git a/src/lib/libssl/src/fips/dh/fips_dh_lib.c b/src/lib/libssl/src/fips/dh/fips_dh_lib.c new file mode 100644 index 0000000000..4a822cf192 --- /dev/null +++ b/src/lib/libssl/src/fips/dh/fips_dh_lib.c | |||
@@ -0,0 +1,95 @@ | |||
1 | /* fips_dh_lib.c */ | ||
2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | ||
3 | * project 2007. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 2007 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <string.h> | ||
60 | #include <openssl/bn.h> | ||
61 | #include <openssl/dh.h> | ||
62 | |||
63 | /* Minimal FIPS versions of FIPS_dh_new() and FIPS_dh_free(): to | ||
64 | * reduce external dependencies. | ||
65 | */ | ||
66 | |||
67 | DH *FIPS_dh_new(void) | ||
68 | { | ||
69 | DH *ret; | ||
70 | ret = OPENSSL_malloc(sizeof(DH)); | ||
71 | if (!ret) | ||
72 | return NULL; | ||
73 | memset(ret, 0, sizeof(DH)); | ||
74 | ret->meth = DH_OpenSSL(); | ||
75 | if (ret->meth->init) | ||
76 | ret->meth->init(ret); | ||
77 | return ret; | ||
78 | } | ||
79 | |||
80 | void FIPS_dh_free(DH *r) | ||
81 | { | ||
82 | if (!r) | ||
83 | return; | ||
84 | if (r->meth->finish) | ||
85 | r->meth->finish(r); | ||
86 | if (r->p != NULL) BN_clear_free(r->p); | ||
87 | if (r->g != NULL) BN_clear_free(r->g); | ||
88 | if (r->q != NULL) BN_clear_free(r->q); | ||
89 | if (r->j != NULL) BN_clear_free(r->j); | ||
90 | if (r->seed) OPENSSL_free(r->seed); | ||
91 | if (r->counter != NULL) BN_clear_free(r->counter); | ||
92 | if (r->pub_key != NULL) BN_clear_free(r->pub_key); | ||
93 | if (r->priv_key != NULL) BN_clear_free(r->priv_key); | ||
94 | OPENSSL_free(r); | ||
95 | } | ||
diff --git a/src/lib/libssl/src/fips/dsa/Makefile b/src/lib/libssl/src/fips/dsa/Makefile index 0cc5704ed1..251615e9ad 100644 --- a/src/lib/libssl/src/fips/dsa/Makefile +++ b/src/lib/libssl/src/fips/dsa/Makefile | |||
@@ -1,5 +1,5 @@ | |||
1 | # | 1 | # |
2 | # SSLeay/fips/dsa/Makefile | 2 | # OpenSSL/fips/dsa/Makefile |
3 | # | 3 | # |
4 | 4 | ||
5 | DIR= dsa | 5 | DIR= dsa |
@@ -18,12 +18,14 @@ AR= ar r | |||
18 | CFLAGS= $(INCLUDES) $(CFLAG) | 18 | CFLAGS= $(INCLUDES) $(CFLAG) |
19 | 19 | ||
20 | GENERAL=Makefile | 20 | GENERAL=Makefile |
21 | TEST=fips_dsatest.c | 21 | TEST=fips_dsatest.c fips_dssvs.c |
22 | APPS= | 22 | APPS= |
23 | 23 | ||
24 | LIB=$(TOP)/libcrypto.a | 24 | LIB=$(TOP)/libcrypto.a |
25 | LIBSRC=fips_dsa_ossl.c fips_dsa_gen.c fips_dsa_selftest.c | 25 | LIBSRC=fips_dsa_ossl.c fips_dsa_gen.c fips_dsa_selftest.c fips_dsa_key.c \ |
26 | LIBOBJ=fips_dsa_ossl.o fips_dsa_gen.o fips_dsa_selftest.o | 26 | fips_dsa_lib.c fips_dsa_sign.c |
27 | LIBOBJ=fips_dsa_ossl.o fips_dsa_gen.o fips_dsa_selftest.o fips_dsa_key.o \ | ||
28 | fips_dsa_lib.o fips_dsa_sign.o | ||
27 | 29 | ||
28 | SRC= $(LIBSRC) | 30 | SRC= $(LIBSRC) |
29 | 31 | ||
@@ -35,15 +37,10 @@ ALL= $(GENERAL) $(SRC) $(HEADER) | |||
35 | top: | 37 | top: |
36 | (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) sub_all) | 38 | (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) sub_all) |
37 | 39 | ||
38 | all: check lib | 40 | all: lib |
39 | 41 | ||
40 | lib: $(LIBOBJ) | 42 | lib: $(LIBOBJ) |
41 | $(AR) $(LIB) $(LIBOBJ) | 43 | @echo $(LIBOBJ) > lib |
42 | $(RANLIB) $(LIB) || echo Never mind. | ||
43 | @sleep 2; touch lib | ||
44 | |||
45 | check: | ||
46 | TOP=`pwd`/$(TOP) ../fips_check_sha1 fingerprint.sha1 $(SRC) $(HEADER) | ||
47 | 44 | ||
48 | files: | 45 | files: |
49 | $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO | 46 | $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO |
@@ -65,23 +62,16 @@ tags: | |||
65 | 62 | ||
66 | tests: | 63 | tests: |
67 | 64 | ||
68 | top_fips_dssvs: | ||
69 | (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) TARGET=fips_dssvs sub_target) | ||
70 | |||
71 | fips_dssvs: fips_dssvs.o $(TOP)/libcrypto.a | ||
72 | $(CC) $(CFLAGS) -o fips_dssvs fips_dssvs.o $(PEX_LIBS) $(TOP)/libcrypto.a $(EX_LIBS) | ||
73 | TOP=$(TOP) $(TOP)/fips/openssl_fips_fingerprint $(TOP)/libcrypto.a fips_dssvs | ||
74 | |||
75 | Q=../testvectors/dsa/req | 65 | Q=../testvectors/dsa/req |
76 | A=../testvectors/dsa/rsp | 66 | A=../testvectors/dsa/rsp |
77 | 67 | ||
78 | fips_test: top_fips_dssvs | 68 | fips_test: |
79 | -rm -rf $A | 69 | -rm -rf $A |
80 | mkdir $A | 70 | mkdir $A |
81 | ./fips_dssvs pqg < $Q/PQGGen.req > $A/PQGGen.rsp | 71 | if [ -f $(Q)/PQGGen.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_dssvs pqg < $(Q)/PQGGen.req > $(A)/PQGGen.rsp; fi |
82 | ./fips_dssvs keypair < $Q/KeyPair.req > $A/KeyPair.rsp | 72 | if [ -f $(Q)/KeyPair.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_dssvs keypair < $(Q)/KeyPair.req > $(A)/KeyPair.rsp; fi |
83 | ./fips_dssvs siggen < $Q/SigGen.req > $A/SigGen.rsp | 73 | if [ -f $(Q)/SigGen.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_dssvs siggen < $(Q)/SigGen.req > $(A)/SigGen.rsp; fi |
84 | ./fips_dssvs sigver < $Q/SigVer.req > $A/SigVer.rsp | 74 | if [ -f $(Q)/SigVer.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_dssvs sigver < $Q/SigVer.req > $A/SigVer.rsp; fi |
85 | 75 | ||
86 | lint: | 76 | lint: |
87 | lint -DLINT $(INCLUDES) $(SRC)>fluff | 77 | lint -DLINT $(INCLUDES) $(SRC)>fluff |
@@ -97,62 +87,105 @@ clean: | |||
97 | rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff | 87 | rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff |
98 | # DO NOT DELETE THIS LINE -- make depend depends on it. | 88 | # DO NOT DELETE THIS LINE -- make depend depends on it. |
99 | 89 | ||
100 | fips_dsa_gen.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h | 90 | fips_dsa_gen.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h |
101 | fips_dsa_gen.o: ../../include/openssl/bio.h ../../include/openssl/blowfish.h | 91 | fips_dsa_gen.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h |
102 | fips_dsa_gen.o: ../../include/openssl/bn.h ../../include/openssl/cast.h | ||
103 | fips_dsa_gen.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | ||
104 | fips_dsa_gen.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h | ||
105 | fips_dsa_gen.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h | 92 | fips_dsa_gen.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h |
106 | fips_dsa_gen.o: ../../include/openssl/err.h ../../include/openssl/evp.h | 93 | fips_dsa_gen.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
107 | fips_dsa_gen.o: ../../include/openssl/fips.h ../../include/openssl/idea.h | 94 | fips_dsa_gen.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
108 | fips_dsa_gen.o: ../../include/openssl/lhash.h ../../include/openssl/md2.h | 95 | fips_dsa_gen.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h |
109 | fips_dsa_gen.o: ../../include/openssl/md4.h ../../include/openssl/md5.h | ||
110 | fips_dsa_gen.o: ../../include/openssl/mdc2.h ../../include/openssl/obj_mac.h | ||
111 | fips_dsa_gen.o: ../../include/openssl/objects.h | ||
112 | fips_dsa_gen.o: ../../include/openssl/opensslconf.h | 96 | fips_dsa_gen.o: ../../include/openssl/opensslconf.h |
113 | fips_dsa_gen.o: ../../include/openssl/opensslv.h | 97 | fips_dsa_gen.o: ../../include/openssl/opensslv.h |
114 | fips_dsa_gen.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h | 98 | fips_dsa_gen.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h |
115 | fips_dsa_gen.o: ../../include/openssl/rc2.h ../../include/openssl/rc4.h | 99 | fips_dsa_gen.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h |
116 | fips_dsa_gen.o: ../../include/openssl/rc5.h ../../include/openssl/ripemd.h | 100 | fips_dsa_gen.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
117 | fips_dsa_gen.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | 101 | fips_dsa_gen.o: fips_dsa_gen.c |
118 | fips_dsa_gen.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 102 | fips_dsa_key.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h |
119 | fips_dsa_gen.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h | 103 | fips_dsa_key.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h |
120 | fips_dsa_gen.o: ../../include/openssl/ui_compat.h fips_dsa_gen.c | 104 | fips_dsa_key.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h |
105 | fips_dsa_key.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
106 | fips_dsa_key.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h | ||
107 | fips_dsa_key.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | ||
108 | fips_dsa_key.o: ../../include/openssl/opensslconf.h | ||
109 | fips_dsa_key.o: ../../include/openssl/opensslv.h | ||
110 | fips_dsa_key.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h | ||
111 | fips_dsa_key.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
112 | fips_dsa_key.o: ../../include/openssl/symhacks.h ../fips_locl.h fips_dsa_key.c | ||
113 | fips_dsa_lib.o: ../../include/openssl/bio.h ../../include/openssl/bn.h | ||
114 | fips_dsa_lib.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h | ||
115 | fips_dsa_lib.o: ../../include/openssl/e_os2.h | ||
116 | fips_dsa_lib.o: ../../include/openssl/opensslconf.h | ||
117 | fips_dsa_lib.o: ../../include/openssl/opensslv.h | ||
118 | fips_dsa_lib.o: ../../include/openssl/ossl_typ.h | ||
119 | fips_dsa_lib.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
120 | fips_dsa_lib.o: ../../include/openssl/symhacks.h fips_dsa_lib.c | ||
121 | fips_dsa_ossl.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | 121 | fips_dsa_ossl.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h |
122 | fips_dsa_ossl.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h | 122 | fips_dsa_ossl.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h |
123 | fips_dsa_ossl.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h | 123 | fips_dsa_ossl.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h |
124 | fips_dsa_ossl.o: ../../include/openssl/e_os2.h ../../include/openssl/engine.h | 124 | fips_dsa_ossl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h |
125 | fips_dsa_ossl.o: ../../include/openssl/err.h ../../include/openssl/fips.h | 125 | fips_dsa_ossl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h |
126 | fips_dsa_ossl.o: ../../include/openssl/lhash.h | 126 | fips_dsa_ossl.o: ../../include/openssl/engine.h ../../include/openssl/err.h |
127 | fips_dsa_ossl.o: ../../include/openssl/evp.h ../../include/openssl/fips.h | ||
128 | fips_dsa_ossl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | ||
129 | fips_dsa_ossl.o: ../../include/openssl/objects.h | ||
127 | fips_dsa_ossl.o: ../../include/openssl/opensslconf.h | 130 | fips_dsa_ossl.o: ../../include/openssl/opensslconf.h |
128 | fips_dsa_ossl.o: ../../include/openssl/opensslv.h | 131 | fips_dsa_ossl.o: ../../include/openssl/opensslv.h |
129 | fips_dsa_ossl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h | 132 | fips_dsa_ossl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
130 | fips_dsa_ossl.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | 133 | fips_dsa_ossl.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h |
131 | fips_dsa_ossl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 134 | fips_dsa_ossl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
132 | fips_dsa_ossl.o: ../../include/openssl/ui.h fips_dsa_ossl.c | 135 | fips_dsa_ossl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h |
133 | fips_dsa_selftest.o: ../../include/openssl/bio.h ../../include/openssl/bn.h | 136 | fips_dsa_ossl.o: ../../include/openssl/x509_vfy.h fips_dsa_ossl.c |
134 | fips_dsa_selftest.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h | 137 | fips_dsa_selftest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h |
138 | fips_dsa_selftest.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h | ||
135 | fips_dsa_selftest.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h | 139 | fips_dsa_selftest.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h |
136 | fips_dsa_selftest.o: ../../include/openssl/err.h ../../include/openssl/fips.h | 140 | fips_dsa_selftest.o: ../../include/openssl/err.h ../../include/openssl/evp.h |
137 | fips_dsa_selftest.o: ../../include/openssl/lhash.h | 141 | fips_dsa_selftest.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h |
142 | fips_dsa_selftest.o: ../../include/openssl/obj_mac.h | ||
143 | fips_dsa_selftest.o: ../../include/openssl/objects.h | ||
138 | fips_dsa_selftest.o: ../../include/openssl/opensslconf.h | 144 | fips_dsa_selftest.o: ../../include/openssl/opensslconf.h |
139 | fips_dsa_selftest.o: ../../include/openssl/opensslv.h | 145 | fips_dsa_selftest.o: ../../include/openssl/opensslv.h |
140 | fips_dsa_selftest.o: ../../include/openssl/ossl_typ.h | 146 | fips_dsa_selftest.o: ../../include/openssl/ossl_typ.h |
141 | fips_dsa_selftest.o: ../../include/openssl/safestack.h | 147 | fips_dsa_selftest.o: ../../include/openssl/safestack.h |
142 | fips_dsa_selftest.o: ../../include/openssl/stack.h | 148 | fips_dsa_selftest.o: ../../include/openssl/stack.h |
143 | fips_dsa_selftest.o: ../../include/openssl/symhacks.h fips_dsa_selftest.c | 149 | fips_dsa_selftest.o: ../../include/openssl/symhacks.h fips_dsa_selftest.c |
150 | fips_dsa_sign.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
151 | fips_dsa_sign.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h | ||
152 | fips_dsa_sign.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h | ||
153 | fips_dsa_sign.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
154 | fips_dsa_sign.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h | ||
155 | fips_dsa_sign.o: ../../include/openssl/obj_mac.h | ||
156 | fips_dsa_sign.o: ../../include/openssl/objects.h | ||
157 | fips_dsa_sign.o: ../../include/openssl/opensslconf.h | ||
158 | fips_dsa_sign.o: ../../include/openssl/opensslv.h | ||
159 | fips_dsa_sign.o: ../../include/openssl/ossl_typ.h | ||
160 | fips_dsa_sign.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
161 | fips_dsa_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
162 | fips_dsa_sign.o: fips_dsa_sign.c | ||
144 | fips_dsatest.o: ../../e_os.h ../../include/openssl/asn1.h | 163 | fips_dsatest.o: ../../e_os.h ../../include/openssl/asn1.h |
145 | fips_dsatest.o: ../../include/openssl/bio.h ../../include/openssl/bn.h | 164 | fips_dsatest.o: ../../include/openssl/bio.h ../../include/openssl/bn.h |
146 | fips_dsatest.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | 165 | fips_dsatest.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h |
147 | fips_dsatest.o: ../../include/openssl/des_old.h ../../include/openssl/dh.h | 166 | fips_dsatest.o: ../../include/openssl/des.h ../../include/openssl/des_old.h |
148 | fips_dsatest.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h | 167 | fips_dsatest.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h |
149 | fips_dsatest.o: ../../include/openssl/engine.h ../../include/openssl/err.h | 168 | fips_dsatest.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h |
169 | fips_dsatest.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h | ||
170 | fips_dsatest.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
150 | fips_dsatest.o: ../../include/openssl/fips.h ../../include/openssl/fips_rand.h | 171 | fips_dsatest.o: ../../include/openssl/fips.h ../../include/openssl/fips_rand.h |
151 | fips_dsatest.o: ../../include/openssl/lhash.h | 172 | fips_dsatest.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h |
173 | fips_dsatest.o: ../../include/openssl/objects.h | ||
152 | fips_dsatest.o: ../../include/openssl/opensslconf.h | 174 | fips_dsatest.o: ../../include/openssl/opensslconf.h |
153 | fips_dsatest.o: ../../include/openssl/opensslv.h | 175 | fips_dsatest.o: ../../include/openssl/opensslv.h |
154 | fips_dsatest.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h | 176 | fips_dsatest.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h |
155 | fips_dsatest.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | 177 | fips_dsatest.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h |
156 | fips_dsatest.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 178 | fips_dsatest.o: ../../include/openssl/sha.h ../../include/openssl/stack.h |
157 | fips_dsatest.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h | 179 | fips_dsatest.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h |
158 | fips_dsatest.o: fips_dsatest.c | 180 | fips_dsatest.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h |
181 | fips_dsatest.o: ../../include/openssl/x509_vfy.h ../fips_utl.h fips_dsatest.c | ||
182 | fips_dssvs.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
183 | fips_dssvs.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h | ||
184 | fips_dssvs.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h | ||
185 | fips_dssvs.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
186 | fips_dssvs.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h | ||
187 | fips_dssvs.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | ||
188 | fips_dssvs.o: ../../include/openssl/opensslconf.h | ||
189 | fips_dssvs.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
190 | fips_dssvs.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
191 | fips_dssvs.o: ../../include/openssl/symhacks.h ../fips_utl.h fips_dssvs.c | ||
diff --git a/src/lib/libssl/src/fips/dsa/fips_dsa_gen.c b/src/lib/libssl/src/fips/dsa/fips_dsa_gen.c index 21fa3d1783..0cecf34ab2 100644 --- a/src/lib/libssl/src/fips/dsa/fips_dsa_gen.c +++ b/src/lib/libssl/src/fips/dsa/fips_dsa_gen.c | |||
@@ -69,47 +69,40 @@ | |||
69 | #define HASH EVP_sha1() | 69 | #define HASH EVP_sha1() |
70 | #endif | 70 | #endif |
71 | 71 | ||
72 | #include <openssl/opensslconf.h> /* To see if OPENSSL_NO_SHA is defined */ | ||
73 | |||
74 | #ifndef OPENSSL_NO_SHA | ||
75 | |||
72 | #include <stdio.h> | 76 | #include <stdio.h> |
73 | #include <string.h> | ||
74 | #include <time.h> | 77 | #include <time.h> |
75 | /*#include "cryptlib.h"*/ | 78 | #include <string.h> |
76 | #include <openssl/evp.h> | 79 | #include <openssl/evp.h> |
77 | #include <openssl/bn.h> | 80 | #include <openssl/bn.h> |
78 | #ifndef OPENSSL_NO_DSA | ||
79 | #include <openssl/dsa.h> | 81 | #include <openssl/dsa.h> |
80 | #endif | ||
81 | #ifndef OPENSSL_NO_RAND | ||
82 | #include <openssl/rand.h> | 82 | #include <openssl/rand.h> |
83 | #endif | ||
84 | #ifndef OPENSSL_NO_SHA | ||
85 | #include <openssl/sha.h> | 83 | #include <openssl/sha.h> |
86 | #endif | ||
87 | #include <openssl/fips.h> | ||
88 | #include <openssl/err.h> | 84 | #include <openssl/err.h> |
89 | 85 | ||
90 | #ifndef OPENSSL_NO_DSA | ||
91 | #ifdef OPENSSL_FIPS | 86 | #ifdef OPENSSL_FIPS |
92 | 87 | ||
93 | static int fips_check_dsa(DSA *dsa) | 88 | static int dsa_builtin_paramgen(DSA *ret, int bits, |
94 | { | 89 | unsigned char *seed_in, int seed_len, |
95 | static const unsigned char str1[]="12345678901234567890"; | 90 | int *counter_ret, unsigned long *h_ret, BN_GENCB *cb); |
96 | unsigned char sig[256]; | ||
97 | unsigned int siglen; | ||
98 | 91 | ||
99 | DSA_sign(0, str1, 20, sig, &siglen, dsa); | 92 | int DSA_generate_parameters_ex(DSA *ret, int bits, |
100 | if(DSA_verify(0, str1, 20, sig, siglen, dsa) != 1) | 93 | unsigned char *seed_in, int seed_len, |
94 | int *counter_ret, unsigned long *h_ret, BN_GENCB *cb) | ||
101 | { | 95 | { |
102 | FIPSerr(FIPS_F_FIPS_CHECK_DSA,FIPS_R_PAIRWISE_TEST_FAILED); | 96 | if(ret->meth->dsa_paramgen) |
103 | return 0; | 97 | return ret->meth->dsa_paramgen(ret, bits, seed_in, seed_len, |
98 | counter_ret, h_ret, cb); | ||
99 | return dsa_builtin_paramgen(ret, bits, seed_in, seed_len, | ||
100 | counter_ret, h_ret, cb); | ||
104 | } | 101 | } |
105 | return 1; | 102 | |
106 | } | 103 | static int dsa_builtin_paramgen(DSA *ret, int bits, |
107 | 104 | unsigned char *seed_in, int seed_len, | |
108 | DSA *DSA_generate_parameters(FIPS_DSA_SIZE_T bits, | 105 | int *counter_ret, unsigned long *h_ret, BN_GENCB *cb) |
109 | unsigned char *seed_in, FIPS_DSA_SIZE_T seed_len, | ||
110 | int *counter_ret, unsigned long *h_ret, | ||
111 | void (*callback)(int, int, void *), | ||
112 | void *cb_arg) | ||
113 | { | 106 | { |
114 | int ok=0; | 107 | int ok=0; |
115 | unsigned char seed[SHA_DIGEST_LENGTH]; | 108 | unsigned char seed[SHA_DIGEST_LENGTH]; |
@@ -121,47 +114,56 @@ DSA *DSA_generate_parameters(FIPS_DSA_SIZE_T bits, | |||
121 | int k,n=0,i,b,m=0; | 114 | int k,n=0,i,b,m=0; |
122 | int counter=0; | 115 | int counter=0; |
123 | int r=0; | 116 | int r=0; |
124 | BN_CTX *ctx=NULL,*ctx2=NULL,*ctx3=NULL; | 117 | BN_CTX *ctx=NULL; |
125 | unsigned int h=2; | 118 | unsigned int h=2; |
126 | DSA *ret=NULL; | ||
127 | unsigned char *seed_out=seed_in; | ||
128 | 119 | ||
129 | if(FIPS_selftest_failed()) | 120 | if(FIPS_selftest_failed()) |
130 | { | 121 | { |
131 | FIPSerr(FIPS_F_DSA_GENERATE_PARAMETERS, | 122 | FIPSerr(FIPS_F_DSA_BUILTIN_PARAMGEN, |
132 | FIPS_R_FIPS_SELFTEST_FAILED); | 123 | FIPS_R_FIPS_SELFTEST_FAILED); |
133 | goto err; | 124 | goto err; |
134 | } | 125 | } |
135 | 126 | ||
127 | if (FIPS_mode() && (bits < OPENSSL_DSA_FIPS_MIN_MODULUS_BITS)) | ||
128 | { | ||
129 | DSAerr(DSA_F_DSA_BUILTIN_PARAMGEN, DSA_R_KEY_SIZE_TOO_SMALL); | ||
130 | goto err; | ||
131 | } | ||
132 | |||
136 | if (bits < 512) bits=512; | 133 | if (bits < 512) bits=512; |
137 | bits=(bits+63)/64*64; | 134 | bits=(bits+63)/64*64; |
138 | 135 | ||
139 | if (seed_len < 20) | 136 | /* NB: seed_len == 0 is special case: copy generated seed to |
137 | * seed_in if it is not NULL. | ||
138 | */ | ||
139 | if (seed_len && (seed_len < 20)) | ||
140 | seed_in = NULL; /* seed buffer too small -- ignore */ | 140 | seed_in = NULL; /* seed buffer too small -- ignore */ |
141 | if (seed_len > 20) | 141 | if (seed_len > 20) |
142 | seed_len = 20; /* App. 2.2 of FIPS PUB 186 allows larger SEED, | 142 | seed_len = 20; /* App. 2.2 of FIPS PUB 186 allows larger SEED, |
143 | * but our internal buffers are restricted to 160 bits*/ | 143 | * but our internal buffers are restricted to 160 bits*/ |
144 | if ((seed_in != NULL) && (seed_len == 20)) | 144 | if ((seed_in != NULL) && (seed_len == 20)) |
145 | { | ||
145 | memcpy(seed,seed_in,seed_len); | 146 | memcpy(seed,seed_in,seed_len); |
147 | /* set seed_in to NULL to avoid it being copied back */ | ||
148 | seed_in = NULL; | ||
149 | } | ||
146 | 150 | ||
147 | if ((ctx=BN_CTX_new()) == NULL) goto err; | 151 | if ((ctx=BN_CTX_new()) == NULL) goto err; |
148 | if ((ctx2=BN_CTX_new()) == NULL) goto err; | ||
149 | if ((ctx3=BN_CTX_new()) == NULL) goto err; | ||
150 | if ((ret=DSA_new()) == NULL) goto err; | ||
151 | 152 | ||
152 | if ((mont=BN_MONT_CTX_new()) == NULL) goto err; | 153 | if ((mont=BN_MONT_CTX_new()) == NULL) goto err; |
153 | 154 | ||
154 | BN_CTX_start(ctx2); | 155 | BN_CTX_start(ctx); |
155 | r0 = BN_CTX_get(ctx2); | 156 | r0 = BN_CTX_get(ctx); |
156 | g = BN_CTX_get(ctx2); | 157 | g = BN_CTX_get(ctx); |
157 | W = BN_CTX_get(ctx2); | 158 | W = BN_CTX_get(ctx); |
158 | q = BN_CTX_get(ctx2); | 159 | q = BN_CTX_get(ctx); |
159 | X = BN_CTX_get(ctx2); | 160 | X = BN_CTX_get(ctx); |
160 | c = BN_CTX_get(ctx2); | 161 | c = BN_CTX_get(ctx); |
161 | p = BN_CTX_get(ctx2); | 162 | p = BN_CTX_get(ctx); |
162 | test = BN_CTX_get(ctx2); | 163 | test = BN_CTX_get(ctx); |
163 | 164 | ||
164 | BN_lshift(test,BN_value_one(),bits-1); | 165 | if (!BN_lshift(test,BN_value_one(),bits-1)) |
166 | goto err; | ||
165 | 167 | ||
166 | for (;;) | 168 | for (;;) |
167 | { | 169 | { |
@@ -170,12 +172,12 @@ DSA *DSA_generate_parameters(FIPS_DSA_SIZE_T bits, | |||
170 | int seed_is_random; | 172 | int seed_is_random; |
171 | 173 | ||
172 | /* step 1 */ | 174 | /* step 1 */ |
173 | if (callback != NULL) callback(0,m++,cb_arg); | 175 | if(!BN_GENCB_call(cb, 0, m++)) |
176 | goto err; | ||
174 | 177 | ||
175 | if (!seed_len) | 178 | if (!seed_len) |
176 | { | 179 | { |
177 | if(RAND_pseudo_bytes(seed,SHA_DIGEST_LENGTH) < 0) | 180 | RAND_pseudo_bytes(seed,SHA_DIGEST_LENGTH); |
178 | goto err; | ||
179 | seed_is_random = 1; | 181 | seed_is_random = 1; |
180 | } | 182 | } |
181 | else | 183 | else |
@@ -204,7 +206,8 @@ DSA *DSA_generate_parameters(FIPS_DSA_SIZE_T bits, | |||
204 | if (!BN_bin2bn(md,SHA_DIGEST_LENGTH,q)) goto err; | 206 | if (!BN_bin2bn(md,SHA_DIGEST_LENGTH,q)) goto err; |
205 | 207 | ||
206 | /* step 4 */ | 208 | /* step 4 */ |
207 | r = BN_is_prime_fasttest(q, DSS_prime_checks, callback, ctx3, cb_arg, seed_is_random); | 209 | r = BN_is_prime_fasttest_ex(q, DSS_prime_checks, ctx, |
210 | seed_is_random, cb); | ||
208 | if (r > 0) | 211 | if (r > 0) |
209 | break; | 212 | break; |
210 | if (r != 0) | 213 | if (r != 0) |
@@ -214,8 +217,8 @@ DSA *DSA_generate_parameters(FIPS_DSA_SIZE_T bits, | |||
214 | /* step 5 */ | 217 | /* step 5 */ |
215 | } | 218 | } |
216 | 219 | ||
217 | if (callback != NULL) callback(2,0,cb_arg); | 220 | if(!BN_GENCB_call(cb, 2, 0)) goto err; |
218 | if (callback != NULL) callback(3,0,cb_arg); | 221 | if(!BN_GENCB_call(cb, 3, 0)) goto err; |
219 | 222 | ||
220 | /* step 6 */ | 223 | /* step 6 */ |
221 | counter=0; | 224 | counter=0; |
@@ -226,8 +229,8 @@ DSA *DSA_generate_parameters(FIPS_DSA_SIZE_T bits, | |||
226 | 229 | ||
227 | for (;;) | 230 | for (;;) |
228 | { | 231 | { |
229 | if (callback != NULL && counter != 0) | 232 | if ((counter != 0) && !BN_GENCB_call(cb, 0, counter)) |
230 | callback(0,counter,cb_arg); | 233 | goto err; |
231 | 234 | ||
232 | /* step 7 */ | 235 | /* step 7 */ |
233 | BN_zero(W); | 236 | BN_zero(W); |
@@ -246,26 +249,27 @@ DSA *DSA_generate_parameters(FIPS_DSA_SIZE_T bits, | |||
246 | /* step 8 */ | 249 | /* step 8 */ |
247 | if (!BN_bin2bn(md,SHA_DIGEST_LENGTH,r0)) | 250 | if (!BN_bin2bn(md,SHA_DIGEST_LENGTH,r0)) |
248 | goto err; | 251 | goto err; |
249 | BN_lshift(r0,r0,160*k); | 252 | if (!BN_lshift(r0,r0,160*k)) goto err; |
250 | BN_add(W,W,r0); | 253 | if (!BN_add(W,W,r0)) goto err; |
251 | } | 254 | } |
252 | 255 | ||
253 | /* more of step 8 */ | 256 | /* more of step 8 */ |
254 | BN_mask_bits(W,bits-1); | 257 | if (!BN_mask_bits(W,bits-1)) goto err; |
255 | BN_copy(X,W); /* this should be ok */ | 258 | if (!BN_copy(X,W)) goto err; |
256 | BN_add(X,X,test); /* this should be ok */ | 259 | if (!BN_add(X,X,test)) goto err; |
257 | 260 | ||
258 | /* step 9 */ | 261 | /* step 9 */ |
259 | BN_lshift1(r0,q); | 262 | if (!BN_lshift1(r0,q)) goto err; |
260 | BN_mod(c,X,r0,ctx); | 263 | if (!BN_mod(c,X,r0,ctx)) goto err; |
261 | BN_sub(r0,c,BN_value_one()); | 264 | if (!BN_sub(r0,c,BN_value_one())) goto err; |
262 | BN_sub(p,X,r0); | 265 | if (!BN_sub(p,X,r0)) goto err; |
263 | 266 | ||
264 | /* step 10 */ | 267 | /* step 10 */ |
265 | if (BN_cmp(p,test) >= 0) | 268 | if (BN_cmp(p,test) >= 0) |
266 | { | 269 | { |
267 | /* step 11 */ | 270 | /* step 11 */ |
268 | r = BN_is_prime_fasttest(p, DSS_prime_checks, callback, ctx3, cb_arg, 1); | 271 | r = BN_is_prime_fasttest_ex(p, DSS_prime_checks, |
272 | ctx, 1, cb); | ||
269 | if (r > 0) | 273 | if (r > 0) |
270 | goto end; /* found it */ | 274 | goto end; /* found it */ |
271 | if (r != 0) | 275 | if (r != 0) |
@@ -281,94 +285,55 @@ DSA *DSA_generate_parameters(FIPS_DSA_SIZE_T bits, | |||
281 | } | 285 | } |
282 | } | 286 | } |
283 | end: | 287 | end: |
284 | if (callback != NULL) callback(2,1,cb_arg); | 288 | if(!BN_GENCB_call(cb, 2, 1)) |
289 | goto err; | ||
285 | 290 | ||
286 | /* We now need to generate g */ | 291 | /* We now need to generate g */ |
287 | /* Set r0=(p-1)/q */ | 292 | /* Set r0=(p-1)/q */ |
288 | BN_sub(test,p,BN_value_one()); | 293 | if (!BN_sub(test,p,BN_value_one())) goto err; |
289 | BN_div(r0,NULL,test,q,ctx); | 294 | if (!BN_div(r0,NULL,test,q,ctx)) goto err; |
290 | 295 | ||
291 | BN_set_word(test,h); | 296 | if (!BN_set_word(test,h)) goto err; |
292 | BN_MONT_CTX_set(mont,p,ctx); | 297 | if (!BN_MONT_CTX_set(mont,p,ctx)) goto err; |
293 | 298 | ||
294 | for (;;) | 299 | for (;;) |
295 | { | 300 | { |
296 | /* g=test^r0%p */ | 301 | /* g=test^r0%p */ |
297 | BN_mod_exp_mont(g,test,r0,p,ctx,mont); | 302 | if (!BN_mod_exp_mont(g,test,r0,p,ctx,mont)) goto err; |
298 | if (!BN_is_one(g)) break; | 303 | if (!BN_is_one(g)) break; |
299 | BN_add(test,test,BN_value_one()); | 304 | if (!BN_add(test,test,BN_value_one())) goto err; |
300 | h++; | 305 | h++; |
301 | } | 306 | } |
302 | 307 | ||
303 | if (callback != NULL) callback(3,1,cb_arg); | 308 | if(!BN_GENCB_call(cb, 3, 1)) |
309 | goto err; | ||
304 | 310 | ||
305 | ok=1; | 311 | ok=1; |
306 | err: | 312 | err: |
307 | if (!ok) | 313 | if (ok) |
308 | { | ||
309 | if (ret != NULL) DSA_free(ret); | ||
310 | } | ||
311 | else | ||
312 | { | 314 | { |
315 | if(ret->p) BN_free(ret->p); | ||
316 | if(ret->q) BN_free(ret->q); | ||
317 | if(ret->g) BN_free(ret->g); | ||
313 | ret->p=BN_dup(p); | 318 | ret->p=BN_dup(p); |
314 | ret->q=BN_dup(q); | 319 | ret->q=BN_dup(q); |
315 | ret->g=BN_dup(g); | 320 | ret->g=BN_dup(g); |
316 | if(seed_out != NULL) memcpy(seed_out,seed,20); | 321 | if (ret->p == NULL || ret->q == NULL || ret->g == NULL) |
322 | { | ||
323 | ok=0; | ||
324 | goto err; | ||
325 | } | ||
326 | if (seed_in != NULL) memcpy(seed_in,seed,20); | ||
317 | if (counter_ret != NULL) *counter_ret=counter; | 327 | if (counter_ret != NULL) *counter_ret=counter; |
318 | if (h_ret != NULL) *h_ret=h; | 328 | if (h_ret != NULL) *h_ret=h; |
319 | } | 329 | } |
320 | if (ctx != NULL) BN_CTX_free(ctx); | 330 | if(ctx) |
321 | if (ctx2 != NULL) | ||
322 | { | 331 | { |
323 | BN_CTX_end(ctx2); | 332 | BN_CTX_end(ctx); |
324 | BN_CTX_free(ctx2); | 333 | BN_CTX_free(ctx); |
325 | } | 334 | } |
326 | if (ctx3 != NULL) BN_CTX_free(ctx3); | ||
327 | if (mont != NULL) BN_MONT_CTX_free(mont); | 335 | if (mont != NULL) BN_MONT_CTX_free(mont); |
328 | return(ok?ret:NULL); | 336 | return ok; |
329 | } | ||
330 | |||
331 | int DSA_generate_key(DSA *dsa) | ||
332 | { | ||
333 | int ok=0; | ||
334 | BN_CTX *ctx=NULL; | ||
335 | BIGNUM *pub_key=NULL,*priv_key=NULL; | ||
336 | |||
337 | if ((ctx=BN_CTX_new()) == NULL) goto err; | ||
338 | |||
339 | if (dsa->priv_key == NULL) | ||
340 | { | ||
341 | if ((priv_key=BN_new()) == NULL) goto err; | ||
342 | } | ||
343 | else | ||
344 | priv_key=dsa->priv_key; | ||
345 | |||
346 | do | ||
347 | if (!BN_rand_range(priv_key,dsa->q)) goto err; | ||
348 | while (BN_is_zero(priv_key)); | ||
349 | |||
350 | if (dsa->pub_key == NULL) | ||
351 | { | ||
352 | if ((pub_key=BN_new()) == NULL) goto err; | ||
353 | } | ||
354 | else | ||
355 | pub_key=dsa->pub_key; | ||
356 | |||
357 | if (!BN_mod_exp(pub_key,dsa->g,priv_key,dsa->p,ctx)) goto err; | ||
358 | |||
359 | dsa->priv_key=priv_key; | ||
360 | dsa->pub_key=pub_key; | ||
361 | |||
362 | if(!fips_check_dsa(dsa)) | ||
363 | goto err; | ||
364 | |||
365 | ok=1; | ||
366 | |||
367 | err: | ||
368 | if ((pub_key != NULL) && (dsa->pub_key == NULL)) BN_free(pub_key); | ||
369 | if ((priv_key != NULL) && (dsa->priv_key == NULL)) BN_free(priv_key); | ||
370 | if (ctx != NULL) BN_CTX_free(ctx); | ||
371 | return(ok); | ||
372 | } | 337 | } |
373 | #endif | 338 | #endif |
374 | #endif | 339 | #endif |
diff --git a/src/lib/libssl/src/fips/dsa/fips_dsa_key.c b/src/lib/libssl/src/fips/dsa/fips_dsa_key.c new file mode 100644 index 0000000000..b5f8cfa1d0 --- /dev/null +++ b/src/lib/libssl/src/fips/dsa/fips_dsa_key.c | |||
@@ -0,0 +1,169 @@ | |||
1 | /* crypto/dsa/dsa_key.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include <time.h> | ||
61 | #ifndef OPENSSL_NO_SHA | ||
62 | #include <openssl/bn.h> | ||
63 | #include <openssl/dsa.h> | ||
64 | #include <openssl/rand.h> | ||
65 | #include <openssl/err.h> | ||
66 | #include <openssl/evp.h> | ||
67 | #include <openssl/fips.h> | ||
68 | #include "fips_locl.h" | ||
69 | |||
70 | #ifdef OPENSSL_FIPS | ||
71 | |||
72 | static int fips_dsa_pairwise_fail = 0; | ||
73 | |||
74 | void FIPS_corrupt_dsa_keygen(void) | ||
75 | { | ||
76 | fips_dsa_pairwise_fail = 1; | ||
77 | } | ||
78 | |||
79 | static int dsa_builtin_keygen(DSA *dsa); | ||
80 | |||
81 | int fips_check_dsa(DSA *dsa) | ||
82 | { | ||
83 | EVP_PKEY pk; | ||
84 | unsigned char tbs[] = "DSA Pairwise Check Data"; | ||
85 | pk.type = EVP_PKEY_DSA; | ||
86 | pk.pkey.dsa = dsa; | ||
87 | |||
88 | if (!fips_pkey_signature_test(&pk, tbs, -1, | ||
89 | NULL, 0, EVP_dss1(), 0, NULL)) | ||
90 | { | ||
91 | FIPSerr(FIPS_F_FIPS_CHECK_DSA,FIPS_R_PAIRWISE_TEST_FAILED); | ||
92 | fips_set_selftest_fail(); | ||
93 | return 0; | ||
94 | } | ||
95 | return 1; | ||
96 | } | ||
97 | |||
98 | int DSA_generate_key(DSA *dsa) | ||
99 | { | ||
100 | if(dsa->meth->dsa_keygen) | ||
101 | return dsa->meth->dsa_keygen(dsa); | ||
102 | return dsa_builtin_keygen(dsa); | ||
103 | } | ||
104 | |||
105 | static int dsa_builtin_keygen(DSA *dsa) | ||
106 | { | ||
107 | int ok=0; | ||
108 | BN_CTX *ctx=NULL; | ||
109 | BIGNUM *pub_key=NULL,*priv_key=NULL; | ||
110 | |||
111 | if (FIPS_mode() && (BN_num_bits(dsa->p) < OPENSSL_DSA_FIPS_MIN_MODULUS_BITS)) | ||
112 | { | ||
113 | DSAerr(DSA_F_DSA_BUILTIN_KEYGEN, DSA_R_KEY_SIZE_TOO_SMALL); | ||
114 | goto err; | ||
115 | } | ||
116 | |||
117 | if ((ctx=BN_CTX_new()) == NULL) goto err; | ||
118 | |||
119 | if (dsa->priv_key == NULL) | ||
120 | { | ||
121 | if ((priv_key=BN_new()) == NULL) goto err; | ||
122 | } | ||
123 | else | ||
124 | priv_key=dsa->priv_key; | ||
125 | |||
126 | do | ||
127 | if (!BN_rand_range(priv_key,dsa->q)) goto err; | ||
128 | while (BN_is_zero(priv_key)); | ||
129 | |||
130 | if (dsa->pub_key == NULL) | ||
131 | { | ||
132 | if ((pub_key=BN_new()) == NULL) goto err; | ||
133 | } | ||
134 | else | ||
135 | pub_key=dsa->pub_key; | ||
136 | |||
137 | { | ||
138 | BIGNUM local_prk; | ||
139 | BIGNUM *prk; | ||
140 | |||
141 | if ((dsa->flags & DSA_FLAG_NO_EXP_CONSTTIME) == 0) | ||
142 | { | ||
143 | BN_init(&local_prk); | ||
144 | prk = &local_prk; | ||
145 | BN_with_flags(prk, priv_key, BN_FLG_CONSTTIME); | ||
146 | } | ||
147 | else | ||
148 | prk = priv_key; | ||
149 | |||
150 | if (!BN_mod_exp(pub_key,dsa->g,prk,dsa->p,ctx)) goto err; | ||
151 | } | ||
152 | |||
153 | dsa->priv_key=priv_key; | ||
154 | dsa->pub_key=pub_key; | ||
155 | if (fips_dsa_pairwise_fail) | ||
156 | BN_add_word(dsa->pub_key, 1); | ||
157 | if(!fips_check_dsa(dsa)) | ||
158 | goto err; | ||
159 | ok=1; | ||
160 | |||
161 | err: | ||
162 | if ((pub_key != NULL) && (dsa->pub_key == NULL)) BN_free(pub_key); | ||
163 | if ((priv_key != NULL) && (dsa->priv_key == NULL)) BN_free(priv_key); | ||
164 | if (ctx != NULL) BN_CTX_free(ctx); | ||
165 | return(ok); | ||
166 | } | ||
167 | #endif | ||
168 | |||
169 | #endif | ||
diff --git a/src/lib/libssl/src/fips/dsa/fips_dsa_lib.c b/src/lib/libssl/src/fips/dsa/fips_dsa_lib.c new file mode 100644 index 0000000000..2545966d2a --- /dev/null +++ b/src/lib/libssl/src/fips/dsa/fips_dsa_lib.c | |||
@@ -0,0 +1,95 @@ | |||
1 | /* fips_dsa_lib.c */ | ||
2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | ||
3 | * project 2007. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 2007 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <string.h> | ||
60 | #include <openssl/dsa.h> | ||
61 | #include <openssl/bn.h> | ||
62 | |||
63 | /* Minimal FIPS versions of FIPS_dsa_new() and FIPS_dsa_free: to | ||
64 | * reduce external dependencies. | ||
65 | */ | ||
66 | |||
67 | DSA *FIPS_dsa_new(void) | ||
68 | { | ||
69 | DSA *ret; | ||
70 | ret = OPENSSL_malloc(sizeof(DSA)); | ||
71 | if (!ret) | ||
72 | return NULL; | ||
73 | memset(ret, 0, sizeof(DSA)); | ||
74 | ret->meth = DSA_OpenSSL(); | ||
75 | if (ret->meth->init) | ||
76 | ret->meth->init(ret); | ||
77 | return ret; | ||
78 | } | ||
79 | |||
80 | void FIPS_dsa_free(DSA *r) | ||
81 | { | ||
82 | if (!r) | ||
83 | return; | ||
84 | if (r->meth->finish) | ||
85 | r->meth->finish(r); | ||
86 | if (r->p != NULL) BN_clear_free(r->p); | ||
87 | if (r->q != NULL) BN_clear_free(r->q); | ||
88 | if (r->g != NULL) BN_clear_free(r->g); | ||
89 | if (r->pub_key != NULL) BN_clear_free(r->pub_key); | ||
90 | if (r->priv_key != NULL) BN_clear_free(r->priv_key); | ||
91 | if (r->kinv != NULL) BN_clear_free(r->kinv); | ||
92 | if (r->r != NULL) BN_clear_free(r->r); | ||
93 | OPENSSL_free(r); | ||
94 | } | ||
95 | |||
diff --git a/src/lib/libssl/src/fips/dsa/fips_dsa_ossl.c b/src/lib/libssl/src/fips/dsa/fips_dsa_ossl.c index 0ae5eb4b9e..50a6c13318 100644 --- a/src/lib/libssl/src/fips/dsa/fips_dsa_ossl.c +++ b/src/lib/libssl/src/fips/dsa/fips_dsa_ossl.c | |||
@@ -63,6 +63,7 @@ | |||
63 | #include <openssl/dsa.h> | 63 | #include <openssl/dsa.h> |
64 | #include <openssl/rand.h> | 64 | #include <openssl/rand.h> |
65 | #include <openssl/asn1.h> | 65 | #include <openssl/asn1.h> |
66 | #include <openssl/err.h> | ||
66 | #ifndef OPENSSL_NO_ENGINE | 67 | #ifndef OPENSSL_NO_ENGINE |
67 | #include <openssl/engine.h> | 68 | #include <openssl/engine.h> |
68 | #endif | 69 | #endif |
@@ -83,7 +84,7 @@ static int dsa_bn_mod_exp(DSA *dsa, BIGNUM *r, BIGNUM *a, const BIGNUM *p, | |||
83 | const BIGNUM *m, BN_CTX *ctx, | 84 | const BIGNUM *m, BN_CTX *ctx, |
84 | BN_MONT_CTX *m_ctx); | 85 | BN_MONT_CTX *m_ctx); |
85 | 86 | ||
86 | static DSA_METHOD openssl_dsa_meth = { | 87 | static const DSA_METHOD openssl_dsa_meth = { |
87 | "OpenSSL FIPS DSA method", | 88 | "OpenSSL FIPS DSA method", |
88 | dsa_do_sign, | 89 | dsa_do_sign, |
89 | dsa_sign_setup, | 90 | dsa_sign_setup, |
@@ -92,10 +93,10 @@ dsa_mod_exp, | |||
92 | dsa_bn_mod_exp, | 93 | dsa_bn_mod_exp, |
93 | dsa_init, | 94 | dsa_init, |
94 | dsa_finish, | 95 | dsa_finish, |
95 | 0, | 96 | DSA_FLAG_FIPS_METHOD, |
96 | NULL | 97 | NULL |
97 | }; | 98 | }; |
98 | 99 | #if 0 | |
99 | int FIPS_dsa_check(struct dsa_st *dsa) | 100 | int FIPS_dsa_check(struct dsa_st *dsa) |
100 | { | 101 | { |
101 | if(dsa->meth != &openssl_dsa_meth || dsa->meth->dsa_do_sign != dsa_do_sign | 102 | if(dsa->meth != &openssl_dsa_meth || dsa->meth->dsa_do_sign != dsa_do_sign |
@@ -110,6 +111,7 @@ int FIPS_dsa_check(struct dsa_st *dsa) | |||
110 | } | 111 | } |
111 | return 1; | 112 | return 1; |
112 | } | 113 | } |
114 | #endif | ||
113 | 115 | ||
114 | const DSA_METHOD *DSA_OpenSSL(void) | 116 | const DSA_METHOD *DSA_OpenSSL(void) |
115 | { | 117 | { |
@@ -131,6 +133,12 @@ static DSA_SIG *dsa_do_sign(const unsigned char *dgst, FIPS_DSA_SIZE_T dlen, DSA | |||
131 | return NULL; | 133 | return NULL; |
132 | } | 134 | } |
133 | 135 | ||
136 | if (FIPS_mode() && (BN_num_bits(dsa->p) < OPENSSL_DSA_FIPS_MIN_MODULUS_BITS)) | ||
137 | { | ||
138 | DSAerr(DSA_F_DSA_DO_SIGN, DSA_R_KEY_SIZE_TOO_SMALL); | ||
139 | return NULL; | ||
140 | } | ||
141 | |||
134 | BN_init(&m); | 142 | BN_init(&m); |
135 | BN_init(&xr); | 143 | BN_init(&xr); |
136 | 144 | ||
@@ -153,17 +161,7 @@ static DSA_SIG *dsa_do_sign(const unsigned char *dgst, FIPS_DSA_SIZE_T dlen, DSA | |||
153 | ctx=BN_CTX_new(); | 161 | ctx=BN_CTX_new(); |
154 | if (ctx == NULL) goto err; | 162 | if (ctx == NULL) goto err; |
155 | 163 | ||
156 | if ((dsa->kinv == NULL) || (dsa->r == NULL)) | 164 | if (!dsa->meth->dsa_sign_setup(dsa,ctx,&kinv,&r)) goto err; |
157 | { | ||
158 | if (!DSA_sign_setup(dsa,ctx,&kinv,&r)) goto err; | ||
159 | } | ||
160 | else | ||
161 | { | ||
162 | kinv=dsa->kinv; | ||
163 | dsa->kinv=NULL; | ||
164 | r=dsa->r; | ||
165 | dsa->r=NULL; | ||
166 | } | ||
167 | 165 | ||
168 | if (BN_bin2bn(dgst,dlen,&m) == NULL) goto err; | 166 | if (BN_bin2bn(dgst,dlen,&m) == NULL) goto err; |
169 | 167 | ||
@@ -174,7 +172,7 @@ static DSA_SIG *dsa_do_sign(const unsigned char *dgst, FIPS_DSA_SIZE_T dlen, DSA | |||
174 | BN_sub(s,s,dsa->q); | 172 | BN_sub(s,s,dsa->q); |
175 | if (!BN_mod_mul(s,s,kinv,dsa->q,ctx)) goto err; | 173 | if (!BN_mod_mul(s,s,kinv,dsa->q,ctx)) goto err; |
176 | 174 | ||
177 | ret=DSA_SIG_new(); | 175 | ret= DSA_SIG_new(); |
178 | if (ret == NULL) goto err; | 176 | if (ret == NULL) goto err; |
179 | ret->r = r; | 177 | ret->r = r; |
180 | ret->s = s; | 178 | ret->s = s; |
@@ -197,7 +195,7 @@ err: | |||
197 | static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp) | 195 | static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp) |
198 | { | 196 | { |
199 | BN_CTX *ctx; | 197 | BN_CTX *ctx; |
200 | BIGNUM k,*kinv=NULL,*r=NULL; | 198 | BIGNUM k,kq,*K,*kinv=NULL,*r=NULL; |
201 | int ret=0; | 199 | int ret=0; |
202 | 200 | ||
203 | if (!dsa->p || !dsa->q || !dsa->g) | 201 | if (!dsa->p || !dsa->q || !dsa->g) |
@@ -207,6 +205,7 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp) | |||
207 | } | 205 | } |
208 | 206 | ||
209 | BN_init(&k); | 207 | BN_init(&k); |
208 | BN_init(&kq); | ||
210 | 209 | ||
211 | if (ctx_in == NULL) | 210 | if (ctx_in == NULL) |
212 | { | 211 | { |
@@ -216,22 +215,49 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp) | |||
216 | ctx=ctx_in; | 215 | ctx=ctx_in; |
217 | 216 | ||
218 | if ((r=BN_new()) == NULL) goto err; | 217 | if ((r=BN_new()) == NULL) goto err; |
219 | kinv=NULL; | ||
220 | 218 | ||
221 | /* Get random k */ | 219 | /* Get random k */ |
222 | do | 220 | do |
223 | if (!BN_rand_range(&k, dsa->q)) goto err; | 221 | if (!BN_rand_range(&k, dsa->q)) goto err; |
224 | while (BN_is_zero(&k)); | 222 | while (BN_is_zero(&k)); |
223 | if ((dsa->flags & DSA_FLAG_NO_EXP_CONSTTIME) == 0) | ||
224 | { | ||
225 | BN_set_flags(&k, BN_FLG_CONSTTIME); | ||
226 | } | ||
225 | 227 | ||
226 | if ((dsa->method_mont_p == NULL) && (dsa->flags & DSA_FLAG_CACHE_MONT_P)) | 228 | if (dsa->flags & DSA_FLAG_CACHE_MONT_P) |
227 | { | 229 | { |
228 | if ((dsa->method_mont_p=(char *)BN_MONT_CTX_new()) != NULL) | 230 | if (!BN_MONT_CTX_set_locked((BN_MONT_CTX **)&dsa->method_mont_p, |
229 | if (!BN_MONT_CTX_set((BN_MONT_CTX *)dsa->method_mont_p, | 231 | CRYPTO_LOCK_DSA, |
230 | dsa->p,ctx)) goto err; | 232 | dsa->p, ctx)) |
233 | goto err; | ||
231 | } | 234 | } |
232 | 235 | ||
233 | /* Compute r = (g^k mod p) mod q */ | 236 | /* Compute r = (g^k mod p) mod q */ |
234 | if (!dsa->meth->bn_mod_exp(dsa, r,dsa->g,&k,dsa->p,ctx, | 237 | |
238 | if ((dsa->flags & DSA_FLAG_NO_EXP_CONSTTIME) == 0) | ||
239 | { | ||
240 | if (!BN_copy(&kq, &k)) goto err; | ||
241 | |||
242 | /* We do not want timing information to leak the length of k, | ||
243 | * so we compute g^k using an equivalent exponent of fixed length. | ||
244 | * | ||
245 | * (This is a kludge that we need because the BN_mod_exp_mont() | ||
246 | * does not let us specify the desired timing behaviour.) */ | ||
247 | |||
248 | if (!BN_add(&kq, &kq, dsa->q)) goto err; | ||
249 | if (BN_num_bits(&kq) <= BN_num_bits(dsa->q)) | ||
250 | { | ||
251 | if (!BN_add(&kq, &kq, dsa->q)) goto err; | ||
252 | } | ||
253 | |||
254 | K = &kq; | ||
255 | } | ||
256 | else | ||
257 | { | ||
258 | K = &k; | ||
259 | } | ||
260 | if (!dsa->meth->bn_mod_exp(dsa, r,dsa->g,K,dsa->p,ctx, | ||
235 | (BN_MONT_CTX *)dsa->method_mont_p)) goto err; | 261 | (BN_MONT_CTX *)dsa->method_mont_p)) goto err; |
236 | if (!BN_mod(r,r,dsa->q,ctx)) goto err; | 262 | if (!BN_mod(r,r,dsa->q,ctx)) goto err; |
237 | 263 | ||
@@ -254,6 +280,7 @@ err: | |||
254 | if (ctx_in == NULL) BN_CTX_free(ctx); | 280 | if (ctx_in == NULL) BN_CTX_free(ctx); |
255 | if (kinv != NULL) BN_clear_free(kinv); | 281 | if (kinv != NULL) BN_clear_free(kinv); |
256 | BN_clear_free(&k); | 282 | BN_clear_free(&k); |
283 | BN_clear_free(&kq); | ||
257 | return(ret); | 284 | return(ret); |
258 | } | 285 | } |
259 | 286 | ||
@@ -277,6 +304,24 @@ static int dsa_do_verify(const unsigned char *dgst, FIPS_DSA_SIZE_T dgst_len, DS | |||
277 | return -1; | 304 | return -1; |
278 | } | 305 | } |
279 | 306 | ||
307 | if (BN_num_bits(dsa->q) != 160) | ||
308 | { | ||
309 | DSAerr(DSA_F_DSA_DO_VERIFY,DSA_R_BAD_Q_VALUE); | ||
310 | return -1; | ||
311 | } | ||
312 | |||
313 | if (BN_num_bits(dsa->p) > OPENSSL_DSA_MAX_MODULUS_BITS) | ||
314 | { | ||
315 | DSAerr(DSA_F_DSA_DO_VERIFY,DSA_R_MODULUS_TOO_LARGE); | ||
316 | return -1; | ||
317 | } | ||
318 | |||
319 | if (FIPS_mode() && (BN_num_bits(dsa->p) < OPENSSL_DSA_FIPS_MIN_MODULUS_BITS)) | ||
320 | { | ||
321 | DSAerr(DSA_F_DSA_DO_VERIFY, DSA_R_KEY_SIZE_TOO_SMALL); | ||
322 | return -1; | ||
323 | } | ||
324 | |||
280 | BN_init(&u1); | 325 | BN_init(&u1); |
281 | BN_init(&u2); | 326 | BN_init(&u2); |
282 | BN_init(&t1); | 327 | BN_init(&t1); |
@@ -307,13 +352,15 @@ static int dsa_do_verify(const unsigned char *dgst, FIPS_DSA_SIZE_T dgst_len, DS | |||
307 | /* u2 = r * w mod q */ | 352 | /* u2 = r * w mod q */ |
308 | if (!BN_mod_mul(&u2,sig->r,&u2,dsa->q,ctx)) goto err; | 353 | if (!BN_mod_mul(&u2,sig->r,&u2,dsa->q,ctx)) goto err; |
309 | 354 | ||
310 | if ((dsa->method_mont_p == NULL) && (dsa->flags & DSA_FLAG_CACHE_MONT_P)) | 355 | |
356 | if (dsa->flags & DSA_FLAG_CACHE_MONT_P) | ||
311 | { | 357 | { |
312 | if ((dsa->method_mont_p=(char *)BN_MONT_CTX_new()) != NULL) | 358 | mont = BN_MONT_CTX_set_locked( |
313 | if (!BN_MONT_CTX_set((BN_MONT_CTX *)dsa->method_mont_p, | 359 | (BN_MONT_CTX **)&dsa->method_mont_p, |
314 | dsa->p,ctx)) goto err; | 360 | CRYPTO_LOCK_DSA, dsa->p, ctx); |
361 | if (!mont) | ||
362 | goto err; | ||
315 | } | 363 | } |
316 | mont=(BN_MONT_CTX *)dsa->method_mont_p; | ||
317 | 364 | ||
318 | #if 0 | 365 | #if 0 |
319 | { | 366 | { |
@@ -355,6 +402,7 @@ static int dsa_do_verify(const unsigned char *dgst, FIPS_DSA_SIZE_T dgst_len, DS | |||
355 | 402 | ||
356 | static int dsa_init(DSA *dsa) | 403 | static int dsa_init(DSA *dsa) |
357 | { | 404 | { |
405 | FIPS_selftest_check(); | ||
358 | dsa->flags|=DSA_FLAG_CACHE_MONT_P; | 406 | dsa->flags|=DSA_FLAG_CACHE_MONT_P; |
359 | return(1); | 407 | return(1); |
360 | } | 408 | } |
diff --git a/src/lib/libssl/src/fips/dsa/fips_dsa_selftest.c b/src/lib/libssl/src/fips/dsa/fips_dsa_selftest.c index 2c88f0af44..6880760a77 100644 --- a/src/lib/libssl/src/fips/dsa/fips_dsa_selftest.c +++ b/src/lib/libssl/src/fips/dsa/fips_dsa_selftest.c | |||
@@ -61,42 +61,49 @@ | |||
61 | #include <openssl/dsa.h> | 61 | #include <openssl/dsa.h> |
62 | #include <openssl/fips.h> | 62 | #include <openssl/fips.h> |
63 | #include <openssl/err.h> | 63 | #include <openssl/err.h> |
64 | #include <openssl/evp.h> | ||
65 | #include <openssl/bn.h> | ||
64 | 66 | ||
65 | #ifdef OPENSSL_FIPS | 67 | #ifdef OPENSSL_FIPS |
66 | 68 | ||
67 | /* seed, out_p, out_q, out_g are taken from the updated Appendix 5 to | 69 | /* seed, out_p, out_q, out_g are taken the NIST test vectors */ |
68 | * FIPS PUB 186 and also appear in Appendix 5 to FIPS PIB 186-1 */ | 70 | |
69 | static unsigned char seed[20]={ | 71 | static unsigned char seed[20] = { |
70 | 0xd5,0x01,0x4e,0x4b,0x60,0xef,0x2b,0xa8,0xb6,0x21,0x1b,0x40, | 72 | 0x77, 0x8f, 0x40, 0x74, 0x6f, 0x66, 0xbe, 0x33, 0xce, 0xbe, 0x99, 0x34, |
71 | 0x62,0xba,0x32,0x24,0xe0,0x42,0x7d,0xd3, | 73 | 0x4c, 0xfc, 0xf3, 0x28, 0xaa, 0x70, 0x2d, 0x3a |
72 | }; | 74 | }; |
73 | 75 | ||
74 | static unsigned char out_p[]={ | 76 | static unsigned char out_p[] = { |
75 | 0x8d,0xf2,0xa4,0x94,0x49,0x22,0x76,0xaa, | 77 | 0xf7, 0x7c, 0x1b, 0x83, 0xd8, 0xe8, 0x5c, 0x7f, 0x85, 0x30, 0x17, 0x57, |
76 | 0x3d,0x25,0x75,0x9b,0xb0,0x68,0x69,0xcb, | 78 | 0x21, 0x95, 0xfe, 0x26, 0x04, 0xeb, 0x47, 0x4c, 0x3a, 0x4a, 0x81, 0x4b, |
77 | 0xea,0xc0,0xd8,0x3a,0xfb,0x8d,0x0c,0xf7, | 79 | 0x71, 0x2e, 0xed, 0x6e, 0x4f, 0x3d, 0x11, 0x0f, 0x7c, 0xfe, 0x36, 0x43, |
78 | 0xcb,0xb8,0x32,0x4f,0x0d,0x78,0x82,0xe5, | 80 | 0x51, 0xd9, 0x81, 0x39, 0x17, 0xdf, 0x62, 0xf6, 0x9c, 0x01, 0xa8, 0x69, |
79 | 0xd0,0x76,0x2f,0xc5,0xb7,0x21,0x0e,0xaf, | 81 | 0x71, 0xdd, 0x29, 0x7f, 0x47, 0xe6, 0x65, 0xa6, 0x22, 0xe8, 0x6a, 0x12, |
80 | 0xc2,0xe9,0xad,0xac,0x32,0xab,0x7a,0xac, | 82 | 0x2b, 0xc2, 0x81, 0xff, 0x32, 0x70, 0x2f, 0x9e, 0xca, 0x53, 0x26, 0x47, |
81 | 0x49,0x69,0x3d,0xfb,0xf8,0x37,0x24,0xc2, | 83 | 0x0f, 0x59, 0xd7, 0x9e, 0x2c, 0xa5, 0x07, 0xc4, 0x49, 0x52, 0xa3, 0xe4, |
82 | 0xec,0x07,0x36,0xee,0x31,0xc8,0x02,0x91, | 84 | 0x6b, 0x04, 0x00, 0x25, 0x49, 0xe2, 0xe6, 0x7f, 0x28, 0x78, 0x97, 0xb8, |
85 | 0x3a, 0x32, 0x14, 0x38, 0xa2, 0x51, 0x33, 0x22, 0x44, 0x7e, 0xd7, 0xef, | ||
86 | 0x45, 0xdb, 0x06, 0x4a, 0xd2, 0x82, 0x4a, 0x82, 0x2c, 0xb1, 0xd7, 0xd8, | ||
87 | 0xb6, 0x73, 0x00, 0x4d, 0x94, 0x77, 0x94, 0xef | ||
83 | }; | 88 | }; |
84 | 89 | ||
85 | static unsigned char out_q[]={ | 90 | static unsigned char out_q[] = { |
86 | 0xc7,0x73,0x21,0x8c,0x73,0x7e,0xc8,0xee, | 91 | 0xd4, 0x0a, 0xac, 0x9f, 0xbd, 0x8c, 0x80, 0xc2, 0x38, 0x7e, 0x2e, 0x0c, |
87 | 0x99,0x3b,0x4f,0x2d,0xed,0x30,0xf4,0x8e, | 92 | 0x52, 0x5c, 0xea, 0x34, 0xa1, 0x83, 0x32, 0xf3 |
88 | 0xda,0xce,0x91,0x5f, | ||
89 | }; | 93 | }; |
90 | 94 | ||
91 | static unsigned char out_g[]={ | 95 | static unsigned char out_g[] = { |
92 | 0x62,0x6d,0x02,0x78,0x39,0xea,0x0a,0x13, | 96 | 0x34, 0x73, 0x8b, 0x57, 0x84, 0x8e, 0x55, 0xbf, 0x57, 0xcc, 0x41, 0xbb, |
93 | 0x41,0x31,0x63,0xa5,0x5b,0x4c,0xb5,0x00, | 97 | 0x5e, 0x2b, 0xd5, 0x42, 0xdd, 0x24, 0x22, 0x2a, 0x09, 0xea, 0x26, 0x1e, |
94 | 0x29,0x9d,0x55,0x22,0x95,0x6c,0xef,0xcb, | 98 | 0x17, 0x65, 0xcb, 0x1a, 0xb3, 0x12, 0x44, 0xa3, 0x9e, 0x99, 0xe9, 0x63, |
95 | 0x3b,0xff,0x10,0xf3,0x99,0xce,0x2c,0x2e, | 99 | 0xeb, 0x30, 0xb1, 0x78, 0x7b, 0x09, 0x40, 0x30, 0xfa, 0x83, 0xc2, 0x35, |
96 | 0x71,0xcb,0x9d,0xe5,0xfa,0x24,0xba,0xbf, | 100 | 0xe1, 0xc4, 0x2d, 0x74, 0x1a, 0xb1, 0x83, 0x54, 0xd8, 0x29, 0xf4, 0xcf, |
97 | 0x58,0xe5,0xb7,0x95,0x21,0x92,0x5c,0x9c, | 101 | 0x7f, 0x6f, 0x67, 0x1c, 0x36, 0x49, 0xee, 0x6c, 0xa2, 0x3c, 0x2d, 0x6a, |
98 | 0xc4,0x2e,0x9f,0x6f,0x46,0x4b,0x08,0x8c, | 102 | 0xe9, 0xd3, 0x9a, 0xf6, 0x57, 0x78, 0x6f, 0xfd, 0x33, 0xcd, 0x3c, 0xed, |
99 | 0xc5,0x72,0xaf,0x53,0xe6,0xd7,0x88,0x02, | 103 | 0xfd, 0xd4, 0x41, 0xe6, 0x5c, 0x8b, 0xe0, 0x68, 0x31, 0x47, 0x47, 0xaf, |
104 | 0x12, 0xa7, 0xf9, 0x32, 0x0d, 0x94, 0x15, 0x48, 0xd0, 0x54, 0x85, 0xb2, | ||
105 | 0x04, 0xb5, 0x4d, 0xd4, 0x9d, 0x05, 0x22, 0x25, 0xd9, 0xfd, 0x6c, 0x36, | ||
106 | 0xef, 0xbe, 0x69, 0x6c, 0x55, 0xf4, 0xee, 0xec | ||
100 | }; | 107 | }; |
101 | 108 | ||
102 | static const unsigned char str1[]="12345678901234567890"; | 109 | static const unsigned char str1[]="12345678901234567890"; |
@@ -109,60 +116,65 @@ void FIPS_corrupt_dsa() | |||
109 | int FIPS_selftest_dsa() | 116 | int FIPS_selftest_dsa() |
110 | { | 117 | { |
111 | DSA *dsa=NULL; | 118 | DSA *dsa=NULL; |
112 | int counter,i,j; | 119 | int counter,i,j, ret = 0; |
120 | unsigned int slen; | ||
113 | unsigned char buf[256]; | 121 | unsigned char buf[256]; |
114 | unsigned long h; | 122 | unsigned long h; |
115 | unsigned char sig[256]; | 123 | EVP_MD_CTX mctx; |
116 | unsigned int siglen; | 124 | EVP_PKEY pk; |
117 | 125 | ||
118 | dsa=DSA_generate_parameters(512,seed,20,&counter,&h,NULL,NULL); | 126 | EVP_MD_CTX_init(&mctx); |
127 | |||
128 | dsa = FIPS_dsa_new(); | ||
119 | 129 | ||
120 | if(dsa == NULL) | 130 | if(dsa == NULL) |
121 | { | 131 | goto err; |
122 | FIPSerr(FIPS_F_FIPS_SELFTEST_DSA,FIPS_R_SELFTEST_FAILED); | 132 | if(!DSA_generate_parameters_ex(dsa, 1024,seed,20,&counter,&h,NULL)) |
123 | return 0; | 133 | goto err; |
124 | } | 134 | if (counter != 378) |
125 | if (counter != 105) | 135 | goto err; |
126 | { | ||
127 | FIPSerr(FIPS_F_FIPS_SELFTEST_DSA,FIPS_R_SELFTEST_FAILED); | ||
128 | return 0; | ||
129 | } | ||
130 | if (h != 2) | 136 | if (h != 2) |
131 | { | 137 | goto err; |
132 | FIPSerr(FIPS_F_FIPS_SELFTEST_DSA,FIPS_R_SELFTEST_FAILED); | ||
133 | return 0; | ||
134 | } | ||
135 | i=BN_bn2bin(dsa->q,buf); | 138 | i=BN_bn2bin(dsa->q,buf); |
136 | j=sizeof(out_q); | 139 | j=sizeof(out_q); |
137 | if (i != j || memcmp(buf,out_q,i) != 0) | 140 | if (i != j || memcmp(buf,out_q,i) != 0) |
138 | { | 141 | goto err; |
139 | FIPSerr(FIPS_F_FIPS_SELFTEST_DSA,FIPS_R_SELFTEST_FAILED); | ||
140 | return 0; | ||
141 | } | ||
142 | 142 | ||
143 | i=BN_bn2bin(dsa->p,buf); | 143 | i=BN_bn2bin(dsa->p,buf); |
144 | j=sizeof(out_p); | 144 | j=sizeof(out_p); |
145 | if (i != j || memcmp(buf,out_p,i) != 0) | 145 | if (i != j || memcmp(buf,out_p,i) != 0) |
146 | { | 146 | goto err; |
147 | FIPSerr(FIPS_F_FIPS_SELFTEST_DSA,FIPS_R_SELFTEST_FAILED); | ||
148 | return 0; | ||
149 | } | ||
150 | 147 | ||
151 | i=BN_bn2bin(dsa->g,buf); | 148 | i=BN_bn2bin(dsa->g,buf); |
152 | j=sizeof(out_g); | 149 | j=sizeof(out_g); |
153 | if (i != j || memcmp(buf,out_g,i) != 0) | 150 | if (i != j || memcmp(buf,out_g,i) != 0) |
154 | { | 151 | goto err; |
155 | FIPSerr(FIPS_F_FIPS_SELFTEST_DSA,FIPS_R_SELFTEST_FAILED); | ||
156 | return 0; | ||
157 | } | ||
158 | DSA_generate_key(dsa); | 152 | DSA_generate_key(dsa); |
159 | DSA_sign(0, str1, 20, sig, &siglen, dsa); | 153 | pk.type = EVP_PKEY_DSA; |
160 | if(DSA_verify(0, str1, 20, sig, siglen, dsa) != 1) | 154 | pk.pkey.dsa = dsa; |
161 | { | 155 | |
162 | FIPSerr(FIPS_F_FIPS_SELFTEST_DSA,FIPS_R_SELFTEST_FAILED); | 156 | if (!EVP_SignInit_ex(&mctx, EVP_dss1(), NULL)) |
163 | return 0; | 157 | goto err; |
164 | } | 158 | if (!EVP_SignUpdate(&mctx, str1, 20)) |
165 | DSA_free(dsa); | 159 | goto err; |
166 | return 1; | 160 | if (!EVP_SignFinal(&mctx, buf, &slen, &pk)) |
161 | goto err; | ||
162 | |||
163 | if (!EVP_VerifyInit_ex(&mctx, EVP_dss1(), NULL)) | ||
164 | goto err; | ||
165 | if (!EVP_VerifyUpdate(&mctx, str1, 20)) | ||
166 | goto err; | ||
167 | if (EVP_VerifyFinal(&mctx, buf, slen, &pk) != 1) | ||
168 | goto err; | ||
169 | |||
170 | ret = 1; | ||
171 | |||
172 | err: | ||
173 | EVP_MD_CTX_cleanup(&mctx); | ||
174 | if (dsa) | ||
175 | FIPS_dsa_free(dsa); | ||
176 | if (ret == 0) | ||
177 | FIPSerr(FIPS_F_FIPS_SELFTEST_DSA,FIPS_R_SELFTEST_FAILED); | ||
178 | return ret; | ||
167 | } | 179 | } |
168 | #endif | 180 | #endif |
diff --git a/src/lib/libssl/src/fips/dsa/fips_dsa_sign.c b/src/lib/libssl/src/fips/dsa/fips_dsa_sign.c new file mode 100644 index 0000000000..32ea0b0fea --- /dev/null +++ b/src/lib/libssl/src/fips/dsa/fips_dsa_sign.c | |||
@@ -0,0 +1,256 @@ | |||
1 | /* fips_dsa_sign.c */ | ||
2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | ||
3 | * project 2007. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 2007 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <string.h> | ||
60 | #include <openssl/evp.h> | ||
61 | #include <openssl/dsa.h> | ||
62 | #include <openssl/err.h> | ||
63 | #include <openssl/sha.h> | ||
64 | #include <openssl/bn.h> | ||
65 | |||
66 | #ifdef OPENSSL_FIPS | ||
67 | |||
68 | /* FIPS versions of DSA_sign() and DSA_verify(). | ||
69 | * These include a tiny ASN1 encoder/decoder to handle the specific | ||
70 | * case of a DSA signature. | ||
71 | */ | ||
72 | |||
73 | int FIPS_dsa_size(DSA *r) | ||
74 | { | ||
75 | int ilen; | ||
76 | ilen = BN_num_bytes(r->q); | ||
77 | if (ilen > 20) | ||
78 | return -1; | ||
79 | /* If MSB set need padding byte */ | ||
80 | ilen ++; | ||
81 | /* Also need 2 bytes INTEGER header for r and s plus | ||
82 | * 2 bytes SEQUENCE header making 6 in total. | ||
83 | */ | ||
84 | return ilen * 2 + 6; | ||
85 | } | ||
86 | |||
87 | /* Tiny ASN1 encoder for DSA_SIG structure. We can assume r, s smaller than | ||
88 | * 0x80 octets as by the DSA standards they will be less than 2^160 | ||
89 | */ | ||
90 | |||
91 | int FIPS_dsa_sig_encode(unsigned char *out, DSA_SIG *sig) | ||
92 | { | ||
93 | int rlen, slen, rpad, spad, seqlen; | ||
94 | rlen = BN_num_bytes(sig->r); | ||
95 | if (rlen > 20) | ||
96 | return -1; | ||
97 | if (BN_num_bits(sig->r) & 0x7) | ||
98 | rpad = 0; | ||
99 | else | ||
100 | rpad = 1; | ||
101 | slen = BN_num_bytes(sig->s); | ||
102 | if (slen > 20) | ||
103 | return -1; | ||
104 | if (BN_num_bits(sig->s) & 0x7) | ||
105 | spad = 0; | ||
106 | else | ||
107 | spad = 1; | ||
108 | /* Length of SEQUENCE, (1 tag + 1 len octet) * 2 + content octets */ | ||
109 | seqlen = rlen + rpad + slen + spad + 4; | ||
110 | /* Actual encoded length: include SEQUENCE header */ | ||
111 | if (!out) | ||
112 | return seqlen + 2; | ||
113 | |||
114 | /* Output SEQUENCE header */ | ||
115 | *out++ = V_ASN1_SEQUENCE|V_ASN1_CONSTRUCTED; | ||
116 | *out++ = (unsigned char)seqlen; | ||
117 | |||
118 | /* Output r */ | ||
119 | *out++ = V_ASN1_INTEGER; | ||
120 | *out++ = (unsigned char)(rlen + rpad); | ||
121 | if (rpad) | ||
122 | *out++ = 0; | ||
123 | BN_bn2bin(sig->r, out); | ||
124 | out += rlen; | ||
125 | |||
126 | /* Output s */ | ||
127 | *out++ = V_ASN1_INTEGER; | ||
128 | *out++ = (unsigned char)(slen + spad); | ||
129 | if (spad) | ||
130 | *out++ = 0; | ||
131 | BN_bn2bin(sig->s, out); | ||
132 | return seqlen + 2; | ||
133 | } | ||
134 | |||
135 | /* Companion DSA_SIG decoder */ | ||
136 | |||
137 | int FIPS_dsa_sig_decode(DSA_SIG *sig, const unsigned char *in, int inlen) | ||
138 | { | ||
139 | int seqlen, rlen, slen; | ||
140 | const unsigned char *rbin; | ||
141 | /* Sanity check */ | ||
142 | |||
143 | /* Need SEQUENCE tag */ | ||
144 | if (*in++ != (V_ASN1_SEQUENCE|V_ASN1_CONSTRUCTED)) | ||
145 | return 0; | ||
146 | /* Get length octet */ | ||
147 | seqlen = *in++; | ||
148 | /* Check sensible length value */ | ||
149 | if (seqlen < 4 || seqlen > 0x7F) | ||
150 | return 0; | ||
151 | /* Check INTEGER tag */ | ||
152 | if (*in++ != V_ASN1_INTEGER) | ||
153 | return 0; | ||
154 | rlen = *in++; | ||
155 | seqlen -= 2 + rlen; | ||
156 | /* Check sensible seqlen value */ | ||
157 | if (seqlen < 2) | ||
158 | return 0; | ||
159 | rbin = in; | ||
160 | in += rlen; | ||
161 | /* Check INTEGER tag */ | ||
162 | if (*in++ != V_ASN1_INTEGER) | ||
163 | return 0; | ||
164 | slen = *in++; | ||
165 | /* Remaining bytes of SEQUENCE should exactly match | ||
166 | * encoding of s | ||
167 | */ | ||
168 | if (seqlen != (slen + 2)) | ||
169 | return 0; | ||
170 | if (!sig->r && !(sig->r = BN_new())) | ||
171 | return 0; | ||
172 | if (!sig->s && !(sig->s = BN_new())) | ||
173 | return 0; | ||
174 | if (!BN_bin2bn(rbin, rlen, sig->r)) | ||
175 | return 0; | ||
176 | if (!BN_bin2bn(in, slen, sig->s)) | ||
177 | return 0; | ||
178 | return 1; | ||
179 | } | ||
180 | |||
181 | static int fips_dsa_sign(int type, const unsigned char *x, int y, | ||
182 | unsigned char *sig, unsigned int *siglen, EVP_MD_SVCTX *sv) | ||
183 | { | ||
184 | DSA *dsa = sv->key; | ||
185 | unsigned char dig[EVP_MAX_MD_SIZE]; | ||
186 | unsigned int dlen; | ||
187 | DSA_SIG *s; | ||
188 | EVP_DigestFinal_ex(sv->mctx, dig, &dlen); | ||
189 | s=dsa->meth->dsa_do_sign(dig,dlen,dsa); | ||
190 | OPENSSL_cleanse(dig, dlen); | ||
191 | if (s == NULL) | ||
192 | { | ||
193 | *siglen=0; | ||
194 | return 0; | ||
195 | } | ||
196 | *siglen= FIPS_dsa_sig_encode(sig, s); | ||
197 | DSA_SIG_free(s); | ||
198 | if (*siglen < 0) | ||
199 | return 0; | ||
200 | return 1; | ||
201 | } | ||
202 | |||
203 | static int fips_dsa_verify(int type, const unsigned char *x, int y, | ||
204 | const unsigned char *sigbuf, unsigned int siglen, EVP_MD_SVCTX *sv) | ||
205 | { | ||
206 | DSA *dsa = sv->key; | ||
207 | DSA_SIG *s; | ||
208 | int ret=-1; | ||
209 | unsigned char dig[EVP_MAX_MD_SIZE]; | ||
210 | unsigned int dlen; | ||
211 | |||
212 | s = DSA_SIG_new(); | ||
213 | if (s == NULL) | ||
214 | return ret; | ||
215 | if (!FIPS_dsa_sig_decode(s,sigbuf,siglen)) | ||
216 | goto err; | ||
217 | EVP_DigestFinal_ex(sv->mctx, dig, &dlen); | ||
218 | ret=dsa->meth->dsa_do_verify(dig,dlen,s,dsa); | ||
219 | OPENSSL_cleanse(dig, dlen); | ||
220 | err: | ||
221 | DSA_SIG_free(s); | ||
222 | return ret; | ||
223 | } | ||
224 | |||
225 | static int init(EVP_MD_CTX *ctx) | ||
226 | { return SHA1_Init(ctx->md_data); } | ||
227 | |||
228 | static int update(EVP_MD_CTX *ctx,const void *data,size_t count) | ||
229 | { return SHA1_Update(ctx->md_data,data,count); } | ||
230 | |||
231 | static int final(EVP_MD_CTX *ctx,unsigned char *md) | ||
232 | { return SHA1_Final(md,ctx->md_data); } | ||
233 | |||
234 | static const EVP_MD dss1_md= | ||
235 | { | ||
236 | NID_dsa, | ||
237 | NID_dsaWithSHA1, | ||
238 | SHA_DIGEST_LENGTH, | ||
239 | EVP_MD_FLAG_FIPS|EVP_MD_FLAG_SVCTX, | ||
240 | init, | ||
241 | update, | ||
242 | final, | ||
243 | NULL, | ||
244 | NULL, | ||
245 | (evp_sign_method *)fips_dsa_sign, | ||
246 | (evp_verify_method *)fips_dsa_verify, | ||
247 | {EVP_PKEY_DSA,EVP_PKEY_DSA2,EVP_PKEY_DSA3, EVP_PKEY_DSA4,0}, | ||
248 | SHA_CBLOCK, | ||
249 | sizeof(EVP_MD *)+sizeof(SHA_CTX), | ||
250 | }; | ||
251 | |||
252 | const EVP_MD *EVP_dss1(void) | ||
253 | { | ||
254 | return(&dss1_md); | ||
255 | } | ||
256 | #endif | ||
diff --git a/src/lib/libssl/src/fips/dsa/fips_dsatest.c b/src/lib/libssl/src/fips/dsa/fips_dsatest.c index 7215940ede..c7e0f5164f 100644 --- a/src/lib/libssl/src/fips/dsa/fips_dsatest.c +++ b/src/lib/libssl/src/fips/dsa/fips_dsatest.c | |||
@@ -59,6 +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 <ctype.h> | ||
62 | #include <sys/types.h> | 63 | #include <sys/types.h> |
63 | #include <sys/stat.h> | 64 | #include <sys/stat.h> |
64 | 65 | ||
@@ -68,11 +69,12 @@ | |||
68 | #include <openssl/rand.h> | 69 | #include <openssl/rand.h> |
69 | #include <openssl/bio.h> | 70 | #include <openssl/bio.h> |
70 | #include <openssl/err.h> | 71 | #include <openssl/err.h> |
72 | #include <openssl/dsa.h> | ||
73 | #include <openssl/bn.h> | ||
71 | #ifndef OPENSSL_NO_ENGINE | 74 | #ifndef OPENSSL_NO_ENGINE |
72 | #include <openssl/engine.h> | 75 | #include <openssl/engine.h> |
73 | #endif | 76 | #endif |
74 | #include <openssl/fips.h> | 77 | |
75 | #include <openssl/fips_rand.h> | ||
76 | 78 | ||
77 | #if defined(OPENSSL_NO_DSA) || !defined(OPENSSL_FIPS) | 79 | #if defined(OPENSSL_NO_DSA) || !defined(OPENSSL_FIPS) |
78 | int main(int argc, char *argv[]) | 80 | int main(int argc, char *argv[]) |
@@ -81,6 +83,8 @@ int main(int argc, char *argv[]) | |||
81 | return(0); | 83 | return(0); |
82 | } | 84 | } |
83 | #else | 85 | #else |
86 | #include <openssl/fips.h> | ||
87 | #include <openssl/fips_rand.h> | ||
84 | #include <openssl/dsa.h> | 88 | #include <openssl/dsa.h> |
85 | 89 | ||
86 | #ifdef OPENSSL_SYS_WIN16 | 90 | #ifdef OPENSSL_SYS_WIN16 |
@@ -89,100 +93,98 @@ int main(int argc, char *argv[]) | |||
89 | #define MS_CALLBACK | 93 | #define MS_CALLBACK |
90 | #endif | 94 | #endif |
91 | 95 | ||
92 | static void MS_CALLBACK dsa_cb(int p, int n, void *arg); | 96 | #include "fips_utl.h" |
93 | 97 | ||
94 | /* seed, out_p, out_q, out_g are taken from the updated Appendix 5 to | 98 | static int MS_CALLBACK dsa_cb(int p, int n, BN_GENCB *cb); |
95 | * FIPS PUB 186 and also appear in Appendix 5 to FIPS PIB 186-1 */ | ||
96 | static unsigned char seed[20]={ | ||
97 | 0xd5,0x01,0x4e,0x4b,0x60,0xef,0x2b,0xa8,0xb6,0x21,0x1b,0x40, | ||
98 | 0x62,0xba,0x32,0x24,0xe0,0x42,0x7d,0xd3, | ||
99 | }; | ||
100 | 99 | ||
101 | static unsigned char out_p[]={ | 100 | /* seed, out_p, out_q, out_g are taken from the earlier validation test |
102 | 0x8d,0xf2,0xa4,0x94,0x49,0x22,0x76,0xaa, | 101 | * vectors. |
103 | 0x3d,0x25,0x75,0x9b,0xb0,0x68,0x69,0xcb, | 102 | */ |
104 | 0xea,0xc0,0xd8,0x3a,0xfb,0x8d,0x0c,0xf7, | 103 | |
105 | 0xcb,0xb8,0x32,0x4f,0x0d,0x78,0x82,0xe5, | 104 | static unsigned char seed[20] = { |
106 | 0xd0,0x76,0x2f,0xc5,0xb7,0x21,0x0e,0xaf, | 105 | 0x1c, 0xfb, 0xa9, 0x6c, 0xf7, 0x95, 0xb3, 0x2e, 0x01, 0x01, 0x3c, 0x8d, |
107 | 0xc2,0xe9,0xad,0xac,0x32,0xab,0x7a,0xac, | 106 | 0x7f, 0x6e, 0xf4, 0x59, 0xcc, 0x2f, 0x19, 0x59 |
108 | 0x49,0x69,0x3d,0xfb,0xf8,0x37,0x24,0xc2, | 107 | }; |
109 | 0xec,0x07,0x36,0xee,0x31,0xc8,0x02,0x91, | 108 | |
109 | static unsigned char out_p[] = { | ||
110 | 0xc2, 0x3c, 0x48, 0x31, 0x7e, 0x3b, 0x4e, 0x5d, 0x3c, 0x93, 0x78, 0x60, | ||
111 | 0x5c, 0xf2, 0x60, 0xbb, 0x5a, 0xfa, 0x7f, 0x17, 0xf9, 0x26, 0x69, 0x46, | ||
112 | 0xe7, 0x07, 0xbb, 0x3b, 0x2e, 0xc4, 0xb5, 0x66, 0xf7, 0x4d, 0xae, 0x9b, | ||
113 | 0x8f, 0xf0, 0x42, 0xea, 0xb3, 0xa0, 0x7e, 0x81, 0x85, 0x89, 0xe6, 0xb0, | ||
114 | 0x29, 0x03, 0x6b, 0xcc, 0xfb, 0x8e, 0x46, 0x15, 0x4d, 0xc1, 0x69, 0xd8, | ||
115 | 0x2f, 0xef, 0x5c, 0x8b, 0x29, 0x32, 0x41, 0xbd, 0x13, 0x72, 0x3d, 0xac, | ||
116 | 0x81, 0xcc, 0x86, 0x6c, 0x06, 0x5d, 0x51, 0xa1, 0xa5, 0x07, 0x0c, 0x3e, | ||
117 | 0xbe, 0xdd, 0xf4, 0x6e, 0xa8, 0xed, 0xb4, 0x2f, 0xbd, 0x3e, 0x64, 0xea, | ||
118 | 0xee, 0x92, 0xec, 0x51, 0xe1, 0x0d, 0xab, 0x25, 0x45, 0xae, 0x55, 0x21, | ||
119 | 0x4d, 0xd6, 0x96, 0x6f, 0xe6, 0xaa, 0xd3, 0xca, 0x87, 0x92, 0xb1, 0x1c, | ||
120 | 0x3c, 0xaf, 0x29, 0x09, 0x8b, 0xc6, 0xed, 0xe1 | ||
110 | }; | 121 | }; |
111 | 122 | ||
112 | static unsigned char out_q[]={ | 123 | static unsigned char out_q[] = { |
113 | 0xc7,0x73,0x21,0x8c,0x73,0x7e,0xc8,0xee, | 124 | 0xae, 0x0a, 0x8c, 0xfb, 0x80, 0xe1, 0xc6, 0xd1, 0x09, 0x0f, 0x26, 0xde, |
114 | 0x99,0x3b,0x4f,0x2d,0xed,0x30,0xf4,0x8e, | 125 | 0x91, 0x53, 0xc2, 0x8b, 0x2b, 0x0f, 0xde, 0x7f |
115 | 0xda,0xce,0x91,0x5f, | ||
116 | }; | 126 | }; |
117 | 127 | ||
118 | static unsigned char out_g[]={ | 128 | static unsigned char out_g[] = { |
119 | 0x62,0x6d,0x02,0x78,0x39,0xea,0x0a,0x13, | 129 | 0x0d, 0x7d, 0x92, 0x74, 0x10, 0xf6, 0xa4, 0x43, 0x86, 0x9a, 0xd1, 0xd9, |
120 | 0x41,0x31,0x63,0xa5,0x5b,0x4c,0xb5,0x00, | 130 | 0x56, 0x00, 0xbc, 0x18, 0x97, 0x99, 0x4e, 0x9a, 0x93, 0xfb, 0x00, 0x3d, |
121 | 0x29,0x9d,0x55,0x22,0x95,0x6c,0xef,0xcb, | 131 | 0x6c, 0xa0, 0x1b, 0x95, 0x6b, 0xbd, 0xf7, 0x7a, 0xbc, 0x36, 0x3f, 0x3d, |
122 | 0x3b,0xff,0x10,0xf3,0x99,0xce,0x2c,0x2e, | 132 | 0xb9, 0xbf, 0xf9, 0x91, 0x37, 0x68, 0xd1, 0xb9, 0x1e, 0xfe, 0x7f, 0x10, |
123 | 0x71,0xcb,0x9d,0xe5,0xfa,0x24,0xba,0xbf, | 133 | 0xc0, 0x6a, 0xcd, 0x5f, 0xc1, 0x65, 0x1a, 0xb8, 0xe7, 0xab, 0xb5, 0xc6, |
124 | 0x58,0xe5,0xb7,0x95,0x21,0x92,0x5c,0x9c, | 134 | 0x8d, 0xb7, 0x86, 0xad, 0x3a, 0xbf, 0x6b, 0x7b, 0x0a, 0x66, 0xbe, 0xd5, |
125 | 0xc4,0x2e,0x9f,0x6f,0x46,0x4b,0x08,0x8c, | 135 | 0x58, 0x23, 0x16, 0x48, 0x83, 0x29, 0xb6, 0xa7, 0x64, 0xc7, 0x08, 0xbe, |
126 | 0xc5,0x72,0xaf,0x53,0xe6,0xd7,0x88,0x02, | 136 | 0x55, 0x4c, 0x6f, 0xcb, 0x34, 0xc1, 0x73, 0xb0, 0x39, 0x68, 0x52, 0xdf, |
137 | 0x27, 0x7f, 0x32, 0xbc, 0x2b, 0x0d, 0x63, 0xed, 0x75, 0x3e, 0xb5, 0x54, | ||
138 | 0xac, 0xc8, 0x20, 0x2a, 0x73, 0xe8, 0x29, 0x51, 0x03, 0x77, 0xe8, 0xc9, | ||
139 | 0x61, 0x32, 0x25, 0xaf, 0x21, 0x5b, 0x6e, 0xda | ||
127 | }; | 140 | }; |
128 | 141 | ||
142 | |||
129 | static const unsigned char str1[]="12345678901234567890"; | 143 | static const unsigned char str1[]="12345678901234567890"; |
130 | 144 | ||
131 | static const char rnd_seed[] = "string to make the random number generator think it has entropy"; | 145 | static const char rnd_seed[] = "string to make the random number generator think it has entropy"; |
132 | static const unsigned char rnd_key1[]="12345678"; | ||
133 | static const unsigned char rnd_key2[]="abcdefgh"; | ||
134 | |||
135 | static BIO *bio_err=NULL; | ||
136 | 146 | ||
137 | int main(int argc, char **argv) | 147 | int main(int argc, char **argv) |
138 | { | 148 | { |
139 | DSA *dsa=NULL; | 149 | DSA *dsa=NULL; |
150 | EVP_PKEY pk; | ||
140 | int counter,ret=0,i,j; | 151 | int counter,ret=0,i,j; |
152 | unsigned int slen; | ||
141 | unsigned char buf[256]; | 153 | unsigned char buf[256]; |
142 | unsigned long h; | 154 | unsigned long h; |
143 | unsigned char sig[256]; | 155 | BN_GENCB cb; |
144 | unsigned int siglen; | 156 | EVP_MD_CTX mctx; |
157 | BN_GENCB_set(&cb, dsa_cb, stderr); | ||
158 | EVP_MD_CTX_init(&mctx); | ||
145 | 159 | ||
146 | if (bio_err == NULL) | 160 | if(!FIPS_mode_set(1)) |
147 | bio_err=BIO_new_fp(stderr,BIO_NOCLOSE); | ||
148 | |||
149 | #ifdef OPENSSL_FIPS | ||
150 | if(!FIPS_mode_set(1,argv[0])) | ||
151 | { | 161 | { |
152 | ERR_print_errors(bio_err); | 162 | do_print_errors(); |
153 | EXIT(1); | 163 | EXIT(1); |
154 | } | 164 | } |
155 | #endif | ||
156 | CRYPTO_malloc_debug_init(); | ||
157 | CRYPTO_dbg_set_options(V_CRYPTO_MDEBUG_ALL); | ||
158 | CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON); | ||
159 | |||
160 | ERR_load_crypto_strings(); | ||
161 | FIPS_set_prng_key(rnd_key1,rnd_key2); | ||
162 | RAND_seed(rnd_seed, sizeof rnd_seed); | ||
163 | 165 | ||
164 | BIO_printf(bio_err,"test generation of DSA parameters\n"); | 166 | fprintf(stderr,"test generation of DSA parameters\n"); |
165 | 167 | ||
166 | dsa=DSA_generate_parameters(512,seed,20,&counter,&h,dsa_cb,bio_err); | 168 | dsa = FIPS_dsa_new(); |
169 | DSA_generate_parameters_ex(dsa, 1024,seed,20,&counter,&h,&cb); | ||
167 | 170 | ||
168 | BIO_printf(bio_err,"seed\n"); | 171 | fprintf(stderr,"seed\n"); |
169 | for (i=0; i<20; i+=4) | 172 | for (i=0; i<20; i+=4) |
170 | { | 173 | { |
171 | BIO_printf(bio_err,"%02X%02X%02X%02X ", | 174 | fprintf(stderr,"%02X%02X%02X%02X ", |
172 | seed[i],seed[i+1],seed[i+2],seed[i+3]); | 175 | seed[i],seed[i+1],seed[i+2],seed[i+3]); |
173 | } | 176 | } |
174 | BIO_printf(bio_err,"\ncounter=%d h=%d\n",counter,h); | 177 | fprintf(stderr,"\ncounter=%d h=%ld\n",counter,h); |
175 | 178 | ||
176 | if (dsa == NULL) goto end; | 179 | if (dsa == NULL) goto end; |
177 | DSA_print(bio_err,dsa,0); | 180 | if (counter != 16) |
178 | if (counter != 105) | ||
179 | { | 181 | { |
180 | BIO_printf(bio_err,"counter should be 105\n"); | 182 | fprintf(stderr,"counter should be 105\n"); |
181 | goto end; | 183 | goto end; |
182 | } | 184 | } |
183 | if (h != 2) | 185 | if (h != 2) |
184 | { | 186 | { |
185 | BIO_printf(bio_err,"h should be 2\n"); | 187 | fprintf(stderr,"h should be 2\n"); |
186 | goto end; | 188 | goto end; |
187 | } | 189 | } |
188 | 190 | ||
@@ -190,7 +192,7 @@ int main(int argc, char **argv) | |||
190 | j=sizeof(out_q); | 192 | j=sizeof(out_q); |
191 | if ((i != j) || (memcmp(buf,out_q,i) != 0)) | 193 | if ((i != j) || (memcmp(buf,out_q,i) != 0)) |
192 | { | 194 | { |
193 | BIO_printf(bio_err,"q value is wrong\n"); | 195 | fprintf(stderr,"q value is wrong\n"); |
194 | goto end; | 196 | goto end; |
195 | } | 197 | } |
196 | 198 | ||
@@ -198,7 +200,7 @@ int main(int argc, char **argv) | |||
198 | j=sizeof(out_p); | 200 | j=sizeof(out_p); |
199 | if ((i != j) || (memcmp(buf,out_p,i) != 0)) | 201 | if ((i != j) || (memcmp(buf,out_p,i) != 0)) |
200 | { | 202 | { |
201 | BIO_printf(bio_err,"p value is wrong\n"); | 203 | fprintf(stderr,"p value is wrong\n"); |
202 | goto end; | 204 | goto end; |
203 | } | 205 | } |
204 | 206 | ||
@@ -206,26 +208,37 @@ int main(int argc, char **argv) | |||
206 | j=sizeof(out_g); | 208 | j=sizeof(out_g); |
207 | if ((i != j) || (memcmp(buf,out_g,i) != 0)) | 209 | if ((i != j) || (memcmp(buf,out_g,i) != 0)) |
208 | { | 210 | { |
209 | BIO_printf(bio_err,"g value is wrong\n"); | 211 | fprintf(stderr,"g value is wrong\n"); |
210 | goto end; | 212 | goto end; |
211 | } | 213 | } |
212 | DSA_generate_key(dsa); | 214 | DSA_generate_key(dsa); |
213 | DSA_sign(0, str1, 20, sig, &siglen, dsa); | 215 | pk.type = EVP_PKEY_DSA; |
214 | if (DSA_verify(0, str1, 20, sig, siglen, dsa) == 1) | 216 | pk.pkey.dsa = dsa; |
215 | ret=1; | 217 | |
218 | if (!EVP_SignInit_ex(&mctx, EVP_dss1(), NULL)) | ||
219 | goto end; | ||
220 | if (!EVP_SignUpdate(&mctx, str1, 20)) | ||
221 | goto end; | ||
222 | if (!EVP_SignFinal(&mctx, buf, &slen, &pk)) | ||
223 | goto end; | ||
224 | |||
225 | if (!EVP_VerifyInit_ex(&mctx, EVP_dss1(), NULL)) | ||
226 | goto end; | ||
227 | if (!EVP_VerifyUpdate(&mctx, str1, 20)) | ||
228 | goto end; | ||
229 | if (EVP_VerifyFinal(&mctx, buf, slen, &pk) != 1) | ||
230 | goto end; | ||
231 | |||
232 | ret = 1; | ||
233 | |||
216 | end: | 234 | end: |
217 | if (!ret) | 235 | if (!ret) |
218 | ERR_print_errors(bio_err); | 236 | do_print_errors(); |
219 | if (dsa != NULL) DSA_free(dsa); | 237 | if (dsa != NULL) FIPS_dsa_free(dsa); |
220 | CRYPTO_cleanup_all_ex_data(); | 238 | EVP_MD_CTX_cleanup(&mctx); |
221 | ERR_remove_state(0); | 239 | #if 0 |
222 | ERR_free_strings(); | ||
223 | CRYPTO_mem_leaks(bio_err); | 240 | CRYPTO_mem_leaks(bio_err); |
224 | if (bio_err != NULL) | 241 | #endif |
225 | { | ||
226 | BIO_free(bio_err); | ||
227 | bio_err = NULL; | ||
228 | } | ||
229 | EXIT(!ret); | 242 | EXIT(!ret); |
230 | return(!ret); | 243 | return(!ret); |
231 | } | 244 | } |
@@ -236,7 +249,7 @@ static int cb_exit(int ec) | |||
236 | return(0); /* To keep some compilers quiet */ | 249 | return(0); /* To keep some compilers quiet */ |
237 | } | 250 | } |
238 | 251 | ||
239 | static void MS_CALLBACK dsa_cb(int p, int n, void *arg) | 252 | static int MS_CALLBACK dsa_cb(int p, int n, BN_GENCB *cb) |
240 | { | 253 | { |
241 | char c='*'; | 254 | char c='*'; |
242 | static int ok=0,num=0; | 255 | static int ok=0,num=0; |
@@ -245,13 +258,14 @@ static void MS_CALLBACK dsa_cb(int p, int n, void *arg) | |||
245 | if (p == 1) c='+'; | 258 | if (p == 1) c='+'; |
246 | if (p == 2) { c='*'; ok++; } | 259 | if (p == 2) { c='*'; ok++; } |
247 | if (p == 3) c='\n'; | 260 | if (p == 3) c='\n'; |
248 | BIO_write(arg,&c,1); | 261 | fwrite(&c,1, 1, cb->arg); |
249 | (void)BIO_flush(arg); | 262 | fflush(cb->arg); |
250 | 263 | ||
251 | if (!ok && (p == 0) && (num > 1)) | 264 | if (!ok && (p == 0) && (num > 1)) |
252 | { | 265 | { |
253 | BIO_printf((BIO *)arg,"error in dsatest\n"); | 266 | fprintf(cb->arg,"error in dsatest\n"); |
254 | cb_exit(1); | 267 | cb_exit(1); |
255 | } | 268 | } |
269 | return 1; | ||
256 | } | 270 | } |
257 | #endif | 271 | #endif |
diff --git a/src/lib/libssl/src/fips/dsa/fips_dssvs.c b/src/lib/libssl/src/fips/dsa/fips_dssvs.c index 50a4d96986..aa74e8e636 100644 --- a/src/lib/libssl/src/fips/dsa/fips_dssvs.c +++ b/src/lib/libssl/src/fips/dsa/fips_dssvs.c | |||
@@ -1,104 +1,64 @@ | |||
1 | #include <openssl/opensslconf.h> | ||
2 | |||
3 | #ifndef OPENSSL_FIPS | ||
4 | #include <stdio.h> | ||
5 | |||
6 | int main(int argc, char **argv) | ||
7 | { | ||
8 | printf("No FIPS DSA support\n"); | ||
9 | return(0); | ||
10 | } | ||
11 | #else | ||
12 | |||
1 | #include <openssl/bn.h> | 13 | #include <openssl/bn.h> |
2 | #include <openssl/dsa.h> | 14 | #include <openssl/dsa.h> |
3 | #include <openssl/fips.h> | 15 | #include <openssl/fips.h> |
4 | #include <openssl/err.h> | 16 | #include <openssl/err.h> |
5 | #include <openssl/sha.h> | 17 | #include <openssl/evp.h> |
6 | #include <string.h> | 18 | #include <string.h> |
19 | #include <ctype.h> | ||
7 | 20 | ||
8 | int hex2bin(const char *in, unsigned char *out) | 21 | #include "fips_utl.h" |
9 | { | ||
10 | int n1, n2; | ||
11 | unsigned char ch; | ||
12 | |||
13 | for (n1=0,n2=0 ; in[n1] && in[n1] != '\n' ; ) | ||
14 | { /* first byte */ | ||
15 | if ((in[n1] >= '0') && (in[n1] <= '9')) | ||
16 | ch = in[n1++] - '0'; | ||
17 | else if ((in[n1] >= 'A') && (in[n1] <= 'F')) | ||
18 | ch = in[n1++] - 'A' + 10; | ||
19 | else if ((in[n1] >= 'a') && (in[n1] <= 'f')) | ||
20 | ch = in[n1++] - 'a' + 10; | ||
21 | else | ||
22 | return -1; | ||
23 | if(!in[n1]) | ||
24 | { | ||
25 | out[n2++]=ch; | ||
26 | break; | ||
27 | } | ||
28 | out[n2] = ch << 4; | ||
29 | /* second byte */ | ||
30 | if ((in[n1] >= '0') && (in[n1] <= '9')) | ||
31 | ch = in[n1++] - '0'; | ||
32 | else if ((in[n1] >= 'A') && (in[n1] <= 'F')) | ||
33 | ch = in[n1++] - 'A' + 10; | ||
34 | else if ((in[n1] >= 'a') && (in[n1] <= 'f')) | ||
35 | ch = in[n1++] - 'a' + 10; | ||
36 | else | ||
37 | return -1; | ||
38 | out[n2++] |= ch; | ||
39 | } | ||
40 | return n2; | ||
41 | } | ||
42 | |||
43 | BIGNUM *hex2bn(const char *in) | ||
44 | { | ||
45 | BIGNUM *p=BN_new(); | ||
46 | |||
47 | BN_hex2bn(&p,in); | ||
48 | 22 | ||
49 | return p; | 23 | static void pbn(const char *name, BIGNUM *bn) |
50 | } | ||
51 | |||
52 | int bin2hex(const unsigned char *in,int len,char *out) | ||
53 | { | ||
54 | int n1, n2; | ||
55 | unsigned char ch; | ||
56 | |||
57 | for (n1=0,n2=0 ; n1 < len ; ++n1) | ||
58 | { | 24 | { |
59 | ch=in[n1] >> 4; | 25 | int len, i; |
60 | if (ch <= 0x09) | 26 | unsigned char *tmp; |
61 | out[n2++]=ch+'0'; | 27 | len = BN_num_bytes(bn); |
62 | else | 28 | tmp = OPENSSL_malloc(len); |
63 | out[n2++]=ch-10+'a'; | 29 | if (!tmp) |
64 | ch=in[n1] & 0x0f; | 30 | { |
65 | if(ch <= 0x09) | 31 | fprintf(stderr, "Memory allocation error\n"); |
66 | out[n2++]=ch+'0'; | 32 | return; |
67 | else | 33 | } |
68 | out[n2++]=ch-10+'a'; | 34 | BN_bn2bin(bn, tmp); |
35 | printf("%s = ", name); | ||
36 | for (i = 0; i < len; i++) | ||
37 | printf("%02X", tmp[i]); | ||
38 | fputs("\n", stdout); | ||
39 | OPENSSL_free(tmp); | ||
40 | return; | ||
69 | } | 41 | } |
70 | out[n2]='\0'; | ||
71 | return n2; | ||
72 | } | ||
73 | |||
74 | void pv(const char *tag,const unsigned char *val,int len) | ||
75 | { | ||
76 | char obuf[2048]; | ||
77 | |||
78 | bin2hex(val,len,obuf); | ||
79 | printf("%s = %s\n",tag,obuf); | ||
80 | } | ||
81 | |||
82 | void pbn(const char *tag,const BIGNUM *val) | ||
83 | { | ||
84 | printf("%s = %s\n",tag,BN_bn2hex(val)); | ||
85 | } | ||
86 | 42 | ||
87 | void primes() | 43 | void primes() |
88 | { | 44 | { |
89 | char buf[10240]; | 45 | char buf[10240]; |
46 | char lbuf[10240]; | ||
47 | char *keyword, *value; | ||
90 | 48 | ||
91 | while(fgets(buf,sizeof buf,stdin) != NULL) | 49 | while(fgets(buf,sizeof buf,stdin) != NULL) |
92 | { | 50 | { |
93 | fputs(buf,stdout); | 51 | fputs(buf,stdout); |
94 | if(!strncmp(buf,"Prime= ",7)) | 52 | if (!parse_line(&keyword, &value, lbuf, buf)) |
53 | continue; | ||
54 | if(!strcmp(keyword,"Prime")) | ||
95 | { | 55 | { |
96 | BIGNUM *pp; | 56 | BIGNUM *pp; |
97 | 57 | ||
98 | pp=BN_new(); | 58 | pp=BN_new(); |
99 | BN_hex2bn(&pp,buf+7); | 59 | do_hex2bn(&pp,value); |
100 | printf("result= %c\n", | 60 | printf("result= %c\n", |
101 | BN_is_prime(pp,20,NULL,NULL,NULL) ? 'P' : 'F'); | 61 | BN_is_prime_ex(pp,20,NULL,NULL) ? 'P' : 'F'); |
102 | } | 62 | } |
103 | } | 63 | } |
104 | } | 64 | } |
@@ -106,15 +66,22 @@ void primes() | |||
106 | void pqg() | 66 | void pqg() |
107 | { | 67 | { |
108 | char buf[1024]; | 68 | char buf[1024]; |
69 | char lbuf[1024]; | ||
70 | char *keyword, *value; | ||
109 | int nmod=0; | 71 | int nmod=0; |
110 | 72 | ||
111 | while(fgets(buf,sizeof buf,stdin) != NULL) | 73 | while(fgets(buf,sizeof buf,stdin) != NULL) |
112 | { | 74 | { |
113 | if(!strncmp(buf,"[mod = ",7)) | 75 | if (!parse_line(&keyword, &value, lbuf, buf)) |
114 | nmod=atoi(buf+7); | 76 | { |
115 | else if(!strncmp(buf,"N = ",4)) | 77 | fputs(buf,stdout); |
78 | continue; | ||
79 | } | ||
80 | if(!strcmp(keyword,"[mod")) | ||
81 | nmod=atoi(value); | ||
82 | else if(!strcmp(keyword,"N")) | ||
116 | { | 83 | { |
117 | int n=atoi(buf+4); | 84 | int n=atoi(value); |
118 | 85 | ||
119 | printf("[mod = %d]\n\n",nmod); | 86 | printf("[mod = %d]\n\n",nmod); |
120 | 87 | ||
@@ -124,11 +91,16 @@ void pqg() | |||
124 | DSA *dsa; | 91 | DSA *dsa; |
125 | int counter; | 92 | int counter; |
126 | unsigned long h; | 93 | unsigned long h; |
127 | 94 | dsa = FIPS_dsa_new(); | |
128 | dsa=DSA_generate_parameters(nmod,seed,0,&counter,&h,NULL,NULL); | 95 | |
129 | printf("P = %s\n",BN_bn2hex(dsa->p)); | 96 | if (!DSA_generate_parameters_ex(dsa, nmod,seed,0,&counter,&h,NULL)) |
130 | printf("Q = %s\n",BN_bn2hex(dsa->q)); | 97 | { |
131 | printf("G = %s\n",BN_bn2hex(dsa->g)); | 98 | do_print_errors(); |
99 | exit(1); | ||
100 | } | ||
101 | pbn("P",dsa->p); | ||
102 | pbn("Q",dsa->q); | ||
103 | pbn("G",dsa->g); | ||
132 | pv("Seed",seed,20); | 104 | pv("Seed",seed,20); |
133 | printf("c = %d\n",counter); | 105 | printf("c = %d\n",counter); |
134 | printf("H = %lx\n",h); | 106 | printf("H = %lx\n",h); |
@@ -140,23 +112,226 @@ void pqg() | |||
140 | } | 112 | } |
141 | } | 113 | } |
142 | 114 | ||
115 | void pqgver() | ||
116 | { | ||
117 | char buf[1024]; | ||
118 | char lbuf[1024]; | ||
119 | char *keyword, *value; | ||
120 | BIGNUM *p = NULL, *q = NULL, *g = NULL; | ||
121 | int counter, counter2; | ||
122 | unsigned long h, h2; | ||
123 | DSA *dsa=NULL; | ||
124 | int nmod=0; | ||
125 | unsigned char seed[1024]; | ||
126 | |||
127 | while(fgets(buf,sizeof buf,stdin) != NULL) | ||
128 | { | ||
129 | if (!parse_line(&keyword, &value, lbuf, buf)) | ||
130 | { | ||
131 | fputs(buf,stdout); | ||
132 | continue; | ||
133 | } | ||
134 | if(!strcmp(keyword,"[mod")) | ||
135 | nmod=atoi(value); | ||
136 | else if(!strcmp(keyword,"P")) | ||
137 | p=hex2bn(value); | ||
138 | else if(!strcmp(keyword,"Q")) | ||
139 | q=hex2bn(value); | ||
140 | else if(!strcmp(keyword,"G")) | ||
141 | g=hex2bn(value); | ||
142 | else if(!strcmp(keyword,"Seed")) | ||
143 | { | ||
144 | int slen = hex2bin(value, seed); | ||
145 | if (slen != 20) | ||
146 | { | ||
147 | fprintf(stderr, "Seed parse length error\n"); | ||
148 | exit (1); | ||
149 | } | ||
150 | } | ||
151 | else if(!strcmp(keyword,"c")) | ||
152 | counter =atoi(buf+4); | ||
153 | else if(!strcmp(keyword,"H")) | ||
154 | { | ||
155 | h = atoi(value); | ||
156 | if (!p || !q || !g) | ||
157 | { | ||
158 | fprintf(stderr, "Parse Error\n"); | ||
159 | exit (1); | ||
160 | } | ||
161 | pbn("P",p); | ||
162 | pbn("Q",q); | ||
163 | pbn("G",g); | ||
164 | pv("Seed",seed,20); | ||
165 | printf("c = %d\n",counter); | ||
166 | printf("H = %lx\n",h); | ||
167 | dsa = FIPS_dsa_new(); | ||
168 | if (!DSA_generate_parameters_ex(dsa, nmod,seed,20 ,&counter2,&h2,NULL)) | ||
169 | { | ||
170 | do_print_errors(); | ||
171 | exit(1); | ||
172 | } | ||
173 | if (BN_cmp(dsa->p, p) || BN_cmp(dsa->q, q) || BN_cmp(dsa->g, g) | ||
174 | || (counter != counter2) || (h != h2)) | ||
175 | printf("Result = F\n"); | ||
176 | else | ||
177 | printf("Result = T\n"); | ||
178 | BN_free(p); | ||
179 | BN_free(q); | ||
180 | BN_free(g); | ||
181 | p = NULL; | ||
182 | q = NULL; | ||
183 | g = NULL; | ||
184 | FIPS_dsa_free(dsa); | ||
185 | dsa = NULL; | ||
186 | } | ||
187 | } | ||
188 | } | ||
189 | |||
190 | /* Keypair verification routine. NB: this isn't part of the standard FIPS140-2 | ||
191 | * algorithm tests. It is an additional test to perform sanity checks on the | ||
192 | * output of the KeyPair test. | ||
193 | */ | ||
194 | |||
195 | static int dss_paramcheck(int nmod, BIGNUM *p, BIGNUM *q, BIGNUM *g, | ||
196 | BN_CTX *ctx) | ||
197 | { | ||
198 | BIGNUM *rem = NULL; | ||
199 | if (BN_num_bits(p) != nmod) | ||
200 | return 0; | ||
201 | if (BN_num_bits(q) != 160) | ||
202 | return 0; | ||
203 | if (BN_is_prime_ex(p, BN_prime_checks, ctx, NULL) != 1) | ||
204 | return 0; | ||
205 | if (BN_is_prime_ex(q, BN_prime_checks, ctx, NULL) != 1) | ||
206 | return 0; | ||
207 | rem = BN_new(); | ||
208 | if (!BN_mod(rem, p, q, ctx) || !BN_is_one(rem) | ||
209 | || (BN_cmp(g, BN_value_one()) <= 0) | ||
210 | || !BN_mod_exp(rem, g, q, p, ctx) || !BN_is_one(rem)) | ||
211 | { | ||
212 | BN_free(rem); | ||
213 | return 0; | ||
214 | } | ||
215 | /* Todo: check g */ | ||
216 | BN_free(rem); | ||
217 | return 1; | ||
218 | } | ||
219 | |||
220 | void keyver() | ||
221 | { | ||
222 | char buf[1024]; | ||
223 | char lbuf[1024]; | ||
224 | char *keyword, *value; | ||
225 | BIGNUM *p = NULL, *q = NULL, *g = NULL, *X = NULL, *Y = NULL; | ||
226 | BIGNUM *Y2; | ||
227 | BN_CTX *ctx = NULL; | ||
228 | int nmod=0, paramcheck = 0; | ||
229 | |||
230 | ctx = BN_CTX_new(); | ||
231 | Y2 = BN_new(); | ||
232 | |||
233 | while(fgets(buf,sizeof buf,stdin) != NULL) | ||
234 | { | ||
235 | if (!parse_line(&keyword, &value, lbuf, buf)) | ||
236 | { | ||
237 | fputs(buf,stdout); | ||
238 | continue; | ||
239 | } | ||
240 | if(!strcmp(keyword,"[mod")) | ||
241 | { | ||
242 | if (p) | ||
243 | BN_free(p); | ||
244 | p = NULL; | ||
245 | if (q) | ||
246 | BN_free(q); | ||
247 | q = NULL; | ||
248 | if (g) | ||
249 | BN_free(g); | ||
250 | g = NULL; | ||
251 | paramcheck = 0; | ||
252 | nmod=atoi(value); | ||
253 | } | ||
254 | else if(!strcmp(keyword,"P")) | ||
255 | p=hex2bn(value); | ||
256 | else if(!strcmp(keyword,"Q")) | ||
257 | q=hex2bn(value); | ||
258 | else if(!strcmp(keyword,"G")) | ||
259 | g=hex2bn(value); | ||
260 | else if(!strcmp(keyword,"X")) | ||
261 | X=hex2bn(value); | ||
262 | else if(!strcmp(keyword,"Y")) | ||
263 | { | ||
264 | Y=hex2bn(value); | ||
265 | if (!p || !q || !g || !X || !Y) | ||
266 | { | ||
267 | fprintf(stderr, "Parse Error\n"); | ||
268 | exit (1); | ||
269 | } | ||
270 | pbn("P",p); | ||
271 | pbn("Q",q); | ||
272 | pbn("G",g); | ||
273 | pbn("X",X); | ||
274 | pbn("Y",Y); | ||
275 | if (!paramcheck) | ||
276 | { | ||
277 | if (dss_paramcheck(nmod, p, q, g, ctx)) | ||
278 | paramcheck = 1; | ||
279 | else | ||
280 | paramcheck = -1; | ||
281 | } | ||
282 | if (paramcheck != 1) | ||
283 | printf("Result = F\n"); | ||
284 | else | ||
285 | { | ||
286 | if (!BN_mod_exp(Y2, g, X, p, ctx) || BN_cmp(Y2, Y)) | ||
287 | printf("Result = F\n"); | ||
288 | else | ||
289 | printf("Result = T\n"); | ||
290 | } | ||
291 | BN_free(X); | ||
292 | BN_free(Y); | ||
293 | X = NULL; | ||
294 | Y = NULL; | ||
295 | } | ||
296 | } | ||
297 | if (p) | ||
298 | BN_free(p); | ||
299 | if (q) | ||
300 | BN_free(q); | ||
301 | if (g) | ||
302 | BN_free(g); | ||
303 | if (Y2) | ||
304 | BN_free(Y2); | ||
305 | } | ||
306 | |||
143 | void keypair() | 307 | void keypair() |
144 | { | 308 | { |
145 | char buf[1024]; | 309 | char buf[1024]; |
310 | char lbuf[1024]; | ||
311 | char *keyword, *value; | ||
146 | int nmod=0; | 312 | int nmod=0; |
147 | 313 | ||
148 | while(fgets(buf,sizeof buf,stdin) != NULL) | 314 | while(fgets(buf,sizeof buf,stdin) != NULL) |
149 | { | 315 | { |
150 | if(!strncmp(buf,"[mod = ",7)) | 316 | if (!parse_line(&keyword, &value, lbuf, buf)) |
151 | nmod=atoi(buf+7); | 317 | { |
152 | else if(!strncmp(buf,"N = ",4)) | 318 | fputs(buf,stdout); |
319 | continue; | ||
320 | } | ||
321 | if(!strcmp(keyword,"[mod")) | ||
322 | nmod=atoi(value); | ||
323 | else if(!strcmp(keyword,"N")) | ||
153 | { | 324 | { |
154 | DSA *dsa; | 325 | DSA *dsa; |
155 | int n=atoi(buf+4); | 326 | int n=atoi(value); |
156 | 327 | ||
157 | printf("[mod = %d]\n\n",nmod); | 328 | printf("[mod = %d]\n\n",nmod); |
158 | 329 | dsa = FIPS_dsa_new(); | |
159 | dsa=DSA_generate_parameters(nmod,NULL,0,NULL,NULL,NULL,NULL); | 330 | if (!DSA_generate_parameters_ex(dsa, nmod,NULL,0,NULL,NULL,NULL)) |
331 | { | ||
332 | do_print_errors(); | ||
333 | exit(1); | ||
334 | } | ||
160 | pbn("P",dsa->p); | 335 | pbn("P",dsa->p); |
161 | pbn("Q",dsa->q); | 336 | pbn("Q",dsa->q); |
162 | pbn("G",dsa->g); | 337 | pbn("G",dsa->g); |
@@ -164,7 +339,11 @@ void keypair() | |||
164 | 339 | ||
165 | while(n--) | 340 | while(n--) |
166 | { | 341 | { |
167 | DSA_generate_key(dsa); | 342 | if (!DSA_generate_key(dsa)) |
343 | { | ||
344 | do_print_errors(); | ||
345 | exit(1); | ||
346 | } | ||
168 | 347 | ||
169 | pbn("X",dsa->priv_key); | 348 | pbn("X",dsa->priv_key); |
170 | pbn("Y",dsa->pub_key); | 349 | pbn("Y",dsa->pub_key); |
@@ -177,68 +356,110 @@ void keypair() | |||
177 | void siggen() | 356 | void siggen() |
178 | { | 357 | { |
179 | char buf[1024]; | 358 | char buf[1024]; |
359 | char lbuf[1024]; | ||
360 | char *keyword, *value; | ||
180 | int nmod=0; | 361 | int nmod=0; |
181 | DSA *dsa=NULL; | 362 | DSA *dsa=NULL; |
182 | 363 | ||
183 | while(fgets(buf,sizeof buf,stdin) != NULL) | 364 | while(fgets(buf,sizeof buf,stdin) != NULL) |
184 | { | 365 | { |
185 | if(!strncmp(buf,"[mod = ",7)) | 366 | if (!parse_line(&keyword, &value, lbuf, buf)) |
367 | { | ||
368 | fputs(buf,stdout); | ||
369 | continue; | ||
370 | } | ||
371 | if(!strcmp(keyword,"[mod")) | ||
186 | { | 372 | { |
187 | nmod=atoi(buf+7); | 373 | nmod=atoi(value); |
188 | printf("[mod = %d]\n\n",nmod); | 374 | printf("[mod = %d]\n\n",nmod); |
189 | 375 | if (dsa) | |
190 | dsa=DSA_generate_parameters(nmod,NULL,0,NULL,NULL,NULL,NULL); | 376 | FIPS_dsa_free(dsa); |
377 | dsa = FIPS_dsa_new(); | ||
378 | if (!DSA_generate_parameters_ex(dsa, nmod,NULL,0,NULL,NULL,NULL)) | ||
379 | { | ||
380 | do_print_errors(); | ||
381 | exit(1); | ||
382 | } | ||
191 | pbn("P",dsa->p); | 383 | pbn("P",dsa->p); |
192 | pbn("Q",dsa->q); | 384 | pbn("Q",dsa->q); |
193 | pbn("G",dsa->g); | 385 | pbn("G",dsa->g); |
194 | putc('\n',stdout); | 386 | putc('\n',stdout); |
195 | } | 387 | } |
196 | else if(!strncmp(buf,"Msg = ",6)) | 388 | else if(!strcmp(keyword,"Msg")) |
197 | { | 389 | { |
198 | unsigned char msg[1024]; | 390 | unsigned char msg[1024]; |
199 | unsigned char hash[20]; | 391 | unsigned char sbuf[60]; |
392 | unsigned int slen; | ||
200 | int n; | 393 | int n; |
394 | EVP_PKEY pk; | ||
395 | EVP_MD_CTX mctx; | ||
201 | DSA_SIG *sig; | 396 | DSA_SIG *sig; |
397 | EVP_MD_CTX_init(&mctx); | ||
202 | 398 | ||
203 | n=hex2bin(buf+6,msg); | 399 | n=hex2bin(value,msg); |
204 | pv("Msg",msg,n); | 400 | pv("Msg",msg,n); |
205 | 401 | ||
206 | DSA_generate_key(dsa); | 402 | if (!DSA_generate_key(dsa)) |
403 | { | ||
404 | do_print_errors(); | ||
405 | exit(1); | ||
406 | } | ||
407 | pk.type = EVP_PKEY_DSA; | ||
408 | pk.pkey.dsa = dsa; | ||
207 | pbn("Y",dsa->pub_key); | 409 | pbn("Y",dsa->pub_key); |
208 | 410 | ||
209 | SHA1(msg,n,hash); | 411 | EVP_SignInit_ex(&mctx, EVP_dss1(), NULL); |
210 | sig=DSA_do_sign(hash,sizeof hash,dsa); | 412 | EVP_SignUpdate(&mctx, msg, n); |
413 | EVP_SignFinal(&mctx, sbuf, &slen, &pk); | ||
414 | |||
415 | sig = DSA_SIG_new(); | ||
416 | FIPS_dsa_sig_decode(sig, sbuf, slen); | ||
417 | |||
211 | pbn("R",sig->r); | 418 | pbn("R",sig->r); |
212 | pbn("S",sig->s); | 419 | pbn("S",sig->s); |
213 | putc('\n',stdout); | 420 | putc('\n',stdout); |
421 | DSA_SIG_free(sig); | ||
422 | EVP_MD_CTX_cleanup(&mctx); | ||
214 | } | 423 | } |
215 | } | 424 | } |
425 | if (dsa) | ||
426 | FIPS_dsa_free(dsa); | ||
216 | } | 427 | } |
217 | 428 | ||
218 | void sigver() | 429 | void sigver() |
219 | { | 430 | { |
220 | DSA *dsa=NULL; | 431 | DSA *dsa=NULL; |
221 | char buf[1024]; | 432 | char buf[1024]; |
222 | int nmod=0; | 433 | char lbuf[1024]; |
223 | unsigned char hash[20]; | 434 | unsigned char msg[1024]; |
224 | DSA_SIG *sig=DSA_SIG_new(); | 435 | char *keyword, *value; |
436 | int nmod=0, n=0; | ||
437 | DSA_SIG sg, *sig = &sg; | ||
438 | |||
439 | sig->r = NULL; | ||
440 | sig->s = NULL; | ||
225 | 441 | ||
226 | while(fgets(buf,sizeof buf,stdin) != NULL) | 442 | while(fgets(buf,sizeof buf,stdin) != NULL) |
227 | { | 443 | { |
228 | if(!strncmp(buf,"[mod = ",7)) | 444 | if (!parse_line(&keyword, &value, lbuf, buf)) |
445 | { | ||
446 | fputs(buf,stdout); | ||
447 | continue; | ||
448 | } | ||
449 | if(!strcmp(keyword,"[mod")) | ||
229 | { | 450 | { |
230 | nmod=atoi(buf+7); | 451 | nmod=atoi(value); |
231 | if(dsa) | 452 | if(dsa) |
232 | DSA_free(dsa); | 453 | FIPS_dsa_free(dsa); |
233 | dsa=DSA_new(); | 454 | dsa=FIPS_dsa_new(); |
234 | } | 455 | } |
235 | else if(!strncmp(buf,"P = ",4)) | 456 | else if(!strcmp(keyword,"P")) |
236 | dsa->p=hex2bn(buf+4); | 457 | dsa->p=hex2bn(value); |
237 | else if(!strncmp(buf,"Q = ",4)) | 458 | else if(!strcmp(keyword,"Q")) |
238 | dsa->q=hex2bn(buf+4); | 459 | dsa->q=hex2bn(value); |
239 | else if(!strncmp(buf,"G = ",4)) | 460 | else if(!strcmp(keyword,"G")) |
240 | { | 461 | { |
241 | dsa->g=hex2bn(buf+4); | 462 | dsa->g=hex2bn(value); |
242 | 463 | ||
243 | printf("[mod = %d]\n\n",nmod); | 464 | printf("[mod = %d]\n\n",nmod); |
244 | pbn("P",dsa->p); | 465 | pbn("P",dsa->p); |
@@ -246,28 +467,38 @@ void sigver() | |||
246 | pbn("G",dsa->g); | 467 | pbn("G",dsa->g); |
247 | putc('\n',stdout); | 468 | putc('\n',stdout); |
248 | } | 469 | } |
249 | else if(!strncmp(buf,"Msg = ",6)) | 470 | else if(!strcmp(keyword,"Msg")) |
250 | { | 471 | { |
251 | unsigned char msg[1024]; | 472 | n=hex2bin(value,msg); |
252 | int n; | ||
253 | |||
254 | n=hex2bin(buf+6,msg); | ||
255 | pv("Msg",msg,n); | 473 | pv("Msg",msg,n); |
256 | SHA1(msg,n,hash); | ||
257 | } | 474 | } |
258 | else if(!strncmp(buf,"Y = ",4)) | 475 | else if(!strcmp(keyword,"Y")) |
259 | dsa->pub_key=hex2bn(buf+4); | 476 | dsa->pub_key=hex2bn(value); |
260 | else if(!strncmp(buf,"R = ",4)) | 477 | else if(!strcmp(keyword,"R")) |
261 | sig->r=hex2bn(buf+4); | 478 | sig->r=hex2bn(value); |
262 | else if(!strncmp(buf,"S = ",4)) | 479 | else if(!strcmp(keyword,"S")) |
263 | { | 480 | { |
264 | sig->s=hex2bn(buf+4); | 481 | EVP_MD_CTX mctx; |
482 | EVP_PKEY pk; | ||
483 | unsigned char sigbuf[60]; | ||
484 | unsigned int slen; | ||
485 | int r; | ||
486 | EVP_MD_CTX_init(&mctx); | ||
487 | pk.type = EVP_PKEY_DSA; | ||
488 | pk.pkey.dsa = dsa; | ||
489 | sig->s=hex2bn(value); | ||
265 | 490 | ||
266 | pbn("Y",dsa->pub_key); | 491 | pbn("Y",dsa->pub_key); |
267 | pbn("R",sig->r); | 492 | pbn("R",sig->r); |
268 | pbn("S",sig->s); | 493 | pbn("S",sig->s); |
269 | printf("Result = %c\n",DSA_do_verify(hash,sizeof hash,sig,dsa) | 494 | |
270 | ? 'P' : 'F'); | 495 | slen = FIPS_dsa_sig_encode(sigbuf, sig); |
496 | EVP_VerifyInit_ex(&mctx, EVP_dss1(), NULL); | ||
497 | EVP_VerifyUpdate(&mctx, msg, n); | ||
498 | r = EVP_VerifyFinal(&mctx, sigbuf, slen, &pk); | ||
499 | EVP_MD_CTX_cleanup(&mctx); | ||
500 | |||
501 | printf("Result = %c\n", r == 1 ? 'P' : 'F'); | ||
271 | putc('\n',stdout); | 502 | putc('\n',stdout); |
272 | } | 503 | } |
273 | } | 504 | } |
@@ -277,21 +508,24 @@ int main(int argc,char **argv) | |||
277 | { | 508 | { |
278 | if(argc != 2) | 509 | if(argc != 2) |
279 | { | 510 | { |
280 | fprintf(stderr,"%s [prime|pqg]\n",argv[0]); | 511 | fprintf(stderr,"%s [prime|pqg|pqgver|keypair|siggen|sigver]\n",argv[0]); |
281 | exit(1); | 512 | exit(1); |
282 | } | 513 | } |
283 | if(!FIPS_mode_set(1,argv[0])) | 514 | if(!FIPS_mode_set(1)) |
284 | { | 515 | { |
285 | ERR_load_crypto_strings(); | 516 | do_print_errors(); |
286 | ERR_print_errors(BIO_new_fp(stderr,BIO_NOCLOSE)); | ||
287 | exit(1); | 517 | exit(1); |
288 | } | 518 | } |
289 | if(!strcmp(argv[1],"prime")) | 519 | if(!strcmp(argv[1],"prime")) |
290 | primes(); | 520 | primes(); |
291 | else if(!strcmp(argv[1],"pqg")) | 521 | else if(!strcmp(argv[1],"pqg")) |
292 | pqg(); | 522 | pqg(); |
523 | else if(!strcmp(argv[1],"pqgver")) | ||
524 | pqgver(); | ||
293 | else if(!strcmp(argv[1],"keypair")) | 525 | else if(!strcmp(argv[1],"keypair")) |
294 | keypair(); | 526 | keypair(); |
527 | else if(!strcmp(argv[1],"keyver")) | ||
528 | keyver(); | ||
295 | else if(!strcmp(argv[1],"siggen")) | 529 | else if(!strcmp(argv[1],"siggen")) |
296 | siggen(); | 530 | siggen(); |
297 | else if(!strcmp(argv[1],"sigver")) | 531 | else if(!strcmp(argv[1],"sigver")) |
@@ -304,3 +538,5 @@ int main(int argc,char **argv) | |||
304 | 538 | ||
305 | return 0; | 539 | return 0; |
306 | } | 540 | } |
541 | |||
542 | #endif | ||
diff --git a/src/lib/libssl/src/fips/fips-lib.com b/src/lib/libssl/src/fips/fips-lib.com index f3571bf845..539117b2ed 100644 --- a/src/lib/libssl/src/fips/fips-lib.com +++ b/src/lib/libssl/src/fips/fips-lib.com | |||
@@ -75,7 +75,7 @@ $ ENDIF | |||
75 | $! | 75 | $! |
76 | $! Define The Different Encryption Types. | 76 | $! Define The Different Encryption Types. |
77 | $! | 77 | $! |
78 | $ ENCRYPT_TYPES = "Basic,SHA1,RAND,DES,AES,DSA,RSA,DH" | 78 | $ ENCRYPT_TYPES = "Basic,SHA,RAND,DES,AES,DSA,RSA,DH,HMAC" |
79 | $! | 79 | $! |
80 | $! Check To Make Sure We Have Valid Command Line Parameters. | 80 | $! Check To Make Sure We Have Valid Command Line Parameters. |
81 | $! | 81 | $! |
@@ -151,20 +151,26 @@ $! | |||
151 | $! Define The Different Encryption "library" Strings. | 151 | $! Define The Different Encryption "library" Strings. |
152 | $! | 152 | $! |
153 | $ LIB_ = "fips,fips_err_wrapper" | 153 | $ LIB_ = "fips,fips_err_wrapper" |
154 | $ LIB_SHA1 = "fips_sha1dgst,fips_sha1_selftest" | 154 | $ LIB_SHA = "fips_sha1dgst,fips_sha1_selftest,fips_sha256,fips_sha512" |
155 | $ LIB_RAND = "fips_rand" | 155 | $ LIB_RAND = "fips_rand,fips_rand_selftest" |
156 | $ LIB_DES = "fips_des_enc,fips_des_selftest,fips_set_key" | 156 | $ LIB_DES = "fips_des_enc,fips_des_selftest,fips_set_key" |
157 | $ LIB_AES = "fips_aes_core,fips_aes_selftest" | 157 | $ LIB_AES = "fips_aes_core,fips_aes_selftest" |
158 | $ LIB_DSA = "fips_dsa_ossl,fips_dsa_gen,fips_dsa_selftest" | 158 | $ LIB_DSA = "fips_dsa_ossl,fips_dsa_gen,fips_dsa_selftest" |
159 | $ LIB_RSA = "fips_rsa_eay,fips_rsa_gen,fips_rsa_selftest" | 159 | $ LIB_RSA = "fips_rsa_eay,fips_rsa_gen,fips_rsa_selftest,fips_rsa_x931g" |
160 | $ LIB_DH = "fips_dh_check,fips_dh_gen,fips_dh_key" | 160 | $ LIB_DH = "fips_dh_check,fips_dh_gen,fips_dh_key" |
161 | $ LIB_HMAC = "fips_hmac,fips_hmac_selftest" | ||
161 | $! | 162 | $! |
162 | $! Setup exceptional compilations | 163 | $! Setup exceptional compilations |
163 | $! | 164 | $! |
165 | $ ! Add definitions for no threads on OpenVMS 7.1 and higher | ||
164 | $ COMPILEWITH_CC3 = ",bss_rtcp," | 166 | $ COMPILEWITH_CC3 = ",bss_rtcp," |
167 | $ ! Disable the DOLLARID warning | ||
165 | $ COMPILEWITH_CC4 = ",a_utctm,bss_log,o_time," | 168 | $ COMPILEWITH_CC4 = ",a_utctm,bss_log,o_time," |
169 | $ ! Disable disjoint optimization | ||
166 | $ COMPILEWITH_CC5 = ",md2_dgst,md4_dgst,md5_dgst,mdc2dgst," + - | 170 | $ COMPILEWITH_CC5 = ",md2_dgst,md4_dgst,md5_dgst,mdc2dgst," + - |
167 | "sha_dgst,sha1dgst,rmd_dgst,bf_enc," | 171 | "sha_dgst,sha1dgst,rmd_dgst,bf_enc," |
172 | $ ! Disable the MIXLINKAGE warning | ||
173 | $ COMPILEWITH_CC6 = ",fips_set_key," | ||
168 | $! | 174 | $! |
169 | $! Figure Out What Other Modules We Are To Build. | 175 | $! Figure Out What Other Modules We Are To Build. |
170 | $! | 176 | $! |
@@ -393,7 +399,12 @@ $ IF COMPILEWITH_CC5 - FILE_NAME0 .NES. COMPILEWITH_CC5 | |||
393 | $ THEN | 399 | $ THEN |
394 | $ CC5/OBJECT='OBJECT_FILE' 'SOURCE_FILE' | 400 | $ CC5/OBJECT='OBJECT_FILE' 'SOURCE_FILE' |
395 | $ ELSE | 401 | $ ELSE |
396 | $ CC/OBJECT='OBJECT_FILE' 'SOURCE_FILE' | 402 | $ IF COMPILEWITH_CC6 - FILE_NAME0 .NES. COMPILEWITH_CC6 |
403 | $ THEN | ||
404 | $ CC6/OBJECT='OBJECT_FILE' 'SOURCE_FILE' | ||
405 | $ ELSE | ||
406 | $ CC/OBJECT='OBJECT_FILE' 'SOURCE_FILE' | ||
407 | $ ENDIF | ||
397 | $ ENDIF | 408 | $ ENDIF |
398 | $ ENDIF | 409 | $ ENDIF |
399 | $ ENDIF | 410 | $ ENDIF |
@@ -856,7 +867,7 @@ $ CCDEFS = "TCPIP_TYPE_''P4',DSO_VMS" | |||
856 | $ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS | 867 | $ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS |
857 | $ CCEXTRAFLAGS = "" | 868 | $ CCEXTRAFLAGS = "" |
858 | $ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS | 869 | $ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS |
859 | $ CCDISABLEWARNINGS = "LONGLONGTYPE,LONGLONGSUFX" | 870 | $ CCDISABLEWARNINGS = "LONGLONGTYPE,LONGLONGSUFX,FOUNDCR" |
860 | $ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN - | 871 | $ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN - |
861 | CCDISABLEWARNINGS = CCDISABLEWARNINGS + "," + USER_CCDISABLEWARNINGS | 872 | CCDISABLEWARNINGS = CCDISABLEWARNINGS + "," + USER_CCDISABLEWARNINGS |
862 | $! | 873 | $! |
@@ -973,14 +984,18 @@ $ THEN | |||
973 | $ IF CCDISABLEWARNINGS .EQS. "" | 984 | $ IF CCDISABLEWARNINGS .EQS. "" |
974 | $ THEN | 985 | $ THEN |
975 | $ CC4DISABLEWARNINGS = "DOLLARID" | 986 | $ CC4DISABLEWARNINGS = "DOLLARID" |
987 | $ CC6DISABLEWARNINGS = "MIXLINKAGE" | ||
976 | $ ELSE | 988 | $ ELSE |
977 | $ CC4DISABLEWARNINGS = CCDISABLEWARNINGS + ",DOLLARID" | 989 | $ CC4DISABLEWARNINGS = CCDISABLEWARNINGS + ",DOLLARID" |
990 | $ CC6DISABLEWARNINGS = CCDISABLEWARNINGS + ",MIXLINKAGE" | ||
978 | $ CCDISABLEWARNINGS = "/WARNING=(DISABLE=(" + CCDISABLEWARNINGS + "))" | 991 | $ CCDISABLEWARNINGS = "/WARNING=(DISABLE=(" + CCDISABLEWARNINGS + "))" |
979 | $ ENDIF | 992 | $ ENDIF |
980 | $ CC4DISABLEWARNINGS = "/WARNING=(DISABLE=(" + CC4DISABLEWARNINGS + "))" | 993 | $ CC4DISABLEWARNINGS = "/WARNING=(DISABLE=(" + CC4DISABLEWARNINGS + "))" |
994 | $ CC6DISABLEWARNINGS = "/WARNING=(DISABLE=(" + CC6DISABLEWARNINGS + "))" | ||
981 | $ ELSE | 995 | $ ELSE |
982 | $ CCDISABLEWARNINGS = "" | 996 | $ CCDISABLEWARNINGS = "" |
983 | $ CC4DISABLEWARNINGS = "" | 997 | $ CC4DISABLEWARNINGS = "" |
998 | $ CC6DISABLEWARNINGS = "" | ||
984 | $ ENDIF | 999 | $ ENDIF |
985 | $ CC3 = CC + "/DEFINE=(" + CCDEFS + ISSEVEN + ")" + CCDISABLEWARNINGS | 1000 | $ CC3 = CC + "/DEFINE=(" + CCDEFS + ISSEVEN + ")" + CCDISABLEWARNINGS |
986 | $ CC = CC + "/DEFINE=(" + CCDEFS + ")" + CCDISABLEWARNINGS | 1001 | $ CC = CC + "/DEFINE=(" + CCDEFS + ")" + CCDISABLEWARNINGS |
@@ -991,6 +1006,7 @@ $ ELSE | |||
991 | $ CC5 = CC + "/NOOPTIMIZE" | 1006 | $ CC5 = CC + "/NOOPTIMIZE" |
992 | $ ENDIF | 1007 | $ ENDIF |
993 | $ CC4 = CC - CCDISABLEWARNINGS + CC4DISABLEWARNINGS | 1008 | $ CC4 = CC - CCDISABLEWARNINGS + CC4DISABLEWARNINGS |
1009 | $ CC6 = CC - CCDISABLEWARNINGS + CC6DISABLEWARNINGS | ||
994 | $! | 1010 | $! |
995 | $! Show user the result | 1011 | $! Show user the result |
996 | $! | 1012 | $! |
@@ -1153,7 +1169,7 @@ $! Save directory information | |||
1153 | $! | 1169 | $! |
1154 | $ __HERE = F$PARSE(F$PARSE("A.;",F$ENVIRONMENT("PROCEDURE"))-"A.;","[]A.;") - "A.;" | 1170 | $ __HERE = F$PARSE(F$PARSE("A.;",F$ENVIRONMENT("PROCEDURE"))-"A.;","[]A.;") - "A.;" |
1155 | $ __HERE = F$EDIT(__HERE,"UPCASE") | 1171 | $ __HERE = F$EDIT(__HERE,"UPCASE") |
1156 | $ __TOP = __HERE - "FIPS]" | 1172 | $ __TOP = __HERE - "FIPS-1_0]" |
1157 | $ __INCLUDE = __TOP + "INCLUDE.OPENSSL]" | 1173 | $ __INCLUDE = __TOP + "INCLUDE.OPENSSL]" |
1158 | $! | 1174 | $! |
1159 | $! Set up the logical name OPENSSL to point at the include directory | 1175 | $! Set up the logical name OPENSSL to point at the include directory |
diff --git a/src/lib/libssl/src/fips/fips-nodiff.txt b/src/lib/libssl/src/fips/fips-nodiff.txt new file mode 100644 index 0000000000..fb2944b4fc --- /dev/null +++ b/src/lib/libssl/src/fips/fips-nodiff.txt | |||
@@ -0,0 +1,7 @@ | |||
1 | KeyPair.rsp | ||
2 | PQGGen.rsp | ||
3 | SigGen.rsp | ||
4 | SigGen15.rsp | ||
5 | SigGenPSS.rsp | ||
6 | SigGenRSA.rsp | ||
7 | SigGenPSS.rsp | ||
diff --git a/src/lib/libssl/src/fips/fips.c b/src/lib/libssl/src/fips/fips.c index 7ecba57f70..7dcc34403f 100644 --- a/src/lib/libssl/src/fips/fips.c +++ b/src/lib/libssl/src/fips/fips.c | |||
@@ -47,50 +47,80 @@ | |||
47 | * | 47 | * |
48 | */ | 48 | */ |
49 | 49 | ||
50 | #include <openssl/fips.h> | 50 | |
51 | #include <openssl/rand.h> | 51 | #include <openssl/rand.h> |
52 | #include <openssl/fips_rand.h> | 52 | #include <openssl/fips_rand.h> |
53 | #include <openssl/err.h> | 53 | #include <openssl/err.h> |
54 | #include <openssl/bio.h> | 54 | #include <openssl/bio.h> |
55 | #include <openssl/hmac.h> | 55 | #include <openssl/hmac.h> |
56 | #include <openssl/rsa.h> | ||
56 | #include <string.h> | 57 | #include <string.h> |
57 | #include <limits.h> | 58 | #include <limits.h> |
58 | #include "fips_locl.h" | 59 | #include "fips_locl.h" |
59 | 60 | ||
60 | #ifdef OPENSSL_FIPS | 61 | #ifdef OPENSSL_FIPS |
61 | 62 | ||
63 | #include <openssl/fips.h> | ||
64 | |||
62 | #ifndef PATH_MAX | 65 | #ifndef PATH_MAX |
63 | #define PATH_MAX 1024 | 66 | #define PATH_MAX 1024 |
64 | #endif | 67 | #endif |
65 | 68 | ||
66 | static int fips_md5_allowed = 0; | 69 | static int fips_selftest_fail; |
67 | static int fips_selftest_fail = 0; | 70 | static int fips_mode; |
71 | static const void *fips_rand_check; | ||
68 | 72 | ||
69 | void FIPS_allow_md5(int onoff) | 73 | static void fips_set_mode(int onoff) |
70 | { | ||
71 | if (fips_is_started()) | ||
72 | { | 74 | { |
73 | int owning_thread = fips_is_owning_thread(); | 75 | int owning_thread = fips_is_owning_thread(); |
74 | 76 | ||
75 | if (!owning_thread) CRYPTO_w_lock(CRYPTO_LOCK_FIPS); | 77 | if (fips_is_started()) |
76 | fips_md5_allowed = onoff; | 78 | { |
77 | if (!owning_thread) CRYPTO_w_unlock(CRYPTO_LOCK_FIPS); | 79 | if (!owning_thread) fips_w_lock(); |
80 | fips_mode = onoff; | ||
81 | if (!owning_thread) fips_w_unlock(); | ||
82 | } | ||
78 | } | 83 | } |
79 | } | ||
80 | 84 | ||
81 | int FIPS_md5_allowed(void) | 85 | static void fips_set_rand_check(const void *rand_check) |
82 | { | ||
83 | int ret = 1; | ||
84 | if (fips_is_started()) | ||
85 | { | 86 | { |
86 | int owning_thread = fips_is_owning_thread(); | 87 | int owning_thread = fips_is_owning_thread(); |
87 | 88 | ||
88 | if (!owning_thread) CRYPTO_r_lock(CRYPTO_LOCK_FIPS); | 89 | if (fips_is_started()) |
89 | ret = fips_md5_allowed; | 90 | { |
90 | if (!owning_thread) CRYPTO_r_unlock(CRYPTO_LOCK_FIPS); | 91 | if (!owning_thread) fips_w_lock(); |
92 | fips_rand_check = rand_check; | ||
93 | if (!owning_thread) fips_w_unlock(); | ||
94 | } | ||
95 | } | ||
96 | |||
97 | int FIPS_mode(void) | ||
98 | { | ||
99 | int ret = 0; | ||
100 | int owning_thread = fips_is_owning_thread(); | ||
101 | |||
102 | if (fips_is_started()) | ||
103 | { | ||
104 | if (!owning_thread) fips_r_lock(); | ||
105 | ret = fips_mode; | ||
106 | if (!owning_thread) fips_r_unlock(); | ||
107 | } | ||
108 | return ret; | ||
109 | } | ||
110 | |||
111 | const void *FIPS_rand_check(void) | ||
112 | { | ||
113 | const void *ret = 0; | ||
114 | int owning_thread = fips_is_owning_thread(); | ||
115 | |||
116 | if (fips_is_started()) | ||
117 | { | ||
118 | if (!owning_thread) fips_r_lock(); | ||
119 | ret = fips_rand_check; | ||
120 | if (!owning_thread) fips_r_unlock(); | ||
121 | } | ||
122 | return ret; | ||
91 | } | 123 | } |
92 | return ret; | ||
93 | } | ||
94 | 124 | ||
95 | int FIPS_selftest_failed(void) | 125 | int FIPS_selftest_failed(void) |
96 | { | 126 | { |
@@ -99,99 +129,134 @@ int FIPS_selftest_failed(void) | |||
99 | { | 129 | { |
100 | int owning_thread = fips_is_owning_thread(); | 130 | int owning_thread = fips_is_owning_thread(); |
101 | 131 | ||
102 | if (!owning_thread) CRYPTO_r_lock(CRYPTO_LOCK_FIPS); | 132 | if (!owning_thread) fips_r_lock(); |
103 | ret = fips_selftest_fail; | 133 | ret = fips_selftest_fail; |
104 | if (!owning_thread) CRYPTO_r_unlock(CRYPTO_LOCK_FIPS); | 134 | if (!owning_thread) fips_r_unlock(); |
105 | } | 135 | } |
106 | return ret; | 136 | return ret; |
107 | } | 137 | } |
108 | 138 | ||
139 | /* Selftest failure fatal exit routine. This will be called | ||
140 | * during *any* cryptographic operation. It has the minimum | ||
141 | * overhead possible to avoid too big a performance hit. | ||
142 | */ | ||
143 | |||
144 | void FIPS_selftest_check(void) | ||
145 | { | ||
146 | if (fips_selftest_fail) | ||
147 | { | ||
148 | OpenSSLDie(__FILE__,__LINE__, "FATAL FIPS SELFTEST FAILURE"); | ||
149 | } | ||
150 | } | ||
151 | |||
152 | void fips_set_selftest_fail(void) | ||
153 | { | ||
154 | fips_selftest_fail = 1; | ||
155 | } | ||
156 | |||
109 | int FIPS_selftest() | 157 | int FIPS_selftest() |
110 | { | 158 | { |
111 | ERR_load_crypto_strings(); | ||
112 | 159 | ||
113 | return FIPS_selftest_sha1() | 160 | return FIPS_selftest_sha1() |
161 | && FIPS_selftest_hmac() | ||
114 | && FIPS_selftest_aes() | 162 | && FIPS_selftest_aes() |
115 | && FIPS_selftest_des() | 163 | && FIPS_selftest_des() |
116 | && FIPS_selftest_rsa() | 164 | && FIPS_selftest_rsa() |
117 | && FIPS_selftest_dsa(); | 165 | && FIPS_selftest_dsa(); |
118 | } | 166 | } |
119 | 167 | ||
120 | static int FIPS_check_exe(const char *path) | 168 | extern const void *FIPS_text_start(), *FIPS_text_end(); |
169 | extern const unsigned char FIPS_rodata_start[], FIPS_rodata_end[]; | ||
170 | unsigned char FIPS_signature [20] = { 0 }; | ||
171 | static const char FIPS_hmac_key[]="etaonrishdlcupfm"; | ||
172 | |||
173 | unsigned int FIPS_incore_fingerprint(unsigned char *sig,unsigned int len) | ||
121 | { | 174 | { |
122 | unsigned char buf[1024]; | 175 | const unsigned char *p1 = FIPS_text_start(); |
123 | char p2[PATH_MAX]; | 176 | const unsigned char *p2 = FIPS_text_end(); |
124 | unsigned int n; | 177 | const unsigned char *p3 = FIPS_rodata_start; |
125 | unsigned char mdbuf[EVP_MAX_MD_SIZE]; | 178 | const unsigned char *p4 = FIPS_rodata_end; |
126 | FILE *f; | 179 | HMAC_CTX c; |
127 | static char key[]="etaonrishdlcupfm"; | 180 | |
128 | HMAC_CTX hmac; | 181 | HMAC_CTX_init(&c); |
129 | const char *sha1_fmt="%s.sha1"; | 182 | HMAC_Init(&c,FIPS_hmac_key,strlen(FIPS_hmac_key),EVP_sha1()); |
130 | 183 | ||
131 | f=fopen(path,"rb"); | 184 | /* detect overlapping regions */ |
132 | #ifdef __CYGWIN32__ | 185 | if (p1<=p3 && p2>=p3) |
133 | /* cygwin scrupulously strips .exe extentions:-( as of now it's | 186 | p3=p1, p4=p2>p4?p2:p4, p1=NULL, p2=NULL; |
134 | actually no point to attempt above fopen, but we keep the call | 187 | else if (p3<=p1 && p4>=p1) |
135 | just in case the behavior changes in the future... */ | 188 | p3=p3, p4=p2>p4?p2:p4, p1=NULL, p2=NULL; |
136 | if (!f) | 189 | |
190 | if (p1) | ||
191 | HMAC_Update(&c,p1,(size_t)p2-(size_t)p1); | ||
192 | |||
193 | if (FIPS_signature>=p3 && FIPS_signature<p4) | ||
137 | { | 194 | { |
138 | sha1_fmt="%s.exe.sha1"; | 195 | /* "punch" hole */ |
139 | BIO_snprintf(p2,sizeof p2,"%s.exe",path); | 196 | HMAC_Update(&c,p3,(size_t)FIPS_signature-(size_t)p3); |
140 | f=fopen(p2,"rb"); | 197 | p3 = FIPS_signature+sizeof(FIPS_signature); |
198 | if (p3<p4) | ||
199 | HMAC_Update(&c,p3,(size_t)p4-(size_t)p3); | ||
141 | } | 200 | } |
201 | else | ||
202 | HMAC_Update(&c,p3,(size_t)p4-(size_t)p3); | ||
203 | |||
204 | HMAC_Final(&c,sig,&len); | ||
205 | HMAC_CTX_cleanup(&c); | ||
206 | |||
207 | return len; | ||
208 | } | ||
209 | |||
210 | int FIPS_check_incore_fingerprint(void) | ||
211 | { | ||
212 | unsigned char sig[EVP_MAX_MD_SIZE]; | ||
213 | unsigned int len; | ||
214 | #if defined(__sgi) && (defined(__mips) || defined(mips)) | ||
215 | extern int __dso_displacement[]; | ||
216 | #else | ||
217 | extern int OPENSSL_NONPIC_relocated; | ||
142 | #endif | 218 | #endif |
143 | if(!f) | 219 | |
144 | { | 220 | if (FIPS_text_start()==NULL) |
145 | FIPSerr(FIPS_F_FIPS_CHECK_EXE,FIPS_R_CANNOT_READ_EXE); | ||
146 | return 0; | ||
147 | } | ||
148 | HMAC_Init(&hmac,key,strlen(key),EVP_sha1()); | ||
149 | while(!feof(f)) | ||
150 | { | ||
151 | n=fread(buf,1,sizeof buf,f); | ||
152 | if(ferror(f)) | ||
153 | { | ||
154 | clearerr(f); | ||
155 | fclose(f); | ||
156 | FIPSerr(FIPS_F_FIPS_CHECK_EXE,FIPS_R_CANNOT_READ_EXE); | ||
157 | return 0; | ||
158 | } | ||
159 | if (n) HMAC_Update(&hmac,buf,n); | ||
160 | } | ||
161 | fclose(f); | ||
162 | HMAC_Final(&hmac,mdbuf,&n); | ||
163 | HMAC_CTX_cleanup(&hmac); | ||
164 | BIO_snprintf(p2,sizeof p2,sha1_fmt,path); | ||
165 | f=fopen(p2,"rb"); | ||
166 | if(!f || fread(buf,1,20,f) != 20) | ||
167 | { | 221 | { |
168 | if (f) fclose(f); | 222 | FIPSerr(FIPS_F_FIPS_CHECK_INCORE_FINGERPRINT,FIPS_R_UNSUPPORTED_PLATFORM); |
169 | FIPSerr(FIPS_F_FIPS_CHECK_EXE,FIPS_R_CANNOT_READ_EXE_DIGEST); | ||
170 | return 0; | 223 | return 0; |
171 | } | 224 | } |
172 | fclose(f); | 225 | |
173 | if(memcmp(buf,mdbuf,20)) | 226 | len=FIPS_incore_fingerprint (sig,sizeof(sig)); |
227 | |||
228 | if (len!=sizeof(FIPS_signature) || | ||
229 | memcmp(FIPS_signature,sig,sizeof(FIPS_signature))) | ||
174 | { | 230 | { |
175 | FIPSerr(FIPS_F_FIPS_CHECK_EXE,FIPS_R_EXE_DIGEST_DOES_NOT_MATCH); | 231 | if (FIPS_signature>=FIPS_rodata_start && FIPS_signature<FIPS_rodata_end) |
232 | FIPSerr(FIPS_F_FIPS_CHECK_INCORE_FINGERPRINT,FIPS_R_FINGERPRINT_DOES_NOT_MATCH_SEGMENT_ALIASING); | ||
233 | #if defined(__sgi) && (defined(__mips) || defined(mips)) | ||
234 | else if (__dso_displacement!=NULL) | ||
235 | #else | ||
236 | else if (OPENSSL_NONPIC_relocated) | ||
237 | #endif | ||
238 | FIPSerr(FIPS_F_FIPS_CHECK_INCORE_FINGERPRINT,FIPS_R_FINGERPRINT_DOES_NOT_MATCH_NONPIC_RELOCATED); | ||
239 | else | ||
240 | FIPSerr(FIPS_F_FIPS_CHECK_INCORE_FINGERPRINT,FIPS_R_FINGERPRINT_DOES_NOT_MATCH); | ||
176 | return 0; | 241 | return 0; |
177 | } | 242 | } |
243 | |||
178 | return 1; | 244 | return 1; |
179 | } | 245 | } |
180 | 246 | ||
181 | int FIPS_mode_set(int onoff,const char *path) | 247 | int FIPS_mode_set(int onoff) |
182 | { | 248 | { |
183 | void fips_set_mode(int _onoff); | ||
184 | int fips_set_owning_thread(); | 249 | int fips_set_owning_thread(); |
185 | int fips_clear_owning_thread(); | 250 | int fips_clear_owning_thread(); |
186 | int ret = 0; | 251 | int ret = 0; |
187 | 252 | ||
188 | CRYPTO_w_lock(CRYPTO_LOCK_FIPS); | 253 | fips_w_lock(); |
189 | fips_set_started(); | 254 | fips_set_started(); |
190 | fips_set_owning_thread(); | 255 | fips_set_owning_thread(); |
191 | 256 | ||
192 | if(onoff) | 257 | if(onoff) |
193 | { | 258 | { |
194 | unsigned char buf[24]; | 259 | unsigned char buf[48]; |
195 | 260 | ||
196 | fips_selftest_fail = 0; | 261 | fips_selftest_fail = 0; |
197 | 262 | ||
@@ -205,7 +270,33 @@ int FIPS_mode_set(int onoff,const char *path) | |||
205 | goto end; | 270 | goto end; |
206 | } | 271 | } |
207 | 272 | ||
208 | if(!FIPS_check_exe(path)) | 273 | #ifdef OPENSSL_IA32_SSE2 |
274 | if ((OPENSSL_ia32cap & (1<<25|1<<26)) != (1<<25|1<<26)) | ||
275 | { | ||
276 | FIPSerr(FIPS_F_FIPS_MODE_SET,FIPS_R_UNSUPPORTED_PLATFORM); | ||
277 | fips_selftest_fail = 1; | ||
278 | ret = 0; | ||
279 | goto end; | ||
280 | } | ||
281 | #endif | ||
282 | |||
283 | if(fips_signature_witness() != FIPS_signature) | ||
284 | { | ||
285 | FIPSerr(FIPS_F_FIPS_MODE_SET,FIPS_R_CONTRADICTING_EVIDENCE); | ||
286 | fips_selftest_fail = 1; | ||
287 | ret = 0; | ||
288 | goto end; | ||
289 | } | ||
290 | |||
291 | if(!FIPS_check_incore_fingerprint()) | ||
292 | { | ||
293 | fips_selftest_fail = 1; | ||
294 | ret = 0; | ||
295 | goto end; | ||
296 | } | ||
297 | |||
298 | /* Perform RNG KAT before seeding */ | ||
299 | if (!FIPS_selftest_rng()) | ||
209 | { | 300 | { |
210 | fips_selftest_fail = 1; | 301 | fips_selftest_fail = 1; |
211 | ret = 0; | 302 | ret = 0; |
@@ -213,7 +304,7 @@ int FIPS_mode_set(int onoff,const char *path) | |||
213 | } | 304 | } |
214 | 305 | ||
215 | /* automagically seed PRNG if not already seeded */ | 306 | /* automagically seed PRNG if not already seeded */ |
216 | if(!FIPS_rand_seeded()) | 307 | if(!FIPS_rand_status()) |
217 | { | 308 | { |
218 | if(RAND_bytes(buf,sizeof buf) <= 0) | 309 | if(RAND_bytes(buf,sizeof buf) <= 0) |
219 | { | 310 | { |
@@ -221,8 +312,8 @@ int FIPS_mode_set(int onoff,const char *path) | |||
221 | ret = 0; | 312 | ret = 0; |
222 | goto end; | 313 | goto end; |
223 | } | 314 | } |
224 | FIPS_set_prng_key(buf,buf+8); | 315 | FIPS_rand_set_key(buf,32); |
225 | FIPS_rand_seed(buf+16,8); | 316 | FIPS_rand_seed(buf+32,16); |
226 | } | 317 | } |
227 | 318 | ||
228 | /* now switch into FIPS mode */ | 319 | /* now switch into FIPS mode */ |
@@ -244,17 +335,185 @@ int FIPS_mode_set(int onoff,const char *path) | |||
244 | ret = 1; | 335 | ret = 1; |
245 | end: | 336 | end: |
246 | fips_clear_owning_thread(); | 337 | fips_clear_owning_thread(); |
247 | CRYPTO_w_unlock(CRYPTO_LOCK_FIPS); | 338 | fips_w_unlock(); |
248 | return ret; | 339 | return ret; |
249 | } | 340 | } |
250 | 341 | ||
342 | void fips_w_lock(void) { CRYPTO_w_lock(CRYPTO_LOCK_FIPS); } | ||
343 | void fips_w_unlock(void) { CRYPTO_w_unlock(CRYPTO_LOCK_FIPS); } | ||
344 | void fips_r_lock(void) { CRYPTO_r_lock(CRYPTO_LOCK_FIPS); } | ||
345 | void fips_r_unlock(void) { CRYPTO_r_unlock(CRYPTO_LOCK_FIPS); } | ||
346 | |||
347 | static int fips_started = 0; | ||
348 | static unsigned long fips_thread = 0; | ||
349 | |||
350 | void fips_set_started(void) | ||
351 | { | ||
352 | fips_started = 1; | ||
353 | } | ||
354 | |||
355 | int fips_is_started(void) | ||
356 | { | ||
357 | return fips_started; | ||
358 | } | ||
359 | |||
360 | int fips_is_owning_thread(void) | ||
361 | { | ||
362 | int ret = 0; | ||
363 | |||
364 | if (fips_is_started()) | ||
365 | { | ||
366 | CRYPTO_r_lock(CRYPTO_LOCK_FIPS2); | ||
367 | if (fips_thread != 0 && fips_thread == CRYPTO_thread_id()) | ||
368 | ret = 1; | ||
369 | CRYPTO_r_unlock(CRYPTO_LOCK_FIPS2); | ||
370 | } | ||
371 | return ret; | ||
372 | } | ||
373 | |||
374 | int fips_set_owning_thread(void) | ||
375 | { | ||
376 | int ret = 0; | ||
377 | |||
378 | if (fips_is_started()) | ||
379 | { | ||
380 | CRYPTO_w_lock(CRYPTO_LOCK_FIPS2); | ||
381 | if (fips_thread == 0) | ||
382 | { | ||
383 | fips_thread = CRYPTO_thread_id(); | ||
384 | ret = 1; | ||
385 | } | ||
386 | CRYPTO_w_unlock(CRYPTO_LOCK_FIPS2); | ||
387 | } | ||
388 | return ret; | ||
389 | } | ||
390 | |||
391 | int fips_clear_owning_thread(void) | ||
392 | { | ||
393 | int ret = 0; | ||
394 | |||
395 | if (fips_is_started()) | ||
396 | { | ||
397 | CRYPTO_w_lock(CRYPTO_LOCK_FIPS2); | ||
398 | if (fips_thread == CRYPTO_thread_id()) | ||
399 | { | ||
400 | fips_thread = 0; | ||
401 | ret = 1; | ||
402 | } | ||
403 | CRYPTO_w_unlock(CRYPTO_LOCK_FIPS2); | ||
404 | } | ||
405 | return ret; | ||
406 | } | ||
407 | |||
408 | unsigned char *fips_signature_witness(void) | ||
409 | { | ||
410 | extern unsigned char FIPS_signature[]; | ||
411 | return FIPS_signature; | ||
412 | } | ||
413 | |||
414 | /* Generalized public key test routine. Signs and verifies the data | ||
415 | * supplied in tbs using mesage digest md and setting option digest | ||
416 | * flags md_flags. If the 'kat' parameter is not NULL it will | ||
417 | * additionally check the signature matches it: a known answer test | ||
418 | * The string "fail_str" is used for identification purposes in case | ||
419 | * of failure. | ||
420 | */ | ||
421 | |||
422 | int fips_pkey_signature_test(EVP_PKEY *pkey, | ||
423 | const unsigned char *tbs, int tbslen, | ||
424 | const unsigned char *kat, unsigned int katlen, | ||
425 | const EVP_MD *digest, unsigned int md_flags, | ||
426 | const char *fail_str) | ||
427 | { | ||
428 | int ret = 0; | ||
429 | unsigned char sigtmp[256], *sig = sigtmp; | ||
430 | unsigned int siglen; | ||
431 | EVP_MD_CTX mctx; | ||
432 | EVP_MD_CTX_init(&mctx); | ||
433 | |||
434 | if ((pkey->type == EVP_PKEY_RSA) | ||
435 | && (RSA_size(pkey->pkey.rsa) > sizeof(sigtmp))) | ||
436 | { | ||
437 | sig = OPENSSL_malloc(RSA_size(pkey->pkey.rsa)); | ||
438 | if (!sig) | ||
439 | { | ||
440 | FIPSerr(FIPS_F_FIPS_PKEY_SIGNATURE_TEST,ERR_R_MALLOC_FAILURE); | ||
441 | return 0; | ||
442 | } | ||
443 | } | ||
444 | |||
445 | if (tbslen == -1) | ||
446 | tbslen = strlen((char *)tbs); | ||
447 | |||
448 | if (md_flags) | ||
449 | M_EVP_MD_CTX_set_flags(&mctx, md_flags); | ||
450 | |||
451 | if (!EVP_SignInit_ex(&mctx, digest, NULL)) | ||
452 | goto error; | ||
453 | if (!EVP_SignUpdate(&mctx, tbs, tbslen)) | ||
454 | goto error; | ||
455 | if (!EVP_SignFinal(&mctx, sig, &siglen, pkey)) | ||
456 | goto error; | ||
457 | |||
458 | if (kat && ((siglen != katlen) || memcmp(kat, sig, katlen))) | ||
459 | goto error; | ||
460 | |||
461 | if (!EVP_VerifyInit_ex(&mctx, digest, NULL)) | ||
462 | goto error; | ||
463 | if (!EVP_VerifyUpdate(&mctx, tbs, tbslen)) | ||
464 | goto error; | ||
465 | ret = EVP_VerifyFinal(&mctx, sig, siglen, pkey); | ||
466 | |||
467 | error: | ||
468 | if (sig != sigtmp) | ||
469 | OPENSSL_free(sig); | ||
470 | EVP_MD_CTX_cleanup(&mctx); | ||
471 | if (ret != 1) | ||
472 | { | ||
473 | FIPSerr(FIPS_F_FIPS_PKEY_SIGNATURE_TEST,FIPS_R_TEST_FAILURE); | ||
474 | if (fail_str) | ||
475 | ERR_add_error_data(2, "Type=", fail_str); | ||
476 | return 0; | ||
477 | } | ||
478 | return 1; | ||
479 | } | ||
480 | |||
481 | /* Generalized symmetric cipher test routine. Encrypt data, verify result | ||
482 | * against known answer, decrypt and compare with original plaintext. | ||
483 | */ | ||
484 | |||
485 | int fips_cipher_test(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, | ||
486 | const unsigned char *key, | ||
487 | const unsigned char *iv, | ||
488 | const unsigned char *plaintext, | ||
489 | const unsigned char *ciphertext, | ||
490 | int len) | ||
491 | { | ||
492 | unsigned char pltmp[FIPS_MAX_CIPHER_TEST_SIZE]; | ||
493 | unsigned char citmp[FIPS_MAX_CIPHER_TEST_SIZE]; | ||
494 | OPENSSL_assert(len <= FIPS_MAX_CIPHER_TEST_SIZE); | ||
495 | if (EVP_CipherInit_ex(ctx, cipher, NULL, key, iv, 1) <= 0) | ||
496 | return 0; | ||
497 | EVP_Cipher(ctx, citmp, plaintext, len); | ||
498 | if (memcmp(citmp, ciphertext, len)) | ||
499 | return 0; | ||
500 | if (EVP_CipherInit_ex(ctx, cipher, NULL, key, iv, 0) <= 0) | ||
501 | return 0; | ||
502 | EVP_Cipher(ctx, pltmp, citmp, len); | ||
503 | if (memcmp(pltmp, plaintext, len)) | ||
504 | return 0; | ||
505 | return 1; | ||
506 | } | ||
507 | |||
251 | #if 0 | 508 | #if 0 |
252 | /* here just to cause error codes to exist */ | 509 | /* The purpose of this is to ensure the error code exists and the function |
253 | static void dummy() | 510 | * name is to keep the error checking script quiet |
254 | { | 511 | */ |
255 | FIPSerr(FIPS_F_HASH_FINAL,FIPS_F_NON_FIPS_METHOD); | 512 | void hash_final(void) |
256 | FIPSerr(FIPS_F_HASH_FINAL,FIPS_R_FIPS_SELFTEST_FAILED); | 513 | { |
257 | } | 514 | FIPSerr(FIPS_F_HASH_FINAL,FIPS_R_NON_FIPS_METHOD); |
515 | } | ||
258 | #endif | 516 | #endif |
259 | 517 | ||
518 | |||
260 | #endif | 519 | #endif |
diff --git a/src/lib/libssl/src/fips/fips.h b/src/lib/libssl/src/fips/fips.h index a4df06b148..42bdcf2596 100644 --- a/src/lib/libssl/src/fips/fips.h +++ b/src/lib/libssl/src/fips/fips.h | |||
@@ -49,22 +49,27 @@ | |||
49 | 49 | ||
50 | #include <openssl/opensslconf.h> | 50 | #include <openssl/opensslconf.h> |
51 | 51 | ||
52 | #ifndef OPENSSL_FIPS | ||
53 | #error FIPS is disabled. | ||
54 | #endif | ||
55 | |||
52 | #ifdef OPENSSL_FIPS | 56 | #ifdef OPENSSL_FIPS |
53 | 57 | ||
54 | #ifdef __cplusplus | 58 | #ifdef __cplusplus |
55 | extern "C" { | 59 | extern "C" { |
56 | #endif | 60 | #endif |
57 | 61 | ||
58 | /* Note that these are defined in crypto/cryptlib.c so they're | ||
59 | * available even without -lfips. | ||
60 | */ | ||
61 | struct dsa_st; | 62 | struct dsa_st; |
63 | struct evp_pkey_st; | ||
64 | struct env_md_st; | ||
65 | struct evp_cipher_st; | ||
66 | struct evp_cipher_ctx_st; | ||
62 | 67 | ||
63 | int FIPS_mode_set(int onoff,const char *path); | 68 | int FIPS_mode_set(int onoff); |
64 | void FIPS_allow_md5(int onoff); | 69 | int FIPS_mode(void); |
65 | int FIPS_md5_allowed(void); | 70 | const void *FIPS_rand_check(void); |
66 | int FIPS_selftest_failed(void); | 71 | int FIPS_selftest_failed(void); |
67 | int FIPS_dsa_check(struct dsa_st *dsa); | 72 | void FIPS_selftest_check(void); |
68 | void FIPS_corrupt_sha1(void); | 73 | void FIPS_corrupt_sha1(void); |
69 | int FIPS_selftest_sha1(void); | 74 | int FIPS_selftest_sha1(void); |
70 | void FIPS_corrupt_aes(void); | 75 | void FIPS_corrupt_aes(void); |
@@ -72,14 +77,29 @@ int FIPS_selftest_aes(void); | |||
72 | void FIPS_corrupt_des(void); | 77 | void FIPS_corrupt_des(void); |
73 | int FIPS_selftest_des(void); | 78 | int FIPS_selftest_des(void); |
74 | void FIPS_corrupt_rsa(void); | 79 | void FIPS_corrupt_rsa(void); |
80 | void FIPS_corrupt_rsa_keygen(void); | ||
75 | int FIPS_selftest_rsa(void); | 81 | int FIPS_selftest_rsa(void); |
76 | void FIPS_corrupt_dsa(void); | 82 | void FIPS_corrupt_dsa(void); |
83 | void FIPS_corrupt_dsa_keygen(void); | ||
77 | int FIPS_selftest_dsa(void); | 84 | int FIPS_selftest_dsa(void); |
85 | void FIPS_corrupt_rng(void); | ||
86 | void FIPS_rng_stick(void); | ||
87 | int FIPS_selftest_rng(void); | ||
88 | int FIPS_selftest_hmac(void); | ||
78 | 89 | ||
79 | /* The following lines are auto generated by the script mkerr.pl. Any changes | 90 | int fips_pkey_signature_test(struct evp_pkey_st *pkey, |
80 | * made after this point may be overwritten when the script is next run. | 91 | const unsigned char *tbs, int tbslen, |
81 | */ | 92 | const unsigned char *kat, unsigned int katlen, |
82 | void ERR_load_FIPS_strings(void); | 93 | const struct env_md_st *digest, unsigned int md_flags, |
94 | const char *fail_str); | ||
95 | |||
96 | int fips_cipher_test(struct evp_cipher_ctx_st *ctx, | ||
97 | const struct evp_cipher_st *cipher, | ||
98 | const unsigned char *key, | ||
99 | const unsigned char *iv, | ||
100 | const unsigned char *plaintext, | ||
101 | const unsigned char *ciphertext, | ||
102 | int len); | ||
83 | 103 | ||
84 | /* BEGIN ERROR CODES */ | 104 | /* BEGIN ERROR CODES */ |
85 | /* The following lines are auto generated by the script mkerr.pl. Any changes | 105 | /* The following lines are auto generated by the script mkerr.pl. Any changes |
@@ -90,34 +110,52 @@ void ERR_load_FIPS_strings(void); | |||
90 | /* Error codes for the FIPS functions. */ | 110 | /* Error codes for the FIPS functions. */ |
91 | 111 | ||
92 | /* Function codes. */ | 112 | /* Function codes. */ |
93 | #define FIPS_F_DSA_DO_SIGN 111 | 113 | #define FIPS_F_DH_BUILTIN_GENPARAMS 100 |
94 | #define FIPS_F_DSA_DO_VERIFY 112 | 114 | #define FIPS_F_DSA_BUILTIN_PARAMGEN 101 |
95 | #define FIPS_F_DSA_GENERATE_PARAMETERS 110 | 115 | #define FIPS_F_DSA_DO_SIGN 102 |
96 | #define FIPS_F_FIPS_CHECK_DSA 116 | 116 | #define FIPS_F_DSA_DO_VERIFY 103 |
97 | #define FIPS_F_FIPS_CHECK_EXE 106 | 117 | #define FIPS_F_EVP_CIPHERINIT_EX 124 |
98 | #define FIPS_F_FIPS_CHECK_RSA 115 | 118 | #define FIPS_F_EVP_DIGESTINIT_EX 125 |
99 | #define FIPS_F_FIPS_DSA_CHECK 102 | 119 | #define FIPS_F_FIPS_CHECK_DSA 104 |
100 | #define FIPS_F_FIPS_MODE_SET 105 | 120 | #define FIPS_F_FIPS_CHECK_INCORE_FINGERPRINT 105 |
101 | #define FIPS_F_FIPS_SELFTEST_AES 104 | 121 | #define FIPS_F_FIPS_CHECK_RSA 106 |
102 | #define FIPS_F_FIPS_SELFTEST_DES 107 | 122 | #define FIPS_F_FIPS_DSA_CHECK 107 |
103 | #define FIPS_F_FIPS_SELFTEST_DSA 109 | 123 | #define FIPS_F_FIPS_MODE_SET 108 |
104 | #define FIPS_F_FIPS_SELFTEST_RSA 108 | 124 | #define FIPS_F_FIPS_PKEY_SIGNATURE_TEST 109 |
105 | #define FIPS_F_FIPS_SELFTEST_SHA1 103 | 125 | #define FIPS_F_FIPS_SELFTEST_AES 110 |
106 | #define FIPS_F_HASH_FINAL 100 | 126 | #define FIPS_F_FIPS_SELFTEST_DES 111 |
107 | #define FIPS_F_DH_GENERATE_PARAMETERS 117 | 127 | #define FIPS_F_FIPS_SELFTEST_DSA 112 |
108 | #define FIPS_F_RSA_EAY_PUBLIC_ENCRYPT 114 | 128 | #define FIPS_F_FIPS_SELFTEST_HMAC 113 |
109 | #define FIPS_F_RSA_GENERATE_KEY 113 | 129 | #define FIPS_F_FIPS_SELFTEST_RNG 114 |
110 | #define FIPS_F_SSLEAY_RAND_BYTES 101 | 130 | #define FIPS_F_FIPS_SELFTEST_SHA1 115 |
131 | #define FIPS_F_HASH_FINAL 123 | ||
132 | #define FIPS_F_RSA_BUILTIN_KEYGEN 116 | ||
133 | #define FIPS_F_RSA_EAY_PRIVATE_DECRYPT 117 | ||
134 | #define FIPS_F_RSA_EAY_PRIVATE_ENCRYPT 118 | ||
135 | #define FIPS_F_RSA_EAY_PUBLIC_DECRYPT 119 | ||
136 | #define FIPS_F_RSA_EAY_PUBLIC_ENCRYPT 120 | ||
137 | #define FIPS_F_RSA_X931_GENERATE_KEY_EX 121 | ||
138 | #define FIPS_F_SSLEAY_RAND_BYTES 122 | ||
111 | 139 | ||
112 | /* Reason codes. */ | 140 | /* Reason codes. */ |
113 | #define FIPS_R_CANNOT_READ_EXE 103 | 141 | #define FIPS_R_CANNOT_READ_EXE 103 |
114 | #define FIPS_R_CANNOT_READ_EXE_DIGEST 104 | 142 | #define FIPS_R_CANNOT_READ_EXE_DIGEST 104 |
143 | #define FIPS_R_CONTRADICTING_EVIDENCE 114 | ||
115 | #define FIPS_R_EXE_DIGEST_DOES_NOT_MATCH 105 | 144 | #define FIPS_R_EXE_DIGEST_DOES_NOT_MATCH 105 |
145 | #define FIPS_R_FINGERPRINT_DOES_NOT_MATCH 110 | ||
146 | #define FIPS_R_FINGERPRINT_DOES_NOT_MATCH_NONPIC_RELOCATED 111 | ||
147 | #define FIPS_R_FINGERPRINT_DOES_NOT_MATCH_SEGMENT_ALIASING 112 | ||
116 | #define FIPS_R_FIPS_MODE_ALREADY_SET 102 | 148 | #define FIPS_R_FIPS_MODE_ALREADY_SET 102 |
117 | #define FIPS_R_FIPS_SELFTEST_FAILED 106 | 149 | #define FIPS_R_FIPS_SELFTEST_FAILED 106 |
150 | #define FIPS_R_INVALID_KEY_LENGTH 109 | ||
151 | #define FIPS_R_KEY_TOO_SHORT 108 | ||
118 | #define FIPS_R_NON_FIPS_METHOD 100 | 152 | #define FIPS_R_NON_FIPS_METHOD 100 |
119 | #define FIPS_R_PAIRWISE_TEST_FAILED 107 | 153 | #define FIPS_R_PAIRWISE_TEST_FAILED 107 |
154 | #define FIPS_R_RSA_DECRYPT_ERROR 115 | ||
155 | #define FIPS_R_RSA_ENCRYPT_ERROR 116 | ||
120 | #define FIPS_R_SELFTEST_FAILED 101 | 156 | #define FIPS_R_SELFTEST_FAILED 101 |
157 | #define FIPS_R_TEST_FAILURE 117 | ||
158 | #define FIPS_R_UNSUPPORTED_PLATFORM 113 | ||
121 | 159 | ||
122 | #ifdef __cplusplus | 160 | #ifdef __cplusplus |
123 | } | 161 | } |
diff --git a/src/lib/libssl/src/fips/fips_canister.c b/src/lib/libssl/src/fips/fips_canister.c new file mode 100644 index 0000000000..64580694c4 --- /dev/null +++ b/src/lib/libssl/src/fips/fips_canister.c | |||
@@ -0,0 +1,186 @@ | |||
1 | /* ==================================================================== | ||
2 | * Copyright (c) 2005 The OpenSSL Project. Rights for redistribution | ||
3 | * and usage in source and binary forms are granted according to the | ||
4 | * OpenSSL license. | ||
5 | */ | ||
6 | |||
7 | #include <stdio.h> | ||
8 | #if defined(__DECC) | ||
9 | # include <c_asm.h> | ||
10 | # pragma __nostandard | ||
11 | #endif | ||
12 | |||
13 | #include "e_os.h" | ||
14 | |||
15 | #if !defined(POINTER_TO_FUNCTION_IS_POINTER_TO_1ST_INSTRUCTION) | ||
16 | # if (defined(__sun) && (defined(__sparc) || defined(__sparcv9))) || \ | ||
17 | (defined(__sgi) && (defined(__mips) || defined(mips))) || \ | ||
18 | (defined(__osf__) && defined(__alpha)) || \ | ||
19 | (defined(__linux) && (defined(__arm) || defined(__arm__))) || \ | ||
20 | (defined(__i386) || defined(__i386__)) || \ | ||
21 | (defined(__x86_64) || defined(__x86_64__)) || \ | ||
22 | (defined(vax) || defined(__vax__)) | ||
23 | # define POINTER_TO_FUNCTION_IS_POINTER_TO_1ST_INSTRUCTION | ||
24 | # endif | ||
25 | #endif | ||
26 | |||
27 | #if defined(__xlC__) && __xlC__>=0x600 && (defined(_POWER) || defined(_ARCH_PPC)) | ||
28 | static void *instruction_pointer_xlc(void); | ||
29 | # pragma mc_func instruction_pointer_xlc {\ | ||
30 | "7c0802a6" /* mflr r0 */ \ | ||
31 | "48000005" /* bl $+4 */ \ | ||
32 | "7c6802a6" /* mflr r3 */ \ | ||
33 | "7c0803a6" /* mtlr r0 */ } | ||
34 | # pragma reg_killed_by instruction_pointer_xlc gr0 gr3 | ||
35 | # define INSTRUCTION_POINTER_IMPLEMENTED(ret) (ret=instruction_pointer_xlc()); | ||
36 | #endif | ||
37 | |||
38 | #ifdef FIPS_START | ||
39 | #define FIPS_ref_point FIPS_text_start | ||
40 | /* Some compilers put string literals into a separate segment. As we | ||
41 | * are mostly interested to hash AES tables in .rodata, we declare | ||
42 | * reference points accordingly. In case you wonder, the values are | ||
43 | * big-endian encoded variable names, just to prevent these arrays | ||
44 | * from being merged by linker. */ | ||
45 | const unsigned int FIPS_rodata_start[]= | ||
46 | { 0x46495053, 0x5f726f64, 0x6174615f, 0x73746172 }; | ||
47 | #else | ||
48 | #define FIPS_ref_point FIPS_text_end | ||
49 | const unsigned int FIPS_rodata_end[]= | ||
50 | { 0x46495053, 0x5f726f64, 0x6174615f, 0x656e645b }; | ||
51 | #endif | ||
52 | |||
53 | /* | ||
54 | * I declare reference function as static in order to avoid certain | ||
55 | * pitfalls in -dynamic linker behaviour... | ||
56 | */ | ||
57 | static void *instruction_pointer(void) | ||
58 | { void *ret=NULL; | ||
59 | /* These are ABI-neutral CPU-specific snippets. ABI-neutrality means | ||
60 | * that they are designed to work under any OS running on particular | ||
61 | * CPU, which is why you don't find any #ifdef THIS_OR_THAT_OS in | ||
62 | * this function. */ | ||
63 | #if defined(INSTRUCTION_POINTER_IMPLEMENTED) | ||
64 | INSTRUCTION_POINTER_IMPLEMENTED(ret); | ||
65 | #elif defined(__GNUC__) && __GNUC__>=2 | ||
66 | # if defined(__alpha) || defined(__alpha__) | ||
67 | # define INSTRUCTION_POINTER_IMPLEMENTED | ||
68 | __asm __volatile ( "br %0,1f\n1:" : "=r"(ret) ); | ||
69 | # elif defined(__i386) || defined(__i386__) | ||
70 | # define INSTRUCTION_POINTER_IMPLEMENTED | ||
71 | __asm __volatile ( "call 1f\n1: popl %0" : "=r"(ret) ); | ||
72 | ret = (void *)((size_t)ret&~3UL); /* align for better performance */ | ||
73 | # elif defined(__ia64) || defined(__ia64__) | ||
74 | # define INSTRUCTION_POINTER_IMPLEMENTED | ||
75 | __asm __volatile ( "mov %0=ip" : "=r"(ret) ); | ||
76 | # elif defined(__hppa) || defined(__hppa__) || defined(__pa_risc) | ||
77 | # define INSTRUCTION_POINTER_IMPLEMENTED | ||
78 | __asm __volatile ( "blr %%r0,%0\n\tnop" : "=r"(ret) ); | ||
79 | ret = (void *)((size_t)ret&~3UL); /* mask privilege level */ | ||
80 | # elif defined(__mips) || defined(__mips__) | ||
81 | # define INSTRUCTION_POINTER_IMPLEMENTED | ||
82 | void *scratch; | ||
83 | __asm __volatile ( "move %1,$31\n\t" /* save ra */ | ||
84 | "bal .+8; nop\n\t" | ||
85 | "move %0,$31\n\t" | ||
86 | "move $31,%1" /* restore ra */ | ||
87 | : "=r"(ret),"=r"(scratch) ); | ||
88 | # elif defined(__ppc__) || defined(__powerpc) || defined(__powerpc__) || \ | ||
89 | defined(__POWERPC__) || defined(_POWER) || defined(__PPC__) || \ | ||
90 | defined(__PPC64__) || defined(__powerpc64__) | ||
91 | # define INSTRUCTION_POINTER_IMPLEMENTED | ||
92 | void *scratch; | ||
93 | __asm __volatile ( "mfspr %1,8\n\t" /* save lr */ | ||
94 | "bl $+4\n\t" | ||
95 | "mfspr %0,8\n\t" /* mflr ret */ | ||
96 | "mtspr 8,%1" /* restore lr */ | ||
97 | : "=r"(ret),"=r"(scratch) ); | ||
98 | # elif defined(__s390__) || defined(__s390x__) | ||
99 | # define INSTRUCTION_POINTER_IMPLEMENTED | ||
100 | __asm __volatile ( "bras %0,1f\n1:" : "=r"(ret) ); | ||
101 | ret = (void *)((size_t)ret&~3UL); | ||
102 | # elif defined(__sparc) || defined(__sparc__) || defined(__sparcv9) | ||
103 | # define INSTRUCTION_POINTER_IMPLEMENTED | ||
104 | void *scratch; | ||
105 | __asm __volatile ( "mov %%o7,%1\n\t" | ||
106 | "call .+8; nop\n\t" | ||
107 | "mov %%o7,%0\n\t" | ||
108 | "mov %1,%%o7" | ||
109 | : "=r"(ret),"=r"(scratch) ); | ||
110 | # elif defined(__x86_64) || defined(__x86_64__) | ||
111 | # define INSTRUCTION_POINTER_IMPLEMENTED | ||
112 | __asm __volatile ( "leaq 0(%%rip),%0" : "=r"(ret) ); | ||
113 | ret = (void *)((size_t)ret&~3UL); /* align for better performance */ | ||
114 | # endif | ||
115 | #elif defined(__DECC) && defined(__alpha) | ||
116 | # define INSTRUCTION_POINTER_IMPLEMENTED | ||
117 | ret = (void *)(size_t)asm("br %v0,1f\n1:"); | ||
118 | #elif defined(_MSC_VER) && defined(_M_IX86) | ||
119 | # define INSTRUCTION_POINTER_IMPLEMENTED | ||
120 | void *scratch; | ||
121 | _asm { | ||
122 | call self | ||
123 | self: pop eax | ||
124 | mov scratch,eax | ||
125 | } | ||
126 | ret = (void *)((size_t)scratch&~3UL); | ||
127 | #endif | ||
128 | return ret; | ||
129 | } | ||
130 | |||
131 | /* | ||
132 | * This function returns pointer to an instruction in the vicinity of | ||
133 | * its entry point, but not outside this object module. This guarantees | ||
134 | * that sequestered code is covered... | ||
135 | */ | ||
136 | void *FIPS_ref_point() | ||
137 | { | ||
138 | #if defined(INSTRUCTION_POINTER_IMPLEMENTED) | ||
139 | return instruction_pointer(); | ||
140 | /* Below we essentially cover vendor compilers which do not support | ||
141 | * inline assembler... */ | ||
142 | #elif defined(_AIX) | ||
143 | struct { void *ip,*gp,*env; } *p = (void *)instruction_pointer; | ||
144 | return p->ip; | ||
145 | #elif defined(_HPUX_SOURCE) | ||
146 | # if defined(__hppa) || defined(__hppa__) | ||
147 | struct { void *i[4]; } *p = (void *)FIPS_ref_point; | ||
148 | |||
149 | if (sizeof(p) == 8) /* 64-bit */ | ||
150 | return p->i[2]; | ||
151 | else if ((size_t)p & 2) | ||
152 | { p = (void *)((size_t)p&~3UL); | ||
153 | return p->i[0]; | ||
154 | } | ||
155 | else | ||
156 | return (void *)p; | ||
157 | # elif defined(__ia64) || defined(__ia64__) | ||
158 | struct { unsigned long long ip,gp; } *p=(void *)instruction_pointer; | ||
159 | return (void *)(size_t)p->ip; | ||
160 | # endif | ||
161 | #elif (defined(__VMS) || defined(VMS)) && !(defined(vax) || defined(__vax__)) | ||
162 | /* applies to both alpha and ia64 */ | ||
163 | struct { unsigned __int64 opaque,ip; } *p=(void *)instruction_pointer; | ||
164 | return (void *)(size_t)p->ip; | ||
165 | #elif defined(__VOS__) | ||
166 | /* applies to both pa-risc and ia32 */ | ||
167 | struct { void *dp,*ip,*gp; } *p = (void *)instruction_pointer; | ||
168 | return p->ip; | ||
169 | #elif defined(_WIN32) | ||
170 | # if defined(_WIN64) && defined(_M_IA64) | ||
171 | struct { void *ip,*gp; } *p = (void *)FIPS_ref_point; | ||
172 | return p->ip; | ||
173 | # else | ||
174 | return (void *)FIPS_ref_point; | ||
175 | # endif | ||
176 | /* | ||
177 | * In case you wonder why there is no #ifdef __linux. All Linux targets | ||
178 | * are GCC-based and therefore are covered by instruction_pointer above | ||
179 | * [well, some are covered by by the one below]... | ||
180 | */ | ||
181 | #elif defined(POINTER_TO_FUNCTION_IS_POINTER_TO_1ST_INSTRUCTION) | ||
182 | return (void *)instruction_pointer; | ||
183 | #else | ||
184 | return NULL; | ||
185 | #endif | ||
186 | } | ||
diff --git a/src/lib/libssl/src/fips/fips_locl.h b/src/lib/libssl/src/fips/fips_locl.h index 215e382549..03fed36e3c 100644 --- a/src/lib/libssl/src/fips/fips_locl.h +++ b/src/lib/libssl/src/fips/fips_locl.h | |||
@@ -53,13 +53,19 @@ | |||
53 | extern "C" { | 53 | extern "C" { |
54 | #endif | 54 | #endif |
55 | 55 | ||
56 | /* These are really defined in crypto/cryptlib.c */ | 56 | void fips_w_lock(void); |
57 | void fips_set_started(void); | 57 | void fips_w_unlock(void); |
58 | void fips_r_lock(void); | ||
59 | void fips_r_unlock(void); | ||
58 | int fips_is_started(void); | 60 | int fips_is_started(void); |
61 | void fips_set_started(void); | ||
59 | int fips_is_owning_thread(void); | 62 | int fips_is_owning_thread(void); |
60 | int fips_set_owning_thread(void); | 63 | int fips_set_owning_thread(void); |
64 | void fips_set_selftest_fail(void); | ||
61 | int fips_clear_owning_thread(void); | 65 | int fips_clear_owning_thread(void); |
62 | void fips_set_rand_check(void *rand_check); | 66 | unsigned char *fips_signature_witness(void); |
67 | |||
68 | #define FIPS_MAX_CIPHER_TEST_SIZE 16 | ||
63 | 69 | ||
64 | #ifdef __cplusplus | 70 | #ifdef __cplusplus |
65 | } | 71 | } |
diff --git a/src/lib/libssl/src/fips/fips_premain.c b/src/lib/libssl/src/fips/fips_premain.c new file mode 100644 index 0000000000..165d2c5dc9 --- /dev/null +++ b/src/lib/libssl/src/fips/fips_premain.c | |||
@@ -0,0 +1,176 @@ | |||
1 | /* ==================================================================== | ||
2 | * Copyright (c) 2005 The OpenSSL Project. Rights for redistribution | ||
3 | * and usage in source and binary forms are granted according to the | ||
4 | * OpenSSL license. | ||
5 | */ | ||
6 | |||
7 | #include <stdio.h> | ||
8 | #include <stdlib.h> | ||
9 | #include <string.h> | ||
10 | #if defined(__unix) || defined(__unix__) | ||
11 | #include <unistd.h> | ||
12 | #endif | ||
13 | |||
14 | #ifndef FINGERPRINT_PREMAIN_DSO_LOAD | ||
15 | |||
16 | #if defined(__GNUC__) && __GNUC__>=2 | ||
17 | void FINGERPRINT_premain(void) __attribute__((constructor)); | ||
18 | /* Most commonly this results in pointer to premain to be dropped | ||
19 | * to .ctors segment, which is traversed by GCC crtbegin.o upon | ||
20 | * program startup. Except on a.out OpenBSD where it results in | ||
21 | * _GLOBAL_$I$premain() {premain();} being auto-generated by | ||
22 | * compiler... But one way or another this is believed to cover | ||
23 | * *all* GCC targets. */ | ||
24 | #elif defined(_MSC_VER) | ||
25 | # ifdef _WINDLL | ||
26 | __declspec(dllexport) /* this is essentially cosmetics... */ | ||
27 | # endif | ||
28 | void FINGERPRINT_premain(void); | ||
29 | static int premain_wrapper(void) { FINGERPRINT_premain(); return 0; } | ||
30 | # ifdef _WIN64 | ||
31 | # pragma section(".CRT$XCU",read) | ||
32 | __declspec(allocate(".CRT$XCU")) | ||
33 | # else | ||
34 | # pragma data_seg(".CRT$XCU") | ||
35 | # endif | ||
36 | static int (*p)(void) = premain_wrapper; | ||
37 | /* This results in pointer to premain to appear in .CRT segment, | ||
38 | * which is traversed by Visual C run-time initialization code. | ||
39 | * This applies to both Win32 and [all flavors of] Win64. */ | ||
40 | # pragma data_seg() | ||
41 | #elif defined(__SUNPRO_C) | ||
42 | void FINGERPRINT_premain(void); | ||
43 | # pragma init(FINGERPRINT_premain) | ||
44 | /* This results in a call to premain to appear in .init segment. */ | ||
45 | #elif defined(__DECC) && (defined(__VMS) || defined(VMS)) | ||
46 | void FINGERPRINT_premain(void); | ||
47 | # pragma __nostandard | ||
48 | globaldef { "LIB$INITIALIZ" } readonly _align (LONGWORD) | ||
49 | int spare[8] = {0}; | ||
50 | globaldef { "LIB$INITIALIZE" } readonly _align (LONGWORD) | ||
51 | void (*x_FINGERPRINT_premain)(void) = FINGERPRINT_premain; | ||
52 | /* Refer to LIB$INITIALIZE to ensure it exists in the image. */ | ||
53 | int lib$initialize(); | ||
54 | globaldef int (*lib_init_ref)() = lib$initialize; | ||
55 | # pragma __standard | ||
56 | #elif 0 | ||
57 | The rest has to be taken care of through command line: | ||
58 | |||
59 | -Wl,-init,FINGERPRINT_premain on OSF1 and IRIX | ||
60 | -Wl,+init,FINGERPRINT_premain on HP-UX | ||
61 | -Wl,-binitfini:FINGERPRINT_premain on AIX | ||
62 | |||
63 | On ELF platforms this results in a call to premain to appear in | ||
64 | .init segment... | ||
65 | #endif | ||
66 | |||
67 | #ifndef HMAC_SHA1_SIG | ||
68 | #define HMAC_SHA1_SIG "?have to make sure this string is unique" | ||
69 | #endif | ||
70 | |||
71 | static const unsigned char FINGERPRINT_ascii_value[40] = HMAC_SHA1_SIG; | ||
72 | |||
73 | #define atox(c) ((c)>='a'?((c)-'a'+10):((c)>='A'?(c)-'A'+10:(c)-'0')) | ||
74 | |||
75 | extern const void *FIPS_text_start(), *FIPS_text_end(); | ||
76 | extern const unsigned char FIPS_rodata_start[], FIPS_rodata_end[]; | ||
77 | extern unsigned char FIPS_signature[20]; | ||
78 | extern unsigned int FIPS_incore_fingerprint(unsigned char *,unsigned int); | ||
79 | |||
80 | /* | ||
81 | * As name suggests this code is executed prior main(). We use this | ||
82 | * opportunity to fingerprint sequestered code in virtual address | ||
83 | * space of target application. | ||
84 | */ | ||
85 | void FINGERPRINT_premain(void) | ||
86 | { unsigned char sig[sizeof(FIPS_signature)]; | ||
87 | const unsigned char * volatile p=FINGERPRINT_ascii_value; | ||
88 | unsigned int len=sizeof(sig),i; | ||
89 | |||
90 | /* "volatilization" is done to disengage unwanted optimization... */ | ||
91 | if (*((volatile unsigned char *)p)=='?') | ||
92 | { if (FIPS_text_start()==NULL) | ||
93 | { fprintf(stderr,"FIPS_text_start() returns NULL\n"); | ||
94 | _exit(1); | ||
95 | } | ||
96 | #if defined(DEBUG_FINGERPRINT_PREMAIN) | ||
97 | fprintf(stderr,".text:%p+%d=%p\n",FIPS_text_start(), | ||
98 | (int)((size_t)FIPS_text_end()-(size_t)FIPS_text_start()), | ||
99 | FIPS_text_end()); | ||
100 | fprintf(stderr,".rodata:%p+%d=%p\n",FIPS_rodata_start, | ||
101 | (int)((size_t)FIPS_rodata_end-(size_t)FIPS_rodata_start), | ||
102 | FIPS_rodata_end); | ||
103 | #endif | ||
104 | |||
105 | len=FIPS_incore_fingerprint(sig,sizeof(sig)); | ||
106 | |||
107 | if (len!=sizeof(sig)) | ||
108 | { fprintf(stderr,"fingerprint length mismatch: %u\n",len); | ||
109 | _exit(1); | ||
110 | } | ||
111 | |||
112 | for (i=0;i<len;i++) printf("%02x",sig[i]); | ||
113 | printf("\n"); | ||
114 | fflush(stdout); | ||
115 | _exit(0); | ||
116 | } | ||
117 | else if (FIPS_signature[0]=='\0') do | ||
118 | { for (i=0;i<sizeof(FIPS_signature);i++,p+=2) | ||
119 | FIPS_signature[i] = (atox(p[0])<<4)|atox(p[1]); | ||
120 | |||
121 | #if defined(DEBUG_FINGERPRINT_PREMAIN) | ||
122 | if (getenv("OPENSSL_FIPS")==NULL) break; | ||
123 | |||
124 | len=FIPS_incore_fingerprint(sig,sizeof(sig)); | ||
125 | |||
126 | if (memcmp(FIPS_signature,sig,sizeof(FIPS_signature))) | ||
127 | { fprintf(stderr,"FINGERPRINT_premain: FIPS_signature mismatch\n"); | ||
128 | _exit(1); | ||
129 | } | ||
130 | #endif | ||
131 | } while(0); | ||
132 | } | ||
133 | |||
134 | #else | ||
135 | |||
136 | #include <openssl/bio.h> | ||
137 | #include <openssl/dso.h> | ||
138 | #include <openssl/err.h> | ||
139 | |||
140 | int main(int argc,char *argv[]) | ||
141 | { DSO *dso; | ||
142 | DSO_FUNC_TYPE func; | ||
143 | BIO *bio_err; | ||
144 | |||
145 | if (argc < 2) | ||
146 | { fprintf (stderr,"usage: %s libcrypto.dso\n",argv[0]); | ||
147 | return 1; | ||
148 | } | ||
149 | |||
150 | if ((bio_err=BIO_new(BIO_s_file())) == NULL) | ||
151 | { fprintf (stderr,"unable to allocate BIO\n"); | ||
152 | return 1; | ||
153 | } | ||
154 | BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT); | ||
155 | ERR_load_crypto_strings(); | ||
156 | |||
157 | dso = DSO_load(NULL,argv[1],NULL,DSO_FLAG_NO_NAME_TRANSLATION); | ||
158 | if (dso == NULL) | ||
159 | { ERR_print_errors(bio_err); | ||
160 | return 1; | ||
161 | } | ||
162 | |||
163 | /* This is not normally reached, because FINGERPRINT_premain should | ||
164 | * have executed and terminated application already upon DSO_load... */ | ||
165 | func = DSO_bind_func(dso,"FINGERPRINT_premain"); | ||
166 | if (func == NULL) | ||
167 | { ERR_print_errors(bio_err); | ||
168 | return 1; | ||
169 | } | ||
170 | |||
171 | (*func)(); | ||
172 | |||
173 | return 0; | ||
174 | } | ||
175 | |||
176 | #endif | ||
diff --git a/src/lib/libssl/src/fips/fips_premain.c.sha1 b/src/lib/libssl/src/fips/fips_premain.c.sha1 new file mode 100644 index 0000000000..c16f964bb8 --- /dev/null +++ b/src/lib/libssl/src/fips/fips_premain.c.sha1 | |||
@@ -0,0 +1 @@ | |||
HMAC-SHA1(fips_premain.c)= 9e5ddba185ac446e0cf36fcf8e1b3acffe5d0b2c | |||
diff --git a/src/lib/libssl/src/fips/fips_test_suite.c b/src/lib/libssl/src/fips/fips_test_suite.c index 60ee8d856b..78a15b7758 100644 --- a/src/lib/libssl/src/fips/fips_test_suite.c +++ b/src/lib/libssl/src/fips/fips_test_suite.c | |||
@@ -20,12 +20,15 @@ | |||
20 | #include <openssl/des.h> | 20 | #include <openssl/des.h> |
21 | #include <openssl/rsa.h> | 21 | #include <openssl/rsa.h> |
22 | #include <openssl/dsa.h> | 22 | #include <openssl/dsa.h> |
23 | #include <openssl/sha.h> | 23 | #include <openssl/dh.h> |
24 | #include <openssl/md5.h> | 24 | #include <openssl/hmac.h> |
25 | #include <openssl/err.h> | 25 | #include <openssl/err.h> |
26 | #include <openssl/fips.h> | 26 | |
27 | #include <openssl/bn.h> | 27 | #include <openssl/bn.h> |
28 | #include <openssl/rand.h> | 28 | #include <openssl/rand.h> |
29 | #include <openssl/sha.h> | ||
30 | |||
31 | |||
29 | #ifndef OPENSSL_FIPS | 32 | #ifndef OPENSSL_FIPS |
30 | int main(int argc, char *argv[]) | 33 | int main(int argc, char *argv[]) |
31 | { | 34 | { |
@@ -34,150 +37,338 @@ int main(int argc, char *argv[]) | |||
34 | } | 37 | } |
35 | #else | 38 | #else |
36 | 39 | ||
40 | #include <openssl/fips.h> | ||
41 | #include "fips_utl.h" | ||
42 | |||
37 | /* AES: encrypt and decrypt known plaintext, verify result matches original plaintext | 43 | /* AES: encrypt and decrypt known plaintext, verify result matches original plaintext |
38 | */ | 44 | */ |
39 | static int FIPS_aes_test() | 45 | static int FIPS_aes_test(void) |
46 | { | ||
47 | int ret = 0; | ||
48 | unsigned char pltmp[16]; | ||
49 | unsigned char citmp[16]; | ||
50 | unsigned char key[16] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; | ||
51 | unsigned char plaintext[16] = "etaonrishdlcu"; | ||
52 | EVP_CIPHER_CTX ctx; | ||
53 | EVP_CIPHER_CTX_init(&ctx); | ||
54 | if (EVP_CipherInit_ex(&ctx, EVP_aes_128_ecb(),NULL, key, NULL, 1) <= 0) | ||
55 | goto err; | ||
56 | EVP_Cipher(&ctx, citmp, plaintext, 16); | ||
57 | if (EVP_CipherInit_ex(&ctx, EVP_aes_128_ecb(),NULL, key, NULL, 0) <= 0) | ||
58 | goto err; | ||
59 | EVP_Cipher(&ctx, pltmp, citmp, 16); | ||
60 | if (memcmp(pltmp, plaintext, 16)) | ||
61 | goto err; | ||
62 | ret = 1; | ||
63 | err: | ||
64 | EVP_CIPHER_CTX_cleanup(&ctx); | ||
65 | return ret; | ||
66 | } | ||
67 | |||
68 | static int FIPS_des3_test(void) | ||
69 | { | ||
70 | int ret = 0; | ||
71 | unsigned char pltmp[8]; | ||
72 | unsigned char citmp[8]; | ||
73 | unsigned char key[] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18, | ||
74 | 19,20,21,22,23,24}; | ||
75 | unsigned char plaintext[] = { 'e', 't', 'a', 'o', 'n', 'r', 'i', 's' }; | ||
76 | EVP_CIPHER_CTX ctx; | ||
77 | EVP_CIPHER_CTX_init(&ctx); | ||
78 | if (EVP_CipherInit_ex(&ctx, EVP_des_ede3_ecb(),NULL, key, NULL, 1) <= 0) | ||
79 | goto err; | ||
80 | EVP_Cipher(&ctx, citmp, plaintext, 8); | ||
81 | if (EVP_CipherInit_ex(&ctx, EVP_des_ede3_ecb(),NULL, key, NULL, 0) <= 0) | ||
82 | goto err; | ||
83 | EVP_Cipher(&ctx, pltmp, citmp, 8); | ||
84 | if (memcmp(pltmp, plaintext, 8)) | ||
85 | goto err; | ||
86 | ret = 1; | ||
87 | err: | ||
88 | EVP_CIPHER_CTX_cleanup(&ctx); | ||
89 | return ret; | ||
90 | } | ||
91 | |||
92 | /* | ||
93 | * DSA: generate keys and sign, verify input plaintext. | ||
94 | */ | ||
95 | static int FIPS_dsa_test(int bad) | ||
40 | { | 96 | { |
41 | unsigned char userkey[16] = { 0xde, 0xad, 0xbe, 0xef, 0xfe, 0xed, 0xf0, 0x0d }; | 97 | DSA *dsa = NULL; |
42 | unsigned char plaintext[16] = "etaonrishdlcu"; | 98 | EVP_PKEY pk; |
43 | unsigned char ciphertext[16]; | 99 | unsigned char dgst[] = "etaonrishdlc"; |
44 | unsigned char buf[16]; | 100 | unsigned char buf[60]; |
45 | AES_KEY key; | 101 | unsigned int slen; |
46 | AES_KEY dkey; | 102 | int r = 0; |
103 | EVP_MD_CTX mctx; | ||
47 | 104 | ||
48 | ERR_clear_error(); | 105 | ERR_clear_error(); |
49 | if (AES_set_encrypt_key( userkey, 128, &key )) | 106 | EVP_MD_CTX_init(&mctx); |
107 | dsa = FIPS_dsa_new(); | ||
108 | if (!dsa) | ||
109 | goto end; | ||
110 | if (!DSA_generate_parameters_ex(dsa, 1024,NULL,0,NULL,NULL,NULL)) | ||
111 | goto end; | ||
112 | if (!DSA_generate_key(dsa)) | ||
113 | goto end; | ||
114 | if (bad) | ||
115 | BN_add_word(dsa->pub_key, 1); | ||
116 | |||
117 | pk.type = EVP_PKEY_DSA; | ||
118 | pk.pkey.dsa = dsa; | ||
119 | |||
120 | if (!EVP_SignInit_ex(&mctx, EVP_dss1(), NULL)) | ||
121 | goto end; | ||
122 | if (!EVP_SignUpdate(&mctx, dgst, sizeof(dgst) - 1)) | ||
123 | goto end; | ||
124 | if (!EVP_SignFinal(&mctx, buf, &slen, &pk)) | ||
125 | goto end; | ||
126 | |||
127 | if (!EVP_VerifyInit_ex(&mctx, EVP_dss1(), NULL)) | ||
128 | goto end; | ||
129 | if (!EVP_VerifyUpdate(&mctx, dgst, sizeof(dgst) - 1)) | ||
130 | goto end; | ||
131 | r = EVP_VerifyFinal(&mctx, buf, slen, &pk); | ||
132 | end: | ||
133 | EVP_MD_CTX_cleanup(&mctx); | ||
134 | if (dsa) | ||
135 | FIPS_dsa_free(dsa); | ||
136 | if (r != 1) | ||
137 | return 0; | ||
138 | return 1; | ||
139 | } | ||
140 | |||
141 | /* | ||
142 | * RSA: generate keys and sign, verify input plaintext. | ||
143 | */ | ||
144 | static int FIPS_rsa_test(int bad) | ||
145 | { | ||
146 | RSA *key; | ||
147 | unsigned char input_ptext[] = "etaonrishdlc"; | ||
148 | unsigned char buf[256]; | ||
149 | unsigned int slen; | ||
150 | BIGNUM *bn; | ||
151 | EVP_MD_CTX mctx; | ||
152 | EVP_PKEY pk; | ||
153 | int r = 0; | ||
154 | |||
155 | ERR_clear_error(); | ||
156 | EVP_MD_CTX_init(&mctx); | ||
157 | key = FIPS_rsa_new(); | ||
158 | bn = BN_new(); | ||
159 | if (!key || !bn) | ||
50 | return 0; | 160 | return 0; |
51 | AES_encrypt( plaintext, ciphertext, &key); | 161 | BN_set_word(bn, 65537); |
52 | if (AES_set_decrypt_key( userkey, 128, &dkey )) | 162 | if (!RSA_generate_key_ex(key, 1024,bn,NULL)) |
163 | return 0; | ||
164 | BN_free(bn); | ||
165 | if (bad) | ||
166 | BN_add_word(key->n, 1); | ||
167 | |||
168 | pk.type = EVP_PKEY_RSA; | ||
169 | pk.pkey.rsa = key; | ||
170 | |||
171 | if (!EVP_SignInit_ex(&mctx, EVP_sha1(), NULL)) | ||
172 | goto end; | ||
173 | if (!EVP_SignUpdate(&mctx, input_ptext, sizeof(input_ptext) - 1)) | ||
174 | goto end; | ||
175 | if (!EVP_SignFinal(&mctx, buf, &slen, &pk)) | ||
176 | goto end; | ||
177 | |||
178 | if (!EVP_VerifyInit_ex(&mctx, EVP_sha1(), NULL)) | ||
179 | goto end; | ||
180 | if (!EVP_VerifyUpdate(&mctx, input_ptext, sizeof(input_ptext) - 1)) | ||
181 | goto end; | ||
182 | r = EVP_VerifyFinal(&mctx, buf, slen, &pk); | ||
183 | end: | ||
184 | EVP_MD_CTX_cleanup(&mctx); | ||
185 | if (key) | ||
186 | FIPS_rsa_free(key); | ||
187 | if (r != 1) | ||
188 | return 0; | ||
189 | return 1; | ||
190 | } | ||
191 | |||
192 | /* SHA1: generate hash of known digest value and compare to known | ||
193 | precomputed correct hash | ||
194 | */ | ||
195 | static int FIPS_sha1_test() | ||
196 | { | ||
197 | unsigned char digest[SHA_DIGEST_LENGTH] = | ||
198 | { 0x11, 0xf1, 0x9a, 0x3a, 0xec, 0x1a, 0x1e, 0x8e, 0x65, 0xd4, 0x9a, 0x38, 0x0c, 0x8b, 0x1e, 0x2c, 0xe8, 0xb3, 0xc5, 0x18 }; | ||
199 | unsigned char str[] = "etaonrishd"; | ||
200 | |||
201 | unsigned char md[SHA_DIGEST_LENGTH]; | ||
202 | |||
203 | ERR_clear_error(); | ||
204 | if (!EVP_Digest(str,sizeof(str) - 1,md, NULL, EVP_sha1(), NULL)) return 0; | ||
205 | if (memcmp(md,digest,sizeof(md))) | ||
53 | return 0; | 206 | return 0; |
54 | AES_decrypt( ciphertext, buf, &dkey); | 207 | return 1; |
55 | if (memcmp(buf, plaintext, sizeof(buf))) | 208 | } |
209 | |||
210 | /* SHA256: generate hash of known digest value and compare to known | ||
211 | precomputed correct hash | ||
212 | */ | ||
213 | static int FIPS_sha256_test() | ||
214 | { | ||
215 | unsigned char digest[SHA256_DIGEST_LENGTH] = | ||
216 | {0xf5, 0x53, 0xcd, 0xb8, 0xcf, 0x1, 0xee, 0x17, 0x9b, 0x93, 0xc9, 0x68, 0xc0, 0xea, 0x40, 0x91, | ||
217 | 0x6, 0xec, 0x8e, 0x11, 0x96, 0xc8, 0x5d, 0x1c, 0xaf, 0x64, 0x22, 0xe6, 0x50, 0x4f, 0x47, 0x57}; | ||
218 | unsigned char str[] = "etaonrishd"; | ||
219 | |||
220 | unsigned char md[SHA256_DIGEST_LENGTH]; | ||
221 | |||
222 | ERR_clear_error(); | ||
223 | if (!EVP_Digest(str,sizeof(str) - 1,md, NULL, EVP_sha256(), NULL)) return 0; | ||
224 | if (memcmp(md,digest,sizeof(md))) | ||
56 | return 0; | 225 | return 0; |
57 | return 1; | 226 | return 1; |
58 | } | 227 | } |
59 | 228 | ||
60 | /* DES: encrypt and decrypt known plaintext, verify result matches original plaintext | 229 | /* SHA512: generate hash of known digest value and compare to known |
230 | precomputed correct hash | ||
61 | */ | 231 | */ |
62 | static int FIPS_des_test() | 232 | static int FIPS_sha512_test() |
63 | { | 233 | { |
64 | DES_cblock userkey = { 0xde, 0xad, 0xbe, 0xef, 0xfe, 0xed, 0xf0, 0x0d }; | 234 | unsigned char digest[SHA512_DIGEST_LENGTH] = |
65 | DES_cblock plaintext = { 'e', 't', 'a', 'o', 'n', 'r', 'i', 's' }; | 235 | {0x99, 0xc9, 0xe9, 0x5b, 0x88, 0xd4, 0x78, 0x88, 0xdf, 0x88, 0x5f, 0x94, 0x71, 0x64, 0x28, 0xca, |
236 | 0x16, 0x1f, 0x3d, 0xf4, 0x1f, 0xf3, 0x0f, 0xc5, 0x03, 0x99, 0xb2, 0xd0, 0xe7, 0x0b, 0x94, 0x4a, | ||
237 | 0x45, 0xd2, 0x6c, 0x4f, 0x20, 0x06, 0xef, 0x71, 0xa9, 0x25, 0x7f, 0x24, 0xb1, 0xd9, 0x40, 0x22, | ||
238 | 0x49, 0x54, 0x10, 0xc2, 0x22, 0x9d, 0x27, 0xfe, 0xbd, 0xd6, 0xd6, 0xeb, 0x2d, 0x42, 0x1d, 0xa3}; | ||
239 | unsigned char str[] = "etaonrishd"; | ||
66 | 240 | ||
67 | DES_key_schedule key; | 241 | unsigned char md[SHA512_DIGEST_LENGTH]; |
68 | DES_cblock ciphertext; | ||
69 | DES_cblock buf; | ||
70 | 242 | ||
71 | ERR_clear_error(); | 243 | ERR_clear_error(); |
72 | if (DES_set_key(&userkey, &key) < 0) | 244 | if (!EVP_Digest(str,sizeof(str) - 1,md, NULL, EVP_sha512(), NULL)) return 0; |
245 | if (memcmp(md,digest,sizeof(md))) | ||
73 | return 0; | 246 | return 0; |
74 | DES_ecb_encrypt( &plaintext, &ciphertext, &key, 1); | 247 | return 1; |
75 | DES_ecb_encrypt( &ciphertext, &buf, &key, 0); | 248 | } |
76 | if (memcmp(buf, plaintext, sizeof(buf))) | 249 | |
250 | /* HMAC-SHA1: generate hash of known digest value and compare to known | ||
251 | precomputed correct hash | ||
252 | */ | ||
253 | static int FIPS_hmac_sha1_test() | ||
254 | { | ||
255 | unsigned char key[] = "etaonrishd"; | ||
256 | unsigned char iv[] = "Sample text"; | ||
257 | unsigned char kaval[EVP_MAX_MD_SIZE] = | ||
258 | {0x73, 0xf7, 0xa0, 0x48, 0xf8, 0x94, 0xed, 0xdd, 0x0a, 0xea, 0xea, 0x56, 0x1b, 0x61, 0x2e, 0x70, | ||
259 | 0xb2, 0xfb, 0xec, 0xc6}; | ||
260 | |||
261 | unsigned char out[EVP_MAX_MD_SIZE]; | ||
262 | unsigned int outlen; | ||
263 | |||
264 | ERR_clear_error(); | ||
265 | if (!HMAC(EVP_sha1(),key,sizeof(key)-1,iv,sizeof(iv)-1,out,&outlen)) return 0; | ||
266 | if (memcmp(out,kaval,outlen)) | ||
77 | return 0; | 267 | return 0; |
78 | return 1; | 268 | return 1; |
79 | } | 269 | } |
80 | 270 | ||
81 | /* DSA: generate key and sign a known digest, then verify the signature | 271 | /* HMAC-SHA224: generate hash of known digest value and compare to known |
82 | * against the digest | 272 | precomputed correct hash |
83 | */ | 273 | */ |
84 | static int FIPS_dsa_test() | 274 | static int FIPS_hmac_sha224_test() |
85 | { | 275 | { |
86 | DSA *dsa = NULL; | 276 | unsigned char key[] = "etaonrishd"; |
87 | unsigned char dgst[] = "etaonrishdlc"; | 277 | unsigned char iv[] = "Sample text"; |
88 | unsigned char sig[256]; | 278 | unsigned char kaval[EVP_MAX_MD_SIZE] = |
89 | unsigned int siglen; | 279 | {0x75, 0x58, 0xd5, 0xbd, 0x55, 0x6d, 0x87, 0x0f, 0x75, 0xff, 0xbe, 0x1c, 0xb2, 0xf0, 0x20, 0x35, |
280 | 0xe5, 0x62, 0x49, 0xb6, 0x94, 0xb9, 0xfc, 0x65, 0x34, 0x33, 0x3a, 0x19}; | ||
281 | |||
282 | unsigned char out[EVP_MAX_MD_SIZE]; | ||
283 | unsigned int outlen; | ||
90 | 284 | ||
91 | ERR_clear_error(); | 285 | ERR_clear_error(); |
92 | dsa = DSA_generate_parameters(512,NULL,0,NULL,NULL,NULL,NULL); | 286 | if (!HMAC(EVP_sha224(),key,sizeof(key)-1,iv,sizeof(iv)-1,out,&outlen)) return 0; |
93 | if (!dsa) | 287 | if (memcmp(out,kaval,outlen)) |
94 | return 0; | 288 | return 0; |
95 | if (!DSA_generate_key(dsa)) | ||
96 | return 0; | ||
97 | if ( DSA_sign(0,dgst,sizeof(dgst) - 1,sig,&siglen,dsa) != 1 ) | ||
98 | return 0; | ||
99 | if ( DSA_verify(0,dgst,sizeof(dgst) - 1,sig,siglen,dsa) != 1 ) | ||
100 | return 0; | ||
101 | DSA_free(dsa); | ||
102 | return 1; | 289 | return 1; |
103 | } | 290 | } |
104 | 291 | ||
105 | /* RSA: generate keys and encrypt and decrypt known plaintext, verify result | 292 | /* HMAC-SHA256: generate hash of known digest value and compare to known |
106 | * matches the original plaintext | 293 | precomputed correct hash |
107 | */ | 294 | */ |
108 | static int FIPS_rsa_test() | 295 | static int FIPS_hmac_sha256_test() |
109 | { | 296 | { |
110 | RSA *key; | 297 | unsigned char key[] = "etaonrishd"; |
111 | unsigned char input_ptext[] = "etaonrishdlc"; | 298 | unsigned char iv[] = "Sample text"; |
112 | unsigned char ctext[256]; | 299 | unsigned char kaval[EVP_MAX_MD_SIZE] = |
113 | unsigned char ptext[256]; | 300 | {0xe9, 0x17, 0xc1, 0x7b, 0x4c, 0x6b, 0x77, 0xda, 0xd2, 0x30, 0x36, 0x02, 0xf5, 0x72, 0x33, 0x87, |
114 | int n; | 301 | 0x9f, 0xc6, 0x6e, 0x7b, 0x7e, 0xa8, 0xea, 0xaa, 0x9f, 0xba, 0xee, 0x51, 0xff, 0xda, 0x24, 0xf4}; |
302 | |||
303 | unsigned char out[EVP_MAX_MD_SIZE]; | ||
304 | unsigned int outlen; | ||
115 | 305 | ||
116 | ERR_clear_error(); | 306 | ERR_clear_error(); |
117 | key = RSA_generate_key(1024,65537,NULL,NULL); | 307 | if (!HMAC(EVP_sha256(),key,sizeof(key)-1,iv,sizeof(iv)-1,out,&outlen)) return 0; |
118 | if (!key) | 308 | if (memcmp(out,kaval,outlen)) |
119 | return 0; | ||
120 | n = RSA_size(key); | ||
121 | n = RSA_public_encrypt(sizeof(input_ptext) - 1,input_ptext,ctext,key,RSA_PKCS1_PADDING); | ||
122 | if (n < 0) | ||
123 | return 0; | ||
124 | n = RSA_private_decrypt(n,ctext,ptext,key,RSA_PKCS1_PADDING); | ||
125 | if (n < 0) | ||
126 | return 0; | ||
127 | RSA_free(key); | ||
128 | if (memcmp(input_ptext,ptext,sizeof(input_ptext) - 1)) | ||
129 | return 0; | 309 | return 0; |
130 | return 1; | 310 | return 1; |
131 | } | 311 | } |
132 | 312 | ||
133 | /* SHA1: generate hash of known digest value and compare to known | 313 | /* HMAC-SHA384: generate hash of known digest value and compare to known |
134 | precomputed correct hash | 314 | precomputed correct hash |
135 | */ | 315 | */ |
136 | static int FIPS_sha1_test() | 316 | static int FIPS_hmac_sha384_test() |
137 | { | 317 | { |
138 | unsigned char digest[SHA_DIGEST_LENGTH] = | 318 | unsigned char key[] = "etaonrishd"; |
139 | { 0x11, 0xf1, 0x9a, 0x3a, 0xec, 0x1a, 0x1e, 0x8e, 0x65, 0xd4, 0x9a, 0x38, 0x0c, 0x8b, 0x1e, 0x2c, 0xe8, 0xb3, 0xc5, 0x18 }; | 319 | unsigned char iv[] = "Sample text"; |
140 | unsigned char str[] = "etaonrishd"; | 320 | unsigned char kaval[EVP_MAX_MD_SIZE] = |
321 | {0xb2, 0x9d, 0x40, 0x58, 0x32, 0xc4, 0xe3, 0x31, 0xb6, 0x63, 0x08, 0x26, 0x99, 0xef, 0x3b, 0x10, | ||
322 | 0xe2, 0xdf, 0xf8, 0xff, 0xc6, 0xe1, 0x03, 0x29, 0x81, 0x2a, 0x1b, 0xac, 0xb0, 0x07, 0x39, 0x08, | ||
323 | 0xf3, 0x91, 0x35, 0x11, 0x76, 0xd6, 0x4c, 0x20, 0xfb, 0x4d, 0xc3, 0xf3, 0xb8, 0x9b, 0x88, 0x1c}; | ||
141 | 324 | ||
142 | unsigned char md[SHA_DIGEST_LENGTH]; | 325 | unsigned char out[EVP_MAX_MD_SIZE]; |
326 | unsigned int outlen; | ||
143 | 327 | ||
144 | ERR_clear_error(); | 328 | ERR_clear_error(); |
145 | if (!SHA1(str,sizeof(str) - 1,md)) return 0; | 329 | if (!HMAC(EVP_sha384(),key,sizeof(key)-1,iv,sizeof(iv)-1,out,&outlen)) return 0; |
146 | if (memcmp(md,digest,sizeof(md))) | 330 | if (memcmp(out,kaval,outlen)) |
147 | return 0; | 331 | return 0; |
148 | return 1; | 332 | return 1; |
149 | } | 333 | } |
150 | 334 | ||
151 | /* MD5: generate hash of known digest value and compare to known | 335 | /* HMAC-SHA512: generate hash of known digest value and compare to known |
152 | precomputed correct hash | 336 | precomputed correct hash |
153 | */ | 337 | */ |
154 | static int md5_test() | 338 | static int FIPS_hmac_sha512_test() |
155 | { | 339 | { |
156 | unsigned char digest[MD5_DIGEST_LENGTH] = | 340 | unsigned char key[] = "etaonrishd"; |
157 | { 0x48, 0x50, 0xf0, 0xa3, 0x3a, 0xed, 0xd3, 0xaf, 0x6e, 0x47, 0x7f, 0x83, 0x02, 0xb1, 0x09, 0x68 }; | 341 | unsigned char iv[] = "Sample text"; |
158 | unsigned char str[] = "etaonrishd"; | 342 | unsigned char kaval[EVP_MAX_MD_SIZE] = |
343 | {0xcd, 0x3e, 0xb9, 0x51, 0xb8, 0xbc, 0x7f, 0x9a, 0x23, 0xaf, 0xf3, 0x77, 0x59, 0x85, 0xa9, 0xe6, | ||
344 | 0xf7, 0xd1, 0x51, 0x96, 0x17, 0xe0, 0x92, 0xd8, 0xa6, 0x3b, 0xc1, 0xad, 0x7e, 0x24, 0xca, 0xb1, | ||
345 | 0xd7, 0x79, 0x0a, 0xa5, 0xea, 0x2c, 0x02, 0x58, 0x0b, 0xa6, 0x52, 0x6b, 0x61, 0x7f, 0xeb, 0x9c, | ||
346 | 0x47, 0x86, 0x5d, 0x74, 0x2b, 0x88, 0xdf, 0xee, 0x46, 0x69, 0x96, 0x3d, 0xa6, 0xd9, 0x2a, 0x53}; | ||
159 | 347 | ||
160 | unsigned char md[MD5_DIGEST_LENGTH]; | 348 | unsigned char out[EVP_MAX_MD_SIZE]; |
349 | unsigned int outlen; | ||
161 | 350 | ||
162 | ERR_clear_error(); | 351 | ERR_clear_error(); |
163 | if (!MD5(str,sizeof(str) - 1,md)) | 352 | if (!HMAC(EVP_sha512(),key,sizeof(key)-1,iv,sizeof(iv)-1,out,&outlen)) return 0; |
164 | return 0; | 353 | if (memcmp(out,kaval,outlen)) |
165 | if (memcmp(md,digest,sizeof(md))) | 354 | return 0; |
166 | return 0; | ||
167 | return 1; | 355 | return 1; |
168 | } | 356 | } |
169 | 357 | ||
358 | |||
170 | /* DH: generate shared parameters | 359 | /* DH: generate shared parameters |
171 | */ | 360 | */ |
172 | static int dh_test() | 361 | static int dh_test() |
173 | { | 362 | { |
174 | DH *dh; | 363 | DH *dh; |
175 | |||
176 | ERR_clear_error(); | 364 | ERR_clear_error(); |
177 | dh = DH_generate_parameters(256, 2, NULL, NULL); | 365 | dh = FIPS_dh_new(); |
178 | if (dh) | 366 | if (!dh) |
179 | return 1; | 367 | return 0; |
180 | return 0; | 368 | if (!DH_generate_parameters_ex(dh, 1024, 2, NULL)) |
369 | return 0; | ||
370 | FIPS_dh_free(dh); | ||
371 | return 1; | ||
181 | } | 372 | } |
182 | 373 | ||
183 | /* Zeroize | 374 | /* Zeroize |
@@ -185,18 +376,27 @@ static int dh_test() | |||
185 | static int Zeroize() | 376 | static int Zeroize() |
186 | { | 377 | { |
187 | RSA *key; | 378 | RSA *key; |
379 | BIGNUM *bn; | ||
188 | unsigned char userkey[16] = | 380 | unsigned char userkey[16] = |
189 | { 0x48, 0x50, 0xf0, 0xa3, 0x3a, 0xed, 0xd3, 0xaf, 0x6e, 0x47, 0x7f, 0x83, 0x02, 0xb1, 0x09, 0x68 }; | 381 | { 0x48, 0x50, 0xf0, 0xa3, 0x3a, 0xed, 0xd3, 0xaf, 0x6e, 0x47, 0x7f, 0x83, 0x02, 0xb1, 0x09, 0x68 }; |
190 | int i, n; | 382 | int i, n; |
191 | 383 | ||
192 | key = RSA_generate_key(1024,65537,NULL,NULL); | 384 | key = FIPS_rsa_new(); |
193 | if (!key) | 385 | bn = BN_new(); |
386 | if (!key || !bn) | ||
387 | return 0; | ||
388 | BN_set_word(bn, 65537); | ||
389 | if (!RSA_generate_key_ex(key, 1024,bn,NULL)) | ||
194 | return 0; | 390 | return 0; |
391 | BN_free(bn); | ||
392 | |||
195 | n = BN_num_bytes(key->d); | 393 | n = BN_num_bytes(key->d); |
196 | printf(" Generated %d byte RSA private key\n", n); | 394 | printf(" Generated %d byte RSA private key\n", n); |
197 | printf("\tBN key before overwriting:\n%s\n", BN_bn2hex(key->d)); | 395 | printf("\tBN key before overwriting:\n"); |
396 | do_bn_print(stdout, key->d); | ||
198 | BN_rand(key->d,n*8,-1,0); | 397 | BN_rand(key->d,n*8,-1,0); |
199 | printf("\tBN key after overwriting:\n%s\n", BN_bn2hex(key->d)); | 398 | printf("\tBN key after overwriting:\n"); |
399 | do_bn_print(stdout, key->d); | ||
200 | 400 | ||
201 | printf("\tchar buffer key before overwriting: \n\t\t"); | 401 | printf("\tchar buffer key before overwriting: \n\t\t"); |
202 | for(i = 0; i < sizeof(userkey); i++) printf("%02x", userkey[i]); | 402 | for(i = 0; i < sizeof(userkey); i++) printf("%02x", userkey[i]); |
@@ -212,6 +412,7 @@ static int Zeroize() | |||
212 | static int Error; | 412 | static int Error; |
213 | const char * Fail(const char *msg) | 413 | const char * Fail(const char *msg) |
214 | { | 414 | { |
415 | do_print_errors(); | ||
215 | Error++; | 416 | Error++; |
216 | return msg; | 417 | return msg; |
217 | } | 418 | } |
@@ -219,6 +420,11 @@ const char * Fail(const char *msg) | |||
219 | int main(int argc,char **argv) | 420 | int main(int argc,char **argv) |
220 | { | 421 | { |
221 | 422 | ||
423 | int do_corrupt_rsa_keygen = 0, do_corrupt_dsa_keygen = 0; | ||
424 | int bad_rsa = 0, bad_dsa = 0; | ||
425 | int do_rng_stick = 0; | ||
426 | int no_exit = 0; | ||
427 | |||
222 | printf("\tFIPS-mode test application\n\n"); | 428 | printf("\tFIPS-mode test application\n\n"); |
223 | 429 | ||
224 | /* Load entropy from external file, if any */ | 430 | /* Load entropy from external file, if any */ |
@@ -228,72 +434,79 @@ int main(int argc,char **argv) | |||
228 | /* Corrupted KAT tests */ | 434 | /* Corrupted KAT tests */ |
229 | if (!strcmp(argv[1], "aes")) { | 435 | if (!strcmp(argv[1], "aes")) { |
230 | FIPS_corrupt_aes(); | 436 | FIPS_corrupt_aes(); |
231 | printf("3. AES encryption/decryption with corrupted KAT...\n"); | 437 | printf("AES encryption/decryption with corrupted KAT...\n"); |
232 | } else if (!strcmp(argv[1], "des")) { | 438 | } else if (!strcmp(argv[1], "des")) { |
233 | FIPS_corrupt_des(); | 439 | FIPS_corrupt_des(); |
234 | printf("5. DES-ECB encryption/decryption with corrupted KAT...\n"); | 440 | printf("DES3-ECB encryption/decryption with corrupted KAT...\n"); |
235 | } else if (!strcmp(argv[1], "dsa")) { | 441 | } else if (!strcmp(argv[1], "dsa")) { |
236 | FIPS_corrupt_dsa(); | 442 | FIPS_corrupt_dsa(); |
237 | printf("6. DSA key generation and signature validation with corrupted KAT...\n"); | 443 | printf("DSA key generation and signature validation with corrupted KAT...\n"); |
238 | } else if (!strcmp(argv[1], "rsa")) { | 444 | } else if (!strcmp(argv[1], "rsa")) { |
239 | FIPS_corrupt_rsa(); | 445 | FIPS_corrupt_rsa(); |
240 | printf("4. RSA key generation and encryption/decryption with corrupted KAT...\n"); | 446 | printf("RSA key generation and signature validation with corrupted KAT...\n"); |
447 | } else if (!strcmp(argv[1], "rsakey")) { | ||
448 | printf("RSA key generation and signature validation with corrupted key...\n"); | ||
449 | bad_rsa = 1; | ||
450 | no_exit = 1; | ||
451 | } else if (!strcmp(argv[1], "rsakeygen")) { | ||
452 | do_corrupt_rsa_keygen = 1; | ||
453 | no_exit = 1; | ||
454 | printf("RSA key generation and signature validation with corrupted keygen...\n"); | ||
455 | } else if (!strcmp(argv[1], "dsakey")) { | ||
456 | printf("DSA key generation and signature validation with corrupted key...\n"); | ||
457 | bad_dsa = 1; | ||
458 | no_exit = 1; | ||
459 | } else if (!strcmp(argv[1], "dsakeygen")) { | ||
460 | do_corrupt_dsa_keygen = 1; | ||
461 | no_exit = 1; | ||
462 | printf("DSA key generation and signature validation with corrupted keygen...\n"); | ||
241 | } else if (!strcmp(argv[1], "sha1")) { | 463 | } else if (!strcmp(argv[1], "sha1")) { |
242 | FIPS_corrupt_sha1(); | 464 | FIPS_corrupt_sha1(); |
243 | printf("7. SHA-1 hash with corrupted KAT...\n"); | 465 | printf("SHA-1 hash with corrupted KAT...\n"); |
466 | } else if (!strcmp(argv[1], "rng")) { | ||
467 | FIPS_corrupt_rng(); | ||
468 | } else if (!strcmp(argv[1], "rngstick")) { | ||
469 | do_rng_stick = 1; | ||
470 | no_exit = 1; | ||
471 | printf("RNG test with stuck continuous test...\n"); | ||
244 | } else { | 472 | } else { |
245 | printf("Bad argument \"%s\"\n", argv[1]); | 473 | printf("Bad argument \"%s\"\n", argv[1]); |
246 | exit(1); | 474 | exit(1); |
247 | } | 475 | } |
248 | if (!FIPS_mode_set(1,argv[0])) | 476 | if (!no_exit) { |
249 | { | 477 | if (!FIPS_mode_set(1)) { |
250 | ERR_load_crypto_strings(); | 478 | do_print_errors(); |
251 | ERR_print_errors(BIO_new_fp(stderr,BIO_NOCLOSE)); | 479 | printf("Power-up self test failed\n"); |
252 | printf("Power-up self test failed\n"); | 480 | exit(1); |
253 | exit(1); | 481 | } |
482 | printf("Power-up self test successful\n"); | ||
483 | exit(0); | ||
254 | } | 484 | } |
255 | printf("Power-up self test successful\n"); | ||
256 | exit(0); | ||
257 | } | 485 | } |
258 | 486 | ||
259 | /* Non-Approved cryptographic operation | 487 | /* Non-Approved cryptographic operation |
260 | */ | 488 | */ |
261 | printf("0. Non-Approved cryptographic operation test...\n"); | 489 | printf("1. Non-Approved cryptographic operation test...\n"); |
262 | printf("\ta. Excluded algorithm (MD5)..."); | 490 | printf("\ta. Included algorithm (D-H)..."); |
263 | printf( md5_test() ? "successful\n" : Fail("FAILED!\n") ); | ||
264 | printf("\tb. Included algorithm (D-H)..."); | ||
265 | printf( dh_test() ? "successful\n" : Fail("FAILED!\n") ); | 491 | printf( dh_test() ? "successful\n" : Fail("FAILED!\n") ); |
266 | 492 | ||
267 | /* Power-up self test failure | 493 | /* Power-up self test |
268 | */ | ||
269 | printf("1. Automatic power-up self test..."); | ||
270 | printf( FIPS_mode_set(1,"/dev/null") ? Fail("passed INCORRECTLY!\n") : "failed as expected\n" ); | ||
271 | |||
272 | /* Algorithm call when uninitialized failure | ||
273 | */ | ||
274 | printf("\ta. AES API failure on failed power-up self test..."); | ||
275 | printf( FIPS_aes_test() ? Fail("passed INCORRECTLY!\n") :"failed as expected\n" ); | ||
276 | printf("\tb. RSA API failure on failed power-up self test..."); | ||
277 | printf( FIPS_rsa_test() ? Fail("passed INCORRECTLY!\n") : "failed as expected\n" ); | ||
278 | printf("\tc. DES API failure on failed power-up self test..."); | ||
279 | printf( FIPS_des_test() ? Fail("passed INCORRECTLY!\n") : "failed as expected\n" ); | ||
280 | printf("\td. DSA API failure on failed power-up self test..."); | ||
281 | printf( FIPS_dsa_test() ? Fail("passed INCORRECTLY!\n") : "failed as expected\n" ); | ||
282 | printf("\te. SHA1 API failure on failed power-up self test..."); | ||
283 | printf( FIPS_sha1_test() ? Fail("passed INCORRECTLY!\n") : "failed as expected\n" ); | ||
284 | |||
285 | /* Power-up self test retry | ||
286 | */ | 494 | */ |
287 | ERR_clear_error(); | 495 | ERR_clear_error(); |
288 | printf("2. Automatic power-up self test retry..."); | 496 | printf("2. Automatic power-up self test..."); |
289 | if (!FIPS_mode_set(1,argv[0])) | 497 | if (!FIPS_mode_set(1)) |
290 | { | 498 | { |
291 | ERR_load_crypto_strings(); | 499 | do_print_errors(); |
292 | ERR_print_errors(BIO_new_fp(stderr,BIO_NOCLOSE)); | ||
293 | printf(Fail("FAILED!\n")); | 500 | printf(Fail("FAILED!\n")); |
294 | exit(1); | 501 | exit(1); |
295 | } | 502 | } |
296 | printf("successful\n"); | 503 | printf("successful\n"); |
504 | if (do_corrupt_dsa_keygen) | ||
505 | FIPS_corrupt_dsa_keygen(); | ||
506 | if (do_corrupt_rsa_keygen) | ||
507 | FIPS_corrupt_rsa_keygen(); | ||
508 | if (do_rng_stick) | ||
509 | FIPS_rng_stick(); | ||
297 | 510 | ||
298 | /* AES encryption/decryption | 511 | /* AES encryption/decryption |
299 | */ | 512 | */ |
@@ -303,39 +516,73 @@ int main(int argc,char **argv) | |||
303 | /* RSA key generation and encryption/decryption | 516 | /* RSA key generation and encryption/decryption |
304 | */ | 517 | */ |
305 | printf("4. RSA key generation and encryption/decryption..."); | 518 | printf("4. RSA key generation and encryption/decryption..."); |
306 | printf( FIPS_rsa_test() ? "successful\n" : Fail("FAILED!\n") ); | 519 | printf( FIPS_rsa_test(bad_rsa) ? "successful\n" : Fail("FAILED!\n") ); |
307 | 520 | ||
308 | /* DES-CBC encryption/decryption | 521 | /* DES-CBC encryption/decryption |
309 | */ | 522 | */ |
310 | printf("5. DES-ECB encryption/decryption..."); | 523 | printf("5. DES-ECB encryption/decryption..."); |
311 | printf( FIPS_des_test() ? "successful\n" : Fail("FAILED!\n") ); | 524 | printf( FIPS_des3_test() ? "successful\n" : Fail("FAILED!\n") ); |
312 | 525 | ||
313 | /* DSA key generation and signature validation | 526 | /* DSA key generation and signature validation |
314 | */ | 527 | */ |
315 | printf("6. DSA key generation and signature validation..."); | 528 | printf("6. DSA key generation and signature validation..."); |
316 | printf( FIPS_dsa_test() ? "successful\n" : Fail("FAILED!\n") ); | 529 | printf( FIPS_dsa_test(bad_dsa) ? "successful\n" : Fail("FAILED!\n") ); |
317 | 530 | ||
318 | /* SHA-1 hash | 531 | /* SHA-1 hash |
319 | */ | 532 | */ |
320 | printf("7. SHA-1 hash..."); | 533 | printf("7a. SHA-1 hash..."); |
321 | printf( FIPS_sha1_test() ? "successful\n" : Fail("FAILED!\n") ); | 534 | printf( FIPS_sha1_test() ? "successful\n" : Fail("FAILED!\n") ); |
322 | 535 | ||
536 | /* SHA-256 hash | ||
537 | */ | ||
538 | printf("7b. SHA-256 hash..."); | ||
539 | printf( FIPS_sha256_test() ? "successful\n" : Fail("FAILED!\n") ); | ||
540 | |||
541 | /* SHA-512 hash | ||
542 | */ | ||
543 | printf("7c. SHA-512 hash..."); | ||
544 | printf( FIPS_sha512_test() ? "successful\n" : Fail("FAILED!\n") ); | ||
545 | |||
546 | /* HMAC-SHA-1 hash | ||
547 | */ | ||
548 | printf("7d. HMAC-SHA-1 hash..."); | ||
549 | printf( FIPS_hmac_sha1_test() ? "successful\n" : Fail("FAILED!\n") ); | ||
550 | |||
551 | /* HMAC-SHA-224 hash | ||
552 | */ | ||
553 | printf("7e. HMAC-SHA-224 hash..."); | ||
554 | printf( FIPS_hmac_sha224_test() ? "successful\n" : Fail("FAILED!\n") ); | ||
555 | |||
556 | /* HMAC-SHA-256 hash | ||
557 | */ | ||
558 | printf("7f. HMAC-SHA-256 hash..."); | ||
559 | printf( FIPS_hmac_sha256_test() ? "successful\n" : Fail("FAILED!\n") ); | ||
560 | |||
561 | /* HMAC-SHA-384 hash | ||
562 | */ | ||
563 | printf("7g. HMAC-SHA-384 hash..."); | ||
564 | printf( FIPS_hmac_sha384_test() ? "successful\n" : Fail("FAILED!\n") ); | ||
565 | |||
566 | /* HMAC-SHA-512 hash | ||
567 | */ | ||
568 | printf("7h. HMAC-SHA-512 hash..."); | ||
569 | printf( FIPS_hmac_sha512_test() ? "successful\n" : Fail("FAILED!\n") ); | ||
570 | |||
323 | /* Non-Approved cryptographic operation | 571 | /* Non-Approved cryptographic operation |
324 | */ | 572 | */ |
325 | printf("8. Non-Approved cryptographic operation test...\n"); | 573 | printf("8. Non-Approved cryptographic operation test...\n"); |
326 | printf("\ta. Excluded algorithm (MD5)..."); | 574 | printf("\ta. Included algorithm (D-H)..."); |
327 | printf( md5_test() ? Fail("passed INCORRECTLY!\n") | ||
328 | : "failed as expected\n" ); | ||
329 | printf("\tb. Included algorithm (D-H)..."); | ||
330 | printf( dh_test() ? "successful as expected\n" | 575 | printf( dh_test() ? "successful as expected\n" |
331 | : Fail("failed INCORRECTLY!\n") ); | 576 | : Fail("failed INCORRECTLY!\n") ); |
332 | 577 | ||
333 | /* Zeroization | 578 | /* Zeroization |
334 | */ | 579 | */ |
335 | printf("9. Zero-ization...\n"); | 580 | printf("9. Zero-ization...\n"); |
336 | Zeroize(); | 581 | printf( Zeroize() ? "\tsuccessful as expected\n" |
582 | : Fail("\tfailed INCORRECTLY!\n") ); | ||
337 | 583 | ||
338 | printf("\nAll tests completed with %d errors\n", Error); | 584 | printf("\nAll tests completed with %d errors\n", Error); |
339 | return 0; | 585 | return Error ? 1 : 0; |
340 | } | 586 | } |
587 | |||
341 | #endif | 588 | #endif |
diff --git a/src/lib/libssl/src/fips/fips_utl.h b/src/lib/libssl/src/fips/fips_utl.h new file mode 100644 index 0000000000..02d4e44c82 --- /dev/null +++ b/src/lib/libssl/src/fips/fips_utl.h | |||
@@ -0,0 +1,343 @@ | |||
1 | /* ==================================================================== | ||
2 | * Copyright (c) 2007 The OpenSSL Project. All rights reserved. | ||
3 | * | ||
4 | * Redistribution and use in source and binary forms, with or without | ||
5 | * modification, are permitted provided that the following conditions | ||
6 | * are met: | ||
7 | * | ||
8 | * 1. Redistributions of source code must retain the above copyright | ||
9 | * notice, this list of conditions and the following disclaimer. | ||
10 | * | ||
11 | * 2. Redistributions in binary form must reproduce the above copyright | ||
12 | * notice, this list of conditions and the following disclaimer in | ||
13 | * the documentation and/or other materials provided with the | ||
14 | * distribution. | ||
15 | * | ||
16 | * 3. All advertising materials mentioning features or use of this | ||
17 | * software must display the following acknowledgment: | ||
18 | * "This product includes software developed by the OpenSSL Project | ||
19 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" | ||
20 | * | ||
21 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
22 | * endorse or promote products derived from this software without | ||
23 | * prior written permission. For written permission, please contact | ||
24 | * openssl-core@openssl.org. | ||
25 | * | ||
26 | * 5. Products derived from this software may not be called "OpenSSL" | ||
27 | * nor may "OpenSSL" appear in their names without prior written | ||
28 | * permission of the OpenSSL Project. | ||
29 | * | ||
30 | * 6. Redistributions of any form whatsoever must retain the following | ||
31 | * acknowledgment: | ||
32 | * "This product includes software developed by the OpenSSL Project | ||
33 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)" | ||
34 | * | ||
35 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
36 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
37 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
38 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
39 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
40 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
41 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
42 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
43 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
44 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
45 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
46 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
47 | * | ||
48 | */ | ||
49 | |||
50 | void do_print_errors(void) | ||
51 | { | ||
52 | const char *file, *data; | ||
53 | int line, flags; | ||
54 | unsigned long l; | ||
55 | while ((l = ERR_get_error_line_data(&file, &line, &data, &flags))) | ||
56 | { | ||
57 | fprintf(stderr, "ERROR:%lx:lib=%d,func=%d,reason=%d" | ||
58 | ":file=%s:line=%d:%s\n", | ||
59 | l, ERR_GET_LIB(l), ERR_GET_FUNC(l), ERR_GET_REASON(l), | ||
60 | file, line, flags & ERR_TXT_STRING ? data : ""); | ||
61 | } | ||
62 | } | ||
63 | |||
64 | int hex2bin(const char *in, unsigned char *out) | ||
65 | { | ||
66 | int n1, n2; | ||
67 | unsigned char ch; | ||
68 | |||
69 | for (n1=0,n2=0 ; in[n1] && in[n1] != '\n' ; ) | ||
70 | { /* first byte */ | ||
71 | if ((in[n1] >= '0') && (in[n1] <= '9')) | ||
72 | ch = in[n1++] - '0'; | ||
73 | else if ((in[n1] >= 'A') && (in[n1] <= 'F')) | ||
74 | ch = in[n1++] - 'A' + 10; | ||
75 | else if ((in[n1] >= 'a') && (in[n1] <= 'f')) | ||
76 | ch = in[n1++] - 'a' + 10; | ||
77 | else | ||
78 | return -1; | ||
79 | if(!in[n1]) | ||
80 | { | ||
81 | out[n2++]=ch; | ||
82 | break; | ||
83 | } | ||
84 | out[n2] = ch << 4; | ||
85 | /* second byte */ | ||
86 | if ((in[n1] >= '0') && (in[n1] <= '9')) | ||
87 | ch = in[n1++] - '0'; | ||
88 | else if ((in[n1] >= 'A') && (in[n1] <= 'F')) | ||
89 | ch = in[n1++] - 'A' + 10; | ||
90 | else if ((in[n1] >= 'a') && (in[n1] <= 'f')) | ||
91 | ch = in[n1++] - 'a' + 10; | ||
92 | else | ||
93 | return -1; | ||
94 | out[n2++] |= ch; | ||
95 | } | ||
96 | return n2; | ||
97 | } | ||
98 | |||
99 | unsigned char *hex2bin_m(const char *in, long *plen) | ||
100 | { | ||
101 | unsigned char *p; | ||
102 | p = OPENSSL_malloc((strlen(in) + 1)/2); | ||
103 | *plen = hex2bin(in, p); | ||
104 | return p; | ||
105 | } | ||
106 | |||
107 | int do_hex2bn(BIGNUM **pr, const char *in) | ||
108 | { | ||
109 | unsigned char *p; | ||
110 | long plen; | ||
111 | int r = 0; | ||
112 | p = hex2bin_m(in, &plen); | ||
113 | if (!p) | ||
114 | return 0; | ||
115 | if (!*pr) | ||
116 | *pr = BN_new(); | ||
117 | if (!*pr) | ||
118 | return 0; | ||
119 | if (BN_bin2bn(p, plen, *pr)) | ||
120 | r = 1; | ||
121 | OPENSSL_free(p); | ||
122 | return r; | ||
123 | } | ||
124 | |||
125 | int do_bn_print(FILE *out, BIGNUM *bn) | ||
126 | { | ||
127 | int len, i; | ||
128 | unsigned char *tmp; | ||
129 | len = BN_num_bytes(bn); | ||
130 | if (len == 0) | ||
131 | { | ||
132 | fputs("00", out); | ||
133 | return 1; | ||
134 | } | ||
135 | |||
136 | tmp = OPENSSL_malloc(len); | ||
137 | if (!tmp) | ||
138 | { | ||
139 | fprintf(stderr, "Memory allocation error\n"); | ||
140 | return 0; | ||
141 | } | ||
142 | BN_bn2bin(bn, tmp); | ||
143 | for (i = 0; i < len; i++) | ||
144 | fprintf(out, "%02x", tmp[i]); | ||
145 | OPENSSL_free(tmp); | ||
146 | return 1; | ||
147 | } | ||
148 | |||
149 | int do_bn_print_name(FILE *out, const char *name, BIGNUM *bn) | ||
150 | { | ||
151 | int r; | ||
152 | fprintf(out, "%s = ", name); | ||
153 | r = do_bn_print(out, bn); | ||
154 | if (!r) | ||
155 | return 0; | ||
156 | fputs("\n", out); | ||
157 | return 1; | ||
158 | } | ||
159 | |||
160 | int parse_line(char **pkw, char **pval, char *linebuf, char *olinebuf) | ||
161 | { | ||
162 | char *keyword, *value, *p, *q; | ||
163 | strcpy(linebuf, olinebuf); | ||
164 | keyword = linebuf; | ||
165 | /* Skip leading space */ | ||
166 | while (isspace((unsigned char)*keyword)) | ||
167 | keyword++; | ||
168 | |||
169 | /* Look for = sign */ | ||
170 | p = strchr(linebuf, '='); | ||
171 | |||
172 | /* If no '=' exit */ | ||
173 | if (!p) | ||
174 | return 0; | ||
175 | |||
176 | q = p - 1; | ||
177 | |||
178 | /* Remove trailing space */ | ||
179 | while (isspace((unsigned char)*q)) | ||
180 | *q-- = 0; | ||
181 | |||
182 | *p = 0; | ||
183 | value = p + 1; | ||
184 | |||
185 | /* Remove leading space from value */ | ||
186 | while (isspace((unsigned char)*value)) | ||
187 | value++; | ||
188 | |||
189 | /* Remove trailing space from value */ | ||
190 | p = value + strlen(value) - 1; | ||
191 | |||
192 | while (*p == '\n' || isspace((unsigned char)*p)) | ||
193 | *p-- = 0; | ||
194 | |||
195 | *pkw = keyword; | ||
196 | *pval = value; | ||
197 | return 1; | ||
198 | } | ||
199 | |||
200 | BIGNUM *hex2bn(const char *in) | ||
201 | { | ||
202 | BIGNUM *p=NULL; | ||
203 | |||
204 | if (!do_hex2bn(&p, in)) | ||
205 | return NULL; | ||
206 | |||
207 | return p; | ||
208 | } | ||
209 | |||
210 | int bin2hex(const unsigned char *in,int len,char *out) | ||
211 | { | ||
212 | int n1, n2; | ||
213 | unsigned char ch; | ||
214 | |||
215 | for (n1=0,n2=0 ; n1 < len ; ++n1) | ||
216 | { | ||
217 | ch=in[n1] >> 4; | ||
218 | if (ch <= 0x09) | ||
219 | out[n2++]=ch+'0'; | ||
220 | else | ||
221 | out[n2++]=ch-10+'a'; | ||
222 | ch=in[n1] & 0x0f; | ||
223 | if(ch <= 0x09) | ||
224 | out[n2++]=ch+'0'; | ||
225 | else | ||
226 | out[n2++]=ch-10+'a'; | ||
227 | } | ||
228 | out[n2]='\0'; | ||
229 | return n2; | ||
230 | } | ||
231 | |||
232 | void pv(const char *tag,const unsigned char *val,int len) | ||
233 | { | ||
234 | char obuf[2048]; | ||
235 | |||
236 | bin2hex(val,len,obuf); | ||
237 | printf("%s = %s\n",tag,obuf); | ||
238 | } | ||
239 | |||
240 | /* To avoid extensive changes to test program at this stage just convert | ||
241 | * the input line into an acceptable form. Keyword lines converted to form | ||
242 | * "keyword = value\n" no matter what white space present, all other lines | ||
243 | * just have leading and trailing space removed. | ||
244 | */ | ||
245 | |||
246 | int tidy_line(char *linebuf, char *olinebuf) | ||
247 | { | ||
248 | char *keyword, *value, *p, *q; | ||
249 | strcpy(linebuf, olinebuf); | ||
250 | keyword = linebuf; | ||
251 | /* Skip leading space */ | ||
252 | while (isspace((unsigned char)*keyword)) | ||
253 | keyword++; | ||
254 | /* Look for = sign */ | ||
255 | p = strchr(linebuf, '='); | ||
256 | |||
257 | /* If no '=' just chop leading, trailing ws */ | ||
258 | if (!p) | ||
259 | { | ||
260 | p = keyword + strlen(keyword) - 1; | ||
261 | while (*p == '\n' || isspace((unsigned char)*p)) | ||
262 | *p-- = 0; | ||
263 | strcpy(olinebuf, keyword); | ||
264 | strcat(olinebuf, "\n"); | ||
265 | return 1; | ||
266 | } | ||
267 | |||
268 | q = p - 1; | ||
269 | |||
270 | /* Remove trailing space */ | ||
271 | while (isspace((unsigned char)*q)) | ||
272 | *q-- = 0; | ||
273 | |||
274 | *p = 0; | ||
275 | value = p + 1; | ||
276 | |||
277 | /* Remove leading space from value */ | ||
278 | while (isspace((unsigned char)*value)) | ||
279 | value++; | ||
280 | |||
281 | /* Remove trailing space from value */ | ||
282 | p = value + strlen(value) - 1; | ||
283 | |||
284 | while (*p == '\n' || isspace((unsigned char)*p)) | ||
285 | *p-- = 0; | ||
286 | |||
287 | strcpy(olinebuf, keyword); | ||
288 | strcat(olinebuf, " = "); | ||
289 | strcat(olinebuf, value); | ||
290 | strcat(olinebuf, "\n"); | ||
291 | |||
292 | return 1; | ||
293 | } | ||
294 | |||
295 | /* NB: this return the number of _bits_ read */ | ||
296 | int bint2bin(const char *in, int len, unsigned char *out) | ||
297 | { | ||
298 | int n; | ||
299 | |||
300 | memset(out,0,len); | ||
301 | for(n=0 ; n < len ; ++n) | ||
302 | if(in[n] == '1') | ||
303 | out[n/8]|=(0x80 >> (n%8)); | ||
304 | return len; | ||
305 | } | ||
306 | |||
307 | int bin2bint(const unsigned char *in,int len,char *out) | ||
308 | { | ||
309 | int n; | ||
310 | |||
311 | for(n=0 ; n < len ; ++n) | ||
312 | out[n]=(in[n/8]&(0x80 >> (n%8))) ? '1' : '0'; | ||
313 | return n; | ||
314 | } | ||
315 | |||
316 | /*-----------------------------------------------*/ | ||
317 | |||
318 | void PrintValue(char *tag, unsigned char *val, int len) | ||
319 | { | ||
320 | #if VERBOSE | ||
321 | char obuf[2048]; | ||
322 | int olen; | ||
323 | olen = bin2hex(val, len, obuf); | ||
324 | printf("%s = %.*s\n", tag, olen, obuf); | ||
325 | #endif | ||
326 | } | ||
327 | |||
328 | void OutputValue(char *tag, unsigned char *val, int len, FILE *rfp,int bitmode) | ||
329 | { | ||
330 | char obuf[2048]; | ||
331 | int olen; | ||
332 | |||
333 | if(bitmode) | ||
334 | olen=bin2bint(val,len,obuf); | ||
335 | else | ||
336 | olen=bin2hex(val,len,obuf); | ||
337 | |||
338 | fprintf(rfp, "%s = %.*s\n", tag, olen, obuf); | ||
339 | #if VERBOSE | ||
340 | printf("%s = %.*s\n", tag, olen, obuf); | ||
341 | #endif | ||
342 | } | ||
343 | |||
diff --git a/src/lib/libssl/src/fips/fipsalgtest.pl b/src/lib/libssl/src/fips/fipsalgtest.pl new file mode 100644 index 0000000000..44a5ccac7a --- /dev/null +++ b/src/lib/libssl/src/fips/fipsalgtest.pl | |||
@@ -0,0 +1,848 @@ | |||
1 | #!/usr/bin/perl -w | ||
2 | # Perl utility to run or verify FIPS 140-2 CMVP algorithm tests based on the | ||
3 | # pathnames of input algorithm test files actually present (the unqualified | ||
4 | # file names are consistent but the pathnames are not). | ||
5 | # | ||
6 | |||
7 | # FIPS test definitions | ||
8 | # List of all the unqualified file names we expect and command lines to run | ||
9 | |||
10 | # DSA tests | ||
11 | my @fips_dsa_test_list = ( | ||
12 | |||
13 | "DSA", | ||
14 | |||
15 | [ "PQGGen", "fips_dssvs pqg" ], | ||
16 | [ "KeyPair", "fips_dssvs keypair" ], | ||
17 | [ "SigGen", "fips_dssvs siggen" ], | ||
18 | [ "SigVer", "fips_dssvs sigver" ] | ||
19 | |||
20 | ); | ||
21 | |||
22 | # RSA tests | ||
23 | |||
24 | my @fips_rsa_test_list = ( | ||
25 | |||
26 | "RSA", | ||
27 | |||
28 | [ "SigGen15", "fips_rsastest" ], | ||
29 | [ "SigVer15", "fips_rsavtest" ], | ||
30 | [ "SigVerRSA", "fips_rsavtest -x931" ], | ||
31 | [ "KeyGenRSA", "fips_rsagtest" ], | ||
32 | [ "SigGenRSA", "fips_rsastest -x931" ] | ||
33 | |||
34 | ); | ||
35 | |||
36 | # Special cases for PSS. The filename itself is | ||
37 | # not sufficient to determine the test. Addditionally we | ||
38 | # need to examine the file contents to determine the salt length | ||
39 | # In these cases the test filename has (saltlen) appended. | ||
40 | |||
41 | # RSA PSS salt length 0 tests | ||
42 | |||
43 | my @fips_rsa_pss0_test_list = ( | ||
44 | |||
45 | [ "SigGenPSS(0)", "fips_rsastest -saltlen 0" ], | ||
46 | [ "SigVerPSS(0)", "fips_rsavtest -saltlen 0" ] | ||
47 | |||
48 | ); | ||
49 | |||
50 | # RSA PSS salt length 62 tests | ||
51 | |||
52 | my @fips_rsa_pss62_test_list = ( | ||
53 | [ "SigGenPSS(62)", "fips_rsastest -saltlen 62" ], | ||
54 | [ "SigVerPSS(62)", "fips_rsavtest -saltlen 62" ] | ||
55 | |||
56 | ); | ||
57 | |||
58 | # SHA tests | ||
59 | |||
60 | my @fips_sha_test_list = ( | ||
61 | |||
62 | "SHA", | ||
63 | |||
64 | [ "SHA1LongMsg", "fips_shatest" ], | ||
65 | [ "SHA1Monte", "fips_shatest" ], | ||
66 | [ "SHA1ShortMsg", "fips_shatest" ], | ||
67 | [ "SHA224LongMsg", "fips_shatest" ], | ||
68 | [ "SHA224Monte", "fips_shatest" ], | ||
69 | [ "SHA224ShortMsg", "fips_shatest" ], | ||
70 | [ "SHA256LongMsg", "fips_shatest" ], | ||
71 | [ "SHA256Monte", "fips_shatest" ], | ||
72 | [ "SHA256ShortMsg", "fips_shatest" ], | ||
73 | [ "SHA384LongMsg", "fips_shatest" ], | ||
74 | [ "SHA384Monte", "fips_shatest" ], | ||
75 | [ "SHA384ShortMsg", "fips_shatest" ], | ||
76 | [ "SHA512LongMsg", "fips_shatest" ], | ||
77 | [ "SHA512Monte", "fips_shatest" ], | ||
78 | [ "SHA512ShortMsg", "fips_shatest" ] | ||
79 | |||
80 | ); | ||
81 | |||
82 | # HMAC | ||
83 | |||
84 | my @fips_hmac_test_list = ( | ||
85 | |||
86 | "HMAC", | ||
87 | |||
88 | [ "HMAC", "fips_hmactest" ] | ||
89 | |||
90 | ); | ||
91 | |||
92 | # RAND tests, AES version | ||
93 | |||
94 | my @fips_rand_aes_test_list = ( | ||
95 | |||
96 | "RAND (AES)", | ||
97 | |||
98 | [ "ANSI931_AES128MCT", "fips_rngvs mct" ], | ||
99 | [ "ANSI931_AES192MCT", "fips_rngvs mct" ], | ||
100 | [ "ANSI931_AES256MCT", "fips_rngvs mct" ], | ||
101 | [ "ANSI931_AES128VST", "fips_rngvs vst" ], | ||
102 | [ "ANSI931_AES192VST", "fips_rngvs vst" ], | ||
103 | [ "ANSI931_AES256VST", "fips_rngvs vst" ] | ||
104 | |||
105 | ); | ||
106 | |||
107 | # RAND tests, DES2 version | ||
108 | |||
109 | my @fips_rand_des2_test_list = ( | ||
110 | |||
111 | "RAND (DES2)", | ||
112 | |||
113 | [ "ANSI931_TDES2MCT", "fips_rngvs mct" ], | ||
114 | [ "ANSI931_TDES2VST", "fips_rngvs vst" ] | ||
115 | |||
116 | ); | ||
117 | |||
118 | # AES tests | ||
119 | |||
120 | my @fips_aes_test_list = ( | ||
121 | |||
122 | "AES", | ||
123 | |||
124 | [ "CBCGFSbox128", "fips_aesavs -f" ], | ||
125 | [ "CBCGFSbox192", "fips_aesavs -f" ], | ||
126 | [ "CBCGFSbox256", "fips_aesavs -f" ], | ||
127 | [ "CBCKeySbox128", "fips_aesavs -f" ], | ||
128 | [ "CBCKeySbox192", "fips_aesavs -f" ], | ||
129 | [ "CBCKeySbox256", "fips_aesavs -f" ], | ||
130 | [ "CBCMCT128", "fips_aesavs -f" ], | ||
131 | [ "CBCMCT192", "fips_aesavs -f" ], | ||
132 | [ "CBCMCT256", "fips_aesavs -f" ], | ||
133 | [ "CBCMMT128", "fips_aesavs -f" ], | ||
134 | [ "CBCMMT192", "fips_aesavs -f" ], | ||
135 | [ "CBCMMT256", "fips_aesavs -f" ], | ||
136 | [ "CBCVarKey128", "fips_aesavs -f" ], | ||
137 | [ "CBCVarKey192", "fips_aesavs -f" ], | ||
138 | [ "CBCVarKey256", "fips_aesavs -f" ], | ||
139 | [ "CBCVarTxt128", "fips_aesavs -f" ], | ||
140 | [ "CBCVarTxt192", "fips_aesavs -f" ], | ||
141 | [ "CBCVarTxt256", "fips_aesavs -f" ], | ||
142 | [ "CFB128GFSbox128", "fips_aesavs -f" ], | ||
143 | [ "CFB128GFSbox192", "fips_aesavs -f" ], | ||
144 | [ "CFB128GFSbox256", "fips_aesavs -f" ], | ||
145 | [ "CFB128KeySbox128", "fips_aesavs -f" ], | ||
146 | [ "CFB128KeySbox192", "fips_aesavs -f" ], | ||
147 | [ "CFB128KeySbox256", "fips_aesavs -f" ], | ||
148 | [ "CFB128MCT128", "fips_aesavs -f" ], | ||
149 | [ "CFB128MCT192", "fips_aesavs -f" ], | ||
150 | [ "CFB128MCT256", "fips_aesavs -f" ], | ||
151 | [ "CFB128MMT128", "fips_aesavs -f" ], | ||
152 | [ "CFB128MMT192", "fips_aesavs -f" ], | ||
153 | [ "CFB128MMT256", "fips_aesavs -f" ], | ||
154 | [ "CFB128VarKey128", "fips_aesavs -f" ], | ||
155 | [ "CFB128VarKey192", "fips_aesavs -f" ], | ||
156 | [ "CFB128VarKey256", "fips_aesavs -f" ], | ||
157 | [ "CFB128VarTxt128", "fips_aesavs -f" ], | ||
158 | [ "CFB128VarTxt192", "fips_aesavs -f" ], | ||
159 | [ "CFB128VarTxt256", "fips_aesavs -f" ], | ||
160 | [ "CFB8GFSbox128", "fips_aesavs -f" ], | ||
161 | [ "CFB8GFSbox192", "fips_aesavs -f" ], | ||
162 | [ "CFB8GFSbox256", "fips_aesavs -f" ], | ||
163 | [ "CFB8KeySbox128", "fips_aesavs -f" ], | ||
164 | [ "CFB8KeySbox192", "fips_aesavs -f" ], | ||
165 | [ "CFB8KeySbox256", "fips_aesavs -f" ], | ||
166 | [ "CFB8MCT128", "fips_aesavs -f" ], | ||
167 | [ "CFB8MCT192", "fips_aesavs -f" ], | ||
168 | [ "CFB8MCT256", "fips_aesavs -f" ], | ||
169 | [ "CFB8MMT128", "fips_aesavs -f" ], | ||
170 | [ "CFB8MMT192", "fips_aesavs -f" ], | ||
171 | [ "CFB8MMT256", "fips_aesavs -f" ], | ||
172 | [ "CFB8VarKey128", "fips_aesavs -f" ], | ||
173 | [ "CFB8VarKey192", "fips_aesavs -f" ], | ||
174 | [ "CFB8VarKey256", "fips_aesavs -f" ], | ||
175 | [ "CFB8VarTxt128", "fips_aesavs -f" ], | ||
176 | [ "CFB8VarTxt192", "fips_aesavs -f" ], | ||
177 | [ "CFB8VarTxt256", "fips_aesavs -f" ], | ||
178 | |||
179 | [ "ECBGFSbox128", "fips_aesavs -f" ], | ||
180 | [ "ECBGFSbox192", "fips_aesavs -f" ], | ||
181 | [ "ECBGFSbox256", "fips_aesavs -f" ], | ||
182 | [ "ECBKeySbox128", "fips_aesavs -f" ], | ||
183 | [ "ECBKeySbox192", "fips_aesavs -f" ], | ||
184 | [ "ECBKeySbox256", "fips_aesavs -f" ], | ||
185 | [ "ECBMCT128", "fips_aesavs -f" ], | ||
186 | [ "ECBMCT192", "fips_aesavs -f" ], | ||
187 | [ "ECBMCT256", "fips_aesavs -f" ], | ||
188 | [ "ECBMMT128", "fips_aesavs -f" ], | ||
189 | [ "ECBMMT192", "fips_aesavs -f" ], | ||
190 | [ "ECBMMT256", "fips_aesavs -f" ], | ||
191 | [ "ECBVarKey128", "fips_aesavs -f" ], | ||
192 | [ "ECBVarKey192", "fips_aesavs -f" ], | ||
193 | [ "ECBVarKey256", "fips_aesavs -f" ], | ||
194 | [ "ECBVarTxt128", "fips_aesavs -f" ], | ||
195 | [ "ECBVarTxt192", "fips_aesavs -f" ], | ||
196 | [ "ECBVarTxt256", "fips_aesavs -f" ], | ||
197 | [ "OFBGFSbox128", "fips_aesavs -f" ], | ||
198 | [ "OFBGFSbox192", "fips_aesavs -f" ], | ||
199 | [ "OFBGFSbox256", "fips_aesavs -f" ], | ||
200 | [ "OFBKeySbox128", "fips_aesavs -f" ], | ||
201 | [ "OFBKeySbox192", "fips_aesavs -f" ], | ||
202 | [ "OFBKeySbox256", "fips_aesavs -f" ], | ||
203 | [ "OFBMCT128", "fips_aesavs -f" ], | ||
204 | [ "OFBMCT192", "fips_aesavs -f" ], | ||
205 | [ "OFBMCT256", "fips_aesavs -f" ], | ||
206 | [ "OFBMMT128", "fips_aesavs -f" ], | ||
207 | [ "OFBMMT192", "fips_aesavs -f" ], | ||
208 | [ "OFBMMT256", "fips_aesavs -f" ], | ||
209 | [ "OFBVarKey128", "fips_aesavs -f" ], | ||
210 | [ "OFBVarKey192", "fips_aesavs -f" ], | ||
211 | [ "OFBVarKey256", "fips_aesavs -f" ], | ||
212 | [ "OFBVarTxt128", "fips_aesavs -f" ], | ||
213 | [ "OFBVarTxt192", "fips_aesavs -f" ], | ||
214 | [ "OFBVarTxt256", "fips_aesavs -f" ] | ||
215 | |||
216 | ); | ||
217 | |||
218 | my @fips_aes_cfb1_test_list = ( | ||
219 | |||
220 | # AES CFB1 tests | ||
221 | |||
222 | [ "CFB1GFSbox128", "fips_aesavs -f" ], | ||
223 | [ "CFB1GFSbox192", "fips_aesavs -f" ], | ||
224 | [ "CFB1GFSbox256", "fips_aesavs -f" ], | ||
225 | [ "CFB1KeySbox128", "fips_aesavs -f" ], | ||
226 | [ "CFB1KeySbox192", "fips_aesavs -f" ], | ||
227 | [ "CFB1KeySbox256", "fips_aesavs -f" ], | ||
228 | [ "CFB1MCT128", "fips_aesavs -f" ], | ||
229 | [ "CFB1MCT192", "fips_aesavs -f" ], | ||
230 | [ "CFB1MCT256", "fips_aesavs -f" ], | ||
231 | [ "CFB1MMT128", "fips_aesavs -f" ], | ||
232 | [ "CFB1MMT192", "fips_aesavs -f" ], | ||
233 | [ "CFB1MMT256", "fips_aesavs -f" ], | ||
234 | [ "CFB1VarKey128", "fips_aesavs -f" ], | ||
235 | [ "CFB1VarKey192", "fips_aesavs -f" ], | ||
236 | [ "CFB1VarKey256", "fips_aesavs -f" ], | ||
237 | [ "CFB1VarTxt128", "fips_aesavs -f" ], | ||
238 | [ "CFB1VarTxt192", "fips_aesavs -f" ], | ||
239 | [ "CFB1VarTxt256", "fips_aesavs -f" ] | ||
240 | |||
241 | ); | ||
242 | |||
243 | # Triple DES tests | ||
244 | |||
245 | my @fips_des3_test_list = ( | ||
246 | |||
247 | "Triple DES", | ||
248 | |||
249 | [ "TCBCinvperm", "fips_desmovs -f" ], | ||
250 | [ "TCBCMMT1", "fips_desmovs -f" ], | ||
251 | [ "TCBCMMT2", "fips_desmovs -f" ], | ||
252 | [ "TCBCMMT3", "fips_desmovs -f" ], | ||
253 | [ "TCBCMonte1", "fips_desmovs -f" ], | ||
254 | [ "TCBCMonte2", "fips_desmovs -f" ], | ||
255 | [ "TCBCMonte3", "fips_desmovs -f" ], | ||
256 | [ "TCBCpermop", "fips_desmovs -f" ], | ||
257 | [ "TCBCsubtab", "fips_desmovs -f" ], | ||
258 | [ "TCBCvarkey", "fips_desmovs -f" ], | ||
259 | [ "TCBCvartext", "fips_desmovs -f" ], | ||
260 | [ "TCFB64invperm", "fips_desmovs -f" ], | ||
261 | [ "TCFB64MMT1", "fips_desmovs -f" ], | ||
262 | [ "TCFB64MMT2", "fips_desmovs -f" ], | ||
263 | [ "TCFB64MMT3", "fips_desmovs -f" ], | ||
264 | [ "TCFB64Monte1", "fips_desmovs -f" ], | ||
265 | [ "TCFB64Monte2", "fips_desmovs -f" ], | ||
266 | [ "TCFB64Monte3", "fips_desmovs -f" ], | ||
267 | [ "TCFB64permop", "fips_desmovs -f" ], | ||
268 | [ "TCFB64subtab", "fips_desmovs -f" ], | ||
269 | [ "TCFB64varkey", "fips_desmovs -f" ], | ||
270 | [ "TCFB64vartext", "fips_desmovs -f" ], | ||
271 | [ "TCFB8invperm", "fips_desmovs -f" ], | ||
272 | [ "TCFB8MMT1", "fips_desmovs -f" ], | ||
273 | [ "TCFB8MMT2", "fips_desmovs -f" ], | ||
274 | [ "TCFB8MMT3", "fips_desmovs -f" ], | ||
275 | [ "TCFB8Monte1", "fips_desmovs -f" ], | ||
276 | [ "TCFB8Monte2", "fips_desmovs -f" ], | ||
277 | [ "TCFB8Monte3", "fips_desmovs -f" ], | ||
278 | [ "TCFB8permop", "fips_desmovs -f" ], | ||
279 | [ "TCFB8subtab", "fips_desmovs -f" ], | ||
280 | [ "TCFB8varkey", "fips_desmovs -f" ], | ||
281 | [ "TCFB8vartext", "fips_desmovs -f" ], | ||
282 | [ "TECBinvperm", "fips_desmovs -f" ], | ||
283 | [ "TECBMMT1", "fips_desmovs -f" ], | ||
284 | [ "TECBMMT2", "fips_desmovs -f" ], | ||
285 | [ "TECBMMT3", "fips_desmovs -f" ], | ||
286 | [ "TECBMonte1", "fips_desmovs -f" ], | ||
287 | [ "TECBMonte2", "fips_desmovs -f" ], | ||
288 | [ "TECBMonte3", "fips_desmovs -f" ], | ||
289 | [ "TECBpermop", "fips_desmovs -f" ], | ||
290 | [ "TECBsubtab", "fips_desmovs -f" ], | ||
291 | [ "TECBvarkey", "fips_desmovs -f" ], | ||
292 | [ "TECBvartext", "fips_desmovs -f" ], | ||
293 | [ "TOFBinvperm", "fips_desmovs -f" ], | ||
294 | [ "TOFBMMT1", "fips_desmovs -f" ], | ||
295 | [ "TOFBMMT2", "fips_desmovs -f" ], | ||
296 | [ "TOFBMMT3", "fips_desmovs -f" ], | ||
297 | [ "TOFBMonte1", "fips_desmovs -f" ], | ||
298 | [ "TOFBMonte2", "fips_desmovs -f" ], | ||
299 | [ "TOFBMonte3", "fips_desmovs -f" ], | ||
300 | [ "TOFBpermop", "fips_desmovs -f" ], | ||
301 | [ "TOFBsubtab", "fips_desmovs -f" ], | ||
302 | [ "TOFBvarkey", "fips_desmovs -f" ], | ||
303 | [ "TOFBvartext", "fips_desmovs -f" ] | ||
304 | |||
305 | ); | ||
306 | |||
307 | # Verification special cases. | ||
308 | # In most cases the output of a test is deterministic and | ||
309 | # it can be compared to a known good result. A few involve | ||
310 | # the genration and use of random keys and the output will | ||
311 | # be different each time. In thoses cases we perform special tests | ||
312 | # to simply check their consistency. For example signature generation | ||
313 | # output will be run through signature verification to see if all outputs | ||
314 | # show as valid. | ||
315 | # | ||
316 | |||
317 | my %verify_special = ( | ||
318 | "PQGGen" => "fips_dssvs pqgver", | ||
319 | "KeyPair" => "fips_dssvs keyver", | ||
320 | "SigGen" => "fips_dssvs sigver", | ||
321 | "SigGen15" => "fips_rsavtest", | ||
322 | "SigGenRSA" => "fips_rsavtest -x931", | ||
323 | "SigGenPSS(0)" => "fips_rsavtest -saltlen 0", | ||
324 | "SigGenPSS(62)" => "fips_rsavtest -saltlen 62", | ||
325 | ); | ||
326 | |||
327 | my $win32 = $^O =~ m/mswin/i; | ||
328 | my $onedir = 0; | ||
329 | my $filter = ""; | ||
330 | my $tvdir; | ||
331 | my $tprefix; | ||
332 | my $shwrap_prefix; | ||
333 | my $debug = 0; | ||
334 | my $quiet = 0; | ||
335 | my $notest = 0; | ||
336 | my $verify = 1; | ||
337 | my $rspdir = "rsp"; | ||
338 | my $ignore_missing = 0; | ||
339 | my $ignore_bogus = 0; | ||
340 | my $bufout = ''; | ||
341 | my $list_tests = 0; | ||
342 | |||
343 | my %fips_enabled = ( | ||
344 | dsa => 1, | ||
345 | rsa => 1, | ||
346 | "rsa-pss0" => 0, | ||
347 | "rsa-pss62" => 1, | ||
348 | sha => 1, | ||
349 | hmac => 1, | ||
350 | "rand-aes" => 1, | ||
351 | "rand-des2" => 0, | ||
352 | aes => 1, | ||
353 | "aes-cfb1" => 0, | ||
354 | des3 => 1 | ||
355 | ); | ||
356 | |||
357 | foreach (@ARGV) { | ||
358 | if ( $_ eq "--win32" ) { | ||
359 | $win32 = 1; | ||
360 | } | ||
361 | elsif ( $_ eq "--onedir" ) { | ||
362 | $onedir = 1; | ||
363 | } | ||
364 | elsif ( $_ eq "--debug" ) { | ||
365 | $debug = 1; | ||
366 | } | ||
367 | elsif ( $_ eq "--ignore-missing" ) { | ||
368 | $ignore_missing = 1; | ||
369 | } | ||
370 | elsif ( $_ eq "--ignore-bogus" ) { | ||
371 | $ignore_bogus = 1; | ||
372 | } | ||
373 | elsif ( $_ eq "--generate" ) { | ||
374 | $verify = 0; | ||
375 | } | ||
376 | elsif ( $_ eq "--notest" ) { | ||
377 | $notest = 1; | ||
378 | } | ||
379 | elsif ( $_ eq "--quiet" ) { | ||
380 | $quiet = 1; | ||
381 | } | ||
382 | elsif (/--dir=(.*)$/) { | ||
383 | $tvdir = $1; | ||
384 | } | ||
385 | elsif (/--rspdir=(.*)$/) { | ||
386 | $rspdir = $1; | ||
387 | } | ||
388 | elsif (/--tprefix=(.*)$/) { | ||
389 | $tprefix = $1; | ||
390 | } | ||
391 | elsif (/--shwrap_prefix=(.*)$/) { | ||
392 | $shwrap_prefix = $1; | ||
393 | } | ||
394 | elsif (/^--(enable|disable)-(.*)$/) { | ||
395 | if ( !exists $fips_enabled{$2} ) { | ||
396 | print STDERR "Unknown test $2\n"; | ||
397 | } | ||
398 | if ( $1 eq "enable" ) { | ||
399 | $fips_enabled{$2} = 1; | ||
400 | } | ||
401 | else { | ||
402 | $fips_enabled{$2} = 0; | ||
403 | } | ||
404 | } | ||
405 | elsif (/--filter=(.*)$/) { | ||
406 | $filter = $1; | ||
407 | } | ||
408 | elsif (/^--list-tests$/) { | ||
409 | $list_tests = 1; | ||
410 | } | ||
411 | else { | ||
412 | Help(); | ||
413 | exit(1); | ||
414 | } | ||
415 | } | ||
416 | |||
417 | my @fips_test_list; | ||
418 | |||
419 | push @fips_test_list, @fips_dsa_test_list if $fips_enabled{"dsa"}; | ||
420 | push @fips_test_list, @fips_rsa_test_list if $fips_enabled{"rsa"}; | ||
421 | push @fips_test_list, @fips_rsa_pss0_test_list if $fips_enabled{"rsa-pss0"}; | ||
422 | push @fips_test_list, @fips_rsa_pss62_test_list if $fips_enabled{"rsa-pss62"}; | ||
423 | push @fips_test_list, @fips_sha_test_list if $fips_enabled{"sha"}; | ||
424 | push @fips_test_list, @fips_hmac_test_list if $fips_enabled{"hmac"}; | ||
425 | push @fips_test_list, @fips_rand_aes_test_list if $fips_enabled{"rand-aes"}; | ||
426 | push @fips_test_list, @fips_rand_des2_test_list if $fips_enabled{"rand-des2"}; | ||
427 | push @fips_test_list, @fips_aes_test_list if $fips_enabled{"aes"}; | ||
428 | push @fips_test_list, @fips_aes_cfb1_test_list if $fips_enabled{"aes-cfb1"}; | ||
429 | push @fips_test_list, @fips_des3_test_list if $fips_enabled{"des3"}; | ||
430 | |||
431 | if ($list_tests) { | ||
432 | my ( $test, $en ); | ||
433 | print "=====TEST LIST=====\n"; | ||
434 | foreach $test ( sort keys %fips_enabled ) { | ||
435 | $en = $fips_enabled{$test}; | ||
436 | $test =~ tr/[a-z]/[A-Z]/; | ||
437 | printf "%-10s %s\n", $test, $en ? "enabled" : "disabled"; | ||
438 | } | ||
439 | exit(0); | ||
440 | } | ||
441 | |||
442 | foreach (@fips_test_list) { | ||
443 | next unless ref($_); | ||
444 | my $nm = $_->[0]; | ||
445 | $_->[2] = ""; | ||
446 | $_->[3] = ""; | ||
447 | print STDERR "Duplicate test $nm\n" if exists $fips_tests{$nm}; | ||
448 | $fips_tests{$nm} = $_; | ||
449 | } | ||
450 | |||
451 | $tvdir = "." unless defined $tvdir; | ||
452 | |||
453 | if ($win32) { | ||
454 | if ( !defined $tprefix ) { | ||
455 | if ($onedir) { | ||
456 | $tprefix = ".\\"; | ||
457 | } | ||
458 | else { | ||
459 | $tprefix = "..\\out32dll\\"; | ||
460 | } | ||
461 | } | ||
462 | } | ||
463 | else { | ||
464 | if ($onedir) { | ||
465 | $tprefix = "./" unless defined $tprefix; | ||
466 | $shwrap_prefix = "./" unless defined $shwrap_prefix; | ||
467 | } | ||
468 | else { | ||
469 | $tprefix = "../test/" unless defined $tprefix; | ||
470 | $shwrap_prefix = "../util/" unless defined $shwrap_prefix; | ||
471 | } | ||
472 | } | ||
473 | |||
474 | sanity_check_exe( $win32, $tprefix, $shwrap_prefix ); | ||
475 | |||
476 | my $cmd_prefix = $win32 ? "" : "${shwrap_prefix}shlib_wrap.sh "; | ||
477 | |||
478 | find_files( $filter, $tvdir ); | ||
479 | |||
480 | sanity_check_files(); | ||
481 | |||
482 | my ( $runerr, $cmperr, $cmpok, $scheckrunerr, $scheckerr, $scheckok, $skipcnt ) | ||
483 | = ( 0, 0, 0, 0, 0, 0, 0 ); | ||
484 | |||
485 | exit(0) if $notest; | ||
486 | |||
487 | run_tests( $verify, $win32, $tprefix, $filter, $tvdir ); | ||
488 | |||
489 | if ($verify) { | ||
490 | print "ALGORITHM TEST VERIFY SUMMARY REPORT:\n"; | ||
491 | print "Tests skipped due to missing files: $skipcnt\n"; | ||
492 | print "Algorithm test program execution failures: $runerr\n"; | ||
493 | print "Test comparisons successful: $cmpok\n"; | ||
494 | print "Test comparisons failed: $cmperr\n"; | ||
495 | print "Test sanity checks successful: $scheckok\n"; | ||
496 | print "Test sanity checks failed: $scheckerr\n"; | ||
497 | print "Sanity check program execution failures: $scheckrunerr\n"; | ||
498 | |||
499 | if ( $runerr || $cmperr || $scheckrunerr || $scheckerr ) { | ||
500 | print "***TEST FAILURE***\n"; | ||
501 | } | ||
502 | else { | ||
503 | print "***ALL TESTS SUCCESSFUL***\n"; | ||
504 | } | ||
505 | } | ||
506 | else { | ||
507 | print "ALGORITHM TEST SUMMARY REPORT:\n"; | ||
508 | print "Tests skipped due to missing files: $skipcnt\n"; | ||
509 | print "Algorithm test program execution failures: $runerr\n"; | ||
510 | |||
511 | if ($runerr) { | ||
512 | print "***TEST FAILURE***\n"; | ||
513 | } | ||
514 | else { | ||
515 | print "***ALL TESTS SUCCESSFUL***\n"; | ||
516 | } | ||
517 | } | ||
518 | |||
519 | #-------------------------------- | ||
520 | sub Help { | ||
521 | ( my $cmd ) = ( $0 =~ m#([^/]+)$# ); | ||
522 | print <<EOF; | ||
523 | $cmd: generate run CMVP algorithm tests | ||
524 | --debug Enable debug output | ||
525 | --dir=<dirname> Optional root for *.req file search | ||
526 | --filter=<regexp> | ||
527 | --onedir <dirname> Assume all components in current directory | ||
528 | --rspdir=<dirname> Name of subdirectories containing *.rsp files, default "resp" | ||
529 | --shwrap_prefix=<prefix> | ||
530 | --tprefix=<prefix> | ||
531 | --ignore-bogus Ignore duplicate or bogus files | ||
532 | --ignore-missing Ignore missing test files | ||
533 | --quiet Shhh.... | ||
534 | --generate Generate algorithm test output | ||
535 | --win32 Win32 environment | ||
536 | EOF | ||
537 | } | ||
538 | |||
539 | # Sanity check to see if all necessary executables exist | ||
540 | |||
541 | sub sanity_check_exe { | ||
542 | my ( $win32, $tprefix, $shwrap_prefix ) = @_; | ||
543 | my %exe_list; | ||
544 | my $bad = 0; | ||
545 | $exe_list{ $shwrap_prefix . "shlib_wrap.sh" } = 1 unless $win32; | ||
546 | foreach (@fips_test_list) { | ||
547 | next unless ref($_); | ||
548 | my $cmd = $_->[1]; | ||
549 | $cmd =~ s/ .*$//; | ||
550 | $cmd = $tprefix . $cmd; | ||
551 | $cmd .= ".exe" if $win32; | ||
552 | $exe_list{$cmd} = 1; | ||
553 | } | ||
554 | |||
555 | foreach ( sort keys %exe_list ) { | ||
556 | if ( !-f $_ ) { | ||
557 | print STDERR "ERROR: can't find executable $_\n"; | ||
558 | $bad = 1; | ||
559 | } | ||
560 | } | ||
561 | if ($bad) { | ||
562 | print STDERR "FATAL ERROR: executables missing\n"; | ||
563 | exit(1); | ||
564 | } | ||
565 | elsif ($debug) { | ||
566 | print STDERR "Executable sanity check passed OK\n"; | ||
567 | } | ||
568 | } | ||
569 | |||
570 | # Search for all request and response files | ||
571 | |||
572 | sub find_files { | ||
573 | my ( $filter, $dir ) = @_; | ||
574 | my ( $dirh, $testname ); | ||
575 | opendir( $dirh, $dir ); | ||
576 | while ( $_ = readdir($dirh) ) { | ||
577 | next if ( $_ eq "." || $_ eq ".." ); | ||
578 | $_ = "$dir/$_"; | ||
579 | if ( -f "$_" ) { | ||
580 | if (/\/([^\/]*)\.rsp$/) { | ||
581 | $testname = fix_pss( $1, $_ ); | ||
582 | if ( exists $fips_tests{$testname} ) { | ||
583 | if ( $fips_tests{$testname}->[3] eq "" ) { | ||
584 | $fips_tests{$testname}->[3] = $_; | ||
585 | } | ||
586 | else { | ||
587 | print STDERR | ||
588 | "WARNING: duplicate response file $_ for test $testname\n"; | ||
589 | $nbogus++; | ||
590 | } | ||
591 | } | ||
592 | else { | ||
593 | print STDERR "WARNING: bogus file $_\n"; | ||
594 | $nbogus++; | ||
595 | } | ||
596 | } | ||
597 | next unless /$filter.*\.req$/i; | ||
598 | if (/\/([^\/]*)\.req$/) { | ||
599 | $testname = fix_pss( $1, $_ ); | ||
600 | if ( exists $fips_tests{$testname} ) { | ||
601 | if ( $fips_tests{$testname}->[2] eq "" ) { | ||
602 | $fips_tests{$testname}->[2] = $_; | ||
603 | } | ||
604 | else { | ||
605 | print STDERR | ||
606 | "WARNING: duplicate request file $_ for test $testname\n"; | ||
607 | $nbogus++; | ||
608 | } | ||
609 | |||
610 | } | ||
611 | elsif ( !/SHAmix\.req$/ ) { | ||
612 | print STDERR "WARNING: unrecognized filename $_\n"; | ||
613 | $nbogus++; | ||
614 | } | ||
615 | } | ||
616 | } | ||
617 | elsif ( -d "$_" ) { | ||
618 | find_files( $filter, $_ ); | ||
619 | } | ||
620 | } | ||
621 | closedir($dirh); | ||
622 | } | ||
623 | |||
624 | sub fix_pss { | ||
625 | my ( $test, $path ) = @_; | ||
626 | my $sl = ""; | ||
627 | local $_; | ||
628 | if ( $test =~ /PSS/ ) { | ||
629 | open( IN, $path ) || die "Can't Open File $path"; | ||
630 | while (<IN>) { | ||
631 | if (/^\s*#\s*salt\s+len:\s+(\d+)\s*$/i) { | ||
632 | $sl = $1; | ||
633 | last; | ||
634 | } | ||
635 | } | ||
636 | close IN; | ||
637 | if ( $sl eq "" ) { | ||
638 | print STDERR "WARNING: No Salt length detected for file $path\n"; | ||
639 | } | ||
640 | else { | ||
641 | return $test . "($sl)"; | ||
642 | } | ||
643 | } | ||
644 | return $test; | ||
645 | } | ||
646 | |||
647 | sub sanity_check_files { | ||
648 | my $bad = 0; | ||
649 | foreach (@fips_test_list) { | ||
650 | next unless ref($_); | ||
651 | my ( $tst, $cmd, $req, $resp ) = @$_; | ||
652 | |||
653 | #print STDERR "FILES $tst, $cmd, $req, $resp\n"; | ||
654 | if ( $req eq "" ) { | ||
655 | print STDERR "WARNING: missing request file for $tst\n"; | ||
656 | $bad = 1; | ||
657 | next; | ||
658 | } | ||
659 | if ( $verify && $resp eq "" ) { | ||
660 | print STDERR "WARNING: no response file for test $tst\n"; | ||
661 | $bad = 1; | ||
662 | } | ||
663 | elsif ( !$verify && $resp ne "" ) { | ||
664 | print STDERR "WARNING: response file $resp will be overwritten\n"; | ||
665 | } | ||
666 | } | ||
667 | if ($bad) { | ||
668 | print STDERR "ERROR: test vector file set not complete\n"; | ||
669 | exit(1) unless $ignore_missing; | ||
670 | } | ||
671 | if ($nbogus) { | ||
672 | print STDERR | ||
673 | "ERROR: $nbogus bogus or duplicate request and response files\n"; | ||
674 | exit(1) unless $ignore_bogus; | ||
675 | } | ||
676 | if ( $debug && !$nbogus && !$bad ) { | ||
677 | print STDERR "test vector file set complete\n"; | ||
678 | } | ||
679 | } | ||
680 | |||
681 | sub run_tests { | ||
682 | my ( $verify, $win32, $tprefix, $filter, $tvdir ) = @_; | ||
683 | my ( $tname, $tref ); | ||
684 | my $bad = 0; | ||
685 | foreach (@fips_test_list) { | ||
686 | if ( !ref($_) ) { | ||
687 | print "Running $_ tests\n" unless $quiet; | ||
688 | next; | ||
689 | } | ||
690 | my ( $tname, $tcmd, $req, $rsp ) = @$_; | ||
691 | my $out = $rsp; | ||
692 | if ($verify) { | ||
693 | $out =~ s/\.rsp$/.tst/; | ||
694 | } | ||
695 | if ( $req eq "" ) { | ||
696 | print STDERR | ||
697 | "WARNING: Request file for $tname missing: test skipped\n"; | ||
698 | $skipcnt++; | ||
699 | next; | ||
700 | } | ||
701 | if ( $verify && $rsp eq "" ) { | ||
702 | print STDERR | ||
703 | "WARNING: Response file for $tname missing: test skipped\n"; | ||
704 | $skipcnt++; | ||
705 | next; | ||
706 | } | ||
707 | elsif ( !$verify ) { | ||
708 | if ( $rsp ne "" ) { | ||
709 | print STDERR "WARNING: Response file for $tname deleted\n"; | ||
710 | unlink $rsp; | ||
711 | } | ||
712 | $out = $req; | ||
713 | $out =~ s|/req/(\S+)\.req|/$rspdir/$1.rsp|; | ||
714 | my $outdir = $out; | ||
715 | $outdir =~ s|/[^/]*$||; | ||
716 | if ( !-d $outdir ) { | ||
717 | print STDERR "DEBUG: Creating directory $outdir\n" if $debug; | ||
718 | mkdir($outdir) || die "Can't create directory $outdir"; | ||
719 | } | ||
720 | } | ||
721 | my $cmd = "$cmd_prefix$tprefix$tcmd "; | ||
722 | if ( $tcmd =~ /-f$/ ) { | ||
723 | $cmd .= "$req $out"; | ||
724 | } | ||
725 | else { | ||
726 | $cmd .= "<$req >$out"; | ||
727 | } | ||
728 | print STDERR "DEBUG: running test $tname\n" if ( $debug && !$verify ); | ||
729 | system($cmd); | ||
730 | if ( $? != 0 ) { | ||
731 | print STDERR | ||
732 | "WARNING: error executing test $tname for command: $cmd\n"; | ||
733 | $runerr++; | ||
734 | next; | ||
735 | } | ||
736 | if ($verify) { | ||
737 | if ( exists $verify_special{$tname} ) { | ||
738 | my $vout = $rsp; | ||
739 | $vout =~ s/\.rsp$/.ver/; | ||
740 | $tcmd = $verify_special{$tname}; | ||
741 | $cmd = "$cmd_prefix$tprefix$tcmd "; | ||
742 | $cmd .= "<$out >$vout"; | ||
743 | system($cmd); | ||
744 | if ( $? != 0 ) { | ||
745 | print STDERR | ||
746 | "WARNING: error executing verify test $tname $cmd\n"; | ||
747 | $scheckrunerr++; | ||
748 | next; | ||
749 | } | ||
750 | my ( $fcount, $pcount ) = ( 0, 0 ); | ||
751 | open VER, "$vout"; | ||
752 | while (<VER>) { | ||
753 | if (/^Result\s*=\s*(\S*)\s*$/i) | ||
754 | |||
755 | { | ||
756 | if ( $1 eq "F" ) { | ||
757 | $fcount++; | ||
758 | } | ||
759 | else { | ||
760 | $pcount++; | ||
761 | } | ||
762 | } | ||
763 | } | ||
764 | close VER; | ||
765 | |||
766 | unlink $vout; | ||
767 | if ( $fcount || $debug ) { | ||
768 | print STDERR "DEBUG: $tname, Pass=$pcount, Fail=$fcount\n"; | ||
769 | } | ||
770 | if ( $fcount || !$pcount ) { | ||
771 | $scheckerr++; | ||
772 | } | ||
773 | else { | ||
774 | $scheckok++; | ||
775 | } | ||
776 | |||
777 | } | ||
778 | elsif ( !cmp_file( $tname, $rsp, $out ) ) { | ||
779 | $cmperr++; | ||
780 | } | ||
781 | else { | ||
782 | $cmpok++; | ||
783 | } | ||
784 | unlink $out; | ||
785 | } | ||
786 | } | ||
787 | } | ||
788 | |||
789 | sub cmp_file { | ||
790 | my ( $tname, $rsp, $tst ) = @_; | ||
791 | my ( $rspf, $tstf ); | ||
792 | my ( $rspline, $tstline ); | ||
793 | if ( !open( $rspf, $rsp ) ) { | ||
794 | print STDERR "ERROR: can't open request file $rsp\n"; | ||
795 | return 0; | ||
796 | } | ||
797 | if ( !open( $tstf, $tst ) ) { | ||
798 | print STDERR "ERROR: can't open output file $tst\n"; | ||
799 | return 0; | ||
800 | } | ||
801 | for ( ; ; ) { | ||
802 | $rspline = next_line($rspf); | ||
803 | $tstline = next_line($tstf); | ||
804 | if ( !defined($rspline) && !defined($tstline) ) { | ||
805 | print STDERR "DEBUG: $tname file comparison OK\n" if $debug; | ||
806 | return 1; | ||
807 | } | ||
808 | if ( !defined($rspline) ) { | ||
809 | print STDERR "ERROR: $tname EOF on $rspf\n"; | ||
810 | return 0; | ||
811 | } | ||
812 | if ( !defined($tstline) ) { | ||
813 | print STDERR "ERROR: $tname EOF on $tstf\n"; | ||
814 | return 0; | ||
815 | } | ||
816 | |||
817 | # Workaround for bug in RAND des2 test output */ | ||
818 | if ( $tstline =~ /^Key2 =/ && $rspline =~ /^Key1 =/ ) { | ||
819 | $rspline =~ s/^Key1/Key2/; | ||
820 | } | ||
821 | |||
822 | if ( $tstline ne $rspline ) { | ||
823 | print STDERR "ERROR: $tname mismatch:\n"; | ||
824 | print STDERR "\t $tstline != $rspline\n"; | ||
825 | return 0; | ||
826 | } | ||
827 | } | ||
828 | return 1; | ||
829 | } | ||
830 | |||
831 | sub next_line { | ||
832 | my ($in) = @_; | ||
833 | |||
834 | while (<$in>) { | ||
835 | chomp; | ||
836 | |||
837 | # Delete comments | ||
838 | s/#.*$//; | ||
839 | |||
840 | # Ignore blank lines | ||
841 | next if (/^\s*$/); | ||
842 | |||
843 | # Translate multiple space into one | ||
844 | s/\s+/ /g; | ||
845 | return $_; | ||
846 | } | ||
847 | return undef; | ||
848 | } | ||
diff --git a/src/lib/libssl/src/fips/fipsld b/src/lib/libssl/src/fips/fipsld new file mode 100755 index 0000000000..c71d4d95a5 --- /dev/null +++ b/src/lib/libssl/src/fips/fipsld | |||
@@ -0,0 +1,170 @@ | |||
1 | #!/bin/sh -e | ||
2 | # | ||
3 | # Copyright (c) 2005-2007 The OpenSSL Project. | ||
4 | # | ||
5 | # Depending on output file name, the script either embeds fingerprint | ||
6 | # into libcrypto.so or static application. "Static" refers to static | ||
7 | # libcrypto.a, not [necessarily] application per se. | ||
8 | # | ||
9 | # Even though this script is called fipsld, it expects C compiler | ||
10 | # command line syntax and $FIPSLD_CC or $CC environment variable set | ||
11 | # and can even be used to compile source files. | ||
12 | |||
13 | #set -x | ||
14 | |||
15 | CC=${FIPSLD_CC:-${CC}} | ||
16 | [ -n "${CC}" ] || { echo '$CC is not defined'; exit 1; } | ||
17 | |||
18 | # Initially -c wasn't intended to be interpreted here, but it might | ||
19 | # make life easier for those who want to build FIPS-ified applications | ||
20 | # with minimal [if any] modifications to their Makefiles... | ||
21 | ( while [ "x$1" != "x" -a "x$1" != "x-c" -a "x$1" != "x-E" ]; do shift; done; | ||
22 | [ $# -ge 1 ] | ||
23 | ) && exec ${CC} "$@" | ||
24 | |||
25 | TARGET=`(while [ "x$1" != "x" -a "x$1" != "x-o" ]; do shift; done; echo $2)` | ||
26 | |||
27 | # If using an auto-tooled (autoconf/automake/libtool) project, | ||
28 | # configure will fail when testing the compiler or even performing | ||
29 | # simple checks. Pass-through to compiler directly if application is | ||
30 | # is not being linked with libcrypto, allowing auto-tooled applications | ||
31 | # to utilize fipsld (e.g. CC=/usr/local/ssl/bin/fipsld FIPSLD_CC=gcc | ||
32 | # ./configure && make). But keep in mind[!] that if certified code | ||
33 | # resides in a shared library, then fipsld *may not* be used and | ||
34 | # end-developer should not modify application configuration and build | ||
35 | # procedures. This is because in-core fingerprint and associated | ||
36 | # procedures are already embedded into and executed in shared library | ||
37 | # context. | ||
38 | case `basename "${TARGET}"` in | ||
39 | libcrypto*|libfips*|*.dll) ;; | ||
40 | *) case "$*" in | ||
41 | *libcrypto.a*|*-lcrypto*|*fipscanister.o*) ;; | ||
42 | *) exec ${CC} "$@" ;; | ||
43 | esac | ||
44 | esac | ||
45 | |||
46 | [ -n "${TARGET}" ] || { echo 'no -o specified'; exit 1; } | ||
47 | |||
48 | # Turn on debugging output? | ||
49 | ( while [ "x$1" != "x" -a "x$1" != "x-DDEBUG_FINGERPRINT_PREMAIN" ]; do shift; done; | ||
50 | [ $# -ge 1 ] | ||
51 | ) && set -x | ||
52 | |||
53 | THERE="`echo $0 | sed -e 's|[^/]*$||'`".. | ||
54 | |||
55 | # fipscanister.o can appear in command line | ||
56 | CANISTER_O=`(while [ "x$1" != "x" ]; do case "$1" in *fipscanister.o) echo $1; exit;; esac; shift; done)` | ||
57 | if [ -z "${CANISTER_O}" ]; then | ||
58 | # If set, FIPSLIBDIR is location of installed validated FIPS module | ||
59 | if [ -n "${FIPSLIBDIR}" ]; then | ||
60 | CANISTER_O="${FIPSLIBDIR}/fipscanister.o" | ||
61 | elif [ -f "${THERE}/fips/fipscanister.o" ]; then | ||
62 | CANISTER_O="${THERE}/fips/fipscanister.o" | ||
63 | elif [ -f "${THERE}/lib/fipscanister.o" ]; then | ||
64 | CANISTER_O="${THERE}/lib/fipscanister.o" | ||
65 | fi | ||
66 | CANISTER_O_CMD="${CANISTER_O}" | ||
67 | fi | ||
68 | [ -f ${CANISTER_O} ] || { echo "unable to find ${CANISTER_O}"; exit 1; } | ||
69 | |||
70 | PREMAIN_C=`dirname "${CANISTER_O}"`/fips_premain.c | ||
71 | |||
72 | HMAC_KEY="etaonrishdlcupfm" | ||
73 | |||
74 | case "`(uname -s) 2>/dev/null`" in | ||
75 | OSF1|IRIX*) _WL_PREMAIN="-Wl,-init,FINGERPRINT_premain" ;; | ||
76 | HP-UX) _WL_PREMAIN="-Wl,+init,FINGERPRINT_premain" ;; | ||
77 | AIX) _WL_PREMAIN="-Wl,-binitfini:FINGERPRINT_premain,-bnoobjreorder";; | ||
78 | Darwin) ( while [ "x$1" != "x" -a "x$1" != "x-dynamiclib" ]; do shift; done; | ||
79 | [ $# -ge 1 ] | ||
80 | ) && _WL_PREMAIN="-Wl,-init,_FINGERPRINT_premain" ;; | ||
81 | esac | ||
82 | |||
83 | case "${TARGET}" in | ||
84 | [!/]*) TARGET=./${TARGET} ;; | ||
85 | esac | ||
86 | |||
87 | case `basename "${TARGET}"` in | ||
88 | lib*|*.dll) # must be linking a shared lib... | ||
89 | # Shared lib creation can be taking place in the source | ||
90 | # directory only, but fipscanister.o can reside elsewhere... | ||
91 | FINGERTYPE="${THERE}/fips/fips_standalone_sha1" | ||
92 | |||
93 | # verify fipspremain.c against its detached signature... | ||
94 | ${FINGERTYPE} "${PREMAIN_C}" | sed "s/(.*\//(/" | \ | ||
95 | diff -w "${PREMAIN_C}.sha1" - || \ | ||
96 | { echo "${PREMAIN_C} fingerprint mismatch"; exit 1; } | ||
97 | # verify fipscanister.o against its detached signature... | ||
98 | ${FINGERTYPE} "${CANISTER_O}" | sed "s/(.*\//(/" | \ | ||
99 | diff -w "${CANISTER_O}.sha1" - || \ | ||
100 | { echo "${CANISTER_O} fingerprint mismatch"; exit 1; } | ||
101 | |||
102 | # Temporarily remove fipscanister.o from libcrypto.a! | ||
103 | # We are required to use the standalone copy... | ||
104 | if [ -f "${THERE}/libcrypto.a" ]; then | ||
105 | if ar d "${THERE}/libcrypto.a" fipscanister.o; then | ||
106 | (ranlib "${THERE}/libcrypto.a") 2>/dev/null || : | ||
107 | trap 'ar r "${THERE}/libcrypto.a" "${CANISTER_O}"; | ||
108 | (ranlib "${THERE}/libcrypto.a") 2>/dev/null || :; | ||
109 | sleep 1; | ||
110 | touch -c "${TARGET}"' 0 | ||
111 | fi | ||
112 | fi | ||
113 | |||
114 | /bin/rm -f "${TARGET}" | ||
115 | ${CC} ${CANISTER_O_CMD:+"${CANISTER_O_CMD}"} \ | ||
116 | "${PREMAIN_C}" \ | ||
117 | ${_WL_PREMAIN} "$@" | ||
118 | |||
119 | # generate signature... | ||
120 | SIG=`"${THERE}/fips/fips_premain_dso" "${TARGET}"` | ||
121 | /bin/rm -f "${TARGET}" | ||
122 | if [ -z "${SIG}" ]; then | ||
123 | echo "unable to collect signature"; exit 1 | ||
124 | fi | ||
125 | |||
126 | # recompile with signature... | ||
127 | ${CC} ${CANISTER_O_CMD:+"${CANISTER_O_CMD}"} \ | ||
128 | -DHMAC_SHA1_SIG=\"${SIG}\" "${PREMAIN_C}" \ | ||
129 | ${_WL_PREMAIN} "$@" | ||
130 | ;; | ||
131 | |||
132 | *) # must be linking statically... | ||
133 | # Static linking can be taking place either in the source | ||
134 | # directory or off the installed binary target destination. | ||
135 | if [ -x "${THERE}/fips/fips_standalone_sha1" ]; then | ||
136 | FINGERTYPE="${THERE}/fips/fips_standalone_sha1" | ||
137 | else # Installed tree is expected to contain | ||
138 | # lib/fipscanister.o, lib/fipscanister.o.sha1 and | ||
139 | # lib/fips_premain.c [not to mention bin/openssl]. | ||
140 | FINGERTYPE="${THERE}/bin/openssl sha1 -hmac ${HMAC_KEY}" | ||
141 | fi | ||
142 | |||
143 | # verify fipscanister.o against its detached signature... | ||
144 | ${FINGERTYPE} "${CANISTER_O}" | sed "s/(.*\//(/" | \ | ||
145 | diff -w "${CANISTER_O}.sha1" - || \ | ||
146 | { echo "${CANISTER_O} fingerprint mismatch"; exit 1; } | ||
147 | |||
148 | # verify fips_premain.c against its detached signature... | ||
149 | ${FINGERTYPE} "${PREMAIN_C}" | sed "s/(.*\//(/" | \ | ||
150 | diff -w "${PREMAIN_C}.sha1" - || \ | ||
151 | { echo "${PREMAIN_C} fingerprint mismatch"; exit 1; } | ||
152 | |||
153 | /bin/rm -f "${TARGET}" | ||
154 | ${CC} ${CANISTER_O_CMD:+"${CANISTER_O_CMD}"} \ | ||
155 | "${PREMAIN_C}" \ | ||
156 | ${_WL_PREMAIN} "$@" | ||
157 | |||
158 | # generate signature... | ||
159 | SIG=`"${TARGET}"` | ||
160 | /bin/rm -f "${TARGET}" | ||
161 | if [ -z "${SIG}" ]; then | ||
162 | echo "unable to collect signature"; exit 1 | ||
163 | fi | ||
164 | |||
165 | # recompile with signature... | ||
166 | ${CC} ${CANISTER_O_CMD:+"${CANISTER_O_CMD}"} \ | ||
167 | -DHMAC_SHA1_SIG=\"${SIG}\" "${PREMAIN_C}" \ | ||
168 | ${_WL_PREMAIN} "$@" | ||
169 | ;; | ||
170 | esac | ||
diff --git a/src/lib/libssl/src/fips/fipstests.bat b/src/lib/libssl/src/fips/fipstests.bat new file mode 100644 index 0000000000..aae3b13fd1 --- /dev/null +++ b/src/lib/libssl/src/fips/fipstests.bat | |||
@@ -0,0 +1,229 @@ | |||
1 | @echo off | ||
2 | rem Test vector run script | ||
3 | rem Auto generated by mkfipsscr.pl script | ||
4 | rem Do not edit | ||
5 | |||
6 | |||
7 | echo Running tests in .\testvectors\AES\req | ||
8 | if exist ".\testvectors\AES\rsp" rd /s /q ".\testvectors\AES\rsp" | ||
9 | md ".\testvectors\AES\rsp" | ||
10 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CBCGFSbox128.req" ".\testvectors\AES\rsp\CBCGFSbox128.rsp" | ||
11 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CBCGFSbox192.req" ".\testvectors\AES\rsp\CBCGFSbox192.rsp" | ||
12 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CBCGFSbox256.req" ".\testvectors\AES\rsp\CBCGFSbox256.rsp" | ||
13 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CBCKeySbox128.req" ".\testvectors\AES\rsp\CBCKeySbox128.rsp" | ||
14 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CBCKeySbox192.req" ".\testvectors\AES\rsp\CBCKeySbox192.rsp" | ||
15 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CBCKeySbox256.req" ".\testvectors\AES\rsp\CBCKeySbox256.rsp" | ||
16 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CBCMCT128.req" ".\testvectors\AES\rsp\CBCMCT128.rsp" | ||
17 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CBCMCT192.req" ".\testvectors\AES\rsp\CBCMCT192.rsp" | ||
18 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CBCMCT256.req" ".\testvectors\AES\rsp\CBCMCT256.rsp" | ||
19 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CBCMMT128.req" ".\testvectors\AES\rsp\CBCMMT128.rsp" | ||
20 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CBCMMT192.req" ".\testvectors\AES\rsp\CBCMMT192.rsp" | ||
21 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CBCMMT256.req" ".\testvectors\AES\rsp\CBCMMT256.rsp" | ||
22 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CBCVarKey128.req" ".\testvectors\AES\rsp\CBCVarKey128.rsp" | ||
23 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CBCVarKey192.req" ".\testvectors\AES\rsp\CBCVarKey192.rsp" | ||
24 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CBCVarKey256.req" ".\testvectors\AES\rsp\CBCVarKey256.rsp" | ||
25 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CBCVarTxt128.req" ".\testvectors\AES\rsp\CBCVarTxt128.rsp" | ||
26 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CBCVarTxt192.req" ".\testvectors\AES\rsp\CBCVarTxt192.rsp" | ||
27 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CBCVarTxt256.req" ".\testvectors\AES\rsp\CBCVarTxt256.rsp" | ||
28 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB128GFSbox128.req" ".\testvectors\AES\rsp\CFB128GFSbox128.rsp" | ||
29 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB128GFSbox192.req" ".\testvectors\AES\rsp\CFB128GFSbox192.rsp" | ||
30 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB128GFSbox256.req" ".\testvectors\AES\rsp\CFB128GFSbox256.rsp" | ||
31 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB128KeySbox128.req" ".\testvectors\AES\rsp\CFB128KeySbox128.rsp" | ||
32 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB128KeySbox192.req" ".\testvectors\AES\rsp\CFB128KeySbox192.rsp" | ||
33 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB128KeySbox256.req" ".\testvectors\AES\rsp\CFB128KeySbox256.rsp" | ||
34 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB128MCT128.req" ".\testvectors\AES\rsp\CFB128MCT128.rsp" | ||
35 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB128MCT192.req" ".\testvectors\AES\rsp\CFB128MCT192.rsp" | ||
36 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB128MCT256.req" ".\testvectors\AES\rsp\CFB128MCT256.rsp" | ||
37 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB128MMT128.req" ".\testvectors\AES\rsp\CFB128MMT128.rsp" | ||
38 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB128MMT192.req" ".\testvectors\AES\rsp\CFB128MMT192.rsp" | ||
39 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB128MMT256.req" ".\testvectors\AES\rsp\CFB128MMT256.rsp" | ||
40 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB128VarKey128.req" ".\testvectors\AES\rsp\CFB128VarKey128.rsp" | ||
41 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB128VarKey192.req" ".\testvectors\AES\rsp\CFB128VarKey192.rsp" | ||
42 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB128VarKey256.req" ".\testvectors\AES\rsp\CFB128VarKey256.rsp" | ||
43 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB128VarTxt128.req" ".\testvectors\AES\rsp\CFB128VarTxt128.rsp" | ||
44 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB128VarTxt192.req" ".\testvectors\AES\rsp\CFB128VarTxt192.rsp" | ||
45 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB128VarTxt256.req" ".\testvectors\AES\rsp\CFB128VarTxt256.rsp" | ||
46 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB1GFSbox128.req" ".\testvectors\AES\rsp\CFB1GFSbox128.rsp" | ||
47 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB1GFSbox192.req" ".\testvectors\AES\rsp\CFB1GFSbox192.rsp" | ||
48 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB1GFSbox256.req" ".\testvectors\AES\rsp\CFB1GFSbox256.rsp" | ||
49 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB1KeySbox128.req" ".\testvectors\AES\rsp\CFB1KeySbox128.rsp" | ||
50 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB1KeySbox192.req" ".\testvectors\AES\rsp\CFB1KeySbox192.rsp" | ||
51 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB1KeySbox256.req" ".\testvectors\AES\rsp\CFB1KeySbox256.rsp" | ||
52 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB1MCT128.req" ".\testvectors\AES\rsp\CFB1MCT128.rsp" | ||
53 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB1MCT192.req" ".\testvectors\AES\rsp\CFB1MCT192.rsp" | ||
54 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB1MCT256.req" ".\testvectors\AES\rsp\CFB1MCT256.rsp" | ||
55 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB1MMT128.req" ".\testvectors\AES\rsp\CFB1MMT128.rsp" | ||
56 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB1MMT192.req" ".\testvectors\AES\rsp\CFB1MMT192.rsp" | ||
57 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB1MMT256.req" ".\testvectors\AES\rsp\CFB1MMT256.rsp" | ||
58 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB1VarKey128.req" ".\testvectors\AES\rsp\CFB1VarKey128.rsp" | ||
59 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB1VarKey192.req" ".\testvectors\AES\rsp\CFB1VarKey192.rsp" | ||
60 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB1VarKey256.req" ".\testvectors\AES\rsp\CFB1VarKey256.rsp" | ||
61 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB1VarTxt128.req" ".\testvectors\AES\rsp\CFB1VarTxt128.rsp" | ||
62 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB1VarTxt192.req" ".\testvectors\AES\rsp\CFB1VarTxt192.rsp" | ||
63 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB1VarTxt256.req" ".\testvectors\AES\rsp\CFB1VarTxt256.rsp" | ||
64 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB8GFSbox128.req" ".\testvectors\AES\rsp\CFB8GFSbox128.rsp" | ||
65 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB8GFSbox192.req" ".\testvectors\AES\rsp\CFB8GFSbox192.rsp" | ||
66 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB8GFSbox256.req" ".\testvectors\AES\rsp\CFB8GFSbox256.rsp" | ||
67 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB8KeySbox128.req" ".\testvectors\AES\rsp\CFB8KeySbox128.rsp" | ||
68 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB8KeySbox192.req" ".\testvectors\AES\rsp\CFB8KeySbox192.rsp" | ||
69 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB8KeySbox256.req" ".\testvectors\AES\rsp\CFB8KeySbox256.rsp" | ||
70 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB8MCT128.req" ".\testvectors\AES\rsp\CFB8MCT128.rsp" | ||
71 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB8MCT192.req" ".\testvectors\AES\rsp\CFB8MCT192.rsp" | ||
72 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB8MCT256.req" ".\testvectors\AES\rsp\CFB8MCT256.rsp" | ||
73 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB8MMT128.req" ".\testvectors\AES\rsp\CFB8MMT128.rsp" | ||
74 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB8MMT192.req" ".\testvectors\AES\rsp\CFB8MMT192.rsp" | ||
75 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB8MMT256.req" ".\testvectors\AES\rsp\CFB8MMT256.rsp" | ||
76 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB8VarKey128.req" ".\testvectors\AES\rsp\CFB8VarKey128.rsp" | ||
77 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB8VarKey192.req" ".\testvectors\AES\rsp\CFB8VarKey192.rsp" | ||
78 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB8VarKey256.req" ".\testvectors\AES\rsp\CFB8VarKey256.rsp" | ||
79 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB8VarTxt128.req" ".\testvectors\AES\rsp\CFB8VarTxt128.rsp" | ||
80 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB8VarTxt192.req" ".\testvectors\AES\rsp\CFB8VarTxt192.rsp" | ||
81 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\CFB8VarTxt256.req" ".\testvectors\AES\rsp\CFB8VarTxt256.rsp" | ||
82 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\ECBGFSbox128.req" ".\testvectors\AES\rsp\ECBGFSbox128.rsp" | ||
83 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\ECBGFSbox192.req" ".\testvectors\AES\rsp\ECBGFSbox192.rsp" | ||
84 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\ECBGFSbox256.req" ".\testvectors\AES\rsp\ECBGFSbox256.rsp" | ||
85 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\ECBKeySbox128.req" ".\testvectors\AES\rsp\ECBKeySbox128.rsp" | ||
86 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\ECBKeySbox192.req" ".\testvectors\AES\rsp\ECBKeySbox192.rsp" | ||
87 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\ECBKeySbox256.req" ".\testvectors\AES\rsp\ECBKeySbox256.rsp" | ||
88 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\ECBMCT128.req" ".\testvectors\AES\rsp\ECBMCT128.rsp" | ||
89 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\ECBMCT192.req" ".\testvectors\AES\rsp\ECBMCT192.rsp" | ||
90 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\ECBMCT256.req" ".\testvectors\AES\rsp\ECBMCT256.rsp" | ||
91 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\ECBMMT128.req" ".\testvectors\AES\rsp\ECBMMT128.rsp" | ||
92 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\ECBMMT192.req" ".\testvectors\AES\rsp\ECBMMT192.rsp" | ||
93 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\ECBMMT256.req" ".\testvectors\AES\rsp\ECBMMT256.rsp" | ||
94 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\ECBVarKey128.req" ".\testvectors\AES\rsp\ECBVarKey128.rsp" | ||
95 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\ECBVarKey192.req" ".\testvectors\AES\rsp\ECBVarKey192.rsp" | ||
96 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\ECBVarKey256.req" ".\testvectors\AES\rsp\ECBVarKey256.rsp" | ||
97 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\ECBVarTxt128.req" ".\testvectors\AES\rsp\ECBVarTxt128.rsp" | ||
98 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\ECBVarTxt192.req" ".\testvectors\AES\rsp\ECBVarTxt192.rsp" | ||
99 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\ECBVarTxt256.req" ".\testvectors\AES\rsp\ECBVarTxt256.rsp" | ||
100 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\OFBGFSbox128.req" ".\testvectors\AES\rsp\OFBGFSbox128.rsp" | ||
101 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\OFBGFSbox192.req" ".\testvectors\AES\rsp\OFBGFSbox192.rsp" | ||
102 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\OFBGFSbox256.req" ".\testvectors\AES\rsp\OFBGFSbox256.rsp" | ||
103 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\OFBKeySbox128.req" ".\testvectors\AES\rsp\OFBKeySbox128.rsp" | ||
104 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\OFBKeySbox192.req" ".\testvectors\AES\rsp\OFBKeySbox192.rsp" | ||
105 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\OFBKeySbox256.req" ".\testvectors\AES\rsp\OFBKeySbox256.rsp" | ||
106 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\OFBMCT128.req" ".\testvectors\AES\rsp\OFBMCT128.rsp" | ||
107 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\OFBMCT192.req" ".\testvectors\AES\rsp\OFBMCT192.rsp" | ||
108 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\OFBMCT256.req" ".\testvectors\AES\rsp\OFBMCT256.rsp" | ||
109 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\OFBMMT128.req" ".\testvectors\AES\rsp\OFBMMT128.rsp" | ||
110 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\OFBMMT192.req" ".\testvectors\AES\rsp\OFBMMT192.rsp" | ||
111 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\OFBMMT256.req" ".\testvectors\AES\rsp\OFBMMT256.rsp" | ||
112 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\OFBVarKey128.req" ".\testvectors\AES\rsp\OFBVarKey128.rsp" | ||
113 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\OFBVarKey192.req" ".\testvectors\AES\rsp\OFBVarKey192.rsp" | ||
114 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\OFBVarKey256.req" ".\testvectors\AES\rsp\OFBVarKey256.rsp" | ||
115 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\OFBVarTxt128.req" ".\testvectors\AES\rsp\OFBVarTxt128.rsp" | ||
116 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\OFBVarTxt192.req" ".\testvectors\AES\rsp\OFBVarTxt192.rsp" | ||
117 | ..\out32dll\fips_aesavs -f ".\testvectors\AES\req\OFBVarTxt256.req" ".\testvectors\AES\rsp\OFBVarTxt256.rsp" | ||
118 | |||
119 | echo Running tests in .\testvectors\DSA\req | ||
120 | if exist ".\testvectors\DSA\rsp" rd /s /q ".\testvectors\DSA\rsp" | ||
121 | md ".\testvectors\DSA\rsp" | ||
122 | ..\out32dll\fips_dssvs keypair < ".\testvectors\DSA\req\KeyPair.req" > ".\testvectors\DSA\rsp\KeyPair.rsp" | ||
123 | ..\out32dll\fips_dssvs pqg < ".\testvectors\DSA\req\PQGGen.req" > ".\testvectors\DSA\rsp\PQGGen.rsp" | ||
124 | ..\out32dll\fips_dssvs siggen < ".\testvectors\DSA\req\SigGen.req" > ".\testvectors\DSA\rsp\SigGen.rsp" | ||
125 | ..\out32dll\fips_dssvs sigver < ".\testvectors\DSA\req\SigVer.req" > ".\testvectors\DSA\rsp\SigVer.rsp" | ||
126 | |||
127 | echo Running tests in .\testvectors\HMAC\req | ||
128 | if exist ".\testvectors\HMAC\rsp" rd /s /q ".\testvectors\HMAC\rsp" | ||
129 | md ".\testvectors\HMAC\rsp" | ||
130 | ..\out32dll\fips_hmactest < ".\testvectors\HMAC\req\HMAC.req" > ".\testvectors\HMAC\rsp\HMAC.rsp" | ||
131 | |||
132 | echo Running tests in .\testvectors\RNG\req | ||
133 | if exist ".\testvectors\RNG\rsp" rd /s /q ".\testvectors\RNG\rsp" | ||
134 | md ".\testvectors\RNG\rsp" | ||
135 | ..\out32dll\fips_rngvs mct < ".\testvectors\RNG\req\ANSI931_AES128MCT.req" > ".\testvectors\RNG\rsp\ANSI931_AES128MCT.rsp" | ||
136 | ..\out32dll\fips_rngvs vst < ".\testvectors\RNG\req\ANSI931_AES128VST.req" > ".\testvectors\RNG\rsp\ANSI931_AES128VST.rsp" | ||
137 | ..\out32dll\fips_rngvs mct < ".\testvectors\RNG\req\ANSI931_AES192MCT.req" > ".\testvectors\RNG\rsp\ANSI931_AES192MCT.rsp" | ||
138 | ..\out32dll\fips_rngvs vst < ".\testvectors\RNG\req\ANSI931_AES192VST.req" > ".\testvectors\RNG\rsp\ANSI931_AES192VST.rsp" | ||
139 | ..\out32dll\fips_rngvs mct < ".\testvectors\RNG\req\ANSI931_AES256MCT.req" > ".\testvectors\RNG\rsp\ANSI931_AES256MCT.rsp" | ||
140 | ..\out32dll\fips_rngvs vst < ".\testvectors\RNG\req\ANSI931_AES256VST.req" > ".\testvectors\RNG\rsp\ANSI931_AES256VST.rsp" | ||
141 | |||
142 | echo Running tests in .\testvectors\RSA\req | ||
143 | if exist ".\testvectors\RSA\rsp" rd /s /q ".\testvectors\RSA\rsp" | ||
144 | md ".\testvectors\RSA\rsp" | ||
145 | ..\out32dll\fips_rsagtest < ".\testvectors\RSA\req\KeyGenRSA.req" > ".\testvectors\RSA\rsp\KeyGenRSA.rsp" | ||
146 | ..\out32dll\fips_rsastest < ".\testvectors\RSA\req\SigGen15.req" > ".\testvectors\RSA\rsp\SigGen15.rsp" | ||
147 | ..\out32dll\fips_rsastest -saltlen 0 < ".\testvectors\RSA\req\SigGenPSS.req" > ".\testvectors\RSA\rsp\SigGenPSS.rsp" | ||
148 | ..\out32dll\fips_rsastest -x931 < ".\testvectors\RSA\req\SigGenRSA.req" > ".\testvectors\RSA\rsp\SigGenRSA.rsp" | ||
149 | ..\out32dll\fips_rsavtest < ".\testvectors\RSA\req\SigVer15.req" > ".\testvectors\RSA\rsp\SigVer15.rsp" | ||
150 | ..\out32dll\fips_rsavtest -saltlen 0 < ".\testvectors\RSA\req\SigVerPSS.req" > ".\testvectors\RSA\rsp\SigVerPSS.rsp" | ||
151 | ..\out32dll\fips_rsavtest -x931 < ".\testvectors\RSA\req\SigVerRSA.req" > ".\testvectors\RSA\rsp\SigVerRSA.rsp" | ||
152 | |||
153 | echo Running tests in .\testvectors\SHA\req | ||
154 | if exist ".\testvectors\SHA\rsp" rd /s /q ".\testvectors\SHA\rsp" | ||
155 | md ".\testvectors\SHA\rsp" | ||
156 | ..\out32dll\fips_shatest < ".\testvectors\SHA\req\SHA1LongMsg.req" > ".\testvectors\SHA\rsp\SHA1LongMsg.rsp" | ||
157 | ..\out32dll\fips_shatest < ".\testvectors\SHA\req\SHA1Monte.req" > ".\testvectors\SHA\rsp\SHA1Monte.rsp" | ||
158 | ..\out32dll\fips_shatest < ".\testvectors\SHA\req\SHA1ShortMsg.req" > ".\testvectors\SHA\rsp\SHA1ShortMsg.rsp" | ||
159 | ..\out32dll\fips_shatest < ".\testvectors\SHA\req\SHA224LongMsg.req" > ".\testvectors\SHA\rsp\SHA224LongMsg.rsp" | ||
160 | ..\out32dll\fips_shatest < ".\testvectors\SHA\req\SHA224Monte.req" > ".\testvectors\SHA\rsp\SHA224Monte.rsp" | ||
161 | ..\out32dll\fips_shatest < ".\testvectors\SHA\req\SHA224ShortMsg.req" > ".\testvectors\SHA\rsp\SHA224ShortMsg.rsp" | ||
162 | ..\out32dll\fips_shatest < ".\testvectors\SHA\req\SHA256LongMsg.req" > ".\testvectors\SHA\rsp\SHA256LongMsg.rsp" | ||
163 | ..\out32dll\fips_shatest < ".\testvectors\SHA\req\SHA256Monte.req" > ".\testvectors\SHA\rsp\SHA256Monte.rsp" | ||
164 | ..\out32dll\fips_shatest < ".\testvectors\SHA\req\SHA256ShortMsg.req" > ".\testvectors\SHA\rsp\SHA256ShortMsg.rsp" | ||
165 | ..\out32dll\fips_shatest < ".\testvectors\SHA\req\SHA384LongMsg.req" > ".\testvectors\SHA\rsp\SHA384LongMsg.rsp" | ||
166 | ..\out32dll\fips_shatest < ".\testvectors\SHA\req\SHA384Monte.req" > ".\testvectors\SHA\rsp\SHA384Monte.rsp" | ||
167 | ..\out32dll\fips_shatest < ".\testvectors\SHA\req\SHA384ShortMsg.req" > ".\testvectors\SHA\rsp\SHA384ShortMsg.rsp" | ||
168 | ..\out32dll\fips_shatest < ".\testvectors\SHA\req\SHA512LongMsg.req" > ".\testvectors\SHA\rsp\SHA512LongMsg.rsp" | ||
169 | ..\out32dll\fips_shatest < ".\testvectors\SHA\req\SHA512Monte.req" > ".\testvectors\SHA\rsp\SHA512Monte.rsp" | ||
170 | ..\out32dll\fips_shatest < ".\testvectors\SHA\req\SHA512ShortMsg.req" > ".\testvectors\SHA\rsp\SHA512ShortMsg.rsp" | ||
171 | |||
172 | echo Running tests in .\testvectors\TDES\req | ||
173 | if exist ".\testvectors\TDES\rsp" rd /s /q ".\testvectors\TDES\rsp" | ||
174 | md ".\testvectors\TDES\rsp" | ||
175 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCBCinvperm.req" ".\testvectors\TDES\rsp\TCBCinvperm.rsp" | ||
176 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCBCMMT1.req" ".\testvectors\TDES\rsp\TCBCMMT1.rsp" | ||
177 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCBCMMT2.req" ".\testvectors\TDES\rsp\TCBCMMT2.rsp" | ||
178 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCBCMMT3.req" ".\testvectors\TDES\rsp\TCBCMMT3.rsp" | ||
179 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCBCMonte1.req" ".\testvectors\TDES\rsp\TCBCMonte1.rsp" | ||
180 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCBCMonte2.req" ".\testvectors\TDES\rsp\TCBCMonte2.rsp" | ||
181 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCBCMonte3.req" ".\testvectors\TDES\rsp\TCBCMonte3.rsp" | ||
182 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCBCpermop.req" ".\testvectors\TDES\rsp\TCBCpermop.rsp" | ||
183 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCBCsubtab.req" ".\testvectors\TDES\rsp\TCBCsubtab.rsp" | ||
184 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCBCvarkey.req" ".\testvectors\TDES\rsp\TCBCvarkey.rsp" | ||
185 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCBCvartext.req" ".\testvectors\TDES\rsp\TCBCvartext.rsp" | ||
186 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCFB64invperm.req" ".\testvectors\TDES\rsp\TCFB64invperm.rsp" | ||
187 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCFB64MMT1.req" ".\testvectors\TDES\rsp\TCFB64MMT1.rsp" | ||
188 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCFB64MMT2.req" ".\testvectors\TDES\rsp\TCFB64MMT2.rsp" | ||
189 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCFB64MMT3.req" ".\testvectors\TDES\rsp\TCFB64MMT3.rsp" | ||
190 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCFB64Monte1.req" ".\testvectors\TDES\rsp\TCFB64Monte1.rsp" | ||
191 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCFB64Monte2.req" ".\testvectors\TDES\rsp\TCFB64Monte2.rsp" | ||
192 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCFB64Monte3.req" ".\testvectors\TDES\rsp\TCFB64Monte3.rsp" | ||
193 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCFB64permop.req" ".\testvectors\TDES\rsp\TCFB64permop.rsp" | ||
194 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCFB64subtab.req" ".\testvectors\TDES\rsp\TCFB64subtab.rsp" | ||
195 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCFB64varkey.req" ".\testvectors\TDES\rsp\TCFB64varkey.rsp" | ||
196 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCFB64vartext.req" ".\testvectors\TDES\rsp\TCFB64vartext.rsp" | ||
197 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCFB8invperm.req" ".\testvectors\TDES\rsp\TCFB8invperm.rsp" | ||
198 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCFB8MMT1.req" ".\testvectors\TDES\rsp\TCFB8MMT1.rsp" | ||
199 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCFB8MMT2.req" ".\testvectors\TDES\rsp\TCFB8MMT2.rsp" | ||
200 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCFB8MMT3.req" ".\testvectors\TDES\rsp\TCFB8MMT3.rsp" | ||
201 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCFB8Monte1.req" ".\testvectors\TDES\rsp\TCFB8Monte1.rsp" | ||
202 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCFB8Monte2.req" ".\testvectors\TDES\rsp\TCFB8Monte2.rsp" | ||
203 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCFB8Monte3.req" ".\testvectors\TDES\rsp\TCFB8Monte3.rsp" | ||
204 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCFB8permop.req" ".\testvectors\TDES\rsp\TCFB8permop.rsp" | ||
205 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCFB8subtab.req" ".\testvectors\TDES\rsp\TCFB8subtab.rsp" | ||
206 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCFB8varkey.req" ".\testvectors\TDES\rsp\TCFB8varkey.rsp" | ||
207 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TCFB8vartext.req" ".\testvectors\TDES\rsp\TCFB8vartext.rsp" | ||
208 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TECBinvperm.req" ".\testvectors\TDES\rsp\TECBinvperm.rsp" | ||
209 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TECBMMT1.req" ".\testvectors\TDES\rsp\TECBMMT1.rsp" | ||
210 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TECBMMT2.req" ".\testvectors\TDES\rsp\TECBMMT2.rsp" | ||
211 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TECBMMT3.req" ".\testvectors\TDES\rsp\TECBMMT3.rsp" | ||
212 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TECBMonte1.req" ".\testvectors\TDES\rsp\TECBMonte1.rsp" | ||
213 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TECBMonte2.req" ".\testvectors\TDES\rsp\TECBMonte2.rsp" | ||
214 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TECBMonte3.req" ".\testvectors\TDES\rsp\TECBMonte3.rsp" | ||
215 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TECBpermop.req" ".\testvectors\TDES\rsp\TECBpermop.rsp" | ||
216 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TECBsubtab.req" ".\testvectors\TDES\rsp\TECBsubtab.rsp" | ||
217 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TECBvarkey.req" ".\testvectors\TDES\rsp\TECBvarkey.rsp" | ||
218 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TECBvartext.req" ".\testvectors\TDES\rsp\TECBvartext.rsp" | ||
219 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TOFBinvperm.req" ".\testvectors\TDES\rsp\TOFBinvperm.rsp" | ||
220 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TOFBMMT1.req" ".\testvectors\TDES\rsp\TOFBMMT1.rsp" | ||
221 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TOFBMMT2.req" ".\testvectors\TDES\rsp\TOFBMMT2.rsp" | ||
222 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TOFBMMT3.req" ".\testvectors\TDES\rsp\TOFBMMT3.rsp" | ||
223 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TOFBMonte1.req" ".\testvectors\TDES\rsp\TOFBMonte1.rsp" | ||
224 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TOFBMonte2.req" ".\testvectors\TDES\rsp\TOFBMonte2.rsp" | ||
225 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TOFBMonte3.req" ".\testvectors\TDES\rsp\TOFBMonte3.rsp" | ||
226 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TOFBpermop.req" ".\testvectors\TDES\rsp\TOFBpermop.rsp" | ||
227 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TOFBsubtab.req" ".\testvectors\TDES\rsp\TOFBsubtab.rsp" | ||
228 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TOFBvarkey.req" ".\testvectors\TDES\rsp\TOFBvarkey.rsp" | ||
229 | ..\out32dll\fips_desmovs -f ".\testvectors\TDES\req\TOFBvartext.req" ".\testvectors\TDES\rsp\TOFBvartext.rsp" | ||
diff --git a/src/lib/libssl/src/fips/fipstests.sh b/src/lib/libssl/src/fips/fipstests.sh new file mode 100644 index 0000000000..a351446942 --- /dev/null +++ b/src/lib/libssl/src/fips/fipstests.sh | |||
@@ -0,0 +1,400 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | # Test vector run script | ||
4 | # Auto generated by mkfipsscr.pl script | ||
5 | # Do not edit | ||
6 | |||
7 | |||
8 | echo Running tests in "./testvectors/AES/req" | ||
9 | rm -rf "./testvectors/AES/rsp" | ||
10 | mkdir "./testvectors/AES/rsp" | ||
11 | |||
12 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CBCGFSbox128.req" "./testvectors/AES/rsp/CBCGFSbox128.rsp" || { echo "./testvectors/AES/req/CBCGFSbox128.req failure" ; exit 1 | ||
13 | } | ||
14 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CBCGFSbox192.req" "./testvectors/AES/rsp/CBCGFSbox192.rsp" || { echo "./testvectors/AES/req/CBCGFSbox192.req failure" ; exit 1 | ||
15 | } | ||
16 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CBCGFSbox256.req" "./testvectors/AES/rsp/CBCGFSbox256.rsp" || { echo "./testvectors/AES/req/CBCGFSbox256.req failure" ; exit 1 | ||
17 | } | ||
18 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CBCKeySbox128.req" "./testvectors/AES/rsp/CBCKeySbox128.rsp" || { echo "./testvectors/AES/req/CBCKeySbox128.req failure" ; exit 1 | ||
19 | } | ||
20 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CBCKeySbox192.req" "./testvectors/AES/rsp/CBCKeySbox192.rsp" || { echo "./testvectors/AES/req/CBCKeySbox192.req failure" ; exit 1 | ||
21 | } | ||
22 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CBCKeySbox256.req" "./testvectors/AES/rsp/CBCKeySbox256.rsp" || { echo "./testvectors/AES/req/CBCKeySbox256.req failure" ; exit 1 | ||
23 | } | ||
24 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CBCMCT128.req" "./testvectors/AES/rsp/CBCMCT128.rsp" || { echo "./testvectors/AES/req/CBCMCT128.req failure" ; exit 1 | ||
25 | } | ||
26 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CBCMCT192.req" "./testvectors/AES/rsp/CBCMCT192.rsp" || { echo "./testvectors/AES/req/CBCMCT192.req failure" ; exit 1 | ||
27 | } | ||
28 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CBCMCT256.req" "./testvectors/AES/rsp/CBCMCT256.rsp" || { echo "./testvectors/AES/req/CBCMCT256.req failure" ; exit 1 | ||
29 | } | ||
30 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CBCMMT128.req" "./testvectors/AES/rsp/CBCMMT128.rsp" || { echo "./testvectors/AES/req/CBCMMT128.req failure" ; exit 1 | ||
31 | } | ||
32 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CBCMMT192.req" "./testvectors/AES/rsp/CBCMMT192.rsp" || { echo "./testvectors/AES/req/CBCMMT192.req failure" ; exit 1 | ||
33 | } | ||
34 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CBCMMT256.req" "./testvectors/AES/rsp/CBCMMT256.rsp" || { echo "./testvectors/AES/req/CBCMMT256.req failure" ; exit 1 | ||
35 | } | ||
36 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CBCVarKey128.req" "./testvectors/AES/rsp/CBCVarKey128.rsp" || { echo "./testvectors/AES/req/CBCVarKey128.req failure" ; exit 1 | ||
37 | } | ||
38 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CBCVarKey192.req" "./testvectors/AES/rsp/CBCVarKey192.rsp" || { echo "./testvectors/AES/req/CBCVarKey192.req failure" ; exit 1 | ||
39 | } | ||
40 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CBCVarKey256.req" "./testvectors/AES/rsp/CBCVarKey256.rsp" || { echo "./testvectors/AES/req/CBCVarKey256.req failure" ; exit 1 | ||
41 | } | ||
42 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CBCVarTxt128.req" "./testvectors/AES/rsp/CBCVarTxt128.rsp" || { echo "./testvectors/AES/req/CBCVarTxt128.req failure" ; exit 1 | ||
43 | } | ||
44 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CBCVarTxt192.req" "./testvectors/AES/rsp/CBCVarTxt192.rsp" || { echo "./testvectors/AES/req/CBCVarTxt192.req failure" ; exit 1 | ||
45 | } | ||
46 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CBCVarTxt256.req" "./testvectors/AES/rsp/CBCVarTxt256.rsp" || { echo "./testvectors/AES/req/CBCVarTxt256.req failure" ; exit 1 | ||
47 | } | ||
48 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB128GFSbox128.req" "./testvectors/AES/rsp/CFB128GFSbox128.rsp" || { echo "./testvectors/AES/req/CFB128GFSbox128.req failure" ; exit 1 | ||
49 | } | ||
50 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB128GFSbox192.req" "./testvectors/AES/rsp/CFB128GFSbox192.rsp" || { echo "./testvectors/AES/req/CFB128GFSbox192.req failure" ; exit 1 | ||
51 | } | ||
52 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB128GFSbox256.req" "./testvectors/AES/rsp/CFB128GFSbox256.rsp" || { echo "./testvectors/AES/req/CFB128GFSbox256.req failure" ; exit 1 | ||
53 | } | ||
54 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB128KeySbox128.req" "./testvectors/AES/rsp/CFB128KeySbox128.rsp" || { echo "./testvectors/AES/req/CFB128KeySbox128.req failure" ; exit 1 | ||
55 | } | ||
56 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB128KeySbox192.req" "./testvectors/AES/rsp/CFB128KeySbox192.rsp" || { echo "./testvectors/AES/req/CFB128KeySbox192.req failure" ; exit 1 | ||
57 | } | ||
58 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB128KeySbox256.req" "./testvectors/AES/rsp/CFB128KeySbox256.rsp" || { echo "./testvectors/AES/req/CFB128KeySbox256.req failure" ; exit 1 | ||
59 | } | ||
60 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB128MCT128.req" "./testvectors/AES/rsp/CFB128MCT128.rsp" || { echo "./testvectors/AES/req/CFB128MCT128.req failure" ; exit 1 | ||
61 | } | ||
62 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB128MCT192.req" "./testvectors/AES/rsp/CFB128MCT192.rsp" || { echo "./testvectors/AES/req/CFB128MCT192.req failure" ; exit 1 | ||
63 | } | ||
64 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB128MCT256.req" "./testvectors/AES/rsp/CFB128MCT256.rsp" || { echo "./testvectors/AES/req/CFB128MCT256.req failure" ; exit 1 | ||
65 | } | ||
66 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB128MMT128.req" "./testvectors/AES/rsp/CFB128MMT128.rsp" || { echo "./testvectors/AES/req/CFB128MMT128.req failure" ; exit 1 | ||
67 | } | ||
68 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB128MMT192.req" "./testvectors/AES/rsp/CFB128MMT192.rsp" || { echo "./testvectors/AES/req/CFB128MMT192.req failure" ; exit 1 | ||
69 | } | ||
70 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB128MMT256.req" "./testvectors/AES/rsp/CFB128MMT256.rsp" || { echo "./testvectors/AES/req/CFB128MMT256.req failure" ; exit 1 | ||
71 | } | ||
72 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB128VarKey128.req" "./testvectors/AES/rsp/CFB128VarKey128.rsp" || { echo "./testvectors/AES/req/CFB128VarKey128.req failure" ; exit 1 | ||
73 | } | ||
74 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB128VarKey192.req" "./testvectors/AES/rsp/CFB128VarKey192.rsp" || { echo "./testvectors/AES/req/CFB128VarKey192.req failure" ; exit 1 | ||
75 | } | ||
76 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB128VarKey256.req" "./testvectors/AES/rsp/CFB128VarKey256.rsp" || { echo "./testvectors/AES/req/CFB128VarKey256.req failure" ; exit 1 | ||
77 | } | ||
78 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB128VarTxt128.req" "./testvectors/AES/rsp/CFB128VarTxt128.rsp" || { echo "./testvectors/AES/req/CFB128VarTxt128.req failure" ; exit 1 | ||
79 | } | ||
80 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB128VarTxt192.req" "./testvectors/AES/rsp/CFB128VarTxt192.rsp" || { echo "./testvectors/AES/req/CFB128VarTxt192.req failure" ; exit 1 | ||
81 | } | ||
82 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB128VarTxt256.req" "./testvectors/AES/rsp/CFB128VarTxt256.rsp" || { echo "./testvectors/AES/req/CFB128VarTxt256.req failure" ; exit 1 | ||
83 | } | ||
84 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB1GFSbox128.req" "./testvectors/AES/rsp/CFB1GFSbox128.rsp" || { echo "./testvectors/AES/req/CFB1GFSbox128.req failure" ; exit 1 | ||
85 | } | ||
86 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB1GFSbox192.req" "./testvectors/AES/rsp/CFB1GFSbox192.rsp" || { echo "./testvectors/AES/req/CFB1GFSbox192.req failure" ; exit 1 | ||
87 | } | ||
88 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB1GFSbox256.req" "./testvectors/AES/rsp/CFB1GFSbox256.rsp" || { echo "./testvectors/AES/req/CFB1GFSbox256.req failure" ; exit 1 | ||
89 | } | ||
90 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB1KeySbox128.req" "./testvectors/AES/rsp/CFB1KeySbox128.rsp" || { echo "./testvectors/AES/req/CFB1KeySbox128.req failure" ; exit 1 | ||
91 | } | ||
92 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB1KeySbox192.req" "./testvectors/AES/rsp/CFB1KeySbox192.rsp" || { echo "./testvectors/AES/req/CFB1KeySbox192.req failure" ; exit 1 | ||
93 | } | ||
94 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB1KeySbox256.req" "./testvectors/AES/rsp/CFB1KeySbox256.rsp" || { echo "./testvectors/AES/req/CFB1KeySbox256.req failure" ; exit 1 | ||
95 | } | ||
96 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB1MCT128.req" "./testvectors/AES/rsp/CFB1MCT128.rsp" || { echo "./testvectors/AES/req/CFB1MCT128.req failure" ; exit 1 | ||
97 | } | ||
98 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB1MCT192.req" "./testvectors/AES/rsp/CFB1MCT192.rsp" || { echo "./testvectors/AES/req/CFB1MCT192.req failure" ; exit 1 | ||
99 | } | ||
100 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB1MCT256.req" "./testvectors/AES/rsp/CFB1MCT256.rsp" || { echo "./testvectors/AES/req/CFB1MCT256.req failure" ; exit 1 | ||
101 | } | ||
102 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB1MMT128.req" "./testvectors/AES/rsp/CFB1MMT128.rsp" || { echo "./testvectors/AES/req/CFB1MMT128.req failure" ; exit 1 | ||
103 | } | ||
104 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB1MMT192.req" "./testvectors/AES/rsp/CFB1MMT192.rsp" || { echo "./testvectors/AES/req/CFB1MMT192.req failure" ; exit 1 | ||
105 | } | ||
106 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB1MMT256.req" "./testvectors/AES/rsp/CFB1MMT256.rsp" || { echo "./testvectors/AES/req/CFB1MMT256.req failure" ; exit 1 | ||
107 | } | ||
108 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB1VarKey128.req" "./testvectors/AES/rsp/CFB1VarKey128.rsp" || { echo "./testvectors/AES/req/CFB1VarKey128.req failure" ; exit 1 | ||
109 | } | ||
110 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB1VarKey192.req" "./testvectors/AES/rsp/CFB1VarKey192.rsp" || { echo "./testvectors/AES/req/CFB1VarKey192.req failure" ; exit 1 | ||
111 | } | ||
112 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB1VarKey256.req" "./testvectors/AES/rsp/CFB1VarKey256.rsp" || { echo "./testvectors/AES/req/CFB1VarKey256.req failure" ; exit 1 | ||
113 | } | ||
114 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB1VarTxt128.req" "./testvectors/AES/rsp/CFB1VarTxt128.rsp" || { echo "./testvectors/AES/req/CFB1VarTxt128.req failure" ; exit 1 | ||
115 | } | ||
116 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB1VarTxt192.req" "./testvectors/AES/rsp/CFB1VarTxt192.rsp" || { echo "./testvectors/AES/req/CFB1VarTxt192.req failure" ; exit 1 | ||
117 | } | ||
118 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB1VarTxt256.req" "./testvectors/AES/rsp/CFB1VarTxt256.rsp" || { echo "./testvectors/AES/req/CFB1VarTxt256.req failure" ; exit 1 | ||
119 | } | ||
120 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB8GFSbox128.req" "./testvectors/AES/rsp/CFB8GFSbox128.rsp" || { echo "./testvectors/AES/req/CFB8GFSbox128.req failure" ; exit 1 | ||
121 | } | ||
122 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB8GFSbox192.req" "./testvectors/AES/rsp/CFB8GFSbox192.rsp" || { echo "./testvectors/AES/req/CFB8GFSbox192.req failure" ; exit 1 | ||
123 | } | ||
124 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB8GFSbox256.req" "./testvectors/AES/rsp/CFB8GFSbox256.rsp" || { echo "./testvectors/AES/req/CFB8GFSbox256.req failure" ; exit 1 | ||
125 | } | ||
126 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB8KeySbox128.req" "./testvectors/AES/rsp/CFB8KeySbox128.rsp" || { echo "./testvectors/AES/req/CFB8KeySbox128.req failure" ; exit 1 | ||
127 | } | ||
128 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB8KeySbox192.req" "./testvectors/AES/rsp/CFB8KeySbox192.rsp" || { echo "./testvectors/AES/req/CFB8KeySbox192.req failure" ; exit 1 | ||
129 | } | ||
130 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB8KeySbox256.req" "./testvectors/AES/rsp/CFB8KeySbox256.rsp" || { echo "./testvectors/AES/req/CFB8KeySbox256.req failure" ; exit 1 | ||
131 | } | ||
132 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB8MCT128.req" "./testvectors/AES/rsp/CFB8MCT128.rsp" || { echo "./testvectors/AES/req/CFB8MCT128.req failure" ; exit 1 | ||
133 | } | ||
134 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB8MCT192.req" "./testvectors/AES/rsp/CFB8MCT192.rsp" || { echo "./testvectors/AES/req/CFB8MCT192.req failure" ; exit 1 | ||
135 | } | ||
136 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB8MCT256.req" "./testvectors/AES/rsp/CFB8MCT256.rsp" || { echo "./testvectors/AES/req/CFB8MCT256.req failure" ; exit 1 | ||
137 | } | ||
138 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB8MMT128.req" "./testvectors/AES/rsp/CFB8MMT128.rsp" || { echo "./testvectors/AES/req/CFB8MMT128.req failure" ; exit 1 | ||
139 | } | ||
140 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB8MMT192.req" "./testvectors/AES/rsp/CFB8MMT192.rsp" || { echo "./testvectors/AES/req/CFB8MMT192.req failure" ; exit 1 | ||
141 | } | ||
142 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB8MMT256.req" "./testvectors/AES/rsp/CFB8MMT256.rsp" || { echo "./testvectors/AES/req/CFB8MMT256.req failure" ; exit 1 | ||
143 | } | ||
144 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB8VarKey128.req" "./testvectors/AES/rsp/CFB8VarKey128.rsp" || { echo "./testvectors/AES/req/CFB8VarKey128.req failure" ; exit 1 | ||
145 | } | ||
146 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB8VarKey192.req" "./testvectors/AES/rsp/CFB8VarKey192.rsp" || { echo "./testvectors/AES/req/CFB8VarKey192.req failure" ; exit 1 | ||
147 | } | ||
148 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB8VarKey256.req" "./testvectors/AES/rsp/CFB8VarKey256.rsp" || { echo "./testvectors/AES/req/CFB8VarKey256.req failure" ; exit 1 | ||
149 | } | ||
150 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB8VarTxt128.req" "./testvectors/AES/rsp/CFB8VarTxt128.rsp" || { echo "./testvectors/AES/req/CFB8VarTxt128.req failure" ; exit 1 | ||
151 | } | ||
152 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB8VarTxt192.req" "./testvectors/AES/rsp/CFB8VarTxt192.rsp" || { echo "./testvectors/AES/req/CFB8VarTxt192.req failure" ; exit 1 | ||
153 | } | ||
154 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/CFB8VarTxt256.req" "./testvectors/AES/rsp/CFB8VarTxt256.rsp" || { echo "./testvectors/AES/req/CFB8VarTxt256.req failure" ; exit 1 | ||
155 | } | ||
156 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/ECBGFSbox128.req" "./testvectors/AES/rsp/ECBGFSbox128.rsp" || { echo "./testvectors/AES/req/ECBGFSbox128.req failure" ; exit 1 | ||
157 | } | ||
158 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/ECBGFSbox192.req" "./testvectors/AES/rsp/ECBGFSbox192.rsp" || { echo "./testvectors/AES/req/ECBGFSbox192.req failure" ; exit 1 | ||
159 | } | ||
160 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/ECBGFSbox256.req" "./testvectors/AES/rsp/ECBGFSbox256.rsp" || { echo "./testvectors/AES/req/ECBGFSbox256.req failure" ; exit 1 | ||
161 | } | ||
162 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/ECBKeySbox128.req" "./testvectors/AES/rsp/ECBKeySbox128.rsp" || { echo "./testvectors/AES/req/ECBKeySbox128.req failure" ; exit 1 | ||
163 | } | ||
164 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/ECBKeySbox192.req" "./testvectors/AES/rsp/ECBKeySbox192.rsp" || { echo "./testvectors/AES/req/ECBKeySbox192.req failure" ; exit 1 | ||
165 | } | ||
166 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/ECBKeySbox256.req" "./testvectors/AES/rsp/ECBKeySbox256.rsp" || { echo "./testvectors/AES/req/ECBKeySbox256.req failure" ; exit 1 | ||
167 | } | ||
168 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/ECBMCT128.req" "./testvectors/AES/rsp/ECBMCT128.rsp" || { echo "./testvectors/AES/req/ECBMCT128.req failure" ; exit 1 | ||
169 | } | ||
170 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/ECBMCT192.req" "./testvectors/AES/rsp/ECBMCT192.rsp" || { echo "./testvectors/AES/req/ECBMCT192.req failure" ; exit 1 | ||
171 | } | ||
172 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/ECBMCT256.req" "./testvectors/AES/rsp/ECBMCT256.rsp" || { echo "./testvectors/AES/req/ECBMCT256.req failure" ; exit 1 | ||
173 | } | ||
174 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/ECBMMT128.req" "./testvectors/AES/rsp/ECBMMT128.rsp" || { echo "./testvectors/AES/req/ECBMMT128.req failure" ; exit 1 | ||
175 | } | ||
176 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/ECBMMT192.req" "./testvectors/AES/rsp/ECBMMT192.rsp" || { echo "./testvectors/AES/req/ECBMMT192.req failure" ; exit 1 | ||
177 | } | ||
178 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/ECBMMT256.req" "./testvectors/AES/rsp/ECBMMT256.rsp" || { echo "./testvectors/AES/req/ECBMMT256.req failure" ; exit 1 | ||
179 | } | ||
180 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/ECBVarKey128.req" "./testvectors/AES/rsp/ECBVarKey128.rsp" || { echo "./testvectors/AES/req/ECBVarKey128.req failure" ; exit 1 | ||
181 | } | ||
182 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/ECBVarKey192.req" "./testvectors/AES/rsp/ECBVarKey192.rsp" || { echo "./testvectors/AES/req/ECBVarKey192.req failure" ; exit 1 | ||
183 | } | ||
184 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/ECBVarKey256.req" "./testvectors/AES/rsp/ECBVarKey256.rsp" || { echo "./testvectors/AES/req/ECBVarKey256.req failure" ; exit 1 | ||
185 | } | ||
186 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/ECBVarTxt128.req" "./testvectors/AES/rsp/ECBVarTxt128.rsp" || { echo "./testvectors/AES/req/ECBVarTxt128.req failure" ; exit 1 | ||
187 | } | ||
188 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/ECBVarTxt192.req" "./testvectors/AES/rsp/ECBVarTxt192.rsp" || { echo "./testvectors/AES/req/ECBVarTxt192.req failure" ; exit 1 | ||
189 | } | ||
190 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/ECBVarTxt256.req" "./testvectors/AES/rsp/ECBVarTxt256.rsp" || { echo "./testvectors/AES/req/ECBVarTxt256.req failure" ; exit 1 | ||
191 | } | ||
192 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/OFBGFSbox128.req" "./testvectors/AES/rsp/OFBGFSbox128.rsp" || { echo "./testvectors/AES/req/OFBGFSbox128.req failure" ; exit 1 | ||
193 | } | ||
194 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/OFBGFSbox192.req" "./testvectors/AES/rsp/OFBGFSbox192.rsp" || { echo "./testvectors/AES/req/OFBGFSbox192.req failure" ; exit 1 | ||
195 | } | ||
196 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/OFBGFSbox256.req" "./testvectors/AES/rsp/OFBGFSbox256.rsp" || { echo "./testvectors/AES/req/OFBGFSbox256.req failure" ; exit 1 | ||
197 | } | ||
198 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/OFBKeySbox128.req" "./testvectors/AES/rsp/OFBKeySbox128.rsp" || { echo "./testvectors/AES/req/OFBKeySbox128.req failure" ; exit 1 | ||
199 | } | ||
200 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/OFBKeySbox192.req" "./testvectors/AES/rsp/OFBKeySbox192.rsp" || { echo "./testvectors/AES/req/OFBKeySbox192.req failure" ; exit 1 | ||
201 | } | ||
202 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/OFBKeySbox256.req" "./testvectors/AES/rsp/OFBKeySbox256.rsp" || { echo "./testvectors/AES/req/OFBKeySbox256.req failure" ; exit 1 | ||
203 | } | ||
204 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/OFBMCT128.req" "./testvectors/AES/rsp/OFBMCT128.rsp" || { echo "./testvectors/AES/req/OFBMCT128.req failure" ; exit 1 | ||
205 | } | ||
206 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/OFBMCT192.req" "./testvectors/AES/rsp/OFBMCT192.rsp" || { echo "./testvectors/AES/req/OFBMCT192.req failure" ; exit 1 | ||
207 | } | ||
208 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/OFBMCT256.req" "./testvectors/AES/rsp/OFBMCT256.rsp" || { echo "./testvectors/AES/req/OFBMCT256.req failure" ; exit 1 | ||
209 | } | ||
210 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/OFBMMT128.req" "./testvectors/AES/rsp/OFBMMT128.rsp" || { echo "./testvectors/AES/req/OFBMMT128.req failure" ; exit 1 | ||
211 | } | ||
212 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/OFBMMT192.req" "./testvectors/AES/rsp/OFBMMT192.rsp" || { echo "./testvectors/AES/req/OFBMMT192.req failure" ; exit 1 | ||
213 | } | ||
214 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/OFBMMT256.req" "./testvectors/AES/rsp/OFBMMT256.rsp" || { echo "./testvectors/AES/req/OFBMMT256.req failure" ; exit 1 | ||
215 | } | ||
216 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/OFBVarKey128.req" "./testvectors/AES/rsp/OFBVarKey128.rsp" || { echo "./testvectors/AES/req/OFBVarKey128.req failure" ; exit 1 | ||
217 | } | ||
218 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/OFBVarKey192.req" "./testvectors/AES/rsp/OFBVarKey192.rsp" || { echo "./testvectors/AES/req/OFBVarKey192.req failure" ; exit 1 | ||
219 | } | ||
220 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/OFBVarKey256.req" "./testvectors/AES/rsp/OFBVarKey256.rsp" || { echo "./testvectors/AES/req/OFBVarKey256.req failure" ; exit 1 | ||
221 | } | ||
222 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/OFBVarTxt128.req" "./testvectors/AES/rsp/OFBVarTxt128.rsp" || { echo "./testvectors/AES/req/OFBVarTxt128.req failure" ; exit 1 | ||
223 | } | ||
224 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/OFBVarTxt192.req" "./testvectors/AES/rsp/OFBVarTxt192.rsp" || { echo "./testvectors/AES/req/OFBVarTxt192.req failure" ; exit 1 | ||
225 | } | ||
226 | ../util/shlib_wrap.sh ../test/fips_aesavs -f "./testvectors/AES/req/OFBVarTxt256.req" "./testvectors/AES/rsp/OFBVarTxt256.rsp" || { echo "./testvectors/AES/req/OFBVarTxt256.req failure" ; exit 1 | ||
227 | } | ||
228 | |||
229 | echo Running tests in "./testvectors/DSA/req" | ||
230 | rm -rf "./testvectors/DSA/rsp" | ||
231 | mkdir "./testvectors/DSA/rsp" | ||
232 | |||
233 | ../util/shlib_wrap.sh ../test/fips_dssvs keypair < "./testvectors/DSA/req/KeyPair.req" > "./testvectors/DSA/rsp/KeyPair.rsp" || { echo "./testvectors/DSA/req/KeyPair.req failure" ; exit 1; } | ||
234 | ../util/shlib_wrap.sh ../test/fips_dssvs pqg < "./testvectors/DSA/req/PQGGen.req" > "./testvectors/DSA/rsp/PQGGen.rsp" || { echo "./testvectors/DSA/req/PQGGen.req failure" ; exit 1; } | ||
235 | ../util/shlib_wrap.sh ../test/fips_dssvs siggen < "./testvectors/DSA/req/SigGen.req" > "./testvectors/DSA/rsp/SigGen.rsp" || { echo "./testvectors/DSA/req/SigGen.req failure" ; exit 1; } | ||
236 | ../util/shlib_wrap.sh ../test/fips_dssvs sigver < "./testvectors/DSA/req/SigVer.req" > "./testvectors/DSA/rsp/SigVer.rsp" || { echo "./testvectors/DSA/req/SigVer.req failure" ; exit 1; } | ||
237 | |||
238 | echo Running tests in "./testvectors/HMAC/req" | ||
239 | rm -rf "./testvectors/HMAC/rsp" | ||
240 | mkdir "./testvectors/HMAC/rsp" | ||
241 | |||
242 | ../util/shlib_wrap.sh ../test/fips_hmactest < "./testvectors/HMAC/req/HMAC.req" > "./testvectors/HMAC/rsp/HMAC.rsp" || { echo "./testvectors/HMAC/req/HMAC.req failure" ; exit 1; } | ||
243 | |||
244 | echo Running tests in "./testvectors/RNG/req" | ||
245 | rm -rf "./testvectors/RNG/rsp" | ||
246 | mkdir "./testvectors/RNG/rsp" | ||
247 | |||
248 | ../util/shlib_wrap.sh ../test/fips_rngvs mct < "./testvectors/RNG/req/ANSI931_AES128MCT.req" > "./testvectors/RNG/rsp/ANSI931_AES128MCT.rsp" || { echo "./testvectors/RNG/req/ANSI931_AES128MCT.req failure" ; exit 1; } | ||
249 | ../util/shlib_wrap.sh ../test/fips_rngvs vst < "./testvectors/RNG/req/ANSI931_AES128VST.req" > "./testvectors/RNG/rsp/ANSI931_AES128VST.rsp" || { echo "./testvectors/RNG/req/ANSI931_AES128VST.req failure" ; exit 1; } | ||
250 | ../util/shlib_wrap.sh ../test/fips_rngvs mct < "./testvectors/RNG/req/ANSI931_AES192MCT.req" > "./testvectors/RNG/rsp/ANSI931_AES192MCT.rsp" || { echo "./testvectors/RNG/req/ANSI931_AES192MCT.req failure" ; exit 1; } | ||
251 | ../util/shlib_wrap.sh ../test/fips_rngvs vst < "./testvectors/RNG/req/ANSI931_AES192VST.req" > "./testvectors/RNG/rsp/ANSI931_AES192VST.rsp" || { echo "./testvectors/RNG/req/ANSI931_AES192VST.req failure" ; exit 1; } | ||
252 | ../util/shlib_wrap.sh ../test/fips_rngvs mct < "./testvectors/RNG/req/ANSI931_AES256MCT.req" > "./testvectors/RNG/rsp/ANSI931_AES256MCT.rsp" || { echo "./testvectors/RNG/req/ANSI931_AES256MCT.req failure" ; exit 1; } | ||
253 | ../util/shlib_wrap.sh ../test/fips_rngvs vst < "./testvectors/RNG/req/ANSI931_AES256VST.req" > "./testvectors/RNG/rsp/ANSI931_AES256VST.rsp" || { echo "./testvectors/RNG/req/ANSI931_AES256VST.req failure" ; exit 1; } | ||
254 | |||
255 | echo Running tests in "./testvectors/RSA/req" | ||
256 | rm -rf "./testvectors/RSA/rsp" | ||
257 | mkdir "./testvectors/RSA/rsp" | ||
258 | |||
259 | ../util/shlib_wrap.sh ../test/fips_rsagtest < "./testvectors/RSA/req/KeyGenRSA.req" > "./testvectors/RSA/rsp/KeyGenRSA.rsp" || { echo "./testvectors/RSA/req/KeyGenRSA.req failure" ; exit 1; } | ||
260 | ../util/shlib_wrap.sh ../test/fips_rsastest < "./testvectors/RSA/req/SigGen15.req" > "./testvectors/RSA/rsp/SigGen15.rsp" || { echo "./testvectors/RSA/req/SigGen15.req failure" ; exit 1; } | ||
261 | ../util/shlib_wrap.sh ../test/fips_rsastest -saltlen 0 < "./testvectors/RSA/req/SigGenPSS.req" > "./testvectors/RSA/rsp/SigGenPSS.rsp" || { echo "./testvectors/RSA/req/SigGenPSS.req failure" ; exit 1; } | ||
262 | ../util/shlib_wrap.sh ../test/fips_rsastest -x931 < "./testvectors/RSA/req/SigGenRSA.req" > "./testvectors/RSA/rsp/SigGenRSA.rsp" || { echo "./testvectors/RSA/req/SigGenRSA.req failure" ; exit 1; } | ||
263 | ../util/shlib_wrap.sh ../test/fips_rsavtest < "./testvectors/RSA/req/SigVer15.req" > "./testvectors/RSA/rsp/SigVer15.rsp" || { echo "./testvectors/RSA/req/SigVer15.req failure" ; exit 1; } | ||
264 | ../util/shlib_wrap.sh ../test/fips_rsavtest -saltlen 0 < "./testvectors/RSA/req/SigVerPSS.req" > "./testvectors/RSA/rsp/SigVerPSS.rsp" || { echo "./testvectors/RSA/req/SigVerPSS.req failure" ; exit 1; } | ||
265 | ../util/shlib_wrap.sh ../test/fips_rsavtest -x931 < "./testvectors/RSA/req/SigVerRSA.req" > "./testvectors/RSA/rsp/SigVerRSA.rsp" || { echo "./testvectors/RSA/req/SigVerRSA.req failure" ; exit 1; } | ||
266 | |||
267 | echo Running tests in "./testvectors/SHA/req" | ||
268 | rm -rf "./testvectors/SHA/rsp" | ||
269 | mkdir "./testvectors/SHA/rsp" | ||
270 | |||
271 | ../util/shlib_wrap.sh ../test/fips_shatest < "./testvectors/SHA/req/SHA1LongMsg.req" > "./testvectors/SHA/rsp/SHA1LongMsg.rsp" || { echo "./testvectors/SHA/req/SHA1LongMsg.req failure" ; exit 1; } | ||
272 | ../util/shlib_wrap.sh ../test/fips_shatest < "./testvectors/SHA/req/SHA1Monte.req" > "./testvectors/SHA/rsp/SHA1Monte.rsp" || { echo "./testvectors/SHA/req/SHA1Monte.req failure" ; exit 1; } | ||
273 | ../util/shlib_wrap.sh ../test/fips_shatest < "./testvectors/SHA/req/SHA1ShortMsg.req" > "./testvectors/SHA/rsp/SHA1ShortMsg.rsp" || { echo "./testvectors/SHA/req/SHA1ShortMsg.req failure" ; exit 1; } | ||
274 | ../util/shlib_wrap.sh ../test/fips_shatest < "./testvectors/SHA/req/SHA224LongMsg.req" > "./testvectors/SHA/rsp/SHA224LongMsg.rsp" || { echo "./testvectors/SHA/req/SHA224LongMsg.req failure" ; exit 1; } | ||
275 | ../util/shlib_wrap.sh ../test/fips_shatest < "./testvectors/SHA/req/SHA224Monte.req" > "./testvectors/SHA/rsp/SHA224Monte.rsp" || { echo "./testvectors/SHA/req/SHA224Monte.req failure" ; exit 1; } | ||
276 | ../util/shlib_wrap.sh ../test/fips_shatest < "./testvectors/SHA/req/SHA224ShortMsg.req" > "./testvectors/SHA/rsp/SHA224ShortMsg.rsp" || { echo "./testvectors/SHA/req/SHA224ShortMsg.req failure" ; exit 1; } | ||
277 | ../util/shlib_wrap.sh ../test/fips_shatest < "./testvectors/SHA/req/SHA256LongMsg.req" > "./testvectors/SHA/rsp/SHA256LongMsg.rsp" || { echo "./testvectors/SHA/req/SHA256LongMsg.req failure" ; exit 1; } | ||
278 | ../util/shlib_wrap.sh ../test/fips_shatest < "./testvectors/SHA/req/SHA256Monte.req" > "./testvectors/SHA/rsp/SHA256Monte.rsp" || { echo "./testvectors/SHA/req/SHA256Monte.req failure" ; exit 1; } | ||
279 | ../util/shlib_wrap.sh ../test/fips_shatest < "./testvectors/SHA/req/SHA256ShortMsg.req" > "./testvectors/SHA/rsp/SHA256ShortMsg.rsp" || { echo "./testvectors/SHA/req/SHA256ShortMsg.req failure" ; exit 1; } | ||
280 | ../util/shlib_wrap.sh ../test/fips_shatest < "./testvectors/SHA/req/SHA384LongMsg.req" > "./testvectors/SHA/rsp/SHA384LongMsg.rsp" || { echo "./testvectors/SHA/req/SHA384LongMsg.req failure" ; exit 1; } | ||
281 | ../util/shlib_wrap.sh ../test/fips_shatest < "./testvectors/SHA/req/SHA384Monte.req" > "./testvectors/SHA/rsp/SHA384Monte.rsp" || { echo "./testvectors/SHA/req/SHA384Monte.req failure" ; exit 1; } | ||
282 | ../util/shlib_wrap.sh ../test/fips_shatest < "./testvectors/SHA/req/SHA384ShortMsg.req" > "./testvectors/SHA/rsp/SHA384ShortMsg.rsp" || { echo "./testvectors/SHA/req/SHA384ShortMsg.req failure" ; exit 1; } | ||
283 | ../util/shlib_wrap.sh ../test/fips_shatest < "./testvectors/SHA/req/SHA512LongMsg.req" > "./testvectors/SHA/rsp/SHA512LongMsg.rsp" || { echo "./testvectors/SHA/req/SHA512LongMsg.req failure" ; exit 1; } | ||
284 | ../util/shlib_wrap.sh ../test/fips_shatest < "./testvectors/SHA/req/SHA512Monte.req" > "./testvectors/SHA/rsp/SHA512Monte.rsp" || { echo "./testvectors/SHA/req/SHA512Monte.req failure" ; exit 1; } | ||
285 | ../util/shlib_wrap.sh ../test/fips_shatest < "./testvectors/SHA/req/SHA512ShortMsg.req" > "./testvectors/SHA/rsp/SHA512ShortMsg.rsp" || { echo "./testvectors/SHA/req/SHA512ShortMsg.req failure" ; exit 1; } | ||
286 | |||
287 | echo Running tests in "./testvectors/TDES/req" | ||
288 | rm -rf "./testvectors/TDES/rsp" | ||
289 | mkdir "./testvectors/TDES/rsp" | ||
290 | |||
291 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCBCinvperm.req" "./testvectors/TDES/rsp/TCBCinvperm.rsp" || { echo "./testvectors/TDES/req/TCBCinvperm.req failure" ; exit 1 | ||
292 | } | ||
293 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCBCMMT1.req" "./testvectors/TDES/rsp/TCBCMMT1.rsp" || { echo "./testvectors/TDES/req/TCBCMMT1.req failure" ; exit 1 | ||
294 | } | ||
295 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCBCMMT2.req" "./testvectors/TDES/rsp/TCBCMMT2.rsp" || { echo "./testvectors/TDES/req/TCBCMMT2.req failure" ; exit 1 | ||
296 | } | ||
297 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCBCMMT3.req" "./testvectors/TDES/rsp/TCBCMMT3.rsp" || { echo "./testvectors/TDES/req/TCBCMMT3.req failure" ; exit 1 | ||
298 | } | ||
299 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCBCMonte1.req" "./testvectors/TDES/rsp/TCBCMonte1.rsp" || { echo "./testvectors/TDES/req/TCBCMonte1.req failure" ; exit 1 | ||
300 | } | ||
301 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCBCMonte2.req" "./testvectors/TDES/rsp/TCBCMonte2.rsp" || { echo "./testvectors/TDES/req/TCBCMonte2.req failure" ; exit 1 | ||
302 | } | ||
303 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCBCMonte3.req" "./testvectors/TDES/rsp/TCBCMonte3.rsp" || { echo "./testvectors/TDES/req/TCBCMonte3.req failure" ; exit 1 | ||
304 | } | ||
305 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCBCpermop.req" "./testvectors/TDES/rsp/TCBCpermop.rsp" || { echo "./testvectors/TDES/req/TCBCpermop.req failure" ; exit 1 | ||
306 | } | ||
307 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCBCsubtab.req" "./testvectors/TDES/rsp/TCBCsubtab.rsp" || { echo "./testvectors/TDES/req/TCBCsubtab.req failure" ; exit 1 | ||
308 | } | ||
309 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCBCvarkey.req" "./testvectors/TDES/rsp/TCBCvarkey.rsp" || { echo "./testvectors/TDES/req/TCBCvarkey.req failure" ; exit 1 | ||
310 | } | ||
311 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCBCvartext.req" "./testvectors/TDES/rsp/TCBCvartext.rsp" || { echo "./testvectors/TDES/req/TCBCvartext.req failure" ; exit 1 | ||
312 | } | ||
313 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCFB64invperm.req" "./testvectors/TDES/rsp/TCFB64invperm.rsp" || { echo "./testvectors/TDES/req/TCFB64invperm.req failure" ; exit 1 | ||
314 | } | ||
315 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCFB64MMT1.req" "./testvectors/TDES/rsp/TCFB64MMT1.rsp" || { echo "./testvectors/TDES/req/TCFB64MMT1.req failure" ; exit 1 | ||
316 | } | ||
317 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCFB64MMT2.req" "./testvectors/TDES/rsp/TCFB64MMT2.rsp" || { echo "./testvectors/TDES/req/TCFB64MMT2.req failure" ; exit 1 | ||
318 | } | ||
319 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCFB64MMT3.req" "./testvectors/TDES/rsp/TCFB64MMT3.rsp" || { echo "./testvectors/TDES/req/TCFB64MMT3.req failure" ; exit 1 | ||
320 | } | ||
321 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCFB64Monte1.req" "./testvectors/TDES/rsp/TCFB64Monte1.rsp" || { echo "./testvectors/TDES/req/TCFB64Monte1.req failure" ; exit 1 | ||
322 | } | ||
323 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCFB64Monte2.req" "./testvectors/TDES/rsp/TCFB64Monte2.rsp" || { echo "./testvectors/TDES/req/TCFB64Monte2.req failure" ; exit 1 | ||
324 | } | ||
325 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCFB64Monte3.req" "./testvectors/TDES/rsp/TCFB64Monte3.rsp" || { echo "./testvectors/TDES/req/TCFB64Monte3.req failure" ; exit 1 | ||
326 | } | ||
327 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCFB64permop.req" "./testvectors/TDES/rsp/TCFB64permop.rsp" || { echo "./testvectors/TDES/req/TCFB64permop.req failure" ; exit 1 | ||
328 | } | ||
329 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCFB64subtab.req" "./testvectors/TDES/rsp/TCFB64subtab.rsp" || { echo "./testvectors/TDES/req/TCFB64subtab.req failure" ; exit 1 | ||
330 | } | ||
331 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCFB64varkey.req" "./testvectors/TDES/rsp/TCFB64varkey.rsp" || { echo "./testvectors/TDES/req/TCFB64varkey.req failure" ; exit 1 | ||
332 | } | ||
333 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCFB64vartext.req" "./testvectors/TDES/rsp/TCFB64vartext.rsp" || { echo "./testvectors/TDES/req/TCFB64vartext.req failure" ; exit 1 | ||
334 | } | ||
335 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCFB8invperm.req" "./testvectors/TDES/rsp/TCFB8invperm.rsp" || { echo "./testvectors/TDES/req/TCFB8invperm.req failure" ; exit 1 | ||
336 | } | ||
337 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCFB8MMT1.req" "./testvectors/TDES/rsp/TCFB8MMT1.rsp" || { echo "./testvectors/TDES/req/TCFB8MMT1.req failure" ; exit 1 | ||
338 | } | ||
339 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCFB8MMT2.req" "./testvectors/TDES/rsp/TCFB8MMT2.rsp" || { echo "./testvectors/TDES/req/TCFB8MMT2.req failure" ; exit 1 | ||
340 | } | ||
341 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCFB8MMT3.req" "./testvectors/TDES/rsp/TCFB8MMT3.rsp" || { echo "./testvectors/TDES/req/TCFB8MMT3.req failure" ; exit 1 | ||
342 | } | ||
343 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCFB8Monte1.req" "./testvectors/TDES/rsp/TCFB8Monte1.rsp" || { echo "./testvectors/TDES/req/TCFB8Monte1.req failure" ; exit 1 | ||
344 | } | ||
345 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCFB8Monte2.req" "./testvectors/TDES/rsp/TCFB8Monte2.rsp" || { echo "./testvectors/TDES/req/TCFB8Monte2.req failure" ; exit 1 | ||
346 | } | ||
347 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCFB8Monte3.req" "./testvectors/TDES/rsp/TCFB8Monte3.rsp" || { echo "./testvectors/TDES/req/TCFB8Monte3.req failure" ; exit 1 | ||
348 | } | ||
349 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCFB8permop.req" "./testvectors/TDES/rsp/TCFB8permop.rsp" || { echo "./testvectors/TDES/req/TCFB8permop.req failure" ; exit 1 | ||
350 | } | ||
351 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCFB8subtab.req" "./testvectors/TDES/rsp/TCFB8subtab.rsp" || { echo "./testvectors/TDES/req/TCFB8subtab.req failure" ; exit 1 | ||
352 | } | ||
353 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCFB8varkey.req" "./testvectors/TDES/rsp/TCFB8varkey.rsp" || { echo "./testvectors/TDES/req/TCFB8varkey.req failure" ; exit 1 | ||
354 | } | ||
355 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TCFB8vartext.req" "./testvectors/TDES/rsp/TCFB8vartext.rsp" || { echo "./testvectors/TDES/req/TCFB8vartext.req failure" ; exit 1 | ||
356 | } | ||
357 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TECBinvperm.req" "./testvectors/TDES/rsp/TECBinvperm.rsp" || { echo "./testvectors/TDES/req/TECBinvperm.req failure" ; exit 1 | ||
358 | } | ||
359 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TECBMMT1.req" "./testvectors/TDES/rsp/TECBMMT1.rsp" || { echo "./testvectors/TDES/req/TECBMMT1.req failure" ; exit 1 | ||
360 | } | ||
361 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TECBMMT2.req" "./testvectors/TDES/rsp/TECBMMT2.rsp" || { echo "./testvectors/TDES/req/TECBMMT2.req failure" ; exit 1 | ||
362 | } | ||
363 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TECBMMT3.req" "./testvectors/TDES/rsp/TECBMMT3.rsp" || { echo "./testvectors/TDES/req/TECBMMT3.req failure" ; exit 1 | ||
364 | } | ||
365 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TECBMonte1.req" "./testvectors/TDES/rsp/TECBMonte1.rsp" || { echo "./testvectors/TDES/req/TECBMonte1.req failure" ; exit 1 | ||
366 | } | ||
367 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TECBMonte2.req" "./testvectors/TDES/rsp/TECBMonte2.rsp" || { echo "./testvectors/TDES/req/TECBMonte2.req failure" ; exit 1 | ||
368 | } | ||
369 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TECBMonte3.req" "./testvectors/TDES/rsp/TECBMonte3.rsp" || { echo "./testvectors/TDES/req/TECBMonte3.req failure" ; exit 1 | ||
370 | } | ||
371 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TECBpermop.req" "./testvectors/TDES/rsp/TECBpermop.rsp" || { echo "./testvectors/TDES/req/TECBpermop.req failure" ; exit 1 | ||
372 | } | ||
373 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TECBsubtab.req" "./testvectors/TDES/rsp/TECBsubtab.rsp" || { echo "./testvectors/TDES/req/TECBsubtab.req failure" ; exit 1 | ||
374 | } | ||
375 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TECBvarkey.req" "./testvectors/TDES/rsp/TECBvarkey.rsp" || { echo "./testvectors/TDES/req/TECBvarkey.req failure" ; exit 1 | ||
376 | } | ||
377 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TECBvartext.req" "./testvectors/TDES/rsp/TECBvartext.rsp" || { echo "./testvectors/TDES/req/TECBvartext.req failure" ; exit 1 | ||
378 | } | ||
379 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TOFBinvperm.req" "./testvectors/TDES/rsp/TOFBinvperm.rsp" || { echo "./testvectors/TDES/req/TOFBinvperm.req failure" ; exit 1 | ||
380 | } | ||
381 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TOFBMMT1.req" "./testvectors/TDES/rsp/TOFBMMT1.rsp" || { echo "./testvectors/TDES/req/TOFBMMT1.req failure" ; exit 1 | ||
382 | } | ||
383 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TOFBMMT2.req" "./testvectors/TDES/rsp/TOFBMMT2.rsp" || { echo "./testvectors/TDES/req/TOFBMMT2.req failure" ; exit 1 | ||
384 | } | ||
385 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TOFBMMT3.req" "./testvectors/TDES/rsp/TOFBMMT3.rsp" || { echo "./testvectors/TDES/req/TOFBMMT3.req failure" ; exit 1 | ||
386 | } | ||
387 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TOFBMonte1.req" "./testvectors/TDES/rsp/TOFBMonte1.rsp" || { echo "./testvectors/TDES/req/TOFBMonte1.req failure" ; exit 1 | ||
388 | } | ||
389 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TOFBMonte2.req" "./testvectors/TDES/rsp/TOFBMonte2.rsp" || { echo "./testvectors/TDES/req/TOFBMonte2.req failure" ; exit 1 | ||
390 | } | ||
391 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TOFBMonte3.req" "./testvectors/TDES/rsp/TOFBMonte3.rsp" || { echo "./testvectors/TDES/req/TOFBMonte3.req failure" ; exit 1 | ||
392 | } | ||
393 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TOFBpermop.req" "./testvectors/TDES/rsp/TOFBpermop.rsp" || { echo "./testvectors/TDES/req/TOFBpermop.req failure" ; exit 1 | ||
394 | } | ||
395 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TOFBsubtab.req" "./testvectors/TDES/rsp/TOFBsubtab.rsp" || { echo "./testvectors/TDES/req/TOFBsubtab.req failure" ; exit 1 | ||
396 | } | ||
397 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TOFBvarkey.req" "./testvectors/TDES/rsp/TOFBvarkey.rsp" || { echo "./testvectors/TDES/req/TOFBvarkey.req failure" ; exit 1 | ||
398 | } | ||
399 | ../util/shlib_wrap.sh ../test/fips_desmovs -f "./testvectors/TDES/req/TOFBvartext.req" "./testvectors/TDES/rsp/TOFBvartext.rsp" || { echo "./testvectors/TDES/req/TOFBvartext.req failure" ; exit 1 | ||
400 | } | ||
diff --git a/src/lib/libssl/src/fips/hmac/Makefile b/src/lib/libssl/src/fips/hmac/Makefile new file mode 100644 index 0000000000..be230ade9d --- /dev/null +++ b/src/lib/libssl/src/fips/hmac/Makefile | |||
@@ -0,0 +1,123 @@ | |||
1 | # | ||
2 | # OpenSSL/fips/hmac/Makefile | ||
3 | # | ||
4 | |||
5 | DIR= hmac | ||
6 | TOP= ../.. | ||
7 | CC= cc | ||
8 | INCLUDES= | ||
9 | CFLAG=-g | ||
10 | INSTALL_PREFIX= | ||
11 | OPENSSLDIR= /usr/local/ssl | ||
12 | INSTALLTOP=/usr/local/ssl | ||
13 | MAKEDEPPROG= makedepend | ||
14 | MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) | ||
15 | MAKEFILE= Makefile | ||
16 | AR= ar r | ||
17 | |||
18 | CFLAGS= $(INCLUDES) $(CFLAG) | ||
19 | |||
20 | GENERAL=Makefile | ||
21 | TEST=fips_hmactest.c | ||
22 | APPS= | ||
23 | |||
24 | LIB=$(TOP)/libcrypto.a | ||
25 | LIBSRC=fips_hmac.c fips_hmac_selftest.c | ||
26 | LIBOBJ=fips_hmac.o fips_hmac_selftest.o | ||
27 | |||
28 | SRC= $(LIBSRC) | ||
29 | |||
30 | EXHEADER= | ||
31 | HEADER= $(EXHEADER) | ||
32 | |||
33 | ALL= $(GENERAL) $(SRC) $(HEADER) | ||
34 | |||
35 | top: | ||
36 | (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) sub_all) | ||
37 | |||
38 | all: lib | ||
39 | |||
40 | lib: $(LIBOBJ) | ||
41 | @echo $(LIBOBJ) > lib | ||
42 | |||
43 | files: | ||
44 | $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO | ||
45 | |||
46 | links: | ||
47 | @$(PERL) $(TOP)/util/mklink.pl $(TOP)/include/openssl $(EXHEADER) | ||
48 | @$(PERL) $(TOP)/util/mklink.pl $(TOP)/test $(TEST) | ||
49 | @$(PERL) $(TOP)/util/mklink.pl $(TOP)/apps $(APPS) | ||
50 | |||
51 | install: | ||
52 | @headerlist="$(EXHEADER)"; for i in $$headerlist; \ | ||
53 | do \ | ||
54 | (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ | ||
55 | chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ | ||
56 | done | ||
57 | |||
58 | tags: | ||
59 | ctags $(SRC) | ||
60 | |||
61 | tests: | ||
62 | |||
63 | Q=../testvectors/hmac/req | ||
64 | A=../testvectors/hmac/rsp | ||
65 | |||
66 | fips_test: | ||
67 | -rm -rf $(A) | ||
68 | mkdir $(A) | ||
69 | if [ -f $(Q)/HMAC.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_hmactest < $(Q)/HMAC.req > $(A)/HMAC.rsp; fi | ||
70 | |||
71 | lint: | ||
72 | lint -DLINT $(INCLUDES) $(SRC)>fluff | ||
73 | |||
74 | depend: | ||
75 | $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(SRC) $(TEST) | ||
76 | |||
77 | dclean: | ||
78 | $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new | ||
79 | mv -f Makefile.new $(MAKEFILE) | ||
80 | |||
81 | clean: | ||
82 | rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff | ||
83 | # DO NOT DELETE THIS LINE -- make depend depends on it. | ||
84 | |||
85 | fips_hmac.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
86 | fips_hmac.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | ||
87 | fips_hmac.o: ../../include/openssl/evp.h ../../include/openssl/fips.h | ||
88 | fips_hmac.o: ../../include/openssl/hmac.h ../../include/openssl/obj_mac.h | ||
89 | fips_hmac.o: ../../include/openssl/objects.h | ||
90 | fips_hmac.o: ../../include/openssl/opensslconf.h | ||
91 | fips_hmac.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
92 | fips_hmac.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
93 | fips_hmac.o: ../../include/openssl/symhacks.h fips_hmac.c | ||
94 | fips_hmac_selftest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
95 | fips_hmac_selftest.o: ../../include/openssl/crypto.h | ||
96 | fips_hmac_selftest.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
97 | fips_hmac_selftest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h | ||
98 | fips_hmac_selftest.o: ../../include/openssl/hmac.h | ||
99 | fips_hmac_selftest.o: ../../include/openssl/lhash.h | ||
100 | fips_hmac_selftest.o: ../../include/openssl/obj_mac.h | ||
101 | fips_hmac_selftest.o: ../../include/openssl/objects.h | ||
102 | fips_hmac_selftest.o: ../../include/openssl/opensslconf.h | ||
103 | fips_hmac_selftest.o: ../../include/openssl/opensslv.h | ||
104 | fips_hmac_selftest.o: ../../include/openssl/ossl_typ.h | ||
105 | fips_hmac_selftest.o: ../../include/openssl/safestack.h | ||
106 | fips_hmac_selftest.o: ../../include/openssl/stack.h | ||
107 | fips_hmac_selftest.o: ../../include/openssl/symhacks.h fips_hmac_selftest.c | ||
108 | fips_hmactest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
109 | fips_hmactest.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | ||
110 | fips_hmactest.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | ||
111 | fips_hmactest.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | ||
112 | fips_hmactest.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | ||
113 | fips_hmactest.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
114 | fips_hmactest.o: ../../include/openssl/fips.h ../../include/openssl/hmac.h | ||
115 | fips_hmactest.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | ||
116 | fips_hmactest.o: ../../include/openssl/objects.h | ||
117 | fips_hmactest.o: ../../include/openssl/opensslconf.h | ||
118 | fips_hmactest.o: ../../include/openssl/opensslv.h | ||
119 | fips_hmactest.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | ||
120 | fips_hmactest.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
121 | fips_hmactest.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
122 | fips_hmactest.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | ||
123 | fips_hmactest.o: ../../include/openssl/x509v3.h ../fips_utl.h fips_hmactest.c | ||
diff --git a/src/lib/libssl/src/fips/hmac/fips_hmac.c b/src/lib/libssl/src/fips/hmac/fips_hmac.c new file mode 100644 index 0000000000..7c49c9882a --- /dev/null +++ b/src/lib/libssl/src/fips/hmac/fips_hmac.c | |||
@@ -0,0 +1,191 @@ | |||
1 | /* crypto/hmac/hmac.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | #include <stdio.h> | ||
59 | #include <stdlib.h> | ||
60 | #include <string.h> | ||
61 | #include <openssl/hmac.h> | ||
62 | #include <openssl/fips.h> | ||
63 | |||
64 | #ifdef OPENSSL_FIPS | ||
65 | |||
66 | void HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, | ||
67 | const EVP_MD *md, ENGINE *impl) | ||
68 | { | ||
69 | int i,j,reset=0; | ||
70 | unsigned char pad[HMAC_MAX_MD_CBLOCK]; | ||
71 | |||
72 | if (md != NULL) | ||
73 | { | ||
74 | reset=1; | ||
75 | ctx->md=md; | ||
76 | } | ||
77 | else | ||
78 | md=ctx->md; | ||
79 | |||
80 | if (key != NULL) | ||
81 | { | ||
82 | if (FIPS_mode() && !(md->flags & EVP_MD_FLAG_FIPS) | ||
83 | && (!(ctx->md_ctx.flags & EVP_MD_CTX_FLAG_NON_FIPS_ALLOW) | ||
84 | || !(ctx->i_ctx.flags & EVP_MD_CTX_FLAG_NON_FIPS_ALLOW) | ||
85 | || !(ctx->o_ctx.flags & EVP_MD_CTX_FLAG_NON_FIPS_ALLOW))) | ||
86 | OpenSSLDie(__FILE__,__LINE__, | ||
87 | "HMAC: digest not allowed in FIPS mode"); | ||
88 | |||
89 | reset=1; | ||
90 | j=M_EVP_MD_block_size(md); | ||
91 | OPENSSL_assert(j <= sizeof ctx->key); | ||
92 | if (j < len) | ||
93 | { | ||
94 | EVP_DigestInit_ex(&ctx->md_ctx,md, impl); | ||
95 | EVP_DigestUpdate(&ctx->md_ctx,key,len); | ||
96 | EVP_DigestFinal_ex(&(ctx->md_ctx),ctx->key, | ||
97 | &ctx->key_length); | ||
98 | } | ||
99 | else | ||
100 | { | ||
101 | OPENSSL_assert(len <= sizeof ctx->key); | ||
102 | memcpy(ctx->key,key,len); | ||
103 | ctx->key_length=len; | ||
104 | } | ||
105 | if(ctx->key_length != HMAC_MAX_MD_CBLOCK) | ||
106 | memset(&ctx->key[ctx->key_length], 0, | ||
107 | HMAC_MAX_MD_CBLOCK - ctx->key_length); | ||
108 | } | ||
109 | |||
110 | if (reset) | ||
111 | { | ||
112 | for (i=0; i<HMAC_MAX_MD_CBLOCK; i++) | ||
113 | pad[i]=0x36^ctx->key[i]; | ||
114 | EVP_DigestInit_ex(&ctx->i_ctx,md, impl); | ||
115 | EVP_DigestUpdate(&ctx->i_ctx,pad,M_EVP_MD_block_size(md)); | ||
116 | |||
117 | for (i=0; i<HMAC_MAX_MD_CBLOCK; i++) | ||
118 | pad[i]=0x5c^ctx->key[i]; | ||
119 | EVP_DigestInit_ex(&ctx->o_ctx,md, impl); | ||
120 | EVP_DigestUpdate(&ctx->o_ctx,pad,M_EVP_MD_block_size(md)); | ||
121 | } | ||
122 | EVP_MD_CTX_copy_ex(&ctx->md_ctx,&ctx->i_ctx); | ||
123 | } | ||
124 | |||
125 | void HMAC_Init(HMAC_CTX *ctx, const void *key, int len, | ||
126 | const EVP_MD *md) | ||
127 | { | ||
128 | if(key && md) | ||
129 | HMAC_CTX_init(ctx); | ||
130 | HMAC_Init_ex(ctx,key,len,md, NULL); | ||
131 | } | ||
132 | |||
133 | void HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, size_t len) | ||
134 | { | ||
135 | EVP_DigestUpdate(&ctx->md_ctx,data,len); | ||
136 | } | ||
137 | |||
138 | void HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len) | ||
139 | { | ||
140 | int j; | ||
141 | unsigned int i; | ||
142 | unsigned char buf[EVP_MAX_MD_SIZE]; | ||
143 | |||
144 | j=M_EVP_MD_block_size(ctx->md); | ||
145 | |||
146 | EVP_DigestFinal_ex(&ctx->md_ctx,buf,&i); | ||
147 | EVP_MD_CTX_copy_ex(&ctx->md_ctx,&ctx->o_ctx); | ||
148 | EVP_DigestUpdate(&ctx->md_ctx,buf,i); | ||
149 | EVP_DigestFinal_ex(&ctx->md_ctx,md,len); | ||
150 | } | ||
151 | |||
152 | void HMAC_CTX_init(HMAC_CTX *ctx) | ||
153 | { | ||
154 | EVP_MD_CTX_init(&ctx->i_ctx); | ||
155 | EVP_MD_CTX_init(&ctx->o_ctx); | ||
156 | EVP_MD_CTX_init(&ctx->md_ctx); | ||
157 | } | ||
158 | |||
159 | void HMAC_CTX_cleanup(HMAC_CTX *ctx) | ||
160 | { | ||
161 | EVP_MD_CTX_cleanup(&ctx->i_ctx); | ||
162 | EVP_MD_CTX_cleanup(&ctx->o_ctx); | ||
163 | EVP_MD_CTX_cleanup(&ctx->md_ctx); | ||
164 | memset(ctx,0,sizeof *ctx); | ||
165 | } | ||
166 | |||
167 | unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, | ||
168 | const unsigned char *d, size_t n, unsigned char *md, | ||
169 | unsigned int *md_len) | ||
170 | { | ||
171 | HMAC_CTX c; | ||
172 | static unsigned char m[EVP_MAX_MD_SIZE]; | ||
173 | |||
174 | if (md == NULL) md=m; | ||
175 | HMAC_CTX_init(&c); | ||
176 | HMAC_Init(&c,key,key_len,evp_md); | ||
177 | HMAC_Update(&c,d,n); | ||
178 | HMAC_Final(&c,md,md_len); | ||
179 | HMAC_CTX_cleanup(&c); | ||
180 | return(md); | ||
181 | } | ||
182 | |||
183 | void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags) | ||
184 | { | ||
185 | M_EVP_MD_CTX_set_flags(&ctx->i_ctx, flags); | ||
186 | M_EVP_MD_CTX_set_flags(&ctx->o_ctx, flags); | ||
187 | M_EVP_MD_CTX_set_flags(&ctx->md_ctx, flags); | ||
188 | } | ||
189 | |||
190 | #endif | ||
191 | |||
diff --git a/src/lib/libssl/src/fips/hmac/fips_hmac_selftest.c b/src/lib/libssl/src/fips/hmac/fips_hmac_selftest.c new file mode 100644 index 0000000000..a697770732 --- /dev/null +++ b/src/lib/libssl/src/fips/hmac/fips_hmac_selftest.c | |||
@@ -0,0 +1,135 @@ | |||
1 | /* ==================================================================== | ||
2 | * Copyright (c) 2005 The OpenSSL Project. All rights reserved. | ||
3 | * | ||
4 | * Redistribution and use in source and binary forms, with or without | ||
5 | * modification, are permitted provided that the following conditions | ||
6 | * are met: | ||
7 | * | ||
8 | * 1. Redistributions of source code must retain the above copyright | ||
9 | * notice, this list of conditions and the following disclaimer. | ||
10 | * | ||
11 | * 2. Redistributions in binary form must reproduce the above copyright | ||
12 | * notice, this list of conditions and the following disclaimer in | ||
13 | * the documentation and/or other materials provided with the | ||
14 | * distribution. | ||
15 | * | ||
16 | * 3. All advertising materials mentioning features or use of this | ||
17 | * software must display the following acknowledgment: | ||
18 | * "This product includes software developed by the OpenSSL Project | ||
19 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" | ||
20 | * | ||
21 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
22 | * endorse or promote products derived from this software without | ||
23 | * prior written permission. For written permission, please contact | ||
24 | * openssl-core@openssl.org. | ||
25 | * | ||
26 | * 5. Products derived from this software may not be called "OpenSSL" | ||
27 | * nor may "OpenSSL" appear in their names without prior written | ||
28 | * permission of the OpenSSL Project. | ||
29 | * | ||
30 | * 6. Redistributions of any form whatsoever must retain the following | ||
31 | * acknowledgment: | ||
32 | * "This product includes software developed by the OpenSSL Project | ||
33 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)" | ||
34 | * | ||
35 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
36 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
37 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
38 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
39 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
40 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
41 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
42 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
43 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
44 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
45 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
46 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
47 | * | ||
48 | */ | ||
49 | |||
50 | #include <string.h> | ||
51 | #include <openssl/err.h> | ||
52 | #include <openssl/fips.h> | ||
53 | #include <openssl/hmac.h> | ||
54 | |||
55 | #ifdef OPENSSL_FIPS | ||
56 | typedef struct { | ||
57 | const EVP_MD *(*alg)(void); | ||
58 | const char *key, *iv; | ||
59 | unsigned char kaval[EVP_MAX_MD_SIZE]; | ||
60 | } HMAC_KAT; | ||
61 | |||
62 | static const HMAC_KAT vector[] = { | ||
63 | { EVP_sha1, | ||
64 | /* from http://csrc.nist.gov/publications/fips/fips198/fips-198a.pdf */ | ||
65 | "0123456789:;<=>?@ABC", | ||
66 | "Sample #2", | ||
67 | { 0x09,0x22,0xd3,0x40,0x5f,0xaa,0x3d,0x19, | ||
68 | 0x4f,0x82,0xa4,0x58,0x30,0x73,0x7d,0x5c, | ||
69 | 0xc6,0xc7,0x5d,0x24 } | ||
70 | }, | ||
71 | { EVP_sha224, | ||
72 | /* just keep extending the above... */ | ||
73 | "0123456789:;<=>?@ABC", | ||
74 | "Sample #2", | ||
75 | { 0xdd,0xef,0x0a,0x40,0xcb,0x7d,0x50,0xfb, | ||
76 | 0x6e,0xe6,0xce,0xa1,0x20,0xba,0x26,0xaa, | ||
77 | 0x08,0xf3,0x07,0x75,0x87,0xb8,0xad,0x1b, | ||
78 | 0x8c,0x8d,0x12,0xc7 } | ||
79 | }, | ||
80 | { EVP_sha256, | ||
81 | "0123456789:;<=>?@ABC", | ||
82 | "Sample #2", | ||
83 | { 0xb8,0xf2,0x0d,0xb5,0x41,0xea,0x43,0x09, | ||
84 | 0xca,0x4e,0xa9,0x38,0x0c,0xd0,0xe8,0x34, | ||
85 | 0xf7,0x1f,0xbe,0x91,0x74,0xa2,0x61,0x38, | ||
86 | 0x0d,0xc1,0x7e,0xae,0x6a,0x34,0x51,0xd9 } | ||
87 | }, | ||
88 | { EVP_sha384, | ||
89 | "0123456789:;<=>?@ABC", | ||
90 | "Sample #2", | ||
91 | { 0x08,0xbc,0xb0,0xda,0x49,0x1e,0x87,0xad, | ||
92 | 0x9a,0x1d,0x6a,0xce,0x23,0xc5,0x0b,0xf6, | ||
93 | 0xb7,0x18,0x06,0xa5,0x77,0xcd,0x49,0x04, | ||
94 | 0x89,0xf1,0xe6,0x23,0x44,0x51,0x51,0x9f, | ||
95 | 0x85,0x56,0x80,0x79,0x0c,0xbd,0x4d,0x50, | ||
96 | 0xa4,0x5f,0x29,0xe3,0x93,0xf0,0xe8,0x7f } | ||
97 | }, | ||
98 | { EVP_sha512, | ||
99 | "0123456789:;<=>?@ABC", | ||
100 | "Sample #2", | ||
101 | { 0x80,0x9d,0x44,0x05,0x7c,0x5b,0x95,0x41, | ||
102 | 0x05,0xbd,0x04,0x13,0x16,0xdb,0x0f,0xac, | ||
103 | 0x44,0xd5,0xa4,0xd5,0xd0,0x89,0x2b,0xd0, | ||
104 | 0x4e,0x86,0x64,0x12,0xc0,0x90,0x77,0x68, | ||
105 | 0xf1,0x87,0xb7,0x7c,0x4f,0xae,0x2c,0x2f, | ||
106 | 0x21,0xa5,0xb5,0x65,0x9a,0x4f,0x4b,0xa7, | ||
107 | 0x47,0x02,0xa3,0xde,0x9b,0x51,0xf1,0x45, | ||
108 | 0xbd,0x4f,0x25,0x27,0x42,0x98,0x99,0x05 } | ||
109 | }, | ||
110 | }; | ||
111 | |||
112 | int FIPS_selftest_hmac() | ||
113 | { | ||
114 | int n; | ||
115 | unsigned int outlen; | ||
116 | unsigned char out[EVP_MAX_MD_SIZE]; | ||
117 | const EVP_MD *md; | ||
118 | const HMAC_KAT *t; | ||
119 | |||
120 | for(n=0,t=vector; n<sizeof(vector)/sizeof(vector[0]); n++,t++) | ||
121 | { | ||
122 | md = (*t->alg)(); | ||
123 | HMAC(md,t->key,strlen(t->key), | ||
124 | (const unsigned char *)t->iv,strlen(t->iv), | ||
125 | out,&outlen); | ||
126 | |||
127 | if(memcmp(out,t->kaval,outlen)) | ||
128 | { | ||
129 | FIPSerr(FIPS_F_FIPS_SELFTEST_HMAC,FIPS_R_SELFTEST_FAILED); | ||
130 | return 0; | ||
131 | } | ||
132 | } | ||
133 | return 1; | ||
134 | } | ||
135 | #endif | ||
diff --git a/src/lib/libssl/src/fips/hmac/fips_hmactest.c b/src/lib/libssl/src/fips/hmac/fips_hmactest.c new file mode 100644 index 0000000000..69ebf68622 --- /dev/null +++ b/src/lib/libssl/src/fips/hmac/fips_hmactest.c | |||
@@ -0,0 +1,328 @@ | |||
1 | /* fips_hmactest.c */ | ||
2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | ||
3 | * project 2005. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 2005 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include <ctype.h> | ||
61 | #include <string.h> | ||
62 | #include <openssl/bio.h> | ||
63 | #include <openssl/evp.h> | ||
64 | #include <openssl/hmac.h> | ||
65 | #include <openssl/err.h> | ||
66 | #include <openssl/bn.h> | ||
67 | |||
68 | #include <openssl/x509v3.h> | ||
69 | |||
70 | #ifndef OPENSSL_FIPS | ||
71 | |||
72 | int main(int argc, char *argv[]) | ||
73 | { | ||
74 | printf("No FIPS HMAC support\n"); | ||
75 | return(0); | ||
76 | } | ||
77 | |||
78 | #else | ||
79 | |||
80 | #include <openssl/fips.h> | ||
81 | #include "fips_utl.h" | ||
82 | |||
83 | static int hmac_test(const EVP_MD *md, FILE *out, FILE *in); | ||
84 | static int print_hmac(const EVP_MD *md, FILE *out, | ||
85 | unsigned char *Key, int Klen, | ||
86 | unsigned char *Msg, int Msglen, int Tlen); | ||
87 | |||
88 | int main(int argc, char **argv) | ||
89 | { | ||
90 | FILE *in = NULL, *out = NULL; | ||
91 | |||
92 | int ret = 1; | ||
93 | |||
94 | if(!FIPS_mode_set(1)) | ||
95 | { | ||
96 | do_print_errors(); | ||
97 | goto end; | ||
98 | } | ||
99 | |||
100 | if (argc == 1) | ||
101 | in = stdin; | ||
102 | else | ||
103 | in = fopen(argv[1], "r"); | ||
104 | |||
105 | if (argc < 2) | ||
106 | out = stdout; | ||
107 | else | ||
108 | out = fopen(argv[2], "w"); | ||
109 | |||
110 | if (!in) | ||
111 | { | ||
112 | fprintf(stderr, "FATAL input initialization error\n"); | ||
113 | goto end; | ||
114 | } | ||
115 | |||
116 | if (!out) | ||
117 | { | ||
118 | fprintf(stderr, "FATAL output initialization error\n"); | ||
119 | goto end; | ||
120 | } | ||
121 | |||
122 | if (!hmac_test(EVP_sha1(), out, in)) | ||
123 | { | ||
124 | fprintf(stderr, "FATAL hmac file processing error\n"); | ||
125 | goto end; | ||
126 | } | ||
127 | else | ||
128 | ret = 0; | ||
129 | |||
130 | end: | ||
131 | |||
132 | if (ret) | ||
133 | do_print_errors(); | ||
134 | |||
135 | if (in && (in != stdin)) | ||
136 | fclose(in); | ||
137 | if (out && (out != stdout)) | ||
138 | fclose(out); | ||
139 | |||
140 | return ret; | ||
141 | |||
142 | } | ||
143 | |||
144 | #define HMAC_TEST_MAXLINELEN 1024 | ||
145 | |||
146 | int hmac_test(const EVP_MD *md, FILE *out, FILE *in) | ||
147 | { | ||
148 | char *linebuf, *olinebuf, *p, *q; | ||
149 | char *keyword, *value; | ||
150 | unsigned char *Key = NULL, *Msg = NULL; | ||
151 | int Count, Klen, Tlen; | ||
152 | long Keylen, Msglen; | ||
153 | int ret = 0; | ||
154 | int lnum = 0; | ||
155 | |||
156 | olinebuf = OPENSSL_malloc(HMAC_TEST_MAXLINELEN); | ||
157 | linebuf = OPENSSL_malloc(HMAC_TEST_MAXLINELEN); | ||
158 | |||
159 | if (!linebuf || !olinebuf) | ||
160 | goto error; | ||
161 | |||
162 | Count = -1; | ||
163 | Klen = -1; | ||
164 | Tlen = -1; | ||
165 | |||
166 | while (fgets(olinebuf, HMAC_TEST_MAXLINELEN, in)) | ||
167 | { | ||
168 | lnum++; | ||
169 | strcpy(linebuf, olinebuf); | ||
170 | keyword = linebuf; | ||
171 | /* Skip leading space */ | ||
172 | while (isspace((unsigned char)*keyword)) | ||
173 | keyword++; | ||
174 | |||
175 | /* Look for = sign */ | ||
176 | p = strchr(linebuf, '='); | ||
177 | |||
178 | /* If no = or starts with [ (for [L=20] line) just copy */ | ||
179 | if (!p) | ||
180 | { | ||
181 | if (fputs(olinebuf, out) < 0) | ||
182 | goto error; | ||
183 | continue; | ||
184 | } | ||
185 | |||
186 | q = p - 1; | ||
187 | |||
188 | /* Remove trailing space */ | ||
189 | while (isspace((unsigned char)*q)) | ||
190 | *q-- = 0; | ||
191 | |||
192 | *p = 0; | ||
193 | value = p + 1; | ||
194 | |||
195 | /* Remove leading space from value */ | ||
196 | while (isspace((unsigned char)*value)) | ||
197 | value++; | ||
198 | |||
199 | /* Remove trailing space from value */ | ||
200 | p = value + strlen(value) - 1; | ||
201 | |||
202 | while (*p == '\n' || isspace((unsigned char)*p)) | ||
203 | *p-- = 0; | ||
204 | |||
205 | if (!strcmp(keyword,"[L") && *p==']') | ||
206 | { | ||
207 | switch (atoi(value)) | ||
208 | { | ||
209 | case 20: md=EVP_sha1(); break; | ||
210 | case 28: md=EVP_sha224(); break; | ||
211 | case 32: md=EVP_sha256(); break; | ||
212 | case 48: md=EVP_sha384(); break; | ||
213 | case 64: md=EVP_sha512(); break; | ||
214 | default: goto parse_error; | ||
215 | } | ||
216 | } | ||
217 | else if (!strcmp(keyword, "Count")) | ||
218 | { | ||
219 | if (Count != -1) | ||
220 | goto parse_error; | ||
221 | Count = atoi(value); | ||
222 | if (Count < 0) | ||
223 | goto parse_error; | ||
224 | } | ||
225 | else if (!strcmp(keyword, "Klen")) | ||
226 | { | ||
227 | if (Klen != -1) | ||
228 | goto parse_error; | ||
229 | Klen = atoi(value); | ||
230 | if (Klen < 0) | ||
231 | goto parse_error; | ||
232 | } | ||
233 | else if (!strcmp(keyword, "Tlen")) | ||
234 | { | ||
235 | if (Tlen != -1) | ||
236 | goto parse_error; | ||
237 | Tlen = atoi(value); | ||
238 | if (Tlen < 0) | ||
239 | goto parse_error; | ||
240 | } | ||
241 | else if (!strcmp(keyword, "Msg")) | ||
242 | { | ||
243 | if (Msg) | ||
244 | goto parse_error; | ||
245 | Msg = hex2bin_m(value, &Msglen); | ||
246 | if (!Msg) | ||
247 | goto parse_error; | ||
248 | } | ||
249 | else if (!strcmp(keyword, "Key")) | ||
250 | { | ||
251 | if (Key) | ||
252 | goto parse_error; | ||
253 | Key = hex2bin_m(value, &Keylen); | ||
254 | if (!Key) | ||
255 | goto parse_error; | ||
256 | } | ||
257 | else if (!strcmp(keyword, "Mac")) | ||
258 | continue; | ||
259 | else | ||
260 | goto parse_error; | ||
261 | |||
262 | fputs(olinebuf, out); | ||
263 | |||
264 | if (Key && Msg && (Tlen > 0) && (Klen > 0)) | ||
265 | { | ||
266 | if (!print_hmac(md, out, Key, Klen, Msg, Msglen, Tlen)) | ||
267 | goto error; | ||
268 | OPENSSL_free(Key); | ||
269 | Key = NULL; | ||
270 | OPENSSL_free(Msg); | ||
271 | Msg = NULL; | ||
272 | Klen = -1; | ||
273 | Tlen = -1; | ||
274 | Count = -1; | ||
275 | } | ||
276 | |||
277 | } | ||
278 | |||
279 | |||
280 | ret = 1; | ||
281 | |||
282 | |||
283 | error: | ||
284 | |||
285 | if (olinebuf) | ||
286 | OPENSSL_free(olinebuf); | ||
287 | if (linebuf) | ||
288 | OPENSSL_free(linebuf); | ||
289 | if (Key) | ||
290 | OPENSSL_free(Key); | ||
291 | if (Msg) | ||
292 | OPENSSL_free(Msg); | ||
293 | |||
294 | return ret; | ||
295 | |||
296 | parse_error: | ||
297 | |||
298 | fprintf(stderr, "FATAL parse error processing line %d\n", lnum); | ||
299 | |||
300 | goto error; | ||
301 | |||
302 | } | ||
303 | |||
304 | static int print_hmac(const EVP_MD *emd, FILE *out, | ||
305 | unsigned char *Key, int Klen, | ||
306 | unsigned char *Msg, int Msglen, int Tlen) | ||
307 | { | ||
308 | int i, mdlen; | ||
309 | unsigned char md[EVP_MAX_MD_SIZE]; | ||
310 | if (!HMAC(emd, Key, Klen, Msg, Msglen, md, | ||
311 | (unsigned int *)&mdlen)) | ||
312 | { | ||
313 | fputs("Error calculating HMAC\n", stderr); | ||
314 | return 0; | ||
315 | } | ||
316 | if (Tlen > mdlen) | ||
317 | { | ||
318 | fputs("Parameter error, Tlen > HMAC length\n", stderr); | ||
319 | return 0; | ||
320 | } | ||
321 | fputs("Mac = ", out); | ||
322 | for (i = 0; i < Tlen; i++) | ||
323 | fprintf(out, "%02x", md[i]); | ||
324 | fputs("\n", out); | ||
325 | return 1; | ||
326 | } | ||
327 | |||
328 | #endif | ||
diff --git a/src/lib/libssl/src/fips/install.com b/src/lib/libssl/src/fips/install.com index aa19f0599d..a2d22d387f 100644 --- a/src/lib/libssl/src/fips/install.com +++ b/src/lib/libssl/src/fips/install.com | |||
@@ -26,14 +26,16 @@ $ IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN - | |||
26 | $ IF F$PARSE("WRK_SSLINCLUDE:") .EQS. "" THEN - | 26 | $ IF F$PARSE("WRK_SSLINCLUDE:") .EQS. "" THEN - |
27 | CREATE/DIR/LOG WRK_SSLINCLUDE: | 27 | CREATE/DIR/LOG WRK_SSLINCLUDE: |
28 | $ | 28 | $ |
29 | $ FDIRS := ,RAND,SHA1,DES,AES,DSA,RSA | 29 | $ FDIRS := ,RAND,SHA,DES,AES,DSA,RSA,DH,HMAC |
30 | $ EXHEADER_ := fips.h | 30 | $ EXHEADER_ := fips.h |
31 | $ EXHEADER_SHA1 := | 31 | $ EXHEADER_SHA := fips_sha.h |
32 | $ EXHEADER_RAND := fips_rand.h | 32 | $ EXHEADER_RAND := fips_rand.h |
33 | $ EXHEADER_DES := | 33 | $ EXHEADER_DES := |
34 | $ EXHEADER_AES := | 34 | $ EXHEADER_AES := |
35 | $ EXHEADER_DSA := | 35 | $ EXHEADER_DSA := |
36 | $ EXHEADER_RSA := | 36 | $ EXHEADER_RSA := |
37 | $ EXHEADER_DH := | ||
38 | $ EXHEADER_HMAC := | ||
37 | $ | 39 | $ |
38 | $ I = 0 | 40 | $ I = 0 |
39 | $ LOOP_FDIRS: | 41 | $ LOOP_FDIRS: |
diff --git a/src/lib/libssl/src/fips/mkfipsscr.pl b/src/lib/libssl/src/fips/mkfipsscr.pl new file mode 100644 index 0000000000..dc60cdf580 --- /dev/null +++ b/src/lib/libssl/src/fips/mkfipsscr.pl | |||
@@ -0,0 +1,632 @@ | |||
1 | #!/usr/local/bin/perl -w | ||
2 | # Quick & dirty utility to generate a script for executing the | ||
3 | # FIPS 140-2 CMVP algorithm tests based on the pathnames of | ||
4 | # input algorithm test files actually present (the unqualified | ||
5 | # file names are consistent but the pathnames are not). | ||
6 | # | ||
7 | |||
8 | # List of all the unqualified file names we expect. | ||
9 | my %fips_tests = ( | ||
10 | |||
11 | # FIPS test definitions | ||
12 | |||
13 | # DSA tests | ||
14 | |||
15 | "PQGGen" => "fips_dssvs pqg", | ||
16 | "KeyPair" => "fips_dssvs keypair", | ||
17 | "SigGen" => "fips_dssvs siggen", | ||
18 | "SigVer" => "fips_dssvs sigver", | ||
19 | |||
20 | # SHA tests | ||
21 | |||
22 | "SHA1LongMsg" => "fips_shatest", | ||
23 | "SHA1Monte" => "fips_shatest", | ||
24 | "SHA1ShortMsg" => "fips_shatest", | ||
25 | "SHA224LongMsg" => "fips_shatest", | ||
26 | "SHA224Monte" => "fips_shatest", | ||
27 | "SHA224ShortMsg" => "fips_shatest", | ||
28 | "SHA256LongMsg" => "fips_shatest", | ||
29 | "SHA256Monte" => "fips_shatest", | ||
30 | "SHA256ShortMsg" => "fips_shatest", | ||
31 | "SHA384LongMsg" => "fips_shatest", | ||
32 | "SHA384Monte" => "fips_shatest", | ||
33 | "SHA384ShortMsg" => "fips_shatest", | ||
34 | "SHA512LongMsg" => "fips_shatest", | ||
35 | "SHA512Monte" => "fips_shatest", | ||
36 | "SHA512ShortMsg" => "fips_shatest", | ||
37 | |||
38 | # HMAC | ||
39 | |||
40 | "HMAC" => "fips_hmactest", | ||
41 | |||
42 | # RAND tests | ||
43 | |||
44 | "ANSI931_AES128MCT" => "fips_rngvs mct", | ||
45 | "ANSI931_AES192MCT" => "fips_rngvs mct", | ||
46 | "ANSI931_AES256MCT" => "fips_rngvs mct", | ||
47 | "ANSI931_AES128VST" => "fips_rngvs vst", | ||
48 | "ANSI931_AES192VST" => "fips_rngvs vst", | ||
49 | "ANSI931_AES256VST" => "fips_rngvs vst", | ||
50 | |||
51 | # RSA tests | ||
52 | |||
53 | "SigGen15" => "fips_rsastest", | ||
54 | "SigVer15" => "fips_rsavtest", | ||
55 | "SigGenPSS" => "fips_rsastest -saltlen SALT", | ||
56 | "SigVerPSS" => "fips_rsavtest -saltlen SALT", | ||
57 | "SigGenRSA" => "fips_rsastest -x931", | ||
58 | "SigVerRSA" => "fips_rsavtest -x931", | ||
59 | "KeyGenRSA" => "fips_rsagtest", | ||
60 | |||
61 | # AES tests | ||
62 | |||
63 | "CBCGFSbox128" => "fips_aesavs -f", | ||
64 | "CBCGFSbox192" => "fips_aesavs -f", | ||
65 | "CBCGFSbox256" => "fips_aesavs -f", | ||
66 | "CBCKeySbox128" => "fips_aesavs -f", | ||
67 | "CBCKeySbox192" => "fips_aesavs -f", | ||
68 | "CBCKeySbox256" => "fips_aesavs -f", | ||
69 | "CBCMCT128" => "fips_aesavs -f", | ||
70 | "CBCMCT192" => "fips_aesavs -f", | ||
71 | "CBCMCT256" => "fips_aesavs -f", | ||
72 | "CBCMMT128" => "fips_aesavs -f", | ||
73 | "CBCMMT192" => "fips_aesavs -f", | ||
74 | "CBCMMT256" => "fips_aesavs -f", | ||
75 | "CBCVarKey128" => "fips_aesavs -f", | ||
76 | "CBCVarKey192" => "fips_aesavs -f", | ||
77 | "CBCVarKey256" => "fips_aesavs -f", | ||
78 | "CBCVarTxt128" => "fips_aesavs -f", | ||
79 | "CBCVarTxt192" => "fips_aesavs -f", | ||
80 | "CBCVarTxt256" => "fips_aesavs -f", | ||
81 | "CFB128GFSbox128" => "fips_aesavs -f", | ||
82 | "CFB128GFSbox192" => "fips_aesavs -f", | ||
83 | "CFB128GFSbox256" => "fips_aesavs -f", | ||
84 | "CFB128KeySbox128" => "fips_aesavs -f", | ||
85 | "CFB128KeySbox192" => "fips_aesavs -f", | ||
86 | "CFB128KeySbox256" => "fips_aesavs -f", | ||
87 | "CFB128MCT128" => "fips_aesavs -f", | ||
88 | "CFB128MCT192" => "fips_aesavs -f", | ||
89 | "CFB128MCT256" => "fips_aesavs -f", | ||
90 | "CFB128MMT128" => "fips_aesavs -f", | ||
91 | "CFB128MMT192" => "fips_aesavs -f", | ||
92 | "CFB128MMT256" => "fips_aesavs -f", | ||
93 | "CFB128VarKey128" => "fips_aesavs -f", | ||
94 | "CFB128VarKey192" => "fips_aesavs -f", | ||
95 | "CFB128VarKey256" => "fips_aesavs -f", | ||
96 | "CFB128VarTxt128" => "fips_aesavs -f", | ||
97 | "CFB128VarTxt192" => "fips_aesavs -f", | ||
98 | "CFB128VarTxt256" => "fips_aesavs -f", | ||
99 | "CFB8GFSbox128" => "fips_aesavs -f", | ||
100 | "CFB8GFSbox192" => "fips_aesavs -f", | ||
101 | "CFB8GFSbox256" => "fips_aesavs -f", | ||
102 | "CFB8KeySbox128" => "fips_aesavs -f", | ||
103 | "CFB8KeySbox192" => "fips_aesavs -f", | ||
104 | "CFB8KeySbox256" => "fips_aesavs -f", | ||
105 | "CFB8MCT128" => "fips_aesavs -f", | ||
106 | "CFB8MCT192" => "fips_aesavs -f", | ||
107 | "CFB8MCT256" => "fips_aesavs -f", | ||
108 | "CFB8MMT128" => "fips_aesavs -f", | ||
109 | "CFB8MMT192" => "fips_aesavs -f", | ||
110 | "CFB8MMT256" => "fips_aesavs -f", | ||
111 | "CFB8VarKey128" => "fips_aesavs -f", | ||
112 | "CFB8VarKey192" => "fips_aesavs -f", | ||
113 | "CFB8VarKey256" => "fips_aesavs -f", | ||
114 | "CFB8VarTxt128" => "fips_aesavs -f", | ||
115 | "CFB8VarTxt192" => "fips_aesavs -f", | ||
116 | "CFB8VarTxt256" => "fips_aesavs -f", | ||
117 | #"CFB1GFSbox128" => "fips_aesavs -f", | ||
118 | #"CFB1GFSbox192" => "fips_aesavs -f", | ||
119 | #"CFB1GFSbox256" => "fips_aesavs -f", | ||
120 | #"CFB1KeySbox128" => "fips_aesavs -f", | ||
121 | #"CFB1KeySbox192" => "fips_aesavs -f", | ||
122 | #"CFB1KeySbox256" => "fips_aesavs -f", | ||
123 | #"CFB1MCT128" => "fips_aesavs -f", | ||
124 | #"CFB1MCT192" => "fips_aesavs -f", | ||
125 | #"CFB1MCT256" => "fips_aesavs -f", | ||
126 | #"CFB1MMT128" => "fips_aesavs -f", | ||
127 | #"CFB1MMT192" => "fips_aesavs -f", | ||
128 | #"CFB1MMT256" => "fips_aesavs -f", | ||
129 | #"CFB1VarKey128" => "fips_aesavs -f", | ||
130 | #"CFB1VarKey192" => "fips_aesavs -f", | ||
131 | #"CFB1VarKey256" => "fips_aesavs -f", | ||
132 | #"CFB1VarTxt128" => "fips_aesavs -f", | ||
133 | #"CFB1VarTxt192" => "fips_aesavs -f", | ||
134 | #"CFB1VarTxt256" => "fips_aesavs -f", | ||
135 | "ECBGFSbox128" => "fips_aesavs -f", | ||
136 | "ECBGFSbox192" => "fips_aesavs -f", | ||
137 | "ECBGFSbox256" => "fips_aesavs -f", | ||
138 | "ECBKeySbox128" => "fips_aesavs -f", | ||
139 | "ECBKeySbox192" => "fips_aesavs -f", | ||
140 | "ECBKeySbox256" => "fips_aesavs -f", | ||
141 | "ECBMCT128" => "fips_aesavs -f", | ||
142 | "ECBMCT192" => "fips_aesavs -f", | ||
143 | "ECBMCT256" => "fips_aesavs -f", | ||
144 | "ECBMMT128" => "fips_aesavs -f", | ||
145 | "ECBMMT192" => "fips_aesavs -f", | ||
146 | "ECBMMT256" => "fips_aesavs -f", | ||
147 | "ECBVarKey128" => "fips_aesavs -f", | ||
148 | "ECBVarKey192" => "fips_aesavs -f", | ||
149 | "ECBVarKey256" => "fips_aesavs -f", | ||
150 | "ECBVarTxt128" => "fips_aesavs -f", | ||
151 | "ECBVarTxt192" => "fips_aesavs -f", | ||
152 | "ECBVarTxt256" => "fips_aesavs -f", | ||
153 | "OFBGFSbox128" => "fips_aesavs -f", | ||
154 | "OFBGFSbox192" => "fips_aesavs -f", | ||
155 | "OFBGFSbox256" => "fips_aesavs -f", | ||
156 | "OFBKeySbox128" => "fips_aesavs -f", | ||
157 | "OFBKeySbox192" => "fips_aesavs -f", | ||
158 | "OFBKeySbox256" => "fips_aesavs -f", | ||
159 | "OFBMCT128" => "fips_aesavs -f", | ||
160 | "OFBMCT192" => "fips_aesavs -f", | ||
161 | "OFBMCT256" => "fips_aesavs -f", | ||
162 | "OFBMMT128" => "fips_aesavs -f", | ||
163 | "OFBMMT192" => "fips_aesavs -f", | ||
164 | "OFBMMT256" => "fips_aesavs -f", | ||
165 | "OFBVarKey128" => "fips_aesavs -f", | ||
166 | "OFBVarKey192" => "fips_aesavs -f", | ||
167 | "OFBVarKey256" => "fips_aesavs -f", | ||
168 | "OFBVarTxt128" => "fips_aesavs -f", | ||
169 | "OFBVarTxt192" => "fips_aesavs -f", | ||
170 | "OFBVarTxt256" => "fips_aesavs -f", | ||
171 | |||
172 | # Triple DES tests | ||
173 | |||
174 | "TCBCinvperm" => "fips_desmovs -f", | ||
175 | "TCBCMMT1" => "fips_desmovs -f", | ||
176 | "TCBCMMT2" => "fips_desmovs -f", | ||
177 | "TCBCMMT3" => "fips_desmovs -f", | ||
178 | "TCBCMonte1" => "fips_desmovs -f", | ||
179 | "TCBCMonte2" => "fips_desmovs -f", | ||
180 | "TCBCMonte3" => "fips_desmovs -f", | ||
181 | "TCBCpermop" => "fips_desmovs -f", | ||
182 | "TCBCsubtab" => "fips_desmovs -f", | ||
183 | "TCBCvarkey" => "fips_desmovs -f", | ||
184 | "TCBCvartext" => "fips_desmovs -f", | ||
185 | "TCFB64invperm" => "fips_desmovs -f", | ||
186 | "TCFB64MMT1" => "fips_desmovs -f", | ||
187 | "TCFB64MMT2" => "fips_desmovs -f", | ||
188 | "TCFB64MMT3" => "fips_desmovs -f", | ||
189 | "TCFB64Monte1" => "fips_desmovs -f", | ||
190 | "TCFB64Monte2" => "fips_desmovs -f", | ||
191 | "TCFB64Monte3" => "fips_desmovs -f", | ||
192 | "TCFB64permop" => "fips_desmovs -f", | ||
193 | "TCFB64subtab" => "fips_desmovs -f", | ||
194 | "TCFB64varkey" => "fips_desmovs -f", | ||
195 | "TCFB64vartext" => "fips_desmovs -f", | ||
196 | "TCFB8invperm" => "fips_desmovs -f", | ||
197 | "TCFB8MMT1" => "fips_desmovs -f", | ||
198 | "TCFB8MMT2" => "fips_desmovs -f", | ||
199 | "TCFB8MMT3" => "fips_desmovs -f", | ||
200 | "TCFB8Monte1" => "fips_desmovs -f", | ||
201 | "TCFB8Monte2" => "fips_desmovs -f", | ||
202 | "TCFB8Monte3" => "fips_desmovs -f", | ||
203 | "TCFB8permop" => "fips_desmovs -f", | ||
204 | "TCFB8subtab" => "fips_desmovs -f", | ||
205 | "TCFB8varkey" => "fips_desmovs -f", | ||
206 | "TCFB8vartext" => "fips_desmovs -f", | ||
207 | "TECBinvperm" => "fips_desmovs -f", | ||
208 | "TECBMMT1" => "fips_desmovs -f", | ||
209 | "TECBMMT2" => "fips_desmovs -f", | ||
210 | "TECBMMT3" => "fips_desmovs -f", | ||
211 | "TECBMonte1" => "fips_desmovs -f", | ||
212 | "TECBMonte2" => "fips_desmovs -f", | ||
213 | "TECBMonte3" => "fips_desmovs -f", | ||
214 | "TECBpermop" => "fips_desmovs -f", | ||
215 | "TECBsubtab" => "fips_desmovs -f", | ||
216 | "TECBvarkey" => "fips_desmovs -f", | ||
217 | "TECBvartext" => "fips_desmovs -f", | ||
218 | "TOFBinvperm" => "fips_desmovs -f", | ||
219 | "TOFBMMT1" => "fips_desmovs -f", | ||
220 | "TOFBMMT2" => "fips_desmovs -f", | ||
221 | "TOFBMMT3" => "fips_desmovs -f", | ||
222 | "TOFBMonte1" => "fips_desmovs -f", | ||
223 | "TOFBMonte2" => "fips_desmovs -f", | ||
224 | "TOFBMonte3" => "fips_desmovs -f", | ||
225 | "TOFBpermop" => "fips_desmovs -f", | ||
226 | "TOFBsubtab" => "fips_desmovs -f", | ||
227 | "TOFBvarkey" => "fips_desmovs -f", | ||
228 | "TOFBvartext" => "fips_desmovs -f", | ||
229 | "TCBCinvperm" => "fips_desmovs -f", | ||
230 | "TCBCMMT1" => "fips_desmovs -f", | ||
231 | "TCBCMMT2" => "fips_desmovs -f", | ||
232 | "TCBCMMT3" => "fips_desmovs -f", | ||
233 | "TCBCMonte1" => "fips_desmovs -f", | ||
234 | "TCBCMonte2" => "fips_desmovs -f", | ||
235 | "TCBCMonte3" => "fips_desmovs -f", | ||
236 | "TCBCpermop" => "fips_desmovs -f", | ||
237 | "TCBCsubtab" => "fips_desmovs -f", | ||
238 | "TCBCvarkey" => "fips_desmovs -f", | ||
239 | "TCBCvartext" => "fips_desmovs -f", | ||
240 | "TCFB64invperm" => "fips_desmovs -f", | ||
241 | "TCFB64MMT1" => "fips_desmovs -f", | ||
242 | "TCFB64MMT2" => "fips_desmovs -f", | ||
243 | "TCFB64MMT3" => "fips_desmovs -f", | ||
244 | "TCFB64Monte1" => "fips_desmovs -f", | ||
245 | "TCFB64Monte2" => "fips_desmovs -f", | ||
246 | "TCFB64Monte3" => "fips_desmovs -f", | ||
247 | "TCFB64permop" => "fips_desmovs -f", | ||
248 | "TCFB64subtab" => "fips_desmovs -f", | ||
249 | "TCFB64varkey" => "fips_desmovs -f", | ||
250 | "TCFB64vartext" => "fips_desmovs -f", | ||
251 | "TCFB8invperm" => "fips_desmovs -f", | ||
252 | "TCFB8MMT1" => "fips_desmovs -f", | ||
253 | "TCFB8MMT2" => "fips_desmovs -f", | ||
254 | "TCFB8MMT3" => "fips_desmovs -f", | ||
255 | "TCFB8Monte1" => "fips_desmovs -f", | ||
256 | "TCFB8Monte2" => "fips_desmovs -f", | ||
257 | "TCFB8Monte3" => "fips_desmovs -f", | ||
258 | "TCFB8permop" => "fips_desmovs -f", | ||
259 | "TCFB8subtab" => "fips_desmovs -f", | ||
260 | "TCFB8varkey" => "fips_desmovs -f", | ||
261 | "TCFB8vartext" => "fips_desmovs -f", | ||
262 | "TECBinvperm" => "fips_desmovs -f", | ||
263 | "TECBMMT1" => "fips_desmovs -f", | ||
264 | "TECBMMT2" => "fips_desmovs -f", | ||
265 | "TECBMMT3" => "fips_desmovs -f", | ||
266 | "TECBMonte1" => "fips_desmovs -f", | ||
267 | "TECBMonte2" => "fips_desmovs -f", | ||
268 | "TECBMonte3" => "fips_desmovs -f", | ||
269 | "TECBpermop" => "fips_desmovs -f", | ||
270 | "TECBsubtab" => "fips_desmovs -f", | ||
271 | "TECBvarkey" => "fips_desmovs -f", | ||
272 | "TECBvartext" => "fips_desmovs -f", | ||
273 | "TOFBinvperm" => "fips_desmovs -f", | ||
274 | "TOFBMMT1" => "fips_desmovs -f", | ||
275 | "TOFBMMT2" => "fips_desmovs -f", | ||
276 | "TOFBMMT3" => "fips_desmovs -f", | ||
277 | "TOFBMonte1" => "fips_desmovs -f", | ||
278 | "TOFBMonte2" => "fips_desmovs -f", | ||
279 | "TOFBMonte3" => "fips_desmovs -f", | ||
280 | "TOFBpermop" => "fips_desmovs -f", | ||
281 | "TOFBsubtab" => "fips_desmovs -f", | ||
282 | "TOFBvarkey" => "fips_desmovs -f", | ||
283 | "TOFBvartext" => "fips_desmovs -f" | ||
284 | |||
285 | ); | ||
286 | my %salt_names = ( | ||
287 | "SigVerPSS (salt 0)" => "SigVerPSS", | ||
288 | "SigVerPSS (salt 62)" => "SigVerPSS", | ||
289 | "SigGenPSS (salt 0)" => "SigGenPSS", | ||
290 | "SigGenPSS (salt 62)" => "SigGenPSS", | ||
291 | ); | ||
292 | |||
293 | |||
294 | my $win32 = $^O =~ m/mswin/i; | ||
295 | my $onedir = 0; | ||
296 | my $filter = ""; | ||
297 | my $tvdir; | ||
298 | my $tprefix; | ||
299 | my $shwrap_prefix; | ||
300 | my $debug = 0; | ||
301 | my $quiet = 0; | ||
302 | my $rspdir = "rsp"; | ||
303 | my $rspignore = 0; | ||
304 | my @bogus = (); # list of unmatched *.rsp files | ||
305 | my $bufout = ''; | ||
306 | my %_programs = (); # list of external programs to check | ||
307 | |||
308 | foreach (@ARGV) | ||
309 | { | ||
310 | if ($_ eq "--win32") | ||
311 | { | ||
312 | $win32 = 1; | ||
313 | } | ||
314 | elsif ($_ eq "--onedir") | ||
315 | { | ||
316 | $onedir = 1; | ||
317 | } | ||
318 | elsif ($_ eq "--debug") | ||
319 | { | ||
320 | $debug = 1; | ||
321 | } | ||
322 | elsif ($_ eq "--quiet") | ||
323 | { | ||
324 | $quiet = 1; | ||
325 | } | ||
326 | elsif (/--dir=(.*)$/) | ||
327 | { | ||
328 | $tvdir = $1; | ||
329 | } | ||
330 | elsif (/--rspdir=(.*)$/) | ||
331 | { | ||
332 | $rspdir = $1; | ||
333 | } | ||
334 | elsif (/--rspignore$/) | ||
335 | { | ||
336 | $rspignore = 1; | ||
337 | } | ||
338 | elsif (/--tprefix=(.*)$/) | ||
339 | { | ||
340 | $tprefix = $1; | ||
341 | } | ||
342 | elsif (/--shwrap_prefix=(.*)$/) | ||
343 | { | ||
344 | $shwrap_prefix = $1; | ||
345 | } | ||
346 | elsif (/--filter=(.*)$/) | ||
347 | { | ||
348 | $filter = $1; | ||
349 | } | ||
350 | elsif (/--outfile=(.*)$/) | ||
351 | { | ||
352 | $outfile = $1; | ||
353 | } | ||
354 | else | ||
355 | { | ||
356 | &Help(); | ||
357 | exit(1); | ||
358 | } | ||
359 | } | ||
360 | |||
361 | $tvdir = "." unless defined $tvdir; | ||
362 | |||
363 | if ($win32) | ||
364 | { | ||
365 | if (!defined $tprefix) | ||
366 | { | ||
367 | if ($onedir) | ||
368 | { | ||
369 | $tprefix = ".\\"; | ||
370 | } | ||
371 | else | ||
372 | { | ||
373 | $tprefix = "..\\out32dll\\"; | ||
374 | } | ||
375 | } | ||
376 | |||
377 | $bufinit .= <<END; | ||
378 | \@echo off | ||
379 | rem Test vector run script | ||
380 | rem Auto generated by mkfipsscr.pl script | ||
381 | rem Do not edit | ||
382 | |||
383 | END | ||
384 | |||
385 | } | ||
386 | else | ||
387 | { | ||
388 | if ($onedir) | ||
389 | { | ||
390 | $tprefix = "./" unless defined $tprefix; | ||
391 | $shwrap_prefix = "./" unless defined $shwrap_prefix; | ||
392 | } | ||
393 | else | ||
394 | { | ||
395 | $tprefix = "../test/" unless defined $tprefix; | ||
396 | $shwrap_prefix = "../util/" unless defined $shwrap_prefix; | ||
397 | } | ||
398 | |||
399 | $bufinit .= <<END; | ||
400 | #!/bin/sh | ||
401 | |||
402 | # Test vector run script | ||
403 | # Auto generated by mkfipsscr.pl script | ||
404 | # Do not edit | ||
405 | |||
406 | END | ||
407 | |||
408 | } | ||
409 | my %fips_found; | ||
410 | foreach (keys %fips_tests) | ||
411 | { | ||
412 | $fips_found{$_} = 0; | ||
413 | } | ||
414 | my %saltPSS; | ||
415 | for (keys %salt_names) | ||
416 | { | ||
417 | $salt_found{$_} = 0; | ||
418 | } | ||
419 | |||
420 | recurse_test($win32, $tprefix, $filter, $tvdir); | ||
421 | |||
422 | while (($key, $value) = each %salt_found) | ||
423 | { | ||
424 | &countentry($key, $value); | ||
425 | delete $fips_found{$salt_names{$key}}; | ||
426 | } | ||
427 | while (($key, $value) = each %fips_found) | ||
428 | { | ||
429 | &countentry($key, $value); | ||
430 | } | ||
431 | |||
432 | # If no fatal errors write out the script file | ||
433 | $outfile = "fipstests.sh" unless defined $outfile; | ||
434 | open(OUT, ">$outfile") || die "Error opening $outfile: $!"; | ||
435 | print OUT $bufinit; | ||
436 | if (!$rspignore && @bogus) | ||
437 | { | ||
438 | print STDERR "ERROR: please remove bogus *.rsp files\n"; | ||
439 | print OUT <<EOF; | ||
440 | echo $outfile generation failed due to presence of bogus *.rsp files | ||
441 | EOF | ||
442 | } | ||
443 | else | ||
444 | { | ||
445 | print OUT $bufout; | ||
446 | } | ||
447 | close OUT; | ||
448 | |||
449 | # Check for external programs | ||
450 | for (keys %_programs) | ||
451 | { | ||
452 | s/ .*$//; | ||
453 | -x $_ || print STDERR "WARNING: program $_ not found\n"; | ||
454 | } | ||
455 | |||
456 | #-------------------------------- | ||
457 | sub Help { | ||
458 | (my $cmd) = ($0 =~ m#([^/]+)$#); | ||
459 | print <<EOF; | ||
460 | $cmd: generate script for CMVP algorithm tests | ||
461 | --debug Enable debug output | ||
462 | --dir=<dirname> Optional root for *.req file search | ||
463 | --filter=<regexp> | ||
464 | --onedir <dirname> Assume all components in current directory | ||
465 | --outfile=<filename> Optional name of output script, default fipstests.{sh|bat} | ||
466 | --rspdir=<dirname> Name of subdirectories containing *.rsp files, default "resp" | ||
467 | --rspignore Ignore any bogus *.rsp files | ||
468 | --shwrap_prefix=<prefix> | ||
469 | --tprefix=<prefix> | ||
470 | --quiet Shhh.... | ||
471 | --win32 Generate script for Win32 environment | ||
472 | EOF | ||
473 | } | ||
474 | |||
475 | #-------------------------------- | ||
476 | sub countentry { | ||
477 | my ($key,$value) = @_; | ||
478 | if ($value == 0) | ||
479 | { | ||
480 | print STDERR "WARNING: test file $key not found\n" unless $quiet; | ||
481 | } | ||
482 | elsif ($value > 1) | ||
483 | { | ||
484 | print STDERR "WARNING: test file $key found $value times\n" unless $quiet; | ||
485 | } | ||
486 | else | ||
487 | { | ||
488 | print STDERR "Found test file $key\n" if $debug; | ||
489 | } | ||
490 | } | ||
491 | |||
492 | #-------------------------------- | ||
493 | sub recurse_test | ||
494 | { | ||
495 | my ($win32, $tprefix, $filter, $dir) = @_; | ||
496 | my $dirh; | ||
497 | opendir($dirh, $dir); | ||
498 | while ($_ = readdir($dirh)) | ||
499 | { | ||
500 | next if ($_ eq "." || $_ eq ".."); | ||
501 | $_ = "$dir/$_"; | ||
502 | if (-f "$_") | ||
503 | { | ||
504 | if (/\/([^\/]*)\.rsp$/) | ||
505 | { | ||
506 | if (exists $fips_tests{$1}) | ||
507 | { | ||
508 | $debug && print "DEBUG: $1 found, will be overwritten\n"; | ||
509 | } | ||
510 | else | ||
511 | { | ||
512 | print STDERR "ERROR: bogus file $_\n"; | ||
513 | push @bogus, $_; | ||
514 | } | ||
515 | } | ||
516 | next unless /$filter.*\.req$/i; | ||
517 | if (/\/([^\/]*)\.req$/ && exists $fips_tests{$1}) | ||
518 | { | ||
519 | $fips_found{$1}++; | ||
520 | test_line($win32, $_, $tprefix, $1); | ||
521 | } | ||
522 | elsif (! /SHAmix\.req$/) | ||
523 | { | ||
524 | print STDERR "WARNING: unrecognized filename $_\n"; | ||
525 | } | ||
526 | } | ||
527 | elsif (-d "$_") | ||
528 | { | ||
529 | if (/$filter.*req$/i) | ||
530 | { | ||
531 | test_dir($win32, $_); | ||
532 | } | ||
533 | recurse_test($win32, $tprefix, $filter, $_); | ||
534 | } | ||
535 | } | ||
536 | closedir($dirh); | ||
537 | } | ||
538 | |||
539 | #-------------------------------- | ||
540 | sub test_dir | ||
541 | { | ||
542 | my ($win32, $req) = @_; | ||
543 | my $rsp = $req; | ||
544 | $rsp =~ s/req$/$rspdir/; | ||
545 | if ($win32) | ||
546 | { | ||
547 | $rsp =~ tr|/|\\|; | ||
548 | $req =~ tr|/|\\|; | ||
549 | $bufout .= <<END; | ||
550 | |||
551 | echo Running tests in $req | ||
552 | if exist "$rsp" rd /s /q "$rsp" | ||
553 | md "$rsp" | ||
554 | END | ||
555 | } | ||
556 | else | ||
557 | { | ||
558 | $bufout .= <<END; | ||
559 | |||
560 | echo Running tests in "$req" | ||
561 | rm -rf "$rsp" | ||
562 | mkdir "$rsp" | ||
563 | |||
564 | END | ||
565 | } | ||
566 | } | ||
567 | |||
568 | #-------------------------------- | ||
569 | sub test_line | ||
570 | { | ||
571 | my ($win32, $req, $tprefix, $tnam) = @_; | ||
572 | my $rsp = $req; | ||
573 | my $tcmd = $fips_tests{$tnam}; | ||
574 | $rsp =~ s/req\/([^\/]*).req$/$rspdir\/$1.rsp/; | ||
575 | if ($tcmd =~ /-f$/) | ||
576 | { | ||
577 | if ($win32) | ||
578 | { | ||
579 | $req =~ tr|/|\\|; | ||
580 | $rsp =~ tr|/|\\|; | ||
581 | $bufout .= "$tprefix$tcmd \"$req\" \"$rsp\"\n"; | ||
582 | $_programs{"$tprefix$tcmd.exe"} = 1; | ||
583 | } | ||
584 | else | ||
585 | { | ||
586 | $bufout .= <<END; | ||
587 | ${shwrap_prefix}shlib_wrap.sh $tprefix$tcmd "$req" "$rsp" || { echo "$req failure" ; exit 1 | ||
588 | } | ||
589 | END | ||
590 | $_programs{"${shwrap_prefix}shlib_wrap.sh"} = 1; | ||
591 | $_programs{"$tprefix$tcmd"} = 1; | ||
592 | } | ||
593 | return; | ||
594 | } | ||
595 | if ($tcmd =~ /SALT$/) | ||
596 | { | ||
597 | open (IN, $req) || die "Can't Open File $req"; | ||
598 | my $saltlen; | ||
599 | while (<IN>) | ||
600 | { | ||
601 | if (/^\s*#\s*salt\s+len:\s+(\d+)\s*$/i) | ||
602 | { | ||
603 | my $sl = $1; | ||
604 | print STDERR "$req salt length $sl\n" if $debug; | ||
605 | $tcmd =~ s/SALT$/$sl/; | ||
606 | $salt_found{"$tnam (salt $sl)"}++; | ||
607 | last; | ||
608 | } | ||
609 | } | ||
610 | close IN; | ||
611 | if ($tcmd =~ /SALT$/) | ||
612 | { | ||
613 | die "Can't detect salt length for $req"; | ||
614 | } | ||
615 | } | ||
616 | |||
617 | if ($win32) | ||
618 | { | ||
619 | $req =~ tr|/|\\|; | ||
620 | $rsp =~ tr|/|\\|; | ||
621 | $bufout .= "$tprefix$tcmd < \"$req\" > \"$rsp\"\n"; | ||
622 | $_programs{"$tprefix$tcmd.exe"} = 1; | ||
623 | } | ||
624 | else | ||
625 | { | ||
626 | $bufout .= <<END; | ||
627 | ${shwrap_prefix}shlib_wrap.sh $tprefix$tcmd < "$req" > "$rsp" || { echo "$req failure" ; exit 1; } | ||
628 | END | ||
629 | $_programs{"$tprefix$tcmd"} = 1; | ||
630 | } | ||
631 | } | ||
632 | |||
diff --git a/src/lib/libssl/src/fips/openssl_fips_fingerprint b/src/lib/libssl/src/fips/openssl_fips_fingerprint index d3dfb7eb61..f59a67d537 100755 --- a/src/lib/libssl/src/fips/openssl_fips_fingerprint +++ b/src/lib/libssl/src/fips/openssl_fips_fingerprint | |||
@@ -5,6 +5,7 @@ | |||
5 | 5 | ||
6 | lib=$1 | 6 | lib=$1 |
7 | exe=$2 | 7 | exe=$2 |
8 | ext=${HMAC_EXT:-sha1} | ||
8 | 9 | ||
9 | # deal with the case where we're run from within the build and OpenSSL is | 10 | # deal with the case where we're run from within the build and OpenSSL is |
10 | # not yet installed. Also, make sure LD_LIBRARY_PATH is properly set in | 11 | # not yet installed. Also, make sure LD_LIBRARY_PATH is properly set in |
@@ -27,4 +28,4 @@ openssl sha1 -hmac etaonrishdlcupfm $lib | sed "s/(.*\//(/" | diff -w $lib.sha1 | |||
27 | [ -x $exe.exe ] && exe=$exe.exe | 28 | [ -x $exe.exe ] && exe=$exe.exe |
28 | 29 | ||
29 | echo "Making fingerprint for $exe" | 30 | echo "Making fingerprint for $exe" |
30 | openssl sha1 -hmac etaonrishdlcupfm -binary $exe > $exe.sha1 || rm $exe.sha1 | 31 | openssl sha1 -hmac etaonrishdlcupfm -binary $exe > $exe.$ext || rm $exe.$ext |
diff --git a/src/lib/libssl/src/fips/rand/Makefile b/src/lib/libssl/src/fips/rand/Makefile index c8922abc77..20303c862b 100644 --- a/src/lib/libssl/src/fips/rand/Makefile +++ b/src/lib/libssl/src/fips/rand/Makefile | |||
@@ -1,5 +1,5 @@ | |||
1 | # | 1 | # |
2 | # SSLeay/fips/rand/Makefile | 2 | # OpenSSL/fips/rand/Makefile |
3 | # | 3 | # |
4 | 4 | ||
5 | DIR= rand | 5 | DIR= rand |
@@ -18,12 +18,12 @@ AR= ar r | |||
18 | CFLAGS= $(INCLUDES) $(CFLAG) | 18 | CFLAGS= $(INCLUDES) $(CFLAG) |
19 | 19 | ||
20 | GENERAL=Makefile | 20 | GENERAL=Makefile |
21 | TEST= fips_randtest.c | 21 | TEST= fips_randtest.c fips_rngvs.c |
22 | APPS= | 22 | APPS= |
23 | 23 | ||
24 | LIB=$(TOP)/libcrypto.a | 24 | LIB=$(TOP)/libcrypto.a |
25 | LIBSRC=fips_rand.c | 25 | LIBSRC=fips_rand.c fips_rand_selftest.c |
26 | LIBOBJ=fips_rand.o | 26 | LIBOBJ=fips_rand.o fips_rand_selftest.o |
27 | 27 | ||
28 | SRC= $(LIBSRC) | 28 | SRC= $(LIBSRC) |
29 | 29 | ||
@@ -35,15 +35,10 @@ ALL= $(GENERAL) $(SRC) $(HEADER) | |||
35 | top: | 35 | top: |
36 | (cd $(TOP); $(MAKE) DIRS=fips SDIRS=$(DIR) sub_all) | 36 | (cd $(TOP); $(MAKE) DIRS=fips SDIRS=$(DIR) sub_all) |
37 | 37 | ||
38 | all: check lib | 38 | all: lib |
39 | |||
40 | check: | ||
41 | TOP=`pwd`/$(TOP) ../fips_check_sha1 fingerprint.sha1 $(SRC) $(HEADER) | ||
42 | 39 | ||
43 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) |
44 | $(AR) $(LIB) $(LIBOBJ) | 41 | @echo $(LIBOBJ) > lib |
45 | $(RANLIB) $(LIB) || echo Never mind. | ||
46 | @sleep 2; touch lib | ||
47 | 42 | ||
48 | files: | 43 | files: |
49 | $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO | 44 | $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO |
@@ -65,6 +60,19 @@ tags: | |||
65 | 60 | ||
66 | tests: | 61 | tests: |
67 | 62 | ||
63 | Q=../testvectors/rng/req | ||
64 | A=../testvectors/rng/rsp | ||
65 | |||
66 | fips_test: | ||
67 | -rm -rf $(A) | ||
68 | mkdir $(A) | ||
69 | if [ -f $(Q)/ANSI931_AES128MCT.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rngvs mct < $(Q)/ANSI931_AES128MCT.req > $(A)/ANSI931_AES128MCT.rsp; fi | ||
70 | if [ -f $(Q)/ANSI931_AES192MCT.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rngvs mct < $(Q)/ANSI931_AES192MCT.req > $(A)/ANSI931_AES192MCT.rsp; fi | ||
71 | if [ -f $(Q)/ANSI931_AES256MCT.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rngvs mct < $(Q)/ANSI931_AES256MCT.req > $(A)/ANSI931_AES256MCT.rsp; fi | ||
72 | if [ -f $(Q)/ANSI931_AES128VST.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rngvs vst < $(Q)/ANSI931_AES128VST.req > $(A)/ANSI931_AES128VST.rsp; fi | ||
73 | if [ -f $(Q)/ANSI931_AES192VST.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rngvs vst < $(Q)/ANSI931_AES192VST.req > $(A)/ANSI931_AES192VST.rsp; fi | ||
74 | if [ -f $(Q)/ANSI931_AES256VST.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rngvs vst < $(Q)/ANSI931_AES256VST.req > $(A)/ANSI931_AES256VST.rsp; fi | ||
75 | |||
68 | lint: | 76 | lint: |
69 | lint -DLINT $(INCLUDES) $(SRC)>fluff | 77 | lint -DLINT $(INCLUDES) $(SRC)>fluff |
70 | 78 | ||
@@ -80,20 +88,39 @@ clean: | |||
80 | 88 | ||
81 | # DO NOT DELETE THIS LINE -- make depend depends on it. | 89 | # DO NOT DELETE THIS LINE -- make depend depends on it. |
82 | 90 | ||
83 | fips_rand.o: ../../e_os.h ../../include/openssl/bio.h | 91 | fips_rand.o: ../../e_os.h ../../include/openssl/aes.h |
84 | fips_rand.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | 92 | fips_rand.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h |
85 | fips_rand.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h | 93 | fips_rand.o: ../../include/openssl/des.h ../../include/openssl/des_old.h |
86 | fips_rand.o: ../../include/openssl/err.h ../../include/openssl/fips_rand.h | 94 | fips_rand.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
95 | fips_rand.o: ../../include/openssl/fips.h ../../include/openssl/fips_rand.h | ||
87 | fips_rand.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h | 96 | fips_rand.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h |
88 | fips_rand.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | 97 | fips_rand.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h |
89 | fips_rand.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h | 98 | fips_rand.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h |
90 | fips_rand.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 99 | fips_rand.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
91 | fips_rand.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h | 100 | fips_rand.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h |
92 | fips_rand.o: fips_rand.c | 101 | fips_rand.o: ../fips_locl.h fips_rand.c |
102 | fips_rand_selftest.o: ../../include/openssl/bio.h | ||
103 | fips_rand_selftest.o: ../../include/openssl/crypto.h | ||
104 | fips_rand_selftest.o: ../../include/openssl/des.h | ||
105 | fips_rand_selftest.o: ../../include/openssl/des_old.h | ||
106 | fips_rand_selftest.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
107 | fips_rand_selftest.o: ../../include/openssl/fips.h | ||
108 | fips_rand_selftest.o: ../../include/openssl/fips_rand.h | ||
109 | fips_rand_selftest.o: ../../include/openssl/lhash.h | ||
110 | fips_rand_selftest.o: ../../include/openssl/opensslconf.h | ||
111 | fips_rand_selftest.o: ../../include/openssl/opensslv.h | ||
112 | fips_rand_selftest.o: ../../include/openssl/ossl_typ.h | ||
113 | fips_rand_selftest.o: ../../include/openssl/rand.h | ||
114 | fips_rand_selftest.o: ../../include/openssl/safestack.h | ||
115 | fips_rand_selftest.o: ../../include/openssl/stack.h | ||
116 | fips_rand_selftest.o: ../../include/openssl/symhacks.h | ||
117 | fips_rand_selftest.o: ../../include/openssl/ui.h | ||
118 | fips_rand_selftest.o: ../../include/openssl/ui_compat.h fips_rand_selftest.c | ||
93 | fips_randtest.o: ../../e_os.h ../../include/openssl/bio.h | 119 | fips_randtest.o: ../../e_os.h ../../include/openssl/bio.h |
94 | fips_randtest.o: ../../include/openssl/crypto.h ../../include/openssl/des.h | 120 | fips_randtest.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h |
95 | fips_randtest.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h | 121 | fips_randtest.o: ../../include/openssl/des.h ../../include/openssl/des_old.h |
96 | fips_randtest.o: ../../include/openssl/err.h ../../include/openssl/fips_rand.h | 122 | fips_randtest.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
123 | fips_randtest.o: ../../include/openssl/fips_rand.h | ||
97 | fips_randtest.o: ../../include/openssl/lhash.h | 124 | fips_randtest.o: ../../include/openssl/lhash.h |
98 | fips_randtest.o: ../../include/openssl/opensslconf.h | 125 | fips_randtest.o: ../../include/openssl/opensslconf.h |
99 | fips_randtest.o: ../../include/openssl/opensslv.h | 126 | fips_randtest.o: ../../include/openssl/opensslv.h |
@@ -101,4 +128,22 @@ fips_randtest.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h | |||
101 | fips_randtest.o: ../../include/openssl/safestack.h | 128 | fips_randtest.o: ../../include/openssl/safestack.h |
102 | fips_randtest.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | 129 | fips_randtest.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h |
103 | fips_randtest.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h | 130 | fips_randtest.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h |
104 | fips_randtest.o: fips_randtest.c | 131 | fips_randtest.o: ../fips_utl.h fips_randtest.c |
132 | fips_rngvs.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
133 | fips_rngvs.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | ||
134 | fips_rngvs.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | ||
135 | fips_rngvs.o: ../../include/openssl/des.h ../../include/openssl/des_old.h | ||
136 | fips_rngvs.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h | ||
137 | fips_rngvs.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h | ||
138 | fips_rngvs.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h | ||
139 | fips_rngvs.o: ../../include/openssl/evp.h ../../include/openssl/fips.h | ||
140 | fips_rngvs.o: ../../include/openssl/fips_rand.h ../../include/openssl/lhash.h | ||
141 | fips_rngvs.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | ||
142 | fips_rngvs.o: ../../include/openssl/opensslconf.h | ||
143 | fips_rngvs.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h | ||
144 | fips_rngvs.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h | ||
145 | fips_rngvs.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
146 | fips_rngvs.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
147 | fips_rngvs.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h | ||
148 | fips_rngvs.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | ||
149 | fips_rngvs.o: ../../include/openssl/x509v3.h ../fips_utl.h fips_rngvs.c | ||
diff --git a/src/lib/libssl/src/fips/rand/fips_rand.c b/src/lib/libssl/src/fips/rand/fips_rand.c index cc2f12deb9..58453e996d 100644 --- a/src/lib/libssl/src/fips/rand/fips_rand.c +++ b/src/lib/libssl/src/fips/rand/fips_rand.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* ==================================================================== | 1 | /* ==================================================================== |
2 | * Copyright (c) 2003 The OpenSSL Project. All rights reserved. | 2 | * Copyright (c) 2007 The OpenSSL Project. All rights reserved. |
3 | * | 3 | * |
4 | * Redistribution and use in source and binary forms, with or without | 4 | * Redistribution and use in source and binary forms, with or without |
5 | * modification, are permitted provided that the following conditions | 5 | * modification, are permitted provided that the following conditions |
@@ -48,7 +48,7 @@ | |||
48 | */ | 48 | */ |
49 | 49 | ||
50 | /* | 50 | /* |
51 | * This is a FIPS approved PRNG, ANSI X9.31 A.2.4. | 51 | * This is a FIPS approved AES PRNG based on ANSI X9.31 A.2.4. |
52 | */ | 52 | */ |
53 | 53 | ||
54 | #include "e_os.h" | 54 | #include "e_os.h" |
@@ -60,8 +60,8 @@ | |||
60 | #define _XOPEN_SOURCE_EXTENDED 1 | 60 | #define _XOPEN_SOURCE_EXTENDED 1 |
61 | #endif | 61 | #endif |
62 | 62 | ||
63 | #include <openssl/des.h> | ||
64 | #include <openssl/rand.h> | 63 | #include <openssl/rand.h> |
64 | #include <openssl/aes.h> | ||
65 | #include <openssl/err.h> | 65 | #include <openssl/err.h> |
66 | #include <openssl/fips_rand.h> | 66 | #include <openssl/fips_rand.h> |
67 | #ifndef OPENSSL_SYS_WIN32 | 67 | #ifndef OPENSSL_SYS_WIN32 |
@@ -76,280 +76,335 @@ | |||
76 | # endif | 76 | # endif |
77 | #endif | 77 | #endif |
78 | #include <string.h> | 78 | #include <string.h> |
79 | #include <openssl/fips.h> | ||
80 | #include "fips_locl.h" | ||
79 | 81 | ||
80 | #ifdef OPENSSL_FIPS | 82 | #ifdef OPENSSL_FIPS |
81 | 83 | ||
82 | #define SEED_SIZE 8 | 84 | void *OPENSSL_stderr(void); |
83 | 85 | ||
84 | static unsigned char seed[SEED_SIZE]; | 86 | #define AES_BLOCK_LENGTH 16 |
85 | static FIPS_RAND_SIZE_T n_seed; | ||
86 | static FIPS_RAND_SIZE_T o_seed; | ||
87 | static DES_cblock key1; | ||
88 | static DES_cblock key2; | ||
89 | static DES_key_schedule ks1,ks2; | ||
90 | static int key_set; | ||
91 | static int test_mode; | ||
92 | static unsigned char test_faketime[8]; | ||
93 | 87 | ||
94 | #ifndef GETPID_IS_MEANINGLESS | ||
95 | static int seed_pid; | ||
96 | static int key_pid; | ||
97 | #endif | ||
98 | |||
99 | static void fips_rand_cleanup(void); | ||
100 | static void fips_rand_add(const void *buf, FIPS_RAND_SIZE_T num, double add_entropy); | ||
101 | static int fips_rand_bytes(unsigned char *buf, FIPS_RAND_SIZE_T num); | ||
102 | static int fips_rand_status(void); | ||
103 | 88 | ||
104 | static RAND_METHOD rand_fips_meth= | 89 | /* AES FIPS PRNG implementation */ |
105 | { | ||
106 | FIPS_rand_seed, | ||
107 | fips_rand_bytes, | ||
108 | fips_rand_cleanup, | ||
109 | fips_rand_add, | ||
110 | fips_rand_bytes, | ||
111 | fips_rand_status | ||
112 | }; | ||
113 | 90 | ||
114 | static int second; | 91 | typedef struct |
92 | { | ||
93 | int seeded; | ||
94 | int keyed; | ||
95 | int test_mode; | ||
96 | int second; | ||
97 | int error; | ||
98 | unsigned long counter; | ||
99 | AES_KEY ks; | ||
100 | int vpos; | ||
101 | /* Temporary storage for key if it equals seed length */ | ||
102 | unsigned char tmp_key[AES_BLOCK_LENGTH]; | ||
103 | unsigned char V[AES_BLOCK_LENGTH]; | ||
104 | unsigned char DT[AES_BLOCK_LENGTH]; | ||
105 | unsigned char last[AES_BLOCK_LENGTH]; | ||
106 | } FIPS_PRNG_CTX; | ||
107 | |||
108 | static FIPS_PRNG_CTX sctx; | ||
109 | |||
110 | static int fips_prng_fail = 0; | ||
111 | |||
112 | void FIPS_rng_stick(void) | ||
113 | { | ||
114 | fips_prng_fail = 1; | ||
115 | } | ||
115 | 116 | ||
116 | RAND_METHOD *FIPS_rand_method(void) | 117 | void fips_rand_prng_reset(FIPS_PRNG_CTX *ctx) |
117 | { | 118 | { |
118 | return &rand_fips_meth; | 119 | ctx->seeded = 0; |
119 | } | 120 | ctx->keyed = 0; |
121 | ctx->test_mode = 0; | ||
122 | ctx->counter = 0; | ||
123 | ctx->second = 0; | ||
124 | ctx->error = 0; | ||
125 | ctx->vpos = 0; | ||
126 | OPENSSL_cleanse(ctx->V, AES_BLOCK_LENGTH); | ||
127 | OPENSSL_cleanse(&ctx->ks, sizeof(AES_KEY)); | ||
128 | } | ||
129 | |||
120 | 130 | ||
121 | void FIPS_set_prng_key(const unsigned char k1[8],const unsigned char k2[8]) | 131 | static int fips_set_prng_key(FIPS_PRNG_CTX *ctx, |
122 | { | 132 | const unsigned char *key, FIPS_RAND_SIZE_T keylen) |
123 | memcpy(&key1,k1,sizeof key1); | 133 | { |
124 | memcpy(&key2,k2,sizeof key2); | 134 | FIPS_selftest_check(); |
125 | key_set=1; | 135 | if (keylen != 16 && keylen != 24 && keylen != 32) |
126 | #ifndef GETPID_IS_MEANINGLESS | 136 | { |
127 | key_pid=getpid(); | 137 | /* error: invalid key size */ |
128 | #endif | 138 | return 0; |
129 | second=0; | 139 | } |
130 | } | 140 | AES_set_encrypt_key(key, keylen << 3, &ctx->ks); |
141 | if (keylen == 16) | ||
142 | { | ||
143 | memcpy(ctx->tmp_key, key, 16); | ||
144 | ctx->keyed = 2; | ||
145 | } | ||
146 | else | ||
147 | ctx->keyed = 1; | ||
148 | ctx->seeded = 0; | ||
149 | ctx->second = 0; | ||
150 | return 1; | ||
151 | } | ||
131 | 152 | ||
132 | void FIPS_test_mode(int test,const unsigned char faketime[8]) | 153 | static int fips_set_prng_seed(FIPS_PRNG_CTX *ctx, |
133 | { | 154 | const unsigned char *seed, FIPS_RAND_SIZE_T seedlen) |
134 | test_mode=test; | 155 | { |
135 | if(!test_mode) | 156 | int i; |
136 | return; | 157 | if (!ctx->keyed) |
137 | memcpy(test_faketime,faketime,sizeof test_faketime); | 158 | return 0; |
138 | } | 159 | /* In test mode seed is just supplied data */ |
160 | if (ctx->test_mode) | ||
161 | { | ||
162 | if (seedlen != AES_BLOCK_LENGTH) | ||
163 | return 0; | ||
164 | memcpy(ctx->V, seed, AES_BLOCK_LENGTH); | ||
165 | ctx->seeded = 1; | ||
166 | return 1; | ||
167 | } | ||
168 | /* Outside test mode XOR supplied data with existing seed */ | ||
169 | for (i = 0; i < seedlen; i++) | ||
170 | { | ||
171 | ctx->V[ctx->vpos++] ^= seed[i]; | ||
172 | if (ctx->vpos == AES_BLOCK_LENGTH) | ||
173 | { | ||
174 | ctx->vpos = 0; | ||
175 | /* Special case if first seed and key length equals | ||
176 | * block size check key and seed do not match. | ||
177 | */ | ||
178 | if (ctx->keyed == 2) | ||
179 | { | ||
180 | if (!memcmp(ctx->tmp_key, ctx->V, 16)) | ||
181 | { | ||
182 | RANDerr(RAND_F_FIPS_SET_PRNG_SEED, | ||
183 | RAND_R_PRNG_SEED_MUST_NOT_MATCH_KEY); | ||
184 | return 0; | ||
185 | } | ||
186 | OPENSSL_cleanse(ctx->tmp_key, 16); | ||
187 | ctx->keyed = 1; | ||
188 | } | ||
189 | ctx->seeded = 1; | ||
190 | } | ||
191 | } | ||
192 | return 1; | ||
193 | } | ||
139 | 194 | ||
140 | /* NB: this returns true if _partially_ seeded */ | 195 | int fips_set_test_mode(FIPS_PRNG_CTX *ctx) |
141 | int FIPS_rand_seeded() | 196 | { |
142 | { return key_set || n_seed; } | 197 | if (ctx->keyed) |
198 | { | ||
199 | RANDerr(RAND_F_FIPS_SET_TEST_MODE,RAND_R_PRNG_KEYED); | ||
200 | return 0; | ||
201 | } | ||
202 | ctx->test_mode = 1; | ||
203 | return 1; | ||
204 | } | ||
143 | 205 | ||
144 | static void fips_gettime(unsigned char buf[8]) | 206 | int FIPS_rand_test_mode(void) |
145 | { | 207 | { |
146 | #ifdef OPENSSL_SYS_WIN32 | 208 | return fips_set_test_mode(&sctx); |
147 | FILETIME ft; | 209 | } |
148 | #else | ||
149 | struct timeval tv; | ||
150 | #endif | ||
151 | 210 | ||
152 | if(test_mode) | 211 | int FIPS_rand_set_dt(unsigned char *dt) |
153 | { | 212 | { |
154 | fprintf(stderr,"WARNING!!! PRNG IN TEST MODE!!!\n"); | 213 | if (!sctx.test_mode) |
155 | memcpy(buf,test_faketime,sizeof test_faketime); | 214 | { |
156 | return; | 215 | RANDerr(RAND_F_FIPS_RAND_SET_DT,RAND_R_NOT_IN_TEST_MODE); |
216 | return 0; | ||
217 | } | ||
218 | memcpy(sctx.DT, dt, AES_BLOCK_LENGTH); | ||
219 | return 1; | ||
157 | } | 220 | } |
221 | |||
222 | static void fips_get_dt(FIPS_PRNG_CTX *ctx) | ||
223 | { | ||
158 | #ifdef OPENSSL_SYS_WIN32 | 224 | #ifdef OPENSSL_SYS_WIN32 |
159 | GetSystemTimeAsFileTime(&ft); | 225 | FILETIME ft; |
160 | buf[0] = (unsigned char) (ft.dwHighDateTime & 0xff); | ||
161 | buf[1] = (unsigned char) ((ft.dwHighDateTime >> 8) & 0xff); | ||
162 | buf[2] = (unsigned char) ((ft.dwHighDateTime >> 16) & 0xff); | ||
163 | buf[3] = (unsigned char) ((ft.dwHighDateTime >> 24) & 0xff); | ||
164 | buf[4] = (unsigned char) (ft.dwLowDateTime & 0xff); | ||
165 | buf[5] = (unsigned char) ((ft.dwLowDateTime >> 8) & 0xff); | ||
166 | buf[6] = (unsigned char) ((ft.dwLowDateTime >> 16) & 0xff); | ||
167 | buf[7] = (unsigned char) ((ft.dwLowDateTime >> 24) & 0xff); | ||
168 | #else | 226 | #else |
169 | gettimeofday(&tv,NULL); | 227 | struct timeval tv; |
170 | buf[0] = (unsigned char) (tv.tv_sec & 0xff); | ||
171 | buf[1] = (unsigned char) ((tv.tv_sec >> 8) & 0xff); | ||
172 | buf[2] = (unsigned char) ((tv.tv_sec >> 16) & 0xff); | ||
173 | buf[3] = (unsigned char) ((tv.tv_sec >> 24) & 0xff); | ||
174 | buf[4] = (unsigned char) (tv.tv_usec & 0xff); | ||
175 | buf[5] = (unsigned char) ((tv.tv_usec >> 8) & 0xff); | ||
176 | buf[6] = (unsigned char) ((tv.tv_usec >> 16) & 0xff); | ||
177 | buf[7] = (unsigned char) ((tv.tv_usec >> 24) & 0xff); | ||
178 | #endif | 228 | #endif |
229 | unsigned char *buf = ctx->DT; | ||
179 | 230 | ||
180 | #if 0 /* This eminently sensible strategy is not acceptable to NIST. Sigh. */ | ||
181 | #ifndef GETPID_IS_MEANINGLESS | 231 | #ifndef GETPID_IS_MEANINGLESS |
182 | /* we mix in the PID to ensure that after a fork the children don't give | 232 | unsigned long pid; |
183 | * the same results as each other | ||
184 | */ | ||
185 | pid=getpid(); | ||
186 | /* make sure we shift the pid to the MSB */ | ||
187 | if((pid&0xffff0000) == 0) | ||
188 | pid<<=16; | ||
189 | *(long *)&buf[0]^=pid; | ||
190 | #endif | 233 | #endif |
234 | |||
235 | #ifdef OPENSSL_SYS_WIN32 | ||
236 | GetSystemTimeAsFileTime(&ft); | ||
237 | buf[0] = (unsigned char) (ft.dwHighDateTime & 0xff); | ||
238 | buf[1] = (unsigned char) ((ft.dwHighDateTime >> 8) & 0xff); | ||
239 | buf[2] = (unsigned char) ((ft.dwHighDateTime >> 16) & 0xff); | ||
240 | buf[3] = (unsigned char) ((ft.dwHighDateTime >> 24) & 0xff); | ||
241 | buf[4] = (unsigned char) (ft.dwLowDateTime & 0xff); | ||
242 | buf[5] = (unsigned char) ((ft.dwLowDateTime >> 8) & 0xff); | ||
243 | buf[6] = (unsigned char) ((ft.dwLowDateTime >> 16) & 0xff); | ||
244 | buf[7] = (unsigned char) ((ft.dwLowDateTime >> 24) & 0xff); | ||
245 | #else | ||
246 | gettimeofday(&tv,NULL); | ||
247 | buf[0] = (unsigned char) (tv.tv_sec & 0xff); | ||
248 | buf[1] = (unsigned char) ((tv.tv_sec >> 8) & 0xff); | ||
249 | buf[2] = (unsigned char) ((tv.tv_sec >> 16) & 0xff); | ||
250 | buf[3] = (unsigned char) ((tv.tv_sec >> 24) & 0xff); | ||
251 | buf[4] = (unsigned char) (tv.tv_usec & 0xff); | ||
252 | buf[5] = (unsigned char) ((tv.tv_usec >> 8) & 0xff); | ||
253 | buf[6] = (unsigned char) ((tv.tv_usec >> 16) & 0xff); | ||
254 | buf[7] = (unsigned char) ((tv.tv_usec >> 24) & 0xff); | ||
191 | #endif | 255 | #endif |
192 | } | 256 | buf[8] = (unsigned char) (ctx->counter & 0xff); |
257 | buf[9] = (unsigned char) ((ctx->counter >> 8) & 0xff); | ||
258 | buf[10] = (unsigned char) ((ctx->counter >> 16) & 0xff); | ||
259 | buf[11] = (unsigned char) ((ctx->counter >> 24) & 0xff); | ||
193 | 260 | ||
194 | static void fips_rand_encrypt(unsigned char *out,const unsigned char *in) | 261 | ctx->counter++; |
195 | { | ||
196 | DES_ecb2_encrypt(in,out,&ks1,&ks2,1); | ||
197 | } | ||
198 | 262 | ||
199 | static void fips_rand_cleanup(void) | 263 | |
200 | { | 264 | #ifndef GETPID_IS_MEANINGLESS |
201 | OPENSSL_cleanse(seed,sizeof seed); | 265 | pid=(unsigned long)getpid(); |
202 | n_seed=0; | 266 | buf[12] = (unsigned char) (pid & 0xff); |
267 | buf[13] = (unsigned char) ((pid >> 8) & 0xff); | ||
268 | buf[14] = (unsigned char) ((pid >> 16) & 0xff); | ||
269 | buf[15] = (unsigned char) ((pid >> 24) & 0xff); | ||
270 | #endif | ||
203 | } | 271 | } |
204 | 272 | ||
205 | void FIPS_rand_seed(const void *buf_, FIPS_RAND_SIZE_T num) | 273 | static int fips_rand(FIPS_PRNG_CTX *ctx, |
206 | { | 274 | unsigned char *out, FIPS_RAND_SIZE_T outlen) |
207 | const char *buf=buf_; | 275 | { |
208 | FIPS_RAND_SIZE_T n; | 276 | unsigned char R[AES_BLOCK_LENGTH], I[AES_BLOCK_LENGTH]; |
209 | static int init; | 277 | unsigned char tmp[AES_BLOCK_LENGTH]; |
278 | int i; | ||
279 | if (ctx->error) | ||
280 | { | ||
281 | RANDerr(RAND_F_FIPS_RAND,RAND_R_PRNG_ERROR); | ||
282 | return 0; | ||
283 | } | ||
284 | if (!ctx->keyed) | ||
285 | { | ||
286 | RANDerr(RAND_F_FIPS_RAND,RAND_R_NO_KEY_SET); | ||
287 | return 0; | ||
288 | } | ||
289 | if (!ctx->seeded) | ||
290 | { | ||
291 | RANDerr(RAND_F_FIPS_RAND,RAND_R_PRNG_NOT_SEEDED); | ||
292 | return 0; | ||
293 | } | ||
294 | for (;;) | ||
295 | { | ||
296 | if (!ctx->test_mode) | ||
297 | fips_get_dt(ctx); | ||
298 | AES_encrypt(ctx->DT, I, &ctx->ks); | ||
299 | for (i = 0; i < AES_BLOCK_LENGTH; i++) | ||
300 | tmp[i] = I[i] ^ ctx->V[i]; | ||
301 | AES_encrypt(tmp, R, &ctx->ks); | ||
302 | for (i = 0; i < AES_BLOCK_LENGTH; i++) | ||
303 | tmp[i] = R[i] ^ I[i]; | ||
304 | AES_encrypt(tmp, ctx->V, &ctx->ks); | ||
305 | /* Continuous PRNG test */ | ||
306 | if (ctx->second) | ||
307 | { | ||
308 | if (fips_prng_fail) | ||
309 | memcpy(ctx->last, R, AES_BLOCK_LENGTH); | ||
310 | if (!memcmp(R, ctx->last, AES_BLOCK_LENGTH)) | ||
311 | { | ||
312 | RANDerr(RAND_F_FIPS_RAND,RAND_R_PRNG_STUCK); | ||
313 | ctx->error = 1; | ||
314 | fips_set_selftest_fail(); | ||
315 | return 0; | ||
316 | } | ||
317 | } | ||
318 | memcpy(ctx->last, R, AES_BLOCK_LENGTH); | ||
319 | if (!ctx->second) | ||
320 | { | ||
321 | ctx->second = 1; | ||
322 | if (!ctx->test_mode) | ||
323 | continue; | ||
324 | } | ||
325 | |||
326 | if (outlen <= AES_BLOCK_LENGTH) | ||
327 | { | ||
328 | memcpy(out, R, outlen); | ||
329 | break; | ||
330 | } | ||
331 | |||
332 | memcpy(out, R, AES_BLOCK_LENGTH); | ||
333 | out += AES_BLOCK_LENGTH; | ||
334 | outlen -= AES_BLOCK_LENGTH; | ||
335 | } | ||
336 | return 1; | ||
337 | } | ||
210 | 338 | ||
211 | /* If the key hasn't been set, we can't seed! */ | ||
212 | if(!key_set) | ||
213 | return; | ||
214 | 339 | ||
215 | CRYPTO_w_lock(CRYPTO_LOCK_RAND); | 340 | int FIPS_rand_set_key(const unsigned char *key, FIPS_RAND_SIZE_T keylen) |
216 | if(!init) | ||
217 | { | 341 | { |
218 | init=1; | 342 | int ret; |
219 | DES_set_key(&key1,&ks1); | 343 | CRYPTO_w_lock(CRYPTO_LOCK_RAND); |
220 | DES_set_key(&key2,&ks2); | 344 | ret = fips_set_prng_key(&sctx, key, keylen); |
345 | CRYPTO_w_unlock(CRYPTO_LOCK_RAND); | ||
346 | return ret; | ||
221 | } | 347 | } |
222 | 348 | ||
223 | /* | 349 | int FIPS_rand_seed(const void *seed, FIPS_RAND_SIZE_T seedlen) |
224 | * This algorithm only uses 64 bits of seed, so ensure that we use | ||
225 | * the most recent 64 bits. | ||
226 | */ | ||
227 | for(n=0 ; n < num ; ) | ||
228 | { | 350 | { |
229 | FIPS_RAND_SIZE_T t=num-n; | 351 | int ret; |
230 | 352 | CRYPTO_w_lock(CRYPTO_LOCK_RAND); | |
231 | if(o_seed+t > sizeof seed) | 353 | ret = fips_set_prng_seed(&sctx, seed, seedlen); |
232 | t=sizeof seed-o_seed; | 354 | CRYPTO_w_unlock(CRYPTO_LOCK_RAND); |
233 | memcpy(seed+o_seed,buf+n,t); | 355 | return ret; |
234 | n+=t; | ||
235 | o_seed+=t; | ||
236 | if(o_seed == sizeof seed) | ||
237 | o_seed=0; | ||
238 | if(n_seed < sizeof seed) | ||
239 | n_seed+=t; | ||
240 | } | 356 | } |
241 | 357 | ||
242 | #ifndef GETPID_IS_MEANINGLESS | ||
243 | seed_pid=getpid(); | ||
244 | #endif | ||
245 | |||
246 | CRYPTO_w_unlock(CRYPTO_LOCK_RAND); | ||
247 | } | ||
248 | |||
249 | static void fips_rand_add(const void *buf, FIPS_RAND_SIZE_T num, double add_entropy) | ||
250 | { | ||
251 | FIPS_rand_seed(buf,num); | ||
252 | } | ||
253 | |||
254 | static int fips_rand_bytes(unsigned char *buf,FIPS_RAND_SIZE_T num) | ||
255 | { | ||
256 | FIPS_RAND_SIZE_T n; | ||
257 | unsigned char timeseed[8]; | ||
258 | unsigned char intermediate[SEED_SIZE]; | ||
259 | unsigned char output[SEED_SIZE]; | ||
260 | static unsigned char previous[SEED_SIZE]; | ||
261 | #ifndef GETPID_IS_MEANINGLESS | ||
262 | int pid; | ||
263 | #endif | ||
264 | 358 | ||
265 | if(n_seed < sizeof seed) | 359 | int FIPS_rand_bytes(unsigned char *out, FIPS_RAND_SIZE_T count) |
266 | { | 360 | { |
267 | RANDerr(RAND_F_FIPS_RAND_BYTES,RAND_R_PRNG_NOT_SEEDED); | 361 | int ret; |
268 | return 0; | 362 | CRYPTO_w_lock(CRYPTO_LOCK_RAND); |
363 | ret = fips_rand(&sctx, out, count); | ||
364 | CRYPTO_w_unlock(CRYPTO_LOCK_RAND); | ||
365 | return ret; | ||
269 | } | 366 | } |
270 | 367 | ||
271 | #ifdef FIPS_RAND_MAX_SIZE_T | 368 | int FIPS_rand_status(void) |
272 | if (num > FIPS_RAND_MAX_SIZE_T) | ||
273 | { | 369 | { |
274 | #ifdef RAND_R_PRNG_ASKING_FOR_TOO_MUCH | 370 | int ret; |
275 | RANDerr(RAND_F_FIPS_RAND_BYTES,RAND_R_PRNG_ASKING_FOR_TOO_MUCH); | 371 | CRYPTO_r_lock(CRYPTO_LOCK_RAND); |
276 | return 0; | 372 | ret = sctx.seeded; |
277 | #else | 373 | CRYPTO_r_unlock(CRYPTO_LOCK_RAND); |
278 | return -1; /* signal "not supported" condition */ | 374 | return ret; |
279 | #endif | ||
280 | } | 375 | } |
281 | #endif | ||
282 | 376 | ||
283 | #ifndef GETPID_IS_MEANINGLESS | 377 | void FIPS_rand_reset(void) |
284 | pid=getpid(); | ||
285 | if(pid != seed_pid) | ||
286 | { | 378 | { |
287 | RANDerr(RAND_F_FIPS_RAND_BYTES,RAND_R_PRNG_NOT_RESEEDED); | 379 | CRYPTO_w_lock(CRYPTO_LOCK_RAND); |
288 | return 0; | 380 | fips_rand_prng_reset(&sctx); |
381 | CRYPTO_w_unlock(CRYPTO_LOCK_RAND); | ||
289 | } | 382 | } |
290 | if(pid != key_pid) | 383 | |
384 | static void fips_do_rand_seed(const void *seed, FIPS_RAND_SIZE_T seedlen) | ||
291 | { | 385 | { |
292 | RANDerr(RAND_F_FIPS_RAND_BYTES,RAND_R_PRNG_NOT_REKEYED); | 386 | FIPS_rand_seed(seed, seedlen); |
293 | return 0; | ||
294 | } | 387 | } |
295 | #endif | ||
296 | |||
297 | CRYPTO_w_lock(CRYPTO_LOCK_RAND); | ||
298 | 388 | ||
299 | for(n=0 ; n < num ; ) | 389 | static void fips_do_rand_add(const void *seed, FIPS_RAND_SIZE_T seedlen, |
390 | double add_entropy) | ||
300 | { | 391 | { |
301 | unsigned char t[SEED_SIZE]; | 392 | FIPS_rand_seed(seed, seedlen); |
302 | FIPS_RAND_SIZE_T l; | ||
303 | |||
304 | /* ANS X9.31 A.2.4: I = ede*K(DT) | ||
305 | timeseed == DT | ||
306 | intermediate == I | ||
307 | */ | ||
308 | fips_gettime(timeseed); | ||
309 | fips_rand_encrypt(intermediate,timeseed); | ||
310 | |||
311 | /* ANS X9.31 A.2.4: R = ede*K(I^V) | ||
312 | intermediate == I | ||
313 | seed == V | ||
314 | output == R | ||
315 | */ | ||
316 | for(l=0 ; l < sizeof t ; ++l) | ||
317 | t[l]=intermediate[l]^seed[l]; | ||
318 | fips_rand_encrypt(output,t); | ||
319 | |||
320 | /* ANS X9.31 A.2.4: V = ede*K(R^I) | ||
321 | output == R | ||
322 | intermediate == I | ||
323 | seed == V | ||
324 | */ | ||
325 | for(l=0 ; l < sizeof t ; ++l) | ||
326 | t[l]=output[l]^intermediate[l]; | ||
327 | fips_rand_encrypt(seed,t); | ||
328 | |||
329 | if(second && !memcmp(output,previous,sizeof previous)) | ||
330 | { | ||
331 | RANDerr(RAND_F_FIPS_RAND_BYTES,RAND_R_PRNG_STUCK); | ||
332 | CRYPTO_w_unlock(CRYPTO_LOCK_RAND); | ||
333 | return 0; | ||
334 | } | ||
335 | memcpy(previous,output,sizeof previous); | ||
336 | second=1; | ||
337 | |||
338 | /* Successive values of R may be concatenated to produce a | ||
339 | pseudo random number of the desired length */ | ||
340 | l=SEED_SIZE < num-n ? SEED_SIZE : num-n; | ||
341 | memcpy(buf+n,output,l); | ||
342 | n+=l; | ||
343 | } | 393 | } |
344 | 394 | ||
345 | CRYPTO_w_unlock(CRYPTO_LOCK_RAND); | 395 | static const RAND_METHOD rand_fips_meth= |
346 | |||
347 | return 1; | ||
348 | } | ||
349 | |||
350 | static int fips_rand_status(void) | ||
351 | { | 396 | { |
352 | return n_seed == sizeof seed; | 397 | fips_do_rand_seed, |
353 | } | 398 | FIPS_rand_bytes, |
399 | FIPS_rand_reset, | ||
400 | fips_do_rand_add, | ||
401 | FIPS_rand_bytes, | ||
402 | FIPS_rand_status | ||
403 | }; | ||
354 | 404 | ||
355 | #endif /* OPENSSL_FIPS */ | 405 | const RAND_METHOD *FIPS_rand_method(void) |
406 | { | ||
407 | return &rand_fips_meth; | ||
408 | } | ||
409 | |||
410 | #endif | ||
diff --git a/src/lib/libssl/src/fips/rand/fips_rand.h b/src/lib/libssl/src/fips/rand/fips_rand.h index 1286b63ab2..a175aaf6c5 100644 --- a/src/lib/libssl/src/fips/rand/fips_rand.h +++ b/src/lib/libssl/src/fips/rand/fips_rand.h | |||
@@ -58,13 +58,17 @@ | |||
58 | extern "C" { | 58 | extern "C" { |
59 | #endif | 59 | #endif |
60 | 60 | ||
61 | void FIPS_set_prng_key(const unsigned char k1[8],const unsigned char k2[8]); | 61 | int FIPS_rand_set_key(const unsigned char *key, FIPS_RAND_SIZE_T keylen); |
62 | void FIPS_test_mode(int test,const unsigned char faketime[8]); | 62 | int FIPS_rand_seed(const void *buf, FIPS_RAND_SIZE_T num); |
63 | void FIPS_rand_seed(const void *buf, FIPS_RAND_SIZE_T num); | 63 | int FIPS_rand_bytes(unsigned char *out, FIPS_RAND_SIZE_T outlen); |
64 | /* NB: this returns true if _partially_ seeded */ | ||
65 | int FIPS_rand_seeded(void); | ||
66 | 64 | ||
67 | RAND_METHOD *FIPS_rand_method(void); | 65 | int FIPS_rand_test_mode(void); |
66 | void FIPS_rand_reset(void); | ||
67 | int FIPS_rand_set_dt(unsigned char *dt); | ||
68 | |||
69 | int FIPS_rand_status(void); | ||
70 | |||
71 | const RAND_METHOD *FIPS_rand_method(void); | ||
68 | 72 | ||
69 | #ifdef __cplusplus | 73 | #ifdef __cplusplus |
70 | } | 74 | } |
diff --git a/src/lib/libssl/src/fips/rand/fips_rand_selftest.c b/src/lib/libssl/src/fips/rand/fips_rand_selftest.c new file mode 100644 index 0000000000..2194a76cd1 --- /dev/null +++ b/src/lib/libssl/src/fips/rand/fips_rand_selftest.c | |||
@@ -0,0 +1,371 @@ | |||
1 | /* ==================================================================== | ||
2 | * Copyright (c) 2003 The OpenSSL Project. All rights reserved. | ||
3 | * | ||
4 | * Redistribution and use in source and binary forms, with or without | ||
5 | * modification, are permitted provided that the following conditions | ||
6 | * are met: | ||
7 | * | ||
8 | * 1. Redistributions of source code must retain the above copyright | ||
9 | * notice, this list of conditions and the following disclaimer. | ||
10 | * | ||
11 | * 2. Redistributions in binary form must reproduce the above copyright | ||
12 | * notice, this list of conditions and the following disclaimer in | ||
13 | * the documentation and/or other materials provided with the | ||
14 | * distribution. | ||
15 | * | ||
16 | * 3. All advertising materials mentioning features or use of this | ||
17 | * software must display the following acknowledgment: | ||
18 | * "This product includes software developed by the OpenSSL Project | ||
19 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" | ||
20 | * | ||
21 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
22 | * endorse or promote products derived from this software without | ||
23 | * prior written permission. For written permission, please contact | ||
24 | * openssl-core@openssl.org. | ||
25 | * | ||
26 | * 5. Products derived from this software may not be called "OpenSSL" | ||
27 | * nor may "OpenSSL" appear in their names without prior written | ||
28 | * permission of the OpenSSL Project. | ||
29 | * | ||
30 | * 6. Redistributions of any form whatsoever must retain the following | ||
31 | * acknowledgment: | ||
32 | * "This product includes software developed by the OpenSSL Project | ||
33 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)" | ||
34 | * | ||
35 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
36 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
37 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
38 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
39 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
40 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
41 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
42 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
43 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
44 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
45 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
46 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
47 | * | ||
48 | */ | ||
49 | |||
50 | #include <string.h> | ||
51 | #include <openssl/err.h> | ||
52 | #include <openssl/fips.h> | ||
53 | #include <openssl/rand.h> | ||
54 | #include <openssl/fips_rand.h> | ||
55 | |||
56 | #ifdef OPENSSL_FIPS | ||
57 | |||
58 | |||
59 | |||
60 | typedef struct | ||
61 | { | ||
62 | unsigned char DT[16]; | ||
63 | unsigned char V[16]; | ||
64 | unsigned char R[16]; | ||
65 | } AES_PRNG_TV; | ||
66 | |||
67 | /* The following test vectors are taken directly from the RGNVS spec */ | ||
68 | |||
69 | static unsigned char aes_128_key[16] = | ||
70 | {0xf3,0xb1,0x66,0x6d,0x13,0x60,0x72,0x42, | ||
71 | 0xed,0x06,0x1c,0xab,0xb8,0xd4,0x62,0x02}; | ||
72 | |||
73 | static AES_PRNG_TV aes_128_tv[] = { | ||
74 | { | ||
75 | /* DT */ | ||
76 | {0xe6,0xb3,0xbe,0x78,0x2a,0x23,0xfa,0x62, | ||
77 | 0xd7,0x1d,0x4a,0xfb,0xb0,0xe9,0x22,0xf9}, | ||
78 | /* V */ | ||
79 | {0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | ||
80 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, | ||
81 | /* R */ | ||
82 | {0x59,0x53,0x1e,0xd1,0x3b,0xb0,0xc0,0x55, | ||
83 | 0x84,0x79,0x66,0x85,0xc1,0x2f,0x76,0x41} | ||
84 | }, | ||
85 | { | ||
86 | /* DT */ | ||
87 | {0xe6,0xb3,0xbe,0x78,0x2a,0x23,0xfa,0x62, | ||
88 | 0xd7,0x1d,0x4a,0xfb,0xb0,0xe9,0x22,0xfa}, | ||
89 | /* V */ | ||
90 | {0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | ||
91 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, | ||
92 | /* R */ | ||
93 | {0x7c,0x22,0x2c,0xf4,0xca,0x8f,0xa2,0x4c, | ||
94 | 0x1c,0x9c,0xb6,0x41,0xa9,0xf3,0x22,0x0d} | ||
95 | }, | ||
96 | { | ||
97 | /* DT */ | ||
98 | {0xe6,0xb3,0xbe,0x78,0x2a,0x23,0xfa,0x62, | ||
99 | 0xd7,0x1d,0x4a,0xfb,0xb0,0xe9,0x22,0xfb}, | ||
100 | /* V */ | ||
101 | {0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | ||
102 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, | ||
103 | /* R */ | ||
104 | {0x8a,0xaa,0x00,0x39,0x66,0x67,0x5b,0xe5, | ||
105 | 0x29,0x14,0x28,0x81,0xa9,0x4d,0x4e,0xc7} | ||
106 | }, | ||
107 | { | ||
108 | /* DT */ | ||
109 | {0xe6,0xb3,0xbe,0x78,0x2a,0x23,0xfa,0x62, | ||
110 | 0xd7,0x1d,0x4a,0xfb,0xb0,0xe9,0x22,0xfc}, | ||
111 | /* V */ | ||
112 | {0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | ||
113 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, | ||
114 | /* R */ | ||
115 | {0x88,0xdd,0xa4,0x56,0x30,0x24,0x23,0xe5, | ||
116 | 0xf6,0x9d,0xa5,0x7e,0x7b,0x95,0xc7,0x3a} | ||
117 | }, | ||
118 | { | ||
119 | /* DT */ | ||
120 | {0xe6,0xb3,0xbe,0x78,0x2a,0x23,0xfa,0x62, | ||
121 | 0xd7,0x1d,0x4a,0xfb,0xb0,0xe9,0x22,0xfd}, | ||
122 | /* V */ | ||
123 | {0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | ||
124 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, | ||
125 | /* R */ | ||
126 | {0x05,0x25,0x92,0x46,0x61,0x79,0xd2,0xcb, | ||
127 | 0x78,0xc4,0x0b,0x14,0x0a,0x5a,0x9a,0xc8} | ||
128 | }, | ||
129 | { | ||
130 | /* DT */ | ||
131 | {0xe6,0xb3,0xbe,0x78,0x2a,0x23,0xfa,0x62, | ||
132 | 0xd7,0x1d,0x4a,0xfb,0xb0,0xe9,0x23,0x77}, | ||
133 | /* V */ | ||
134 | {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, | ||
135 | 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe}, | ||
136 | /* R */ | ||
137 | {0x0d,0xd5,0xa0,0x36,0x7a,0x59,0x26,0xbc, | ||
138 | 0x48,0xd9,0x38,0xbf,0xf0,0x85,0x8f,0xea} | ||
139 | }, | ||
140 | { | ||
141 | /* DT */ | ||
142 | {0xe6,0xb3,0xbe,0x78,0x2a,0x23,0xfa,0x62, | ||
143 | 0xd7,0x1d,0x4a,0xfb,0xb0,0xe9,0x23,0x78}, | ||
144 | /* V */ | ||
145 | {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, | ||
146 | 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}, | ||
147 | /* R */ | ||
148 | {0xae,0x53,0x87,0xee,0x8c,0xd9,0x12,0xf5, | ||
149 | 0x73,0x53,0xae,0x03,0xf9,0xd5,0x13,0x33} | ||
150 | }, | ||
151 | }; | ||
152 | |||
153 | static unsigned char aes_192_key[24] = | ||
154 | {0x15,0xd8,0x78,0x0d,0x62,0xd3,0x25,0x6e, | ||
155 | 0x44,0x64,0x10,0x13,0x60,0x2b,0xa9,0xbc, | ||
156 | 0x4a,0xfb,0xca,0xeb,0x4c,0x8b,0x99,0x3b}; | ||
157 | |||
158 | static AES_PRNG_TV aes_192_tv[] = { | ||
159 | { | ||
160 | /* DT */ | ||
161 | {0x3f,0xd8,0xff,0xe8,0x80,0x69,0x8b,0xc1, | ||
162 | 0xbf,0x99,0x7d,0xa4,0x24,0x78,0xf3,0x4b}, | ||
163 | /* V */ | ||
164 | {0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | ||
165 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, | ||
166 | /* R */ | ||
167 | {0x17,0x07,0xd5,0x28,0x19,0x79,0x1e,0xef, | ||
168 | 0xa5,0x0c,0xbf,0x25,0xe5,0x56,0xb4,0x93} | ||
169 | }, | ||
170 | { | ||
171 | /* DT */ | ||
172 | {0x3f,0xd8,0xff,0xe8,0x80,0x69,0x8b,0xc1, | ||
173 | 0xbf,0x99,0x7d,0xa4,0x24,0x78,0xf3,0x4c}, | ||
174 | /* V */ | ||
175 | {0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | ||
176 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, | ||
177 | /* R */ | ||
178 | {0x92,0x8d,0xbe,0x07,0xdd,0xc7,0x58,0xc0, | ||
179 | 0x6f,0x35,0x41,0x9b,0x17,0xc9,0xbd,0x9b} | ||
180 | }, | ||
181 | { | ||
182 | /* DT */ | ||
183 | {0x3f,0xd8,0xff,0xe8,0x80,0x69,0x8b,0xc1, | ||
184 | 0xbf,0x99,0x7d,0xa4,0x24,0x78,0xf3,0x4d}, | ||
185 | /* V */ | ||
186 | {0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | ||
187 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, | ||
188 | /* R */ | ||
189 | {0xd5,0xde,0xf4,0x50,0xf3,0xb7,0x10,0x4e, | ||
190 | 0xb8,0xc6,0xf8,0xcf,0xe2,0xb1,0xca,0xa2} | ||
191 | }, | ||
192 | { | ||
193 | /* DT */ | ||
194 | {0x3f,0xd8,0xff,0xe8,0x80,0x69,0x8b,0xc1, | ||
195 | 0xbf,0x99,0x7d,0xa4,0x24,0x78,0xf3,0x4e}, | ||
196 | /* V */ | ||
197 | {0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | ||
198 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, | ||
199 | /* R */ | ||
200 | {0xce,0x29,0x08,0x43,0xfc,0x34,0x41,0xe7, | ||
201 | 0x47,0x8f,0xb3,0x66,0x2b,0x46,0xb1,0xbb} | ||
202 | }, | ||
203 | { | ||
204 | /* DT */ | ||
205 | {0x3f,0xd8,0xff,0xe8,0x80,0x69,0x8b,0xc1, | ||
206 | 0xbf,0x99,0x7d,0xa4,0x24,0x78,0xf3,0x4f}, | ||
207 | /* V */ | ||
208 | {0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | ||
209 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, | ||
210 | /* R */ | ||
211 | {0xb3,0x26,0x0f,0xf5,0xd6,0xca,0xa8,0xbf, | ||
212 | 0x89,0xb8,0x5e,0x2f,0x22,0x56,0x92,0x2f} | ||
213 | }, | ||
214 | { | ||
215 | /* DT */ | ||
216 | {0x3f,0xd8,0xff,0xe8,0x80,0x69,0x8b,0xc1, | ||
217 | 0xbf,0x99,0x7d,0xa4,0x24,0x78,0xf3,0xc9}, | ||
218 | /* V */ | ||
219 | {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, | ||
220 | 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe}, | ||
221 | /* R */ | ||
222 | {0x05,0xeb,0x18,0x52,0x34,0x43,0x00,0x43, | ||
223 | 0x6e,0x5a,0xa5,0xfe,0x7b,0x32,0xc4,0x2d} | ||
224 | }, | ||
225 | { | ||
226 | /* DT */ | ||
227 | {0x3f,0xd8,0xff,0xe8,0x80,0x69,0x8b,0xc1, | ||
228 | 0xbf,0x99,0x7d,0xa4,0x24,0x78,0xf3,0xca}, | ||
229 | /* V */ | ||
230 | {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, | ||
231 | 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}, | ||
232 | /* R */ | ||
233 | {0x15,0x3c,0xe8,0xd1,0x04,0xc7,0xad,0x50, | ||
234 | 0x0b,0xf0,0x07,0x16,0xe7,0x56,0x7a,0xea} | ||
235 | }, | ||
236 | }; | ||
237 | |||
238 | static unsigned char aes_256_key[32] = | ||
239 | {0x6d,0x14,0x06,0x6c,0xb6,0xd8,0x21,0x2d, | ||
240 | 0x82,0x8d,0xfa,0xf2,0x7a,0x03,0xb7,0x9f, | ||
241 | 0x0c,0xc7,0x3e,0xcd,0x76,0xeb,0xee,0xb5, | ||
242 | 0x21,0x05,0x8c,0x4f,0x31,0x7a,0x80,0xbb}; | ||
243 | |||
244 | static AES_PRNG_TV aes_256_tv[] = { | ||
245 | { | ||
246 | /* DT */ | ||
247 | {0xda,0x3a,0x41,0xec,0x1d,0xa3,0xb0,0xd5, | ||
248 | 0xf2,0xa9,0x4e,0x34,0x74,0x8e,0x9e,0x88}, | ||
249 | /* V */ | ||
250 | {0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | ||
251 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, | ||
252 | /* R */ | ||
253 | {0x35,0xc7,0xef,0xa7,0x78,0x4d,0x29,0xbc, | ||
254 | 0x82,0x79,0x99,0xfb,0xd0,0xb3,0x3b,0x72} | ||
255 | }, | ||
256 | { | ||
257 | /* DT */ | ||
258 | {0xda,0x3a,0x41,0xec,0x1d,0xa3,0xb0,0xd5, | ||
259 | 0xf2,0xa9,0x4e,0x34,0x74,0x8e,0x9e,0x89}, | ||
260 | /* V */ | ||
261 | {0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | ||
262 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, | ||
263 | /* R */ | ||
264 | {0x6c,0xf4,0x42,0x5d,0xc7,0x04,0x1a,0x41, | ||
265 | 0x28,0x2a,0x78,0xa9,0xb0,0x12,0xc4,0x95} | ||
266 | }, | ||
267 | { | ||
268 | /* DT */ | ||
269 | {0xda,0x3a,0x41,0xec,0x1d,0xa3,0xb0,0xd5, | ||
270 | 0xf2,0xa9,0x4e,0x34,0x74,0x8e,0x9e,0x8a}, | ||
271 | /* V */ | ||
272 | {0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | ||
273 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, | ||
274 | /* R */ | ||
275 | {0x16,0x90,0xa4,0xff,0x7b,0x7e,0xb9,0x30, | ||
276 | 0xdb,0x67,0x4b,0xac,0x2d,0xe1,0xd1,0x75} | ||
277 | }, | ||
278 | { | ||
279 | /* DT */ | ||
280 | {0xda,0x3a,0x41,0xec,0x1d,0xa3,0xb0,0xd5, | ||
281 | 0xf2,0xa9,0x4e,0x34,0x74,0x8e,0x9e,0x8b}, | ||
282 | /* V */ | ||
283 | {0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | ||
284 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, | ||
285 | /* R */ | ||
286 | {0x14,0x6f,0xf5,0x95,0xa1,0x46,0x65,0x30, | ||
287 | 0xbc,0x57,0xe2,0x4a,0xf7,0x45,0x62,0x05} | ||
288 | }, | ||
289 | { | ||
290 | /* DT */ | ||
291 | {0xda,0x3a,0x41,0xec,0x1d,0xa3,0xb0,0xd5, | ||
292 | 0xf2,0xa9,0x4e,0x34,0x74,0x8e,0x9e,0x8c}, | ||
293 | /* V */ | ||
294 | {0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | ||
295 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, | ||
296 | /* R */ | ||
297 | {0x96,0xe2,0xb4,0x1e,0x66,0x5e,0x0f,0xa4, | ||
298 | 0xc5,0xcd,0xa2,0x07,0xcc,0xb7,0x94,0x40} | ||
299 | }, | ||
300 | { | ||
301 | /* DT */ | ||
302 | {0xda,0x3a,0x41,0xec,0x1d,0xa3,0xb0,0xd5, | ||
303 | 0xf2,0xa9,0x4e,0x34,0x74,0x8e,0x9f,0x06}, | ||
304 | /* V */ | ||
305 | {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, | ||
306 | 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe}, | ||
307 | /* R */ | ||
308 | {0x61,0xce,0x1d,0x6a,0x48,0x75,0x97,0x28, | ||
309 | 0x4b,0x41,0xde,0x18,0x44,0x4f,0x56,0xec} | ||
310 | }, | ||
311 | { | ||
312 | /* DT */ | ||
313 | {0xda,0x3a,0x41,0xec,0x1d,0xa3,0xb0,0xd5, | ||
314 | 0xf2,0xa9,0x4e,0x34,0x74,0x8e,0x9f,0x07}, | ||
315 | /* V */ | ||
316 | {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, | ||
317 | 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}, | ||
318 | /* R */ | ||
319 | {0x52,0x89,0x59,0x79,0x2d,0xaa,0x28,0xb3, | ||
320 | 0xb0,0x8a,0x3e,0x70,0xfa,0x71,0x59,0x84} | ||
321 | }, | ||
322 | }; | ||
323 | |||
324 | |||
325 | void FIPS_corrupt_rng() | ||
326 | { | ||
327 | aes_192_tv[0].V[0]++; | ||
328 | } | ||
329 | |||
330 | #define fips_rand_test(key, tv) \ | ||
331 | do_rand_test(key, sizeof key, tv, sizeof(tv)/sizeof(AES_PRNG_TV)) | ||
332 | |||
333 | static int do_rand_test(unsigned char *key, int keylen, | ||
334 | AES_PRNG_TV *tv, int ntv) | ||
335 | { | ||
336 | unsigned char R[16]; | ||
337 | int i; | ||
338 | if (!FIPS_rand_set_key(key, keylen)) | ||
339 | return 0; | ||
340 | for (i = 0; i < ntv; i++) | ||
341 | { | ||
342 | FIPS_rand_seed(tv[i].V, 16); | ||
343 | FIPS_rand_set_dt(tv[i].DT); | ||
344 | FIPS_rand_bytes(R, 16); | ||
345 | if (memcmp(R, tv[i].R, 16)) | ||
346 | return 0; | ||
347 | } | ||
348 | return 1; | ||
349 | } | ||
350 | |||
351 | |||
352 | int FIPS_selftest_rng() | ||
353 | { | ||
354 | FIPS_rand_reset(); | ||
355 | if (!FIPS_rand_test_mode()) | ||
356 | { | ||
357 | FIPSerr(FIPS_F_FIPS_SELFTEST_RNG,FIPS_R_SELFTEST_FAILED); | ||
358 | return 0; | ||
359 | } | ||
360 | if (!fips_rand_test(aes_128_key,aes_128_tv) | ||
361 | || !fips_rand_test(aes_192_key, aes_192_tv) | ||
362 | || !fips_rand_test(aes_256_key, aes_256_tv)) | ||
363 | { | ||
364 | FIPSerr(FIPS_F_FIPS_SELFTEST_RNG,FIPS_R_SELFTEST_FAILED); | ||
365 | return 0; | ||
366 | } | ||
367 | FIPS_rand_reset(); | ||
368 | return 1; | ||
369 | } | ||
370 | |||
371 | #endif | ||
diff --git a/src/lib/libssl/src/fips/rand/fips_randtest.c b/src/lib/libssl/src/fips/rand/fips_randtest.c index 6165944e56..5582941c11 100644 --- a/src/lib/libssl/src/fips/rand/fips_randtest.c +++ b/src/lib/libssl/src/fips/rand/fips_randtest.c | |||
@@ -105,9 +105,12 @@ | |||
105 | 105 | ||
106 | #include <stdio.h> | 106 | #include <stdio.h> |
107 | #include <stdlib.h> | 107 | #include <stdlib.h> |
108 | #include <string.h> | ||
109 | #include <ctype.h> | ||
108 | #include <openssl/rand.h> | 110 | #include <openssl/rand.h> |
109 | #include <openssl/fips_rand.h> | 111 | #include <openssl/fips_rand.h> |
110 | #include <openssl/err.h> | 112 | #include <openssl/err.h> |
113 | #include <openssl/bn.h> | ||
111 | 114 | ||
112 | #include "e_os.h" | 115 | #include "e_os.h" |
113 | 116 | ||
@@ -120,42 +123,65 @@ int main(int argc, char *argv[]) | |||
120 | 123 | ||
121 | #else | 124 | #else |
122 | 125 | ||
123 | /* some FIPS 140-1 random number test */ | 126 | #include "fips_utl.h" |
124 | /* some simple tests */ | ||
125 | |||
126 | static DES_cblock prng_key1={0x21,0x58,0x47,0xb7,0xc2,0x97,0x5a,0x8e}; | ||
127 | static DES_cblock prng_key2={0x61,0x23,0x05,0x96,0x18,0x91,0x86,0xac}; | ||
128 | static unsigned char prng_seed[8]={0x6b,0xa3,0x4f,0x07,0xe4,0x2a,0xb0,0xc}; | ||
129 | 127 | ||
130 | typedef struct | 128 | typedef struct |
131 | { | 129 | { |
132 | DES_cblock keys[2]; | 130 | unsigned char DT[16]; |
133 | const unsigned char time[8]; | 131 | unsigned char V[16]; |
134 | const unsigned char seed[8]; | 132 | unsigned char R[16]; |
135 | const unsigned char block1[8]; | 133 | } AES_PRNG_MCT; |
136 | const unsigned char block100[8]; | 134 | |
137 | } PRNGtest; | 135 | static unsigned char aes_128_mct_key[16] = |
138 | 136 | {0x9f,0x5b,0x51,0x20,0x0b,0xf3,0x34,0xb5, | |
139 | /* FIXME: these test vectors are made up! */ | 137 | 0xd8,0x2b,0xe8,0xc3,0x72,0x55,0xc8,0x48}; |
140 | static PRNGtest t1= | 138 | |
141 | { | 139 | static AES_PRNG_MCT aes_128_mct_tv = { |
142 | { { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 }, | 140 | /* DT */ |
143 | { 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f }, | 141 | {0x63,0x76,0xbb,0xe5,0x29,0x02,0xba,0x3b, |
144 | }, | 142 | 0x67,0xc9,0x25,0xfa,0x70,0x1f,0x11,0xac}, |
145 | { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, | 143 | /* V */ |
146 | { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, | 144 | {0x57,0x2c,0x8e,0x76,0x87,0x26,0x47,0x97, |
147 | { 0x33,0xc3,0xdf,0xfe,0x60,0x60,0x49,0x9e }, | 145 | 0x7e,0x74,0xfb,0xdd,0xc4,0x95,0x01,0xd1}, |
148 | { 0xcd,0x2b,0x41,0xaf,0x80,0x51,0x37,0xd8 } | 146 | /* R */ |
149 | }; | 147 | {0x48,0xe9,0xbd,0x0d,0x06,0xee,0x18,0xfb, |
150 | static PRNGtest t2= | 148 | 0xe4,0x57,0x90,0xd5,0xc3,0xfc,0x9b,0x73} |
151 | { | 149 | }; |
152 | { { 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff }, | 150 | |
153 | { 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff } }, | 151 | static unsigned char aes_192_mct_key[24] = |
154 | { 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff }, | 152 | {0xb7,0x6c,0x34,0xd1,0x09,0x67,0xab,0x73, |
155 | { 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff }, | 153 | 0x4d,0x5a,0xd5,0x34,0x98,0x16,0x0b,0x91, |
156 | { 0x65,0xf1,0xa4,0x07,0x42,0x38,0xd5,0x25 }, | 154 | 0xbc,0x35,0x51,0x16,0x6b,0xae,0x93,0x8a}; |
157 | { 0xbb,0x75,0x84,0x20,0x7a,0x44,0xf0,0xa0 } | 155 | |
158 | }; | 156 | static AES_PRNG_MCT aes_192_mct_tv = { |
157 | /* DT */ | ||
158 | {0x84,0xce,0x22,0x7d,0x91,0x5a,0xa3,0xc9, | ||
159 | 0x84,0x3c,0x0a,0xb3,0xa9,0x63,0x15,0x52}, | ||
160 | /* V */ | ||
161 | {0xb6,0xaf,0xe6,0x8f,0x99,0x9e,0x90,0x64, | ||
162 | 0xdd,0xc7,0x7a,0xc1,0xbb,0x90,0x3a,0x6d}, | ||
163 | /* R */ | ||
164 | {0xfc,0x85,0x60,0x9a,0x29,0x6f,0xef,0x21, | ||
165 | 0xdd,0x86,0x20,0x32,0x8a,0x29,0x6f,0x47} | ||
166 | }; | ||
167 | |||
168 | static unsigned char aes_256_mct_key[32] = | ||
169 | {0x9b,0x05,0xc8,0x68,0xff,0x47,0xf8,0x3a, | ||
170 | 0xa6,0x3a,0xa8,0xcb,0x4e,0x71,0xb2,0xe0, | ||
171 | 0xb8,0x7e,0xf1,0x37,0xb6,0xb4,0xf6,0x6d, | ||
172 | 0x86,0x32,0xfc,0x1f,0x5e,0x1d,0x1e,0x50}; | ||
173 | |||
174 | static AES_PRNG_MCT aes_256_mct_tv = { | ||
175 | /* DT */ | ||
176 | {0x31,0x6e,0x35,0x9a,0xb1,0x44,0xf0,0xee, | ||
177 | 0x62,0x6d,0x04,0x46,0xe0,0xa3,0x92,0x4c}, | ||
178 | /* V */ | ||
179 | {0x4f,0xcd,0xc1,0x87,0x82,0x1f,0x4d,0xa1, | ||
180 | 0x3e,0x0e,0x56,0x44,0x59,0xe8,0x83,0xca}, | ||
181 | /* R */ | ||
182 | {0xc8,0x87,0xc2,0x61,0x5b,0xd0,0xb9,0xe1, | ||
183 | 0xe7,0xf3,0x8b,0xd7,0x5b,0xd5,0xf1,0x8d} | ||
184 | }; | ||
159 | 185 | ||
160 | static void dump(const unsigned char *b,int n) | 186 | static void dump(const unsigned char *b,int n) |
161 | { | 187 | { |
@@ -174,196 +200,49 @@ static void compare(const unsigned char *result,const unsigned char *expected, | |||
174 | if(result[i] != expected[i]) | 200 | if(result[i] != expected[i]) |
175 | { | 201 | { |
176 | puts("Random test failed, got:"); | 202 | puts("Random test failed, got:"); |
177 | dump(result,8); | 203 | dump(result,n); |
178 | puts("\n expected:"); | 204 | puts("\n expected:"); |
179 | dump(expected,8); | 205 | dump(expected,n); |
180 | putchar('\n'); | 206 | putchar('\n'); |
181 | EXIT(1); | 207 | EXIT(1); |
182 | } | 208 | } |
183 | } | 209 | } |
184 | 210 | ||
185 | static void run_test(const PRNGtest *t) | ||
186 | { | ||
187 | unsigned char buf[8]; | ||
188 | int n; | ||
189 | |||
190 | FIPS_set_prng_key(t->keys[0],t->keys[1]); | ||
191 | FIPS_test_mode(1,t->time); | ||
192 | RAND_seed(t->seed,sizeof t->seed); | ||
193 | 211 | ||
194 | if(RAND_bytes(buf,8) <= 0) | 212 | static void run_test(unsigned char *key, int keylen, AES_PRNG_MCT *tv) |
213 | { | ||
214 | unsigned char buf[16], dt[16]; | ||
215 | int i, j; | ||
216 | FIPS_rand_reset(); | ||
217 | FIPS_rand_test_mode(); | ||
218 | FIPS_rand_set_key(key, keylen); | ||
219 | FIPS_rand_seed(tv->V, 16); | ||
220 | memcpy(dt, tv->DT, 16); | ||
221 | for (i = 0; i < 10000; i++) | ||
195 | { | 222 | { |
196 | ERR_print_errors_fp(stderr); | 223 | FIPS_rand_set_dt(dt); |
197 | EXIT(2); | 224 | FIPS_rand_bytes(buf, 16); |
225 | /* Increment DT */ | ||
226 | for (j = 15; j >= 0; j--) | ||
227 | { | ||
228 | dt[j]++; | ||
229 | if (dt[j]) | ||
230 | break; | ||
231 | } | ||
198 | } | 232 | } |
199 | compare(buf,t->block1,8); | 233 | |
200 | for(n=0 ; n < 99 ; ++n) | 234 | compare(buf,tv->R, 16); |
201 | if(RAND_bytes(buf,8) <= 0) | ||
202 | { | ||
203 | ERR_print_errors_fp(stderr); | ||
204 | EXIT(2); | ||
205 | } | ||
206 | compare(buf,t->block100,8); | ||
207 | FIPS_test_mode(0,NULL); | ||
208 | } | 235 | } |
209 | 236 | ||
210 | int main() | 237 | int main() |
211 | { | 238 | { |
212 | unsigned char buf[2500]; | 239 | run_test(aes_128_mct_key, 16, &aes_128_mct_tv); |
213 | int i,j,k,s,sign,nsign,err=0; | 240 | printf("FIPS PRNG test 1 done\n"); |
214 | unsigned long n1; | 241 | run_test(aes_192_mct_key, 24, &aes_192_mct_tv); |
215 | unsigned long n2[16]; | 242 | printf("FIPS PRNG test 2 done\n"); |
216 | unsigned long runs[2][34]; | 243 | run_test(aes_256_mct_key, 32, &aes_256_mct_tv); |
217 | /*double d; */ | 244 | printf("FIPS PRNG test 3 done\n"); |
218 | long d; | 245 | return 0; |
219 | |||
220 | ERR_load_crypto_strings(); | ||
221 | RAND_set_rand_method(FIPS_rand_method()); | ||
222 | |||
223 | run_test(&t1); | ||
224 | run_test(&t2); | ||
225 | |||
226 | FIPS_set_prng_key(prng_key1,prng_key2); | ||
227 | RAND_seed(prng_seed,sizeof prng_seed); | ||
228 | |||
229 | i = RAND_pseudo_bytes(buf,2500); | ||
230 | if (i <= 0) | ||
231 | { | ||
232 | printf ("init failed, the rand method is not properly installed\n"); | ||
233 | err++; | ||
234 | goto err; | ||
235 | } | ||
236 | |||
237 | n1=0; | ||
238 | for (i=0; i<16; i++) n2[i]=0; | ||
239 | for (i=0; i<34; i++) runs[0][i]=runs[1][i]=0; | ||
240 | |||
241 | /* test 1 and 2 */ | ||
242 | sign=0; | ||
243 | nsign=0; | ||
244 | for (i=0; i<2500; i++) | ||
245 | { | ||
246 | j=buf[i]; | ||
247 | |||
248 | n2[j&0x0f]++; | ||
249 | n2[(j>>4)&0x0f]++; | ||
250 | |||
251 | for (k=0; k<8; k++) | ||
252 | { | ||
253 | s=(j&0x01); | ||
254 | if (s == sign) | ||
255 | nsign++; | ||
256 | else | ||
257 | { | ||
258 | if (nsign > 34) nsign=34; | ||
259 | if (nsign != 0) | ||
260 | { | ||
261 | runs[sign][nsign-1]++; | ||
262 | if (nsign > 6) | ||
263 | runs[sign][5]++; | ||
264 | } | ||
265 | sign=s; | ||
266 | nsign=1; | ||
267 | } | ||
268 | |||
269 | if (s) n1++; | ||
270 | j>>=1; | ||
271 | } | ||
272 | } | ||
273 | if (nsign > 34) nsign=34; | ||
274 | if (nsign != 0) runs[sign][nsign-1]++; | ||
275 | |||
276 | /* test 1 */ | ||
277 | if (!((9654 < n1) && (n1 < 10346))) | ||
278 | { | ||
279 | printf("test 1 failed, X=%lu\n",n1); | ||
280 | err++; | ||
281 | } | ||
282 | printf("test 1 done\n"); | ||
283 | |||
284 | /* test 2 */ | ||
285 | #ifdef undef | ||
286 | d=0; | ||
287 | for (i=0; i<16; i++) | ||
288 | d+=n2[i]*n2[i]; | ||
289 | d=d*16.0/5000.0-5000.0; | ||
290 | if (!((1.03 < d) && (d < 57.4))) | ||
291 | { | ||
292 | printf("test 2 failed, X=%.2f\n",d); | ||
293 | err++; | ||
294 | } | ||
295 | #endif | ||
296 | d=0; | ||
297 | for (i=0; i<16; i++) | ||
298 | d+=n2[i]*n2[i]; | ||
299 | d=(d*8)/25-500000; | ||
300 | if (!((103 < d) && (d < 5740))) | ||
301 | { | ||
302 | printf("test 2 failed, X=%ld.%02ld\n",d/100L,d%100L); | ||
303 | err++; | ||
304 | } | ||
305 | printf("test 2 done\n"); | ||
306 | |||
307 | /* test 3 */ | ||
308 | for (i=0; i<2; i++) | ||
309 | { | ||
310 | if (!((2267 < runs[i][0]) && (runs[i][0] < 2733))) | ||
311 | { | ||
312 | printf("test 3 failed, bit=%d run=%d num=%lu\n", | ||
313 | i,1,runs[i][0]); | ||
314 | err++; | ||
315 | } | ||
316 | if (!((1079 < runs[i][1]) && (runs[i][1] < 1421))) | ||
317 | { | ||
318 | printf("test 3 failed, bit=%d run=%d num=%lu\n", | ||
319 | i,2,runs[i][1]); | ||
320 | err++; | ||
321 | } | ||
322 | if (!(( 502 < runs[i][2]) && (runs[i][2] < 748))) | ||
323 | { | ||
324 | printf("test 3 failed, bit=%d run=%d num=%lu\n", | ||
325 | i,3,runs[i][2]); | ||
326 | err++; | ||
327 | } | ||
328 | if (!(( 223 < runs[i][3]) && (runs[i][3] < 402))) | ||
329 | { | ||
330 | printf("test 3 failed, bit=%d run=%d num=%lu\n", | ||
331 | i,4,runs[i][3]); | ||
332 | err++; | ||
333 | } | ||
334 | if (!(( 90 < runs[i][4]) && (runs[i][4] < 223))) | ||
335 | { | ||
336 | printf("test 3 failed, bit=%d run=%d num=%lu\n", | ||
337 | i,5,runs[i][4]); | ||
338 | err++; | ||
339 | } | ||
340 | if (!(( 90 < runs[i][5]) && (runs[i][5] < 223))) | ||
341 | { | ||
342 | printf("test 3 failed, bit=%d run=%d num=%lu\n", | ||
343 | i,6,runs[i][5]); | ||
344 | err++; | ||
345 | } | ||
346 | } | ||
347 | printf("test 3 done\n"); | ||
348 | |||
349 | /* test 4 */ | ||
350 | if (runs[0][33] != 0) | ||
351 | { | ||
352 | printf("test 4 failed, bit=%d run=%d num=%lu\n", | ||
353 | 0,34,runs[0][33]); | ||
354 | err++; | ||
355 | } | ||
356 | if (runs[1][33] != 0) | ||
357 | { | ||
358 | printf("test 4 failed, bit=%d run=%d num=%lu\n", | ||
359 | 1,34,runs[1][33]); | ||
360 | err++; | ||
361 | } | ||
362 | printf("test 4 done\n"); | ||
363 | err: | ||
364 | err=((err)?1:0); | ||
365 | EXIT(err); | ||
366 | return(err); | ||
367 | } | 246 | } |
368 | 247 | ||
369 | #endif | 248 | #endif |
diff --git a/src/lib/libssl/src/fips/rand/fips_rngvs.c b/src/lib/libssl/src/fips/rand/fips_rngvs.c new file mode 100644 index 0000000000..cb904eaf0b --- /dev/null +++ b/src/lib/libssl/src/fips/rand/fips_rngvs.c | |||
@@ -0,0 +1,230 @@ | |||
1 | /* | ||
2 | * Crude test driver for processing the VST and MCT testvector files | ||
3 | * generated by the CMVP RNGVS product. | ||
4 | * | ||
5 | * Note the input files are assumed to have a _very_ specific format | ||
6 | * as described in the NIST document "The Random Number Generator | ||
7 | * Validation System (RNGVS)", May 25, 2004. | ||
8 | * | ||
9 | */ | ||
10 | #include <openssl/opensslconf.h> | ||
11 | |||
12 | #ifndef OPENSSL_FIPS | ||
13 | #include <stdio.h> | ||
14 | |||
15 | int main(int argc, char **argv) | ||
16 | { | ||
17 | printf("No FIPS RNG support\n"); | ||
18 | return 0; | ||
19 | } | ||
20 | #else | ||
21 | |||
22 | #include <openssl/bn.h> | ||
23 | #include <openssl/dsa.h> | ||
24 | #include <openssl/fips.h> | ||
25 | #include <openssl/err.h> | ||
26 | #include <openssl/rand.h> | ||
27 | #include <openssl/fips_rand.h> | ||
28 | #include <openssl/x509v3.h> | ||
29 | #include <string.h> | ||
30 | #include <ctype.h> | ||
31 | |||
32 | #include "fips_utl.h" | ||
33 | |||
34 | void vst() | ||
35 | { | ||
36 | unsigned char *key = NULL; | ||
37 | unsigned char *v = NULL; | ||
38 | unsigned char *dt = NULL; | ||
39 | unsigned char ret[16]; | ||
40 | char buf[1024]; | ||
41 | char lbuf[1024]; | ||
42 | char *keyword, *value; | ||
43 | long i, keylen; | ||
44 | |||
45 | keylen = 0; | ||
46 | |||
47 | while(fgets(buf,sizeof buf,stdin) != NULL) | ||
48 | { | ||
49 | fputs(buf,stdout); | ||
50 | if(!strncmp(buf,"[AES 128-Key]", 13)) | ||
51 | keylen = 16; | ||
52 | else if(!strncmp(buf,"[AES 192-Key]", 13)) | ||
53 | keylen = 24; | ||
54 | else if(!strncmp(buf,"[AES 256-Key]", 13)) | ||
55 | keylen = 32; | ||
56 | if (!parse_line(&keyword, &value, lbuf, buf)) | ||
57 | continue; | ||
58 | if(!strcmp(keyword,"Key")) | ||
59 | { | ||
60 | key=hex2bin_m(value,&i); | ||
61 | if (i != keylen) | ||
62 | { | ||
63 | fprintf(stderr, "Invalid key length, expecting %ld\n", keylen); | ||
64 | return; | ||
65 | } | ||
66 | } | ||
67 | else if(!strcmp(keyword,"DT")) | ||
68 | { | ||
69 | dt=hex2bin_m(value,&i); | ||
70 | if (i != 16) | ||
71 | { | ||
72 | fprintf(stderr, "Invalid DT length\n"); | ||
73 | return; | ||
74 | } | ||
75 | } | ||
76 | else if(!strcmp(keyword,"V")) | ||
77 | { | ||
78 | v=hex2bin_m(value,&i); | ||
79 | if (i != 16) | ||
80 | { | ||
81 | fprintf(stderr, "Invalid V length\n"); | ||
82 | return; | ||
83 | } | ||
84 | |||
85 | if (!key || !dt) | ||
86 | { | ||
87 | fprintf(stderr, "Missing key or DT\n"); | ||
88 | return; | ||
89 | } | ||
90 | |||
91 | FIPS_rand_set_key(key, keylen); | ||
92 | FIPS_rand_seed(v,16); | ||
93 | FIPS_rand_set_dt(dt); | ||
94 | if (FIPS_rand_bytes(ret,16) <= 0) | ||
95 | { | ||
96 | fprintf(stderr, "Error getting PRNG value\n"); | ||
97 | return; | ||
98 | } | ||
99 | |||
100 | pv("R",ret,16); | ||
101 | OPENSSL_free(key); | ||
102 | key = NULL; | ||
103 | OPENSSL_free(dt); | ||
104 | dt = NULL; | ||
105 | OPENSSL_free(v); | ||
106 | v = NULL; | ||
107 | } | ||
108 | } | ||
109 | } | ||
110 | |||
111 | void mct() | ||
112 | { | ||
113 | unsigned char *key = NULL; | ||
114 | unsigned char *v = NULL; | ||
115 | unsigned char *dt = NULL; | ||
116 | unsigned char ret[16]; | ||
117 | char buf[1024]; | ||
118 | char lbuf[1024]; | ||
119 | char *keyword, *value; | ||
120 | long i, keylen; | ||
121 | int j; | ||
122 | |||
123 | keylen = 0; | ||
124 | |||
125 | while(fgets(buf,sizeof buf,stdin) != NULL) | ||
126 | { | ||
127 | fputs(buf,stdout); | ||
128 | if(!strncmp(buf,"[AES 128-Key]", 13)) | ||
129 | keylen = 16; | ||
130 | else if(!strncmp(buf,"[AES 192-Key]", 13)) | ||
131 | keylen = 24; | ||
132 | else if(!strncmp(buf,"[AES 256-Key]", 13)) | ||
133 | keylen = 32; | ||
134 | if (!parse_line(&keyword, &value, lbuf, buf)) | ||
135 | continue; | ||
136 | if(!strcmp(keyword,"Key")) | ||
137 | { | ||
138 | key=hex2bin_m(value,&i); | ||
139 | if (i != keylen) | ||
140 | { | ||
141 | fprintf(stderr, "Invalid key length, expecting %ld\n", keylen); | ||
142 | return; | ||
143 | } | ||
144 | } | ||
145 | else if(!strcmp(keyword,"DT")) | ||
146 | { | ||
147 | dt=hex2bin_m(value,&i); | ||
148 | if (i != 16) | ||
149 | { | ||
150 | fprintf(stderr, "Invalid DT length\n"); | ||
151 | return; | ||
152 | } | ||
153 | } | ||
154 | else if(!strcmp(keyword,"V")) | ||
155 | { | ||
156 | v=hex2bin_m(value,&i); | ||
157 | if (i != 16) | ||
158 | { | ||
159 | fprintf(stderr, "Invalid V length\n"); | ||
160 | return; | ||
161 | } | ||
162 | |||
163 | if (!key || !dt) | ||
164 | { | ||
165 | fprintf(stderr, "Missing key or DT\n"); | ||
166 | return; | ||
167 | } | ||
168 | |||
169 | FIPS_rand_set_key(key, keylen); | ||
170 | FIPS_rand_seed(v,16); | ||
171 | for (i = 0; i < 10000; i++) | ||
172 | { | ||
173 | FIPS_rand_set_dt(dt); | ||
174 | if (FIPS_rand_bytes(ret,16) <= 0) | ||
175 | { | ||
176 | fprintf(stderr, "Error getting PRNG value\n"); | ||
177 | return; | ||
178 | } | ||
179 | /* Increment DT */ | ||
180 | for (j = 15; j >= 0; j--) | ||
181 | { | ||
182 | dt[j]++; | ||
183 | if (dt[j]) | ||
184 | break; | ||
185 | } | ||
186 | } | ||
187 | |||
188 | pv("R",ret,16); | ||
189 | OPENSSL_free(key); | ||
190 | key = NULL; | ||
191 | OPENSSL_free(dt); | ||
192 | dt = NULL; | ||
193 | OPENSSL_free(v); | ||
194 | v = NULL; | ||
195 | } | ||
196 | } | ||
197 | } | ||
198 | |||
199 | int main(int argc,char **argv) | ||
200 | { | ||
201 | if(argc != 2) | ||
202 | { | ||
203 | fprintf(stderr,"%s [mct|vst]\n",argv[0]); | ||
204 | exit(1); | ||
205 | } | ||
206 | if(!FIPS_mode_set(1)) | ||
207 | { | ||
208 | do_print_errors(); | ||
209 | exit(1); | ||
210 | } | ||
211 | FIPS_rand_reset(); | ||
212 | if (!FIPS_rand_test_mode()) | ||
213 | { | ||
214 | fprintf(stderr, "Error setting PRNG test mode\n"); | ||
215 | do_print_errors(); | ||
216 | exit(1); | ||
217 | } | ||
218 | if(!strcmp(argv[1],"mct")) | ||
219 | mct(); | ||
220 | else if(!strcmp(argv[1],"vst")) | ||
221 | vst(); | ||
222 | else | ||
223 | { | ||
224 | fprintf(stderr,"Don't know how to %s.\n",argv[1]); | ||
225 | exit(1); | ||
226 | } | ||
227 | |||
228 | return 0; | ||
229 | } | ||
230 | #endif | ||
diff --git a/src/lib/libssl/src/fips/rsa/Makefile b/src/lib/libssl/src/fips/rsa/Makefile index bb20f86442..da28c13aa6 100644 --- a/src/lib/libssl/src/fips/rsa/Makefile +++ b/src/lib/libssl/src/fips/rsa/Makefile | |||
@@ -1,5 +1,5 @@ | |||
1 | # | 1 | # |
2 | # SSLeay/fips/rsa/Makefile | 2 | # OpenSSL/fips/rsa/Makefile |
3 | # | 3 | # |
4 | 4 | ||
5 | DIR= rsa | 5 | DIR= rsa |
@@ -18,12 +18,14 @@ AR= ar r | |||
18 | CFLAGS= $(INCLUDES) $(CFLAG) | 18 | CFLAGS= $(INCLUDES) $(CFLAG) |
19 | 19 | ||
20 | GENERAL=Makefile | 20 | GENERAL=Makefile |
21 | TEST= | 21 | TEST= fips_rsavtest.c fips_rsastest.c fips_rsagtest.c |
22 | APPS= | 22 | APPS= |
23 | 23 | ||
24 | LIB=$(TOP)/libcrypto.a | 24 | LIB=$(TOP)/libcrypto.a |
25 | LIBSRC=fips_rsa_eay.c fips_rsa_gen.c fips_rsa_selftest.c | 25 | LIBSRC=fips_rsa_eay.c fips_rsa_gen.c fips_rsa_selftest.c fips_rsa_x931g.c \ |
26 | LIBOBJ=fips_rsa_eay.o fips_rsa_gen.o fips_rsa_selftest.o | 26 | fips_rsa_sign.c fips_rsa_lib.c |
27 | LIBOBJ=fips_rsa_eay.o fips_rsa_gen.o fips_rsa_selftest.o fips_rsa_x931g.o \ | ||
28 | fips_rsa_sign.o fips_rsa_lib.o | ||
27 | 29 | ||
28 | SRC= $(LIBSRC) | 30 | SRC= $(LIBSRC) |
29 | 31 | ||
@@ -35,15 +37,10 @@ ALL= $(GENERAL) $(SRC) $(HEADER) | |||
35 | top: | 37 | top: |
36 | (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) sub_all) | 38 | (cd $(TOP); $(MAKE) DIRS=fips FDIRS=$(DIR) sub_all) |
37 | 39 | ||
38 | all: check lib | 40 | all: lib |
39 | 41 | ||
40 | lib: $(LIBOBJ) | 42 | lib: $(LIBOBJ) |
41 | $(AR) $(LIB) $(LIBOBJ) | 43 | @echo $(LIBOBJ) > lib |
42 | $(RANLIB) $(LIB) || echo Never mind. | ||
43 | @sleep 2; touch lib | ||
44 | |||
45 | check: | ||
46 | TOP=`pwd`/$(TOP) ../fips_check_sha1 fingerprint.sha1 $(SRC) $(HEADER) | ||
47 | 44 | ||
48 | files: | 45 | files: |
49 | $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO | 46 | $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO |
@@ -65,6 +62,24 @@ tags: | |||
65 | 62 | ||
66 | tests: | 63 | tests: |
67 | 64 | ||
65 | Q=../testvectors/rsa/req | ||
66 | A=../testvectors/rsa/rsp | ||
67 | Q62=../testvectors/rsa_salt_62/req | ||
68 | A62=../testvectors/rsa_salt_62/rsp | ||
69 | |||
70 | fips_test: | ||
71 | -rm -rf $(A) $(A62) | ||
72 | mkdir $(A) $(A62) | ||
73 | if [ -f $(Q)/SigGen15.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rsastest < $(Q)/SigGen15.req > $(A)/SigGen15.rsp; fi | ||
74 | if [ -f $(Q)/SigVer15.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rsavtest < $(Q)/SigVer15.req > $(A)/SigVer15.rsp; fi | ||
75 | if [ -f $(Q)/SigGenPSS.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rsastest -saltlen 0 < $(Q)/SigGenPSS.req > $(A)/SigGenPSS.rsp; fi | ||
76 | if [ -f $(Q)/SigVerPSS.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rsavtest -saltlen 0 < $(Q)/SigVerPSS.req > $(A)/SigVerPSS.rsp; fi | ||
77 | if [ -f $(Q)/SigGenRSA.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rsastest -x931 < $(Q)/SigGenRSA.req > $(A)/SigGenRSA.rsp; fi | ||
78 | if [ -f $(Q)/SigVerRSA.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rsavtest -x931 < $(Q)/SigVerRSA.req > $(A)/SigVerRSA.rsp; fi | ||
79 | if [ -f $(Q62)/SigGenPSS.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rsastest -saltlen 62 < $(Q62)/SigGenPSS.req >$(A62)/SigGenPSS.rsp; fi | ||
80 | if [ -f $(Q62)/SigVerPSS.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rsavtest -saltlen 62 <$(Q62)/SigVerPSS.req >$(A62)/SigVerPSS.rsp; fi | ||
81 | if [ -f $(Q)/KeyGenRSA.req ]; then $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_rsagtest < $(Q)/KeyGenRSA.req > $(A)/KeyGenRSA.rsp; fi | ||
82 | |||
68 | lint: | 83 | lint: |
69 | lint -DLINT $(INCLUDES) $(SRC)>fluff | 84 | lint -DLINT $(INCLUDES) $(SRC)>fluff |
70 | 85 | ||
@@ -92,20 +107,109 @@ fips_rsa_eay.o: fips_rsa_eay.c | |||
92 | fips_rsa_gen.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | 107 | fips_rsa_gen.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h |
93 | fips_rsa_gen.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h | 108 | fips_rsa_gen.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h |
94 | fips_rsa_gen.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | 109 | fips_rsa_gen.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
95 | fips_rsa_gen.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h | 110 | fips_rsa_gen.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
111 | fips_rsa_gen.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | ||
112 | fips_rsa_gen.o: ../../include/openssl/objects.h | ||
96 | fips_rsa_gen.o: ../../include/openssl/opensslconf.h | 113 | fips_rsa_gen.o: ../../include/openssl/opensslconf.h |
97 | fips_rsa_gen.o: ../../include/openssl/opensslv.h | 114 | fips_rsa_gen.o: ../../include/openssl/opensslv.h |
98 | fips_rsa_gen.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h | 115 | fips_rsa_gen.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h |
99 | fips_rsa_gen.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | 116 | fips_rsa_gen.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h |
100 | fips_rsa_gen.o: ../../include/openssl/symhacks.h fips_rsa_gen.c | 117 | fips_rsa_gen.o: ../../include/openssl/symhacks.h ../fips_locl.h fips_rsa_gen.c |
118 | fips_rsa_lib.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
119 | fips_rsa_lib.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h | ||
120 | fips_rsa_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
121 | fips_rsa_lib.o: ../../include/openssl/evp.h ../../include/openssl/fips.h | ||
122 | fips_rsa_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | ||
123 | fips_rsa_lib.o: ../../include/openssl/objects.h | ||
124 | fips_rsa_lib.o: ../../include/openssl/opensslconf.h | ||
125 | fips_rsa_lib.o: ../../include/openssl/opensslv.h | ||
126 | fips_rsa_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h | ||
127 | fips_rsa_lib.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h | ||
128 | fips_rsa_lib.o: ../../include/openssl/symhacks.h fips_rsa_lib.c | ||
101 | fips_rsa_selftest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | 129 | fips_rsa_selftest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h |
102 | fips_rsa_selftest.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h | 130 | fips_rsa_selftest.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h |
103 | fips_rsa_selftest.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | 131 | fips_rsa_selftest.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h |
104 | fips_rsa_selftest.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h | 132 | fips_rsa_selftest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h |
133 | fips_rsa_selftest.o: ../../include/openssl/lhash.h | ||
134 | fips_rsa_selftest.o: ../../include/openssl/obj_mac.h | ||
135 | fips_rsa_selftest.o: ../../include/openssl/objects.h | ||
105 | fips_rsa_selftest.o: ../../include/openssl/opensslconf.h | 136 | fips_rsa_selftest.o: ../../include/openssl/opensslconf.h |
106 | fips_rsa_selftest.o: ../../include/openssl/opensslv.h | 137 | fips_rsa_selftest.o: ../../include/openssl/opensslv.h |
107 | fips_rsa_selftest.o: ../../include/openssl/ossl_typ.h | 138 | fips_rsa_selftest.o: ../../include/openssl/ossl_typ.h |
108 | fips_rsa_selftest.o: ../../include/openssl/rsa.h | 139 | fips_rsa_selftest.o: ../../include/openssl/rsa.h |
109 | fips_rsa_selftest.o: ../../include/openssl/safestack.h | 140 | fips_rsa_selftest.o: ../../include/openssl/safestack.h |
110 | fips_rsa_selftest.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | 141 | fips_rsa_selftest.o: ../../include/openssl/stack.h |
111 | fips_rsa_selftest.o: ../../include/openssl/symhacks.h fips_rsa_selftest.c | 142 | fips_rsa_selftest.o: ../../include/openssl/symhacks.h fips_rsa_selftest.c |
143 | fips_rsa_sign.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
144 | fips_rsa_sign.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h | ||
145 | fips_rsa_sign.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
146 | fips_rsa_sign.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h | ||
147 | fips_rsa_sign.o: ../../include/openssl/obj_mac.h | ||
148 | fips_rsa_sign.o: ../../include/openssl/objects.h | ||
149 | fips_rsa_sign.o: ../../include/openssl/opensslconf.h | ||
150 | fips_rsa_sign.o: ../../include/openssl/opensslv.h | ||
151 | fips_rsa_sign.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h | ||
152 | fips_rsa_sign.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
153 | fips_rsa_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
154 | fips_rsa_sign.o: fips_rsa_sign.c | ||
155 | fips_rsa_x931g.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
156 | fips_rsa_x931g.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h | ||
157 | fips_rsa_x931g.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
158 | fips_rsa_x931g.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h | ||
159 | fips_rsa_x931g.o: ../../include/openssl/opensslconf.h | ||
160 | fips_rsa_x931g.o: ../../include/openssl/opensslv.h | ||
161 | fips_rsa_x931g.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h | ||
162 | fips_rsa_x931g.o: ../../include/openssl/safestack.h | ||
163 | fips_rsa_x931g.o: ../../include/openssl/stack.h | ||
164 | fips_rsa_x931g.o: ../../include/openssl/symhacks.h fips_rsa_x931g.c | ||
165 | fips_rsagtest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
166 | fips_rsagtest.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | ||
167 | fips_rsagtest.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | ||
168 | fips_rsagtest.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | ||
169 | fips_rsagtest.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | ||
170 | fips_rsagtest.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
171 | fips_rsagtest.o: ../../include/openssl/fips.h ../../include/openssl/hmac.h | ||
172 | fips_rsagtest.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | ||
173 | fips_rsagtest.o: ../../include/openssl/objects.h | ||
174 | fips_rsagtest.o: ../../include/openssl/opensslconf.h | ||
175 | fips_rsagtest.o: ../../include/openssl/opensslv.h | ||
176 | fips_rsagtest.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | ||
177 | fips_rsagtest.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | ||
178 | fips_rsagtest.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | ||
179 | fips_rsagtest.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | ||
180 | fips_rsagtest.o: ../../include/openssl/x509_vfy.h | ||
181 | fips_rsagtest.o: ../../include/openssl/x509v3.h ../fips_utl.h fips_rsagtest.c | ||
182 | fips_rsastest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
183 | fips_rsastest.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | ||
184 | fips_rsastest.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | ||
185 | fips_rsastest.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | ||
186 | fips_rsastest.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | ||
187 | fips_rsastest.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
188 | fips_rsastest.o: ../../include/openssl/fips.h ../../include/openssl/hmac.h | ||
189 | fips_rsastest.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | ||
190 | fips_rsastest.o: ../../include/openssl/objects.h | ||
191 | fips_rsastest.o: ../../include/openssl/opensslconf.h | ||
192 | fips_rsastest.o: ../../include/openssl/opensslv.h | ||
193 | fips_rsastest.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | ||
194 | fips_rsastest.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | ||
195 | fips_rsastest.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | ||
196 | fips_rsastest.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | ||
197 | fips_rsastest.o: ../../include/openssl/x509_vfy.h | ||
198 | fips_rsastest.o: ../../include/openssl/x509v3.h ../fips_utl.h fips_rsastest.c | ||
199 | fips_rsavtest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
200 | fips_rsavtest.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | ||
201 | fips_rsavtest.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | ||
202 | fips_rsavtest.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | ||
203 | fips_rsavtest.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | ||
204 | fips_rsavtest.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
205 | fips_rsavtest.o: ../../include/openssl/fips.h ../../include/openssl/hmac.h | ||
206 | fips_rsavtest.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h | ||
207 | fips_rsavtest.o: ../../include/openssl/objects.h | ||
208 | fips_rsavtest.o: ../../include/openssl/opensslconf.h | ||
209 | fips_rsavtest.o: ../../include/openssl/opensslv.h | ||
210 | fips_rsavtest.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | ||
211 | fips_rsavtest.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h | ||
212 | fips_rsavtest.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | ||
213 | fips_rsavtest.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h | ||
214 | fips_rsavtest.o: ../../include/openssl/x509_vfy.h | ||
215 | fips_rsavtest.o: ../../include/openssl/x509v3.h ../fips_utl.h fips_rsavtest.c | ||
diff --git a/src/lib/libssl/src/fips/rsa/fips_rsa_eay.c b/src/lib/libssl/src/fips/rsa/fips_rsa_eay.c index c571e2b1bf..937a14e684 100644 --- a/src/lib/libssl/src/fips/rsa/fips_rsa_eay.c +++ b/src/lib/libssl/src/fips/rsa/fips_rsa_eay.c | |||
@@ -55,25 +55,78 @@ | |||
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-2006 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 | #include <stdio.h> |
60 | #include <openssl/err.h> | ||
61 | #include <openssl/bn.h> | 113 | #include <openssl/bn.h> |
62 | #include <openssl/rsa.h> | 114 | #include <openssl/rsa.h> |
63 | #include <openssl/rand.h> | 115 | #include <openssl/rand.h> |
116 | #include <openssl/err.h> | ||
64 | #include <openssl/fips.h> | 117 | #include <openssl/fips.h> |
65 | 118 | ||
66 | #if !defined(RSA_NULL) && defined(OPENSSL_FIPS) | 119 | #if !defined(RSA_NULL) && defined(OPENSSL_FIPS) |
67 | 120 | ||
68 | static int RSA_eay_public_encrypt(FIPS_RSA_SIZE_T flen, const unsigned char *from, | 121 | static int RSA_eay_public_encrypt(int flen, const unsigned char *from, |
69 | unsigned char *to, RSA *rsa,int padding); | 122 | unsigned char *to, RSA *rsa,int padding); |
70 | static int RSA_eay_private_encrypt(FIPS_RSA_SIZE_T flen, const unsigned char *from, | 123 | static int RSA_eay_private_encrypt(int flen, const unsigned char *from, |
71 | unsigned char *to, RSA *rsa,int padding); | 124 | unsigned char *to, RSA *rsa,int padding); |
72 | static int RSA_eay_public_decrypt(FIPS_RSA_SIZE_T flen, const unsigned char *from, | 125 | static int RSA_eay_public_decrypt(int flen, const unsigned char *from, |
73 | unsigned char *to, RSA *rsa,int padding); | 126 | unsigned char *to, RSA *rsa,int padding); |
74 | static int RSA_eay_private_decrypt(FIPS_RSA_SIZE_T flen, const unsigned char *from, | 127 | static int RSA_eay_private_decrypt(int flen, const unsigned char *from, |
75 | unsigned char *to, RSA *rsa,int padding); | 128 | unsigned char *to, RSA *rsa,int padding); |
76 | static int RSA_eay_mod_exp(BIGNUM *r0, const BIGNUM *i, RSA *rsa); | 129 | static int RSA_eay_mod_exp(BIGNUM *r0, const BIGNUM *i, RSA *rsa, BN_CTX *ctx); |
77 | static int RSA_eay_init(RSA *rsa); | 130 | static int RSA_eay_init(RSA *rsa); |
78 | static int RSA_eay_finish(RSA *rsa); | 131 | static int RSA_eay_finish(RSA *rsa); |
79 | static RSA_METHOD rsa_pkcs1_eay_meth={ | 132 | static RSA_METHOD rsa_pkcs1_eay_meth={ |
@@ -86,10 +139,11 @@ static RSA_METHOD rsa_pkcs1_eay_meth={ | |||
86 | BN_mod_exp_mont, /* XXX probably we should not use Montgomery if e == 3 */ | 139 | BN_mod_exp_mont, /* XXX probably we should not use Montgomery if e == 3 */ |
87 | RSA_eay_init, | 140 | RSA_eay_init, |
88 | RSA_eay_finish, | 141 | RSA_eay_finish, |
89 | 0, /* flags */ | 142 | RSA_FLAG_FIPS_METHOD, /* flags */ |
90 | NULL, | 143 | NULL, |
91 | 0, /* rsa_sign */ | 144 | 0, /* rsa_sign */ |
92 | 0 /* rsa_verify */ | 145 | 0, /* rsa_verify */ |
146 | NULL /* rsa_keygen */ | ||
93 | }; | 147 | }; |
94 | 148 | ||
95 | const RSA_METHOD *RSA_PKCS1_SSLeay(void) | 149 | const RSA_METHOD *RSA_PKCS1_SSLeay(void) |
@@ -97,26 +151,65 @@ const RSA_METHOD *RSA_PKCS1_SSLeay(void) | |||
97 | return(&rsa_pkcs1_eay_meth); | 151 | return(&rsa_pkcs1_eay_meth); |
98 | } | 152 | } |
99 | 153 | ||
100 | static int RSA_eay_public_encrypt(FIPS_RSA_SIZE_T flen, const unsigned char *from, | 154 | /* Usage example; |
155 | * MONT_HELPER(rsa, bn_ctx, p, rsa->flags & RSA_FLAG_CACHE_PRIVATE, goto err); | ||
156 | */ | ||
157 | #define MONT_HELPER(rsa, ctx, m, pre_cond, err_instr) \ | ||
158 | if((pre_cond) && ((rsa)->_method_mod_##m == NULL) && \ | ||
159 | !BN_MONT_CTX_set_locked(&((rsa)->_method_mod_##m), \ | ||
160 | CRYPTO_LOCK_RSA, \ | ||
161 | (rsa)->m, (ctx))) \ | ||
162 | err_instr | ||
163 | |||
164 | static int RSA_eay_public_encrypt(int flen, const unsigned char *from, | ||
101 | unsigned char *to, RSA *rsa, int padding) | 165 | unsigned char *to, RSA *rsa, int padding) |
102 | { | 166 | { |
103 | BIGNUM f,ret; | 167 | BIGNUM *f,*ret; |
104 | int i,j,k,num=0,r= -1; | 168 | int i,j,k,num=0,r= -1; |
105 | unsigned char *buf=NULL; | 169 | unsigned char *buf=NULL; |
106 | BN_CTX *ctx=NULL; | 170 | BN_CTX *ctx=NULL; |
107 | 171 | ||
108 | BN_init(&f); | ||
109 | BN_init(&ret); | ||
110 | |||
111 | if(FIPS_selftest_failed()) | 172 | if(FIPS_selftest_failed()) |
112 | { | 173 | { |
113 | FIPSerr(FIPS_F_RSA_EAY_PUBLIC_ENCRYPT,FIPS_R_FIPS_SELFTEST_FAILED); | 174 | FIPSerr(FIPS_F_RSA_EAY_PUBLIC_ENCRYPT,FIPS_R_FIPS_SELFTEST_FAILED); |
114 | goto err; | 175 | goto err; |
115 | } | 176 | } |
116 | 177 | ||
178 | if (FIPS_mode() && (BN_num_bits(rsa->n) < OPENSSL_RSA_FIPS_MIN_MODULUS_BITS)) | ||
179 | { | ||
180 | RSAerr(RSA_F_RSA_EAY_PUBLIC_ENCRYPT, RSA_R_KEY_SIZE_TOO_SMALL); | ||
181 | return -1; | ||
182 | } | ||
183 | |||
184 | if (BN_num_bits(rsa->n) > OPENSSL_RSA_MAX_MODULUS_BITS) | ||
185 | { | ||
186 | RSAerr(RSA_F_RSA_EAY_PUBLIC_ENCRYPT, RSA_R_MODULUS_TOO_LARGE); | ||
187 | return -1; | ||
188 | } | ||
189 | |||
190 | if (BN_ucmp(rsa->n, rsa->e) <= 0) | ||
191 | { | ||
192 | RSAerr(RSA_F_RSA_EAY_PUBLIC_ENCRYPT, RSA_R_BAD_E_VALUE); | ||
193 | return -1; | ||
194 | } | ||
195 | |||
196 | /* for large moduli, enforce exponent limit */ | ||
197 | if (BN_num_bits(rsa->n) > OPENSSL_RSA_SMALL_MODULUS_BITS) | ||
198 | { | ||
199 | if (BN_num_bits(rsa->e) > OPENSSL_RSA_MAX_PUBEXP_BITS) | ||
200 | { | ||
201 | RSAerr(RSA_F_RSA_EAY_PUBLIC_ENCRYPT, RSA_R_BAD_E_VALUE); | ||
202 | return -1; | ||
203 | } | ||
204 | } | ||
205 | |||
117 | if ((ctx=BN_CTX_new()) == NULL) goto err; | 206 | if ((ctx=BN_CTX_new()) == NULL) goto err; |
207 | BN_CTX_start(ctx); | ||
208 | f = BN_CTX_get(ctx); | ||
209 | ret = BN_CTX_get(ctx); | ||
118 | num=BN_num_bytes(rsa->n); | 210 | num=BN_num_bytes(rsa->n); |
119 | if ((buf=(unsigned char *)OPENSSL_malloc(num)) == NULL) | 211 | buf = OPENSSL_malloc(num); |
212 | if (!f || !ret || !buf) | ||
120 | { | 213 | { |
121 | RSAerr(RSA_F_RSA_EAY_PUBLIC_ENCRYPT,ERR_R_MALLOC_FAILURE); | 214 | RSAerr(RSA_F_RSA_EAY_PUBLIC_ENCRYPT,ERR_R_MALLOC_FAILURE); |
122 | goto err; | 215 | goto err; |
@@ -144,54 +237,34 @@ static int RSA_eay_public_encrypt(FIPS_RSA_SIZE_T flen, const unsigned char *fro | |||
144 | } | 237 | } |
145 | if (i <= 0) goto err; | 238 | if (i <= 0) goto err; |
146 | 239 | ||
147 | if (BN_bin2bn(buf,num,&f) == NULL) goto err; | 240 | if (BN_bin2bn(buf,num,f) == NULL) goto err; |
148 | 241 | ||
149 | if (BN_ucmp(&f, rsa->n) >= 0) | 242 | if (BN_ucmp(f, rsa->n) >= 0) |
150 | { | 243 | { |
151 | /* usually the padding functions would catch this */ | 244 | /* usually the padding functions would catch this */ |
152 | RSAerr(RSA_F_RSA_EAY_PUBLIC_ENCRYPT,RSA_R_DATA_TOO_LARGE_FOR_MODULUS); | 245 | RSAerr(RSA_F_RSA_EAY_PUBLIC_ENCRYPT,RSA_R_DATA_TOO_LARGE_FOR_MODULUS); |
153 | goto err; | 246 | goto err; |
154 | } | 247 | } |
155 | 248 | ||
156 | if ((rsa->_method_mod_n == NULL) && (rsa->flags & RSA_FLAG_CACHE_PUBLIC)) | 249 | MONT_HELPER(rsa, ctx, n, rsa->flags & RSA_FLAG_CACHE_PUBLIC, goto err); |
157 | { | 250 | |
158 | BN_MONT_CTX* bn_mont_ctx; | 251 | if (!rsa->meth->bn_mod_exp(ret,f,rsa->e,rsa->n,ctx, |
159 | if ((bn_mont_ctx=BN_MONT_CTX_new()) == NULL) | ||
160 | goto err; | ||
161 | if (!BN_MONT_CTX_set(bn_mont_ctx,rsa->n,ctx)) | ||
162 | { | ||
163 | BN_MONT_CTX_free(bn_mont_ctx); | ||
164 | goto err; | ||
165 | } | ||
166 | if (rsa->_method_mod_n == NULL) /* other thread may have finished first */ | ||
167 | { | ||
168 | CRYPTO_w_lock(CRYPTO_LOCK_RSA); | ||
169 | if (rsa->_method_mod_n == NULL) | ||
170 | { | ||
171 | rsa->_method_mod_n = bn_mont_ctx; | ||
172 | bn_mont_ctx = NULL; | ||
173 | } | ||
174 | CRYPTO_w_unlock(CRYPTO_LOCK_RSA); | ||
175 | } | ||
176 | if (bn_mont_ctx) | ||
177 | BN_MONT_CTX_free(bn_mont_ctx); | ||
178 | } | ||
179 | |||
180 | if (!rsa->meth->bn_mod_exp(&ret,&f,rsa->e,rsa->n,ctx, | ||
181 | rsa->_method_mod_n)) goto err; | 252 | rsa->_method_mod_n)) goto err; |
182 | 253 | ||
183 | /* put in leading 0 bytes if the number is less than the | 254 | /* put in leading 0 bytes if the number is less than the |
184 | * length of the modulus */ | 255 | * length of the modulus */ |
185 | j=BN_num_bytes(&ret); | 256 | j=BN_num_bytes(ret); |
186 | i=BN_bn2bin(&ret,&(to[num-j])); | 257 | i=BN_bn2bin(ret,&(to[num-j])); |
187 | for (k=0; k<(num-i); k++) | 258 | for (k=0; k<(num-i); k++) |
188 | to[k]=0; | 259 | to[k]=0; |
189 | 260 | ||
190 | r=num; | 261 | r=num; |
191 | err: | 262 | err: |
192 | if (ctx != NULL) BN_CTX_free(ctx); | 263 | if (ctx != NULL) |
193 | BN_clear_free(&f); | 264 | { |
194 | BN_clear_free(&ret); | 265 | BN_CTX_end(ctx); |
266 | BN_CTX_free(ctx); | ||
267 | } | ||
195 | if (buf != NULL) | 268 | if (buf != NULL) |
196 | { | 269 | { |
197 | OPENSSL_cleanse(buf,num); | 270 | OPENSSL_cleanse(buf,num); |
@@ -200,76 +273,127 @@ err: | |||
200 | return(r); | 273 | return(r); |
201 | } | 274 | } |
202 | 275 | ||
203 | static int rsa_eay_blinding(RSA *rsa, BN_CTX *ctx) | 276 | static BN_BLINDING *rsa_get_blinding(RSA *rsa, int *local, BN_CTX *ctx) |
204 | { | 277 | { |
205 | int ret = 1; | 278 | BN_BLINDING *ret; |
206 | CRYPTO_w_lock(CRYPTO_LOCK_RSA); | 279 | int got_write_lock = 0; |
207 | /* Check again inside the lock - the macro's check is racey */ | ||
208 | if(rsa->blinding == NULL) | ||
209 | ret = RSA_blinding_on(rsa, ctx); | ||
210 | CRYPTO_w_unlock(CRYPTO_LOCK_RSA); | ||
211 | return ret; | ||
212 | } | ||
213 | 280 | ||
214 | #define BLINDING_HELPER(rsa, ctx, err_instr) \ | 281 | CRYPTO_r_lock(CRYPTO_LOCK_RSA); |
215 | do { \ | ||
216 | if((!((rsa)->flags & RSA_FLAG_NO_BLINDING)) && \ | ||
217 | ((rsa)->blinding == NULL) && \ | ||
218 | !rsa_eay_blinding(rsa, ctx)) \ | ||
219 | err_instr \ | ||
220 | } while(0) | ||
221 | 282 | ||
222 | static BN_BLINDING *setup_blinding(RSA *rsa, BN_CTX *ctx) | 283 | if (rsa->blinding == NULL) |
223 | { | 284 | { |
224 | BIGNUM *A, *Ai; | 285 | CRYPTO_r_unlock(CRYPTO_LOCK_RSA); |
225 | BN_BLINDING *ret = NULL; | 286 | CRYPTO_w_lock(CRYPTO_LOCK_RSA); |
287 | got_write_lock = 1; | ||
226 | 288 | ||
227 | /* added in OpenSSL 0.9.6j and 0.9.7b */ | 289 | if (rsa->blinding == NULL) |
290 | rsa->blinding = RSA_setup_blinding(rsa, ctx); | ||
291 | } | ||
228 | 292 | ||
229 | /* NB: similar code appears in RSA_blinding_on (rsa_lib.c); | 293 | ret = rsa->blinding; |
230 | * this should be placed in a new function of its own, but for reasons | 294 | if (ret == NULL) |
231 | * of binary compatibility can't */ | 295 | goto err; |
232 | 296 | ||
233 | BN_CTX_start(ctx); | 297 | if (BN_BLINDING_get_thread_id(ret) == CRYPTO_thread_id()) |
234 | A = BN_CTX_get(ctx); | ||
235 | if ((RAND_status() == 0) && rsa->d != NULL && rsa->d->d != NULL) | ||
236 | { | 298 | { |
237 | /* if PRNG is not properly seeded, resort to secret exponent as unpredictable seed */ | 299 | /* rsa->blinding is ours! */ |
238 | RAND_add(rsa->d->d, rsa->d->dmax * sizeof rsa->d->d[0], 0); | 300 | |
239 | if (!BN_pseudo_rand_range(A,rsa->n)) goto err; | 301 | *local = 1; |
240 | } | 302 | } |
241 | else | 303 | else |
242 | { | 304 | { |
243 | if (!BN_rand_range(A,rsa->n)) goto err; | 305 | /* resort to rsa->mt_blinding instead */ |
306 | |||
307 | *local = 0; /* instructs rsa_blinding_convert(), rsa_blinding_invert() | ||
308 | * that the BN_BLINDING is shared, meaning that accesses | ||
309 | * require locks, and that the blinding factor must be | ||
310 | * stored outside the BN_BLINDING | ||
311 | */ | ||
312 | |||
313 | if (rsa->mt_blinding == NULL) | ||
314 | { | ||
315 | if (!got_write_lock) | ||
316 | { | ||
317 | CRYPTO_r_unlock(CRYPTO_LOCK_RSA); | ||
318 | CRYPTO_w_lock(CRYPTO_LOCK_RSA); | ||
319 | got_write_lock = 1; | ||
320 | } | ||
321 | |||
322 | if (rsa->mt_blinding == NULL) | ||
323 | rsa->mt_blinding = RSA_setup_blinding(rsa, ctx); | ||
324 | } | ||
325 | ret = rsa->mt_blinding; | ||
244 | } | 326 | } |
245 | if ((Ai=BN_mod_inverse(NULL,A,rsa->n,ctx)) == NULL) goto err; | ||
246 | 327 | ||
247 | if (!rsa->meth->bn_mod_exp(A,A,rsa->e,rsa->n,ctx,rsa->_method_mod_n)) | 328 | err: |
248 | goto err; | 329 | if (got_write_lock) |
249 | ret = BN_BLINDING_new(A,Ai,rsa->n); | 330 | CRYPTO_w_unlock(CRYPTO_LOCK_RSA); |
250 | BN_free(Ai); | 331 | else |
251 | err: | 332 | CRYPTO_r_unlock(CRYPTO_LOCK_RSA); |
252 | BN_CTX_end(ctx); | ||
253 | return ret; | 333 | return ret; |
254 | } | 334 | } |
335 | |||
336 | static int rsa_blinding_convert(BN_BLINDING *b, int local, BIGNUM *f, | ||
337 | BIGNUM *r, BN_CTX *ctx) | ||
338 | { | ||
339 | if (local) | ||
340 | return BN_BLINDING_convert_ex(f, NULL, b, ctx); | ||
341 | else | ||
342 | { | ||
343 | int ret; | ||
344 | CRYPTO_r_lock(CRYPTO_LOCK_RSA_BLINDING); | ||
345 | ret = BN_BLINDING_convert_ex(f, r, b, ctx); | ||
346 | CRYPTO_r_unlock(CRYPTO_LOCK_RSA_BLINDING); | ||
347 | return ret; | ||
348 | } | ||
349 | } | ||
350 | |||
351 | static int rsa_blinding_invert(BN_BLINDING *b, int local, BIGNUM *f, | ||
352 | BIGNUM *r, BN_CTX *ctx) | ||
353 | { | ||
354 | if (local) | ||
355 | return BN_BLINDING_invert_ex(f, NULL, b, ctx); | ||
356 | else | ||
357 | { | ||
358 | int ret; | ||
359 | CRYPTO_w_lock(CRYPTO_LOCK_RSA_BLINDING); | ||
360 | ret = BN_BLINDING_invert_ex(f, r, b, ctx); | ||
361 | CRYPTO_w_unlock(CRYPTO_LOCK_RSA_BLINDING); | ||
362 | return ret; | ||
363 | } | ||
364 | } | ||
255 | 365 | ||
256 | /* signing */ | 366 | /* signing */ |
257 | static int RSA_eay_private_encrypt(FIPS_RSA_SIZE_T flen, const unsigned char *from, | 367 | static int RSA_eay_private_encrypt(int flen, const unsigned char *from, |
258 | unsigned char *to, RSA *rsa, int padding) | 368 | unsigned char *to, RSA *rsa, int padding) |
259 | { | 369 | { |
260 | BIGNUM f,ret; | 370 | BIGNUM *f, *ret, *br, *res; |
261 | int i,j,k,num=0,r= -1; | 371 | int i,j,k,num=0,r= -1; |
262 | unsigned char *buf=NULL; | 372 | unsigned char *buf=NULL; |
263 | BN_CTX *ctx=NULL; | 373 | BN_CTX *ctx=NULL; |
264 | int local_blinding = 0; | 374 | int local_blinding = 0; |
265 | BN_BLINDING *blinding = NULL; | 375 | BN_BLINDING *blinding = NULL; |
266 | 376 | ||
267 | BN_init(&f); | 377 | if(FIPS_selftest_failed()) |
268 | BN_init(&ret); | 378 | { |
379 | FIPSerr(FIPS_F_RSA_EAY_PRIVATE_ENCRYPT,FIPS_R_FIPS_SELFTEST_FAILED); | ||
380 | goto err; | ||
381 | } | ||
382 | |||
383 | if (FIPS_mode() && (BN_num_bits(rsa->n) < OPENSSL_RSA_FIPS_MIN_MODULUS_BITS)) | ||
384 | { | ||
385 | RSAerr(RSA_F_RSA_EAY_PRIVATE_ENCRYPT, RSA_R_KEY_SIZE_TOO_SMALL); | ||
386 | return -1; | ||
387 | } | ||
269 | 388 | ||
270 | if ((ctx=BN_CTX_new()) == NULL) goto err; | 389 | if ((ctx=BN_CTX_new()) == NULL) goto err; |
271 | num=BN_num_bytes(rsa->n); | 390 | BN_CTX_start(ctx); |
272 | if ((buf=(unsigned char *)OPENSSL_malloc(num)) == NULL) | 391 | f = BN_CTX_get(ctx); |
392 | br = BN_CTX_get(ctx); | ||
393 | ret = BN_CTX_get(ctx); | ||
394 | num = BN_num_bytes(rsa->n); | ||
395 | buf = OPENSSL_malloc(num); | ||
396 | if(!f || !ret || !buf) | ||
273 | { | 397 | { |
274 | RSAerr(RSA_F_RSA_EAY_PRIVATE_ENCRYPT,ERR_R_MALLOC_FAILURE); | 398 | RSAerr(RSA_F_RSA_EAY_PRIVATE_ENCRYPT,ERR_R_MALLOC_FAILURE); |
275 | goto err; | 399 | goto err; |
@@ -280,6 +404,9 @@ static int RSA_eay_private_encrypt(FIPS_RSA_SIZE_T flen, const unsigned char *fr | |||
280 | case RSA_PKCS1_PADDING: | 404 | case RSA_PKCS1_PADDING: |
281 | i=RSA_padding_add_PKCS1_type_1(buf,num,from,flen); | 405 | i=RSA_padding_add_PKCS1_type_1(buf,num,from,flen); |
282 | break; | 406 | break; |
407 | case RSA_X931_PADDING: | ||
408 | i=RSA_padding_add_X931(buf,num,from,flen); | ||
409 | break; | ||
283 | case RSA_NO_PADDING: | 410 | case RSA_NO_PADDING: |
284 | i=RSA_padding_add_none(buf,num,from,flen); | 411 | i=RSA_padding_add_none(buf,num,from,flen); |
285 | break; | 412 | break; |
@@ -290,26 +417,18 @@ static int RSA_eay_private_encrypt(FIPS_RSA_SIZE_T flen, const unsigned char *fr | |||
290 | } | 417 | } |
291 | if (i <= 0) goto err; | 418 | if (i <= 0) goto err; |
292 | 419 | ||
293 | if (BN_bin2bn(buf,num,&f) == NULL) goto err; | 420 | if (BN_bin2bn(buf,num,f) == NULL) goto err; |
294 | 421 | ||
295 | if (BN_ucmp(&f, rsa->n) >= 0) | 422 | if (BN_ucmp(f, rsa->n) >= 0) |
296 | { | 423 | { |
297 | /* usually the padding functions would catch this */ | 424 | /* usually the padding functions would catch this */ |
298 | RSAerr(RSA_F_RSA_EAY_PRIVATE_ENCRYPT,RSA_R_DATA_TOO_LARGE_FOR_MODULUS); | 425 | RSAerr(RSA_F_RSA_EAY_PRIVATE_ENCRYPT,RSA_R_DATA_TOO_LARGE_FOR_MODULUS); |
299 | goto err; | 426 | goto err; |
300 | } | 427 | } |
301 | 428 | ||
302 | BLINDING_HELPER(rsa, ctx, goto err;); | ||
303 | blinding = rsa->blinding; | ||
304 | |||
305 | /* Now unless blinding is disabled, 'blinding' is non-NULL. | ||
306 | * But the BN_BLINDING object may be owned by some other thread | ||
307 | * (we don't want to keep it constant and we don't want to use | ||
308 | * lots of locking to avoid race conditions, so only a single | ||
309 | * thread can use it; other threads have to use local blinding | ||
310 | * factors) */ | ||
311 | if (!(rsa->flags & RSA_FLAG_NO_BLINDING)) | 429 | if (!(rsa->flags & RSA_FLAG_NO_BLINDING)) |
312 | { | 430 | { |
431 | blinding = rsa_get_blinding(rsa, &local_blinding, ctx); | ||
313 | if (blinding == NULL) | 432 | if (blinding == NULL) |
314 | { | 433 | { |
315 | RSAerr(RSA_F_RSA_EAY_PRIVATE_ENCRYPT, ERR_R_INTERNAL_ERROR); | 434 | RSAerr(RSA_F_RSA_EAY_PRIVATE_ENCRYPT, ERR_R_INTERNAL_ERROR); |
@@ -318,20 +437,8 @@ static int RSA_eay_private_encrypt(FIPS_RSA_SIZE_T flen, const unsigned char *fr | |||
318 | } | 437 | } |
319 | 438 | ||
320 | if (blinding != NULL) | 439 | if (blinding != NULL) |
321 | { | 440 | if (!rsa_blinding_convert(blinding, local_blinding, f, br, ctx)) |
322 | if (blinding->thread_id != CRYPTO_thread_id()) | 441 | goto err; |
323 | { | ||
324 | /* we need a local one-time blinding factor */ | ||
325 | |||
326 | blinding = setup_blinding(rsa, ctx); | ||
327 | if (blinding == NULL) | ||
328 | goto err; | ||
329 | local_blinding = 1; | ||
330 | } | ||
331 | } | ||
332 | |||
333 | if (blinding) | ||
334 | if (!BN_BLINDING_convert(&f, blinding, ctx)) goto err; | ||
335 | 442 | ||
336 | if ( (rsa->flags & RSA_FLAG_EXT_PKEY) || | 443 | if ( (rsa->flags & RSA_FLAG_EXT_PKEY) || |
337 | ((rsa->p != NULL) && | 444 | ((rsa->p != NULL) && |
@@ -339,29 +446,58 @@ static int RSA_eay_private_encrypt(FIPS_RSA_SIZE_T flen, const unsigned char *fr | |||
339 | (rsa->dmp1 != NULL) && | 446 | (rsa->dmp1 != NULL) && |
340 | (rsa->dmq1 != NULL) && | 447 | (rsa->dmq1 != NULL) && |
341 | (rsa->iqmp != NULL)) ) | 448 | (rsa->iqmp != NULL)) ) |
342 | { if (!rsa->meth->rsa_mod_exp(&ret,&f,rsa)) goto err; } | 449 | { |
450 | if (!rsa->meth->rsa_mod_exp(ret, f, rsa, ctx)) goto err; | ||
451 | } | ||
343 | else | 452 | else |
344 | { | 453 | { |
345 | if (!rsa->meth->bn_mod_exp(&ret,&f,rsa->d,rsa->n,ctx,NULL)) goto err; | 454 | BIGNUM local_d; |
455 | BIGNUM *d = NULL; | ||
456 | |||
457 | if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME)) | ||
458 | { | ||
459 | BN_init(&local_d); | ||
460 | d = &local_d; | ||
461 | BN_with_flags(d, rsa->d, BN_FLG_CONSTTIME); | ||
462 | } | ||
463 | else | ||
464 | d = rsa->d; | ||
465 | |||
466 | MONT_HELPER(rsa, ctx, n, rsa->flags & RSA_FLAG_CACHE_PUBLIC, goto err); | ||
467 | |||
468 | if (!rsa->meth->bn_mod_exp(ret,f,d,rsa->n,ctx, | ||
469 | rsa->_method_mod_n)) goto err; | ||
346 | } | 470 | } |
347 | 471 | ||
348 | if (blinding) | 472 | if (blinding) |
349 | if (!BN_BLINDING_invert(&ret, blinding, ctx)) goto err; | 473 | if (!rsa_blinding_invert(blinding, local_blinding, ret, br, ctx)) |
474 | goto err; | ||
475 | |||
476 | if (padding == RSA_X931_PADDING) | ||
477 | { | ||
478 | BN_sub(f, rsa->n, ret); | ||
479 | if (BN_cmp(ret, f)) | ||
480 | res = f; | ||
481 | else | ||
482 | res = ret; | ||
483 | } | ||
484 | else | ||
485 | res = ret; | ||
350 | 486 | ||
351 | /* put in leading 0 bytes if the number is less than the | 487 | /* put in leading 0 bytes if the number is less than the |
352 | * length of the modulus */ | 488 | * length of the modulus */ |
353 | j=BN_num_bytes(&ret); | 489 | j=BN_num_bytes(res); |
354 | i=BN_bn2bin(&ret,&(to[num-j])); | 490 | i=BN_bn2bin(res,&(to[num-j])); |
355 | for (k=0; k<(num-i); k++) | 491 | for (k=0; k<(num-i); k++) |
356 | to[k]=0; | 492 | to[k]=0; |
357 | 493 | ||
358 | r=num; | 494 | r=num; |
359 | err: | 495 | err: |
360 | if (ctx != NULL) BN_CTX_free(ctx); | 496 | if (ctx != NULL) |
361 | BN_clear_free(&ret); | 497 | { |
362 | BN_clear_free(&f); | 498 | BN_CTX_end(ctx); |
363 | if (local_blinding) | 499 | BN_CTX_free(ctx); |
364 | BN_BLINDING_free(blinding); | 500 | } |
365 | if (buf != NULL) | 501 | if (buf != NULL) |
366 | { | 502 | { |
367 | OPENSSL_cleanse(buf,num); | 503 | OPENSSL_cleanse(buf,num); |
@@ -370,10 +506,10 @@ err: | |||
370 | return(r); | 506 | return(r); |
371 | } | 507 | } |
372 | 508 | ||
373 | static int RSA_eay_private_decrypt(FIPS_RSA_SIZE_T flen, const unsigned char *from, | 509 | static int RSA_eay_private_decrypt(int flen, const unsigned char *from, |
374 | unsigned char *to, RSA *rsa, int padding) | 510 | unsigned char *to, RSA *rsa, int padding) |
375 | { | 511 | { |
376 | BIGNUM f,ret; | 512 | BIGNUM *f, *ret, *br; |
377 | int j,num=0,r= -1; | 513 | int j,num=0,r= -1; |
378 | unsigned char *p; | 514 | unsigned char *p; |
379 | unsigned char *buf=NULL; | 515 | unsigned char *buf=NULL; |
@@ -381,14 +517,26 @@ static int RSA_eay_private_decrypt(FIPS_RSA_SIZE_T flen, const unsigned char *fr | |||
381 | int local_blinding = 0; | 517 | int local_blinding = 0; |
382 | BN_BLINDING *blinding = NULL; | 518 | BN_BLINDING *blinding = NULL; |
383 | 519 | ||
384 | BN_init(&f); | 520 | if(FIPS_selftest_failed()) |
385 | BN_init(&ret); | 521 | { |
386 | ctx=BN_CTX_new(); | 522 | FIPSerr(FIPS_F_RSA_EAY_PRIVATE_DECRYPT,FIPS_R_FIPS_SELFTEST_FAILED); |
387 | if (ctx == NULL) goto err; | 523 | goto err; |
524 | } | ||
388 | 525 | ||
389 | num=BN_num_bytes(rsa->n); | 526 | if (FIPS_mode() && (BN_num_bits(rsa->n) < OPENSSL_RSA_FIPS_MIN_MODULUS_BITS)) |
527 | { | ||
528 | RSAerr(RSA_F_RSA_EAY_PRIVATE_DECRYPT, RSA_R_KEY_SIZE_TOO_SMALL); | ||
529 | return -1; | ||
530 | } | ||
390 | 531 | ||
391 | if ((buf=(unsigned char *)OPENSSL_malloc(num)) == NULL) | 532 | if((ctx = BN_CTX_new()) == NULL) goto err; |
533 | BN_CTX_start(ctx); | ||
534 | f = BN_CTX_get(ctx); | ||
535 | br = BN_CTX_get(ctx); | ||
536 | ret = BN_CTX_get(ctx); | ||
537 | num = BN_num_bytes(rsa->n); | ||
538 | buf = OPENSSL_malloc(num); | ||
539 | if(!f || !ret || !buf) | ||
392 | { | 540 | { |
393 | RSAerr(RSA_F_RSA_EAY_PRIVATE_DECRYPT,ERR_R_MALLOC_FAILURE); | 541 | RSAerr(RSA_F_RSA_EAY_PRIVATE_DECRYPT,ERR_R_MALLOC_FAILURE); |
394 | goto err; | 542 | goto err; |
@@ -403,25 +551,17 @@ static int RSA_eay_private_decrypt(FIPS_RSA_SIZE_T flen, const unsigned char *fr | |||
403 | } | 551 | } |
404 | 552 | ||
405 | /* make data into a big number */ | 553 | /* make data into a big number */ |
406 | if (BN_bin2bn(from,(int)flen,&f) == NULL) goto err; | 554 | if (BN_bin2bn(from,(int)flen,f) == NULL) goto err; |
407 | 555 | ||
408 | if (BN_ucmp(&f, rsa->n) >= 0) | 556 | if (BN_ucmp(f, rsa->n) >= 0) |
409 | { | 557 | { |
410 | RSAerr(RSA_F_RSA_EAY_PRIVATE_DECRYPT,RSA_R_DATA_TOO_LARGE_FOR_MODULUS); | 558 | RSAerr(RSA_F_RSA_EAY_PRIVATE_DECRYPT,RSA_R_DATA_TOO_LARGE_FOR_MODULUS); |
411 | goto err; | 559 | goto err; |
412 | } | 560 | } |
413 | 561 | ||
414 | BLINDING_HELPER(rsa, ctx, goto err;); | ||
415 | blinding = rsa->blinding; | ||
416 | |||
417 | /* Now unless blinding is disabled, 'blinding' is non-NULL. | ||
418 | * But the BN_BLINDING object may be owned by some other thread | ||
419 | * (we don't want to keep it constant and we don't want to use | ||
420 | * lots of locking to avoid race conditions, so only a single | ||
421 | * thread can use it; other threads have to use local blinding | ||
422 | * factors) */ | ||
423 | if (!(rsa->flags & RSA_FLAG_NO_BLINDING)) | 562 | if (!(rsa->flags & RSA_FLAG_NO_BLINDING)) |
424 | { | 563 | { |
564 | blinding = rsa_get_blinding(rsa, &local_blinding, ctx); | ||
425 | if (blinding == NULL) | 565 | if (blinding == NULL) |
426 | { | 566 | { |
427 | RSAerr(RSA_F_RSA_EAY_PRIVATE_DECRYPT, ERR_R_INTERNAL_ERROR); | 567 | RSAerr(RSA_F_RSA_EAY_PRIVATE_DECRYPT, ERR_R_INTERNAL_ERROR); |
@@ -430,20 +570,8 @@ static int RSA_eay_private_decrypt(FIPS_RSA_SIZE_T flen, const unsigned char *fr | |||
430 | } | 570 | } |
431 | 571 | ||
432 | if (blinding != NULL) | 572 | if (blinding != NULL) |
433 | { | 573 | if (!rsa_blinding_convert(blinding, local_blinding, f, br, ctx)) |
434 | if (blinding->thread_id != CRYPTO_thread_id()) | 574 | goto err; |
435 | { | ||
436 | /* we need a local one-time blinding factor */ | ||
437 | |||
438 | blinding = setup_blinding(rsa, ctx); | ||
439 | if (blinding == NULL) | ||
440 | goto err; | ||
441 | local_blinding = 1; | ||
442 | } | ||
443 | } | ||
444 | |||
445 | if (blinding) | ||
446 | if (!BN_BLINDING_convert(&f, blinding, ctx)) goto err; | ||
447 | 575 | ||
448 | /* do the decrypt */ | 576 | /* do the decrypt */ |
449 | if ( (rsa->flags & RSA_FLAG_EXT_PKEY) || | 577 | if ( (rsa->flags & RSA_FLAG_EXT_PKEY) || |
@@ -452,18 +580,34 @@ static int RSA_eay_private_decrypt(FIPS_RSA_SIZE_T flen, const unsigned char *fr | |||
452 | (rsa->dmp1 != NULL) && | 580 | (rsa->dmp1 != NULL) && |
453 | (rsa->dmq1 != NULL) && | 581 | (rsa->dmq1 != NULL) && |
454 | (rsa->iqmp != NULL)) ) | 582 | (rsa->iqmp != NULL)) ) |
455 | { if (!rsa->meth->rsa_mod_exp(&ret,&f,rsa)) goto err; } | 583 | { |
584 | if (!rsa->meth->rsa_mod_exp(ret, f, rsa, ctx)) goto err; | ||
585 | } | ||
456 | else | 586 | else |
457 | { | 587 | { |
458 | if (!rsa->meth->bn_mod_exp(&ret,&f,rsa->d,rsa->n,ctx,NULL)) | 588 | BIGNUM local_d; |
459 | goto err; | 589 | BIGNUM *d = NULL; |
590 | |||
591 | if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME)) | ||
592 | { | ||
593 | d = &local_d; | ||
594 | BN_with_flags(d, rsa->d, BN_FLG_CONSTTIME); | ||
595 | } | ||
596 | else | ||
597 | d = rsa->d; | ||
598 | |||
599 | MONT_HELPER(rsa, ctx, n, rsa->flags & RSA_FLAG_CACHE_PUBLIC, goto err); | ||
600 | if (!rsa->meth->bn_mod_exp(ret,f,d,rsa->n,ctx, | ||
601 | rsa->_method_mod_n)) | ||
602 | goto err; | ||
460 | } | 603 | } |
461 | 604 | ||
462 | if (blinding) | 605 | if (blinding) |
463 | if (!BN_BLINDING_invert(&ret, blinding, ctx)) goto err; | 606 | if (!rsa_blinding_invert(blinding, local_blinding, ret, br, ctx)) |
607 | goto err; | ||
464 | 608 | ||
465 | p=buf; | 609 | p=buf; |
466 | j=BN_bn2bin(&ret,p); /* j is only used with no-padding mode */ | 610 | j=BN_bn2bin(ret,p); /* j is only used with no-padding mode */ |
467 | 611 | ||
468 | switch (padding) | 612 | switch (padding) |
469 | { | 613 | { |
@@ -489,11 +633,11 @@ static int RSA_eay_private_decrypt(FIPS_RSA_SIZE_T flen, const unsigned char *fr | |||
489 | RSAerr(RSA_F_RSA_EAY_PRIVATE_DECRYPT,RSA_R_PADDING_CHECK_FAILED); | 633 | RSAerr(RSA_F_RSA_EAY_PRIVATE_DECRYPT,RSA_R_PADDING_CHECK_FAILED); |
490 | 634 | ||
491 | err: | 635 | err: |
492 | if (ctx != NULL) BN_CTX_free(ctx); | 636 | if (ctx != NULL) |
493 | BN_clear_free(&f); | 637 | { |
494 | BN_clear_free(&ret); | 638 | BN_CTX_end(ctx); |
495 | if (local_blinding) | 639 | BN_CTX_free(ctx); |
496 | BN_BLINDING_free(blinding); | 640 | } |
497 | if (buf != NULL) | 641 | if (buf != NULL) |
498 | { | 642 | { |
499 | OPENSSL_cleanse(buf,num); | 643 | OPENSSL_cleanse(buf,num); |
@@ -503,23 +647,56 @@ err: | |||
503 | } | 647 | } |
504 | 648 | ||
505 | /* signature verification */ | 649 | /* signature verification */ |
506 | static int RSA_eay_public_decrypt(FIPS_RSA_SIZE_T flen, const unsigned char *from, | 650 | static int RSA_eay_public_decrypt(int flen, const unsigned char *from, |
507 | unsigned char *to, RSA *rsa, int padding) | 651 | unsigned char *to, RSA *rsa, int padding) |
508 | { | 652 | { |
509 | BIGNUM f,ret; | 653 | BIGNUM *f,*ret; |
510 | int i,num=0,r= -1; | 654 | int i,num=0,r= -1; |
511 | unsigned char *p; | 655 | unsigned char *p; |
512 | unsigned char *buf=NULL; | 656 | unsigned char *buf=NULL; |
513 | BN_CTX *ctx=NULL; | 657 | BN_CTX *ctx=NULL; |
514 | 658 | ||
515 | BN_init(&f); | 659 | if(FIPS_selftest_failed()) |
516 | BN_init(&ret); | 660 | { |
517 | ctx=BN_CTX_new(); | 661 | FIPSerr(FIPS_F_RSA_EAY_PUBLIC_DECRYPT,FIPS_R_FIPS_SELFTEST_FAILED); |
518 | if (ctx == NULL) goto err; | 662 | goto err; |
663 | } | ||
664 | |||
665 | if (FIPS_mode() && (BN_num_bits(rsa->n) < OPENSSL_RSA_FIPS_MIN_MODULUS_BITS)) | ||
666 | { | ||
667 | RSAerr(RSA_F_RSA_EAY_PUBLIC_DECRYPT, RSA_R_KEY_SIZE_TOO_SMALL); | ||
668 | return -1; | ||
669 | } | ||
670 | |||
671 | if (BN_num_bits(rsa->n) > OPENSSL_RSA_MAX_MODULUS_BITS) | ||
672 | { | ||
673 | RSAerr(RSA_F_RSA_EAY_PUBLIC_DECRYPT, RSA_R_MODULUS_TOO_LARGE); | ||
674 | return -1; | ||
675 | } | ||
676 | |||
677 | if (BN_ucmp(rsa->n, rsa->e) <= 0) | ||
678 | { | ||
679 | RSAerr(RSA_F_RSA_EAY_PUBLIC_DECRYPT, RSA_R_BAD_E_VALUE); | ||
680 | return -1; | ||
681 | } | ||
519 | 682 | ||
683 | /* for large moduli, enforce exponent limit */ | ||
684 | if (BN_num_bits(rsa->n) > OPENSSL_RSA_SMALL_MODULUS_BITS) | ||
685 | { | ||
686 | if (BN_num_bits(rsa->e) > OPENSSL_RSA_MAX_PUBEXP_BITS) | ||
687 | { | ||
688 | RSAerr(RSA_F_RSA_EAY_PUBLIC_DECRYPT, RSA_R_BAD_E_VALUE); | ||
689 | return -1; | ||
690 | } | ||
691 | } | ||
692 | |||
693 | if((ctx = BN_CTX_new()) == NULL) goto err; | ||
694 | BN_CTX_start(ctx); | ||
695 | f = BN_CTX_get(ctx); | ||
696 | ret = BN_CTX_get(ctx); | ||
520 | num=BN_num_bytes(rsa->n); | 697 | num=BN_num_bytes(rsa->n); |
521 | buf=(unsigned char *)OPENSSL_malloc(num); | 698 | buf = OPENSSL_malloc(num); |
522 | if (buf == NULL) | 699 | if(!f || !ret || !buf) |
523 | { | 700 | { |
524 | RSAerr(RSA_F_RSA_EAY_PUBLIC_DECRYPT,ERR_R_MALLOC_FAILURE); | 701 | RSAerr(RSA_F_RSA_EAY_PUBLIC_DECRYPT,ERR_R_MALLOC_FAILURE); |
525 | goto err; | 702 | goto err; |
@@ -533,50 +710,33 @@ static int RSA_eay_public_decrypt(FIPS_RSA_SIZE_T flen, const unsigned char *fro | |||
533 | goto err; | 710 | goto err; |
534 | } | 711 | } |
535 | 712 | ||
536 | if (BN_bin2bn(from,flen,&f) == NULL) goto err; | 713 | if (BN_bin2bn(from,flen,f) == NULL) goto err; |
537 | 714 | ||
538 | if (BN_ucmp(&f, rsa->n) >= 0) | 715 | if (BN_ucmp(f, rsa->n) >= 0) |
539 | { | 716 | { |
540 | RSAerr(RSA_F_RSA_EAY_PUBLIC_DECRYPT,RSA_R_DATA_TOO_LARGE_FOR_MODULUS); | 717 | RSAerr(RSA_F_RSA_EAY_PUBLIC_DECRYPT,RSA_R_DATA_TOO_LARGE_FOR_MODULUS); |
541 | goto err; | 718 | goto err; |
542 | } | 719 | } |
543 | 720 | ||
544 | /* do the decrypt */ | 721 | MONT_HELPER(rsa, ctx, n, rsa->flags & RSA_FLAG_CACHE_PUBLIC, goto err); |
545 | if ((rsa->_method_mod_n == NULL) && (rsa->flags & RSA_FLAG_CACHE_PUBLIC)) | 722 | |
546 | { | 723 | if (!rsa->meth->bn_mod_exp(ret,f,rsa->e,rsa->n,ctx, |
547 | BN_MONT_CTX* bn_mont_ctx; | ||
548 | if ((bn_mont_ctx=BN_MONT_CTX_new()) == NULL) | ||
549 | goto err; | ||
550 | if (!BN_MONT_CTX_set(bn_mont_ctx,rsa->n,ctx)) | ||
551 | { | ||
552 | BN_MONT_CTX_free(bn_mont_ctx); | ||
553 | goto err; | ||
554 | } | ||
555 | if (rsa->_method_mod_n == NULL) /* other thread may have finished first */ | ||
556 | { | ||
557 | CRYPTO_w_lock(CRYPTO_LOCK_RSA); | ||
558 | if (rsa->_method_mod_n == NULL) | ||
559 | { | ||
560 | rsa->_method_mod_n = bn_mont_ctx; | ||
561 | bn_mont_ctx = NULL; | ||
562 | } | ||
563 | CRYPTO_w_unlock(CRYPTO_LOCK_RSA); | ||
564 | } | ||
565 | if (bn_mont_ctx) | ||
566 | BN_MONT_CTX_free(bn_mont_ctx); | ||
567 | } | ||
568 | |||
569 | if (!rsa->meth->bn_mod_exp(&ret,&f,rsa->e,rsa->n,ctx, | ||
570 | rsa->_method_mod_n)) goto err; | 724 | rsa->_method_mod_n)) goto err; |
571 | 725 | ||
726 | if ((padding == RSA_X931_PADDING) && ((ret->d[0] & 0xf) != 12)) | ||
727 | BN_sub(ret, rsa->n, ret); | ||
728 | |||
572 | p=buf; | 729 | p=buf; |
573 | i=BN_bn2bin(&ret,p); | 730 | i=BN_bn2bin(ret,p); |
574 | 731 | ||
575 | switch (padding) | 732 | switch (padding) |
576 | { | 733 | { |
577 | case RSA_PKCS1_PADDING: | 734 | case RSA_PKCS1_PADDING: |
578 | r=RSA_padding_check_PKCS1_type_1(to,num,buf,i,num); | 735 | r=RSA_padding_check_PKCS1_type_1(to,num,buf,i,num); |
579 | break; | 736 | break; |
737 | case RSA_X931_PADDING: | ||
738 | r=RSA_padding_check_X931(to,num,buf,i,num); | ||
739 | break; | ||
580 | case RSA_NO_PADDING: | 740 | case RSA_NO_PADDING: |
581 | r=RSA_padding_check_none(to,num,buf,i,num); | 741 | r=RSA_padding_check_none(to,num,buf,i,num); |
582 | break; | 742 | break; |
@@ -588,9 +748,11 @@ static int RSA_eay_public_decrypt(FIPS_RSA_SIZE_T flen, const unsigned char *fro | |||
588 | RSAerr(RSA_F_RSA_EAY_PUBLIC_DECRYPT,RSA_R_PADDING_CHECK_FAILED); | 748 | RSAerr(RSA_F_RSA_EAY_PUBLIC_DECRYPT,RSA_R_PADDING_CHECK_FAILED); |
589 | 749 | ||
590 | err: | 750 | err: |
591 | if (ctx != NULL) BN_CTX_free(ctx); | 751 | if (ctx != NULL) |
592 | BN_clear_free(&f); | 752 | { |
593 | BN_clear_free(&ret); | 753 | BN_CTX_end(ctx); |
754 | BN_CTX_free(ctx); | ||
755 | } | ||
594 | if (buf != NULL) | 756 | if (buf != NULL) |
595 | { | 757 | { |
596 | OPENSSL_cleanse(buf,num); | 758 | OPENSSL_cleanse(buf,num); |
@@ -599,84 +761,109 @@ err: | |||
599 | return(r); | 761 | return(r); |
600 | } | 762 | } |
601 | 763 | ||
602 | static int RSA_eay_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa) | 764 | static int RSA_eay_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx) |
603 | { | 765 | { |
604 | BIGNUM r1,m1,vrfy; | 766 | BIGNUM *r1,*m1,*vrfy; |
767 | BIGNUM local_dmp1,local_dmq1,local_c,local_r1; | ||
768 | BIGNUM *dmp1,*dmq1,*c,*pr1; | ||
769 | int bn_flags; | ||
605 | int ret=0; | 770 | int ret=0; |
606 | BN_CTX *ctx; | ||
607 | 771 | ||
608 | BN_init(&m1); | 772 | BN_CTX_start(ctx); |
609 | BN_init(&r1); | 773 | r1 = BN_CTX_get(ctx); |
610 | BN_init(&vrfy); | 774 | m1 = BN_CTX_get(ctx); |
611 | if ((ctx=BN_CTX_new()) == NULL) goto err; | 775 | vrfy = BN_CTX_get(ctx); |
776 | |||
777 | /* Make sure mod_inverse in montgomerey intialization use correct | ||
778 | * BN_FLG_CONSTTIME flag. | ||
779 | */ | ||
780 | bn_flags = rsa->p->flags; | ||
781 | if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME)) | ||
782 | { | ||
783 | rsa->p->flags |= BN_FLG_CONSTTIME; | ||
784 | } | ||
785 | MONT_HELPER(rsa, ctx, p, rsa->flags & RSA_FLAG_CACHE_PRIVATE, goto err); | ||
786 | /* We restore bn_flags back */ | ||
787 | rsa->p->flags = bn_flags; | ||
612 | 788 | ||
613 | if (rsa->flags & RSA_FLAG_CACHE_PRIVATE) | 789 | /* Make sure mod_inverse in montgomerey intialization use correct |
790 | * BN_FLG_CONSTTIME flag. | ||
791 | */ | ||
792 | bn_flags = rsa->q->flags; | ||
793 | if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME)) | ||
614 | { | 794 | { |
615 | if (rsa->_method_mod_p == NULL) | 795 | rsa->q->flags |= BN_FLG_CONSTTIME; |
616 | { | 796 | } |
617 | BN_MONT_CTX* bn_mont_ctx; | 797 | MONT_HELPER(rsa, ctx, q, rsa->flags & RSA_FLAG_CACHE_PRIVATE, goto err); |
618 | if ((bn_mont_ctx=BN_MONT_CTX_new()) == NULL) | 798 | /* We restore bn_flags back */ |
619 | goto err; | 799 | rsa->q->flags = bn_flags; |
620 | if (!BN_MONT_CTX_set(bn_mont_ctx,rsa->p,ctx)) | ||
621 | { | ||
622 | BN_MONT_CTX_free(bn_mont_ctx); | ||
623 | goto err; | ||
624 | } | ||
625 | if (rsa->_method_mod_p == NULL) /* other thread may have finished first */ | ||
626 | { | ||
627 | CRYPTO_w_lock(CRYPTO_LOCK_RSA); | ||
628 | if (rsa->_method_mod_p == NULL) | ||
629 | { | ||
630 | rsa->_method_mod_p = bn_mont_ctx; | ||
631 | bn_mont_ctx = NULL; | ||
632 | } | ||
633 | CRYPTO_w_unlock(CRYPTO_LOCK_RSA); | ||
634 | } | ||
635 | if (bn_mont_ctx) | ||
636 | BN_MONT_CTX_free(bn_mont_ctx); | ||
637 | } | ||
638 | 800 | ||
639 | if (rsa->_method_mod_q == NULL) | 801 | MONT_HELPER(rsa, ctx, n, rsa->flags & RSA_FLAG_CACHE_PUBLIC, goto err); |
640 | { | 802 | |
641 | BN_MONT_CTX* bn_mont_ctx; | 803 | /* compute I mod q */ |
642 | if ((bn_mont_ctx=BN_MONT_CTX_new()) == NULL) | 804 | if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME)) |
643 | goto err; | 805 | { |
644 | if (!BN_MONT_CTX_set(bn_mont_ctx,rsa->q,ctx)) | 806 | c = &local_c; |
645 | { | 807 | BN_with_flags(c, I, BN_FLG_CONSTTIME); |
646 | BN_MONT_CTX_free(bn_mont_ctx); | 808 | if (!BN_mod(r1,c,rsa->q,ctx)) goto err; |
647 | goto err; | ||
648 | } | ||
649 | if (rsa->_method_mod_q == NULL) /* other thread may have finished first */ | ||
650 | { | ||
651 | CRYPTO_w_lock(CRYPTO_LOCK_RSA); | ||
652 | if (rsa->_method_mod_q == NULL) | ||
653 | { | ||
654 | rsa->_method_mod_q = bn_mont_ctx; | ||
655 | bn_mont_ctx = NULL; | ||
656 | } | ||
657 | CRYPTO_w_unlock(CRYPTO_LOCK_RSA); | ||
658 | } | ||
659 | if (bn_mont_ctx) | ||
660 | BN_MONT_CTX_free(bn_mont_ctx); | ||
661 | } | ||
662 | } | 809 | } |
663 | 810 | else | |
664 | if (!BN_mod(&r1,I,rsa->q,ctx)) goto err; | 811 | { |
665 | if (!rsa->meth->bn_mod_exp(&m1,&r1,rsa->dmq1,rsa->q,ctx, | 812 | if (!BN_mod(r1,I,rsa->q,ctx)) goto err; |
813 | } | ||
814 | |||
815 | /* compute r1^dmq1 mod q */ | ||
816 | if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME)) | ||
817 | { | ||
818 | dmq1 = &local_dmq1; | ||
819 | BN_with_flags(dmq1, rsa->dmq1, BN_FLG_CONSTTIME); | ||
820 | } | ||
821 | else | ||
822 | dmq1 = rsa->dmq1; | ||
823 | if (!rsa->meth->bn_mod_exp(m1,r1,dmq1,rsa->q,ctx, | ||
666 | rsa->_method_mod_q)) goto err; | 824 | rsa->_method_mod_q)) goto err; |
667 | 825 | ||
668 | if (!BN_mod(&r1,I,rsa->p,ctx)) goto err; | 826 | /* compute I mod p */ |
669 | if (!rsa->meth->bn_mod_exp(r0,&r1,rsa->dmp1,rsa->p,ctx, | 827 | if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME)) |
828 | { | ||
829 | c = &local_c; | ||
830 | BN_with_flags(c, I, BN_FLG_CONSTTIME); | ||
831 | if (!BN_mod(r1,c,rsa->p,ctx)) goto err; | ||
832 | } | ||
833 | else | ||
834 | { | ||
835 | if (!BN_mod(r1,I,rsa->p,ctx)) goto err; | ||
836 | } | ||
837 | |||
838 | /* compute r1^dmp1 mod p */ | ||
839 | if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME)) | ||
840 | { | ||
841 | dmp1 = &local_dmp1; | ||
842 | BN_with_flags(dmp1, rsa->dmp1, BN_FLG_CONSTTIME); | ||
843 | } | ||
844 | else | ||
845 | dmp1 = rsa->dmp1; | ||
846 | if (!rsa->meth->bn_mod_exp(r0,r1,dmp1,rsa->p,ctx, | ||
670 | rsa->_method_mod_p)) goto err; | 847 | rsa->_method_mod_p)) goto err; |
671 | 848 | ||
672 | if (!BN_sub(r0,r0,&m1)) goto err; | 849 | if (!BN_sub(r0,r0,m1)) goto err; |
673 | /* This will help stop the size of r0 increasing, which does | 850 | /* This will help stop the size of r0 increasing, which does |
674 | * affect the multiply if it optimised for a power of 2 size */ | 851 | * affect the multiply if it optimised for a power of 2 size */ |
675 | if (r0->neg) | 852 | if (BN_is_negative(r0)) |
676 | if (!BN_add(r0,r0,rsa->p)) goto err; | 853 | if (!BN_add(r0,r0,rsa->p)) goto err; |
677 | 854 | ||
678 | if (!BN_mul(&r1,r0,rsa->iqmp,ctx)) goto err; | 855 | if (!BN_mul(r1,r0,rsa->iqmp,ctx)) goto err; |
679 | if (!BN_mod(r0,&r1,rsa->p,ctx)) goto err; | 856 | |
857 | /* Turn BN_FLG_CONSTTIME flag on before division operation */ | ||
858 | if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME)) | ||
859 | { | ||
860 | pr1 = &local_r1; | ||
861 | BN_with_flags(pr1, r1, BN_FLG_CONSTTIME); | ||
862 | } | ||
863 | else | ||
864 | pr1 = r1; | ||
865 | if (!BN_mod(r0,pr1,rsa->p,ctx)) goto err; | ||
866 | |||
680 | /* If p < q it is occasionally possible for the correction of | 867 | /* If p < q it is occasionally possible for the correction of |
681 | * adding 'p' if r0 is negative above to leave the result still | 868 | * adding 'p' if r0 is negative above to leave the result still |
682 | * negative. This can break the private key operations: the following | 869 | * negative. This can break the private key operations: the following |
@@ -684,39 +871,51 @@ static int RSA_eay_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa) | |||
684 | * This will *never* happen with OpenSSL generated keys because | 871 | * This will *never* happen with OpenSSL generated keys because |
685 | * they ensure p > q [steve] | 872 | * they ensure p > q [steve] |
686 | */ | 873 | */ |
687 | if (r0->neg) | 874 | if (BN_is_negative(r0)) |
688 | if (!BN_add(r0,r0,rsa->p)) goto err; | 875 | if (!BN_add(r0,r0,rsa->p)) goto err; |
689 | if (!BN_mul(&r1,r0,rsa->q,ctx)) goto err; | 876 | if (!BN_mul(r1,r0,rsa->q,ctx)) goto err; |
690 | if (!BN_add(r0,&r1,&m1)) goto err; | 877 | if (!BN_add(r0,r1,m1)) goto err; |
691 | 878 | ||
692 | if (rsa->e && rsa->n) | 879 | if (rsa->e && rsa->n) |
693 | { | 880 | { |
694 | if (!rsa->meth->bn_mod_exp(&vrfy,r0,rsa->e,rsa->n,ctx,NULL)) goto err; | 881 | if (!rsa->meth->bn_mod_exp(vrfy,r0,rsa->e,rsa->n,ctx,rsa->_method_mod_n)) goto err; |
695 | /* If 'I' was greater than (or equal to) rsa->n, the operation | 882 | /* If 'I' was greater than (or equal to) rsa->n, the operation |
696 | * will be equivalent to using 'I mod n'. However, the result of | 883 | * will be equivalent to using 'I mod n'. However, the result of |
697 | * the verify will *always* be less than 'n' so we don't check | 884 | * the verify will *always* be less than 'n' so we don't check |
698 | * for absolute equality, just congruency. */ | 885 | * for absolute equality, just congruency. */ |
699 | if (!BN_sub(&vrfy, &vrfy, I)) goto err; | 886 | if (!BN_sub(vrfy, vrfy, I)) goto err; |
700 | if (!BN_mod(&vrfy, &vrfy, rsa->n, ctx)) goto err; | 887 | if (!BN_mod(vrfy, vrfy, rsa->n, ctx)) goto err; |
701 | if (vrfy.neg) | 888 | if (BN_is_negative(vrfy)) |
702 | if (!BN_add(&vrfy, &vrfy, rsa->n)) goto err; | 889 | if (!BN_add(vrfy, vrfy, rsa->n)) goto err; |
703 | if (!BN_is_zero(&vrfy)) | 890 | if (!BN_is_zero(vrfy)) |
891 | { | ||
704 | /* 'I' and 'vrfy' aren't congruent mod n. Don't leak | 892 | /* 'I' and 'vrfy' aren't congruent mod n. Don't leak |
705 | * miscalculated CRT output, just do a raw (slower) | 893 | * miscalculated CRT output, just do a raw (slower) |
706 | * mod_exp and return that instead. */ | 894 | * mod_exp and return that instead. */ |
707 | if (!rsa->meth->bn_mod_exp(r0,I,rsa->d,rsa->n,ctx,NULL)) goto err; | 895 | |
896 | BIGNUM local_d; | ||
897 | BIGNUM *d = NULL; | ||
898 | |||
899 | if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME)) | ||
900 | { | ||
901 | d = &local_d; | ||
902 | BN_with_flags(d, rsa->d, BN_FLG_CONSTTIME); | ||
903 | } | ||
904 | else | ||
905 | d = rsa->d; | ||
906 | if (!rsa->meth->bn_mod_exp(r0,I,d,rsa->n,ctx, | ||
907 | rsa->_method_mod_n)) goto err; | ||
908 | } | ||
708 | } | 909 | } |
709 | ret=1; | 910 | ret=1; |
710 | err: | 911 | err: |
711 | BN_clear_free(&m1); | 912 | BN_CTX_end(ctx); |
712 | BN_clear_free(&r1); | ||
713 | BN_clear_free(&vrfy); | ||
714 | BN_CTX_free(ctx); | ||
715 | return(ret); | 913 | return(ret); |
716 | } | 914 | } |
717 | 915 | ||
718 | static int RSA_eay_init(RSA *rsa) | 916 | static int RSA_eay_init(RSA *rsa) |
719 | { | 917 | { |
918 | FIPS_selftest_check(); | ||
720 | rsa->flags|=RSA_FLAG_CACHE_PUBLIC|RSA_FLAG_CACHE_PRIVATE; | 919 | rsa->flags|=RSA_FLAG_CACHE_PUBLIC|RSA_FLAG_CACHE_PRIVATE; |
721 | return(1); | 920 | return(1); |
722 | } | 921 | } |
diff --git a/src/lib/libssl/src/fips/rsa/fips_rsa_gen.c b/src/lib/libssl/src/fips/rsa/fips_rsa_gen.c index 2c92112477..90aaa2f095 100644 --- a/src/lib/libssl/src/fips/rsa/fips_rsa_gen.c +++ b/src/lib/libssl/src/fips/rsa/fips_rsa_gen.c | |||
@@ -56,72 +56,126 @@ | |||
56 | * [including the GNU Public Licence.] | 56 | * [including the GNU Public Licence.] |
57 | */ | 57 | */ |
58 | 58 | ||
59 | |||
60 | /* NB: these functions have been "upgraded", the deprecated versions (which are | ||
61 | * compatibility wrappers using these functions) are in rsa_depr.c. | ||
62 | * - Geoff | ||
63 | */ | ||
64 | |||
59 | #include <stdio.h> | 65 | #include <stdio.h> |
60 | #include <string.h> | ||
61 | #include <time.h> | 66 | #include <time.h> |
62 | #include <openssl/err.h> | 67 | #include <string.h> |
68 | #include <openssl/crypto.h> | ||
63 | #include <openssl/bn.h> | 69 | #include <openssl/bn.h> |
64 | #include <openssl/rsa.h> | 70 | #include <openssl/rsa.h> |
71 | #include <openssl/err.h> | ||
72 | #include <openssl/evp.h> | ||
65 | #include <openssl/fips.h> | 73 | #include <openssl/fips.h> |
74 | #include "fips_locl.h" | ||
66 | 75 | ||
67 | #ifdef OPENSSL_FIPS | 76 | #ifdef OPENSSL_FIPS |
68 | 77 | ||
69 | static int fips_check_rsa(RSA *rsa) | 78 | static int fips_rsa_pairwise_fail = 0; |
70 | { | 79 | |
71 | int n; | 80 | void FIPS_corrupt_rsa_keygen(void) |
72 | unsigned char ctext[256]; | ||
73 | unsigned char ptext[256]; | ||
74 | /* The longest we can have with OAEP padding and a 512 bit key */ | ||
75 | static unsigned char original_ptext[] = | ||
76 | "\x01\x23\x45\x67\x89\xab\xcd\xef\x12\x34\x56\x78\x9a\xbc\xde\xf0" | ||
77 | "\x23\x45\x67\x89\xab\xcd"; | ||
78 | |||
79 | /* this will fail for keys shorter than 512 bits */ | ||
80 | n=RSA_public_encrypt(sizeof(original_ptext)-1,original_ptext,ctext,rsa, | ||
81 | RSA_PKCS1_OAEP_PADDING); | ||
82 | if(n < 0) | ||
83 | { | 81 | { |
84 | ERR_print_errors_fp(stderr); | 82 | fips_rsa_pairwise_fail = 1; |
85 | exit(1); | ||
86 | } | 83 | } |
87 | if(!memcmp(ctext,original_ptext,n)) | 84 | |
88 | { | 85 | int fips_check_rsa(RSA *rsa) |
89 | FIPSerr(FIPS_F_FIPS_CHECK_RSA,FIPS_R_PAIRWISE_TEST_FAILED); | ||
90 | return 0; | ||
91 | } | ||
92 | n=RSA_private_decrypt(n,ctext,ptext,rsa,RSA_PKCS1_OAEP_PADDING); | ||
93 | if(n < 0) | ||
94 | { | 86 | { |
95 | ERR_print_errors_fp(stderr); | 87 | const unsigned char tbs[] = "RSA Pairwise Check Data"; |
96 | exit(1); | 88 | unsigned char *ctbuf = NULL, *ptbuf = NULL; |
89 | int len, ret = 0; | ||
90 | EVP_PKEY pk; | ||
91 | pk.type = EVP_PKEY_RSA; | ||
92 | pk.pkey.rsa = rsa; | ||
93 | |||
94 | /* Perform pairwise consistency signature test */ | ||
95 | if (!fips_pkey_signature_test(&pk, tbs, -1, | ||
96 | NULL, 0, EVP_sha1(), EVP_MD_CTX_FLAG_PAD_PKCS1, NULL) | ||
97 | || !fips_pkey_signature_test(&pk, tbs, -1, | ||
98 | NULL, 0, EVP_sha1(), EVP_MD_CTX_FLAG_PAD_X931, NULL) | ||
99 | || !fips_pkey_signature_test(&pk, tbs, -1, | ||
100 | NULL, 0, EVP_sha1(), EVP_MD_CTX_FLAG_PAD_PSS, NULL)) | ||
101 | goto err; | ||
102 | /* Now perform pairwise consistency encrypt/decrypt test */ | ||
103 | ctbuf = OPENSSL_malloc(RSA_size(rsa)); | ||
104 | if (!ctbuf) | ||
105 | goto err; | ||
106 | |||
107 | len = RSA_public_encrypt(sizeof(tbs) - 1, tbs, ctbuf, rsa, RSA_PKCS1_PADDING); | ||
108 | if (len <= 0) | ||
109 | goto err; | ||
110 | /* Check ciphertext doesn't match plaintext */ | ||
111 | if ((len == (sizeof(tbs) - 1)) && !memcmp(tbs, ctbuf, len)) | ||
112 | goto err; | ||
113 | ptbuf = OPENSSL_malloc(RSA_size(rsa)); | ||
114 | |||
115 | if (!ptbuf) | ||
116 | goto err; | ||
117 | len = RSA_private_decrypt(len, ctbuf, ptbuf, rsa, RSA_PKCS1_PADDING); | ||
118 | if (len != (sizeof(tbs) - 1)) | ||
119 | goto err; | ||
120 | if (memcmp(ptbuf, tbs, len)) | ||
121 | goto err; | ||
122 | |||
123 | ret = 1; | ||
124 | |||
125 | if (!ptbuf) | ||
126 | goto err; | ||
127 | |||
128 | err: | ||
129 | if (ret == 0) | ||
130 | { | ||
131 | fips_set_selftest_fail(); | ||
132 | FIPSerr(FIPS_F_FIPS_CHECK_RSA,FIPS_R_PAIRWISE_TEST_FAILED); | ||
133 | } | ||
134 | |||
135 | if (ctbuf) | ||
136 | OPENSSL_free(ctbuf); | ||
137 | if (ptbuf) | ||
138 | OPENSSL_free(ptbuf); | ||
139 | |||
140 | return ret; | ||
97 | } | 141 | } |
98 | if(n != sizeof(original_ptext)-1 || memcmp(ptext,original_ptext,n)) | 142 | |
143 | static int rsa_builtin_keygen(RSA *rsa, int bits, BIGNUM *e_value, BN_GENCB *cb); | ||
144 | |||
145 | /* NB: this wrapper would normally be placed in rsa_lib.c and the static | ||
146 | * implementation would probably be in rsa_eay.c. Nonetheless, is kept here so | ||
147 | * that we don't introduce a new linker dependency. Eg. any application that | ||
148 | * wasn't previously linking object code related to key-generation won't have to | ||
149 | * now just because key-generation is part of RSA_METHOD. */ | ||
150 | int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e_value, BN_GENCB *cb) | ||
99 | { | 151 | { |
100 | FIPSerr(FIPS_F_FIPS_CHECK_RSA,FIPS_R_PAIRWISE_TEST_FAILED); | 152 | if(rsa->meth->rsa_keygen) |
101 | return 0; | 153 | return rsa->meth->rsa_keygen(rsa, bits, e_value, cb); |
154 | return rsa_builtin_keygen(rsa, bits, e_value, cb); | ||
102 | } | 155 | } |
103 | 156 | ||
104 | return 1; | 157 | static int rsa_builtin_keygen(RSA *rsa, int bits, BIGNUM *e_value, BN_GENCB *cb) |
105 | } | ||
106 | |||
107 | RSA *RSA_generate_key(FIPS_RSA_SIZE_T bits, unsigned long e_value, | ||
108 | void (*callback)(int,int,void *), void *cb_arg) | ||
109 | { | 158 | { |
110 | RSA *rsa=NULL; | ||
111 | BIGNUM *r0=NULL,*r1=NULL,*r2=NULL,*r3=NULL,*tmp; | 159 | BIGNUM *r0=NULL,*r1=NULL,*r2=NULL,*r3=NULL,*tmp; |
112 | int bitsp,bitsq,ok= -1,n=0,i; | 160 | BIGNUM local_r0,local_d,local_p; |
113 | BN_CTX *ctx=NULL,*ctx2=NULL; | 161 | BIGNUM *pr0,*d,*p; |
162 | int bitsp,bitsq,ok= -1,n=0; | ||
163 | BN_CTX *ctx=NULL; | ||
114 | 164 | ||
115 | if(FIPS_selftest_failed()) | 165 | if(FIPS_selftest_failed()) |
116 | { | 166 | { |
117 | FIPSerr(FIPS_F_RSA_GENERATE_KEY,FIPS_R_FIPS_SELFTEST_FAILED); | 167 | FIPSerr(FIPS_F_RSA_BUILTIN_KEYGEN,FIPS_R_FIPS_SELFTEST_FAILED); |
118 | return NULL; | 168 | return 0; |
169 | } | ||
170 | |||
171 | if (FIPS_mode() && (bits < OPENSSL_RSA_FIPS_MIN_MODULUS_BITS)) | ||
172 | { | ||
173 | FIPSerr(FIPS_F_RSA_BUILTIN_KEYGEN,FIPS_R_KEY_TOO_SHORT); | ||
174 | return 0; | ||
119 | } | 175 | } |
120 | 176 | ||
121 | ctx=BN_CTX_new(); | 177 | ctx=BN_CTX_new(); |
122 | if (ctx == NULL) goto err; | 178 | if (ctx == NULL) goto err; |
123 | ctx2=BN_CTX_new(); | ||
124 | if (ctx2 == NULL) goto err; | ||
125 | BN_CTX_start(ctx); | 179 | BN_CTX_start(ctx); |
126 | r0 = BN_CTX_get(ctx); | 180 | r0 = BN_CTX_get(ctx); |
127 | r1 = BN_CTX_get(ctx); | 181 | r1 = BN_CTX_get(ctx); |
@@ -131,49 +185,58 @@ RSA *RSA_generate_key(FIPS_RSA_SIZE_T bits, unsigned long e_value, | |||
131 | 185 | ||
132 | bitsp=(bits+1)/2; | 186 | bitsp=(bits+1)/2; |
133 | bitsq=bits-bitsp; | 187 | bitsq=bits-bitsp; |
134 | rsa=RSA_new(); | ||
135 | if (rsa == NULL) goto err; | ||
136 | 188 | ||
137 | /* set e */ | 189 | /* We need the RSA components non-NULL */ |
138 | rsa->e=BN_new(); | 190 | if(!rsa->n && ((rsa->n=BN_new()) == NULL)) goto err; |
139 | if (rsa->e == NULL) goto err; | 191 | if(!rsa->d && ((rsa->d=BN_new()) == NULL)) goto err; |
192 | if(!rsa->e && ((rsa->e=BN_new()) == NULL)) goto err; | ||
193 | if(!rsa->p && ((rsa->p=BN_new()) == NULL)) goto err; | ||
194 | if(!rsa->q && ((rsa->q=BN_new()) == NULL)) goto err; | ||
195 | if(!rsa->dmp1 && ((rsa->dmp1=BN_new()) == NULL)) goto err; | ||
196 | if(!rsa->dmq1 && ((rsa->dmq1=BN_new()) == NULL)) goto err; | ||
197 | if(!rsa->iqmp && ((rsa->iqmp=BN_new()) == NULL)) goto err; | ||
140 | 198 | ||
141 | #if 1 | 199 | BN_copy(rsa->e, e_value); |
142 | /* The problem is when building with 8, 16, or 32 BN_ULONG, | ||
143 | * unsigned long can be larger */ | ||
144 | for (i=0; i<sizeof(unsigned long)*8; i++) | ||
145 | { | ||
146 | if (e_value & (1UL<<i)) | ||
147 | BN_set_bit(rsa->e,i); | ||
148 | } | ||
149 | #else | ||
150 | if (!BN_set_word(rsa->e,e_value)) goto err; | ||
151 | #endif | ||
152 | 200 | ||
153 | /* generate p and q */ | 201 | /* generate p and q */ |
154 | for (;;) | 202 | for (;;) |
155 | { | 203 | { |
156 | rsa->p=BN_generate_prime(NULL,bitsp,0,NULL,NULL,callback,cb_arg); | 204 | if(!BN_generate_prime_ex(rsa->p, bitsp, 0, NULL, NULL, cb)) |
157 | if (rsa->p == NULL) goto err; | 205 | goto err; |
158 | if (!BN_sub(r2,rsa->p,BN_value_one())) goto err; | 206 | if (!BN_sub(r2,rsa->p,BN_value_one())) goto err; |
159 | if (!BN_gcd(r1,r2,rsa->e,ctx)) goto err; | 207 | if (!BN_gcd(r1,r2,rsa->e,ctx)) goto err; |
160 | if (BN_is_one(r1)) break; | 208 | if (BN_is_one(r1)) break; |
161 | if (callback != NULL) callback(2,n++,cb_arg); | 209 | if(!BN_GENCB_call(cb, 2, n++)) |
162 | BN_free(rsa->p); | 210 | goto err; |
163 | } | 211 | } |
164 | if (callback != NULL) callback(3,0,cb_arg); | 212 | if(!BN_GENCB_call(cb, 3, 0)) |
213 | goto err; | ||
165 | for (;;) | 214 | for (;;) |
166 | { | 215 | { |
167 | rsa->q=BN_generate_prime(NULL,bitsq,0,NULL,NULL,callback,cb_arg); | 216 | /* When generating ridiculously small keys, we can get stuck |
168 | if (rsa->q == NULL) goto err; | 217 | * continually regenerating the same prime values. Check for |
218 | * this and bail if it happens 3 times. */ | ||
219 | unsigned int degenerate = 0; | ||
220 | do | ||
221 | { | ||
222 | if(!BN_generate_prime_ex(rsa->q, bitsq, 0, NULL, NULL, cb)) | ||
223 | goto err; | ||
224 | } while((BN_cmp(rsa->p, rsa->q) == 0) && (++degenerate < 3)); | ||
225 | if(degenerate == 3) | ||
226 | { | ||
227 | ok = 0; /* we set our own err */ | ||
228 | RSAerr(RSA_F_RSA_BUILTIN_KEYGEN,RSA_R_KEY_SIZE_TOO_SMALL); | ||
229 | goto err; | ||
230 | } | ||
169 | if (!BN_sub(r2,rsa->q,BN_value_one())) goto err; | 231 | if (!BN_sub(r2,rsa->q,BN_value_one())) goto err; |
170 | if (!BN_gcd(r1,r2,rsa->e,ctx)) goto err; | 232 | if (!BN_gcd(r1,r2,rsa->e,ctx)) goto err; |
171 | if (BN_is_one(r1) && (BN_cmp(rsa->p,rsa->q) != 0)) | 233 | if (BN_is_one(r1)) |
172 | break; | 234 | break; |
173 | if (callback != NULL) callback(2,n++,cb_arg); | 235 | if(!BN_GENCB_call(cb, 2, n++)) |
174 | BN_free(rsa->q); | 236 | goto err; |
175 | } | 237 | } |
176 | if (callback != NULL) callback(3,1,cb_arg); | 238 | if(!BN_GENCB_call(cb, 3, 1)) |
239 | goto err; | ||
177 | if (BN_cmp(rsa->p,rsa->q) < 0) | 240 | if (BN_cmp(rsa->p,rsa->q) < 0) |
178 | { | 241 | { |
179 | tmp=rsa->p; | 242 | tmp=rsa->p; |
@@ -182,46 +245,48 @@ RSA *RSA_generate_key(FIPS_RSA_SIZE_T bits, unsigned long e_value, | |||
182 | } | 245 | } |
183 | 246 | ||
184 | /* calculate n */ | 247 | /* calculate n */ |
185 | rsa->n=BN_new(); | ||
186 | if (rsa->n == NULL) goto err; | ||
187 | if (!BN_mul(rsa->n,rsa->p,rsa->q,ctx)) goto err; | 248 | if (!BN_mul(rsa->n,rsa->p,rsa->q,ctx)) goto err; |
188 | 249 | ||
189 | /* calculate d */ | 250 | /* calculate d */ |
190 | if (!BN_sub(r1,rsa->p,BN_value_one())) goto err; /* p-1 */ | 251 | if (!BN_sub(r1,rsa->p,BN_value_one())) goto err; /* p-1 */ |
191 | if (!BN_sub(r2,rsa->q,BN_value_one())) goto err; /* q-1 */ | 252 | if (!BN_sub(r2,rsa->q,BN_value_one())) goto err; /* q-1 */ |
192 | if (!BN_mul(r0,r1,r2,ctx)) goto err; /* (p-1)(q-1) */ | 253 | if (!BN_mul(r0,r1,r2,ctx)) goto err; /* (p-1)(q-1) */ |
193 | 254 | if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME)) | |
194 | /* should not be needed, since gcd(p-1,e) == 1 and gcd(q-1,e) == 1 */ | ||
195 | /* for (;;) | ||
196 | { | 255 | { |
197 | if (!BN_gcd(r3,r0,rsa->e,ctx)) goto err; | 256 | pr0 = &local_r0; |
198 | if (BN_is_one(r3)) break; | 257 | BN_with_flags(pr0, r0, BN_FLG_CONSTTIME); |
258 | } | ||
259 | else | ||
260 | pr0 = r0; | ||
261 | if (!BN_mod_inverse(rsa->d,rsa->e,pr0,ctx)) goto err; /* d */ | ||
199 | 262 | ||
200 | if (1) | 263 | /* set up d for correct BN_FLG_CONSTTIME flag */ |
201 | { | 264 | if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME)) |
202 | if (!BN_add_word(rsa->e,2L)) goto err; | 265 | { |
203 | continue; | 266 | d = &local_d; |
204 | } | 267 | BN_with_flags(d, rsa->d, BN_FLG_CONSTTIME); |
205 | RSAerr(RSA_F_RSA_GENERATE_KEY,RSA_R_BAD_E_VALUE); | ||
206 | goto err; | ||
207 | } | 268 | } |
208 | */ | 269 | else |
209 | rsa->d=BN_mod_inverse(NULL,rsa->e,r0,ctx2); /* d */ | 270 | d = rsa->d; |
210 | if (rsa->d == NULL) goto err; | ||
211 | 271 | ||
212 | /* calculate d mod (p-1) */ | 272 | /* calculate d mod (p-1) */ |
213 | rsa->dmp1=BN_new(); | 273 | if (!BN_mod(rsa->dmp1,d,r1,ctx)) goto err; |
214 | if (rsa->dmp1 == NULL) goto err; | ||
215 | if (!BN_mod(rsa->dmp1,rsa->d,r1,ctx)) goto err; | ||
216 | 274 | ||
217 | /* calculate d mod (q-1) */ | 275 | /* calculate d mod (q-1) */ |
218 | rsa->dmq1=BN_new(); | 276 | if (!BN_mod(rsa->dmq1,d,r2,ctx)) goto err; |
219 | if (rsa->dmq1 == NULL) goto err; | ||
220 | if (!BN_mod(rsa->dmq1,rsa->d,r2,ctx)) goto err; | ||
221 | 277 | ||
222 | /* calculate inverse of q mod p */ | 278 | /* calculate inverse of q mod p */ |
223 | rsa->iqmp=BN_mod_inverse(NULL,rsa->q,rsa->p,ctx2); | 279 | if (!(rsa->flags & RSA_FLAG_NO_CONSTTIME)) |
224 | if (rsa->iqmp == NULL) goto err; | 280 | { |
281 | p = &local_p; | ||
282 | BN_with_flags(p, rsa->p, BN_FLG_CONSTTIME); | ||
283 | } | ||
284 | else | ||
285 | p = rsa->p; | ||
286 | if (!BN_mod_inverse(rsa->iqmp,rsa->q,p,ctx)) goto err; | ||
287 | |||
288 | if (fips_rsa_pairwise_fail) | ||
289 | BN_add_word(rsa->n, 1); | ||
225 | 290 | ||
226 | if(!fips_check_rsa(rsa)) | 291 | if(!fips_check_rsa(rsa)) |
227 | goto err; | 292 | goto err; |
@@ -230,20 +295,16 @@ RSA *RSA_generate_key(FIPS_RSA_SIZE_T bits, unsigned long e_value, | |||
230 | err: | 295 | err: |
231 | if (ok == -1) | 296 | if (ok == -1) |
232 | { | 297 | { |
233 | RSAerr(RSA_F_RSA_GENERATE_KEY,ERR_LIB_BN); | 298 | RSAerr(RSA_F_RSA_BUILTIN_KEYGEN,ERR_LIB_BN); |
234 | ok=0; | 299 | ok=0; |
235 | } | 300 | } |
236 | BN_CTX_end(ctx); | 301 | if (ctx != NULL) |
237 | BN_CTX_free(ctx); | ||
238 | BN_CTX_free(ctx2); | ||
239 | |||
240 | if (!ok) | ||
241 | { | 302 | { |
242 | if (rsa != NULL) RSA_free(rsa); | 303 | BN_CTX_end(ctx); |
243 | return(NULL); | 304 | BN_CTX_free(ctx); |
244 | } | 305 | } |
245 | else | 306 | |
246 | return(rsa); | 307 | return ok; |
247 | } | 308 | } |
248 | 309 | ||
249 | #endif | 310 | #endif |
diff --git a/src/lib/libssl/src/fips/rsa/fips_rsa_lib.c b/src/lib/libssl/src/fips/rsa/fips_rsa_lib.c new file mode 100644 index 0000000000..a37ad3e540 --- /dev/null +++ b/src/lib/libssl/src/fips/rsa/fips_rsa_lib.c | |||
@@ -0,0 +1,101 @@ | |||
1 | /* fips_rsa_sign.c */ | ||
2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | ||
3 | * project 2007. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 2007 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <string.h> | ||
60 | #include <openssl/evp.h> | ||
61 | #include <openssl/rsa.h> | ||
62 | #include <openssl/bn.h> | ||
63 | #include <openssl/err.h> | ||
64 | |||
65 | /* Minimal FIPS versions of FIPS_rsa_new() and FIPS_rsa_free: to | ||
66 | * reduce external dependencies. | ||
67 | */ | ||
68 | |||
69 | RSA *FIPS_rsa_new(void) | ||
70 | { | ||
71 | RSA *ret; | ||
72 | ret = OPENSSL_malloc(sizeof(RSA)); | ||
73 | if (!ret) | ||
74 | return NULL; | ||
75 | memset(ret, 0, sizeof(RSA)); | ||
76 | ret->meth = RSA_PKCS1_SSLeay(); | ||
77 | if (ret->meth->init) | ||
78 | ret->meth->init(ret); | ||
79 | return ret; | ||
80 | } | ||
81 | |||
82 | void FIPS_rsa_free(RSA *r) | ||
83 | { | ||
84 | if (!r) | ||
85 | return; | ||
86 | if (r->meth->finish) | ||
87 | r->meth->finish(r); | ||
88 | if (r->n != NULL) BN_clear_free(r->n); | ||
89 | if (r->e != NULL) BN_clear_free(r->e); | ||
90 | if (r->d != NULL) BN_clear_free(r->d); | ||
91 | if (r->p != NULL) BN_clear_free(r->p); | ||
92 | if (r->q != NULL) BN_clear_free(r->q); | ||
93 | if (r->dmp1 != NULL) BN_clear_free(r->dmp1); | ||
94 | if (r->dmq1 != NULL) BN_clear_free(r->dmq1); | ||
95 | if (r->iqmp != NULL) BN_clear_free(r->iqmp); | ||
96 | if (r->blinding != NULL) BN_BLINDING_free(r->blinding); | ||
97 | if (r->mt_blinding != NULL) BN_BLINDING_free(r->mt_blinding); | ||
98 | if (r->bignum_data != NULL) OPENSSL_free_locked(r->bignum_data); | ||
99 | OPENSSL_free(r); | ||
100 | } | ||
101 | |||
diff --git a/src/lib/libssl/src/fips/rsa/fips_rsa_selftest.c b/src/lib/libssl/src/fips/rsa/fips_rsa_selftest.c index 4e3b9445fc..bead61f572 100644 --- a/src/lib/libssl/src/fips/rsa/fips_rsa_selftest.c +++ b/src/lib/libssl/src/fips/rsa/fips_rsa_selftest.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* ==================================================================== | 1 | /* ==================================================================== |
2 | * Copyright (c) 2003 The OpenSSL Project. All rights reserved. | 2 | * Copyright (c) 2003-2007 The OpenSSL Project. All rights reserved. |
3 | * | 3 | * |
4 | * Redistribution and use in source and binary forms, with or without | 4 | * Redistribution and use in source and binary forms, with or without |
5 | * modification, are permitted provided that the following conditions | 5 | * modification, are permitted provided that the following conditions |
@@ -51,21 +51,11 @@ | |||
51 | #include <openssl/err.h> | 51 | #include <openssl/err.h> |
52 | #include <openssl/fips.h> | 52 | #include <openssl/fips.h> |
53 | #include <openssl/rsa.h> | 53 | #include <openssl/rsa.h> |
54 | #include <openssl/sha.h> | 54 | #include <openssl/evp.h> |
55 | #include <openssl/bn.h> | ||
55 | #include <openssl/opensslconf.h> | 56 | #include <openssl/opensslconf.h> |
56 | 57 | ||
57 | #ifdef OPENSSL_FIPS | 58 | #ifdef OPENSSL_FIPS |
58 | #define SetKey \ | ||
59 | key->n = BN_bin2bn(n, sizeof(n)-1, key->n); \ | ||
60 | key->e = BN_bin2bn(e, sizeof(e)-1, key->e); \ | ||
61 | key->d = BN_bin2bn(d, sizeof(d)-1, key->d); \ | ||
62 | key->p = BN_bin2bn(p, sizeof(p)-1, key->p); \ | ||
63 | key->q = BN_bin2bn(q, sizeof(q)-1, key->q); \ | ||
64 | key->dmp1 = BN_bin2bn(dmp1, sizeof(dmp1)-1, key->dmp1); \ | ||
65 | key->dmq1 = BN_bin2bn(dmq1, sizeof(dmq1)-1, key->dmq1); \ | ||
66 | key->iqmp = BN_bin2bn(iqmp, sizeof(iqmp)-1, key->iqmp); \ | ||
67 | memcpy(c, ctext_ex, sizeof(ctext_ex) - 1); \ | ||
68 | return (sizeof(ctext_ex) - 1); | ||
69 | 59 | ||
70 | static unsigned char n[] = | 60 | static unsigned char n[] = |
71 | "\x00\xBB\xF8\x2F\x09\x06\x82\xCE\x9C\x23\x38\xAC\x2B\x9D\xA8\x71" | 61 | "\x00\xBB\xF8\x2F\x09\x06\x82\xCE\x9C\x23\x38\xAC\x2B\x9D\xA8\x71" |
@@ -79,11 +69,11 @@ static unsigned char n[] = | |||
79 | "\xCB"; | 69 | "\xCB"; |
80 | 70 | ||
81 | 71 | ||
82 | static int setrsakey(RSA *key, unsigned char *c) | 72 | static int setrsakey(RSA *key) |
83 | { | 73 | { |
84 | static unsigned char e[] = "\x11"; | 74 | static const unsigned char e[] = "\x11"; |
85 | 75 | ||
86 | static unsigned char d[] = | 76 | static const unsigned char d[] = |
87 | "\x00\xA5\xDA\xFC\x53\x41\xFA\xF2\x89\xC4\xB9\x88\xDB\x30\xC1\xCD" | 77 | "\x00\xA5\xDA\xFC\x53\x41\xFA\xF2\x89\xC4\xB9\x88\xDB\x30\xC1\xCD" |
88 | "\xF8\x3F\x31\x25\x1E\x06\x68\xB4\x27\x84\x81\x38\x01\x57\x96\x41" | 78 | "\xF8\x3F\x31\x25\x1E\x06\x68\xB4\x27\x84\x81\x38\x01\x57\x96\x41" |
89 | "\xB2\x94\x10\xB3\xC7\x99\x8D\x6B\xC4\x65\x74\x5E\x5C\x39\x26\x69" | 79 | "\xB2\x94\x10\xB3\xC7\x99\x8D\x6B\xC4\x65\x74\x5E\x5C\x39\x26\x69" |
@@ -94,50 +84,48 @@ static int setrsakey(RSA *key, unsigned char *c) | |||
94 | "\xAF\x94\x28\xC2\xB7\xB8\x88\x3F\xE4\x46\x3A\x4B\xC8\x5B\x1C\xB3" | 84 | "\xAF\x94\x28\xC2\xB7\xB8\x88\x3F\xE4\x46\x3A\x4B\xC8\x5B\x1C\xB3" |
95 | "\xC1"; | 85 | "\xC1"; |
96 | 86 | ||
97 | static unsigned char p[] = | 87 | static const unsigned char p[] = |
98 | "\x00\xEE\xCF\xAE\x81\xB1\xB9\xB3\xC9\x08\x81\x0B\x10\xA1\xB5\x60" | 88 | "\x00\xEE\xCF\xAE\x81\xB1\xB9\xB3\xC9\x08\x81\x0B\x10\xA1\xB5\x60" |
99 | "\x01\x99\xEB\x9F\x44\xAE\xF4\xFD\xA4\x93\xB8\x1A\x9E\x3D\x84\xF6" | 89 | "\x01\x99\xEB\x9F\x44\xAE\xF4\xFD\xA4\x93\xB8\x1A\x9E\x3D\x84\xF6" |
100 | "\x32\x12\x4E\xF0\x23\x6E\x5D\x1E\x3B\x7E\x28\xFA\xE7\xAA\x04\x0A" | 90 | "\x32\x12\x4E\xF0\x23\x6E\x5D\x1E\x3B\x7E\x28\xFA\xE7\xAA\x04\x0A" |
101 | "\x2D\x5B\x25\x21\x76\x45\x9D\x1F\x39\x75\x41\xBA\x2A\x58\xFB\x65" | 91 | "\x2D\x5B\x25\x21\x76\x45\x9D\x1F\x39\x75\x41\xBA\x2A\x58\xFB\x65" |
102 | "\x99"; | 92 | "\x99"; |
103 | 93 | ||
104 | static unsigned char q[] = | 94 | static const unsigned char q[] = |
105 | "\x00\xC9\x7F\xB1\xF0\x27\xF4\x53\xF6\x34\x12\x33\xEA\xAA\xD1\xD9" | 95 | "\x00\xC9\x7F\xB1\xF0\x27\xF4\x53\xF6\x34\x12\x33\xEA\xAA\xD1\xD9" |
106 | "\x35\x3F\x6C\x42\xD0\x88\x66\xB1\xD0\x5A\x0F\x20\x35\x02\x8B\x9D" | 96 | "\x35\x3F\x6C\x42\xD0\x88\x66\xB1\xD0\x5A\x0F\x20\x35\x02\x8B\x9D" |
107 | "\x86\x98\x40\xB4\x16\x66\xB4\x2E\x92\xEA\x0D\xA3\xB4\x32\x04\xB5" | 97 | "\x86\x98\x40\xB4\x16\x66\xB4\x2E\x92\xEA\x0D\xA3\xB4\x32\x04\xB5" |
108 | "\xCF\xCE\x33\x52\x52\x4D\x04\x16\xA5\xA4\x41\xE7\x00\xAF\x46\x15" | 98 | "\xCF\xCE\x33\x52\x52\x4D\x04\x16\xA5\xA4\x41\xE7\x00\xAF\x46\x15" |
109 | "\x03"; | 99 | "\x03"; |
110 | 100 | ||
111 | static unsigned char dmp1[] = | 101 | static const unsigned char dmp1[] = |
112 | "\x54\x49\x4C\xA6\x3E\xBA\x03\x37\xE4\xE2\x40\x23\xFC\xD6\x9A\x5A" | 102 | "\x54\x49\x4C\xA6\x3E\xBA\x03\x37\xE4\xE2\x40\x23\xFC\xD6\x9A\x5A" |
113 | "\xEB\x07\xDD\xDC\x01\x83\xA4\xD0\xAC\x9B\x54\xB0\x51\xF2\xB1\x3E" | 103 | "\xEB\x07\xDD\xDC\x01\x83\xA4\xD0\xAC\x9B\x54\xB0\x51\xF2\xB1\x3E" |
114 | "\xD9\x49\x09\x75\xEA\xB7\x74\x14\xFF\x59\xC1\xF7\x69\x2E\x9A\x2E" | 104 | "\xD9\x49\x09\x75\xEA\xB7\x74\x14\xFF\x59\xC1\xF7\x69\x2E\x9A\x2E" |
115 | "\x20\x2B\x38\xFC\x91\x0A\x47\x41\x74\xAD\xC9\x3C\x1F\x67\xC9\x81"; | 105 | "\x20\x2B\x38\xFC\x91\x0A\x47\x41\x74\xAD\xC9\x3C\x1F\x67\xC9\x81"; |
116 | 106 | ||
117 | static unsigned char dmq1[] = | 107 | static const unsigned char dmq1[] = |
118 | "\x47\x1E\x02\x90\xFF\x0A\xF0\x75\x03\x51\xB7\xF8\x78\x86\x4C\xA9" | 108 | "\x47\x1E\x02\x90\xFF\x0A\xF0\x75\x03\x51\xB7\xF8\x78\x86\x4C\xA9" |
119 | "\x61\xAD\xBD\x3A\x8A\x7E\x99\x1C\x5C\x05\x56\xA9\x4C\x31\x46\xA7" | 109 | "\x61\xAD\xBD\x3A\x8A\x7E\x99\x1C\x5C\x05\x56\xA9\x4C\x31\x46\xA7" |
120 | "\xF9\x80\x3F\x8F\x6F\x8A\xE3\x42\xE9\x31\xFD\x8A\xE4\x7A\x22\x0D" | 110 | "\xF9\x80\x3F\x8F\x6F\x8A\xE3\x42\xE9\x31\xFD\x8A\xE4\x7A\x22\x0D" |
121 | "\x1B\x99\xA4\x95\x84\x98\x07\xFE\x39\xF9\x24\x5A\x98\x36\xDA\x3D"; | 111 | "\x1B\x99\xA4\x95\x84\x98\x07\xFE\x39\xF9\x24\x5A\x98\x36\xDA\x3D"; |
122 | 112 | ||
123 | static unsigned char iqmp[] = | 113 | static const unsigned char iqmp[] = |
124 | "\x00\xB0\x6C\x4F\xDA\xBB\x63\x01\x19\x8D\x26\x5B\xDB\xAE\x94\x23" | 114 | "\x00\xB0\x6C\x4F\xDA\xBB\x63\x01\x19\x8D\x26\x5B\xDB\xAE\x94\x23" |
125 | "\xB3\x80\xF2\x71\xF7\x34\x53\x88\x50\x93\x07\x7F\xCD\x39\xE2\x11" | 115 | "\xB3\x80\xF2\x71\xF7\x34\x53\x88\x50\x93\x07\x7F\xCD\x39\xE2\x11" |
126 | "\x9F\xC9\x86\x32\x15\x4F\x58\x83\xB1\x67\xA9\x67\xBF\x40\x2B\x4E" | 116 | "\x9F\xC9\x86\x32\x15\x4F\x58\x83\xB1\x67\xA9\x67\xBF\x40\x2B\x4E" |
127 | "\x9E\x2E\x0F\x96\x56\xE6\x98\xEA\x36\x66\xED\xFB\x25\x79\x80\x39" | 117 | "\x9E\x2E\x0F\x96\x56\xE6\x98\xEA\x36\x66\xED\xFB\x25\x79\x80\x39" |
128 | "\xF7"; | 118 | "\xF7"; |
129 | 119 | ||
130 | static unsigned char ctext_ex[] = | 120 | key->n = BN_bin2bn(n, sizeof(n)-1, key->n); |
131 | "\x42\x4b\xc9\x51\x61\xd4\xca\xa0\x18\x6c\x4d\xca\x61\x8f\x2d\x07" | 121 | key->e = BN_bin2bn(e, sizeof(e)-1, key->e); |
132 | "\x8c\x63\xc5\x6b\xa2\x4c\x32\xb1\xda\xb7\xdd\x32\xb6\x51\x68\xc3" | 122 | key->d = BN_bin2bn(d, sizeof(d)-1, key->d); |
133 | "\x6e\x98\x46\xd6\xbb\x1a\xd5\x99\x05\x92\x7c\xd7\xbc\x08\x9e\xe4" | 123 | key->p = BN_bin2bn(p, sizeof(p)-1, key->p); |
134 | "\xc3\x70\x4d\xe6\x99\x7e\x61\x31\x07\x7a\x19\xdb\x3e\x11\xfa\x3d" | 124 | key->q = BN_bin2bn(q, sizeof(q)-1, key->q); |
135 | "\x7c\x61\xd7\x78\x14\x3f\x05\x16\xa0\xc4\xbf\xcd\xee\xca\x67\x4c" | 125 | key->dmp1 = BN_bin2bn(dmp1, sizeof(dmp1)-1, key->dmp1); |
136 | "\x80\x4e\xca\x43\x2f\x35\x43\x58\xa7\x50\x7e\x3e\x52\x82\xab\xac" | 126 | key->dmq1 = BN_bin2bn(dmq1, sizeof(dmq1)-1, key->dmq1); |
137 | "\xa6\x50\xe8\x39\x9f\xe0\x7f\x58\x1d\x1b\x90\x93\x04\xec\xb3\xf9" | 127 | key->iqmp = BN_bin2bn(iqmp, sizeof(iqmp)-1, key->iqmp); |
138 | "\x24\xd3\x75\x3e\x39\xd1\x14\xc6\x33\xce\xd6\xee\x20\x47\xec\xe4"; | 128 | return 1; |
139 | |||
140 | SetKey; | ||
141 | } | 129 | } |
142 | 130 | ||
143 | void FIPS_corrupt_rsa() | 131 | void FIPS_corrupt_rsa() |
@@ -145,107 +133,300 @@ void FIPS_corrupt_rsa() | |||
145 | n[0]++; | 133 | n[0]++; |
146 | } | 134 | } |
147 | 135 | ||
136 | /* Known Answer Test (KAT) data for the above RSA private key signing | ||
137 | * kat_tbs. | ||
138 | */ | ||
139 | |||
140 | static const unsigned char kat_tbs[] = "OpenSSL FIPS 140-2 Public Key RSA KAT"; | ||
141 | |||
142 | static const unsigned char kat_RSA_PSS_SHA1[] = { | ||
143 | 0x2D, 0xAF, 0x6E, 0xC2, 0x98, 0xFB, 0x8A, 0xA1, 0xB9, 0x46, 0xDA, 0x0F, | ||
144 | 0x01, 0x1E, 0x37, 0x93, 0xC2, 0x55, 0x27, 0xE4, 0x1D, 0xD2, 0x90, 0xBB, | ||
145 | 0xF4, 0xBF, 0x4A, 0x74, 0x39, 0x51, 0xBB, 0xE8, 0x0C, 0xB7, 0xF8, 0xD3, | ||
146 | 0xD1, 0xDF, 0xE7, 0xBE, 0x80, 0x05, 0xC3, 0xB5, 0xC7, 0x83, 0xD5, 0x4C, | ||
147 | 0x7F, 0x49, 0xFB, 0x3F, 0x29, 0x9B, 0xE1, 0x12, 0x51, 0x60, 0xD0, 0xA7, | ||
148 | 0x0D, 0xA9, 0x28, 0x56, 0x73, 0xD9, 0x07, 0xE3, 0x5E, 0x3F, 0x9B, 0xF5, | ||
149 | 0xB6, 0xF3, 0xF2, 0x5E, 0x74, 0xC9, 0x83, 0x81, 0x47, 0xF0, 0xC5, 0x45, | ||
150 | 0x0A, 0xE9, 0x8E, 0x38, 0xD7, 0x18, 0xC6, 0x2A, 0x0F, 0xF8, 0xB7, 0x31, | ||
151 | 0xD6, 0x55, 0xE4, 0x66, 0x78, 0x81, 0xD4, 0xE6, 0xDB, 0x9F, 0xBA, 0xE8, | ||
152 | 0x23, 0xB5, 0x7F, 0xDC, 0x08, 0xEA, 0xD5, 0x26, 0x1E, 0x20, 0x25, 0x84, | ||
153 | 0x26, 0xC6, 0x79, 0xC9, 0x9B, 0x3D, 0x7E, 0xA9 | ||
154 | }; | ||
155 | |||
156 | static const unsigned char kat_RSA_PSS_SHA224[] = { | ||
157 | 0x39, 0x4A, 0x6A, 0x20, 0xBC, 0xE9, 0x33, 0xED, 0xEF, 0xC5, 0x58, 0xA7, | ||
158 | 0xFE, 0x81, 0xC4, 0x36, 0x50, 0x9A, 0x2C, 0x82, 0x98, 0x08, 0x95, 0xFA, | ||
159 | 0xB1, 0x9E, 0xD2, 0x55, 0x61, 0x87, 0x21, 0x59, 0x87, 0x7B, 0x1F, 0x57, | ||
160 | 0x30, 0x9D, 0x0D, 0x4A, 0x06, 0xEB, 0x52, 0x37, 0x55, 0x54, 0x1C, 0x89, | ||
161 | 0x83, 0x75, 0x59, 0x65, 0x64, 0x90, 0x2E, 0x16, 0xCC, 0x86, 0x05, 0xEE, | ||
162 | 0xB1, 0xE6, 0x7B, 0xBA, 0x16, 0x75, 0x0D, 0x0C, 0x64, 0x0B, 0xAB, 0x22, | ||
163 | 0x15, 0x78, 0x6B, 0x6F, 0xA4, 0xFB, 0x77, 0x40, 0x64, 0x62, 0xD1, 0xB5, | ||
164 | 0x37, 0x1E, 0xE0, 0x3D, 0xA8, 0xF9, 0xD2, 0xBD, 0xAA, 0x38, 0x24, 0x49, | ||
165 | 0x58, 0xD2, 0x74, 0x85, 0xF4, 0xB5, 0x93, 0x8E, 0xF5, 0x03, 0xEA, 0x2D, | ||
166 | 0xC8, 0x52, 0xFA, 0xCF, 0x7E, 0x35, 0xB0, 0x6A, 0xAF, 0x95, 0xC0, 0x00, | ||
167 | 0x54, 0x76, 0x3D, 0x0C, 0x9C, 0xB2, 0xEE, 0xC0 | ||
168 | }; | ||
169 | |||
170 | static const unsigned char kat_RSA_PSS_SHA256[] = { | ||
171 | 0x6D, 0x3D, 0xBE, 0x8F, 0x60, 0x6D, 0x25, 0x14, 0xF0, 0x31, 0xE3, 0x89, | ||
172 | 0x00, 0x97, 0xFA, 0x99, 0x71, 0x28, 0xE5, 0x10, 0x25, 0x9A, 0xF3, 0x8F, | ||
173 | 0x7B, 0xC5, 0xA8, 0x4A, 0x74, 0x51, 0x36, 0xE2, 0x8D, 0x7D, 0x73, 0x28, | ||
174 | 0xC1, 0x77, 0xC6, 0x27, 0x97, 0x00, 0x8B, 0x00, 0xA3, 0x96, 0x73, 0x4E, | ||
175 | 0x7D, 0x2E, 0x2C, 0x34, 0x68, 0x8C, 0x8E, 0xDF, 0x9D, 0x49, 0x47, 0x05, | ||
176 | 0xAB, 0xF5, 0x01, 0xD6, 0x81, 0x47, 0x70, 0xF5, 0x1D, 0x6D, 0x26, 0xBA, | ||
177 | 0x2F, 0x7A, 0x54, 0x53, 0x4E, 0xED, 0x71, 0xD9, 0x5A, 0xF3, 0xDA, 0xB6, | ||
178 | 0x0B, 0x47, 0x34, 0xAF, 0x90, 0xDC, 0xC8, 0xD9, 0x6F, 0x56, 0xCD, 0x9F, | ||
179 | 0x21, 0xB7, 0x7E, 0xAD, 0x7C, 0x2F, 0x75, 0x50, 0x47, 0x12, 0xE4, 0x6D, | ||
180 | 0x5F, 0xB7, 0x01, 0xDF, 0xC3, 0x11, 0x6C, 0xA9, 0x9E, 0x49, 0xB9, 0xF6, | ||
181 | 0x72, 0xF4, 0xF6, 0xEF, 0x88, 0x1E, 0x2D, 0x1C | ||
182 | }; | ||
183 | |||
184 | static const unsigned char kat_RSA_PSS_SHA384[] = { | ||
185 | 0x40, 0xFB, 0xA1, 0x21, 0xF4, 0xB2, 0x40, 0x9A, 0xB4, 0x31, 0xA8, 0xF2, | ||
186 | 0xEC, 0x1C, 0xC4, 0xC8, 0x7C, 0x22, 0x65, 0x9C, 0x57, 0x45, 0xCD, 0x5E, | ||
187 | 0x86, 0x00, 0xF7, 0x25, 0x78, 0xDE, 0xDC, 0x7A, 0x71, 0x44, 0x9A, 0xCD, | ||
188 | 0xAA, 0x25, 0xF4, 0xB2, 0xFC, 0xF0, 0x75, 0xD9, 0x2F, 0x78, 0x23, 0x7F, | ||
189 | 0x6F, 0x02, 0xEF, 0xC1, 0xAF, 0xA6, 0x28, 0x16, 0x31, 0xDC, 0x42, 0x6C, | ||
190 | 0xB2, 0x44, 0xE5, 0x4D, 0x66, 0xA2, 0xE6, 0x71, 0xF3, 0xAC, 0x4F, 0xFB, | ||
191 | 0x91, 0xCA, 0xF5, 0x70, 0xEF, 0x6B, 0x9D, 0xA4, 0xEF, 0xD9, 0x3D, 0x2F, | ||
192 | 0x3A, 0xBE, 0x89, 0x38, 0x59, 0x01, 0xBA, 0xDA, 0x32, 0xAD, 0x42, 0x89, | ||
193 | 0x98, 0x8B, 0x39, 0x44, 0xF0, 0xFC, 0x38, 0xAC, 0x87, 0x1F, 0xCA, 0x6F, | ||
194 | 0x48, 0xF6, 0xAE, 0xD7, 0x45, 0xEE, 0xAE, 0x88, 0x0E, 0x60, 0xF4, 0x55, | ||
195 | 0x48, 0x44, 0xEE, 0x1F, 0x90, 0x18, 0x4B, 0xF1 | ||
196 | }; | ||
197 | |||
198 | static const unsigned char kat_RSA_PSS_SHA512[] = { | ||
199 | 0x07, 0x1E, 0xD8, 0xD5, 0x05, 0xE8, 0xE6, 0xE6, 0x57, 0xAE, 0x63, 0x8C, | ||
200 | 0xC6, 0x83, 0xB7, 0xA0, 0x59, 0xBB, 0xF2, 0xC6, 0x8F, 0x12, 0x53, 0x9A, | ||
201 | 0x9B, 0x54, 0x9E, 0xB3, 0xC1, 0x1D, 0x23, 0x4D, 0x51, 0xED, 0x9E, 0xDD, | ||
202 | 0x4B, 0xF3, 0x46, 0x9B, 0x6B, 0xF6, 0x7C, 0x24, 0x60, 0x79, 0x23, 0x39, | ||
203 | 0x01, 0x1C, 0x51, 0xCB, 0xD8, 0xE9, 0x9A, 0x01, 0x67, 0x5F, 0xFE, 0xD7, | ||
204 | 0x7C, 0xE3, 0x7F, 0xED, 0xDB, 0x87, 0xBB, 0xF0, 0x3D, 0x78, 0x55, 0x61, | ||
205 | 0x57, 0xE3, 0x0F, 0xE3, 0xD2, 0x9D, 0x0C, 0x2A, 0x20, 0xB0, 0x85, 0x13, | ||
206 | 0xC5, 0x47, 0x34, 0x0D, 0x32, 0x15, 0xC8, 0xAE, 0x9A, 0x6A, 0x39, 0x63, | ||
207 | 0x2D, 0x60, 0xF5, 0x4C, 0xDF, 0x8A, 0x48, 0x4B, 0xBF, 0xF4, 0xA8, 0xFE, | ||
208 | 0x76, 0xF2, 0x32, 0x1B, 0x9C, 0x7C, 0xCA, 0xFE, 0x7F, 0x80, 0xC2, 0x88, | ||
209 | 0x5C, 0x97, 0x70, 0xB4, 0x26, 0xC9, 0x14, 0x8B | ||
210 | }; | ||
211 | |||
212 | static const unsigned char kat_RSA_SHA1[] = { | ||
213 | 0x71, 0xEE, 0x1A, 0xC0, 0xFE, 0x01, 0x93, 0x54, 0x79, 0x5C, 0xF2, 0x4C, | ||
214 | 0x4A, 0xFD, 0x1A, 0x05, 0x8F, 0x64, 0xB1, 0x6D, 0x61, 0x33, 0x8D, 0x9B, | ||
215 | 0xE7, 0xFD, 0x60, 0xA3, 0x83, 0xB5, 0xA3, 0x51, 0x55, 0x77, 0x90, 0xCF, | ||
216 | 0xDC, 0x22, 0x37, 0x8E, 0xD0, 0xE1, 0xAE, 0x09, 0xE3, 0x3D, 0x1E, 0xF8, | ||
217 | 0x80, 0xD1, 0x8B, 0xC2, 0xEC, 0x0A, 0xD7, 0x6B, 0x88, 0x8B, 0x8B, 0xA1, | ||
218 | 0x20, 0x22, 0xBE, 0x59, 0x5B, 0xE0, 0x23, 0x24, 0xA1, 0x49, 0x30, 0xBA, | ||
219 | 0xA9, 0x9E, 0xE8, 0xB1, 0x8A, 0x62, 0x16, 0xBF, 0x4E, 0xCA, 0x2E, 0x4E, | ||
220 | 0xBC, 0x29, 0xA8, 0x67, 0x13, 0xB7, 0x9F, 0x1D, 0x04, 0x44, 0xE5, 0x5F, | ||
221 | 0x35, 0x07, 0x11, 0xBC, 0xED, 0x19, 0x37, 0x21, 0xCF, 0x23, 0x48, 0x1F, | ||
222 | 0x72, 0x05, 0xDE, 0xE6, 0xE8, 0x7F, 0x33, 0x8A, 0x76, 0x4B, 0x2F, 0x95, | ||
223 | 0xDF, 0xF1, 0x5F, 0x84, 0x80, 0xD9, 0x46, 0xB4 | ||
224 | }; | ||
225 | |||
226 | static const unsigned char kat_RSA_SHA224[] = { | ||
227 | 0x62, 0xAA, 0x79, 0xA9, 0x18, 0x0E, 0x5F, 0x8C, 0xBB, 0xB7, 0x15, 0xF9, | ||
228 | 0x25, 0xBB, 0xFA, 0xD4, 0x3A, 0x34, 0xED, 0x9E, 0xA0, 0xA9, 0x18, 0x8D, | ||
229 | 0x5B, 0x55, 0x9A, 0x7E, 0x1E, 0x08, 0x08, 0x60, 0xC5, 0x1A, 0xC5, 0x89, | ||
230 | 0x08, 0xE2, 0x1B, 0xBD, 0x62, 0x50, 0x17, 0x76, 0x30, 0x2C, 0x9E, 0xCD, | ||
231 | 0xA4, 0x02, 0xAD, 0xB1, 0x6D, 0x44, 0x6D, 0xD5, 0xC6, 0x45, 0x41, 0xE5, | ||
232 | 0xEE, 0x1F, 0x8D, 0x7E, 0x08, 0x16, 0xA6, 0xE1, 0x5E, 0x0B, 0xA9, 0xCC, | ||
233 | 0xDB, 0x59, 0x55, 0x87, 0x09, 0x25, 0x70, 0x86, 0x84, 0x02, 0xC6, 0x3B, | ||
234 | 0x0B, 0x44, 0x4C, 0x46, 0x95, 0xF4, 0xF8, 0x5A, 0x91, 0x28, 0x3E, 0xB2, | ||
235 | 0x58, 0x2E, 0x06, 0x45, 0x49, 0xE0, 0x92, 0xE2, 0xC0, 0x66, 0xE6, 0x35, | ||
236 | 0xD9, 0x79, 0x7F, 0x17, 0x5E, 0x02, 0x73, 0x04, 0x77, 0x82, 0xE6, 0xDC, | ||
237 | 0x40, 0x21, 0x89, 0x8B, 0x37, 0x3E, 0x1E, 0x8D | ||
238 | }; | ||
239 | |||
240 | static const unsigned char kat_RSA_SHA256[] = { | ||
241 | 0x0D, 0x55, 0xE2, 0xAA, 0x81, 0xDB, 0x8E, 0x82, 0x05, 0x17, 0xA5, 0x23, | ||
242 | 0xE7, 0x3B, 0x1D, 0xAF, 0xFB, 0x8C, 0xD0, 0x81, 0x20, 0x7B, 0xAA, 0x23, | ||
243 | 0x92, 0x87, 0x8C, 0xD1, 0x53, 0x85, 0x16, 0xDC, 0xBE, 0xAD, 0x6F, 0x35, | ||
244 | 0x98, 0x2D, 0x69, 0x84, 0xBF, 0xD9, 0x8A, 0x01, 0x17, 0x58, 0xB2, 0x6E, | ||
245 | 0x2C, 0x44, 0x9B, 0x90, 0xF1, 0xFB, 0x51, 0xE8, 0x6A, 0x90, 0x2D, 0x18, | ||
246 | 0x0E, 0xC0, 0x90, 0x10, 0x24, 0xA9, 0x1D, 0xB3, 0x58, 0x7A, 0x91, 0x30, | ||
247 | 0xBE, 0x22, 0xC7, 0xD3, 0xEC, 0xC3, 0x09, 0x5D, 0xBF, 0xE2, 0x80, 0x3A, | ||
248 | 0x7C, 0x85, 0xB4, 0xBC, 0xD1, 0xE9, 0xF0, 0x5C, 0xDE, 0x81, 0xA6, 0x38, | ||
249 | 0xB8, 0x42, 0xBB, 0x86, 0xC5, 0x9D, 0xCE, 0x7C, 0x2C, 0xEE, 0xD1, 0xDA, | ||
250 | 0x27, 0x48, 0x2B, 0xF5, 0xAB, 0xB9, 0xF7, 0x80, 0xD1, 0x90, 0x27, 0x90, | ||
251 | 0xBD, 0x44, 0x97, 0x60, 0xCD, 0x57, 0xC0, 0x7A | ||
252 | }; | ||
253 | |||
254 | static const unsigned char kat_RSA_SHA384[] = { | ||
255 | 0x1D, 0xE3, 0x6A, 0xDD, 0x27, 0x4C, 0xC0, 0xA5, 0x27, 0xEF, 0xE6, 0x1F, | ||
256 | 0xD2, 0x91, 0x68, 0x59, 0x04, 0xAE, 0xBD, 0x99, 0x63, 0x56, 0x47, 0xC7, | ||
257 | 0x6F, 0x22, 0x16, 0x48, 0xD0, 0xF9, 0x18, 0xA9, 0xCA, 0xFA, 0x5D, 0x5C, | ||
258 | 0xA7, 0x65, 0x52, 0x8A, 0xC8, 0x44, 0x7E, 0x86, 0x5D, 0xA9, 0xA6, 0x55, | ||
259 | 0x65, 0x3E, 0xD9, 0x2D, 0x02, 0x38, 0xA8, 0x79, 0x28, 0x7F, 0xB6, 0xCF, | ||
260 | 0x82, 0xDD, 0x7E, 0x55, 0xE1, 0xB1, 0xBC, 0xE2, 0x19, 0x2B, 0x30, 0xC2, | ||
261 | 0x1B, 0x2B, 0xB0, 0x82, 0x46, 0xAC, 0x4B, 0xD1, 0xE2, 0x7D, 0xEB, 0x8C, | ||
262 | 0xFF, 0x95, 0xE9, 0x6A, 0x1C, 0x3D, 0x4D, 0xBF, 0x8F, 0x8B, 0x9C, 0xCD, | ||
263 | 0xEA, 0x85, 0xEE, 0x00, 0xDC, 0x1C, 0xA7, 0xEB, 0xD0, 0x8F, 0x99, 0xF1, | ||
264 | 0x16, 0x28, 0x24, 0x64, 0x04, 0x39, 0x2D, 0x58, 0x1E, 0x37, 0xDC, 0x04, | ||
265 | 0xBD, 0x31, 0xA2, 0x2F, 0xB3, 0x35, 0x56, 0xBF | ||
266 | }; | ||
267 | |||
268 | static const unsigned char kat_RSA_SHA512[] = { | ||
269 | 0x69, 0x52, 0x1B, 0x51, 0x5E, 0x06, 0xCA, 0x9B, 0x16, 0x51, 0x5D, 0xCF, | ||
270 | 0x49, 0x25, 0x4A, 0xA1, 0x6A, 0x77, 0x4C, 0x36, 0x40, 0xF8, 0xB2, 0x9A, | ||
271 | 0x15, 0xEA, 0x5C, 0xE5, 0xE6, 0x82, 0xE0, 0x86, 0x82, 0x6B, 0x32, 0xF1, | ||
272 | 0x04, 0xC1, 0x5A, 0x1A, 0xED, 0x1E, 0x9A, 0xB6, 0x4C, 0x54, 0x9F, 0xD8, | ||
273 | 0x8D, 0xCC, 0xAC, 0x8A, 0xBB, 0x9C, 0x82, 0x3F, 0xA6, 0x53, 0x62, 0xB5, | ||
274 | 0x80, 0xE2, 0xBC, 0xDD, 0x67, 0x2B, 0xD9, 0x3F, 0xE4, 0x75, 0x92, 0x6B, | ||
275 | 0xAF, 0x62, 0x7C, 0x52, 0xF0, 0xEE, 0x33, 0xDF, 0x1B, 0x1D, 0x47, 0xE6, | ||
276 | 0x59, 0x56, 0xA5, 0xB9, 0x5C, 0xE6, 0x77, 0x78, 0x16, 0x63, 0x84, 0x05, | ||
277 | 0x6F, 0x0E, 0x2B, 0x31, 0x9D, 0xF7, 0x7F, 0xB2, 0x64, 0x71, 0xE0, 0x2D, | ||
278 | 0x3E, 0x62, 0xCE, 0xB5, 0x3F, 0x88, 0xDF, 0x2D, 0xAB, 0x98, 0x65, 0x91, | ||
279 | 0xDF, 0x70, 0x14, 0xA5, 0x3F, 0x36, 0xAB, 0x84 | ||
280 | }; | ||
281 | |||
282 | static const unsigned char kat_RSA_X931_SHA1[] = { | ||
283 | 0x86, 0xB4, 0x18, 0xBA, 0xD1, 0x80, 0xB6, 0x7C, 0x42, 0x45, 0x4D, 0xDF, | ||
284 | 0xE9, 0x2D, 0xE1, 0x83, 0x5F, 0xB5, 0x2F, 0xC9, 0xCD, 0xC4, 0xB2, 0x75, | ||
285 | 0x80, 0xA4, 0xF1, 0x4A, 0xE7, 0x83, 0x12, 0x1E, 0x1E, 0x14, 0xB8, 0xAC, | ||
286 | 0x35, 0xE2, 0xAA, 0x0B, 0x5C, 0xF8, 0x38, 0x4D, 0x04, 0xEE, 0xA9, 0x97, | ||
287 | 0x70, 0xFB, 0x5E, 0xE7, 0xB7, 0xE3, 0x62, 0x23, 0x4B, 0x38, 0xBE, 0xD6, | ||
288 | 0x53, 0x15, 0xF7, 0xDF, 0x87, 0xB4, 0x0E, 0xCC, 0xB1, 0x1A, 0x11, 0x19, | ||
289 | 0xEE, 0x51, 0xCC, 0x92, 0xDD, 0xBC, 0x63, 0x29, 0x63, 0x0C, 0x59, 0xD7, | ||
290 | 0x6F, 0x4C, 0x3C, 0x37, 0x5B, 0x37, 0x03, 0x61, 0x7D, 0x24, 0x1C, 0x99, | ||
291 | 0x48, 0xAF, 0x82, 0xFE, 0x32, 0x41, 0x9B, 0xB2, 0xDB, 0xEA, 0xED, 0x76, | ||
292 | 0x8E, 0x6E, 0xCA, 0x7E, 0x4E, 0x14, 0xBA, 0x30, 0x84, 0x1C, 0xB3, 0x67, | ||
293 | 0xA3, 0x29, 0x80, 0x70, 0x54, 0x68, 0x7D, 0x49 | ||
294 | }; | ||
295 | |||
296 | static const unsigned char kat_RSA_X931_SHA256[] = { | ||
297 | 0x7E, 0xA2, 0x77, 0xFE, 0xB8, 0x54, 0x8A, 0xC7, 0x7F, 0x64, 0x54, 0x89, | ||
298 | 0xE5, 0x52, 0x15, 0x8E, 0x52, 0x96, 0x4E, 0xA6, 0x58, 0x92, 0x1C, 0xDD, | ||
299 | 0xEA, 0xA2, 0x2D, 0x5C, 0xD1, 0x62, 0x00, 0x49, 0x05, 0x95, 0x73, 0xCF, | ||
300 | 0x16, 0x76, 0x68, 0xF6, 0xC6, 0x5E, 0x80, 0xB8, 0xB8, 0x7B, 0xC8, 0x9B, | ||
301 | 0xC6, 0x53, 0x88, 0x26, 0x20, 0x88, 0x73, 0xB6, 0x13, 0xB8, 0xF0, 0x4B, | ||
302 | 0x00, 0x85, 0xF3, 0xDD, 0x07, 0x50, 0xEB, 0x20, 0xC4, 0x38, 0x0E, 0x98, | ||
303 | 0xAD, 0x4E, 0x49, 0x2C, 0xD7, 0x65, 0xA5, 0x19, 0x0E, 0x59, 0x01, 0xEC, | ||
304 | 0x7E, 0x75, 0x89, 0x69, 0x2E, 0x63, 0x76, 0x85, 0x46, 0x8D, 0xA0, 0x8C, | ||
305 | 0x33, 0x1D, 0x82, 0x8C, 0x03, 0xEA, 0x69, 0x88, 0x35, 0xA1, 0x42, 0xBD, | ||
306 | 0x21, 0xED, 0x8D, 0xBC, 0xBC, 0xDB, 0x30, 0xFF, 0x86, 0xF0, 0x5B, 0xDC, | ||
307 | 0xE3, 0xE2, 0xE8, 0x0A, 0x0A, 0x29, 0x94, 0x80 | ||
308 | }; | ||
309 | |||
310 | static const unsigned char kat_RSA_X931_SHA384[] = { | ||
311 | 0x5C, 0x7D, 0x96, 0x35, 0xEC, 0x7E, 0x11, 0x38, 0xBB, 0x7B, 0xEC, 0x7B, | ||
312 | 0xF2, 0x82, 0x8E, 0x99, 0xBD, 0xEF, 0xD8, 0xAE, 0xD7, 0x39, 0x37, 0xCB, | ||
313 | 0xE6, 0x4F, 0x5E, 0x0A, 0x13, 0xE4, 0x2E, 0x40, 0xB9, 0xBE, 0x2E, 0xE3, | ||
314 | 0xEF, 0x78, 0x83, 0x18, 0x44, 0x35, 0x9C, 0x8E, 0xD7, 0x4A, 0x63, 0xF6, | ||
315 | 0x57, 0xC2, 0xB0, 0x08, 0x51, 0x73, 0xCF, 0xCA, 0x99, 0x66, 0xEE, 0x31, | ||
316 | 0xD8, 0x69, 0xE9, 0xAB, 0x13, 0x27, 0x7B, 0x41, 0x1E, 0x6D, 0x8D, 0xF1, | ||
317 | 0x3E, 0x9C, 0x35, 0x95, 0x58, 0xDD, 0x2B, 0xD5, 0xA0, 0x60, 0x41, 0x79, | ||
318 | 0x24, 0x22, 0xE4, 0xB7, 0xBF, 0x47, 0x53, 0xF6, 0x34, 0xD5, 0x7C, 0xFF, | ||
319 | 0x0E, 0x09, 0xEE, 0x2E, 0xE2, 0x37, 0xB9, 0xDE, 0xC5, 0x12, 0x44, 0x35, | ||
320 | 0xEF, 0x01, 0xE6, 0x5E, 0x39, 0x31, 0x2D, 0x71, 0xA5, 0xDC, 0xC6, 0x6D, | ||
321 | 0xE2, 0xCD, 0x85, 0xDB, 0x73, 0x82, 0x65, 0x28 | ||
322 | }; | ||
323 | |||
324 | static const unsigned char kat_RSA_X931_SHA512[] = { | ||
325 | 0xA6, 0x65, 0xA2, 0x77, 0x4F, 0xB3, 0x86, 0xCB, 0x64, 0x3A, 0xC1, 0x63, | ||
326 | 0xFC, 0xA1, 0xAA, 0xCB, 0x9B, 0x79, 0xDD, 0x4B, 0xE1, 0xD9, 0xDA, 0xAC, | ||
327 | 0xE7, 0x47, 0x09, 0xB2, 0x11, 0x4B, 0x8A, 0xAA, 0x05, 0x9E, 0x77, 0xD7, | ||
328 | 0x3A, 0xBD, 0x5E, 0x53, 0x09, 0x4A, 0xE6, 0x0F, 0x5E, 0xF9, 0x14, 0x28, | ||
329 | 0xA0, 0x99, 0x74, 0x64, 0x70, 0x4E, 0xF2, 0xE3, 0xFA, 0xC7, 0xF8, 0xC5, | ||
330 | 0x6E, 0x2B, 0x79, 0x96, 0x0D, 0x0C, 0xC8, 0x10, 0x34, 0x53, 0xD2, 0xAF, | ||
331 | 0x17, 0x0E, 0xE0, 0xBF, 0x79, 0xF6, 0x04, 0x72, 0x10, 0xE0, 0xF6, 0xD0, | ||
332 | 0xCE, 0x8A, 0x6F, 0xA1, 0x95, 0x89, 0xBF, 0x58, 0x8F, 0x46, 0x5F, 0x09, | ||
333 | 0x9F, 0x09, 0xCA, 0x84, 0x15, 0x85, 0xE0, 0xED, 0x04, 0x2D, 0xFB, 0x7C, | ||
334 | 0x36, 0x35, 0x21, 0x31, 0xC3, 0xFD, 0x92, 0x42, 0x11, 0x30, 0x71, 0x1B, | ||
335 | 0x60, 0x83, 0x18, 0x88, 0xA3, 0xF5, 0x59, 0xC3 | ||
336 | }; | ||
337 | |||
338 | |||
148 | int FIPS_selftest_rsa() | 339 | int FIPS_selftest_rsa() |
149 | { | ||
150 | int clen; | ||
151 | RSA *key; | ||
152 | unsigned char expected_ctext[256]; | ||
153 | unsigned char ctext[256]; | ||
154 | unsigned char ptext[256]; | ||
155 | static unsigned char original_ptext[] = | ||
156 | "\x01\x23\x45\x67\x89\xab\xcd\xef\x12\x34\x56\x78\x9a\xbc\xde\xf0" | ||
157 | "\x23\x45\x67\x89\xab\xcd\xef\x12\x34\x56\x78\x9a\xbc\xde\xf0\x12" | ||
158 | "\x45\x67\x89\xab\xcd\xef\x12\x34\x56\x78\x9a\xbc\xde\xf0\x12\x34" | ||
159 | "\x67\x89\xab\xcd\xef\x12\x34\x56\x78\x9a\xbc\xde\xf0\x12\x34\x56" | ||
160 | "\x89\xab\xcd\xef\x12\x34\x56\x78\x9a\xbc\xde\xf0\x12\x34\x56\x78" | ||
161 | "\xab\xcd\xef\x12\x34\x56\x78\x9a\xbc\xde\xf0\x12\x34\x56\x78\x9a" | ||
162 | "\xcd\xef\x12\x34\x56\x78\x9a\xbc\xde\xf0\x12\x34\x56\x78\x9a\xbc" | ||
163 | "\xef\x12\x34\x56\x78\x9a\xbc\xde\xf0\x12\x34\x56\x78\x9a\xbc\xde" | ||
164 | "\xf0\x12\x34\x56\x78\x9a\xbc\xde\xf0\x12\x34\x56\x78\x9a\xbc\xde"; | ||
165 | unsigned char md[SHA_DIGEST_LENGTH]; | ||
166 | unsigned char mdkat[SHA_DIGEST_LENGTH] = | ||
167 | "\x2d\x57\x1d\x6f\x5c\x37\xf9\xf0\x3b\xb4\x3c\xe8\x2c\x4c\xb3\x04" | ||
168 | "\x75\xa2\x0e\xfb"; | ||
169 | unsigned char ctextkat[] = | ||
170 | "\x3e\xc5\x0a\xbe\x29\xa2\xca\x9a\x35\x14\x17\x26\xa4\x0f\xa3\x03" | ||
171 | "\x65\xb5\x37\xf5\x6a\xaa\xb\xf\x2c\x0d\x8\xc0\x73\x8\x3c\x88\x85" | ||
172 | "\x36\x68\x16\xfe\x2f\x59\x77\x7e\x2a\x76\x9a\xc7\x27\x19\x9b\x54" | ||
173 | "\x14\x87\xf3\xe0\xce\x1e\x68\x10\x40\x14\xac\xbc\xe6\x6f\x26\x1f" | ||
174 | "\x55\xd1\x15\x81\x48\x10\xf4\x89\xe5\x67\x52\x42\x87\x04\x74\x4e" | ||
175 | "\x96\x14\x7c\x53\xc9\x1e\x84\x11\x7d\x7d\x23\xbd\xff\x6c\xcb\x00" | ||
176 | "\x96\x2e\x7d\xfb\x47\xea\x78\xcd\xd8\x04\x3a\x98\x06\x13\x68\x39" | ||
177 | "\xa1\xe2\xbc\x9f\x64\xc7\x62\xf0\x74\x4d\x42\xe0\x0b\xcf\x24\x48"; | ||
178 | int i; | ||
179 | |||
180 | /* Perform pairwise consistency test by: ... */ | ||
181 | |||
182 | key=RSA_new(); | ||
183 | clen=setrsakey(key,expected_ctext); | ||
184 | /* ...1) apply public key to plaintext, resulting ciphertext must be | ||
185 | * different | ||
186 | */ | ||
187 | i=RSA_public_encrypt(128,original_ptext,ctext,key, | ||
188 | RSA_NO_PADDING); | ||
189 | if(i != clen || memcmp(ctext,expected_ctext,i)) | ||
190 | { | ||
191 | FIPSerr(FIPS_F_FIPS_SELFTEST_RSA,FIPS_R_SELFTEST_FAILED); | ||
192 | return 0; | ||
193 | } | ||
194 | if(!memcmp(ctext,original_ptext,i)) | ||
195 | { | ||
196 | FIPSerr(FIPS_F_FIPS_SELFTEST_RSA,FIPS_R_SELFTEST_FAILED); | ||
197 | return 0; | ||
198 | } | ||
199 | /* ...2) apply private key to ciphertext and compare result to | ||
200 | * original plaintext; results must be equal | ||
201 | */ | ||
202 | i=RSA_private_decrypt(i,ctext,ptext,key,RSA_NO_PADDING); | ||
203 | if(i != 128 || memcmp(ptext,original_ptext,i)) | ||
204 | { | 340 | { |
205 | FIPSerr(FIPS_F_FIPS_SELFTEST_RSA,FIPS_R_SELFTEST_FAILED); | 341 | int ret = 0; |
206 | return 0; | 342 | RSA *key = NULL; |
207 | } | 343 | EVP_PKEY pk; |
344 | key=FIPS_rsa_new(); | ||
345 | setrsakey(key); | ||
346 | pk.type = EVP_PKEY_RSA; | ||
347 | pk.pkey.rsa = key; | ||
208 | 348 | ||
209 | /* Perform sign and verify Known Answer Test by... */ | 349 | if (!fips_pkey_signature_test(&pk, kat_tbs, sizeof(kat_tbs) - 1, |
350 | kat_RSA_SHA1, sizeof(kat_RSA_SHA1), | ||
351 | EVP_sha1(), EVP_MD_CTX_FLAG_PAD_PKCS1, | ||
352 | "RSA SHA1 PKCS#1")) | ||
353 | goto err; | ||
354 | if (!fips_pkey_signature_test(&pk, kat_tbs, sizeof(kat_tbs) - 1, | ||
355 | kat_RSA_SHA224, sizeof(kat_RSA_SHA224), | ||
356 | EVP_sha224(), EVP_MD_CTX_FLAG_PAD_PKCS1, | ||
357 | "RSA SHA224 PKCS#1")) | ||
358 | goto err; | ||
359 | if (!fips_pkey_signature_test(&pk, kat_tbs, sizeof(kat_tbs) - 1, | ||
360 | kat_RSA_SHA256, sizeof(kat_RSA_SHA256), | ||
361 | EVP_sha256(), EVP_MD_CTX_FLAG_PAD_PKCS1, | ||
362 | "RSA SHA256 PKCS#1")) | ||
363 | goto err; | ||
364 | if (!fips_pkey_signature_test(&pk, kat_tbs, sizeof(kat_tbs) - 1, | ||
365 | kat_RSA_SHA384, sizeof(kat_RSA_SHA384), | ||
366 | EVP_sha384(), EVP_MD_CTX_FLAG_PAD_PKCS1, | ||
367 | "RSA SHA384 PKCS#1")) | ||
368 | goto err; | ||
369 | if (!fips_pkey_signature_test(&pk, kat_tbs, sizeof(kat_tbs) - 1, | ||
370 | kat_RSA_SHA512, sizeof(kat_RSA_SHA512), | ||
371 | EVP_sha512(), EVP_MD_CTX_FLAG_PAD_PKCS1, | ||
372 | "RSA SHA512 PKCS#1")) | ||
373 | goto err; | ||
210 | 374 | ||
211 | /* ...1) using the same RSA key to encrypt the SHA-1 hash of a | 375 | if (!fips_pkey_signature_test(&pk, kat_tbs, sizeof(kat_tbs) - 1, |
212 | * plaintext value larger than the RSA key size | 376 | kat_RSA_PSS_SHA1, sizeof(kat_RSA_PSS_SHA1), |
213 | */ | 377 | EVP_sha1(), EVP_MD_CTX_FLAG_PAD_PSS, |
214 | if (RSA_size(key) >= sizeof(original_ptext) - 1) | 378 | "RSA SHA1 PSS")) |
215 | { | 379 | goto err; |
216 | FIPSerr(FIPS_F_FIPS_SELFTEST_RSA,FIPS_R_SELFTEST_FAILED); | 380 | if (!fips_pkey_signature_test(&pk, kat_tbs, sizeof(kat_tbs) - 1, |
217 | return 0; | 381 | kat_RSA_PSS_SHA224, sizeof(kat_RSA_PSS_SHA224), |
218 | } | 382 | EVP_sha224(), EVP_MD_CTX_FLAG_PAD_PSS, |
219 | /* ...2) then generate the SHA-1 digest of plaintext, and compare the | 383 | "RSA SHA224 PSS")) |
220 | * digest to the Known Answer (note here we duplicate the SHA-1 KAT) | 384 | goto err; |
221 | */ | 385 | if (!fips_pkey_signature_test(&pk, kat_tbs, sizeof(kat_tbs) - 1, |
222 | SHA1(original_ptext,sizeof(original_ptext) - 1,md); | 386 | kat_RSA_PSS_SHA256, sizeof(kat_RSA_PSS_SHA256), |
223 | if(memcmp(md,mdkat,SHA_DIGEST_LENGTH)) | 387 | EVP_sha256(), EVP_MD_CTX_FLAG_PAD_PSS, |
224 | { | 388 | "RSA SHA256 PSS")) |
225 | FIPSerr(FIPS_F_FIPS_SELFTEST_SHA1,FIPS_R_SELFTEST_FAILED); | 389 | goto err; |
226 | return 0; | 390 | if (!fips_pkey_signature_test(&pk, kat_tbs, sizeof(kat_tbs) - 1, |
227 | } | 391 | kat_RSA_PSS_SHA384, sizeof(kat_RSA_PSS_SHA384), |
228 | /* ...3) then encrypt the digest, and compare the ciphertext | 392 | EVP_sha384(), EVP_MD_CTX_FLAG_PAD_PSS, |
229 | * to the Known Answer | 393 | "RSA SHA384 PSS")) |
230 | */ | 394 | goto err; |
231 | i=RSA_private_encrypt(sizeof(md),md,ctext,key,RSA_PKCS1_PADDING); | 395 | if (!fips_pkey_signature_test(&pk, kat_tbs, sizeof(kat_tbs) - 1, |
232 | if(i != clen || memcmp(ctextkat,ctext,i)) | 396 | kat_RSA_PSS_SHA512, sizeof(kat_RSA_PSS_SHA512), |
233 | { | 397 | EVP_sha512(), EVP_MD_CTX_FLAG_PAD_PSS, |
234 | FIPSerr(FIPS_F_FIPS_SELFTEST_RSA,FIPS_R_SELFTEST_FAILED); | 398 | "RSA SHA512 PSS")) |
235 | return 0; | 399 | goto err; |
236 | } | ||
237 | /* ...4) and finally decrypt the signed digest and compare with | ||
238 | * the original Known Answer | ||
239 | */ | ||
240 | i=RSA_public_decrypt(i,ctext,md,key,RSA_PKCS1_PADDING); | ||
241 | if(i != sizeof(md) || memcmp(mdkat,md,i)) | ||
242 | { | ||
243 | FIPSerr(FIPS_F_FIPS_SELFTEST_RSA,FIPS_R_SELFTEST_FAILED); | ||
244 | return 0; | ||
245 | } | ||
246 | 400 | ||
247 | RSA_free(key); | 401 | |
248 | return 1; | 402 | if (!fips_pkey_signature_test(&pk, kat_tbs, sizeof(kat_tbs) - 1, |
249 | } | 403 | kat_RSA_X931_SHA1, sizeof(kat_RSA_X931_SHA1), |
404 | EVP_sha1(), EVP_MD_CTX_FLAG_PAD_X931, | ||
405 | "RSA SHA1 X931")) | ||
406 | goto err; | ||
407 | /* NB: SHA224 not supported in X9.31 */ | ||
408 | if (!fips_pkey_signature_test(&pk, kat_tbs, sizeof(kat_tbs) - 1, | ||
409 | kat_RSA_X931_SHA256, sizeof(kat_RSA_X931_SHA256), | ||
410 | EVP_sha256(), EVP_MD_CTX_FLAG_PAD_X931, | ||
411 | "RSA SHA256 X931")) | ||
412 | goto err; | ||
413 | if (!fips_pkey_signature_test(&pk, kat_tbs, sizeof(kat_tbs) - 1, | ||
414 | kat_RSA_X931_SHA384, sizeof(kat_RSA_X931_SHA384), | ||
415 | EVP_sha384(), EVP_MD_CTX_FLAG_PAD_X931, | ||
416 | "RSA SHA384 X931")) | ||
417 | goto err; | ||
418 | if (!fips_pkey_signature_test(&pk, kat_tbs, sizeof(kat_tbs) - 1, | ||
419 | kat_RSA_X931_SHA512, sizeof(kat_RSA_X931_SHA512), | ||
420 | EVP_sha512(), EVP_MD_CTX_FLAG_PAD_X931, | ||
421 | "RSA SHA512 X931")) | ||
422 | goto err; | ||
423 | |||
424 | |||
425 | ret = 1; | ||
426 | |||
427 | err: | ||
428 | FIPS_rsa_free(key); | ||
429 | return ret; | ||
430 | } | ||
250 | 431 | ||
251 | #endif /* def OPENSSL_FIPS */ | 432 | #endif /* def OPENSSL_FIPS */ |
diff --git a/src/lib/libssl/src/fips/rsa/fips_rsa_sign.c b/src/lib/libssl/src/fips/rsa/fips_rsa_sign.c new file mode 100644 index 0000000000..37364621d1 --- /dev/null +++ b/src/lib/libssl/src/fips/rsa/fips_rsa_sign.c | |||
@@ -0,0 +1,554 @@ | |||
1 | /* fips_rsa_sign.c */ | ||
2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | ||
3 | * project 2007. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 2007 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <string.h> | ||
60 | #include <openssl/evp.h> | ||
61 | #include <openssl/rsa.h> | ||
62 | #include <openssl/err.h> | ||
63 | #include <openssl/sha.h> | ||
64 | |||
65 | #ifdef OPENSSL_FIPS | ||
66 | |||
67 | /* FIPS versions of RSA_sign() and RSA_verify(). | ||
68 | * These will only have to deal with SHA* signatures and by including | ||
69 | * pregenerated encodings all ASN1 dependencies can be avoided | ||
70 | */ | ||
71 | |||
72 | /* Standard encodings including NULL parameter */ | ||
73 | |||
74 | static const unsigned char sha1_bin[] = { | ||
75 | 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, | ||
76 | 0x00, 0x04, 0x14 | ||
77 | }; | ||
78 | |||
79 | static const unsigned char sha224_bin[] = { | ||
80 | 0x30, 0x2d, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, | ||
81 | 0x04, 0x02, 0x04, 0x05, 0x00, 0x04, 0x1c | ||
82 | }; | ||
83 | |||
84 | static const unsigned char sha256_bin[] = { | ||
85 | 0x30, 0x31, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, | ||
86 | 0x04, 0x02, 0x01, 0x05, 0x00, 0x04, 0x20 | ||
87 | }; | ||
88 | |||
89 | static const unsigned char sha384_bin[] = { | ||
90 | 0x30, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, | ||
91 | 0x04, 0x02, 0x02, 0x05, 0x00, 0x04, 0x30 | ||
92 | }; | ||
93 | |||
94 | static const unsigned char sha512_bin[] = { | ||
95 | 0x30, 0x51, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, | ||
96 | 0x04, 0x02, 0x03, 0x05, 0x00, 0x04, 0x40 | ||
97 | }; | ||
98 | |||
99 | /* Alternate encodings with absent parameters. We don't generate signature | ||
100 | * using this format but do tolerate received signatures of this form. | ||
101 | */ | ||
102 | |||
103 | static unsigned char sha1_nn_bin[] = { | ||
104 | 0x30, 0x1f, 0x30, 0x07, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x04, | ||
105 | 0x14 | ||
106 | }; | ||
107 | |||
108 | static unsigned char sha224_nn_bin[] = { | ||
109 | 0x30, 0x2b, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, | ||
110 | 0x04, 0x02, 0x04, 0x04, 0x1c | ||
111 | }; | ||
112 | |||
113 | static unsigned char sha256_nn_bin[] = { | ||
114 | 0x30, 0x2f, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, | ||
115 | 0x04, 0x02, 0x01, 0x04, 0x20 | ||
116 | }; | ||
117 | |||
118 | static unsigned char sha384_nn_bin[] = { | ||
119 | 0x30, 0x3f, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, | ||
120 | 0x04, 0x02, 0x02, 0x04, 0x30 | ||
121 | }; | ||
122 | |||
123 | static unsigned char sha512_nn_bin[] = { | ||
124 | 0x30, 0x4f, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, | ||
125 | 0x04, 0x02, 0x03, 0x04, 0x40 | ||
126 | }; | ||
127 | |||
128 | |||
129 | static const unsigned char *fips_digestinfo_encoding(int nid, unsigned int *len) | ||
130 | { | ||
131 | switch (nid) | ||
132 | { | ||
133 | |||
134 | case NID_sha1: | ||
135 | *len = sizeof(sha1_bin); | ||
136 | return sha1_bin; | ||
137 | |||
138 | case NID_sha224: | ||
139 | *len = sizeof(sha224_bin); | ||
140 | return sha224_bin; | ||
141 | |||
142 | case NID_sha256: | ||
143 | *len = sizeof(sha256_bin); | ||
144 | return sha256_bin; | ||
145 | |||
146 | case NID_sha384: | ||
147 | *len = sizeof(sha384_bin); | ||
148 | return sha384_bin; | ||
149 | |||
150 | case NID_sha512: | ||
151 | *len = sizeof(sha512_bin); | ||
152 | return sha512_bin; | ||
153 | |||
154 | default: | ||
155 | return NULL; | ||
156 | |||
157 | } | ||
158 | } | ||
159 | |||
160 | static const unsigned char *fips_digestinfo_nn_encoding(int nid, unsigned int *len) | ||
161 | { | ||
162 | switch (nid) | ||
163 | { | ||
164 | |||
165 | case NID_sha1: | ||
166 | *len = sizeof(sha1_nn_bin); | ||
167 | return sha1_nn_bin; | ||
168 | |||
169 | case NID_sha224: | ||
170 | *len = sizeof(sha224_nn_bin); | ||
171 | return sha224_nn_bin; | ||
172 | |||
173 | case NID_sha256: | ||
174 | *len = sizeof(sha256_nn_bin); | ||
175 | return sha256_nn_bin; | ||
176 | |||
177 | case NID_sha384: | ||
178 | *len = sizeof(sha384_nn_bin); | ||
179 | return sha384_nn_bin; | ||
180 | |||
181 | case NID_sha512: | ||
182 | *len = sizeof(sha512_nn_bin); | ||
183 | return sha512_nn_bin; | ||
184 | |||
185 | default: | ||
186 | return NULL; | ||
187 | |||
188 | } | ||
189 | } | ||
190 | |||
191 | static int fips_rsa_sign(int type, const unsigned char *x, unsigned int y, | ||
192 | unsigned char *sigret, unsigned int *siglen, EVP_MD_SVCTX *sv) | ||
193 | { | ||
194 | int i=0,j,ret=0; | ||
195 | unsigned int dlen; | ||
196 | const unsigned char *der; | ||
197 | unsigned int m_len; | ||
198 | int pad_mode = sv->mctx->flags & EVP_MD_CTX_FLAG_PAD_MASK; | ||
199 | int rsa_pad_mode = 0; | ||
200 | RSA *rsa = sv->key; | ||
201 | /* Largest DigestInfo: 19 (max encoding) + max MD */ | ||
202 | unsigned char tmpdinfo[19 + EVP_MAX_MD_SIZE]; | ||
203 | unsigned char md[EVP_MAX_MD_SIZE + 1]; | ||
204 | |||
205 | EVP_DigestFinal_ex(sv->mctx, md, &m_len); | ||
206 | |||
207 | if((rsa->flags & RSA_FLAG_SIGN_VER) && rsa->meth->rsa_sign) | ||
208 | { | ||
209 | ret = rsa->meth->rsa_sign(type, md, m_len, | ||
210 | sigret, siglen, rsa); | ||
211 | goto done; | ||
212 | } | ||
213 | |||
214 | if (pad_mode == EVP_MD_CTX_FLAG_PAD_X931) | ||
215 | { | ||
216 | int hash_id; | ||
217 | memcpy(tmpdinfo, md, m_len); | ||
218 | hash_id = RSA_X931_hash_id(M_EVP_MD_CTX_type(sv->mctx)); | ||
219 | if (hash_id == -1) | ||
220 | { | ||
221 | RSAerr(RSA_F_FIPS_RSA_SIGN,RSA_R_UNKNOWN_ALGORITHM_TYPE); | ||
222 | return 0; | ||
223 | } | ||
224 | tmpdinfo[m_len] = (unsigned char)hash_id; | ||
225 | i = m_len + 1; | ||
226 | rsa_pad_mode = RSA_X931_PADDING; | ||
227 | } | ||
228 | else if (pad_mode == EVP_MD_CTX_FLAG_PAD_PKCS1) | ||
229 | { | ||
230 | |||
231 | der = fips_digestinfo_encoding(type, &dlen); | ||
232 | |||
233 | if (!der) | ||
234 | { | ||
235 | RSAerr(RSA_F_FIPS_RSA_SIGN,RSA_R_UNKNOWN_ALGORITHM_TYPE); | ||
236 | return 0; | ||
237 | } | ||
238 | memcpy(tmpdinfo, der, dlen); | ||
239 | memcpy(tmpdinfo + dlen, md, m_len); | ||
240 | |||
241 | i = dlen + m_len; | ||
242 | rsa_pad_mode = RSA_PKCS1_PADDING; | ||
243 | |||
244 | } | ||
245 | else if (pad_mode == EVP_MD_CTX_FLAG_PAD_PSS) | ||
246 | { | ||
247 | unsigned char *sbuf; | ||
248 | int saltlen; | ||
249 | i = RSA_size(rsa); | ||
250 | sbuf = OPENSSL_malloc(RSA_size(rsa)); | ||
251 | saltlen = M_EVP_MD_CTX_FLAG_PSS_SALT(sv->mctx); | ||
252 | if (saltlen == EVP_MD_CTX_FLAG_PSS_MDLEN) | ||
253 | saltlen = -1; | ||
254 | else if (saltlen == EVP_MD_CTX_FLAG_PSS_MREC) | ||
255 | saltlen = -2; | ||
256 | if (!sbuf) | ||
257 | { | ||
258 | RSAerr(RSA_F_FIPS_RSA_SIGN,ERR_R_MALLOC_FAILURE); | ||
259 | goto psserr; | ||
260 | } | ||
261 | if (!RSA_padding_add_PKCS1_PSS(rsa, sbuf, md, | ||
262 | M_EVP_MD_CTX_md(sv->mctx), saltlen)) | ||
263 | goto psserr; | ||
264 | j=rsa->meth->rsa_priv_enc(i,sbuf,sigret,rsa,RSA_NO_PADDING); | ||
265 | if (j > 0) | ||
266 | { | ||
267 | ret=1; | ||
268 | *siglen=j; | ||
269 | } | ||
270 | psserr: | ||
271 | OPENSSL_cleanse(md,m_len); | ||
272 | OPENSSL_cleanse(sbuf, i); | ||
273 | OPENSSL_free(sbuf); | ||
274 | return ret; | ||
275 | } | ||
276 | |||
277 | j=RSA_size(rsa); | ||
278 | if (i > (j-RSA_PKCS1_PADDING_SIZE)) | ||
279 | { | ||
280 | RSAerr(RSA_F_FIPS_RSA_SIGN,RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY); | ||
281 | goto done; | ||
282 | } | ||
283 | /* NB: call underlying method directly to avoid FIPS blocking */ | ||
284 | j=rsa->meth->rsa_priv_enc(i,tmpdinfo,sigret,rsa,rsa_pad_mode); | ||
285 | if (j > 0) | ||
286 | { | ||
287 | ret=1; | ||
288 | *siglen=j; | ||
289 | } | ||
290 | |||
291 | done: | ||
292 | OPENSSL_cleanse(tmpdinfo,i); | ||
293 | OPENSSL_cleanse(md,m_len); | ||
294 | return ret; | ||
295 | } | ||
296 | |||
297 | static int fips_rsa_verify(int dtype, | ||
298 | const unsigned char *x, unsigned int y, | ||
299 | unsigned char *sigbuf, unsigned int siglen, EVP_MD_SVCTX *sv) | ||
300 | { | ||
301 | int i,ret=0; | ||
302 | unsigned int dlen, diglen; | ||
303 | int pad_mode = sv->mctx->flags & EVP_MD_CTX_FLAG_PAD_MASK; | ||
304 | int rsa_pad_mode = 0; | ||
305 | unsigned char *s; | ||
306 | const unsigned char *der; | ||
307 | unsigned char dig[EVP_MAX_MD_SIZE]; | ||
308 | RSA *rsa = sv->key; | ||
309 | |||
310 | if (siglen != (unsigned int)RSA_size(sv->key)) | ||
311 | { | ||
312 | RSAerr(RSA_F_FIPS_RSA_VERIFY,RSA_R_WRONG_SIGNATURE_LENGTH); | ||
313 | return(0); | ||
314 | } | ||
315 | |||
316 | EVP_DigestFinal_ex(sv->mctx, dig, &diglen); | ||
317 | |||
318 | if((rsa->flags & RSA_FLAG_SIGN_VER) && rsa->meth->rsa_verify) | ||
319 | { | ||
320 | return rsa->meth->rsa_verify(dtype, dig, diglen, | ||
321 | sigbuf, siglen, rsa); | ||
322 | } | ||
323 | |||
324 | |||
325 | s= OPENSSL_malloc((unsigned int)siglen); | ||
326 | if (s == NULL) | ||
327 | { | ||
328 | RSAerr(RSA_F_FIPS_RSA_VERIFY,ERR_R_MALLOC_FAILURE); | ||
329 | goto err; | ||
330 | } | ||
331 | if (pad_mode == EVP_MD_CTX_FLAG_PAD_X931) | ||
332 | rsa_pad_mode = RSA_X931_PADDING; | ||
333 | else if (pad_mode == EVP_MD_CTX_FLAG_PAD_PKCS1) | ||
334 | rsa_pad_mode = RSA_PKCS1_PADDING; | ||
335 | else if (pad_mode == EVP_MD_CTX_FLAG_PAD_PSS) | ||
336 | rsa_pad_mode = RSA_NO_PADDING; | ||
337 | |||
338 | /* NB: call underlying method directly to avoid FIPS blocking */ | ||
339 | i=rsa->meth->rsa_pub_dec((int)siglen,sigbuf,s, rsa, rsa_pad_mode); | ||
340 | |||
341 | if (i <= 0) goto err; | ||
342 | |||
343 | if (pad_mode == EVP_MD_CTX_FLAG_PAD_X931) | ||
344 | { | ||
345 | int hash_id; | ||
346 | if (i != (int)(diglen + 1)) | ||
347 | { | ||
348 | RSAerr(RSA_F_FIPS_RSA_VERIFY,RSA_R_BAD_SIGNATURE); | ||
349 | goto err; | ||
350 | } | ||
351 | hash_id = RSA_X931_hash_id(M_EVP_MD_CTX_type(sv->mctx)); | ||
352 | if (hash_id == -1) | ||
353 | { | ||
354 | RSAerr(RSA_F_FIPS_RSA_VERIFY,RSA_R_UNKNOWN_ALGORITHM_TYPE); | ||
355 | goto err; | ||
356 | } | ||
357 | if (s[diglen] != (unsigned char)hash_id) | ||
358 | { | ||
359 | RSAerr(RSA_F_FIPS_RSA_VERIFY,RSA_R_BAD_SIGNATURE); | ||
360 | goto err; | ||
361 | } | ||
362 | if (memcmp(s, dig, diglen)) | ||
363 | { | ||
364 | RSAerr(RSA_F_FIPS_RSA_VERIFY,RSA_R_BAD_SIGNATURE); | ||
365 | goto err; | ||
366 | } | ||
367 | ret = 1; | ||
368 | } | ||
369 | else if (pad_mode == EVP_MD_CTX_FLAG_PAD_PKCS1) | ||
370 | { | ||
371 | |||
372 | der = fips_digestinfo_encoding(dtype, &dlen); | ||
373 | |||
374 | if (!der) | ||
375 | { | ||
376 | RSAerr(RSA_F_FIPS_RSA_VERIFY,RSA_R_UNKNOWN_ALGORITHM_TYPE); | ||
377 | return(0); | ||
378 | } | ||
379 | |||
380 | /* Compare, DigestInfo length, DigestInfo header and finally | ||
381 | * digest value itself | ||
382 | */ | ||
383 | |||
384 | /* If length mismatch try alternate encoding */ | ||
385 | if (i != (int)(dlen + diglen)) | ||
386 | der = fips_digestinfo_nn_encoding(dtype, &dlen); | ||
387 | |||
388 | if ((i != (int)(dlen + diglen)) || memcmp(der, s, dlen) | ||
389 | || memcmp(s + dlen, dig, diglen)) | ||
390 | { | ||
391 | RSAerr(RSA_F_FIPS_RSA_VERIFY,RSA_R_BAD_SIGNATURE); | ||
392 | goto err; | ||
393 | } | ||
394 | ret = 1; | ||
395 | |||
396 | } | ||
397 | else if (pad_mode == EVP_MD_CTX_FLAG_PAD_PSS) | ||
398 | { | ||
399 | int saltlen; | ||
400 | saltlen = M_EVP_MD_CTX_FLAG_PSS_SALT(sv->mctx); | ||
401 | if (saltlen == EVP_MD_CTX_FLAG_PSS_MDLEN) | ||
402 | saltlen = -1; | ||
403 | else if (saltlen == EVP_MD_CTX_FLAG_PSS_MREC) | ||
404 | saltlen = -2; | ||
405 | ret = RSA_verify_PKCS1_PSS(rsa, dig, M_EVP_MD_CTX_md(sv->mctx), | ||
406 | s, saltlen); | ||
407 | if (ret < 0) | ||
408 | ret = 0; | ||
409 | } | ||
410 | err: | ||
411 | if (s != NULL) | ||
412 | { | ||
413 | OPENSSL_cleanse(s, siglen); | ||
414 | OPENSSL_free(s); | ||
415 | } | ||
416 | return(ret); | ||
417 | } | ||
418 | |||
419 | #define EVP_PKEY_RSA_fips_method \ | ||
420 | (evp_sign_method *)fips_rsa_sign, \ | ||
421 | (evp_verify_method *)fips_rsa_verify, \ | ||
422 | {EVP_PKEY_RSA,EVP_PKEY_RSA2,0,0} | ||
423 | |||
424 | static int init(EVP_MD_CTX *ctx) | ||
425 | { return SHA1_Init(ctx->md_data); } | ||
426 | |||
427 | static int update(EVP_MD_CTX *ctx,const void *data,size_t count) | ||
428 | { return SHA1_Update(ctx->md_data,data,count); } | ||
429 | |||
430 | static int final(EVP_MD_CTX *ctx,unsigned char *md) | ||
431 | { return SHA1_Final(md,ctx->md_data); } | ||
432 | |||
433 | static const EVP_MD sha1_md= | ||
434 | { | ||
435 | NID_sha1, | ||
436 | NID_sha1WithRSAEncryption, | ||
437 | SHA_DIGEST_LENGTH, | ||
438 | EVP_MD_FLAG_FIPS|EVP_MD_FLAG_SVCTX, | ||
439 | init, | ||
440 | update, | ||
441 | final, | ||
442 | NULL, | ||
443 | NULL, | ||
444 | EVP_PKEY_RSA_fips_method, | ||
445 | SHA_CBLOCK, | ||
446 | sizeof(EVP_MD *)+sizeof(SHA_CTX), | ||
447 | }; | ||
448 | |||
449 | const EVP_MD *EVP_sha1(void) | ||
450 | { | ||
451 | return(&sha1_md); | ||
452 | } | ||
453 | |||
454 | static int init224(EVP_MD_CTX *ctx) | ||
455 | { return SHA224_Init(ctx->md_data); } | ||
456 | static int init256(EVP_MD_CTX *ctx) | ||
457 | { return SHA256_Init(ctx->md_data); } | ||
458 | /* | ||
459 | * Even though there're separate SHA224_[Update|Final], we call | ||
460 | * SHA256 functions even in SHA224 context. This is what happens | ||
461 | * there anyway, so we can spare few CPU cycles:-) | ||
462 | */ | ||
463 | static int update256(EVP_MD_CTX *ctx,const void *data,size_t count) | ||
464 | { return SHA256_Update(ctx->md_data,data,count); } | ||
465 | static int final256(EVP_MD_CTX *ctx,unsigned char *md) | ||
466 | { return SHA256_Final(md,ctx->md_data); } | ||
467 | |||
468 | static const EVP_MD sha224_md= | ||
469 | { | ||
470 | NID_sha224, | ||
471 | NID_sha224WithRSAEncryption, | ||
472 | SHA224_DIGEST_LENGTH, | ||
473 | EVP_MD_FLAG_FIPS|EVP_MD_FLAG_SVCTX, | ||
474 | init224, | ||
475 | update256, | ||
476 | final256, | ||
477 | NULL, | ||
478 | NULL, | ||
479 | EVP_PKEY_RSA_fips_method, | ||
480 | SHA256_CBLOCK, | ||
481 | sizeof(EVP_MD *)+sizeof(SHA256_CTX), | ||
482 | }; | ||
483 | |||
484 | const EVP_MD *EVP_sha224(void) | ||
485 | { return(&sha224_md); } | ||
486 | |||
487 | static const EVP_MD sha256_md= | ||
488 | { | ||
489 | NID_sha256, | ||
490 | NID_sha256WithRSAEncryption, | ||
491 | SHA256_DIGEST_LENGTH, | ||
492 | EVP_MD_FLAG_FIPS|EVP_MD_FLAG_SVCTX, | ||
493 | init256, | ||
494 | update256, | ||
495 | final256, | ||
496 | NULL, | ||
497 | NULL, | ||
498 | EVP_PKEY_RSA_fips_method, | ||
499 | SHA256_CBLOCK, | ||
500 | sizeof(EVP_MD *)+sizeof(SHA256_CTX), | ||
501 | }; | ||
502 | |||
503 | const EVP_MD *EVP_sha256(void) | ||
504 | { return(&sha256_md); } | ||
505 | |||
506 | static int init384(EVP_MD_CTX *ctx) | ||
507 | { return SHA384_Init(ctx->md_data); } | ||
508 | static int init512(EVP_MD_CTX *ctx) | ||
509 | { return SHA512_Init(ctx->md_data); } | ||
510 | /* See comment in SHA224/256 section */ | ||
511 | static int update512(EVP_MD_CTX *ctx,const void *data,size_t count) | ||
512 | { return SHA512_Update(ctx->md_data,data,count); } | ||
513 | static int final512(EVP_MD_CTX *ctx,unsigned char *md) | ||
514 | { return SHA512_Final(md,ctx->md_data); } | ||
515 | |||
516 | static const EVP_MD sha384_md= | ||
517 | { | ||
518 | NID_sha384, | ||
519 | NID_sha384WithRSAEncryption, | ||
520 | SHA384_DIGEST_LENGTH, | ||
521 | EVP_MD_FLAG_FIPS|EVP_MD_FLAG_SVCTX, | ||
522 | init384, | ||
523 | update512, | ||
524 | final512, | ||
525 | NULL, | ||
526 | NULL, | ||
527 | EVP_PKEY_RSA_fips_method, | ||
528 | SHA512_CBLOCK, | ||
529 | sizeof(EVP_MD *)+sizeof(SHA512_CTX), | ||
530 | }; | ||
531 | |||
532 | const EVP_MD *EVP_sha384(void) | ||
533 | { return(&sha384_md); } | ||
534 | |||
535 | static const EVP_MD sha512_md= | ||
536 | { | ||
537 | NID_sha512, | ||
538 | NID_sha512WithRSAEncryption, | ||
539 | SHA512_DIGEST_LENGTH, | ||
540 | EVP_MD_FLAG_FIPS|EVP_MD_FLAG_SVCTX, | ||
541 | init512, | ||
542 | update512, | ||
543 | final512, | ||
544 | NULL, | ||
545 | NULL, | ||
546 | EVP_PKEY_RSA_fips_method, | ||
547 | SHA512_CBLOCK, | ||
548 | sizeof(EVP_MD *)+sizeof(SHA512_CTX), | ||
549 | }; | ||
550 | |||
551 | const EVP_MD *EVP_sha512(void) | ||
552 | { return(&sha512_md); } | ||
553 | |||
554 | #endif | ||
diff --git a/src/lib/libssl/src/fips/rsa/fips_rsa_x931g.c b/src/lib/libssl/src/fips/rsa/fips_rsa_x931g.c new file mode 100644 index 0000000000..d9f9a81235 --- /dev/null +++ b/src/lib/libssl/src/fips/rsa/fips_rsa_x931g.c | |||
@@ -0,0 +1,280 @@ | |||
1 | /* crypto/rsa/rsa_gen.c */ | ||
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | ||
24 | * modification, are permitted provided that the following conditions | ||
25 | * are met: | ||
26 | * 1. Redistributions of source code must retain the copyright | ||
27 | * notice, this list of conditions and the following disclaimer. | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | ||
29 | * notice, this list of conditions and the following disclaimer in the | ||
30 | * documentation and/or other materials provided with the distribution. | ||
31 | * 3. All advertising materials mentioning features or use of this software | ||
32 | * must display the following acknowledgement: | ||
33 | * "This product includes cryptographic software written by | ||
34 | * Eric Young (eay@cryptsoft.com)" | ||
35 | * The word 'cryptographic' can be left out if the rouines from the library | ||
36 | * being used are not cryptographic related :-). | ||
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | ||
38 | * the apps directory (application code) you must include an acknowledgement: | ||
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | ||
40 | * | ||
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | ||
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
51 | * SUCH DAMAGE. | ||
52 | * | ||
53 | * The licence and distribution terms for any publically available version or | ||
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | ||
55 | * copied and put under another distribution licence | ||
56 | * [including the GNU Public Licence.] | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include <string.h> | ||
61 | #include <time.h> | ||
62 | #include <openssl/err.h> | ||
63 | #include <openssl/bn.h> | ||
64 | #include <openssl/rsa.h> | ||
65 | #include <openssl/fips.h> | ||
66 | |||
67 | #ifdef OPENSSL_FIPS | ||
68 | |||
69 | extern int fips_check_rsa(RSA *rsa); | ||
70 | |||
71 | |||
72 | /* X9.31 RSA key derivation and generation */ | ||
73 | |||
74 | int RSA_X931_derive_ex(RSA *rsa, BIGNUM *p1, BIGNUM *p2, BIGNUM *q1, BIGNUM *q2, | ||
75 | const BIGNUM *Xp1, const BIGNUM *Xp2, const BIGNUM *Xp, | ||
76 | const BIGNUM *Xq1, const BIGNUM *Xq2, const BIGNUM *Xq, | ||
77 | const BIGNUM *e, BN_GENCB *cb) | ||
78 | { | ||
79 | BIGNUM *r0=NULL,*r1=NULL,*r2=NULL,*r3=NULL; | ||
80 | BN_CTX *ctx=NULL,*ctx2=NULL; | ||
81 | |||
82 | if (!rsa) | ||
83 | goto err; | ||
84 | |||
85 | ctx = BN_CTX_new(); | ||
86 | BN_CTX_start(ctx); | ||
87 | if (!ctx) | ||
88 | goto err; | ||
89 | |||
90 | r0 = BN_CTX_get(ctx); | ||
91 | r1 = BN_CTX_get(ctx); | ||
92 | r2 = BN_CTX_get(ctx); | ||
93 | r3 = BN_CTX_get(ctx); | ||
94 | |||
95 | if (r3 == NULL) | ||
96 | goto err; | ||
97 | if (!rsa->e) | ||
98 | { | ||
99 | rsa->e = BN_dup(e); | ||
100 | if (!rsa->e) | ||
101 | goto err; | ||
102 | } | ||
103 | else | ||
104 | e = rsa->e; | ||
105 | |||
106 | /* If not all parameters present only calculate what we can. | ||
107 | * This allows test programs to output selective parameters. | ||
108 | */ | ||
109 | |||
110 | if (Xp && !rsa->p) | ||
111 | { | ||
112 | rsa->p = BN_new(); | ||
113 | if (!rsa->p) | ||
114 | goto err; | ||
115 | |||
116 | if (!BN_X931_derive_prime_ex(rsa->p, p1, p2, | ||
117 | Xp, Xp1, Xp2, e, ctx, cb)) | ||
118 | goto err; | ||
119 | } | ||
120 | |||
121 | if (Xq && !rsa->q) | ||
122 | { | ||
123 | rsa->q = BN_new(); | ||
124 | if (!rsa->q) | ||
125 | goto err; | ||
126 | if (!BN_X931_derive_prime_ex(rsa->q, q1, q2, | ||
127 | Xq, Xq1, Xq2, e, ctx, cb)) | ||
128 | goto err; | ||
129 | } | ||
130 | |||
131 | if (!rsa->p || !rsa->q) | ||
132 | { | ||
133 | BN_CTX_end(ctx); | ||
134 | BN_CTX_free(ctx); | ||
135 | return 2; | ||
136 | } | ||
137 | |||
138 | /* Since both primes are set we can now calculate all remaining | ||
139 | * components. | ||
140 | */ | ||
141 | |||
142 | /* calculate n */ | ||
143 | rsa->n=BN_new(); | ||
144 | if (rsa->n == NULL) | ||
145 | goto err; | ||
146 | if (!BN_mul(rsa->n,rsa->p,rsa->q,ctx)) | ||
147 | goto err; | ||
148 | |||
149 | /* calculate d */ | ||
150 | if (!BN_sub(r1,rsa->p,BN_value_one())) | ||
151 | goto err; /* p-1 */ | ||
152 | if (!BN_sub(r2,rsa->q,BN_value_one())) | ||
153 | goto err; /* q-1 */ | ||
154 | if (!BN_mul(r0,r1,r2,ctx)) | ||
155 | goto err; /* (p-1)(q-1) */ | ||
156 | |||
157 | if (!BN_gcd(r3, r1, r2, ctx)) | ||
158 | goto err; | ||
159 | |||
160 | if (!BN_div(r0, NULL, r0, r3, ctx)) | ||
161 | goto err; /* LCM((p-1)(q-1)) */ | ||
162 | |||
163 | ctx2 = BN_CTX_new(); | ||
164 | if (!ctx2) | ||
165 | goto err; | ||
166 | |||
167 | rsa->d=BN_mod_inverse(NULL,rsa->e,r0,ctx2); /* d */ | ||
168 | if (rsa->d == NULL) | ||
169 | goto err; | ||
170 | |||
171 | /* calculate d mod (p-1) */ | ||
172 | rsa->dmp1=BN_new(); | ||
173 | if (rsa->dmp1 == NULL) | ||
174 | goto err; | ||
175 | if (!BN_mod(rsa->dmp1,rsa->d,r1,ctx)) | ||
176 | goto err; | ||
177 | |||
178 | /* calculate d mod (q-1) */ | ||
179 | rsa->dmq1=BN_new(); | ||
180 | if (rsa->dmq1 == NULL) | ||
181 | goto err; | ||
182 | if (!BN_mod(rsa->dmq1,rsa->d,r2,ctx)) | ||
183 | goto err; | ||
184 | |||
185 | /* calculate inverse of q mod p */ | ||
186 | rsa->iqmp=BN_mod_inverse(NULL,rsa->q,rsa->p,ctx2); | ||
187 | |||
188 | err: | ||
189 | if (ctx) | ||
190 | { | ||
191 | BN_CTX_end(ctx); | ||
192 | BN_CTX_free(ctx); | ||
193 | } | ||
194 | if (ctx2) | ||
195 | BN_CTX_free(ctx2); | ||
196 | /* If this is set all calls successful */ | ||
197 | if (rsa->iqmp != NULL) | ||
198 | return 1; | ||
199 | |||
200 | return 0; | ||
201 | |||
202 | } | ||
203 | |||
204 | int RSA_X931_generate_key_ex(RSA *rsa, int bits, const BIGNUM *e, BN_GENCB *cb) | ||
205 | { | ||
206 | int ok = 0; | ||
207 | BIGNUM *Xp = NULL, *Xq = NULL; | ||
208 | BN_CTX *ctx = NULL; | ||
209 | |||
210 | if (bits < OPENSSL_RSA_FIPS_MIN_MODULUS_BITS) | ||
211 | { | ||
212 | FIPSerr(FIPS_F_RSA_X931_GENERATE_KEY_EX,FIPS_R_KEY_TOO_SHORT); | ||
213 | return 0; | ||
214 | } | ||
215 | |||
216 | if (bits & 0xff) | ||
217 | { | ||
218 | FIPSerr(FIPS_F_RSA_X931_GENERATE_KEY_EX,FIPS_R_INVALID_KEY_LENGTH); | ||
219 | return 0; | ||
220 | } | ||
221 | |||
222 | if(FIPS_selftest_failed()) | ||
223 | { | ||
224 | FIPSerr(FIPS_F_RSA_X931_GENERATE_KEY_EX,FIPS_R_FIPS_SELFTEST_FAILED); | ||
225 | return 0; | ||
226 | } | ||
227 | |||
228 | ctx = BN_CTX_new(); | ||
229 | if (!ctx) | ||
230 | goto error; | ||
231 | |||
232 | BN_CTX_start(ctx); | ||
233 | Xp = BN_CTX_get(ctx); | ||
234 | Xq = BN_CTX_get(ctx); | ||
235 | if (!BN_X931_generate_Xpq(Xp, Xq, bits, ctx)) | ||
236 | goto error; | ||
237 | |||
238 | rsa->p = BN_new(); | ||
239 | rsa->q = BN_new(); | ||
240 | if (!rsa->p || !rsa->q) | ||
241 | goto error; | ||
242 | |||
243 | /* Generate two primes from Xp, Xq */ | ||
244 | |||
245 | if (!BN_X931_generate_prime_ex(rsa->p, NULL, NULL, NULL, NULL, Xp, | ||
246 | e, ctx, cb)) | ||
247 | goto error; | ||
248 | |||
249 | if (!BN_X931_generate_prime_ex(rsa->q, NULL, NULL, NULL, NULL, Xq, | ||
250 | e, ctx, cb)) | ||
251 | goto error; | ||
252 | |||
253 | /* Since rsa->p and rsa->q are valid this call will just derive | ||
254 | * remaining RSA components. | ||
255 | */ | ||
256 | |||
257 | if (!RSA_X931_derive_ex(rsa, NULL, NULL, NULL, NULL, | ||
258 | NULL, NULL, NULL, NULL, NULL, NULL, e, cb)) | ||
259 | goto error; | ||
260 | |||
261 | if(!fips_check_rsa(rsa)) | ||
262 | goto error; | ||
263 | |||
264 | ok = 1; | ||
265 | |||
266 | error: | ||
267 | if (ctx) | ||
268 | { | ||
269 | BN_CTX_end(ctx); | ||
270 | BN_CTX_free(ctx); | ||
271 | } | ||
272 | |||
273 | if (ok) | ||
274 | return 1; | ||
275 | |||
276 | return 0; | ||
277 | |||
278 | } | ||
279 | |||
280 | #endif | ||
diff --git a/src/lib/libssl/src/fips/rsa/fips_rsagtest.c b/src/lib/libssl/src/fips/rsa/fips_rsagtest.c new file mode 100644 index 0000000000..33a3d7a48c --- /dev/null +++ b/src/lib/libssl/src/fips/rsa/fips_rsagtest.c | |||
@@ -0,0 +1,390 @@ | |||
1 | /* fips_rsagtest.c */ | ||
2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | ||
3 | * project 2005. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 2005,2007 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include <ctype.h> | ||
61 | #include <string.h> | ||
62 | #include <openssl/bio.h> | ||
63 | #include <openssl/evp.h> | ||
64 | #include <openssl/hmac.h> | ||
65 | #include <openssl/err.h> | ||
66 | #include <openssl/rsa.h> | ||
67 | #include <openssl/bn.h> | ||
68 | #include <openssl/x509v3.h> | ||
69 | |||
70 | #ifndef OPENSSL_FIPS | ||
71 | |||
72 | int main(int argc, char *argv[]) | ||
73 | { | ||
74 | printf("No FIPS RSA support\n"); | ||
75 | return(0); | ||
76 | } | ||
77 | |||
78 | #else | ||
79 | |||
80 | #include "fips_utl.h" | ||
81 | |||
82 | int rsa_test(FILE *out, FILE *in); | ||
83 | static int rsa_printkey1(FILE *out, RSA *rsa, | ||
84 | BIGNUM *Xp1, BIGNUM *Xp2, BIGNUM *Xp, | ||
85 | BIGNUM *e); | ||
86 | static int rsa_printkey2(FILE *out, RSA *rsa, | ||
87 | BIGNUM *Xq1, BIGNUM *Xq2, BIGNUM *Xq); | ||
88 | |||
89 | int main(int argc, char **argv) | ||
90 | { | ||
91 | FILE *in = NULL, *out = NULL; | ||
92 | |||
93 | int ret = 1; | ||
94 | |||
95 | if(!FIPS_mode_set(1)) | ||
96 | { | ||
97 | do_print_errors(); | ||
98 | goto end; | ||
99 | } | ||
100 | |||
101 | if (argc == 1) | ||
102 | in = stdin; | ||
103 | else | ||
104 | in = fopen(argv[1], "r"); | ||
105 | |||
106 | if (argc < 2) | ||
107 | out = stdout; | ||
108 | else | ||
109 | out = fopen(argv[2], "w"); | ||
110 | |||
111 | if (!in) | ||
112 | { | ||
113 | fprintf(stderr, "FATAL input initialization error\n"); | ||
114 | goto end; | ||
115 | } | ||
116 | |||
117 | if (!out) | ||
118 | { | ||
119 | fprintf(stderr, "FATAL output initialization error\n"); | ||
120 | goto end; | ||
121 | } | ||
122 | |||
123 | if (!rsa_test(out, in)) | ||
124 | { | ||
125 | fprintf(stderr, "FATAL RSAGTEST file processing error\n"); | ||
126 | goto end; | ||
127 | } | ||
128 | else | ||
129 | ret = 0; | ||
130 | |||
131 | end: | ||
132 | |||
133 | if (ret) | ||
134 | do_print_errors(); | ||
135 | |||
136 | if (in && (in != stdin)) | ||
137 | fclose(in); | ||
138 | if (out && (out != stdout)) | ||
139 | fclose(out); | ||
140 | |||
141 | return ret; | ||
142 | |||
143 | } | ||
144 | |||
145 | #define RSA_TEST_MAXLINELEN 10240 | ||
146 | |||
147 | int rsa_test(FILE *out, FILE *in) | ||
148 | { | ||
149 | char *linebuf, *olinebuf, *p, *q; | ||
150 | char *keyword, *value; | ||
151 | RSA *rsa = NULL; | ||
152 | BIGNUM *Xp1 = NULL, *Xp2 = NULL, *Xp = NULL; | ||
153 | BIGNUM *Xq1 = NULL, *Xq2 = NULL, *Xq = NULL; | ||
154 | BIGNUM *e = NULL; | ||
155 | int ret = 0; | ||
156 | int lnum = 0; | ||
157 | |||
158 | olinebuf = OPENSSL_malloc(RSA_TEST_MAXLINELEN); | ||
159 | linebuf = OPENSSL_malloc(RSA_TEST_MAXLINELEN); | ||
160 | |||
161 | if (!linebuf || !olinebuf) | ||
162 | goto error; | ||
163 | |||
164 | while (fgets(olinebuf, RSA_TEST_MAXLINELEN, in)) | ||
165 | { | ||
166 | lnum++; | ||
167 | strcpy(linebuf, olinebuf); | ||
168 | keyword = linebuf; | ||
169 | /* Skip leading space */ | ||
170 | while (isspace((unsigned char)*keyword)) | ||
171 | keyword++; | ||
172 | |||
173 | /* Look for = sign */ | ||
174 | p = strchr(linebuf, '='); | ||
175 | |||
176 | /* If no = or starts with [ (for [foo = bar] line) just copy */ | ||
177 | if (!p || *keyword=='[') | ||
178 | { | ||
179 | if (fputs(olinebuf, out) < 0) | ||
180 | goto error; | ||
181 | continue; | ||
182 | } | ||
183 | |||
184 | q = p - 1; | ||
185 | |||
186 | /* Remove trailing space */ | ||
187 | while (isspace((unsigned char)*q)) | ||
188 | *q-- = 0; | ||
189 | |||
190 | *p = 0; | ||
191 | value = p + 1; | ||
192 | |||
193 | /* Remove leading space from value */ | ||
194 | while (isspace((unsigned char)*value)) | ||
195 | value++; | ||
196 | |||
197 | /* Remove trailing space from value */ | ||
198 | p = value + strlen(value) - 1; | ||
199 | |||
200 | while (*p == '\n' || isspace((unsigned char)*p)) | ||
201 | *p-- = 0; | ||
202 | |||
203 | if (!strcmp(keyword, "xp1")) | ||
204 | { | ||
205 | if (Xp1 || !do_hex2bn(&Xp1,value)) | ||
206 | goto parse_error; | ||
207 | } | ||
208 | else if (!strcmp(keyword, "xp2")) | ||
209 | { | ||
210 | if (Xp2 || !do_hex2bn(&Xp2,value)) | ||
211 | goto parse_error; | ||
212 | } | ||
213 | else if (!strcmp(keyword, "Xp")) | ||
214 | { | ||
215 | if (Xp || !do_hex2bn(&Xp,value)) | ||
216 | goto parse_error; | ||
217 | } | ||
218 | else if (!strcmp(keyword, "xq1")) | ||
219 | { | ||
220 | if (Xq1 || !do_hex2bn(&Xq1,value)) | ||
221 | goto parse_error; | ||
222 | } | ||
223 | else if (!strcmp(keyword, "xq2")) | ||
224 | { | ||
225 | if (Xq2 || !do_hex2bn(&Xq2,value)) | ||
226 | goto parse_error; | ||
227 | } | ||
228 | else if (!strcmp(keyword, "Xq")) | ||
229 | { | ||
230 | if (Xq || !do_hex2bn(&Xq,value)) | ||
231 | goto parse_error; | ||
232 | } | ||
233 | else if (!strcmp(keyword, "e")) | ||
234 | { | ||
235 | if (e || !do_hex2bn(&e,value)) | ||
236 | goto parse_error; | ||
237 | } | ||
238 | else if (!strcmp(keyword, "p1")) | ||
239 | continue; | ||
240 | else if (!strcmp(keyword, "p2")) | ||
241 | continue; | ||
242 | else if (!strcmp(keyword, "p")) | ||
243 | continue; | ||
244 | else if (!strcmp(keyword, "q1")) | ||
245 | continue; | ||
246 | else if (!strcmp(keyword, "q2")) | ||
247 | continue; | ||
248 | else if (!strcmp(keyword, "q")) | ||
249 | continue; | ||
250 | else if (!strcmp(keyword, "n")) | ||
251 | continue; | ||
252 | else if (!strcmp(keyword, "d")) | ||
253 | continue; | ||
254 | else | ||
255 | goto parse_error; | ||
256 | |||
257 | fputs(olinebuf, out); | ||
258 | |||
259 | if (e && Xp1 && Xp2 && Xp) | ||
260 | { | ||
261 | rsa = FIPS_rsa_new(); | ||
262 | if (!rsa) | ||
263 | goto error; | ||
264 | if (!rsa_printkey1(out, rsa, Xp1, Xp2, Xp, e)) | ||
265 | goto error; | ||
266 | BN_free(Xp1); | ||
267 | Xp1 = NULL; | ||
268 | BN_free(Xp2); | ||
269 | Xp2 = NULL; | ||
270 | BN_free(Xp); | ||
271 | Xp = NULL; | ||
272 | BN_free(e); | ||
273 | e = NULL; | ||
274 | } | ||
275 | |||
276 | if (rsa && Xq1 && Xq2 && Xq) | ||
277 | { | ||
278 | if (!rsa_printkey2(out, rsa, Xq1, Xq2, Xq)) | ||
279 | goto error; | ||
280 | BN_free(Xq1); | ||
281 | Xq1 = NULL; | ||
282 | BN_free(Xq2); | ||
283 | Xq2 = NULL; | ||
284 | BN_free(Xq); | ||
285 | Xq = NULL; | ||
286 | FIPS_rsa_free(rsa); | ||
287 | rsa = NULL; | ||
288 | } | ||
289 | } | ||
290 | |||
291 | ret = 1; | ||
292 | |||
293 | error: | ||
294 | |||
295 | if (olinebuf) | ||
296 | OPENSSL_free(olinebuf); | ||
297 | if (linebuf) | ||
298 | OPENSSL_free(linebuf); | ||
299 | |||
300 | if (Xp1) | ||
301 | BN_free(Xp1); | ||
302 | if (Xp2) | ||
303 | BN_free(Xp2); | ||
304 | if (Xp) | ||
305 | BN_free(Xp); | ||
306 | if (Xq1) | ||
307 | BN_free(Xq1); | ||
308 | if (Xq1) | ||
309 | BN_free(Xq1); | ||
310 | if (Xq2) | ||
311 | BN_free(Xq2); | ||
312 | if (Xq) | ||
313 | BN_free(Xq); | ||
314 | if (e) | ||
315 | BN_free(e); | ||
316 | if (rsa) | ||
317 | FIPS_rsa_free(rsa); | ||
318 | |||
319 | return ret; | ||
320 | |||
321 | parse_error: | ||
322 | |||
323 | fprintf(stderr, "FATAL parse error processing line %d\n", lnum); | ||
324 | |||
325 | goto error; | ||
326 | |||
327 | } | ||
328 | |||
329 | static int rsa_printkey1(FILE *out, RSA *rsa, | ||
330 | BIGNUM *Xp1, BIGNUM *Xp2, BIGNUM *Xp, | ||
331 | BIGNUM *e) | ||
332 | { | ||
333 | int ret = 0; | ||
334 | BIGNUM *p1 = NULL, *p2 = NULL; | ||
335 | p1 = BN_new(); | ||
336 | p2 = BN_new(); | ||
337 | if (!p1 || !p2) | ||
338 | goto error; | ||
339 | |||
340 | if (!RSA_X931_derive_ex(rsa, p1, p2, NULL, NULL, Xp1, Xp2, Xp, | ||
341 | NULL, NULL, NULL, e, NULL)) | ||
342 | goto error; | ||
343 | |||
344 | do_bn_print_name(out, "p1", p1); | ||
345 | do_bn_print_name(out, "p2", p2); | ||
346 | do_bn_print_name(out, "p", rsa->p); | ||
347 | |||
348 | ret = 1; | ||
349 | |||
350 | error: | ||
351 | if (p1) | ||
352 | BN_free(p1); | ||
353 | if (p2) | ||
354 | BN_free(p2); | ||
355 | |||
356 | return ret; | ||
357 | } | ||
358 | |||
359 | static int rsa_printkey2(FILE *out, RSA *rsa, | ||
360 | BIGNUM *Xq1, BIGNUM *Xq2, BIGNUM *Xq) | ||
361 | { | ||
362 | int ret = 0; | ||
363 | BIGNUM *q1 = NULL, *q2 = NULL; | ||
364 | q1 = BN_new(); | ||
365 | q2 = BN_new(); | ||
366 | if (!q1 || !q2) | ||
367 | goto error; | ||
368 | |||
369 | if (!RSA_X931_derive_ex(rsa, NULL, NULL, q1, q2, NULL, NULL, NULL, | ||
370 | Xq1, Xq2, Xq, NULL, NULL)) | ||
371 | goto error; | ||
372 | |||
373 | do_bn_print_name(out, "q1", q1); | ||
374 | do_bn_print_name(out, "q2", q2); | ||
375 | do_bn_print_name(out, "q", rsa->q); | ||
376 | do_bn_print_name(out, "n", rsa->n); | ||
377 | do_bn_print_name(out, "d", rsa->d); | ||
378 | |||
379 | ret = 1; | ||
380 | |||
381 | error: | ||
382 | if (q1) | ||
383 | BN_free(q1); | ||
384 | if (q2) | ||
385 | BN_free(q2); | ||
386 | |||
387 | return ret; | ||
388 | } | ||
389 | |||
390 | #endif | ||
diff --git a/src/lib/libssl/src/fips/rsa/fips_rsastest.c b/src/lib/libssl/src/fips/rsa/fips_rsastest.c new file mode 100644 index 0000000000..16c174a2f8 --- /dev/null +++ b/src/lib/libssl/src/fips/rsa/fips_rsastest.c | |||
@@ -0,0 +1,370 @@ | |||
1 | /* fips_rsastest.c */ | ||
2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | ||
3 | * project 2005. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 2005 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include <ctype.h> | ||
61 | #include <string.h> | ||
62 | #include <openssl/bio.h> | ||
63 | #include <openssl/evp.h> | ||
64 | #include <openssl/hmac.h> | ||
65 | #include <openssl/err.h> | ||
66 | #include <openssl/rsa.h> | ||
67 | #include <openssl/bn.h> | ||
68 | #include <openssl/x509v3.h> | ||
69 | |||
70 | #ifndef OPENSSL_FIPS | ||
71 | |||
72 | int main(int argc, char *argv[]) | ||
73 | { | ||
74 | printf("No FIPS RSA support\n"); | ||
75 | return(0); | ||
76 | } | ||
77 | |||
78 | #else | ||
79 | |||
80 | #include "fips_utl.h" | ||
81 | |||
82 | static int rsa_stest(FILE *out, FILE *in, int Saltlen); | ||
83 | static int rsa_printsig(FILE *out, RSA *rsa, const EVP_MD *dgst, | ||
84 | unsigned char *Msg, long Msglen, int Saltlen); | ||
85 | |||
86 | int main(int argc, char **argv) | ||
87 | { | ||
88 | FILE *in = NULL, *out = NULL; | ||
89 | |||
90 | int ret = 1, Saltlen = -1; | ||
91 | |||
92 | if(!FIPS_mode_set(1)) | ||
93 | { | ||
94 | do_print_errors(); | ||
95 | goto end; | ||
96 | } | ||
97 | |||
98 | if ((argc > 2) && !strcmp("-saltlen", argv[1])) | ||
99 | { | ||
100 | Saltlen = atoi(argv[2]); | ||
101 | if (Saltlen < 0) | ||
102 | { | ||
103 | fprintf(stderr, "FATAL: Invalid salt length\n"); | ||
104 | goto end; | ||
105 | } | ||
106 | argc -= 2; | ||
107 | argv += 2; | ||
108 | } | ||
109 | else if ((argc > 1) && !strcmp("-x931", argv[1])) | ||
110 | { | ||
111 | Saltlen = -2; | ||
112 | argc--; | ||
113 | argv++; | ||
114 | } | ||
115 | |||
116 | if (argc == 1) | ||
117 | in = stdin; | ||
118 | else | ||
119 | in = fopen(argv[1], "r"); | ||
120 | |||
121 | if (argc < 2) | ||
122 | out = stdout; | ||
123 | else | ||
124 | out = fopen(argv[2], "w"); | ||
125 | |||
126 | if (!in) | ||
127 | { | ||
128 | fprintf(stderr, "FATAL input initialization error\n"); | ||
129 | goto end; | ||
130 | } | ||
131 | |||
132 | if (!out) | ||
133 | { | ||
134 | fprintf(stderr, "FATAL output initialization error\n"); | ||
135 | goto end; | ||
136 | } | ||
137 | |||
138 | if (!rsa_stest(out, in, Saltlen)) | ||
139 | { | ||
140 | fprintf(stderr, "FATAL RSASTEST file processing error\n"); | ||
141 | goto end; | ||
142 | } | ||
143 | else | ||
144 | ret = 0; | ||
145 | |||
146 | end: | ||
147 | |||
148 | if (ret) | ||
149 | do_print_errors(); | ||
150 | |||
151 | if (in && (in != stdin)) | ||
152 | fclose(in); | ||
153 | if (out && (out != stdout)) | ||
154 | fclose(out); | ||
155 | |||
156 | return ret; | ||
157 | |||
158 | } | ||
159 | |||
160 | #define RSA_TEST_MAXLINELEN 10240 | ||
161 | |||
162 | int rsa_stest(FILE *out, FILE *in, int Saltlen) | ||
163 | { | ||
164 | char *linebuf, *olinebuf, *p, *q; | ||
165 | char *keyword, *value; | ||
166 | RSA *rsa = NULL; | ||
167 | const EVP_MD *dgst = NULL; | ||
168 | unsigned char *Msg = NULL; | ||
169 | long Msglen = -1; | ||
170 | int keylen = -1, current_keylen = -1; | ||
171 | int ret = 0; | ||
172 | int lnum = 0; | ||
173 | |||
174 | olinebuf = OPENSSL_malloc(RSA_TEST_MAXLINELEN); | ||
175 | linebuf = OPENSSL_malloc(RSA_TEST_MAXLINELEN); | ||
176 | |||
177 | if (!linebuf || !olinebuf) | ||
178 | goto error; | ||
179 | |||
180 | while (fgets(olinebuf, RSA_TEST_MAXLINELEN, in)) | ||
181 | { | ||
182 | lnum++; | ||
183 | strcpy(linebuf, olinebuf); | ||
184 | keyword = linebuf; | ||
185 | /* Skip leading space */ | ||
186 | while (isspace((unsigned char)*keyword)) | ||
187 | keyword++; | ||
188 | |||
189 | /* Look for = sign */ | ||
190 | p = strchr(linebuf, '='); | ||
191 | |||
192 | /* If no = just copy */ | ||
193 | if (!p) | ||
194 | { | ||
195 | if (fputs(olinebuf, out) < 0) | ||
196 | goto error; | ||
197 | continue; | ||
198 | } | ||
199 | |||
200 | q = p - 1; | ||
201 | |||
202 | /* Remove trailing space */ | ||
203 | while (isspace((unsigned char)*q)) | ||
204 | *q-- = 0; | ||
205 | |||
206 | *p = 0; | ||
207 | value = p + 1; | ||
208 | |||
209 | /* Remove leading space from value */ | ||
210 | while (isspace((unsigned char)*value)) | ||
211 | value++; | ||
212 | |||
213 | /* Remove trailing space from value */ | ||
214 | p = value + strlen(value) - 1; | ||
215 | |||
216 | while (*p == '\n' || isspace((unsigned char)*p)) | ||
217 | *p-- = 0; | ||
218 | |||
219 | /* Look for [mod = XXX] for key length */ | ||
220 | |||
221 | if (!strcmp(keyword, "[mod")) | ||
222 | { | ||
223 | p = value + strlen(value) - 1; | ||
224 | if (*p != ']') | ||
225 | goto parse_error; | ||
226 | *p = 0; | ||
227 | keylen = atoi(value); | ||
228 | if (keylen < 0) | ||
229 | goto parse_error; | ||
230 | } | ||
231 | else if (!strcmp(keyword, "SHAAlg")) | ||
232 | { | ||
233 | if (!strcmp(value, "SHA1")) | ||
234 | dgst = EVP_sha1(); | ||
235 | else if (!strcmp(value, "SHA224")) | ||
236 | dgst = EVP_sha224(); | ||
237 | else if (!strcmp(value, "SHA256")) | ||
238 | dgst = EVP_sha256(); | ||
239 | else if (!strcmp(value, "SHA384")) | ||
240 | dgst = EVP_sha384(); | ||
241 | else if (!strcmp(value, "SHA512")) | ||
242 | dgst = EVP_sha512(); | ||
243 | else | ||
244 | { | ||
245 | fprintf(stderr, | ||
246 | "FATAL: unsupported algorithm \"%s\"\n", | ||
247 | value); | ||
248 | goto parse_error; | ||
249 | } | ||
250 | } | ||
251 | else if (!strcmp(keyword, "Msg")) | ||
252 | { | ||
253 | if (Msg) | ||
254 | goto parse_error; | ||
255 | if (strlen(value) & 1) | ||
256 | *(--value) = '0'; | ||
257 | Msg = hex2bin_m(value, &Msglen); | ||
258 | if (!Msg) | ||
259 | goto parse_error; | ||
260 | } | ||
261 | |||
262 | fputs(olinebuf, out); | ||
263 | |||
264 | /* If key length has changed, generate and output public | ||
265 | * key components of new RSA private key. | ||
266 | */ | ||
267 | |||
268 | if (keylen != current_keylen) | ||
269 | { | ||
270 | BIGNUM *bn_e; | ||
271 | if (rsa) | ||
272 | FIPS_rsa_free(rsa); | ||
273 | rsa = FIPS_rsa_new(); | ||
274 | if (!rsa) | ||
275 | goto error; | ||
276 | bn_e = BN_new(); | ||
277 | if (!bn_e || !BN_set_word(bn_e, 0x1001)) | ||
278 | goto error; | ||
279 | if (!RSA_X931_generate_key_ex(rsa, keylen, bn_e, NULL)) | ||
280 | goto error; | ||
281 | BN_free(bn_e); | ||
282 | fputs("n = ", out); | ||
283 | do_bn_print(out, rsa->n); | ||
284 | fputs("\ne = ", out); | ||
285 | do_bn_print(out, rsa->e); | ||
286 | fputs("\n", out); | ||
287 | current_keylen = keylen; | ||
288 | } | ||
289 | |||
290 | if (Msg && dgst) | ||
291 | { | ||
292 | if (!rsa_printsig(out, rsa, dgst, Msg, Msglen, | ||
293 | Saltlen)) | ||
294 | goto error; | ||
295 | OPENSSL_free(Msg); | ||
296 | Msg = NULL; | ||
297 | } | ||
298 | |||
299 | } | ||
300 | |||
301 | ret = 1; | ||
302 | |||
303 | error: | ||
304 | |||
305 | if (olinebuf) | ||
306 | OPENSSL_free(olinebuf); | ||
307 | if (linebuf) | ||
308 | OPENSSL_free(linebuf); | ||
309 | if (rsa) | ||
310 | FIPS_rsa_free(rsa); | ||
311 | |||
312 | return ret; | ||
313 | |||
314 | parse_error: | ||
315 | |||
316 | fprintf(stderr, "FATAL parse error processing line %d\n", lnum); | ||
317 | |||
318 | goto error; | ||
319 | |||
320 | } | ||
321 | |||
322 | static int rsa_printsig(FILE *out, RSA *rsa, const EVP_MD *dgst, | ||
323 | unsigned char *Msg, long Msglen, int Saltlen) | ||
324 | { | ||
325 | int ret = 0; | ||
326 | unsigned char *sigbuf = NULL; | ||
327 | int i, siglen; | ||
328 | /* EVP_PKEY structure */ | ||
329 | EVP_PKEY pk; | ||
330 | EVP_MD_CTX ctx; | ||
331 | pk.type = EVP_PKEY_RSA; | ||
332 | pk.pkey.rsa = rsa; | ||
333 | |||
334 | siglen = RSA_size(rsa); | ||
335 | sigbuf = OPENSSL_malloc(siglen); | ||
336 | if (!sigbuf) | ||
337 | goto error; | ||
338 | |||
339 | EVP_MD_CTX_init(&ctx); | ||
340 | |||
341 | if (Saltlen >= 0) | ||
342 | { | ||
343 | M_EVP_MD_CTX_set_flags(&ctx, | ||
344 | EVP_MD_CTX_FLAG_PAD_PSS | (Saltlen << 16)); | ||
345 | } | ||
346 | else if (Saltlen == -2) | ||
347 | M_EVP_MD_CTX_set_flags(&ctx, EVP_MD_CTX_FLAG_PAD_X931); | ||
348 | if (!EVP_SignInit_ex(&ctx, dgst, NULL)) | ||
349 | goto error; | ||
350 | if (!EVP_SignUpdate(&ctx, Msg, Msglen)) | ||
351 | goto error; | ||
352 | if (!EVP_SignFinal(&ctx, sigbuf, (unsigned int *)&siglen, &pk)) | ||
353 | goto error; | ||
354 | |||
355 | EVP_MD_CTX_cleanup(&ctx); | ||
356 | |||
357 | fputs("S = ", out); | ||
358 | |||
359 | for (i = 0; i < siglen; i++) | ||
360 | fprintf(out, "%02X", sigbuf[i]); | ||
361 | |||
362 | fputs("\n", out); | ||
363 | |||
364 | ret = 1; | ||
365 | |||
366 | error: | ||
367 | |||
368 | return ret; | ||
369 | } | ||
370 | #endif | ||
diff --git a/src/lib/libssl/src/fips/rsa/fips_rsavtest.c b/src/lib/libssl/src/fips/rsa/fips_rsavtest.c new file mode 100644 index 0000000000..6340f190a3 --- /dev/null +++ b/src/lib/libssl/src/fips/rsa/fips_rsavtest.c | |||
@@ -0,0 +1,377 @@ | |||
1 | /* fips_rsavtest.c */ | ||
2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | ||
3 | * project 2005. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 2005 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include <ctype.h> | ||
61 | #include <string.h> | ||
62 | #include <openssl/bio.h> | ||
63 | #include <openssl/evp.h> | ||
64 | #include <openssl/hmac.h> | ||
65 | #include <openssl/err.h> | ||
66 | #include <openssl/x509v3.h> | ||
67 | #include <openssl/bn.h> | ||
68 | #include <openssl/rsa.h> | ||
69 | |||
70 | #ifndef OPENSSL_FIPS | ||
71 | |||
72 | int main(int argc, char *argv[]) | ||
73 | { | ||
74 | printf("No FIPS RSA support\n"); | ||
75 | return(0); | ||
76 | } | ||
77 | |||
78 | #else | ||
79 | |||
80 | #include "fips_utl.h" | ||
81 | |||
82 | int rsa_test(FILE *out, FILE *in, int saltlen); | ||
83 | static int rsa_printver(FILE *out, | ||
84 | BIGNUM *n, BIGNUM *e, | ||
85 | const EVP_MD *dgst, | ||
86 | unsigned char *Msg, long Msglen, | ||
87 | unsigned char *S, long Slen, int Saltlen); | ||
88 | |||
89 | int main(int argc, char **argv) | ||
90 | { | ||
91 | FILE *in = NULL, *out = NULL; | ||
92 | |||
93 | int ret = 1; | ||
94 | int Saltlen = -1; | ||
95 | |||
96 | if(!FIPS_mode_set(1)) | ||
97 | { | ||
98 | do_print_errors(); | ||
99 | goto end; | ||
100 | } | ||
101 | |||
102 | if ((argc > 2) && !strcmp("-saltlen", argv[1])) | ||
103 | { | ||
104 | Saltlen = atoi(argv[2]); | ||
105 | if (Saltlen < 0) | ||
106 | { | ||
107 | fprintf(stderr, "FATAL: Invalid salt length\n"); | ||
108 | goto end; | ||
109 | } | ||
110 | argc -= 2; | ||
111 | argv += 2; | ||
112 | } | ||
113 | else if ((argc > 1) && !strcmp("-x931", argv[1])) | ||
114 | { | ||
115 | Saltlen = -2; | ||
116 | argc--; | ||
117 | argv++; | ||
118 | } | ||
119 | |||
120 | if (argc == 1) | ||
121 | in = stdin; | ||
122 | else | ||
123 | in = fopen(argv[1], "r"); | ||
124 | |||
125 | if (argc < 2) | ||
126 | out = stdout; | ||
127 | else | ||
128 | out = fopen(argv[2], "w"); | ||
129 | |||
130 | if (!in) | ||
131 | { | ||
132 | fprintf(stderr, "FATAL input initialization error\n"); | ||
133 | goto end; | ||
134 | } | ||
135 | |||
136 | if (!out) | ||
137 | { | ||
138 | fprintf(stderr, "FATAL output initialization error\n"); | ||
139 | goto end; | ||
140 | } | ||
141 | |||
142 | if (!rsa_test(out, in, Saltlen)) | ||
143 | { | ||
144 | fprintf(stderr, "FATAL RSAVTEST file processing error\n"); | ||
145 | goto end; | ||
146 | } | ||
147 | else | ||
148 | ret = 0; | ||
149 | |||
150 | end: | ||
151 | |||
152 | if (ret) | ||
153 | do_print_errors(); | ||
154 | |||
155 | if (in && (in != stdin)) | ||
156 | fclose(in); | ||
157 | if (out && (out != stdout)) | ||
158 | fclose(out); | ||
159 | |||
160 | return ret; | ||
161 | |||
162 | } | ||
163 | |||
164 | #define RSA_TEST_MAXLINELEN 10240 | ||
165 | |||
166 | int rsa_test(FILE *out, FILE *in, int Saltlen) | ||
167 | { | ||
168 | char *linebuf, *olinebuf, *p, *q; | ||
169 | char *keyword, *value; | ||
170 | const EVP_MD *dgst = NULL; | ||
171 | BIGNUM *n = NULL, *e = NULL; | ||
172 | unsigned char *Msg = NULL, *S = NULL; | ||
173 | long Msglen, Slen; | ||
174 | int ret = 0; | ||
175 | int lnum = 0; | ||
176 | |||
177 | olinebuf = OPENSSL_malloc(RSA_TEST_MAXLINELEN); | ||
178 | linebuf = OPENSSL_malloc(RSA_TEST_MAXLINELEN); | ||
179 | |||
180 | if (!linebuf || !olinebuf) | ||
181 | goto error; | ||
182 | |||
183 | while (fgets(olinebuf, RSA_TEST_MAXLINELEN, in)) | ||
184 | { | ||
185 | lnum++; | ||
186 | strcpy(linebuf, olinebuf); | ||
187 | keyword = linebuf; | ||
188 | /* Skip leading space */ | ||
189 | while (isspace((unsigned char)*keyword)) | ||
190 | keyword++; | ||
191 | |||
192 | /* Look for = sign */ | ||
193 | p = strchr(linebuf, '='); | ||
194 | |||
195 | /* If no = or starts with [ (for [foo = bar] line) just copy */ | ||
196 | if (!p || *keyword=='[') | ||
197 | { | ||
198 | if (fputs(olinebuf, out) < 0) | ||
199 | goto error; | ||
200 | continue; | ||
201 | } | ||
202 | |||
203 | q = p - 1; | ||
204 | |||
205 | /* Remove trailing space */ | ||
206 | while (isspace((unsigned char)*q)) | ||
207 | *q-- = 0; | ||
208 | |||
209 | *p = 0; | ||
210 | value = p + 1; | ||
211 | |||
212 | /* Remove leading space from value */ | ||
213 | while (isspace((unsigned char)*value)) | ||
214 | value++; | ||
215 | |||
216 | /* Remove trailing space from value */ | ||
217 | p = value + strlen(value) - 1; | ||
218 | |||
219 | while (*p == '\n' || isspace((unsigned char)*p)) | ||
220 | *p-- = 0; | ||
221 | |||
222 | if (!strcmp(keyword, "n")) | ||
223 | { | ||
224 | if (!do_hex2bn(&n,value)) | ||
225 | goto parse_error; | ||
226 | } | ||
227 | else if (!strcmp(keyword, "e")) | ||
228 | { | ||
229 | if (!do_hex2bn(&e,value)) | ||
230 | goto parse_error; | ||
231 | } | ||
232 | else if (!strcmp(keyword, "SHAAlg")) | ||
233 | { | ||
234 | if (!strcmp(value, "SHA1")) | ||
235 | dgst = EVP_sha1(); | ||
236 | else if (!strcmp(value, "SHA224")) | ||
237 | dgst = EVP_sha224(); | ||
238 | else if (!strcmp(value, "SHA256")) | ||
239 | dgst = EVP_sha256(); | ||
240 | else if (!strcmp(value, "SHA384")) | ||
241 | dgst = EVP_sha384(); | ||
242 | else if (!strcmp(value, "SHA512")) | ||
243 | dgst = EVP_sha512(); | ||
244 | else | ||
245 | { | ||
246 | fprintf(stderr, | ||
247 | "FATAL: unsupported algorithm \"%s\"\n", | ||
248 | value); | ||
249 | goto parse_error; | ||
250 | } | ||
251 | } | ||
252 | else if (!strcmp(keyword, "Msg")) | ||
253 | { | ||
254 | if (Msg) | ||
255 | goto parse_error; | ||
256 | if (strlen(value) & 1) | ||
257 | *(--value) = '0'; | ||
258 | Msg = hex2bin_m(value, &Msglen); | ||
259 | if (!Msg) | ||
260 | goto parse_error; | ||
261 | } | ||
262 | else if (!strcmp(keyword, "S")) | ||
263 | { | ||
264 | if (S) | ||
265 | goto parse_error; | ||
266 | if (strlen(value) & 1) | ||
267 | *(--value) = '0'; | ||
268 | S = hex2bin_m(value, &Slen); | ||
269 | if (!S) | ||
270 | goto parse_error; | ||
271 | } | ||
272 | else if (!strcmp(keyword, "Result")) | ||
273 | continue; | ||
274 | else | ||
275 | goto parse_error; | ||
276 | |||
277 | fputs(olinebuf, out); | ||
278 | |||
279 | if (n && e && Msg && S && dgst) | ||
280 | { | ||
281 | if (!rsa_printver(out, n, e, dgst, | ||
282 | Msg, Msglen, S, Slen, Saltlen)) | ||
283 | goto error; | ||
284 | OPENSSL_free(Msg); | ||
285 | Msg = NULL; | ||
286 | OPENSSL_free(S); | ||
287 | S = NULL; | ||
288 | } | ||
289 | |||
290 | } | ||
291 | |||
292 | |||
293 | ret = 1; | ||
294 | |||
295 | |||
296 | error: | ||
297 | |||
298 | if (olinebuf) | ||
299 | OPENSSL_free(olinebuf); | ||
300 | if (linebuf) | ||
301 | OPENSSL_free(linebuf); | ||
302 | if (n) | ||
303 | BN_free(n); | ||
304 | if (e) | ||
305 | BN_free(e); | ||
306 | |||
307 | return ret; | ||
308 | |||
309 | parse_error: | ||
310 | |||
311 | fprintf(stderr, "FATAL parse error processing line %d\n", lnum); | ||
312 | |||
313 | goto error; | ||
314 | |||
315 | } | ||
316 | |||
317 | static int rsa_printver(FILE *out, | ||
318 | BIGNUM *n, BIGNUM *e, | ||
319 | const EVP_MD *dgst, | ||
320 | unsigned char *Msg, long Msglen, | ||
321 | unsigned char *S, long Slen, int Saltlen) | ||
322 | { | ||
323 | int ret = 0, r; | ||
324 | /* Setup RSA and EVP_PKEY structures */ | ||
325 | RSA *rsa_pubkey = NULL; | ||
326 | EVP_PKEY pk; | ||
327 | EVP_MD_CTX ctx; | ||
328 | unsigned char *buf = NULL; | ||
329 | rsa_pubkey = FIPS_rsa_new(); | ||
330 | if (!rsa_pubkey) | ||
331 | goto error; | ||
332 | rsa_pubkey->n = BN_dup(n); | ||
333 | rsa_pubkey->e = BN_dup(e); | ||
334 | if (!rsa_pubkey->n || !rsa_pubkey->e) | ||
335 | goto error; | ||
336 | pk.type = EVP_PKEY_RSA; | ||
337 | pk.pkey.rsa = rsa_pubkey; | ||
338 | |||
339 | EVP_MD_CTX_init(&ctx); | ||
340 | |||
341 | if (Saltlen >= 0) | ||
342 | { | ||
343 | M_EVP_MD_CTX_set_flags(&ctx, | ||
344 | EVP_MD_CTX_FLAG_PAD_PSS | (Saltlen << 16)); | ||
345 | } | ||
346 | else if (Saltlen == -2) | ||
347 | M_EVP_MD_CTX_set_flags(&ctx, EVP_MD_CTX_FLAG_PAD_X931); | ||
348 | if (!EVP_VerifyInit_ex(&ctx, dgst, NULL)) | ||
349 | goto error; | ||
350 | if (!EVP_VerifyUpdate(&ctx, Msg, Msglen)) | ||
351 | goto error; | ||
352 | |||
353 | r = EVP_VerifyFinal(&ctx, S, Slen, &pk); | ||
354 | |||
355 | |||
356 | EVP_MD_CTX_cleanup(&ctx); | ||
357 | |||
358 | if (r < 0) | ||
359 | goto error; | ||
360 | ERR_clear_error(); | ||
361 | |||
362 | if (r == 0) | ||
363 | fputs("Result = F\n", out); | ||
364 | else | ||
365 | fputs("Result = P\n", out); | ||
366 | |||
367 | ret = 1; | ||
368 | |||
369 | error: | ||
370 | if (rsa_pubkey) | ||
371 | FIPS_rsa_free(rsa_pubkey); | ||
372 | if (buf) | ||
373 | OPENSSL_free(buf); | ||
374 | |||
375 | return ret; | ||
376 | } | ||
377 | #endif | ||
diff --git a/src/lib/libssl/src/fips/sha/Makefile b/src/lib/libssl/src/fips/sha/Makefile new file mode 100644 index 0000000000..a661640bc6 --- /dev/null +++ b/src/lib/libssl/src/fips/sha/Makefile | |||
@@ -0,0 +1,158 @@ | |||
1 | # | ||
2 | # OpenSSL/fips/sha/Makefile | ||
3 | # | ||
4 | |||
5 | DIR= sha | ||
6 | TOP= ../.. | ||
7 | CC= cc | ||
8 | INCLUDES= | ||
9 | CFLAG=-g | ||
10 | INSTALL_PREFIX= | ||
11 | OPENSSLDIR= /usr/local/ssl | ||
12 | INSTALLTOP=/usr/local/ssl | ||
13 | MAKEDEPPROG= makedepend | ||
14 | MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) | ||
15 | MAKEFILE= Makefile | ||
16 | AR= ar r | ||
17 | EXE_EXT= | ||
18 | |||
19 | ASFLAGS= $(INCLUDES) $(ASFLAG) | ||
20 | AFLAGS= $(ASFLAGS) | ||
21 | |||
22 | CFLAGS= $(INCLUDES) $(CFLAG) | ||
23 | |||
24 | GENERAL=Makefile | ||
25 | TEST= fips_shatest.c | ||
26 | APPS= | ||
27 | EXE= fips_standalone_sha1$(EXE_EXT) | ||
28 | |||
29 | LIB=$(TOP)/libcrypto.a | ||
30 | LIBSRC=fips_sha1_selftest.c | ||
31 | LIBOBJ=fips_sha1_selftest.o | ||
32 | |||
33 | SRC= $(LIBSRC) fips_standalone_sha1.c | ||
34 | |||
35 | EXHEADER= | ||
36 | HEADER= | ||
37 | |||
38 | ALL= $(GENERAL) $(SRC) $(HEADER) | ||
39 | |||
40 | top: | ||
41 | (cd $(TOP); $(MAKE) DIRS=fips SDIRS=$(DIR) sub_all) | ||
42 | |||
43 | all: ../fips_standalone_sha1$(EXE_EXT) lib | ||
44 | |||
45 | lib: $(LIBOBJ) | ||
46 | @echo $(LIBOBJ) > lib | ||
47 | |||
48 | ../fips_standalone_sha1$(EXE_EXT): fips_standalone_sha1.o | ||
49 | FIPS_SHA_ASM=""; for i in $(SHA1_ASM_OBJ) sha1dgst.o ; do FIPS_SHA_ASM="$$FIPS_SHA_ASM ../../crypto/sha/$$i" ; done; \ | ||
50 | $(CC) -o $@ $(CFLAGS) fips_standalone_sha1.o $$FIPS_SHA_ASM | ||
51 | |||
52 | files: | ||
53 | $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO | ||
54 | |||
55 | links: | ||
56 | @$(PERL) $(TOP)/util/mklink.pl $(TOP)/include/openssl $(EXHEADER) | ||
57 | @$(PERL) $(TOP)/util/mklink.pl $(TOP)/test $(TEST) | ||
58 | @$(PERL) $(TOP)/util/mklink.pl $(TOP)/apps $(APPS) | ||
59 | |||
60 | install: | ||
61 | @headerlist="$(EXHEADER)"; for i in $$headerlist; \ | ||
62 | do \ | ||
63 | (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ | ||
64 | chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ | ||
65 | done | ||
66 | |||
67 | tags: | ||
68 | ctags $(SRC) | ||
69 | |||
70 | tests: | ||
71 | |||
72 | Q=../testvectors/sha/req | ||
73 | A=../testvectors/sha/rsp | ||
74 | |||
75 | VECTORS = SHA1LongMsg \ | ||
76 | SHA1Monte \ | ||
77 | SHA1ShortMsg \ | ||
78 | SHA224LongMsg \ | ||
79 | SHA224Monte \ | ||
80 | SHA224ShortMsg \ | ||
81 | SHA256LongMsg \ | ||
82 | SHA256Monte \ | ||
83 | SHA256ShortMsg \ | ||
84 | SHA384LongMsg \ | ||
85 | SHA384Monte \ | ||
86 | SHA384ShortMsg \ | ||
87 | SHA512LongMsg \ | ||
88 | SHA512Monte \ | ||
89 | SHA512ShortMsg | ||
90 | |||
91 | fips_test: | ||
92 | -rm -rf $(A) | ||
93 | mkdir $(A) | ||
94 | for file in $(VECTORS); do \ | ||
95 | if [ -f $(Q)/$$file.req ]; then \ | ||
96 | $(TOP)/util/shlib_wrap.sh $(TOP)/test/fips_shatest $(Q)/$$file.req $(A)/$$file.rsp; \ | ||
97 | fi; \ | ||
98 | done | ||
99 | |||
100 | lint: | ||
101 | lint -DLINT $(INCLUDES) $(SRC)>fluff | ||
102 | |||
103 | depend: | ||
104 | $(MAKEDEPEND) -- $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(SRC) $(TEST) | ||
105 | |||
106 | dclean: | ||
107 | $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new | ||
108 | mv -f Makefile.new $(MAKEFILE) | ||
109 | |||
110 | clean: | ||
111 | rm -f *.o asm/*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff $(EXE) | ||
112 | |||
113 | # DO NOT DELETE THIS LINE -- make depend depends on it. | ||
114 | |||
115 | fips_sha1_selftest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
116 | fips_sha1_selftest.o: ../../include/openssl/crypto.h | ||
117 | fips_sha1_selftest.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
118 | fips_sha1_selftest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h | ||
119 | fips_sha1_selftest.o: ../../include/openssl/lhash.h | ||
120 | fips_sha1_selftest.o: ../../include/openssl/obj_mac.h | ||
121 | fips_sha1_selftest.o: ../../include/openssl/objects.h | ||
122 | fips_sha1_selftest.o: ../../include/openssl/opensslconf.h | ||
123 | fips_sha1_selftest.o: ../../include/openssl/opensslv.h | ||
124 | fips_sha1_selftest.o: ../../include/openssl/ossl_typ.h | ||
125 | fips_sha1_selftest.o: ../../include/openssl/safestack.h | ||
126 | fips_sha1_selftest.o: ../../include/openssl/sha.h ../../include/openssl/stack.h | ||
127 | fips_sha1_selftest.o: ../../include/openssl/symhacks.h fips_sha1_selftest.c | ||
128 | fips_shatest.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h | ||
129 | fips_shatest.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h | ||
130 | fips_shatest.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h | ||
131 | fips_shatest.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h | ||
132 | fips_shatest.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h | ||
133 | fips_shatest.o: ../../include/openssl/err.h ../../include/openssl/evp.h | ||
134 | fips_shatest.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h | ||
135 | fips_shatest.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h | ||
136 | fips_shatest.o: ../../include/openssl/opensslconf.h | ||
137 | fips_shatest.o: ../../include/openssl/opensslv.h | ||
138 | fips_shatest.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h | ||
139 | fips_shatest.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h | ||
140 | fips_shatest.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h | ||
141 | fips_shatest.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h | ||
142 | fips_shatest.o: ../../include/openssl/x509v3.h ../fips_utl.h fips_shatest.c | ||
143 | fips_standalone_sha1.o: ../../include/openssl/asn1.h | ||
144 | fips_standalone_sha1.o: ../../include/openssl/bio.h | ||
145 | fips_standalone_sha1.o: ../../include/openssl/crypto.h | ||
146 | fips_standalone_sha1.o: ../../include/openssl/e_os2.h | ||
147 | fips_standalone_sha1.o: ../../include/openssl/evp.h | ||
148 | fips_standalone_sha1.o: ../../include/openssl/fips.h | ||
149 | fips_standalone_sha1.o: ../../include/openssl/hmac.h | ||
150 | fips_standalone_sha1.o: ../../include/openssl/obj_mac.h | ||
151 | fips_standalone_sha1.o: ../../include/openssl/objects.h | ||
152 | fips_standalone_sha1.o: ../../include/openssl/opensslconf.h | ||
153 | fips_standalone_sha1.o: ../../include/openssl/opensslv.h | ||
154 | fips_standalone_sha1.o: ../../include/openssl/ossl_typ.h | ||
155 | fips_standalone_sha1.o: ../../include/openssl/safestack.h | ||
156 | fips_standalone_sha1.o: ../../include/openssl/sha.h | ||
157 | fips_standalone_sha1.o: ../../include/openssl/stack.h | ||
158 | fips_standalone_sha1.o: ../../include/openssl/symhacks.h fips_standalone_sha1.c | ||
diff --git a/src/lib/libssl/src/fips/sha/fips_sha1_selftest.c b/src/lib/libssl/src/fips/sha/fips_sha1_selftest.c new file mode 100644 index 0000000000..ba6a29ed94 --- /dev/null +++ b/src/lib/libssl/src/fips/sha/fips_sha1_selftest.c | |||
@@ -0,0 +1,97 @@ | |||
1 | /* ==================================================================== | ||
2 | * Copyright (c) 2003 The OpenSSL Project. All rights reserved. | ||
3 | * | ||
4 | * Redistribution and use in source and binary forms, with or without | ||
5 | * modification, are permitted provided that the following conditions | ||
6 | * are met: | ||
7 | * | ||
8 | * 1. Redistributions of source code must retain the above copyright | ||
9 | * notice, this list of conditions and the following disclaimer. | ||
10 | * | ||
11 | * 2. Redistributions in binary form must reproduce the above copyright | ||
12 | * notice, this list of conditions and the following disclaimer in | ||
13 | * the documentation and/or other materials provided with the | ||
14 | * distribution. | ||
15 | * | ||
16 | * 3. All advertising materials mentioning features or use of this | ||
17 | * software must display the following acknowledgment: | ||
18 | * "This product includes software developed by the OpenSSL Project | ||
19 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" | ||
20 | * | ||
21 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
22 | * endorse or promote products derived from this software without | ||
23 | * prior written permission. For written permission, please contact | ||
24 | * openssl-core@openssl.org. | ||
25 | * | ||
26 | * 5. Products derived from this software may not be called "OpenSSL" | ||
27 | * nor may "OpenSSL" appear in their names without prior written | ||
28 | * permission of the OpenSSL Project. | ||
29 | * | ||
30 | * 6. Redistributions of any form whatsoever must retain the following | ||
31 | * acknowledgment: | ||
32 | * "This product includes software developed by the OpenSSL Project | ||
33 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)" | ||
34 | * | ||
35 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
36 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
37 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
38 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
39 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
40 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
41 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
42 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
43 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
44 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
45 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
46 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
47 | * | ||
48 | */ | ||
49 | |||
50 | #include <string.h> | ||
51 | #include <openssl/err.h> | ||
52 | #include <openssl/fips.h> | ||
53 | #include <openssl/evp.h> | ||
54 | #include <openssl/sha.h> | ||
55 | |||
56 | #ifdef OPENSSL_FIPS | ||
57 | static char test[][60]= | ||
58 | { | ||
59 | "", | ||
60 | "abc", | ||
61 | "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" | ||
62 | }; | ||
63 | |||
64 | static const unsigned char ret[][SHA_DIGEST_LENGTH]= | ||
65 | { | ||
66 | { 0xda,0x39,0xa3,0xee,0x5e,0x6b,0x4b,0x0d,0x32,0x55, | ||
67 | 0xbf,0xef,0x95,0x60,0x18,0x90,0xaf,0xd8,0x07,0x09 }, | ||
68 | { 0xa9,0x99,0x3e,0x36,0x47,0x06,0x81,0x6a,0xba,0x3e, | ||
69 | 0x25,0x71,0x78,0x50,0xc2,0x6c,0x9c,0xd0,0xd8,0x9d }, | ||
70 | { 0x84,0x98,0x3e,0x44,0x1c,0x3b,0xd2,0x6e,0xba,0xae, | ||
71 | 0x4a,0xa1,0xf9,0x51,0x29,0xe5,0xe5,0x46,0x70,0xf1 }, | ||
72 | }; | ||
73 | |||
74 | void FIPS_corrupt_sha1() | ||
75 | { | ||
76 | test[2][0]++; | ||
77 | } | ||
78 | |||
79 | int FIPS_selftest_sha1() | ||
80 | { | ||
81 | int n; | ||
82 | |||
83 | for(n=0 ; n<sizeof(test)/sizeof(test[0]) ; ++n) | ||
84 | { | ||
85 | unsigned char md[SHA_DIGEST_LENGTH]; | ||
86 | |||
87 | EVP_Digest(test[n],strlen(test[n]),md, NULL, EVP_sha1(), NULL); | ||
88 | if(memcmp(md,ret[n],sizeof md)) | ||
89 | { | ||
90 | FIPSerr(FIPS_F_FIPS_SELFTEST_SHA1,FIPS_R_SELFTEST_FAILED); | ||
91 | return 0; | ||
92 | } | ||
93 | } | ||
94 | return 1; | ||
95 | } | ||
96 | |||
97 | #endif | ||
diff --git a/src/lib/libssl/src/fips/sha/fips_shatest.c b/src/lib/libssl/src/fips/sha/fips_shatest.c new file mode 100644 index 0000000000..ae5ecdd2be --- /dev/null +++ b/src/lib/libssl/src/fips/sha/fips_shatest.c | |||
@@ -0,0 +1,388 @@ | |||
1 | /* fips_shatest.c */ | ||
2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | ||
3 | * project 2005. | ||
4 | */ | ||
5 | /* ==================================================================== | ||
6 | * Copyright (c) 2005 The OpenSSL Project. All rights reserved. | ||
7 | * | ||
8 | * Redistribution and use in source and binary forms, with or without | ||
9 | * modification, are permitted provided that the following conditions | ||
10 | * are met: | ||
11 | * | ||
12 | * 1. Redistributions of source code must retain the above copyright | ||
13 | * notice, this list of conditions and the following disclaimer. | ||
14 | * | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in | ||
17 | * the documentation and/or other materials provided with the | ||
18 | * distribution. | ||
19 | * | ||
20 | * 3. All advertising materials mentioning features or use of this | ||
21 | * software must display the following acknowledgment: | ||
22 | * "This product includes software developed by the OpenSSL Project | ||
23 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" | ||
24 | * | ||
25 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
26 | * endorse or promote products derived from this software without | ||
27 | * prior written permission. For written permission, please contact | ||
28 | * licensing@OpenSSL.org. | ||
29 | * | ||
30 | * 5. Products derived from this software may not be called "OpenSSL" | ||
31 | * nor may "OpenSSL" appear in their names without prior written | ||
32 | * permission of the OpenSSL Project. | ||
33 | * | ||
34 | * 6. Redistributions of any form whatsoever must retain the following | ||
35 | * acknowledgment: | ||
36 | * "This product includes software developed by the OpenSSL Project | ||
37 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" | ||
38 | * | ||
39 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
40 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
41 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
42 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
43 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
44 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
45 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
46 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
47 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
48 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
49 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
50 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
51 | * ==================================================================== | ||
52 | * | ||
53 | * This product includes cryptographic software written by Eric Young | ||
54 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
55 | * Hudson (tjh@cryptsoft.com). | ||
56 | * | ||
57 | */ | ||
58 | |||
59 | #include <stdio.h> | ||
60 | #include <ctype.h> | ||
61 | #include <string.h> | ||
62 | #include <openssl/bio.h> | ||
63 | #include <openssl/evp.h> | ||
64 | #include <openssl/err.h> | ||
65 | #include <openssl/bn.h> | ||
66 | #include <openssl/x509v3.h> | ||
67 | |||
68 | #ifndef OPENSSL_FIPS | ||
69 | |||
70 | int main(int argc, char *argv[]) | ||
71 | { | ||
72 | printf("No FIPS SHAXXX support\n"); | ||
73 | return(0); | ||
74 | } | ||
75 | |||
76 | #else | ||
77 | |||
78 | #include "fips_utl.h" | ||
79 | |||
80 | static int dgst_test(FILE *out, FILE *in); | ||
81 | static int print_dgst(const EVP_MD *md, FILE *out, | ||
82 | unsigned char *Msg, int Msglen); | ||
83 | static int print_monte(const EVP_MD *md, FILE *out, | ||
84 | unsigned char *Seed, int SeedLen); | ||
85 | |||
86 | int main(int argc, char **argv) | ||
87 | { | ||
88 | FILE *in = NULL, *out = NULL; | ||
89 | |||
90 | int ret = 1; | ||
91 | |||
92 | if(!FIPS_mode_set(1)) | ||
93 | { | ||
94 | do_print_errors(); | ||
95 | goto end; | ||
96 | } | ||
97 | |||
98 | if (argc == 1) | ||
99 | in = stdin; | ||
100 | else | ||
101 | in = fopen(argv[1], "r"); | ||
102 | |||
103 | if (argc < 2) | ||
104 | out = stdout; | ||
105 | else | ||
106 | out = fopen(argv[2], "w"); | ||
107 | |||
108 | if (!in) | ||
109 | { | ||
110 | fprintf(stderr, "FATAL input initialization error\n"); | ||
111 | goto end; | ||
112 | } | ||
113 | |||
114 | if (!out) | ||
115 | { | ||
116 | fprintf(stderr, "FATAL output initialization error\n"); | ||
117 | goto end; | ||
118 | } | ||
119 | |||
120 | if (!dgst_test(out, in)) | ||
121 | { | ||
122 | fprintf(stderr, "FATAL digest file processing error\n"); | ||
123 | goto end; | ||
124 | } | ||
125 | else | ||
126 | ret = 0; | ||
127 | |||
128 | end: | ||
129 | |||
130 | if (ret) | ||
131 | do_print_errors(); | ||
132 | |||
133 | if (in && (in != stdin)) | ||
134 | fclose(in); | ||
135 | if (out && (out != stdout)) | ||
136 | fclose(out); | ||
137 | |||
138 | return ret; | ||
139 | |||
140 | } | ||
141 | |||
142 | #define SHA_TEST_MAX_BITS 102400 | ||
143 | #define SHA_TEST_MAXLINELEN (((SHA_TEST_MAX_BITS >> 3) * 2) + 100) | ||
144 | |||
145 | int dgst_test(FILE *out, FILE *in) | ||
146 | { | ||
147 | const EVP_MD *md = NULL; | ||
148 | char *linebuf, *olinebuf, *p, *q; | ||
149 | char *keyword, *value; | ||
150 | unsigned char *Msg = NULL, *Seed = NULL; | ||
151 | long MsgLen = -1, Len = -1, SeedLen = -1; | ||
152 | int ret = 0; | ||
153 | int lnum = 0; | ||
154 | |||
155 | olinebuf = OPENSSL_malloc(SHA_TEST_MAXLINELEN); | ||
156 | linebuf = OPENSSL_malloc(SHA_TEST_MAXLINELEN); | ||
157 | |||
158 | if (!linebuf || !olinebuf) | ||
159 | goto error; | ||
160 | |||
161 | |||
162 | while (fgets(olinebuf, SHA_TEST_MAXLINELEN, in)) | ||
163 | { | ||
164 | lnum++; | ||
165 | strcpy(linebuf, olinebuf); | ||
166 | keyword = linebuf; | ||
167 | /* Skip leading space */ | ||
168 | while (isspace((unsigned char)*keyword)) | ||
169 | keyword++; | ||
170 | |||
171 | /* Look for = sign */ | ||
172 | p = strchr(linebuf, '='); | ||
173 | |||
174 | /* If no = or starts with [ (for [L=20] line) just copy */ | ||
175 | if (!p) | ||
176 | { | ||
177 | fputs(olinebuf, out); | ||
178 | continue; | ||
179 | } | ||
180 | |||
181 | q = p - 1; | ||
182 | |||
183 | /* Remove trailing space */ | ||
184 | while (isspace((unsigned char)*q)) | ||
185 | *q-- = 0; | ||
186 | |||
187 | *p = 0; | ||
188 | value = p + 1; | ||
189 | |||
190 | /* Remove leading space from value */ | ||
191 | while (isspace((unsigned char)*value)) | ||
192 | value++; | ||
193 | |||
194 | /* Remove trailing space from value */ | ||
195 | p = value + strlen(value) - 1; | ||
196 | while (*p == '\n' || isspace((unsigned char)*p)) | ||
197 | *p-- = 0; | ||
198 | |||
199 | if (!strcmp(keyword,"[L") && *p==']') | ||
200 | { | ||
201 | switch (atoi(value)) | ||
202 | { | ||
203 | case 20: md=EVP_sha1(); break; | ||
204 | case 28: md=EVP_sha224(); break; | ||
205 | case 32: md=EVP_sha256(); break; | ||
206 | case 48: md=EVP_sha384(); break; | ||
207 | case 64: md=EVP_sha512(); break; | ||
208 | default: goto parse_error; | ||
209 | } | ||
210 | } | ||
211 | else if (!strcmp(keyword, "Len")) | ||
212 | { | ||
213 | if (Len != -1) | ||
214 | goto parse_error; | ||
215 | Len = atoi(value); | ||
216 | if (Len < 0) | ||
217 | goto parse_error; | ||
218 | /* Only handle multiples of 8 bits */ | ||
219 | if (Len & 0x7) | ||
220 | goto parse_error; | ||
221 | if (Len > SHA_TEST_MAX_BITS) | ||
222 | goto parse_error; | ||
223 | MsgLen = Len >> 3; | ||
224 | } | ||
225 | |||
226 | else if (!strcmp(keyword, "Msg")) | ||
227 | { | ||
228 | long tmplen; | ||
229 | if (strlen(value) & 1) | ||
230 | *(--value) = '0'; | ||
231 | if (Msg) | ||
232 | goto parse_error; | ||
233 | Msg = hex2bin_m(value, &tmplen); | ||
234 | if (!Msg) | ||
235 | goto parse_error; | ||
236 | } | ||
237 | else if (!strcmp(keyword, "Seed")) | ||
238 | { | ||
239 | if (strlen(value) & 1) | ||
240 | *(--value) = '0'; | ||
241 | if (Seed) | ||
242 | goto parse_error; | ||
243 | Seed = hex2bin_m(value, &SeedLen); | ||
244 | if (!Seed) | ||
245 | goto parse_error; | ||
246 | } | ||
247 | else if (!strcmp(keyword, "MD")) | ||
248 | continue; | ||
249 | else | ||
250 | goto parse_error; | ||
251 | |||
252 | fputs(olinebuf, out); | ||
253 | |||
254 | if (md && Msg && (MsgLen >= 0)) | ||
255 | { | ||
256 | if (!print_dgst(md, out, Msg, MsgLen)) | ||
257 | goto error; | ||
258 | OPENSSL_free(Msg); | ||
259 | Msg = NULL; | ||
260 | MsgLen = -1; | ||
261 | Len = -1; | ||
262 | } | ||
263 | else if (md && Seed && (SeedLen > 0)) | ||
264 | { | ||
265 | if (!print_monte(md, out, Seed, SeedLen)) | ||
266 | goto error; | ||
267 | OPENSSL_free(Seed); | ||
268 | Seed = NULL; | ||
269 | SeedLen = -1; | ||
270 | } | ||
271 | |||
272 | |||
273 | } | ||
274 | |||
275 | |||
276 | ret = 1; | ||
277 | |||
278 | |||
279 | error: | ||
280 | |||
281 | if (olinebuf) | ||
282 | OPENSSL_free(olinebuf); | ||
283 | if (linebuf) | ||
284 | OPENSSL_free(linebuf); | ||
285 | if (Msg) | ||
286 | OPENSSL_free(Msg); | ||
287 | if (Seed) | ||
288 | OPENSSL_free(Seed); | ||
289 | |||
290 | return ret; | ||
291 | |||
292 | parse_error: | ||
293 | |||
294 | fprintf(stderr, "FATAL parse error processing line %d\n", lnum); | ||
295 | |||
296 | goto error; | ||
297 | |||
298 | } | ||
299 | |||
300 | static int print_dgst(const EVP_MD *emd, FILE *out, | ||
301 | unsigned char *Msg, int Msglen) | ||
302 | { | ||
303 | int i, mdlen; | ||
304 | unsigned char md[EVP_MAX_MD_SIZE]; | ||
305 | if (!EVP_Digest(Msg, Msglen, md, (unsigned int *)&mdlen, emd, NULL)) | ||
306 | { | ||
307 | fputs("Error calculating HASH\n", stderr); | ||
308 | return 0; | ||
309 | } | ||
310 | fputs("MD = ", out); | ||
311 | for (i = 0; i < mdlen; i++) | ||
312 | fprintf(out, "%02x", md[i]); | ||
313 | fputs("\n", out); | ||
314 | return 1; | ||
315 | } | ||
316 | |||
317 | static int print_monte(const EVP_MD *md, FILE *out, | ||
318 | unsigned char *Seed, int SeedLen) | ||
319 | { | ||
320 | unsigned int i, j, k; | ||
321 | int ret = 0; | ||
322 | EVP_MD_CTX ctx; | ||
323 | unsigned char *m1, *m2, *m3, *p; | ||
324 | unsigned int mlen, m1len, m2len, m3len; | ||
325 | |||
326 | EVP_MD_CTX_init(&ctx); | ||
327 | |||
328 | if (SeedLen > EVP_MAX_MD_SIZE) | ||
329 | mlen = SeedLen; | ||
330 | else | ||
331 | mlen = EVP_MAX_MD_SIZE; | ||
332 | |||
333 | m1 = OPENSSL_malloc(mlen); | ||
334 | m2 = OPENSSL_malloc(mlen); | ||
335 | m3 = OPENSSL_malloc(mlen); | ||
336 | |||
337 | if (!m1 || !m2 || !m3) | ||
338 | goto mc_error; | ||
339 | |||
340 | m1len = m2len = m3len = SeedLen; | ||
341 | memcpy(m1, Seed, SeedLen); | ||
342 | memcpy(m2, Seed, SeedLen); | ||
343 | memcpy(m3, Seed, SeedLen); | ||
344 | |||
345 | fputs("\n", out); | ||
346 | |||
347 | for (j = 0; j < 100; j++) | ||
348 | { | ||
349 | for (i = 0; i < 1000; i++) | ||
350 | { | ||
351 | EVP_DigestInit_ex(&ctx, md, NULL); | ||
352 | EVP_DigestUpdate(&ctx, m1, m1len); | ||
353 | EVP_DigestUpdate(&ctx, m2, m2len); | ||
354 | EVP_DigestUpdate(&ctx, m3, m3len); | ||
355 | p = m1; | ||
356 | m1 = m2; | ||
357 | m1len = m2len; | ||
358 | m2 = m3; | ||
359 | m2len = m3len; | ||
360 | m3 = p; | ||
361 | EVP_DigestFinal_ex(&ctx, m3, &m3len); | ||
362 | } | ||
363 | fprintf(out, "COUNT = %d\n", j); | ||
364 | fputs("MD = ", out); | ||
365 | for (k = 0; k < m3len; k++) | ||
366 | fprintf(out, "%02x", m3[k]); | ||
367 | fputs("\n\n", out); | ||
368 | memcpy(m1, m3, m3len); | ||
369 | memcpy(m2, m3, m3len); | ||
370 | m1len = m2len = m3len; | ||
371 | } | ||
372 | |||
373 | ret = 1; | ||
374 | |||
375 | mc_error: | ||
376 | if (m1) | ||
377 | OPENSSL_free(m1); | ||
378 | if (m2) | ||
379 | OPENSSL_free(m2); | ||
380 | if (m3) | ||
381 | OPENSSL_free(m3); | ||
382 | |||
383 | EVP_MD_CTX_cleanup(&ctx); | ||
384 | |||
385 | return ret; | ||
386 | } | ||
387 | |||
388 | #endif | ||
diff --git a/src/lib/libssl/src/fips/sha/fips_standalone_sha1.c b/src/lib/libssl/src/fips/sha/fips_standalone_sha1.c new file mode 100644 index 0000000000..058b71a20f --- /dev/null +++ b/src/lib/libssl/src/fips/sha/fips_standalone_sha1.c | |||
@@ -0,0 +1,173 @@ | |||
1 | /* ==================================================================== | ||
2 | * Copyright (c) 2003 The OpenSSL Project. All rights reserved. | ||
3 | * | ||
4 | * Redistribution and use in source and binary forms, with or without | ||
5 | * modification, are permitted provided that the following conditions | ||
6 | * are met: | ||
7 | * | ||
8 | * 1. Redistributions of source code must retain the above copyright | ||
9 | * notice, this list of conditions and the following disclaimer. | ||
10 | * | ||
11 | * 2. Redistributions in binary form must reproduce the above copyright | ||
12 | * notice, this list of conditions and the following disclaimer in | ||
13 | * the documentation and/or other materials provided with the | ||
14 | * distribution. | ||
15 | * | ||
16 | * 3. All advertising materials mentioning features or use of this | ||
17 | * software must display the following acknowledgment: | ||
18 | * "This product includes software developed by the OpenSSL Project | ||
19 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" | ||
20 | * | ||
21 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to | ||
22 | * endorse or promote products derived from this software without | ||
23 | * prior written permission. For written permission, please contact | ||
24 | * openssl-core@openssl.org. | ||
25 | * | ||
26 | * 5. Products derived from this software may not be called "OpenSSL" | ||
27 | * nor may "OpenSSL" appear in their names without prior written | ||
28 | * permission of the OpenSSL Project. | ||
29 | * | ||
30 | * 6. Redistributions of any form whatsoever must retain the following | ||
31 | * acknowledgment: | ||
32 | * "This product includes software developed by the OpenSSL Project | ||
33 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)" | ||
34 | * | ||
35 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY | ||
36 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
37 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
38 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR | ||
39 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
40 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
41 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
42 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
43 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
44 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
45 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
46 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
47 | * | ||
48 | */ | ||
49 | |||
50 | #include <stdio.h> | ||
51 | #include <stdlib.h> | ||
52 | #include <string.h> | ||
53 | #include <openssl/opensslconf.h> | ||
54 | #include <openssl/sha.h> | ||
55 | #include <openssl/hmac.h> | ||
56 | |||
57 | #ifndef FIPSCANISTER_O | ||
58 | int FIPS_selftest_failed() { return 0; } | ||
59 | void FIPS_selftest_check() {} | ||
60 | void OPENSSL_cleanse(void *p,size_t len) {} | ||
61 | #endif | ||
62 | |||
63 | #ifdef OPENSSL_FIPS | ||
64 | |||
65 | static void hmac_init(SHA_CTX *md_ctx,SHA_CTX *o_ctx, | ||
66 | const char *key) | ||
67 | { | ||
68 | int len=strlen(key); | ||
69 | int i; | ||
70 | unsigned char keymd[HMAC_MAX_MD_CBLOCK]; | ||
71 | unsigned char pad[HMAC_MAX_MD_CBLOCK]; | ||
72 | |||
73 | if (len > SHA_CBLOCK) | ||
74 | { | ||
75 | SHA1_Init(md_ctx); | ||
76 | SHA1_Update(md_ctx,key,len); | ||
77 | SHA1_Final(keymd,md_ctx); | ||
78 | len=20; | ||
79 | } | ||
80 | else | ||
81 | memcpy(keymd,key,len); | ||
82 | memset(&keymd[len],'\0',HMAC_MAX_MD_CBLOCK-len); | ||
83 | |||
84 | for(i=0 ; i < HMAC_MAX_MD_CBLOCK ; i++) | ||
85 | pad[i]=0x36^keymd[i]; | ||
86 | SHA1_Init(md_ctx); | ||
87 | SHA1_Update(md_ctx,pad,SHA_CBLOCK); | ||
88 | |||
89 | for(i=0 ; i < HMAC_MAX_MD_CBLOCK ; i++) | ||
90 | pad[i]=0x5c^keymd[i]; | ||
91 | SHA1_Init(o_ctx); | ||
92 | SHA1_Update(o_ctx,pad,SHA_CBLOCK); | ||
93 | } | ||
94 | |||
95 | static void hmac_final(unsigned char *md,SHA_CTX *md_ctx,SHA_CTX *o_ctx) | ||
96 | { | ||
97 | unsigned char buf[20]; | ||
98 | |||
99 | SHA1_Final(buf,md_ctx); | ||
100 | SHA1_Update(o_ctx,buf,sizeof buf); | ||
101 | SHA1_Final(md,o_ctx); | ||
102 | } | ||
103 | |||
104 | #endif | ||
105 | |||
106 | int main(int argc,char **argv) | ||
107 | { | ||
108 | #ifdef OPENSSL_FIPS | ||
109 | static char key[]="etaonrishdlcupfm"; | ||
110 | int n,binary=0; | ||
111 | |||
112 | if(argc < 2) | ||
113 | { | ||
114 | fprintf(stderr,"%s [<file>]+\n",argv[0]); | ||
115 | exit(1); | ||
116 | } | ||
117 | |||
118 | n=1; | ||
119 | if (!strcmp(argv[n],"-binary")) | ||
120 | { | ||
121 | n++; | ||
122 | binary=1; /* emit binary fingerprint... */ | ||
123 | } | ||
124 | |||
125 | for(; n < argc ; ++n) | ||
126 | { | ||
127 | FILE *f=fopen(argv[n],"rb"); | ||
128 | SHA_CTX md_ctx,o_ctx; | ||
129 | unsigned char md[20]; | ||
130 | int i; | ||
131 | |||
132 | if(!f) | ||
133 | { | ||
134 | perror(argv[n]); | ||
135 | exit(2); | ||
136 | } | ||
137 | |||
138 | hmac_init(&md_ctx,&o_ctx,key); | ||
139 | for( ; ; ) | ||
140 | { | ||
141 | char buf[1024]; | ||
142 | int l=fread(buf,1,sizeof buf,f); | ||
143 | |||
144 | if(l == 0) | ||
145 | { | ||
146 | if(ferror(f)) | ||
147 | { | ||
148 | perror(argv[n]); | ||
149 | exit(3); | ||
150 | } | ||
151 | else | ||
152 | break; | ||
153 | } | ||
154 | SHA1_Update(&md_ctx,buf,l); | ||
155 | } | ||
156 | hmac_final(md,&md_ctx,&o_ctx); | ||
157 | |||
158 | if (binary) | ||
159 | { | ||
160 | fwrite(md,20,1,stdout); | ||
161 | break; /* ... for single(!) file */ | ||
162 | } | ||
163 | |||
164 | printf("HMAC-SHA1(%s)= ",argv[n]); | ||
165 | for(i=0 ; i < 20 ; ++i) | ||
166 | printf("%02x",md[i]); | ||
167 | printf("\n"); | ||
168 | } | ||
169 | #endif | ||
170 | return 0; | ||
171 | } | ||
172 | |||
173 | |||
diff --git a/src/lib/libssl/src/ms/do_fips.bat b/src/lib/libssl/src/ms/do_fips.bat new file mode 100644 index 0000000000..8d27eb05bd --- /dev/null +++ b/src/lib/libssl/src/ms/do_fips.bat | |||
@@ -0,0 +1,204 @@ | |||
1 | @echo off | ||
2 | |||
3 | SET ASM=%1 | ||
4 | |||
5 | if NOT X%PROCESSOR_ARCHITECTURE% == X goto defined | ||
6 | |||
7 | echo Processor Architecture Undefined: defaulting to X86 | ||
8 | |||
9 | goto X86 | ||
10 | |||
11 | :defined | ||
12 | |||
13 | if %PROCESSOR_ARCHITECTURE% == x86 goto X86 | ||
14 | |||
15 | if %PROCESSOR_ARCHITECTURE% == IA64 goto IA64 | ||
16 | |||
17 | if %PROCESSOR_ARCHITECTURE% == AMD64 goto AMD64 | ||
18 | |||
19 | echo Processor Architecture Unrecognized: defaulting to X86 | ||
20 | |||
21 | :X86 | ||
22 | echo Auto Configuring for X86 | ||
23 | |||
24 | SET TARGET=VC-WIN32 | ||
25 | |||
26 | if x%ASM% == xno-asm goto compile | ||
27 | echo Generating x86 for NASM assember | ||
28 | SET ASM=nasm | ||
29 | SET ASMOPTS=-DOPENSSL_IA32_SSE2 | ||
30 | |||
31 | echo Bignum | ||
32 | cd crypto\bn\asm | ||
33 | perl bn-586.pl win32n %ASMOPTS% > bn_win32.asm | ||
34 | if ERRORLEVEL 1 goto error | ||
35 | perl co-586.pl win32n %ASMOPTS% > co_win32.asm | ||
36 | if ERRORLEVEL 1 goto error | ||
37 | perl mo-586.pl win32n %ASMOPTS% > mt_win32.asm | ||
38 | if ERRORLEVEL 1 goto error | ||
39 | cd ..\..\.. | ||
40 | |||
41 | echo AES | ||
42 | cd crypto\aes\asm | ||
43 | perl aes-586.pl win32n %ASMOPTS% > a_win32.asm | ||
44 | if ERRORLEVEL 1 goto error | ||
45 | cd ..\..\.. | ||
46 | |||
47 | echo DES | ||
48 | cd crypto\des\asm | ||
49 | perl des-586.pl win32n %ASMOPTS% > d_win32.asm | ||
50 | if ERRORLEVEL 1 goto error | ||
51 | cd ..\..\.. | ||
52 | |||
53 | echo "crypt(3)" | ||
54 | |||
55 | cd crypto\des\asm | ||
56 | perl crypt586.pl win32n %ASMOPTS% > y_win32.asm | ||
57 | if ERRORLEVEL 1 goto error | ||
58 | cd ..\..\.. | ||
59 | |||
60 | echo Blowfish | ||
61 | |||
62 | cd crypto\bf\asm | ||
63 | perl bf-586.pl win32n %ASMOPTS% > b_win32.asm | ||
64 | if ERRORLEVEL 1 goto error | ||
65 | cd ..\..\.. | ||
66 | |||
67 | echo CAST5 | ||
68 | cd crypto\cast\asm | ||
69 | perl cast-586.pl win32n %ASMOPTS% > c_win32.asm | ||
70 | if ERRORLEVEL 1 goto error | ||
71 | cd ..\..\.. | ||
72 | |||
73 | echo RC4 | ||
74 | cd crypto\rc4\asm | ||
75 | perl rc4-586.pl win32n %ASMOPTS% > r4_win32.asm | ||
76 | if ERRORLEVEL 1 goto error | ||
77 | cd ..\..\.. | ||
78 | |||
79 | echo MD5 | ||
80 | cd crypto\md5\asm | ||
81 | perl md5-586.pl win32n %ASMOPTS% > m5_win32.asm | ||
82 | if ERRORLEVEL 1 goto error | ||
83 | cd ..\..\.. | ||
84 | |||
85 | echo SHA1 | ||
86 | cd crypto\sha\asm | ||
87 | perl sha1-586.pl win32n %ASMOPTS% > s1_win32.asm | ||
88 | if ERRORLEVEL 1 goto error | ||
89 | perl sha512-sse2.pl win32n %ASMOPTS% > sha512-sse2.asm | ||
90 | if ERRORLEVEL 1 goto error | ||
91 | cd ..\..\.. | ||
92 | |||
93 | echo RIPEMD160 | ||
94 | cd crypto\ripemd\asm | ||
95 | perl rmd-586.pl win32n %ASMOPTS% > rm_win32.asm | ||
96 | if ERRORLEVEL 1 goto error | ||
97 | cd ..\..\.. | ||
98 | |||
99 | echo RC5\32 | ||
100 | cd crypto\rc5\asm | ||
101 | perl rc5-586.pl win32n %ASMOPTS% > r5_win32.asm | ||
102 | if ERRORLEVEL 1 goto error | ||
103 | cd ..\..\.. | ||
104 | |||
105 | echo CPU-ID | ||
106 | cd crypto | ||
107 | perl x86cpuid.pl win32n %ASMOPTS% > cpu_win32.asm | ||
108 | if ERRORLEVEL 1 goto error | ||
109 | cd .. | ||
110 | |||
111 | goto compile | ||
112 | |||
113 | :IA64 | ||
114 | |||
115 | echo Auto Configuring for IA64 | ||
116 | SET TARGET=VC-WIN64I | ||
117 | perl ms\uplink.pl win64i > ms\uptable.asm | ||
118 | if ERRORLEVEL 1 goto error | ||
119 | ias -o ms\uptable.obj ms\uptable.asm | ||
120 | if ERRORLEVEL 1 goto error | ||
121 | |||
122 | goto compile | ||
123 | |||
124 | :AMD64 | ||
125 | |||
126 | echo Auto Configuring for AMD64 | ||
127 | SET TARGET=VC-WIN64A | ||
128 | perl ms\uplink.pl win64a > ms\uptable.asm | ||
129 | if ERRORLEVEL 1 goto error | ||
130 | ml64 -c -Foms\uptable.obj ms\uptable.asm | ||
131 | if ERRORLEVEL 1 goto error | ||
132 | |||
133 | if x%ASM% == xno-asm goto compile | ||
134 | echo Generating x86_64 for ML64 assember | ||
135 | SET ASM=ml64 | ||
136 | |||
137 | echo Bignum | ||
138 | cd crypto\bn\asm | ||
139 | perl x86_64-mont.pl x86_64-mont.asm | ||
140 | if ERRORLEVEL 1 goto error | ||
141 | cd ..\..\.. | ||
142 | |||
143 | echo AES | ||
144 | cd crypto\aes\asm | ||
145 | perl aes-x86_64.pl aes-x86_64.asm | ||
146 | if ERRORLEVEL 1 goto error | ||
147 | cd ..\..\.. | ||
148 | |||
149 | echo SHA | ||
150 | cd crypto\sha\asm | ||
151 | perl sha1-x86_64.pl sha1-x86_64.asm | ||
152 | if ERRORLEVEL 1 goto error | ||
153 | perl sha512-x86_64.pl sha256-x86_64.asm | ||
154 | if ERRORLEVEL 1 goto error | ||
155 | perl sha512-x86_64.pl sha512-x86_64.asm | ||
156 | if ERRORLEVEL 1 goto error | ||
157 | cd ..\..\.. | ||
158 | |||
159 | echo CPU-ID | ||
160 | cd crypto | ||
161 | perl x86_64cpuid.pl cpuid-x86_64.asm | ||
162 | if ERRORLEVEL 1 goto error | ||
163 | cd .. | ||
164 | |||
165 | :compile | ||
166 | |||
167 | perl Configure %TARGET% fipscanisterbuild | ||
168 | pause | ||
169 | |||
170 | echo on | ||
171 | |||
172 | perl util\mkfiles.pl >MINFO | ||
173 | @if ERRORLEVEL 1 goto error | ||
174 | perl util\mk1mf.pl dll %ASM% %TARGET% >ms\ntdll.mak | ||
175 | @if ERRORLEVEL 1 goto error | ||
176 | |||
177 | perl util\mkdef.pl 32 libeay > ms\libeay32.def | ||
178 | @if ERRORLEVEL 1 goto error | ||
179 | perl util\mkdef.pl 32 ssleay > ms\ssleay32.def | ||
180 | @if ERRORLEVEL 1 goto error | ||
181 | |||
182 | nmake -f ms\ntdll.mak clean | ||
183 | nmake -f ms\ntdll.mak | ||
184 | @if ERRORLEVEL 1 goto error | ||
185 | |||
186 | @echo. | ||
187 | @echo. | ||
188 | @echo. | ||
189 | @echo *************************** | ||
190 | @echo ****FIPS BUILD SUCCESS***** | ||
191 | @echo *************************** | ||
192 | |||
193 | @goto end | ||
194 | |||
195 | :error | ||
196 | |||
197 | @echo. | ||
198 | @echo. | ||
199 | @echo. | ||
200 | @echo *************************** | ||
201 | @echo ****FIPS BUILD FAILURE***** | ||
202 | @echo *************************** | ||
203 | |||
204 | :end | ||
diff --git a/src/lib/libssl/src/ms/segrenam.pl b/src/lib/libssl/src/ms/segrenam.pl new file mode 100644 index 0000000000..2ab22a0459 --- /dev/null +++ b/src/lib/libssl/src/ms/segrenam.pl | |||
@@ -0,0 +1,65 @@ | |||
1 | #!/usr/bin/env perl | ||
2 | |||
3 | my $quiet = 1; | ||
4 | |||
5 | unpack("L",pack("N",1))!=1 || die "only little-endian hosts are supported"; | ||
6 | |||
7 | # first argument can specify custom suffix... | ||
8 | $suffix=(@ARGV[0]=~/^\$/) ? shift(@ARGV) : "\$m"; | ||
9 | ################################################################# | ||
10 | # rename segments in COFF modules according to %map table below # | ||
11 | %map=( ".text" => "fipstx$suffix", # | ||
12 | ".text\$"=> "fipstx$suffix", # | ||
13 | ".rdata"=> "fipsrd$suffix", # | ||
14 | ".data" => "fipsda$suffix" ); # | ||
15 | ################################################################# | ||
16 | |||
17 | # collect file list | ||
18 | foreach (@ARGV) { | ||
19 | if (/\*/) { push(@files,glob($_)); } | ||
20 | else { push(@files,$_); } | ||
21 | } | ||
22 | |||
23 | use Fcntl; | ||
24 | use Fcntl ":seek"; | ||
25 | |||
26 | foreach (@files) { | ||
27 | $file=$_; | ||
28 | print "processing $file\n" unless $quiet; | ||
29 | |||
30 | sysopen(FD,$file,O_RDWR|O_BINARY) || die "sysopen($file): $!"; | ||
31 | |||
32 | # read IMAGE_DOS_HEADER | ||
33 | sysread(FD,$mz,64)==64 || die "$file is too short"; | ||
34 | @dos_header=unpack("a2C58I",$mz); | ||
35 | if (@dos_header[0] eq "MZ") { | ||
36 | $e_lfanew=pop(@dos_header); | ||
37 | sysseek(FD,$e_lfanew,SEEK_SET) || die "$file is too short"; | ||
38 | sysread(FD,$Magic,4)==4 || die "$file is too short"; | ||
39 | unpack("I",$Magic)==0x4550 || die "$file is not COFF image"; | ||
40 | } elsif ($file =~ /\.obj$/i) { | ||
41 | # .obj files have no IMAGE_DOS_HEADER | ||
42 | sysseek(FD,0,SEEK_SET) || die "unable to rewind $file"; | ||
43 | } else { next; } | ||
44 | |||
45 | # read IMAGE_FILE_HEADER | ||
46 | sysread(FD,$coff,20)==20 || die "$file is too short"; | ||
47 | ($Machine,$NumberOfSections,$TimeDateStamp, | ||
48 | $PointerToSymbolTable,$NumberOfSysmbols, | ||
49 | $SizeOfOptionalHeader,$Characteristics)=unpack("SSIIISS",$coff); | ||
50 | |||
51 | # skip over IMAGE_OPTIONAL_HEADER | ||
52 | sysseek(FD,$SizeOfOptionalHeader,SEEK_CUR) || die "$file is too short"; | ||
53 | |||
54 | # traverse IMAGE_SECTION_HEADER table | ||
55 | for($i=0;$i<$NumberOfSections;$i++) { | ||
56 | sysread(FD,$SectionHeader,40)==40 || die "$file is too short"; | ||
57 | ($Name,@opaque)=unpack("Z8C*",$SectionHeader); | ||
58 | if ($map{$Name}) { | ||
59 | sysseek(FD,-40,SEEK_CUR) || die "unable to rewind $file"; | ||
60 | syswrite(FD,pack("a8C*",$map{$Name},@opaque))==40 || die "syswrite failed: $!"; | ||
61 | printf " %-8s -> %.8s\n",$Name,$map{$Name} unless $quiet; | ||
62 | } | ||
63 | } | ||
64 | close(FD); | ||
65 | } | ||
diff --git a/src/lib/libssl/src/test/CAss.cnf b/src/lib/libssl/src/test/CAss.cnf index 20f8f05e3d..546e660626 100644 --- a/src/lib/libssl/src/test/CAss.cnf +++ b/src/lib/libssl/src/test/CAss.cnf | |||
@@ -7,7 +7,7 @@ RANDFILE = ./.rnd | |||
7 | 7 | ||
8 | #################################################################### | 8 | #################################################################### |
9 | [ req ] | 9 | [ req ] |
10 | default_bits = 512 | 10 | default_bits = 1024 |
11 | default_keyfile = keySS.pem | 11 | default_keyfile = keySS.pem |
12 | distinguished_name = req_distinguished_name | 12 | distinguished_name = req_distinguished_name |
13 | encrypt_rsa_key = no | 13 | encrypt_rsa_key = no |
diff --git a/src/lib/libssl/src/test/SHAmix.r b/src/lib/libssl/src/test/SHAmix.r new file mode 100644 index 0000000000..453fce20ce --- /dev/null +++ b/src/lib/libssl/src/test/SHAmix.r | |||
@@ -0,0 +1,99 @@ | |||
1 | [L = 64] | ||
2 | |||
3 | Len = 16 | ||
4 | Msg = 98a1 | ||
5 | |||
6 | Len = 104 | ||
7 | Msg = 35a37a46df4ccbadd815942249 | ||
8 | |||
9 | Len = 352 | ||
10 | Msg = a93aed0fa5e163a82c9a934aebaab8180edf7de0b32f0fe99f9c75ec305b24609334cefa372c7c758262dc8f | ||
11 | |||
12 | Len = 1016 | ||
13 | Msg = 433e88eb2f8aba562d15c18126fbdffb81d5d6c9397fa052321f5f78cd629708ba099b540da5451e949eeab8687a8d6ac35c531411cb37144ab5ff6a7eb46f1ab28fbcd2ea0444cd87c57bf7d3c02952dba3d3987da07622c16e7c086d90e88ad3d9d4afee301d2bad915d868f54197b70b23c9fa385c443404fbc9abf7e6a | ||
14 | |||
15 | Len = 13696 | ||
16 | Msg = 2c46a76a9dfbae1f5e59f085e9c3d4b600c24b2d404d062cf948e75a3d4ab5b137a31397be9eb34b2a03c78367e0b85448891b511ddee1f787cccd498b172cb7e656c044a03ffde8e42478330fbe9c34072a9e99ce31b41757cc820d98e7d564e06694b96b66f4be34c5eadd0ae4e61fe6abbe4d7ccee855104fedee8b451a7fcedb793d469b0094c0ed07c97fda00dd8c1662b44e3ee6775a5ef6368cb662d257be561a5967893433a4b63f97295036a37272176d081545df00852bc5c4162324161296cd51f76433f2df867a5840f2d0c8d5be00b4dc89443d82175bf69c3bdceb97facae2b2ed68e06ae74fef36d8bd1f75f130cba509341dd54079d45de22845cc8e77a022977c7540aa3e779cb1127f39f825d4d78e55a967ef45e7c1dfb02d9999fd15af2914ba47177177d94576f1091a0657d9e04fe81e6be7b631fc1baae66584c9c26ddbb568750d77555c927bcda1fbdc15c7cbe3e3fe88ca13ff12c59b383343c12976708c0e3dff78be0e286dd32eecf20b71a09fee50a9d0b13c85a15b320b162690f399282798aa3291fdd2f9c40ed873e829388466ddd1da42f2de16aaa9272ccf44790cf3c95382c304e25ae8cb2fc9d9869808f3ee7d42cb143bb0c3a55e03db6d1202ca1bdb744e448640c0aa60d3ebbda5c21e623bb080f4a073a48822725d764e51d415aad1d7c5a7f17433d15ac7d849f910c375ee0899f6a576dada42fd651343383f286009902bb62deeeb2514de6af7f09892c20d0b238f6021f03b62444b1e1f21beeb89acfcd7136416fe7bd8f202e76afaf5345311798be7cb25351add2bb044d2380221009c4d1cbbaba4cdc8631dc0144f2778a6aa1eb3d3c81df0b1b2142fce111af8214d049e40f536c5d462b9224a978e82cc6c420e70ecc3cdaffb726a183c793845315f730fa4dac9fe46e4180397107a6a051f7f0a58ceb9bf4df37e1a81c8e9569187228e8037df2e59c52ba815566768bedc8e09d5e7bdc9f2bff23aaaaf133bb5a3332750f6124ce185e29fda0851addfa2c3d52bb6dfb530fd4ee27dd5bfdce5dc2f41debe6740274bc651aecd4023b098a7d622e2296b50d51b79c4e3f521695a9d43f038e8f273405e26584d3db179e7c1758114a3d39970df674580bbf2884405974f0b9c4b0d8b3287a2314f3f81b6991812f354d655f62513c9551b378cc2efa4c3e08b313c56cada52217fb6112eb8299b28445aca8f72e7170a1cd8bbfee4d2145fbe8d49c6af8831c4d4fc7177a50ee55a7b484261504af946c6bd5e1d6b89092f3c487c0568fa07c356fae9b8e831b8320289039746a435b122cfbc4a0d316bf90d481d3b7d979cc50d98c1190af8dc58e0035557dd5e94f437f41fab513202643a77748f76c6b77302bf40c392cd18731da082c99bdedeb70e15cd68bff59619cabcc92adcf122753c55afde0817352bc247d1170b8ddba1ad1b0faadfe0efbfc5fe6334377fa372c3435691f53dfc2ad5e08966b2d3525b1eec2d993a5cd4ff34278bd40dd80313a0727d05e0a932156152f3e11a190d8d69726f5c57d20f811e1e8932e86409ffdac96c6251c2a2976b8757adcac5d2de94931d1cbea866ec8bcba5774f8a7fde792f6acfd0f01356fd66fdf54a416af6a9397e00f848a2e9831627cbcbb52b5a868ec174e69b4cfa1ed72cdf23f39d7eaf4bdb318c188b1f0fe75655e34ad71907cdb77a1a2b162cd7c22d93dc45321eafb17cd60282e83736267b3e1fb249c307d49509f50839942f0f493afd9ef37db053a918e3ec83d801bbdead07554a018b8ba348fe9b7dd92ea7c5fc0e65a644ba19aa1fb6c022ab768ec7cb249ba17b9dda2860bd4aaaa3dc70ec009804141ad5ebc61203658e57a0887ec0fded18d844a96e79ba7e879c4253056f23e205a80ab1471953438f85848f4ab31ab175c089e0bbb97ea0dd6a67385770356741966053735e2cc2ecdd2c8c75cc045181dd7267584b901674b553082b2c58fb8f8be0b99306194a6f069f684535423304d40a268d55784a14260fa9c9cb1306b82f91cbee3c9f43dea9e50903135cc1c6505605a100bfa28564a2057974eef0852b7b72ce264815026d0759f691db618ef760edde73ec888e181403834f7221bb27a69479ec9b28a3fb0c3f68d4467d25712fc48ad78763f9ea6e8a2e85260225ca1b1a38b720e589fafca29f07257c5467cb74ee53189b8c81b784c43e93f98abde1ed53af60b27b13df6ce45001c6e1813de3521028981086f7d88ba13f6fb1a800f312fbe2f842eebe847fd760c394668cfbfd353ec14ca0366eccd7b4cd63318116bdc42e20a632a0d2b8c5cddb37bfc0a239ebe3800a787d2ece077a7968036b3d9b31cd906f888e3ed742cd769033e2c24c5a9e3c10b6d300db5a17dd88 | ||
17 | |||
18 | Len = 100816 | ||
19 | Msg = f8ed40e878dc68ceec52cc8e2868722310fb117ca3a52e1839eb85d308b8aa00ed0bf0b76aec8a70eba4f0d14d2d85c5a0e876ce2c8ee59cb36947def6c40a587aa07b368ca8e8a08367018e45b984de0d7f1aa46b977cc18c0cd9b7bb897cbb2814aa0ce8f8c9843e03c86c19f2ba95dd2ac4a466a93aae4b3b05055ff148517ecf43e286c57744a3e10a14d0c26e139a503e7927aa688c78609170ebe3b54104390e5f6cf538093a67922e7210e77fcb584ec9b6844e829be246a266460cb442bad52ca47255fb8cfe276108c36e02f9acbd3d191d34b93d29ec40d80496d1c1bb5ef036221641200e905598c54bc4abb3527c5a5f6258e59d4bf54a0498c108a2725428efc2047e0096b32dfdc6ec69d5d72f81301f881ca62a66c22e5dab9fd9d90084c0a36b2f3a0123cc5327a3bc7a12fd947ab57169ac533e4b6a2cb80fc65b9b527cff9fba26994c7fafb5102a0acd8f9d246a3a54178c23eaa04c0fdfd3c0cd980d1fc7a72b25d74df9b95c3dedce8ca316870c654f9ebea9b806da9767cf40605a4b0c7fb06f6b3f197bae7d8cde9daf38530e25bc51b68f9aa23ec0e95199b14bca96c91f3db15bf8432f714dc46ac87218691bc66cb3a42f6865e1c30f8394c8e68c0ddf5851ab7c5906a1994a9af6ac1c44d0d6b95ff15d9f77825ccea40fb9e516d45888f2378e045d95d936d541cea9c8ca52fe5f7d0d919b2b1c59a42d06105ea4f2943c05178e59d67351c5b2c0051c93a4045e512884fa656b772cf398af89081546d920fd3d24ebd16310506a786ab33293027394c1bcb7b1efe46b550ac28529646e8d2a5ae65c59345e24b44cd7b06673f3ed3b9008aa568a739c26682fa596b7a655842cc6b2758b583487c78d14a76bdac7033806c5c210828ef313f8efc4072681f5fded748c31a58ac933b4665c445f07d603e0905e49b84aa55146eb1c1c99196413832a05efee2e64d6732fefc629b79b37bb9390fcbed7226b412204bda523b8b8af5c4a8bdb263ef9f3f6c7b9e1de3a1dc257c1f33b3d54a9101be5b4f2a9db319993c2cd137c41e35c434ce52e859afd1a635af4d8852252dc5e28c729b2b4c96a56d57f3f3854ded59fe612b9b3a51fee3fc1c83db673b0cc7433bff2472bc74a2eeb6706605e308690fd072a7042ca6474603711d8310909e47063f46f287260a26c4f11fe492298a0f98d28c45948a4899e08fcf443a6ba36457dd8329314d53ac0fd0819fcfc3357426c5bb8d3dfd706e205a81091cf08f31cd3459854f3d07e503991ba5f067e3c406c6c5396d8257496f4ba3703cb1ba25c2fe4aa54577af782cd57e85a88a2d75c54039e8b7bb559219edd6e81e41acb6d575d6f798afb2cbf7f00abd5c9c7b0fceec79f9a0fb040ebcbb7bff3602df7b71357efacd37aa57019350bb81213508a006160acde3dae5c42f03141887eaca22d7b33d6791febfb619d11ebabb13e6c5378e9a72e852ddccd31cc53a43275966b7042ddc51485ca20e1c456dcc7020cafb5407548b044d332229911fc74d7fb97de25abff7efb431da82de2ed7e25d0dcc06ffc74e57ca93a6a9f64d76a5c39776fe2266f88d6d0229b527525fd2e22a1407e26f94c5bc6adb1e7327f3c8bb8d4c983385c579dd8f5623df8cd6da569c7de73d9210e6b9253a177653a13ece075940fc81016d8c35fa4f6542df5120c174158ff32533476f4e059e35117081a24798fbdd1eb10f82809836f8dbefe755611347f75423dd8571695960c6f66cca71f0a01e8fecbe1183bee3335eff10b4ff8104132040e2145ec3164b2448f60c730887b9d7894e5f7df3f876cb17136c99cf32db1c02fba860937378dbd093c4c5112133781f06c8ca07c527c2c085e8ba5e52b399f2909e217aef6e3035ecafe2caeb1004069dea023af7eab873deb5ebcef2313c9827821bb9f89fd3d1570a569673d3ede86a4fb13dff242eb98450a8917fd8865c56e0a9f11d72394b79808b0429f3a83cf2465161596887fa2d557b367a1de9c7753666b0cca9c30cba9f0a749c03c55cdc7a6d45852c76ce2010de3e7f75d95228efdc79949b238d90b25f983868b7f07f585f7b00e45d9e132f3c09ee84f794d899759be3dabd46a256f4cf8da71270617cc2425b24cef25d1d2f3945afa6f81abfccc858cd02e05619649b1a5347650934105c02622d538447223d136a8a0455cf3c6f61f696b32266197b5cd1d936fd3ad4288520fb4a2f59bf95e659f33210446ef18debeb679dd99de0c3c74a6eb3dd783861f5db4e94a151c42ce27519d0bbbf1f3b1163563ec06c8bfd881d94a3b896fc07352fc97ada73685588a2242da1b718f81bb1077bc70fbd58b8b52163489ae403838b533851bec30ed0ecd97d72d1af534f3703db59f1f563bdc39d690a0e90e545506463a37e84974fd7b256bbb912cb4077d3e3f5bdd4bd2bab713b696c830b1f2185734c4d2dbd49d5372fe8b813ce73f5e01c36bddbb376ef4541033f2b0355613eeda8951ebf7377e08f967902eb7e23c0fa798c6ae52401721053f1095cacb1e9496500e83c412236fc21566090b3a3eee55aa402c0b774802fd81c9e8579761cfcfdfb1aa23786b2dc35dacd5ca8d8d283369f53e4a5db18060c2c6b0c303052aeeffe169fcaf7ecc63090a9ade245045ab9c8aebf738772297caaef5f857322a597846c7370083d409df27612e47b0cb240daa3cfa51c57108612ac0dddb0f59791289ccbdb3a2cb1fa9ac31a23dd5440682fb373bf0c1f41c4fe2185ad7c53eb69552807410053b0c2d40132250e637b8c425e6a35d93333b5b7d0557927b6179c848ec455fd1ab38348c0e96c60b2da49bd15118df64b6ce4fa48fbc555a4b2874141718e731a40b85382ae6e86ead31cea77f83bf5c063bf1febf71688a832d615e09d6f14badedeaeb6ffbfe343fc7274e78cd46a2aaec0a349c5f133291ee57cdcb65c5474e46294de6bb50886bce6c6f44dcb95f2a4761ed2e6c9e7bfed51e0964afab4e0f7e0b07960f2590baae66b1ec9a63ba0fb6c0d27e81508c51487dbbdc9beb8879fd58c188dfc774b3d0ddbd77ee8bdcdfa0ed8a9387728e12b13e8b3c10cc1c132bd822c2147c5ddf9a993aedbf78ec256db1be76644ca8ca7727208bf89732657152d34e948d73c47561d156f773136684d4162d02260300020123d13a95f4f835907c344942ddeccafe2abb7dc4792c4f1e39c24748c63cba933b16be0b8853e058c47a1ae2c4dfff39ec2339b345fe3557d03c1df91a0607a711636c4416ffdb73532aeeb74f237ed8bf971388a0659e4682a46b8327e751034cbf2c87c7828da9d24baf07a742ada34d1ef38ab1e8f2b4f801192c146600709533e61bc2665dc1e9e6441bf3c4f6643bc0c102a10f9a69da5b0e3d0a0c7cb694c682493032b5853f02953b5c2fc0e1348565389762fc2dcfbb34fd305f2d9df080e859396ffcbb7da78aae0a0d72e3de76c774bc6a81c87f2872b6afe97ced5269009304a4992c4add0bbe24e57632e19ad0fe37ae910193aab0aeae32cf6d618ab33eba59f6a04fad00b1d2403396e6fa661d31b695a1b349d62f56c08fe6c6eae7a482177adf341e51d03ea511d7959c721bd20bf371860ecd7fce1d25212891850b85648db0a039e6638d9c78bc958add3e41341536b5007be63fd1f7e3308876bcebcb97dc3b05a7b2eaadd00f8fcc8dcfa7b961bbe727c9aed1626ff786d6a0ffdbd1002cae8a7d047b6181962a686c152b2341c7c58c9f1dab5af424d183ed1c7d003165a1d04ea3683ff31a0f68615af6f91c21f736e67df641ed31b998445afadf9052bbe004d5dad08f62e5d353e42fc35a92242d8414d99dc4e7e81c8c027af686baa5c185e3f99abb3855b22cfdff0a62e2f47a632b7df8e00e0317af5c24ce7c64077bbb15ec27e062070cd3eb8e549ed9112469090ad9a96eb59294b021eed81987178cb2dcff67a9a2e930f6032c753e203380f8a7c987cea393234699de03a1d09ce204f0a8b6d5cf522b6887174fdbccb08f3e7c4fe2f778254465b32766c48812a45151ac37ae354dac87419f9476baa27e24b2f322b2da4ddf579750684a5881bae2269351fb7de59b9d5a4badd8951135f2713dafc57215dc626ee170fae7f20bff98e36b864e1fe0f0f9a300c903069bf0e0b6f2f8e78423cf6063e89dde6c81efcf26ef15510563c84730f611ac879a6628e55115e1a29de6945d37fbe4f803fcf2e344712d9e0d6f6c79f8773a9f199b705235e20a7830ee3357c5dca29d7a6c29a3d2628bf2c42c8f076cc4525301d8e1860729070dc53164d9fa08bf63cc889eed01b0130a7146d860bbc09ead3865a3082db0836a45f5506c3e46e452e298764939226cedfd06700e4e33c6b4a78add601140249596831e97f960b973a4e4dc3fe2813fa34eb47f998ce57270368fb81719a09298a223f7e3931ce5cdfab3f658649533354e982c87dc9e49eacebb5bb4af9a767b4f1c03d774431168cd4fec1b2726f1aae3f9a062a825f3295557eebf3af4784487b869fb049de44d03fee71194fc200af72103b157431935b5ab9bc122773ffd313d52d7acf1078386090fc011de695e71567cfd51c06317d4ff8841ceeb74ad35f4e5f4d20921123cb88bb2079674ad39e133cdfd6478d69c9bddc7a818be5d7b254bd9e0abdb030f52846fdfeae8ff370a51a9c5f6017af3c6c3db17c5c614ea18ab0e3ca0dd5de621217dffa36e5c5318fe191040a50cc3ca620683bc34da6c142e1c50afce28a86b8b66d189adcd755561a647080d93f3ede1cf54c3afb7e863fc8a82a2576d3f79e9b2bb634e598507a3d7d017e0176b7868bff3a3dfb4474b3ce03c401f33929364e727fbf8096b77eb351435c7a113b3215cc6246dd86f1517a7e550cf828900248f7c1754e40fed62477b296a37d3e53231360d012c4908b466e49b0e620c0a5031228009f259b030956ebd70e49357c3c3ac2842b6bd6e3ca5a3e985dc03f7105681fec03b320a7ca753b782ad3b52fd9c8e3bd980b48dd6ec8901dbf756108e85015821c880416e0693e0479cb31c0743450f6d9214afabc4feadb9bcee9def460a58d3a02d9e3039970068b8e3fd0a403a6ca7f2c71ae2b46ab3c731b1e65e2104c47fcb1f69e7c8c6df8c09b33f2e1cd4192faab316a44536dcac608832019f5765cc5240eabe3c87445c980c299a5e7ae0acc2c2ed19fdc8f011515bcb00476b03633c7669db1b44f97f6cd402778e9687c740dbe5686789b79d0b13f784a2a866eb91ab2d66f064c49e8df513ec348fd7272ee548ba08e1f9f99696ffb53677550d59c67f88404f6e610455a422d9cd987493ca5c366a397dccface2bba8e3e99719dafa768956cbf6fd8defc4104b8925878716a0514f70cbf3fa2c2bc2f66fabe654eed3076257e71117665703eb88c79e4c2b94e8e856e7a6ef90ee2a358409db78b98056ce1750eb80725d70e35507fdfa5933a61496ba48fbd5555717b33b59d4ef211fe096aefd478859ffc97a41372023ef114adcae5a8d5e03c21369baf1e7f417cb40326bc6db1cdf0904651dda3c1039a2f1755e7c329f7c03bf33f324206ce6e1638711c8c9a45f153aa1f847cca2a5d3af1d24fe7a1e1094819e8e712cbe10ead1012b7371b35cbcc2bd5b10505fb63bea20ac81d25e83ed0105e7595b6c28400f4d336791ce4a584323d0b455bbed44392c5f86c9d5287593f6986d4b0b8f9974a7a4157859ba801251d3b44b2bad84f29cb87dcf1680d6d10d1bfd59f0c95fb7bd07fdb3ea2fccd6e3ee80af438956ccfe31e750972f893ea5dcaa26d077fb3f09d990c2f41c8707368bba007803621ecd76540cdb8705435d74f4300eee04710a936f241c034709e625b0dd5dae1f6e86d034426819c365a05f5be420cdf4042bbff965a666a5756f67259448ebf742b6ea189fa17a4c3bfaf651d19a8a525f09d9cff637c8fac02eaa58d3ee3f7221da1e61833c0b183cd9f47686f09597e8115b435454acef80c079eafaa22b18927d07bf8b7c5ebfdec9c42a52b7824d45decef41e6184dc2db1505ca6f94172fafc10731706e79b9856dfede353d2eadeceaf72a302e3492d7dc81e3777e4e9e1f3d33cc4402833ffedb241a75a09e9495d671f80ad3acf06823bb04a92b815edd0ca7d01dcb3318c1ae5c62d3e99c0ec37908b45b51dd65f6b45b34ede2d6f553f60a45e20fafcb34ae4dbd375f52a5db9c62650deeee78e955087c2bea75ede7c304347b171fe0c1a2a033894be6e04605271307f307b2a9cf6ae24b8c87ce033a3fa4cf2bacdfcf54fcccb1f580476c7d00c631a8529a9eea2a713610341e0e25609dc8927e51c58a0a9197a54963b5cb95877354f4b8316df02ed2bea367704a12274d96bcbe0d0d728923a368bb8ab98d5db5401894c822632308ddfd309071fb4b477d8eac0ea5dbbc3e3606d8510d9051dfb5e4b7cdcf2c57c1b76902d864c3109c901da53019ed33cea84b407490486ad9f980a8a63df3d2e3921064afea137f35179130db3351f5bc3f5e7d590a5ab08b5415efbd345f9d57b71ade7dca939efa5a12d677b9af0af14468176a43712bde10cb15787c18bf066eaef8abcdea77d3a0c61d6c74ae7b54fe90940d0233e4b874c9a141dcc740d7fff43b9fbbc012a933d890232cf74fccb7ff7eac1148e203c7381b7f1d1429b1b1152ec25cbf7562596eb402a9328e43b5dc5cae36592da5523f0b9907a6817ecd395a7c778daae85bb11372b20641a04250b77b3a0ece885d07faf9622650259b874536d6d2b92181c834dc111b6fcba483167be40ecc922fb87006f63b9e8e632879563f37a8f712db9fa68c1a20ab239c0116fe022fad1279f3288b8e74a16d447e467b6381515814dd3aecab5c2a09c400b44e9100c04c720dc7e8c6d9460002da6c52004c16999975fef8752c2f9c229cbd9e6446b226cc454bd68cd665668a17328bb30f301e92ef5c7a2197a326df5c99b422096de8af231d1d8872e6e505bcfff026d4862f28d4bb3856a66ced22c9b0587451d8da4230a38561b5b1c69b523a4701a2001382aa82fcbd60733a14696a540227db44aef346d6c0a7ae5173604d59eb828614cafc1b8cfecda054dcc7306f73925e6d1af56ed74c51c6cdb66e9fee8d7a0078254fedb0c0f5dc85a4686870709b499eafbc8451aebadf848b0598ce8f955688bd2d6032abe10d1391d67c20a049841f95d2ee0c8deae2bc1baca0c098d8718cba1ddcd968981c47cd98d247aca4f838f3bf16d092eab8be8deb1f8d504d37cc44a8c96c9f22f2698036d4ad3bb48b31f109626565c147d20a4a7dfd61fb918f81548fb4f78875c1d138e819f6822651b93a3c92ad77793fba5222d870ea671f9cac967919d18f96e92778548415b2e170d90b201215354fc48a77e62823a2c2bb354782ad052732f08beb278f751529416f37d83ea26248517ae2ef2ead28c1077908995a2d25db0deaa957bcab39715283287fd626ea7388abccba2d90e364a7ff4284c84f70da68ce1aafb5be0401cb9d45e085aab41892a49e10cbd5baf2c34f5e0ca076f2772abea6f622b66020d546f8c2f134a87f96edbeb9b08394b585f2c2f98aa792f97b43b5f3aa9c34189804a9ecc2cfaeefbd0f967d85a25bf3136fd8132dec38aa82e4af6ff677682f3b62be27a180aeb22f918c24f23bf6f5954e0722324cccd06829fc32ae4fe3aee6e5a03b3651900e13fb0a759e544d033418b6ed40d037b4549a0404792c8fddc317b7f028493c4c91d6773932f8486417544f3d007e5f9e6fc02fadff175303f77f6b0e1f709bb3d3a93b38552ccf62688a39da1a602dd5e122e6f4e9171769ada5255cc5cf938dfefcbe3ab0faca434c42dc8c357e89a3d1488fa3df35c3580b124ba3bf6d0d203d586707eb692150ed05a01bf9de5c4e67bb948088784016394d47abb853f2b6b643a066ad81bcd1735aed4e108a8c1fcd025b548de874eb60de7f3c568728959147d1219e4b830e06ca2bee1f8a035e28a54ee6958d4821a84e5d1e41139905f7ec60fe67ce5f4eccdcc2c3d1e4a753a32dd3004970a4ff3824471822fe2b5010b9b6c6b01336dbf0181a95cba2624663215468519871cc39e8a7f4a151c8bd03363b402020f2fb98069b2cb8cc1b7e930938e7540d95d1d223e47865135793f9eb573660ff79f7ed2fae503e68ba44596ee745fbd8fa562c5c666d174cc01b1961736e18b8b517161ab9c8058026e0ddd6c94aed0086a26e1b959a5e05eb9d8c1ff5b2ef518ca23b4f265db61b499a48cc46bed28d23ffc1e8d9c9e345c06079ad47c88dd4e8e286575bd7f9420ab9c2d5c6685488b8b34d4c9ac04e1427ae0994cf789b48b01d1db9c2fe75fc5187727bb11119f82d0739ce4048467a08cd635bf78cc1b6cc9c28fdc199d351064a81456f81c9e56a43aef7332973804b06b18a26caa62523a7d0acc272ba49124b17bb68800d5756afd34ddb2b7e2dd8a118aac3fcf39d9f853c4d2c4fd3ed5bd25a6604d68d57db93d15aa1160f8a97e6c24238e84f272780966867f9c644ca2775cdac4af0ece036cfa6ebb1cd9d701dd7daec5763c9a4de0385db383a5647918e79c6a6de1f4ee1f6b722c561704c8d7efa4710d78dfce8ad2df0d3d82cbb59cef0bcb001f70bdc6e17af1a720b117fe02bb1dd527b18e6bce70e9447cd0cc85cbcf431fe7c006f5e4ef878a974a93b25f492847c9ae020583c9d412f4124246164d8f080b615e2eee267a7aeb5fa0974de52cefef23cdda7b305a33a91e9b50471ceb72dae337c485d636e28d6ee31f5705983808b1567d4d4ae820ec445c56e6a404cad6b408691475397c0dd6cfad232106ba96e5104052700a653e21f9ac6d79578a9f52548f426a1e81dd45bae30acdd4d22a2dafd633564d6b2f45e7d35413503c955cb0a9784b42ae8c2a5933a6729f3922f969a158540dcd201ecb6e32f88b5b4921914a2e8f424c8b031f115ea5d23a21e6f22439ffd7e5d11b08df729f65613b4f6ad3edbc9a066a5e712ecbddfa6fa764cdf170c0485f82d924a99b7e7ad8dc44c1f93e49b6469a9af3de5691944413f1417b753bcb84d5b7a34f362c383cbc802b0c88bd23a7ac471b9287571c42081b1134bfc8ce104a550942ab1f2a074cb00a90558d6e841ff15cfde6951f03e450a1bfc90dec6c513fcb2692ddccc31d22e5274d41036656183c72fce208e44920776f196193137ac67d6d65ce9cfaae774f23a86e6ee8ff3a4e9422a4667d971906e5496a4e80278774899c882708611bad282f6c1d666bc5e7c40082b43a6e98d494a18e9b3cf7f154fdbf90d786e59e83b72ad0ab893c49aca50ed37ea5202e650fda54f5c46ca2a35c476f4b009c5e6733232275abd1341199b63d22386c484cb95c43ea90e609c407bc79ddd00609cc2eb0d82848db239b249f164b7ea384d0239fe1e64d04955b9297472cafa2ff272c5c78100aaa86cdd8120556f25652a3c12da5853338e3be8f505d93ea03cd1cae7e78e95befdc0e26b760d11e05403c348e0523fe036381408033c009a8e1f117af5100a6eb91f08307df465c20bc1dd029875ef7e49338689f602d98f2dc690a57a6f2864e57098f8bd723574944ad3688b292db6d01387a16493912722ac8f91fd12b748899bdaeabdf0479df788eda440d7bf30d1c25d78d757f00b74bb556506637fc1ab87162f05d464e63a6272db3fe56e9357275035d6b6bee32bd92c4a1dc94778551e94ee1d8854f767bfac3811bd0287672aaa01ea18c25650f05a68cbacd9158e479b508e72df778589e1e03dc543b60bb3b10399e5c50de9e728e69774fb3f5fea757ddefccd0f9da75afe4b67f9c54aaaaf646e858fb001a6deed0a8a769ecef0689c988de566b6015fb8c40aeb5f2df7ea4bee60e8e69d15c4a4aa5411dbe63fbdd6418cf025d87f37362f15e22aba83abe1a3de9857c71c2234023b969eacc0bc526363b7f30b092ca114f2a6cefb34394d146866ac86a33fc497a8cb8e2a5bac398579ff7958878421fb08fff4f8f3deb8c9641b8de392647df3017a5467f9d7b23036935ec6e188dd6dbfb544b8a9e04a4b3c7fa1e4d1d9879daf69986b8083e6eb023a4b5eff80fef17f8f65433c882a21565a919448e6091d1b61013fdaf9fc3e45bbe827c9b4ab10b05600a1961e81d31c7404f8e0d32bfcac2937eaed811db167dfdc29286b0d51bad2bcdb9dea76eaf495a31a7fe717c1c98be374a36271cdd06ed06c02ef4c3c06cb42f73b3332ed488416010e6bf2f4dc4dade6e2e61f19e9306bf941868f59fa0939005743dd647f0a04b576a7e71d4c383c479453501e18ec56d7cb79fe31ff534afbd8609ed701ef163f9de31bc58114399fa0f22b62c66c380e8a10c34b7e731df2a8d39dcf36fbf3a66d67b973e3a94bf6ee0bd96f5c76baa76492032fdd2f59ecaee403d486f543f2cd7ae7b0dabe1b5566e681cd40d384a94349e9668650a6f2d2daf86c59a7b02ba466cd03ce1d50c3f0ca4c02dc4b3d1c0e7b9a77df9eae0bfcffa32117d7e05adc7195f4278c93497401629897a58d08ad7141ea52e0163f14992d7a284e7b875ce4640b4dd48ceedad1ea17d8ab1e760773044845e0899602f1bdfff4d42ab80c0765d1a8bde2ba0a830c050923956d06c80b182264ad19ae4f7c39e43195f7d421bdcda00e3eb5ec5ef2ec91d69df691ba7fe250352acf01fa92af5e2c634b9c7c97889e9147e869acc153d88cdc18908f882f371ba9c1e13c26e9cb8e3cbd4c5e1988080ca65a67b3a4c3460cfadbec904d853fddd2f5375b6070941fca53cc106b5748480213cfbdc1c34320a0478b05f76fd0454c75eca069cb1fa7b21704dab67dc40d041c8a1040db378e76655636ad725219c049e6536982d6ee9f11dd032280e622547c7ff44a938a1f233c356a98182d22d5770fbc871e20bb37483dd5d6ea1551993b95b30774a49b50d411ebe0e8c92834094e23ec2664d822c40e96fb42b8607b62b6949e05edcaa436d0ffac6a8ff384068acfc0220c0b098d368fb8113918a4f8c9de37cece74c8695cef2427e54a6e77ad092a9b7f1d94ac9f0836deff41b905b5dafc58ad6063759b0372a634f69a639e19521825d66a282f489c3172a3659264d0132af3571e637782bb6fe5c0afd24547612166fd3409d0991392fa054ea5bd07a4cd0921a13ad7b62a0b5e6d56cd8adb7f3eaa5c99576941c38aff311c49a8c9d8c755869302a2e5e40109c8365a551cd3f859b9421be189d3a0e9ed78830d5cd6a2414e9cc4c25814d94d98f8848e5386d6dbddd65d22b96c5d20020a5dd409c7e5344065871e57e01c91a443501dc8bf619890fe231319b5480c3879dee618d319962596539e2970513fb5c0c8eac3a71ff99962779cf1d7e916566d0e29d121c5cec5d7302a18ed00be9316f3de8c669a64c2a960a588f9c8a42690f6867cda7146e8ce27aa6a7fb27606eed9df6a235a42d17ce71627446e206e879de56025a66556263f06684dedcfd6f083d6a707e5fc8f8212d716e062f0f7fd0c2fc62bea93d68581265a803c31cac3f8ac8939c5f8c464ebd19df42c7e8998494af614c8383294f3f3883f2404ac10404759e182a038c97aea04a85530ec005e203807c5bc30fa9f5339b32fb0427e64915e29a25bb25ac60b92256470e7de5298d42c6b88995f8d2fb704e49d55b66b71e237af90fcbfd71d9093e1a543da2e9911ac4102346dc4704859cb33ac5f5dce2b3331a9dc9fb506461a5436c89bf90d39afcf93cbca4cfc35da6ddb112243928246ae0d1ba269b0fce0468d3ecabbdb925c9ea3241e2dbdc6b151fb4aa724a42f98b0248171fa01fa103f116d0e7deb65dc359b09126f9a420300fd209508ec7a50be56d5b470e387d0c52a1d104625f9571ce1404d1b7af3fb00475b95f752ab96610be112d33ded48624015781e7198f4dcdf917839471fbedb43c34efabe09941fab6b342cf672a29dbb1eed0db788dbfcfcc63bcfe80f7718571f691818dd6f839e3cc282f85f03fe0400171cdf1235049fa53de7450b4c40ed398d5a486f52124c1c63de2afc950e81839f52d17e2a7d32f82788465a65da6cd763c6360763561ed2bf47749080549b6e2db87514e1ee1c85a0bbd346eb6e3cc29267cbedcad67a287fc5be65ec59ba8b6854b31c83dfc5155187d4150685c5c2c342ed68b01ac9e44b60f0c100a347a0f93074dd37d8956fe2f43110dda66e9f9e6185c23dab74cfca21f3ede4bca87687549ea02662f45dfa0ad27f9959a120cacb7c419810e1b1a50fad31c12c47d5bbc61bad77044aa541d29faa6126c60ef088b82eead17a52843307d4bf798b853d90d14c5347ff10615381d85e964331b7a123d15a77a6790d93e920052ddb4db4baaac5e2b27b66ff955e53b8308151c81da4711189ccf0eb393c5bbccfa1f6c94a8d5f4bcd266fc6a12061967ce836ca042257368f567dc42de6ce0be84449234a6163b72069f25b7ead4b2003e1a7665e87ccf211abe94175d1c11bff2c0b6bc110194d34aab96934ef59804cd26e4434ba166d9833fb091be37b139cc10748b881c93690528a96ccccd2dbe024510b8da37dceab567dc52706461c486a0463369cbb99bcca2e8a4d2e005c45401964722a4b3ed37c351c9f21685e8992c9634349379f41796deebffc2928058c8ef6ea37c6e4970dedb78d1c2a00ea9e1ff1e7708470a6c60e6a2b1e966aa872776afdb238e97f716b3df8dfd42bf0f7ceb52bf9eb33731bdba5987b8f48b4599d67b383e77413107857e951ae0625059e5616ccb41131df9a480efd5beab3a9c99615921caedc53dbad675c00ba1030577db1d22731677914fa958b44792cc9c19e2ac71ebe61a05ee67ae7116e39e1c0d103f18bbc9d531164360d901da8234d29fb0b37cd2a60c7aa2adb2a4b297ea2fb14122ad95bd4592ef86c88fdae1e37dc8e44ad03c0fcdfa3801e93796771c5a2ec1e4ab12a64b3ffe48e7442c6224661ed5cc987aada6e778399941f7b20f16f94fb346b916be87f005c9c13789741602039d38270643cce3c347565eef5ee09139330301951c15756be47994de6f1802dc5131b9b011051b1d87d744756831a71cc8528487f032fee9dbffccc751e6a1ee6d07bb218b3a7ec6bf5740ead7a47b6907d7aa95b79aecedf4a637ead8fc6fb8654c93d13ee79f5d6258dcc61993aebc65e4fc14eea7d006e31f6e9f60e3bca8ce52ec559876fd20255e507daa99b185671ce1ac11d448c30bcdf97b9617195e0ccd2d15246308dd6cda74a8071114327fe203b1adbaa780f3243105c5111636a51dce966f5652e39d4f91abbbb4576234d6cacc3ec57cef2dd4dda49a6c33d12bb7595fd5ab5bb15b40301f34ddfb831a5dbf62218f496c003227fe6282e2ac054c45e7f3fc93e51b3ee8690f08612395095a0a12729d663eded879d9ffb325c62f2cb546a48bed51ae232fa6ce28a2494c132a6e09d98c2e3d478d5d2d15dce2e2665e4a3db448931068b99899c2bd8ba87349b0cf9e3c52cffdcf58a59b4fe0089b298b42ad7553f831bd60f5cfa3e09102fe773e4c05412973a678f3b3ed420433cd664dc7f218e816a17c5c9013ecb84abf2dd073557dbc41b92a91e0339d57b8b077a9a44d56427fec5748c47c1460b2e2412094db6d0ad06dea0aa0c1368592594bf0b2f590a9d6149e44dd4adc4cb42e5d9940d59397b83b33b88604c210694e3fbd84795c80c1b09ddb3b1ec8bef6e9dfc4d7f295e551a79436007ca48aa605ef5a89571e59cb26f2766e564e39d3bb441deaa0c8664549881d90a77256c0f6c77241fd6ab74b0e2890f78ff16fd2f9271ef96ebfbd0b878ba9c703900752b7447f4efaa60bd9dc9cd5673a36b39d49f54274caf03c0cf82b95141fa20ed3ce02ebf0dd74d9eff8eb9e2dd3a2976b244b12fd33ee75c1f1c459f86a1cefbc817f42d7f43ba406098165cbeab99df4fe751ae3382efce32af252e461652c7598161e74fd8eeca474fab6b1ede039935f2fd4d7562623b90a422a78941f47a76863d95857c33653d1b42b806bbafcfeccb7bb4a0c58acebf6104b2570afc3ca88e4fdf2719cf39c964a1ea7d2ae4a7fadc938abc95adac495093f6b959b1347501606b3f960b6d739291aa8c13eb49e98b0f78d2b91400b6d8961cb6165c8b684738e4d4db2f2ac30ddaa03a5e0cde4142b625e81907f08c60d7cb5729456806c89ff0efd08397423e44738ff38f8e88684f3a099dcda455521caca37ab4f4d9ed5d37975d4fdd778b97cc93babc804864a35e3a2db04598152e67a2f1f157681c3962d46ada23ea5d9a524f9cdbdd08a07a3a85b1f6fbde11d5a35c7743b83bbefd19aedf6d92241d16aeca7f33cc51839b75f111e8edaeaed808daf2f43fdb3c6f032ea45052ac31d4870c4d0d76aa75d0b88635ce449054013f234c4a16cffc58c95ba1cb8a0a0399861eecb1039bdedfab4d05f0270c6b16f03f6b8e629f687f133ebf2662c7f930530746679aac2791f54d6a95bfab5be0c33739074ed4e7ae88dde4a8036a7d6095cf41776366b6ae3f8f4a0734f48c275e129cfffff5e0abd042f99a957bf6f0f47fc7288750f4fe30198f8cad7067b36cd87ebca08abd3f9475e7443f83cca91a1ebfc42ef3494871f51f6d52a5524b9391c687571be5327c7c94ee2a096653acb410917fd51e56a92be4f24c1db6b97b465ca84c31c04c2f61eae07e952eb6554aa4d8a380d9ee81c1c462c360fcc3cdff2867a953b655562cd06162af8b99bbe662e0c27ce4d9a1c1a907def48a3231c2110c930a2f1498e32dbbfee0e5c5869332f3024fa5dfb0327a27c663cacd4e9902de34dd93529e90eb347bafa5035f56fc578e8386c7571d1f0ba335225ecd8be026b4544ad70f3af11501a53119ee39a8558ca0ed5b3d897ffb9cf0fcab55a0942d3bf7bc6b94ea27a6b748f2cfda431f35252c44610b7e843ed91ebf7e8fe10638f04f52d6d5a7752ec62350efcb7c473f80b1f2a26805151e8346d39d23551e92fbe372df7979c3f756bbb43f6bed09bbc6b65fe6fd241ae1c2f1a0d0b805c582853b85502968f9478e9a84895f9d4ef01ec4f3f571e57cd0bda68ee1f6f7e14fb6e0f4ef8c7dff6796472a935294fc27b16216966d5021339ded059687355b42b55926854bbfbd9f974a0c26eadbfca8a6183093996cf252894e6db910c71ca3ab2e82d90d371c36b92c9409cf7937bb266ea9b29c41d774aa522e103cb30bbabfe872b57beb027623742806aa7694a859ede9bc1fd7b9e32880b064b0030fce1a0e5cdf3ce558a5feaa32e323dbfab6661c5878c9377ee52a615b7c17bf1228e328aa20f92d070c71561969e1af532e76835fb0436810c3d87b982217edfb1143bfc3405ac9f6f3a50145608dfa8658b0ab642a347255c55b59cd1c5897b2cf625a0f0706c30ca1c1321e90cec57b7c3d1bd1af455e3732db80643383c41eaa6781f63da6233360ee720cc04d171ae2445b0c071e339d547f7ac32f407d29ec7abce0a9e1ef5276544877bab2f84bd2eef47ffa66f96e7170cd54d836c9badbc59435146031502c1a3cc744a470f693636d9050c5b894d2d6047df60eb0bac16d905d46cbf017ca69d66427cb88036eca4ea9d0e579f6bfd8a4a850703a0fe49d39c107c9358e98689fb62bd0475aab4b2031446b437c7f9e373caf0270a28d7b15c71f02079dde401e26175bb6e392106a9072021f0e5c5145a1db6f595b032faed8551f6e2ce318db1ab513db876a3eb42d225014949c19543e9c5dfd2290e28c5d72c87223f0195ffbcba1c02c7d0087721efd2af6881dee7dba7565e07abc35bc3fa41c6a4d6a313222ac6dbb117c69c62db2691c68869ac5fc5e987b0ae4335f815c73ea4235da2582dde81d6fdae5911617daef847be17f2bc09edd88830eac03977f89179fe03eb2dc3b38df43803ca2d38455232549110f4580ec3cc04c0d8cfe493013d2cde47c506ef6a8dfc42d998f70378fac5ce4709345926dc477e9e339d8c87ff6287ea6e2873e14d538cdc3f2a47e0e37a2601652f5b665b616a7d1ef3537a3327a76f93990f7694e6484e7a52a10e9eea2edc92b99406abfb2b11ec86667c7af4a333dfe900bf071d1bbcf4f0ad768fae4f450c53817c507d26e926e753e3395201d3ad89061f16706d841994abad283f0db74cada25beb5fe46f48669a62e0b849cb77097e1b4578b45062af4a071b04f0cfddf87519cf2bfa10ebb4b860239ff187e6dad73806ae968e6ac0f738baa88edb3ae4883a9e59be7a6b222c5f54818f95578daff9fc7a7aba8c4a41a699923e85ddf24a32bb71c808516f64d506058a70539276d57984d75161cba7d53a4a864c51a249a6b8fcad5738dd0055ba8468b56579ba5f102642df65c598490f3a0c9b1064f4eb1962c4c38bfb7d55d496a0b0f7b3f90b42f733d112c89176aaf937eea4bada845f3ca4e9b56b3a5a06b4c90fa4c1914ea47020c2f32531e270007ed389246906ecf2c4465f7cc5d6a347583dd73341ad97199021819be81100d867d628323ef7552db945e4c0be604cf6c4a8197958bcbd6c1879387d3286dff979632c54baba2a35ea84efd7726b662b94fae61464d069e0103692599fb86fdc3a06e01c6ae3deb3de6fdb21806c716e5f82b784e4ad3f0e2de629a18e3a2309003dfde9dde8e5101b83312f76e811277afc286b56879f4eb80468e58c60bc088284d05d725ddfe3185b7c51b472a7ff7db3930839142d4a452ddab628e07d43375801d7c6a711a55b452748d770b84ede35920c1ac74b595baef963d21df9418533fcf959593ccf5afccc753e86c4ae231eafe77a158c2472143faf169db29bf2b53c3288d8b3c9added65778095f85e2cb471ab58362041f0a27d874c42bbb06385a0403ca193cba67cf70029cdb7e73c7e2267b856fa0b8dd4c706b45e7174659b0ee2891df911724324f7ca5daf07c912b9b2abff762e62a1817688757492975db7185c4695f3a90895634b8d07453b36dd95197abc31d5d153dfb0d0ec92639540e99d6590f9b394f14c93a5e829fbb33616e810f59c502be44a13b700fd3009545e34c211abf9afe1bb8ced793c6f516d40010649f83a78ddbe9b71d8596582997d0aa54192e1200db61dade30500d72a184ca7dfcbfb80e5442f489d316cc8b75005564835d4b11c482e2c4d0d160f14a8b13ae0a0fb0ba5e3b782770aaca357df0e1c4d1c3b28b776a8b3e0da1abfd4f7190673fca1e1c5a31c688d6e8ddb21300e4178d07c4e854a718ac3f672b0120d6a54c16957c9ec8c444208e47737bc4eeb0bf2d801eb2fcb72f91fe988aa75f38e6cf26e858dc2a718580ff5d281d13e8fc3e3bc30c75c0193481c39c375a5b06b962d9491f3f1fb80f1cb27067f0709e0b0730573a9b5f5bdbee1708ad84b4ceb1a9a61e4c41e90655764057bfa07b8c81cc83a315be1aed6a49715479c0fd0f53f625fe6c7f36fadd001149ab978532e4d0de3d1a38934c74265b161899843704fad16ffc6189f42a5cadec98603e0f98c6889bd4a559079e074cb40678fad4690a20d988735280a1ee8ea71275069132101b35c18ecc9d3c6eceb4cfe9b165e4b6acc17d4f113ef8283c0fb6506f5635401e916d4f7e7bc3cf49aed166587a0c72cdbe673f467d81bc2e9cd08cd8dd16d90b353481df31e89b45e8b | ||
20 | |||
21 | [L = 48] | ||
22 | |||
23 | Len = 16 | ||
24 | Msg = 3a35 | ||
25 | |||
26 | Len = 104 | ||
27 | Msg = 7db15b3ee240b45d4610950996 | ||
28 | |||
29 | Len = 352 | ||
30 | Msg = d2a1efc725c46cd6a19760f49edf0bae823c1b4992ae2260085746cf65833bd008e56e64002383f51f960239 | ||
31 | |||
32 | Len = 1016 | ||
33 | Msg = d11ad1253592c094746da7b5c88d329bc3ce1929913b8be07e82d3f6b7a536a855f31ad197376eba6f2f4534413fc4e4e7673fdff8739f774a710754b568b7c61a473059a41c98aa4e86617aa66d2601d0f0d584cd9f132afeebdc0ce3da6a8b290059e6e4aa080c195c42ae7f7e1e99865223439929b0a3a0d79b46ca6419 | ||
34 | |||
35 | Len = 13696 | ||
36 | Msg = 2f7a9929dffaa4a4dcfeea1fc37b18e3cf935abbaa17cf9d834b3a8d61e9fabfb7683cfc387d6f46ece3f8bf845827c7ebe86a651d6dc1e83c5772cee1a9fee4b04453af2f68430bd87835126cfd1b3f8beea4d3822fb27864570e255cb65b414197480b6bc20a39c5450adf2474da93d72f6ecf8063899722d3755b7a19f71e93e782d89593ab19ddd3ddf053c54e0bf832311fbf132e8b9e540f38e4d9bcc3cdbf69de54e40ef348a9170ba2f65def167f568ce846889c0161448342fe907718a465e451bc1b0f2e4f21f9b911f186589f43dea305811473837c063b915d849c20deb43323bab4b64e61823f1df119e71962dd975700391b411f8778980a3080ba3c14a321d32c082d416ddd2345f0eb751a516d44ee55222395cfa11e7fc4edfbe7cd49bf4ebd4d7428843a2ad5538b3cd201ccd431aeafb146a65d28a4870a6948a7cc0413b0adac7e8dff3a898aeff5f4b65d10b28ceb749bd354c061c3008ec569d5f90a4d4f5caa51d35b49dc4028e738c8ff5939fef3fa202fed9ebef6f2c7dd0ba41cdb5c0c16985f96fd93a65d134fb4a90ffc0fb6cc5396b843c2151bb7c9170f2fa4fb44292a4af28df5481de0c3c917ba1c46467a35302738158493fbf6a0422cee558d4bce3d78e14b4fefb65bb05043e2cc2a6a8ea64565ff6ce2fd2c4f43fc02926ee44ee02fe1dce25cfde0115c9396c9ea06269f17b2caf58e2332cc1c8528d9705c70da1f76f22aeb1d1b93449180640fb5c4c4a708bc4621d7d2bed5b1a752191cfdd45086d34f247ed1df0f24e7c620de32bdfc4d1f882380d2cd7467c926f48abc75cbfac8788f88cd9dc5361517a5eb36311e6b39e21a85fba2038fd47d860f776697bb19cdb5a4d6746fae507e274399c91648537d905015e58910117e5914f44ebcb00e771d38b30c1473e1232d4e222cebceb4810c48e83e0fd4c852f4fffcd643c0ef9e4fae2d0ebc6f102f3f749b02a5e3a61517d53b539cc24120df3957a633d50369d46c0c226f8924cae51dcaf54d716f61385fd8cf38c2c311a32bcd6594d6930133dc18ef36a9671ba8b179abe95f588ef74e8558ebbc974dc73c26bb6eaae78ef464181e18b71f4b0f986ecc8495a9c4dc0b0b96be9806fbd3d32952ca3b4737a06ed6561e9c9581a33a720123fbaa2a70fc3233b83e56444f5aa0cfaf70fb24be6118404f3e11e6ea004cf2d079a3e93a8ac1d4e297cf4fc43851dd26314a7ed6a5a784b386daa26e50c64692f7db28c21d82234289bb45bad5042236667e6d70a24bc9525c3adcb793a6a5725d9b10911e3bc8e3fd604db7998346e7f7dd1815c0cbb735a977bd4b32b5b976932bc92ef3b56bcadc089045ec95f241cdb0a84c67f1f76353da6cb493bb27a881d37a2106b8b3010cf935eb3601ce4dce3e449eff8331e444ab117a20809a1010db4cf3be0c488f777b6532df908112e3d11592f04a0cc16232d62340cbb8b5268a662b8278d37c03d848a04f0ab498f5af43b0a20e310197b7e1395a65299fac29f051bcc5fcd09a5605bfee370ee8ea21f5807d9748acca815a44d81796d68b0014eed3bb6a94233fc51725de3809ac6f538beaacf8cbe3d96aca21a7a763a957f8892f22c6d086d9af2e5ac9d90321e186584f17e964c90739559ddd034df076c4aa38c2b78aab6dec8ef6be9adf33bfb66f159ec4826653ee6cb483539c47a4a1d95663e6cc7a42a3bf628623a4c9500a59a50a312aa104b198ce5f3e58952bb79ff1ccfa9ddba2fd4705e91b5acaddab9d6522d7666264ac5f533b6d8ac4512d8371c69c06b6d322b046ae2a0a20aec1c3bfb05f3d91b9044cabdd873abb5f2b0e3e19740df31e39828f9ff9bbb20b73541a7a70b8174ce4e43e0d356e629cdbc6c08d29bd7acb6a4347823075683ce9d7de4ab3ddda6572b175951f30a15263355fe9641b3322df7dd52077402a884cd472e6d0b6c34cd63ab63cec8760c7ebe384f7cc31066bbdb7a3417425e039c4d340166e4bba4839076ac9457c87459c57957d0a06dced2f7a18acd22b7295785dafa435a2a8a2c3a1fa05d115fe129d19fc44c5a29bf15b4d9c2b375bc8e591f92756cfc573a39b8fccb8395cad7617b11f14a60e2dbf69b897844cbbcb70363010f6e1bc0590ea594aa924597dbb32a868b55551789f82437180b85661809089d34a168d44b4d788dba23b13542715843eee797366d9ce7793e72331735bc78cd61b13421a568ba3e66926921c04e9d00888ba7ddeb474db63813756ea4a02c1823083e36ebd2d32d5c88cdebb98d511304cc276c7799cf84a1699ccac9569b13f530c762732e6bd0f8415001b2c02d11dff36660b717054b16df49ba38425e3764a56052ffddecdfc686aff22079897376cc15591e11579fe4feeccb55f | ||
37 | |||
38 | Len = 100816 | ||
39 | Msg = 5f464d3301c5e0871d6b41b002dcd09abc80a805de3482d97f3fd7b9838745da1c0534168f76b93c3c53bbabd904541ffe5179cae619dea77446140b7400f47d242141c7f2e9894d88f44c9e066861498e7394f206f594a419790d697f6a11187f84bc6fb288186109343eb11172bec076d041a4c7306d7978c009fc2d2d62563614ed3555ba2d21c8fcd70e8389352dbe4ec808af3231ce990452eb05b1b0dc4fbb1b4265e69235cc3561dae4148c386cd770474863a84a822b2e5f905fc255d55f90bd6a760d441dc52240ba7d8c888a5283891a2c99963d1fe680549d6267cdea92cfead167f6c49663668f2bfdc61fa647f5abf3ce5ad2c6c175dbd456ba41436aa06f5f68f5c88e6b74ea86a79934bd05b486210d3d470a0967ad6d67f7385260578088d7e63197849354f651aad07e04ed301f1fe7a6d2047d50ce5dc6bbffbb1da6b47d740898f4eb54e3c5a1fbd18ec93254cc01f705fce04e6100ced132c519674b2345547804a372b5c925bd9ee9701527db33408d37b72f8d18b882d3c4744eb58f011d21fce336d426de1fcd5e09610216248b51fe2b79b96c2bd6ca0155e05a8a516b7a24d529a9a475284735bd9c4c437ddf399864b64fc5d0d6ffc4e5a7a3dbdd476bc39ed29a0a92e1f2b6b3506c2be5452d4f896db6eb4f895b554b2af64c4cb8dc2369b91022dc50b7291404cc9605c31569c32756a64ff8c4fbb0f1bca346c7b58a5c6774b2fc7f7fd50741d34c8564d92f396b97be782923ff3c855ea9757bde419f632c8399763003b58ee9140c2d62e914c1e1fa742661a9166d42267edc40905b35a25d5c3cb3fb457376b7422896df7bb19c23e8f764416731d2e20cf2c1beb8663c07edd8f105e078e2fed05c5e5897c430017fa2160f565a75a4c5c64a15dd7d644bf355d169ae2696ae5ed1a39e8f81055cdf315e5b0c6f9235515fc4dbf30281ef17b83a6ed604f89293904bf78c7183fcb0ab236cb1f8935e59c51559217efabc000b165d819b717118a03facb61a13a99b194f8b6c7ddfe5850127d79078397a56564c7ed6716a129409680434061b2a4782c9006587de927c1ae09d6778a5f1c39fc419fe10493eb0d4ad492fbd05485eee7913c59df82fe7182af2cf06a6e8edf06676200077bd1408f5c1cec537cb8566470cb44895826d04ec20f0aba4297c501add65c75d5767ad2ab63aa81b7b66f01b32590f1d55b7e50e6df1ee077a19c8c895f5ef62d452cc336e9aee171fa997ddcedd7af86e6cc37722fb5838a46c5e58e7f700edfb7c6bf832171d9581f660752867118e9535a6118635709d6f1c1cb21b938068958e956149d9bffc67f355cb88205d4894ba97c3e3c8be9fa2d20abe79f3f93a6a2f4f56fd075bb49a4b7dc83630e58c32a29d757fdbcaa607352f65483cf2cb4208a3bf94ca7a25e2a4e05279be31c33696c10fa4971d1b64ee938dd299f483e5c098845749a3b706a787529bf2ca56693d0a7a98243e6482a43e1f5d3086ca1b00368d8ead5ed2d0fb79b1e2f537ab9340809ca3a9b5eb2900390432293008ab7086c2811d33de0648be5597ef002c7c462b5e0f4e0b1720a98b2299ad7aa55eb78f0c77c2ab4371385f280107ae40ebf814a8223dc74f31483c63d9e4ed09fc7e5a51bac34d69d97163116a66c84ea9fe4263269b71fd228555ae3cf5109c4d6ced7b9049a2b8069bd2f71834d6c07fffbd7561939188bc07dcea08086bc7182a5270427c3199bf5fb5c4549861fd32a38ec81c4ab058c777dc01864787f0275f911a17838272cd65135f66baf06d8d93bc439eeb55d50b7c5adafed8eb8140b4b05f59871dacf954f4b096c30b7857774fcd319c096750bf605db8e31fe02cd1b9294eaf8bb009d4609f2cdb3a8657f650501b8553765de8f572fb91ac77b35db35f402453e5c58f60146f2906ff56b9c6b3a5d0bb6afb9e2201110919ac9c01a7e9750dfdb2f72afbf7a8d6f64b1c68b9de17a2c9abf289eef24074eee9b1649caf3693118165503a30200993d271aa31b8b92606a10a52612dd1fab495b82f9a98cade18b9d8a723a71ceb63fd1d27372bd281f9b40aa1839b0cc2f2177a09aa8e7b159ac118d7c145e7a4f032e788d21facde2b4dbc1d5d2238f530d9bf9bd2798f611d03ed8919f0c85bc2da99750b7a8d6322d2e66ff6ab9ebaf7424e8c1c3f4fe92be61f65359106395f5ef995e925be3868ad513f561f873acdbaf18590c903d64bd275121c11ea655124d091740887868544c5348664399d3da96e2e35fff34f062fb939d656bc072096e510b40b2f75ff010af68d64fd0acc778e2e13c9667de266b1816c4ac449521b02bbb217002c604be72e73051aa9048d192e3210a68769dd2693e5d44951711aed3a751240d42f8925844131daa36c51d7d59bbaf99623fddf1649db954705fd6f3405e63894f5258c9ffecf83208c2c90cc55b1a8d2972ea6b3a049ee54942b50526b7930953986e428b2c75e47ed870bba68dbfa624dd94112f3059da0a80c583baeb570fe8314f5c66501b34116c81148dd22396fcd6479da49f7e952c8084f97d6803ff85c3787222064ca368f596a1ebb6dab20a03916b3ab071c927d87fc10ecc4e7ab4a5761e3eadaea4de1a0dee30aa39a9e4dbee047201d7d8a4df1284cf668ae3ed7dc4cb2cc4b5cae9307353fd2ae4c105c5d9f3bb021535fc3ae9bf3ff54ddda8b2e1037cd9d69822df436dc1c750a9f557d1a3a63fbe73c64261dae0c70bba6edb57519f5b957f138d1aa5fefe01b73c1851aea42938147bac2762527a492cb85da43014c876e223b05597354d7c9b328df67f354d168a84ce86dff57d8a870db034196dbeff83ebef80bbe52425a8810f2c9fea29ee688a201cce4a5f447be789a3881a9da3b6c491288e8f1091719032608b332e0410f4576597e17e0b5dde305f069be2e80d565bb979a3915488f88e3ebb90e81c264bcaddd72b8843af4a4ae31f723d50fa0995b027c334c351128913bb93e67b1b08f101f6b8dc8202b44fbc3d3dfb530f66e5a8f35e69725c86998c05ac87c561a4706e90fa095adab4a566da4fab82bff6b20076e5bdf62dbd6614245b6a6f8cb6bf60106f8d12b9c3e26f8127dc547e2181531ce980a3273f452892110cfe1ea834a30f99d66e026a9d22dc76fc3cec8fda2d7fea701deb84dd45c97dcde57a017693e90983a156f11c4d168d89c06d8a32dbfa590adadd16850854f24bba315b0bbf372f03711a20163afa0c137383b9120b26c59f5e9e7cd2ccaf0ef4e0d70d5a81748ad441ee5fe178e14317cab184fe178fb0cc0d82105d2f423467fdcda0f9871b9d84882609248356f3053a99866dad9f9b0f8c4a897a8cb8f30365a7ae5f3ca6e772d863d445e6d57c6a478e35d719d0e4e84f3a30b1816ddb55bcd79df21ea0e95da72a19cc1fe74fc576120bc108be3ed4cae3bea889fb4ddd67efe858a994237378eb623dab070d954ac780c1e6d2095383c98ba622cbdb18fb53260979fb2672c21a4600f4bf06583a112d303096d4e30e7e1060d869f386eba3cf7aec3052ca17593dcc9969fa9cd88179c262770211cf53f53f175037a5cd445d239cee48f7ed0aa1d715a22ac18a8aeecf191d415e4afd92b76c091803f4c757a9e89f696ab7b11ad6d5f24774e4a004dcb0e3f33705dd8150431f051016af37647b9e44b10bef114276d4b1055b634461c655a82a847639a038ec9f58876e84e9a2955b696e072d8054c3f81173473604d5fcc0a75b4a340dba0c375beb87b8b01a0f2de232bbb8371c3a9d27a0ce521c4c43dd3bdeebf92f42f87d88978d5b4e3e563cba0e5f59dd29c31096885b113ea5c57e66a3be015b703bc26d3fd1d51a7c14f85f65747ac909d7e30c8e800be27eebf4a62e42e538ae30b6883907cebb7fc5e150bc9da3a138f394e817df9a9e44420078f30d0d3d6981ca581791a097a5e3982c983d5cec239096c7d8cc55c87242026d769ef1d04eb96e5b5001e3358af88d417cc61f107659791a35d8b5f7a5767ae24d5b2ba7aa12230076db1f1b9b6f213dceea62949d98bc5db38743b23a59ea75dbe4231a285678f5f07facc053c2048022fcb01f15e8c100d64a877ecd56d196a6ac60ae35e0e09a517224ba409ba7b70d8f9fe65bc427b212a4e9b3cb17b0d332267cea4f3bea7c1e550f7ffe567b20e3057aa0ebb560d00d28e2f7aff718a9f2d4d044f0d20709bb9ad567c98cff7c4810e8c542370cf90a491bc1088f69998d59f344b74db6c1bdb61f284e99b517a11452ca0bb37c7bae77fca6514b341066086e600f098a32a92935380a173c9182a2513584c54ff67e580dfe16b508acf1729a3d649ff1eae286bffd688fe658612d6c8e69e6e7f7de4ba85ec54747cdc42b1f23546b7e490e31280f066e52fac117fd3b0792e4de62d5843ee98c7201529455c85b169fdb90cb05e3403cf2f737148bd20a53c73880880a14ffff37d62130e682e50bc7210ea6c1f0c27656cc1785a0d9ce93ff94dbc5b2877519d9bac4a339e98ec594a7cc76f4ddf994fee8070dd4b8e0fe0e51b93105fcf566f83d914dd862b4ce78de7e9e16f142234bd969ff8005dddc641dcd3c7cfbdd6113cd3ba34a9503a0f433899e90e158abde2ed4ed4b3711c991577c5aafeaa982bce80835f8e6d7c7975571fafb1499991646bc499ec32930367d4b1de76ff656442cab987bdecdbcc2b2bc35ce01816594bfa4b6e33080caa41dbdf8ebf2205649f98a2d3bf331fb16b9ecd1824eacbbc9f81297b115b4d36aa7496e05f7d40d4edd1886c1bac10cf3f97840a03277e6369e7a7e90d932050ab8720fce076de5c355fb17959bd75cfaeff325b0737f8f5b1160de0b0184ba04afcc30bca77a6a37e29662302d01858c0bc1d32b883011b7df5a387805296cd91bbc835a3e76152d017ee929d4cbf137eb78db89d71617dd76cb00707aacb8088ac77a1f52ed710331193edb29933a7efd8cc153e6adfc2c6637e88cd86b06036b8177847b4d086b0ff9b5dc91f3cbd1c08217023d7449253c25331594f0f16a3c5f2e122e0145c4ec94f096b45a1fd0b2dd3f1d51e58978471782a336eae49d7bc4e050d1c6a391658f71a1f752c0ec6302bc2dba9e3766359359ce34955a2db86740c90d09cc50e92dbb76e17a39955fa7108bddeaddaf860d1aff14acec8b609ac1d336270a940604209df91cf45be72edee04277d694a6f968ae6d8e065702f3d607f3baf8db4ab7637fa4c78bb0b7fe69937eb1dcb616fca564a5a521e12df71fefbc321187159bd6a47b066a3440ba634de9153a94546b63aa33aed9da2018e1f30628df37f5360ca4f2660a46ffd73e58183e8abffdea25f7bdf798a2b7cddeaa481bcc6e682a67e99143066963d96d4a928a478951dd6ec59b1be8cb23aa688e1867738aecdd9afade39c92c0b2572bdde84eb912ed990ac618834c412231216fdb84f1e01b3f8414fc6dd0f646fd0fa62bb0157b3535e1497c9272df1cc5dcd4e6ab9a8456222655c56ac73fe0d2aa8b599035daddf0986a45b1a59510abe19a11b6dba065c8bcf8a85d20a3681c2414dab7c036cc1358b1dba98d6ae62c5948c36b5b3e307a6f860c0c822ac724a5c917ed5f98ece548a7a741d366868e6c676394c3659f7f6786594196dde332543376f9ba0724b091d30f431f91d919417e5bf7ba1e9a21cb80f6c204c3a58d59d960a5788b5cba5abd7c7518f4c5170115125de97009a6c3fc4d5773e4f57fdd433eb7422c7c4dccee57a1679633ced3b5f08df763d4577983c5ca8b49bc4e08fa76f8bff36daf0fed068db47f0c87e0e45d518dffe37c129cc6e2f5f9e0430185723098e715284a42f302a6b8368a4f2dc16f534d1e5db9d0b86659fc4ba6f16c982774115d02a57684c7e5489b1f491584b0f0546e4194a6041f5e5be3bfff3852a4fc772d83491023a61a37228ef6260edc0d1cb972cba610d5ad1d92d554700771d8236ef55e983765ed8eb21e7de7c8bb51aee9368758454fee4a3f32179c1e54af1d069e0b9728cd0554351907e018146511e4d6f0450b57c8ebd21c71450116296bdfc779945da60b9192c5bb9a67b1f04d94992df4cbb3e30732dc8af2177fef17e0b7d01740b8a64db16bc29c1e589b6bdfc967edeb2ce8a649ba892bc856a929f0b837a838ca7f917a52436ea3d20e72afacc5b9d58a7fd0fefd96787c65ffa7f910d6d0ada63d64d5c4679960e7f06aeb8c70dfef954f8e39efdb629b72979be208d616071289cfaa0756a4bb5eea5c7baf8fe7a31501e7e2d67d708d461c0c93e85f03afd70bd9e16437171e01a34f475e4b5a58d13ce4e2fba72bbba93403f3f8981e0bbd6a8a6223327bf096c44b36e0ccbf7592a98c1fa67f198b628787ec80aaef848b4fea158c715799e6f458327f399e6420f0e7821f2dc4663bbea065c7bdfe830b6102e2e7193381b9dc7f2381ba808c43b8fdf3addab4b5fa81564716f7d46e0349d9b27b559710d723c7ef2f79eb55c3a9d75b99ae6fde6877b278b583f8ae3cae776b914b0cae0772397fd19b6a27676c7ca02cd07f4b4d49bbe1ec87f2ac7e39e5f7712319c31271dbbbaf4b826af8a9f4acab696c62719f7a6a032c4bcf90922a3c630647b7c1c7b78b10afbd863f07486561a0bc8d9b1ff5fc41998a7e3c604e24af1c1df2da1dd5d83eefa2e4012f7fb5959ef9339574367deff73723484b5a969c8c23dc251a3b887f34b9ea09c9a1838e8aaabb254445d7556dda257dfd5579737fe1dd6c67f3851ca68b011e7cb7b6958d588f143828f0bb24fceca31b47b77d1ce05e75ab05b55d6c9f9107f0c738f2cf8a1629f7e9b2694324e082503937ff8ca7c5098f770289af7d038dcedcf0ed77c8b82e2a9003a6f3db69e14131e144f6be7cf0bb5353ea96aebd78befbc6ceae9bdde97823cdbc5ca8ef8a993a9d9383aee9f2d6a18fc64ab92990672ea2dc9b89ed248aacf7f1a513da43fe5953335afe76d78867a066f226ae9c727c6c60671c50a50732698ef7a492d51998eb6da5368a667baf6d12b77eb36686ee0ca239dc6f3598be0bda79e47f0891fe4d8989df8c685480de11c148a2b44c8a6bea3a50b09be557c51f545a09a30e9362cf3080e6a6bee3dbad370ce24f6c5a6f8091007ca195057fa3af8f99703a601086c2a1ffe55fde4c2c4153dbff8d6601ab68743c0d50d021b0b3099535ba6c40f866ca3ff0df7c19d709a3f58b57b40ab5e43556a8c0c1938c875267bb39c0db6b45840e8ee7c22bf6b48798bd744f70e42fca343a8bdfbd7f55f275ca5d62c7288756d4861fba68d16d842c5b893c1d8171bb3c8b593387d3426f292ace5cee7753c9f9a12e6bb9af5a24192e4184f7d3d191d862d3c3dace7853eaa235b6369fd164e5a7bddd06daa3eec7fe4130e82478d36f88a0999cba1f251ffb3a7689ea2baf016073193898716a9f933448d7ba8e0968c669bdb7dd5e6e32fd84a6ce9e8632b393f9263532ec2107b4c0d2abdf3abb2de2d63511805eb58a70bc4ded040d76640af60ce7f03b9a682b8dd84ed8a47225a48e0b94ea47828f1c8974cd64e5027d8b13d43519875d2bbe4461a7f0f5b5b8d63a472765405ea9c994225806395e64dff88506f7f7f3b6368d769e6e550d4e3e81efb13771cf403e855f75312f1383ce4c2744d0b4e3735a0f1e1b99eb014fa60c0d1ca9035fbc4403330c2fefa8411fb7c3d6ede5b5c8f4736106bbe01923d483a84f031e9685a3b6a70646a2a5059ce35fa496b3f21fca6047471a5bdd33908cc9328de9fb032347c249bf7093390b750696124621dfa67fd9c7fe85d6e5a4d277ad8f8d169f8b5e8dbee280f8443518bd94abc5ca704e781e6cb1868ba2d6fbbaa850326fbfa5a20e4df6fb5f8ee2728e86a758763a8af21e1f7a8584d3f0b09a0b19fe8fcd37bc4fdf45084d7fd92b80544f29aba52496e2c9a0aa4adeb89820be321cfd2f0a53585a15d04c7fe4ec9be6eb5df419e20b71506c1f642df75c53a9e3b2414fe6102fa8af7be3f6c95de824c31fd6fe8ef9d49e26095a2674a33cb574e9e493939bdeaf5b309b4c51256ef71e95dbbcee0a11991693b533f916e1c82ce86d65d89b6d596017fae944ec364546e78abbcbe4322b83e2fcbb4c5d4ccb54d8642c7eb9e28c08598a356a5c46f8813e6b63ec2f3e3bb721b726361f85a734e0514f4e9c4732991ed3998b1ba8f618c2071d1b943eb0f8766fdb7f0492421429bd380deca3325c8d5c7b6ed16429539ae54f1eba39748f09aa44efb67d863cda304e8653ff7499cfad44dc27807779ef8e63be4b376ec403f3c84eda4e5af31c30f9807762e0980b4e5d9dc406cad4e888bfc3ec4186de8ccfcf631b0ba5831747a1c200d45ea06ac82c7952fd09aaae5dcdf5475da427cbc8c1f71ebe5132f2fcae15975ed6fa14a11b38766e1c446894f31c0496b0e5e96507d28e6e4549d6d78841e40630ef306491a1da60eaea3fb69bffcbf192610e2e07bc1124690fea61980e8ed654c5e796f67d26db5de35b4a2c67427833e360ac2a7d4fe7a5ce572144443ed62ac460c1b19402e85c79e3d80e1c143279b20a66d8dcf2bfe1cc44a0f5aa9b0d9b36c46c2cae148dd0f2ffe9a8e6e7274d1832e57aa39fb40553da6414094e838d613a20ce9307d49f97d904648d6460985b01af769800cff9a940f70729fe40e98feb64ff0a81c5b2b096b1a9d832e440c49e4e3684bd17a5169fe138d2544d9806fec027dd2a67f1856178e090f9bb2f9b314a202e7e95f2e41fa80dccf7b1810e9cbcaed2acc2445d60e26f7d63ee4b28e4299e60ea4fc659e7d6f0de91748bf1ede1fdb2acde9482bb76bf6716847eb2dd7517e0a94f0bbf20f248d2c79fa0f518b67a44d5c4c73a9bbc3816ba85ae8344b5f377649da75cf1857d6e4338a76446c48e52cc7bc7ce283d4252f8fac5e1427299edc33f84798316f77bad4a87849e91a1a23c0b7a86898046e278eaaa15ff33730a6d3f885dfe2d1dc0acda2a9e49a71cfecb7dcaa9e70eaa8fe15d4567a280e8960ba49d5289535907e9f277f96e8e652c21d89e81696dd821db5b7e1e53e160584477aa9e4c0e12160c9956df36cce6f4e724dd543827366010ed3d843cdf4319c1bf968a70e9b1b6bcd8af96c9eb0620c569716b7bc42e13251a6adf8201faa129844b5e1d699cafa1b66a674e732c7662b0410e5bca2704c5ebed7850d0ebb825cfb0627a183cc9643b709aedeac2c06700358400c389f99666ae97ccd37f265da7addeb07df9ccad6fa777d0da2fc47b6235179136bbbb409596841e921eb278142a19e6203c7f235bf8461ccadb4b47dd290d36ac27126c808b866f9531261f1e0f5c458a6bab6f064b4efc432e1c7379f9af19ac34c5c22e76e6e7651e48f9ce44eff542f018397889d896cc9001a63e8e455fbe4a9ee9a740edad894fe1af2bb21a1dd0318e28ba982c12ed69c08835ce17336ad1638af3cfe0ea892ab8e83d3f25e6bd98d5e4d36292992e2122c265a26cbb3931dd4c1b0d0ac5ee19974d0dd45777908bb416cbce52531820effcd7f28e1fb2d3d4d826e1b2673e834485a25af9f9d174f566abc3b36732ceefdd91a7c3885e1d10d51c321ff704d0883905b7539309ba5e7b7a2bfefd0494e90e9da7541ec37858ec05ea9a9ec5672b113cd5ad6ebfc5b8fe40ed7c3f17d8a73703dc89086b4d75c5eaf06b840bb2f5b4519a4fb17bfdca9605f17253f203efffc92da96fde023007d22cdad05d18aecb4bf08085c5ca5eecd21f2b611e7e8a0ef981fe7aa2014f5ac6862fab44011dfd33be8a1226943aa7ae5fee9221b0400d9ac2ce5241b09a68cde6b13c47d50bf310ecb37f25c32770a299020d8500d8a4b5d7621e4379dbd6ef34a9aceefd4055ea6144f54bbfedefb5b5b0fbd1d81c7a51a802072ec3d84f34585f22c1df84caca07849b1ef054cbef9b40848e9fd238761df5358cf55a79a53a1bc749e49ffab7c5bd9a28bf24ad5833facf43bcc3852c1e85cfe47929fc49c325c20d74588eb9833519f192243cf96625057899b70a7c93f8fdbfb60d8129d9c43c95f8782ed8293641ffd21d21d91a0b4db69d766f6d6497e9a414ceb04b65425d6ad6c8811da00639dce8d8030038f2d08330c75b0879aab81bfb3330b950e54c13780d308fceed2a103a1a8b77a923b66aba737654ba7995acd306aa7b80f632184412e2369c353c2132ae614553e626f0a3436959104ba6e0040dc597dfbc3602a49e401bf2249699375b2c722083489f54fcdc1f616a133ef6112a1754818158ff78f245b9046100b0e89407f74145fe336976af971c054f12d98002c68b3aa2bd699fbcd71bc4dc071e430bbf694595a951e01098aaa499be2f70611f248a694539ef8936b2e8b7a3c5de8662436fed1f7bc24a4e5c17a663d9a23b4692993301b08cb3bc10f518eca51081c717ec8dfbb0c2669f7987fe6aa0bd98231d8e8b58951b42537f12884a857e02d62de4fda6b88b6b754b1b27394c6a819e0f92f6b2b2473fe245678e252ed31477cc7ec6895bc361b718fcab3aa550fc9faeccfe77cdb5b151ab1db2e569b5bc923ee26f0b6113504d295112d47218140e44652a10af10a088f95c7cf2fccd040fc93980939122411ec643e26e7d69ced3178402e320fe156e774b75b5afc2f3d6b6ab828bb4993b1436faa5728cec34d66f520f59e82716ed6d1324944c3c91d04d5ffc5a921f4716c39de24768484d0096f7d8dbce35aeec22db11f899e5e7e3d57e7668f35d6c0db3542255d9262137d39ae6cf9bcde254dfccc54a6062fcf8982f781d9ffab2df4f49ec04a72eb9646d63bf9e1799bc0bec0ec7f0675ed9f8dc9b8be15d9f2175dfa1c8bc99071c70ad7bedb10a4143fa91c89f54777f84c9eae9361cf7f4c2b7ab873ee5785a5241db0af86f3c6d7f091623d6dc576d07550a42023633a09c8dfa21d7e70cce64c13f37663f75c47921c246f3f2d1d16a8283ce7697da4cb7e016971a2a1d0c59d6202bc18b7cee3828de597efdab53b33a9fb41aa7b49f1c964512901773bb396ac80e90ba1a94c408b2860065ae9aec64a41d76cf8842d299d0babf14d5840d647d075c34175e26a786f30091a24f1ce8db30137520dce1cfffb6318a0d0fdcac883eac603bf365efa2c806eb4f194cae8c16780342165222192f6ee2e103ae2a31dc08a84dfc89c64d2e9ada7ca1839dfff62ddfb7982c79684cfc821a098bc6bf09f87317209b16d14d45c6f38fc99f7bf9bb73460977bb323665d480c87c687cec052a5f08a2c6744c8e177a8a269b4a47a925b9123cd2c014313edae988f8aeaeb633ee5ba6be7f53fe36da3aa37ab2077f5fd75a82a55a0fe62af213b85e9e7694f78cc2b0e63a8c1b89db484722fc62c688678a511c474f0eff8eef1382946d26de00e5c626ec1d7079445c1b7c6f7f05073249b11fd1fb30257724a14cd7bbf451146bf366de2e826fdf1d25705587c4460040ab963e3bd504755b6aa5b18786b68efd3c8e59e8dbd172346fe7f4a18bac98164669d73984044f3c777368f965763742ab86a3720208c64801c796f6e3a1c4748b81e41ac58dcf6ecfa0453b18fad7e3473604f57f7da302e1fa81ad538d4a0280c4ad092007bb9a7a12907227a936871886c699db97d00a1966fdef64d9f3672f1b792c1edadc6781b391c91bea1bd7275f30859dbd1707b1f554e49ceb874ca06e92ab466efa7eeb6990667a27507a7ba789e24d593ea2af8eccb3862cce58daa63eaf212bdd86c01ed471cfc79b191c481ad773d20e821d18af85a7049034e5a9c660357a4c2808b9a6139f32c55c13282b8d98904f4f027d438189dc9487c96172e50dc1100ccc224e7374cf96ea6731032c43fbc9b367a4d1d0b31aa3fa8eb589672e69f1d9144114bbd508d56c2049ecdbfd7b43545375a099ad2885353d8c550d22dbb738e6fe3f104b444c89475a2cc24d7887daced8fa05006c02dfded01c00707e2ad04c41199c5decc1eae34b0c0abb5a5beee1b5253c3350e1a077682767a0b9124a4df2e8879366fd37fc04d4dbcf89883892f46a65ce3aec22123cbe6b3af6364df1f9f5f9751bc8179b6dcc5c126dd65feb7d11a85994e90ab6342834c79c5f82413e88198c73e932c66e3cb60b6e0c0cf438622e5dc5a1036c38afe9cf13559044a9e90f5fd72a3188ef6b1043f5f4e6b40ea51f6235dcb33b3099b2d8c2e02103235f0476ad51bce6d8a2934068549633e521a3ee4c62c22b042fb86c13c8da849233205a5e277aea1129678c31f5c379a71fe08b72fad9449cb923126dd465d1e0ae8a925374149b8248b3afb69f168f3ae701c00f6ea08fe07f1b5338ce6af2f3156ba6f300310114479f2f6119367c88c12c158b84be13b9c8c7b5dd7c90edb5b3ea1fa5927a25ad6d5596992dcd4877f58a134e05dcd80dde4fc2c2a680cc0ccf3084d3f4970e3603fa6bc5a180fcf1ca4241c0b8a1e7c607dc025016e297e2b0645de4ec2fc49851b9374f3ef99edd897c284a67b647ca8c96fcef935d541e9faf334043ea50b99fb8819ecce039227b624e52d8c20003b5a43808e4990da8e4398c4fc172b983351fd11a13dcd2aae5193d42d46e1b57c92e3e01d23fc968c729f3782d6c07dd5a17af2bda96735c12cc7d8023629fb0125e974425f7914690a7ed26508343ae58c8a439ebb6232049a194768d4594f5d65aca37a5686c2a86dd04bef35d74e0755937ac0ce3ebded1c00c8adabf030e5e4a5f44193b62fcf2f1bfa9dca2a25afaf2f1ec06c5d17ef3526d26d17af3e2f257ded24b177ba41c0ba64fd4fbd5042fbd5961a105e0e9f77f3db13c1b6c5bd9a9d04801a5c00a4c544218a21016c65bdff774a44b1d05256e0693e14d76605d67bd10048d3816caf31a6d10886c88c783538bd93e92bbc4484f3388b61adac4b92b911c76ebb1dd11b7b4e40be032bccff610068746f41e34a1fbfbfe5faf57c8a4331008e2c1cfd69f57e74379ac80eb6769f4ce4196795b835201ce4ec85ebcaf5eaaec242fe6695cbce1d53fde5b002e006bba8c8a1ee57da061ceed0d21bdd57ab0cab9e46bf3764d9a6c3ab19736d43b33f32eb955f9174ee4a54666e7f19cefeb49aac7a59b7370d9ae730b7bb4e08413222f0a66bfdac252fb61bcfa838f262312febfde8add8f6843f1d64ea3da42d4ef986498604d65737a44f5a099338520cdbdb65ce73b110dd4bcf8592a4adc3e0170b13404f99f0ec8f9fb225c1275a921f09369db165e9109dd5be472b9bc1901bfd882d264d9ed8d88b4c8f3b35f88b69e3e4b8ef5debb895be536a3af492d968dc1caf31879d672f70ad9869ea98335cf9e4a2760f955fd3e8099e4b2eb4269e354548f9de9921e50e49f3f5cbd63468b9db0cfdf17250c8f13535d4c0a1f21c87967cd798fe93b9b2960447401ef90db22c3adfba0f55f5585ad37040e8d6745184dd536d5a26edec365bd6edff1bcc616cdea3bfc8b9d98c0ef9a626054e361194cd05b2287612399f6d3d3be2f71555f14ad2893af6f60ab61adef663c3c2464ade671dd5ebc71935aad290573588fe6e11f48cd2b7db62e4b9932890d1b96e1b83eff70f026d199db75fb1e83197c937b672613c66ea131f485b4318e27c079b4018d4205484993bf50ce70275b244f2caf47cb47eb2a9ca59afbc78809a912eb56a4bb65cae4694f682c6329c690003a1c355f779b5857a60091b1c3685995a366cb43d753a704d3e59c5f5003c78feed877351e27334b3fdefe5907edd9eb25588a42248b9c4a93efa7cc63bad1e5900b95b70436c35eb85cc8251c4030fab9556920141cca24d6acd3122b92b7e868dc174bf071117958a4797fc90866aca685f1456fab397ae647ab9970348082bd74865bab7f248568db98ced7ed84e8360fa91afde3f23509e6b4caf948349ad9fb6a4efe0a0468302cae7a0f999195af1c19058669fc3b88b2780b9075dc180298498caeb7ba0cf8bd42eb36b1959d5ad3ca6fd1e85f76abd27ec5fb637ee38173ad7d86304d5708b6dc8817e099e77f5d43c1a70624cdb96e4e6103bb25e59eb51d894d1dc533a74005bb79cca35b66e10c61d06b5227fcb071457025d605a0862218ca252b871f8343ec231dbee15688aeb914c0f16ebabe6edb0a489b2bd10d4392c6f1863bb6a62181de7cef61997ab02f3bad0a893cc0cd8a99cd7b3f7773085f0929de36b5d124e3729140c375de9a2d0cd9a360cadf17b9e45b7f2adbdff9e75b743b62642ed67aa703b8ef33dcf51a50edc7dbab42d3d2b49badd2457a9f92847aa6a60ae2beae457a5fce1a9e485ecf907be22913893cd1350f20fc6c81c94be426eaf01864e813a03e4674491b61516bc95d8a77c15f03d0adfc4adc27f27a5ac4165ff6518eda1a5c408708f78a9e26b834179804a312148d4f75f21a77d78387139da40c0a6293c2a59d0162437d68504f189ed970c5abb9ffc6d8e1be2b0877c7f24b1dc273b1765bfc5ce6f4b8d99a96d5b1c92ee53a39f685b304313d909c1ba8130d20d51c824cec420b0315229df295f75b453a6c131afaae0c36d7c4fff70623638a4f7ded5eb7db58d95deb6249a29b171d8ce651556dee8037bf4ca74453a4a76aab7cc07ba44e55de57dbef8542c3851ea353fb8e259ee89bbecf9ce8d8bd6227afc0028afac48a7acd9b4e8cbe982eb1475917ad6be4cdca9cf6e7cddd971b2924f2bb730264801685d387485e41993c3fa0af9987e8b52c21688fd9a9595ad8d1b9f41e0457be18492aa09f69e64e2954d1ca3cc1d32b2915cd9cf6862ca79c80beb47347c4cceadf48a37b29b1d6de4e94717d60cdb4293fcf170bba388bddf7a9035a15d433f20fd697c3e4c8b8c5f590ab44aefdda94681407008ea48d03ff21e9bbb4ae7a9aa37c855fe3537c44106e8079f18c24d2584474bd4a99367660ce6f7e6d7c294961e174366e7babc569d5f80572a21a4bd7086629363e0c9ee2599c8b8863c96613ae6c32cc67ccafc66e1cce79654567ad08e62e9abc99e44d6a79ca4d8de15b7f8a763a4741676af0e1f3bd4e002c8fa1ebfbb3bd3a65ae68a80c230422f98f6e1e9837252e045eafd585ba389958297d59aea1e8e1f665fcbc5f7ff449996aa712dc0faf582cf3caf3dbae80594f9f07fc06de63d9d672d14d7ac4662b4a54f40d4aab2de766910be2fc7f6f679b5708790b5376498d3baf0463dca2f093b51bb7e9f3e7033ba0384af0174becc3bb477bc5e86959a12a5e8924adf0bffdf5e5b9c1cf24d232881ad5c05c5c0f50318ea83d8683339ca6a583c52198c00f7c1abbda282e7fd3b179297338ecf9c923a3a87a130dfc06164e9b4c1fe11d51b382643de44b30a6831dee119241d1b6f84f2484784fdf65e41f78c38e15fb4b00e45df1edc40e3467cdcda351a4c0a0185ac4649e91024377e1c331587a8586cc0a4dfe29e14004c3536d305f5dee0eeb8c2f216c1b8d27375b239f6458e08980badd6d82e9ee9e007578c0a3b48288d9ad0ec3c934a99a8c5741149af937dc82bdb545df26428b87fc935c05f1a4964a8408539f267e23de9bc498e2a4b0083cdb7c8e27de6252bfaf680a6d5b7ec1a6dac6d7d537334a95f1553324a0739414dbdb50445a767b0f589fd4c33b35905577ef5a53b0f097191f9cee4836a908748779941de2a78fe1bde0c2efd9f48cbf232ce101d9df93d3ed40d036ae7aedc3a5ff619abd1c159ca8d2dbda7de13b4ca62576c7f925c52925eae2d7500dc969fe14c0a335ff95a7df1d276a6f242765c781208d59edb5848d412b11638b27ce5a61b8209075976c2a6aae88f6e6d8704fe9e83b425dec4defeeb3cd311b8c5a818d51f917a8a4525361791d5c4fd5d70704d4b9fa9df1ea119882f400e682753a41931712c043c120a98f0fe786a600b47befefc9d64cc5bbe8a16c191490874e258760c9e4fd215bebf848e0b4d35521f53ec5f9308644b785171fc4cc3ff886e034bd833d59dbcacebdae8f00e43c151bcb24d1d226d1cc19ecf349361530a81ba3168af3df5536fbe52b3b93621f57959df298e5b4d3c14928d2ef7b9c977c7dda54242d17f8661978a62d94d565b00abc199790b9b25fbfd4a3ffc35c95ccafe35d9a138a2c24d17f06ae2cc376e822317f16fcbcd56e23f84ec135dc935e58c61b34cfbf5a36cb00350483b6bac786030e5c5045a6b61c9aba7dfaa4f7fb21897539863ee865ae061a77c0359915de3aacb3b5dc8cfe53c4d17b393c2b6bb23652f36390407922969d510cc97b99d1df4361530aef10707d7a021b2d9576b2d49ca88b3cc83ad1baa6d88ef8c81c08f8baaf515637b21ace9d5cc8fd9fe4ca6c3aa129caea7060791d566f4de8662b90f9e5d849cdadf9bd23cf6737b07ca105142663c30de27adcea11d64d433fe1ace84b0f6917c8b655f2a421602f07e0a7127e61ae9859c5e9f652ec82416fd2566f291f417ecdf99bf3231d02864e2e5a1cf34c13f59de9aa2760d8734bbda79576c62f566b8269990e9384a41c1634271acb4c7a8b768f276685c3a8c7f20872e56b683244b1af562c3e7dcf592a9915f44f886cc2ac5f679c07d5aa1fd69cf3a460f25c722073da336a310aa551062d92c7297002060072af2f3500b9310c239bedf45c5e985c2e0d60c7dd68522376dc7b560fb34d1b5089450c32ffcbff07b35a96bb6fe01259a06868d00af697f8bbb238d03d49570a109181c9576c1ea9d2ee02000cc23e63d6c93c6cf3050bbb15b6f73b09c25da62e5abd4c2bdb1110e1f25db39f04885595cd6a388c4726c8d4cdbad87d80d42fcaeae843e2e17f44c9aed25c8f6f9736c7ba1bbd3b839126de40a930024a65aacb872936e446114e706a868444cb140e53d976816983f3dd1d57eeca01eab8211b7aa8ae99d26e35c06ea4b226e0a6e52172a40e7f0df5f67759ae2ee026749ba10b8e33694c3e01a001526f9d75f6c419cdccece3ea3f78d69014e509c741214581034bbc7e2bbaf76db8421154abb2233117a1ffe2786b21424576e295c9baef262e80fa2edb69aff800b3ea436eb827e8adb73abc48d740b86c69d557b16e874038598b25f616afeb4f4a900be7dd0d38b5b6fb4259c51a3aaf4748d7a445f518485ed72b25c7df8ed0906b74bd29bd6a5724ac3a503c990f3697a5db484821f68718470810862728a80ce34599a41fc5bd8bb46dd845a4812ae1532c457ef4211d0e41835e5a6f030247614822571c930c727ba397e723d6b3aeba9244f054e331c82e65b74c9f6504c74b4301499a1a6f6269a3352aff57f88442d4eda42a82ebcf7776c5629f97d6160bffdd8282a40ce2e6375b161e4c22ee53bce7a45f4774aa827e2da657e1a1bc07445f0bbd770b7a5a25b1b469fd58715510dbf8d97af4e1b9459a20b08a8d3fa9d92feb32db95b22d36de0bc8b1c397b09970a6826392fd8392b2d790dcc1295888f42ac81ad213c7328b2324b28be7cc1f4fb8414a7785472f1dd3e11d66017b1756d1697be92490e15f056346d7e9126a1f35fd76cb016fe2841c8996a3507c4fffe7fc45026df10b03b86fb6cf26e8418926a030b5fa62748fbb728fa19dc2f8947468c1477750771e442e4a9d25b76d359211c05df788ade5b7824f8770b5dac0819737dec916ee59b28a49666ee8b7ca81386eec8049542f18a3207e51bdbc291470eeefecac385c096a | ||
40 | |||
41 | [L = 32] | ||
42 | |||
43 | Len = 16 | ||
44 | Msg = 43cd | ||
45 | |||
46 | Len = 104 | ||
47 | Msg = 5f75a437ce0698a7d8151c3fe0 | ||
48 | |||
49 | Len = 352 | ||
50 | Msg = f88bac738d1e3e10f75e46e3fe026d7e423fdcf3d7e4028b33a291bb4aabca53f780fbf99e0346d610d4a38f | ||
51 | |||
52 | Len = 488 | ||
53 | Msg = 832e5b78a73a1012ee62e00621db7f4d248893007c6e5d6e0e689c6b291baeebc72df9cf10b289fe20e7fab80a2399271d0ac63766049da875eed56264 | ||
54 | |||
55 | Len = 13976 | ||
56 | Msg = deab57cdeb41974037a9bef5e292894038264eb4d8993d4d1501e6ef9c68fb0f571f57b0925640925deae9a6317e3bc4d6cdd5a0833e52fb48baca16a9ba9b6c8ca469a0555763b54f04c87d4e41aa549258f30eefe5a52d2ba06657a8773b0842e094857b6d8911d6a0636280025e56356fade362b4bf4c875cc19be0c6644b447be0454dbf390eb966c03e10e9de3487b90d0825d327c12495e3c89ad09c9d591e55c91376fb14c2fde9f7461fb25450df1a65806b65f3caf4d5c81ebc6e664871fcf915b9578bb70ee6776acc62205888dce2baa4024941209e81b4b35f0eda1bdcbd9ab1d6db6140bda4c41776fe675d5c681da5852d50c246dda4ddf9fdd7c5fdfeec85ff6c883c78689c2977584406a1ddef977606c182d6c33561c39c071668a2515e5aa6f4aa1faa392aed95b82ab32b79a15e3b5a07551ab068455131b72493126470f26c30b852e4415e1d8b719b3803ecc336e4facbcc5d1908851f4f39b776bec8b6b9794d47e5965458858560eed5a0305e260240c0849d93a19787b0f8c795eb5ba32be573845256ae6d0b0a3336e42a1beac8bdde6d1b6e0b6207903d4b105f4af2ef89bd099ded870daea2f170e03bd5f6f4490e60bc222d4876e16d4c58aeea6e6c400dbb9e9f4b2b142f0fc9bdeaf4132ded38a4a8366e107cac7210945fa2df4b124be37ef76290e5b9758aa3bfe0091bb0448206323584c2f833e0edfbdc0c33075fc9647a3404ca490bfab94302a0679a1a42fe9fec6af0cd98038b09ffbecd2832b579b2294f6ae5b96328fdc0a0b9b3a32cba04fa8bae3389c3951173bdc17caaefe526aa386f98670b177683d0b804c5875fe9c7afa233ee66349c9fd1b60bb0becf5e1d887e67fd3baf34b4f90d94699d18d6bb9d77d4af358f31edc254de2d6c5fe3ec07425c633b18c1b9e3606b78b40b543e1fd31fb578cf58c45744fc073fbf3c7d7d607e815379a5fc565892d81560eab8fb5f1ae6771b998c592e6d288014f13ab283d53fcbfa66e31a9d107308402191fac2cf2b799c7dae91b93a7676898b8a6e516a86eac58ed8f6d8ed2fd4d38031e4a4466dc8798b90c48e6adb6b4391d47872443cfaffa542b4b132f6c3408f0081af8692aadb4c9bbd55053ea56d8b82998f6b4b41d331891acfe6af1bb0d6679989978368ea463743b514866d2d01fb9950e8990867bc14f1db1142254adeccf3da812949cd03cd1d569e9d0bab7ca7405cc21096e3cd4d007cbb9629372e98584b4c6b97ad0bc314e1ab6ac71184ee555c01973570ed9b115bed956f9e4e349083013098b1e483f0fe44d5e9849f38a2f7ae152b36a266ea1faf263ea8c706632ba8629602187379546fc6b82e57ededd6d074c15c771754710731e07c207899eb47e8d7c72ffd768c36257d373375ffa06f9b3f0af11417f9ff9f9b44e1f1f96ae8aaa429af88b14da1da81c7bb38a0fe9372ed6a9ac6fb5e9e56b82593d94c5192904450227bf040b7ce0904789f979845e112a1f995c849ec3f7e49bd975a474e8201630f40fc0d80e76019f110ae158cd0f8da96ea4561f24237d8e795ebf52368218bff3e9d5b040ecd2caef4ab1e7127e53bfa2b3b4fb74829f9993ac703192aedef79dd9ad24c2c976638b4575afbce22ecacc273ba43379ed55ceeb51838b0adb80585bd1b5f2707ee16b67a7232adf7163415b24b9ff9dc94b7197fdc89e2a90d2b9eccde45e965edd064dc0d1eadabe11b8ec3aad2742b5d3323ebf913a92817749090c20758f98aef2544d4c8b48874e8936d7ee492d5585675c214deeb74fd67c4d170ac5e0aeefa607c6e37abd4f8238e776fde3921afab75cbd8f392d3e88da057903ce2e140797f4a85737bd89455e6aa27c7535687b78cd0ea59848e006c8de9c9c0cbc7a9f5e977be850adc710503ce4ba7c7bd0b042297f518abec6c8ef451c33e030251f506cbc3744228b6bb4dab86877d9e6019a0ea9f39ed37557b3b5527c171da5f013e0d3c480a038cff2c087d6e5d41b17e6c8f90c334b5e2b9ccbe9d4efd99fba1f907d00a49b71b5a08aedb644fed24bcf04e71be67b03cd20d53ccef8f854f5e9f7f28c1e98a8a53496646713bebe15a93f1ea336e6e8a4e68de5dab0fe880bf983eec75d1c5027357f6669e098411e0bc3ea2293138f5b34425f78b6508b94d4c0cc32ee9afaa409a26e5f2a1fddcd6d5ff42a89755a58b08f243957a2e208e24b055f51992ab447bc06876eba169c545fa71b88a0fc15d1e0be9d334a1dd0c86f44bd149b42c07608a9a30d0b7e13574f8d862f2ac72b2ed38904d7cab194fdb9e4dcb615f5610b24e202a36866baccac01fadb575df11dd43e00a3b92fcdd8c7702ea49d951e7dad2a56c075730b4af1ceda2bcb2310256f28312579fad40ff471336ea6a44143edfcffc297258d48bd2ea47efab8f0dc00f1e6dba1a55009ed627b7 | ||
57 | |||
58 | Len = 48824 | ||
59 | Msg = 5223e2fece634a95e1e7c83ad4a11a0478f4a41572bd66c2d7902cf4f94404cd80b1f58fbcb8eeba3984fd759410c12f8ee922865f363f684df5a8787c87ceb3086fb8535157f7f39653dbf5c66ae7219253838ec77cf1c6db518225c5ba0a8212e5911236474b8820ddcb8111b87320adb82ff553986324aa2a21c37ce4a083c89ce9931290d4c1fea933e31d014d7507a28e83aa917ccae10bed1a490e77fe501b299f8e3b78e659407ce1934d5d68c7980800746f26ffa9794ef1d23f793bd2eab7fe524e213e58280f441ba48b40162305335b3a480c2afeac11c27f8d817792fd7805d4b61224eb52d35c0fbf471bcaede505fbc9398b216f43bfd69b1a669a61d44fd21faae410af58ff95e1c3ff1528de1aba93cef56bff4d714d8c4cc88a4ddcda52444ec1208d99ab3fd9fde98c1ee6437d8d138f62c5f782eb4660c5eb28564b5b0d46e3a2546009148f3d02b837c5284e9f508290270b97b9b29e84445a0b4df662d9711e6b73c11cebcb7120dc427034b1ccf57d8e4f5bbdb84d2e1d4bc3862a2b51931d3c9a7a5fd6ee5f4c7327c338abd011af638d730141b6eafe63469eff50f473262e9fdce636eff4c5663acb6075a4fdb00c8b8a8d3322e1700a5b3e7db90b36c1a94991b8f51657121b442db6f890e208f312466778d73bfaa8cc0ead4edd0776155f3eddf9abb1bbfc0c94421adce83d7ee94f99f61e1f25a55fb596f8b40ccedbaa8e5e2cf629496f5ca60bc4cf36d917da4e2b973eb57869dddc409dd66d5061f22642743fe843defa0b19dfb2f56425abeb234181267b5c0d2ab4268c538510feb191bbcd1631b0af6c7451cd4c641025cd8bde2d9ab6e6b948f97c1ee6f35098d553e8e9da9b4d437125046864633f109d6a558b38b270a7dd1785d44d248a863a91e3db5c0a1d7ec133decb65e81c3402c98ee329f660a092172bf6b1a02491895394ebc506882805a6c93e767c0e58a5af717d950a206c0f0055cb39ed88816a9fe3613d15f608e486ac08bfa67d462d24e6a0a37716d3fbdaeb9c0e951c1e847fb884ebc1cfe707dc6e7269eed1c44331d5957bc4ac9dfeaed4b157204a3080fafb9df8917b8d15aff9c49cdc739b8fdc26a546794991c183fa523d14797e051894f48b0d62c2b70834467ff9c993b82fc1152c1f5479ec6144c7e8fb10d1bce26bd1cdbeec4e95ee073f3bcc3c7367328e30543d371b27509a577f5c79f14d5f687ce62b82f856695af9f7dd350543ec763de75b593f1859e44c2ac01ba65f98743cfddd8a89a38115badcb51a0ff5655f830c0122af6a830aec13ae5eb89a93755b3a5a6eca233f21cb12db545a24a5334becb8fa32c3d7f5805faeaaeea85a551fc62c94807faa6474c0d74cae79b5d8ddae07498fcc5b8b4f394867112ef5fad1c9da66765ecbc7fc0f3269d29c9c38817c77778f2c19b5a3c705fde9d76a4eb86aed4a7369a832ad267312903462397f7b8fecfa8b195cc2316cd53e48c3371ed2ecaa3e484b8ecd2e22b1aee910c51ed5d71198936266f5a00655d82c089f49295feda0a2bcc1a54ec8adf565acc3a8b2d74c30eafbbd843c59e67f293f6d8296cf7b611f01b57dafec6e2d4d411a633918068c38ef47b72ceff1fae772891141c3bc496824509d78165c1e4cd4b4989321a8722643eed69950dc120fa8da3e53c3181f252d7c4cd2cedf8f086f788ee77a98ab5b019828aa02108f49ea4a51f457f7adfd2220d3e59d5f4a29194e8f5eac40ff80312ff6888ff6393c3fc0914b08c1b9990d247ad80a441558db1ee1203e07353dd99a885a7ff5d791af2548815dde0ca1f56f89d39ef6b93dbcd0cd54b854173903c12649587433f0425fbcbddfb66ebce3eb4800dfddfe7fc44d9b23a3916b1db68c187da4dd13ff0157352814b1a792de7fff855761abc6fb7b93b48525fa90fbe3a51dea974069f3f5fdea86387eccee13f58a8eeb8abc6a43fd30e9788c3bd9ae1751b30a82d420225b2abdb1bc121b9073380be16107188d20be54f2e9c658d5b443869ea0e991c496104086290b6edcc1b656adf94f0d42458750fbd8d88040c518ebbb644f4dc4f7c6971d8d60eee0272df7b51a3d5248b4b264fb22195ad891fb6ac994ae5c0bc6714ae0b0b9a484edc576638b78ee89b568195a8f33ed8362128c30f9b0c7804b3ce1355abc96b15aa55c1e16a9e9ec90d1f580e7cb412a7e85d8585bfb950acd4de5865214ce4db7f6314d81784c588c1482d5f28c5fb62e7dd7aa8237ce9396ccde3a616754414cdf7b5a958c1eb7f25a48c2781b4e0dba220f8c350d7b02ece252b94f5e2e766189c4ac1a8e67f00acacead402316196a9b0a673e24a33f18b7cb6be4a066d33e1c93abd8252feb1c8d9cff134ac0c0861150a463264e316172d0b8e7d6043f2bbf71bf97fa7f9070ca3a21b93853ec55ab67a96db884c2113bea0822a70ea46f9ae5501eb55ec74eaa3179fa96d7842092d9e023844ed96f3c9fc35bbc8ee953d677c636fdd578fd5507719e0c55702fed2eaf4f32b35ec29a7a515bbc8bf61f9baf89a77aeb8bc6f247706c41d398cae5ec80b76abc3a5380001aea500eb31b10160139d5a8e8f1a976dd2dde5ce439a29dba24d370536a14bb87cf201e088e5e3397b3b61477c6a41e22a98af53cc34bc8c55f15d7924e7e32fed4d3c3ddc2ac8eb1dfc438218c08c6a6a8eea888b208f6092dd9f9df49e7ede8bf11051afd23b0b983a81bcc8d00f7d1f2b27cb04c03aeee59c7df23a17775ae5984eda788eb2015680ac5610fb1380b4e7d7a9cda6178dca98690449f5551b66ad2826cab2b662f56903fc95b4611bc86f7a834a34ddc3be7bf142c8baa096abaa3cd51ad0c0b6d15e590eab9e50a4c60c91061f1ed6373d91974c1ad9d263110a0d43fd8b596396cafc0ae70b7ac24a59bba090a6994ec483db7ed4c572f723670a11c724e8ffa2497d8fccae37eaa1d14ac1537eaf80efbd2e597b2ffac97f2bc3cd2c4017f170544dfbb0d9109478fddf06ec0981542bc8107a725be25070d2cab4716f4edfad75fddd582ebd363c49e8efaed9a76ee51f22304eebc232a4f67f865b04f610a628fdb317116666785fe8ca30619a07c83cc449855202d687f162b12d93b63af6e7ddfb7223d4ab998a5f450523c1d521ab76f4aa113cc2967e04a38dae07c51c2d0f44fdc8605c3c53ccee91a2c73dade5dae021cbc87d5cd6e5fbefb65335827311fe1e91921ecd66b2055a6102d7a976308a80c44e6d47a67718c84f2112d65486a558f1f269b91d9f47e3e11d09c0c748625bad2718e3674898abdb19d3644bcdc9317c09a3ac02f514b2a57e6a706362e5f6e8fb16cc83daea0eec85fdc8c367d84c9230730291440a4b109f7034d510a3f70a22dd4fa69e8b65e5fdf87045d560eec71f4e59531c7711d4f8917a96e22ad07346d2f92a13fb4569fa6a075da6e1acad1eac1cb2ef19ab452264de2357c927c6dfae6598cbc821eaf3b8da754ce91a96c702c95b2c308bf3a550cbf4d22d417745b5f17d36608feb826b862747c59d26a0e8eb96547a1852f9fbd095f1c5d20721804941d462f3ee2f0876ee2825c8df24c4f00f0844e50588ac688127013df8eba3c971362dd255420649245e880212cb3d732fb82f866dda090040f28e09cf1c86eea5dc4fbfc373eb69745b4afd841ca8e172d4a8510e7698345fd4cab9ec2ca0453a274720bb2d2e5468bf0d0f85919dd762fe3df969e6c071285e25c2e2a49659b8a78289aee655965bfa3cbca9b292a19a855ec40293185354ff4da9451ccf98abfda07f1137e79bc89d688963081dec641a99656b040637402890f185edb28e7e6a2f65848a6af158f90eea440aa6246a2e6c31f5d220b9846aae2027afe5a7caad6dc16b56463367cd9e73bf22a1d6172145de4565ee369c55e3b99ccbef70fb080a3748340fbe8f6b95ba46e8b76de5a3c4bedc37c55ae24ad02267da26769a3a732badac2e0f3a5393028dd54d78701647582cd04c8310e9f1ff1b433125229547130e1737a1f33604f0d670ea7221097c3eb9c7fa4b8293d7b429af76191ea8e481dc1da31344537a09b33404d782eda1d6f5775500c1d8efc615778baf0905d9fcba1806ef986c40b1c6a72335104376b58266c36f5939a8b95123e8635c0c95e80aaeb97379b1179d6332dc07539b595ec32eebd3a336a1128f3cf2e2924db6d8504a516b62f26d012b7f75cab765c8374a3824da5a405746023b51894649ab422d636513ee809fa181d5b6fbc63351e37a1b14efc8f739e86ca78ae3e280f1c9e4824b2976ec4dd308ede6171a7474c7f530128089bbd75e10f9e57ee17408b4384f99f886a5f63a2320a9b90eb9bf692e1fc449171eae3bb1bb17a6ed937ea57af3c82db84e073b5306683e1d63705b9742a085fb802cf5a1639818417fc2223f476c2566351f4b3b17a822e11255f3c3412dd39190e200727bcd3f9799519ef792ec7c2b0b9d0e2dccf013d436dee63483c2ce83c15c00a76c4d894a60cb90366ecf9e61221ee8bdaec66d715159876d8305b35c81f96ab2cd8f81f4769e9a6e439c08c329036f5d2591ac42f2747bc0e77d4e566358a3271819b6003b290211b9b847ab70e906aed9f86cc38aae27e1098fdc3bd5d84e66c45292183f198bc329cad794aa4e430534511b7d9a75104061b409676a16c1146af0a286e2de8bf51c4a35193581a902bd3224cb9257c961989042538092af92644a63d6d6f6872a29aceca39341ad29dd22354812c4b7c7068b039ac9ca7e6358e662a28be001d4aa697ace540cc3ed3c97b98d8c5a6fd3543ae9a7962c9229b14b0b646229807747064be3e83191cf24092dd67f675638d9f6510486379f47f5eeda870a3187946819ec9ed05e7b325bfd0eed5c9a0f4a2063d63c1a8a0a309f586c94d4a68bbe860ae9599ce204c92cf9d92cb460ff99cff9e5a8b3824786360e1e1861e71158395faeaebe7aa2f61f76190f174aab9a313f0bf4f1befbbb22768b8c22719cf3fa9ec908b576fa4bbc084b1ee5b5a7eddc89b58b45ae7b421d38215aa6e49304323eb4e202655f3c8b16ebd6b03058e75a907ee63fcf6aad5eb96c1e5faea81b88b5eee525c4663af52877c0f759432913b9d48030903e7f9f70e851cd4e20bc56aaf36cb02293d992b38b583b8f0b25a08c3303d8af5b1b37f5127f7021b13934645ef3020e5caadc5e7326ed4ff56f797e26cb986b6512b0cc76f1d8e7be44aaa88e12cbc644f14a7feb979d2ab66907063c51e052d0f8b25d827377fecc5111be0d365e08d17f559e3134cb9db294f1cac03150f4232f853ec15ecde55fd1023b58e83934869796400088e9177e85a2227ee45addd049c1d6b03e5b29dd570496fdb2fde7d8cc74fbb5fe76266ebd90a3b4d57e6e6cb9f0bbdb7ca03ae955915768011c714c909a27ee20135927af55d4feaf2c345d029a54af942da6f85f2103345d059f66864e6b0578111e2ddd5a1cd8bbf4ae35b60747b93f53ec8ec64c10cf4149909b102a2b88712ff3e5ba3611cf96585a6b36fffb64b8c37a114d6b16a53879136eb0b5e003a5a068e3e8422a4fc8d7c77227cce64ebafcde2437166b62ccf486660a7a2ef37012ebacca26ecd5bdf363feeb06aee39050974c25d6a564594c67f56fcf7ed48b07fab4e25ccffe002bbe460325abafe37f23dd9c145b4667f146a1635e462330f02470b35c5a2519f1350c02b263201ec9026cfc57d3659373910e878f2b6c1c5be774df8e01e775d476956c257bd0ccdec17ee939c46e5653d5813eda752ba7bbb245a99a5db1ae55d19692074c2e5820df97c502a4bd1b12929e1be8e9ce6d802347c3e9c4202de6046436c05ab55b2fcb2c227adade6c2046d98102cfd0d859a91f8104eb9f6f155da2acf93df2405bf2c083eafd3ec41d60b810e0bdef6298b21193642a9c0c646bc6771a5c61a25604d96bdb727abd5a7ebe4ddb2a56a6ddece26d8007b26043ad44279c3c8ffb7e6ffb3cd4e10ea2780f509a8a9bc31f99a7e66201195f1543a0a020f754d9a665a29a896faf673df6811379579891374c71b2234fc61e95d4d46f15d44bdb4d7c3b3be3f46410ca46827b8cca976d8866e8ca33c4945d5c87b705588b78015b529843af0b75a7e1e871fd276c1e947d896b92e6181ab7e3ccc7077bb57fe85a6958667d3d7a790f6cde1cebb494c2912478a0eca2bfaad62492e9f1caaa0cc520da08c0d2d910cd44255f4c2ca0646dc89e789a1cf9a28e2f99315d33accb1639cbaf0c94181b85fef648bb4cc7f66dc65b8e90bf5f3b763e58520098febfe7e47bddc2d9cdd5e40dbf4ddb8d51f51bde2e57432266d248d13ed09e62f66794d188f9861c50ec41f0eee30f76f4ece250956733ee97036098db41991a4a3eb7816196c8e447db3a2913bcd992174a7bde1f42d57c764b47f5bc09533760c1ba74943a0dca291f2746bc1fcc573f9a22c72a5eca347b1679683fbc8f32b08d381baf67b7266b14b3ba46a04a3ee45881ac452f64df1bf17f70f4cf9fa4dfed9ae70184679184784a0451d2f5c19c02031e0e4957b4df68b4a069a6f6f6458f6d773924a1841ba664a55c2c3187dd33416cd410e56e4bf8d3671cf737bf67df2a4cc4dcc786872b9e2dc4009fea0e48a749353ac053d80e36357d24d468dd595bc823017c015d7450fe38149370c5decf13b00b6b0e0a2567ac08b45f7b0c8a7c89d227219d051d17a706ccbea49a42035cb327381568eae23b5e2a3b7e8beef6f260d24ab224827ca8ee9d640dd23eee94ed02c9e26abb3053cbfaeadbb1f365a24d8769d92240da842e0b361524020b5c9c22a2fd8602dc9600aaf02b35344309f6bb018a94d4cbc9639ab7430657c4046f0b25df517e31626abeedd58c2e19aa0ae1a43ed2bacad91dc04a2fdf9cc33cc420f4f04379e95988ab36731d5d5402d89fb47e826f4243bb206124364d63564a0872f8d2826eebd9046c7c6f2e7c951e49d4b22a7eec89da1fbed890d63ef15f26422185143c89da3ee269f83e1de11a7467822146042be92295a585e3a09e720ec522e1cbdcb41acf5ac45ee892677ba3ff670d71339a76ed98237be252ae21268e756f05ba0b094a1803f9da84a8a05d0ec9456cf565e1b548cae95eafa0fb01f091935e6eff2413bcb15f605f15270408216fb5b41ed83dfa1454c522375e35bdefe54275f109d0ab450636ac4d8e4d9e27f2d81a15b8cc5e98549254a1c9162918db3e399118f5864774a9d6a2347e1315753071eb1204c8bf5f52b1a0da37e484ebbe545fdfe6b031215678c3b83a19a24d7b661f626beb01eb82b384f02f42bcad4f40addd48db8a92b90d2297e6143702056123286617f86fbef4fea940f648867d790b8f803abc5f4e0e3f4226954c296afd96e287e21b7243d05e743161810da578096521805edd81f68a45500f6a3a1885cb1f45cbd399dde024df65072eb973c827fca13eeaa3f140842016f509aa9ab4603d2457c92cc9aef24950697a0044e3d7c483b8d8391886cd50dff8c2f16de3d6caa7f864c1b3874750781b2b78b545a94b4da0b0036433c6561f5cfea50eae9f5645302eef18238473606e9b9931880d0f6368fa9970d1ffbe59c4454bf97f4a5e8091801b53ee4a209e0642d83605836f69742071aaebd9d813b10f4ccac03851ee9f20cd1351f8e68554c9bc5f58ad19d474ca128edbf561d195e52ddf3c19bee3bb597ac2f92143bafc98bc09fbda6d18dd4ff2a93cd2ba17f54f75c32d3f141468c2baef4e53b6a340286dc2599bf7bb002aa86688e26f5b51a6aaf32e48ffd539d4f3f4bbf0cde2d20138151c82384f9ff29a634ab4e0103d93340bb9a7b0caa108bc7fdc88d7de14abb17e9efdad2b0f304f0bfcbabaeb1b9db75959dbf54930e67aed3a9c8309aa90506b6b9ed4f1d06c4ced19746e206e1e9b8879663bf56bf6c5c920ac5e09e6579b780cb63e1875ef0a731b726864b7ae5705a2d6d343a4a213a05928b7337a59f900fd04472382610e2a8d25383c9ab5804d609e79a88d70eaef3ea22d3aa9100fa2a6e98e97684ade9fe90d6bfc59dc9dec3d3d8db8990bc2123ba92e64253235e9b4d682e8aa04e23fb9bb6248a77c065e93249de829bb2fc5ea9e396461090222816bb29bca37bf86698fb995f62c50110cf418bbe2078a56c5f1ec9fdf3d0b09a719ac253b5bcd00932ae058b86611aff51c8ca8448978615854b69b0216a6eb8050ce199fd9a13aa0fd652570a1b187f61e6831b3a960521c3705da8c5e6c64c7b196ed4a49c2912d77b670b177c6458a7a49ecc1ffd8c57c0978d2a05cd1f1c7ac9514dd14b7b0933a52cefd40b6452ca0903df1f55828025c7e18109a6e0f2ab25724cad2d6f57cb5d894a6a508134731e9b9c61254f64990941f4faf97394b634b91860cc6ec346aa666600d323c849ea4c4a0ef55acbc56495ca004f3fca42ff0ffb11b0e1164c95ab89bf1db3d4f575ff334d4e0d7d50e0c54c422eac5ef78c5a3be95f2e18872540fccfb597211ec79d9d47b6cf41e385b9c2e92122167fe584210f63bf919c620d | ||
60 | |||
61 | [L = 28] | ||
62 | |||
63 | Len = 16 | ||
64 | Msg = 3dd2 | ||
65 | |||
66 | Len = 104 | ||
67 | Msg = 3d232201038fe7d846ac1bd4c6 | ||
68 | |||
69 | Len = 352 | ||
70 | Msg = 44c98cfc71f82215dadf494d68d1d6b92bb4eb81fa0fbf945a659d9aa2c2302b5c93fd3eedba31e479e29d36 | ||
71 | |||
72 | Len = 504 | ||
73 | Msg = 02a5c7b1b749d6d49bed302d9439f23ab83020bd4d573906f4190e74216ad33aceab775f71cd31092bba5cfa42f0845bd16fc1b8bed6434dedc92f80b395aa | ||
74 | |||
75 | Len = 13976 | ||
76 | Msg = bd70deb2cafa75918308d703a6783fe9dc5e3d21de9bfeb6dbb1cd531ed5dafeec463a02abde302d4ae6ab3cdc2f0f94865e38339c88bde507ff71bbea6b30b9851cd8cf599e950b8c8e620c90adccba0033f934ca66ea0a936afdad575bb6235099beff1a632c9114a8045a0919fdc21083880eb05c0d8c489c7810aecef4a41766f67c37557e28a9db9a0d909c2b167ff7eba79693afd3ee3aeace38eb73a5a02a882cf89b123812cf2a0f6d5edd1d14362ce9c43257474def5cce3adbba8cb48e7af9a45e702a182dbf47e8869b3f99e953ba81628e502c60d4f8ffc551c31b3ad6ca85c52164839d5e9d493deee4d4b76604174bdb5655385d34ced2c1b09dd5a486e1f9ac501bc611f9d7aa5c748f496faecc14c6c18e1dfc6aee2991bd0207ea1701219955a751df43dbf66f57904675a0e9e6d7f9a0b8bb82a8f44951117ab2642d6671daf1e5d1639d48aff6a05781c2b5e8976653b0a164445872d393d30355acf0bb49bf2bed4265c9a3b786249afc7a438d706eadb6f90a7f93ad51bde6d2c8e6ff09dacb3dc67ba0d3030c54c8367e1e4280bb5903274191344610de61c3c770c6820a6cc9d826f7c743f88f13580ba23cfc00598fd733b5dd069bde7f10f2b8961c16b69761b0f308dd137f844a67f6054e065863f226141755b96645a291e3fa3fc853b2475fbe1d3b25ca22f4da4425dc95fc855e63d6699b311ebd5fec1c7753e6e81f747c808ec3f618f63eaeb1221075edff0532225c40ccadee304a8997c03920e7ce4e60e4df4d120611296786516dd4d9cdda2077ac52bce0fdf552e1ee89a0133f1f87a6f6f35f5c53958ed806465919a0a5fa42488bf29caf33a0dd469e13abae351d5c6fb1a800ee384da199c823c965d9d5457a3ef8292c4d9b142e3f1fb502da498eb44d95f8c85bcd6871bbdbf004bfdc09ab35758f5e8b6a0d0f366c3b255333c52c8fcd4ecb4536b5f6e72897649f3415443612d72c3436505249a344feeb04883f41f90ade40af119014b3c56fc108f1ab0a77087d9226665d416cd975e9e4605529c032e8926002a70924820c6c7e264a794b2a3beb63d69ae56e017294fad4d611cbd0d3847212a38f22d623eabe3b884a36464d8814286fff52c4dd366f6c2abfc2eb865e0dc9ec6e55ca9d81f1b8cc47e2629bb162e54655bf2a9e156ab0bafb4b8ce96858aeea6e6665607a3f268036f4890dad759486b15e3c9e791429ec8f11bae4ea7c490656fdb0551dcf0b0be017c08bc674bd97d9d701c3ac955e2941ba7d5f2ba122a6f0c1b164b1caf2d50df111fd4287e9e195d181f6f514d7dadbefdd4274edc234025b727680576046842a834b6ad89eccaff5c5209bb91d652357e3750d8bb0165572fb71d09fdfc60f6b1e5d868c67c0edead427e7aeb734e29b96e03ea174b6b1af523feacaf6bd745ceb1bdecec9251958b7f521182daddf62ff6c4f58977adeba81c616ff2e937ca4f16eb9c44e63f9e974709122083ae45524ff87d7a0cca33a90f09b660db0efeb393c61967de2564315827ef1cf42b71c0f822f471713c9d885a3c3281d7c95dbc96f1c6dde0af70ea11232b00a2d215ec8de8fcf84b6193b6ac9d46de660361aabed3371fa44a6f32107f3854262eac355f9ef98701f580b4649175cefc29950e7a0eec958f629999c4b0a98fd4bdaf5c0bd97c963b551f2220bd41ec00b8726836e949e818a49aa1ac5bf12c64fb9991111ce8be3e0cb9605f753dae1a4c84389416f17fb66cecba45d591b22d64e5a4edcde067a088d9ff7f5dbb9dbf324510000c55d50f480a640fb22da9b4862dd81080d61af9560b601edb5e3346263f5f193df97079a27e3f9876078b80ebdcdb17ca4c50aef0c8329c72a7f77584cd963e105eea9c28a2ad4e95c1d018e27d0e720ea59147f59ad796b80b6293da8a55ed47e8abdd37221db0a5eefff31688e2adc294654ab0fddf9c1ffafd4783f01eb539492cb35a77315d0ad19395f47b18298a7b353dcf5bab0b2f193ff73d99310478d2e5c4ff1c68a2493c138818edef73caec9977bd4eda6249c8933953e06d796b288f78b18c343ef561082fd03bf92b084afaaee741de3004abaf746350048294bc52450e31147173f2da13d6ffc5adc718e149f9df3702f414dd3ee88296ae8a0106b071b589e8696401da7993d58a9bf8e5bf417165498c96b4ff5fd2b45bbf88f551688425122a3737ca54b2992fdb4d60957a93097222c3cf4c45dabe18b9d6a69e6f27567d5adec489e4b6812c29a8fa52f1de642b7b0e749c16f54473ed5ca2fdf2199e885fed308fa62a3e0deb7e0b8e439e25b3e9f95d755fdcb7ebee9d73069dd57dd1cdc5145205882023b54f2c9dec6cced9e3f6d24e8cdbb8ef121b8f3eded574d81908e867af5ac82bfb8ed60848b4bfdc1d998bae3a9ca80c1c49601d11a40409c62b1536f01ca67 | ||
77 | |||
78 | Len = 48824 | ||
79 | Msg = 5fd54472a44e4476d254c0940071ad42dc723354f76ba61f63fbb9df80d1ee56136f51b6982e66c1da83602fc08093506a9e2cf27cb92085ba5c627dd63f59f8850e91a1d86cb1d4ca38ad03160f3c584b128d9b21e935570e086d3815307ab8df396cfa0c100bf6cbfc0fd7a8258fa1a656bc178e02cfdc868540d8e5ad39dd46794a8bdc205e710555ee7421ca7475a4f3232e6a0cd55d4b5d4525f0bd7eb1e455931aeea6918b9fceb2a32706d31a6d7028a85e102f228417e2e7db68317ae155af70eda98c8dc1ecc32a62e294d92855354c1114c5735a3c81e551b63a81650107557f3237bf953989d17c65a0fafd2bb1e32c237f98f55389e8f8b0810e97e201914c487a68403c6d621a98ddc515780435564245d87ce462b8785def699f7f06ebfdf33dd1ed7dd5a3e781348298c7950a387bff7d1878731d7ac66ad9a6607f2c3a3b6843c2852a5e882a8d78ae9dce2a79d595cdf09626dfa6f1dba7d40ed21caa29e304e7dbd559a89bd1f07d84165dc259ef112dc6e2c5a3e82b1c50106983f6c4965c85073c5deddbe6323003d56abb0df590f69010981ab3407e43eeaa29c6156995c492c931fff1b686eda3741a0bfb9094747d1620b2580415d431ffd6c02245f6cb03e39f87e82834dcea59355b2ba663ce145d2514e15e2b2c60cf518ff510c6c3e2f16d2dc523832762ed8352a320462ddd4d6fe755350672038163d996b44ed3b85d64989291bdf39398cb996de785b9614ec5d4bd73efcfa37fd4470b17d6240b8e4c715759286b04c3d7d791e2689927c9f18320ff2e6bc7306c805e23a5de66eced5f1a630cb43dd46db515f837f6b824b99b86c10b6df7fcf22d97be05284edf0e0be597b3f9c63556db031339f79ac9e6c5f8a1cefdbb4b30f5bcd23c2a4dcf791cbfdd6460284c5af0621ab7c5571e40a87c87be459c85ec81d746930dea24f43bb11d6611ea83409d3bf4f987778d8eed1d5b246a2112ef78ef0252f9ae464810c13f02359441d289958b4766807d9a3be0054897d35b01830deec1151f9e3d42f92b80f4aeedd65c78c6e98afc562a3bcf6d72f238c6e94a38f2288ac7929a7a61c92875c1f115c0ed8d261a727f0794f17ceaa3dabc717478f6ce7f2e8b295f000241e154b4575bfac8483f6b62f9ef4e18f7d341a65faad5e2fc1ddaf2b09adebc155ff09e63d5aa5f95206e66c7f4ef2ae3aaf3ea7c93589efa8c552df8d203e0ea181c1703d7023b56e603f33b4adb9bf44f7af290d8081210f327a6c9b0785709346087fd090c42d2b8b2711b9a1a5173eb5e246320ee27867ad6c3eadc4407bada44561a12cf5d53bf0448308bb536a8a525eabc1410c3a34becee25fd6fda453251ec229b53751f2280e142c6b331daa659ab655b78cfb08bf18e40bb02b7f1650eb2dd4ba1707f0aafa219f21c29521581ce249e2e34f5656b0a04c00485079b040e13cbc038bb9f17f47cb8f908591b26bdc28538d8baffe4cc39b17d2ecffbb9698bc2b8b31b08424034c051b535e0cfdf07b7a0a54781e33ba739759991aeb72c0ed992cbe76eb8ec0ab12c182e8b049cbadd6e82e314f1bf15fef5ae95dc86bd64b8556766f8ff62c33492198e454e5ca59ea856d8e095c04da8045522abac865506096ee1cfa1082af08ca09b3533878ea3580b6c0c57a615e0ab768246b3eda96bb6caa01a2648068e21959f843d853e948588e8c0bfda364ef1f9fbd3235c27916562eb0214891eb55ae0e059f4bf7d1838b5942656c27899dec6d67b823a981d1e1e0aaff5323b0e3d69a7dddf9b12d7787ab763a3c7a2697ac65b655aefc4bae7e6444850ad2540d5193b378682c77a4dbf9aa22e517e68cedfd1ba32e3730ecaa2e3f6ae61a4f427d6e69071dd62a9bf6c860980c9d23ce1fa82a1937e6dc1ce3a2de096b680d23d89ee102912ac0bd769c1c02095678dbb00b4430428797cfb966b2f901480811e1b9cde358b6d499c9e93f0961f050465d7b0c70d4961e75a9fe40a24e36eaad27238231dae6d0a17f446c16bce7348e669be563649eba9f23be29adb8b10f462780a066ae573f74e51215a26097b02469c25180890e06acc53ab063c742e08d51359b0a39749b84b9f6be44f3ae3da8e5a2f340a8607d4eed08877d007928d332d6f49502bb5f416c46d866fc87477c58a22d3c5932a8d6298c1151daa032c84ad92f8f90b8053b5aa6f690d1bf682f314471cbf200f3d30959e07adc6488dd17b0be5279e727f3237b8b4b19b31a220dfe63882937f8d5ead677608c42a57217f2239614c521d94559290e3b0ed8055d5474e96564224f6ca6389b40a71337da11e1c307dead8e4eb43252cc2f1c49addb18781cf20acffd3db693b02e5c8ecc949b51b99005529e0149a13390615f5df6e0bcd68e1ca82b0173d25134dbf76dfe92daa085d3f6b1e4d18217df41b70c4c40101884c2886495f2ef8a473bf23cb47ab6533c93cb38c36c6dcf6837f1272fc91a6962b6e1386fb643e1f1d71fc75ab58d5800bf4081217cdce0c7ae9e3d25de543fc4444314f32067eeb147c08c55c5c8158ed11729837547f28a300eccc312260215f50e98c4e3d4170208a50a4a4def1243538f906df8476b0c46d3449be73866d463d422595300e160840daf8c906ae4aac13a64457853b0ea6d8c32f4efe3b48c0b1450250086d459648b0ab14fd3f341a4a803be77e56a811e7a26827eb0a1a9454f90bc6ece665904adaa3cdeb2c4847858fd1d79750e8cd45d8da9163784b8bd06629410502debfed5eca3cf8fef0fa6bdcef6efaaf35a1986d6fd68e0f436dca9442077a4818ebda4606a94a3c93fda46e7ef5ccfef656896a0d3d93566b02ed8c3f6174417cdcb99a415b0c6e9816d94e64b438c295b4bfd69e0d9ad52911de5509971b7370593160629b641d690eb2828bf363857983e3b9098fcd15e66448f786f196685d2ceaa251b17ad06dacd614d9fa78ce0a8b9c1c360b529d0bc1d17ba0b70ea8ac1b8d67f6e5770f0cbaee0b38109d26b09493060dc851f5fef121e83e30aab9c3efc2b8397e8362aefea1708f7ffa14d3656f7f7610f3a629bce14648a593250c6f309c02c6c552bb42984ac58db920dbc7d98f59295f37f3e9b99da55ef074ed65801b390366669b4c7aa1c483ffd23082793f9e5cbe30c34250f63fa3ea2cd097593dc67e8d27b7e4f07e73a9f7b33a5ef6962df1381a038d4f58fdbca9d71ccf640b917f631b75d4a2e8ba46c64a6223f99cee30f47c1a935dccc7f054fc39d3498c824e10cc3ee337e781a3971f0e98295aca611bde701c2359858914248f6bafc88232bbc27bd85883b00990bba7862fd7a7cbd4c86df049071fcd10d686613ec877758d83927cacc530bed9a596b5b21c6fb748c379d676de7e05719a867c9f934b5dad99ed97dcb4e70a9b6542ed5b2f086d9f56fc9752e788785ef8f7837a31e433438cf2f18f58be37fe8412f6d21a5c35000a5efb862926700079413f76ab2c3e79e20b516eba9d8c29897097bee55157936607cabaac41337ea4cc783c0809c875259f8020e16d5045fcc39ac796d11a82f25fcc9579bf0a010200f5745065175fdc15474ed514cc796672c59637c3c8f236cfc9c0978a3db1194680c58c27746090d76ca09f7c48ee4ee7e1d3cf0ea70dbbbd88e30e8814b57404dfd7c33727a0c84cb7bd468b0bcb3c89b526679c00fb0892d2a5e7a3d73698a3db53fd7d78460cdcf24ed22b5f39b8c00b3506541ae4a5b76fae29c1cd5b0f8c3ce142e0af7ae4efe3fa4c438a604bf4a9abb41e3fef1b9227a7dccc3f4d6026ca289b4b1366d9ed546abbbbd5677c8d582e79e2b544f18dc23809ab753313d84dd10fa3ed2f723f0b46277b8877d4f3e0665e88c50caf0f0708b746b736b00c8c83a7d18500384bd035996aebb7da8f09fd6af9b76fde7fbfc0ee854d7ec02950e76abd23ffb27a6ddf1772465016c79b98a61bd3940547b207b6507e32cb9761a5604f0f546834a8edac7ae06910045de218d761a4accea886188f947b57bd876491709028e2e24b075d6b022b51af1880ca16a8c65b7c69e51b2ad580ee058acc0606f0a3a9ea1cd4342bf4be602e941dc4bef1239bb9bccbc8098a6a17d63186c6fa75ec44b6e4fd38a3fe49c5eb995f0cb884e2f3ed6be02515fa605b98453ad935682c3bac6a2971bb68f4094cefeeaceda92dec803ccd3d346f8b40b48f8f489e118a17367801e85c79e9b3bb5d73ac44a8290cdbf83a154f2f125090d42e1a1cb72f5ebbd42da46c7a4d4b9fad9612a4c800de6467ceb74f831e1395dfbf5799a3429ba34754add4b34b5960a5fee8f752dae78450322a1ab3d7102b77e907fc1eec5355991e0c7d6c0866660e5436248edeb1a37c0e769a0764cfbb6354332d6e55103b9235c84eedaff918af3f0213c435c32ab409a4b5c7eed8ab6ca9e313dba459bcfa3ee92e7d669be0526856ac3c06a57fbecbba553a9cb4655a901d98af02b74098e478076655d325bd7639d73d7ae00c62fdc361a997ea4ff5b0eba33096b12f35cc7cc0eea62950b912b47c11b9fb386a47c4c15c0602d304b2541da889cff299a1fd415e7e25c70ee4cd83feea7e6a9c50c75d9b128458513d61ec5d0299ef8c090472fe0850f384938ed44d36f10cc2c1d31daee3f946a2fa18f9982a988fd6ac973b1569313ce3c8ff5746c4dd85a241f1e9dca0e904c091832ca028533a3e34c184edcc510bf22a27f530bdca3d057928a96f72dafc73a9aa6dbf2552598e468735cc5736c67a620e9455483e9cb2108045ad80569582ea93a53b491e528c8df336fb326ad74317bc1dfb8ec30a73af01a5dff3e437b7fe48ba5dbb3e8f01ae0c6fc28675a415f23a796bb6e0ef0efeb4b14cf20d4ad88ad1966da43a76b454dac8687bdd97b89b8f8eede91eb34ca4a0523ea65736ae39341fb32b9b716f25662a37382c16f3b9c346c84f03bef54acd6efb364c6401b07b3f7679e8e7f8c9b77b75e6e98b90f4df88460f1978d19744eecccb743a999aaedd00b5a94018e9d5a56bac9d5d55f6e93bad52e84aa7340cbbf98d56213d9dd3e1970867e3972dc98e61b3cff40b64ec49463ff79a41c82dbbcaa37a82b761f432849aa83a3d3c9a209e2207b87ae9ed9959ffced165fcb0d8873668c3cd8f18ba0f92f7acd2bf50416c22ce11692bf6132eb9f558dc789cf9776da94e48cf48607f19d9a11d5df4db11dbaa67a1d20e9f0c96f5956ee3f906e371c489efc88b0c1e56d881e7bf8dd5d6742622eb873e253dbe54f2e2e6d0e6136941de8c23e9a632727bb5f88c23170316c7aa0df28d8d07589dd6022828834f7ea9b4e5876a1704944aa3186dbf89e0e81767cfba03bfb38c55a9945209c4dfd88272c49d1745dce5ceb40f0a6713b5139dc2fb87a8a4888406d2610b7b910a9e5782ef0df719028d8e50a40a269dc9bee12157038522d06537bb31fc87d21af9ad4b2e7e127bbdb313e0a116010f65126cedadd4a122d15a71cbcccc346f55100e354b997154567fe3caccd50251d137c58fc3a2048dd5883b6af9248b51040c01a80c051b8a151a8878edf0304b5554746d6116b749221a1d0082ac925e6e140f0c3b6a180742ac8a50ce0e93e6399102f151d7c14000369ff52d0b537fdd51bec99e7271b1255c6fbc36d83408c417f6825a8e2a58b9054ab2c3ead69d97ea9947fec32d720653c123ecf51a9a3f0ed88743e3fb7b94aea59d0bf0219ee50825ef220554312cb907edb90e4d85f29e316ad57d3b90d859391fcfc63e6c0fd3ec27d4e1efd6e0b5ca8165cbd6af25ed8792d805f27fce308ca1d51335ed5d727558dafe05486a6f9149b8d3bc022026656714222830be582889e6800c0b170e48ebfd069e711210e4ac7acf07652a6f5051507de68aeffc9540cab5cdac84ceee46059ec23820c04b127266c0bf8df0d2b856be3377ab42592f495980baeddbeed3ba707a85dba64fe36941eefa8fd37204ec8c18df3852febd2b142b1c9a5cd0f9e424cd408ceb7788270899fd793db99ddb8f9ca8df550c513790d8bad37a1d1f4a62c4527bb64c677462c9b093582decea70c7bbe873095536728e7ce05d5cafb5d166a1f03055e918f787fb244c5857e3d7a1009bd37f30f165564a082c1510ed19bb1633811a76da70dac67641c2478c6b335f409ef54a2d0f370c9510d0aabae3cb998bd023778375cbf9cf5ef125afd584c11efbf40bb51839aacd3016e5e4d79f134245f952dbad617c78cb6f5712bd9c0c7e1303db5029640cf9b56e29329c3e6a9e0a2371aac1a437b9b1c4477ec9842aa80eaa22c5eac11b60c661de6ddbb088e844293ab8589c13d938765bbaa44301e4137148dd0257bd4c8c766c5d3bfe53671e9417cd1b52f622870ffd90f4e17b7a4ae1b5601a2edb032e353bca652fb565beea6fb0b2cdcadac71794c662677fb1dc81d116d94f5eced526b37c004b95284cb6aa2ac415754a1f14882595dcf4d3f1d905c6e8c12cf5a9d23d3ab55bdaf9f17d2f03f933e1bab89040753648c426b072b73aee8c2fc0d1c03fce2c656e20d4c96803fb2ef471b912267eecb4d6f342d3513894b94d77767823fe0c7438e51f21bcf16f0e98b94b23a10760271281cf843989824f7061bf834f93fd8d2090f70e939700dcb4d8964a19da39a9601a7e0ed9f55f567fc7d5682d55a9ba0e68861756bb549f2f17c10ff6bd2042a80477f89743d3d762f1dfaf230bb502eab6f4c46b26135ff3bef5faa179bdfbd288e3cadd3d88d8012706e19b7fcc6e9cc2699d3ba0e624e715599480d6b7dbc6eeea0d12a9236444b17285fc7794040dd40c2b2ef175f7f3641664fc9bb7ea6d7eb3489d504f8013d64a23aebcb5ce233405f5ade067dffff253f27e926431ad806703e8fab23656e0b7431916d8d4c72a7d831e3664e5f30839c76c8167b76f3b2dc75a6ef48df515e06ea54ca51de2fd9c5eeabb1610b7eef06a2f3167859cf82e1a5b76be8ed8beee2bba28c3b15af6890d7a37226834ec9f63306a0da11aff918753d8b83fe7220803c070db98195d6d18357233f5504a6e3bd6f30115d3987f93aa5d89aa0b8b577d1fed94da057a6f088233efc0f44f86798896eae9ad0b20c8c9cdd9d72a3f02213f6797800894b864cb44fed009440fa5b0197023929f9bad16f052cc2d87327788a68b9209f46fb4776b092d75713048b5453ccd699d19cafa8e9a93fdab0f0863711916efe3bd81ee71b8e0221e12e9ffe2f6ee1a4dc1a8de6e593480f3c05b3691e916a4a7ca51971eb2f0f693dd10f6b8468f8cf7bcce285938b5a0a76ef86acfa2990f88bdafdc39a065db17b845028ed2b7a9e331c44217de20440e406868f1eca818d0be20248c2948b8f4cb118b2e456e585949139270f57c54715f3297bf714aa7c5f72ed8ddf6a074703ffbf95e45bc81a02c42822c22d2b718f2de5e03d687a4b18d605ef5ae75f9d43c8cb4e77aaa0c0101d978120f29574b22f52783c667f7daab3e1f9cfacf2e68e94a24918e3fe2c4f061deeb64891b5217fe5908e7f389897751839982b7fb736fbfb1232684e93123611b7fc8fbeb74f8815b5ae13240051920f3b6ed34483ff673c467ed7f0a8fbf619796e485affbed0697415d2d0598ba34d5b9e44ffd12a5edc323883a2e28efe9baf860324f2d2016748503eac1888213926b0e0f0335a4b51820a2bd3b42d982ec6ce307b453b6385aed7a735a1e98479394147c40f01c532926e10e1b26a5b395bc150ec4b4daf5b1436bd0baa225583ffc9d9e9d8a354f60fded37b41c7c051daea04e689ab2d4e24d7d07c75c50ccfd6a527e024d1632246c6f40f06b86ffec0b29cf894b665d53d459226b93422d37a8da23587fe884dc3c0f2fb55dea296a9a5b9a0d101f186d9fa6288c912202547cdf958569d2cbf235740eed38d10b0025dbb6de31058e98780d22149c19d4bcaf06dd7353fd91cd1f47e47f45622e1472542be2f63f463d253617eafd4f2ad609f9020884905dd5c22fba53ccc619104b6c0203a7f6c8c26fc80ff6fceb8c0c51600c2e46b4b872e6d597511524545a76cb42278b519d911e6c1320e01682c551e204ccdf91290c52e0836167a5685cbb1af338eb794c10fac92950f3f7956acf28f1ca984e380bcff9876b0c71dc7ce4011d1d0f955da9ca885c6e7bb74c6194dadb0fb9146dd725c8a9574aaf3824b727c9be3fce59c35850b162c17d3013689fca858a0a51d81cf4f30d6a8705bbfe35ff03c34cc7c56aca32140d72c8e8121fc71353596b777b266d75b322c9a97fd2c5d4e2362f19c99de66da7bd9c495c03d9a15b28431a0c051e786fa80f5503a72519e6b419263d72d553d688349c0cf30918eba0622b953a0efce4415c29515c26ba15f00e548ef108afe3f8194aeb965e5e4be94f10df6c45ea5c133a8c3398d09fb80f950b83c1866a1637d2bcc195e05cc32a9233b244cc2b1d4930e66f032cb1163c37b3e58b576ab76de759569797fa9b8bb4fad66aaaa56f09c7a0ce4641d6799d7bb47cf684990ec1e08871458c211a353ccf1285e7429c7b8520180918f7 | ||
80 | |||
81 | [L = 20] | ||
82 | |||
83 | Len = 16 | ||
84 | Msg = 8a61 | ||
85 | |||
86 | Len = 104 | ||
87 | Msg = 37487aa02b03bdbc6bc62e7e26 | ||
88 | |||
89 | Len = 352 | ||
90 | Msg = 6ecd002568bae3bf1873993041bfa292eb94e9ad092d8eb3585be82e8a20cb36a47a06e7a57d301268a4a533 | ||
91 | |||
92 | Len = 504 | ||
93 | Msg = f6dc1d2f6b8e126d99939664693d8709513f97d730074ec2794e536d94ede79c81f2b2ecbff3c2c26ca2d181ada2c60050997f3bb087ce48d956c18dedb227 | ||
94 | |||
95 | Len = 13976 | ||
96 | Msg = 07a6372c863c7d7c6764e4f05addbbe161762735dfd2d23bf268e2d603cd28de9c369ac379390473e1d3fa7e37af1178cca54fa0f782dfbe68070952b93462ea46c640d43ffe71f5fba42df98f4c48ada0d8aca8753e0731508bc15dff283178ae5c10a6ff132eca5dde63a78d3ac94685152897828eb25a55fdf140fd33fd4e7b03f283e201a1baae8986d25603fb0b2566aab345fb48031d648144dddc2e3556c0ceb1104f348d96ae7dc0152e45c625d21b46e70c31f250c858aec4ab2cf5e79d8c79b0854e0abf5330b9f044113d306161968f4ad6f0973160c9dc296056d5a11523ea2b56fbce8387070fccc639ec1c65ec663b9dc49aa880dc4ddd3020c9d44ff7e8cab6266e436af19b4ecb82010a0f8f9469ef380034a02e3f50051a6a3f233dcfe9d553459dc1bebc538ae0183448c9405c351271dea808d908480e61e9793cca111b4cfb9874b799626a1bd9a0f6e0929ad51b97ad81b2438f5fc255db3a3dfec9f0d8393c6b245b03d3faeb58021db3ad391b17a91174a66db4feef1b4c889699bcbea7928f4d29be2d47f76455c8cb1dc7da9cda41962a28ad8cd7b39965b809e7c7eca1c6792c1ce1c8a4cad6290170e91fcc49fa5ff64ab433b4aa081c8da2d9bbb072f9f18ca455469b946c877e3006b34ffd2219335b30ba2e0980f43cebfb629d0b11fe70dff28883ca012c6ae4855fcefea20a08e189eaeed7eb36ed6db3835976f4e60053205805727c5eec15d0e9f155637a9e66268b9c1c302bcaae6ae88cbb8cf1668a487cc996c4662c4a4e195f094cb31c717165e0e13718f8388957dfe0bf69c70cd0bd763dc38c530b67b9c12244fcab8bd13f602de848a2937699f9ef77944e5f22e3b470601789e1838fbea9359c733aaee2c7082b02ee459b7684ef9bbc200da4b62d368351f5520a65ffa506dc9b097117bb7ae88d04d85fb525e91327689ec0fe86971480c0e864012b1e9f044c7d80a4e48c07320dd4292086e4c71d4c98dd826a9bfced112bfa2beb1ce85cad204451ec45703931bf637d4fe89fe8f485620b7f4b21e011a232ade7a8c92be77925e878ae0bea9723749528fe83cf89ecb9616dae6ca0e8d5754ec6c92abb21108c2f33cdc18c6887c430b72c5b193356494cddccc577bd4c2cd53188f352846edff0c2ac7869cb74bb16a77c0f0f194a7a9477ae15abb890bd0bcfeb0c39381a87f1d05319c7e971c10e9ef687f96450b400e25b4285032892b849fd5db8649cedfb03c88defea063ee144a1ab1f3bf05f59c7db364dc39c11a446c3ce16307d78d50315ba29f5bb9a57438564c8c7b3e367cd37d74b2375a4966f47489dc5448f4979428abd32193d3840aa983d3020a9f29d760fc7493ab2576c90b1934b799c1d0d55e4f2caa78f4ce61930c79dc017c2dea0c5085d73a3b0e4a6f341e9a5061a6658af11e5edf95bdad915ac3619969e39bee15788a8de667f92f4efc84f35082d52d562aa74e12cc7f22d3425b58f5056d74afcf162cd44e65b9ee510ff91af094c3d2d42c3b088536d62a98f1c689edcf3ea3fc228d711c109d76ae83d82d6a34dcfbad563cf3726519b519fd48b51741aa86720836494b7a589c778927047a25d73508adaa401e9a6c0767a675e31c5556cbe35fadc9671359b45e985c3c8af84113989b299ae4474b85e4b5d4b0578ab1e8a2915a8df97c4f52a639fe32272cb91bbfb721505dec46d51383cb8973425a714245c2e37d0577fbe0d66381d9239db1f08a380cf609dc699698e0fada2caeda44d58d766c4f8214b10642b80b8d7d8add7cc41d47108ab7d07dab71069a2d982cc900b331caec317942122158bac6eac9175c2dcba0c04443aa9188832b553f5ca8c336880824d6bc02486a2b4c086665d276aafe3b1b93729829adca50c44466fd5b5cb977aa78fbcf5c0f0da1b09216468a11493ffb39efdeda5d669ae92bee2f2fb250aa1b9cbb11c36c7a6c6dd26cdc3cfd572ffd8c1dd72a13c27a327a34c6b6b3d80fc6c67c72152eec0c8ecbdc1bd5cb829b811e7f29af6d786f4e93dd4c96fdda295a6aa258d7b2fcf291c2d68e0b1866032475964ec0c6f2fa8c2d6a3936ecb187350def4e818507bf157c0e9b33406be7660605af14cccc9c799b4e051d0d0899e53495bb8931a6e2984bc6dbe4e02ec8b4642fc2f1cb5fd5a5520b48cfcb49e1f9533838753554dd98b6a1b8a67409279df477330e5f37367e06247ca5c3ffefd00e693dcc0c9c30754121c9ee88a574915b9e77c104fd2f921c2c096573951407ba9b440423d76bdc6fc978237a6e302cede7f99038ec31500884775556941f1edc30e3a417b0e02cb6fb5bfbe5cdfacf4006411287bedc565fb06f1be987416407dc852254934df4ab59edce476f3506e65be6ce6ddf91038642291fb8e92ba5b1f0b105670905a2c14796110bac6f52455b430a47b8eff61 | ||
97 | |||
98 | Len = 48824 | ||
99 | Msg = cd8490c93613bdf1f284b94b330f6d6f45a39c651d2a160b340e2eb696fc6d1c35e88872845190d141c669de92a97daa5433b1d7b0b899fdef2ce74b8fe72a7296a5b5be26d1dc86520367c730c7400c2fa06f91ab4c48a7bf4ae35a5b9acd5296c4fdf7451b0ad9cc439b4e34f11e5d7ef2bdda376f8dd34d6f092b219dc085dd4c4a6308b8808f588eedbbc7af7f64e83182fc7ca7cf4741a341060a7969d31445834c982fa8739ded4555108acbea1666a83da17f77cc42ee73323eb53203e3b790f81c08e94c44678b6538096ab7b09916e6cf7ceb2af85987f8e4d982dff1ab59b0bdccaae1f405a73366b5c5935dd0b43e2d2894290ceb66a0246dc02de728c5bba30255fb56ce8107c3144246c5156a8fe40ada9126adf67227fa56b66c37be63f532516211ca012977b04a97916f201f1baa2629eda520b51508ab4229df2ceedce406dece0110e0a911464f69e7be38fb91deba0addcdb3161d2799c628f5a57fa1dc37357c947681bd9c36f4832c20ac466c0c245de3b250c33282ea1a02d007f03b34ed427631283eb614db4d521f555136e7e42b4cfbee8134c63dbe3bb79b5a8b9f9f5b9f5ac61cfab1c54d197f1e3ba613f251eed616df952d691b88a16466343ef2d0f63882ddd2d55b8a6786308b2257f5d7b38af166bd7f1339d2d8899c9eda8fa86215850ba547450c267eb3c9147d96c38161a69d1584e521ffa23384313a1debcd37f72ddad02adb3cadce7ee34b7c1f42a15d0d030487daf9488aa7562845a11ee7ffccdb38b300935caa31f78a4ff3dd93403cf0c6a16ca611b58c736aafd33d6dc56f0f47878211d26f6ab801b9453a7f74b44593dae0f047ddbbf2c902891111729edec44f69a05944b18e7a601f41ad24fd6833da3dbe3029bd390de7c9841b2ee2b079b2bd2737518fe1bbec88da64769dc36e4a8bf716c219b2fe059d7dd220c1ed2c59878db5bf8b198e0689edee921ebc0cd2d3853fcf57c363050ce58071c5fda6ebcfbc1bb62e9eb956286291a108bdd4191c4ff47900d6068e1ea26b487649af119b9bb15dfed804836f2196cbe12d8fc86e3d7ce89b52ad49dc9ddbce5b370f73f512bedd853039366612453733740586d1372143b09f21dd4dbe1a2bfc308db8e4098c5e4b0c1e16141ee50e85fafefc4e2529b3c7252af37aee6f86e19df28871686107d7d57dcc812bc077602642d2ecefdd5f694b8f336913210793e4068da2178600b1f41cffb5221c9b4b6298afb47e85701d7b1a44241679d8996f916c81ff437261cfc358b9ec42a2ce16ca3bacb8690d6c1d91cfb3e0bf1e7ba45bd01606df856fd03c7e946f7ab371a89e1fde86d05fdd97bd7b1c583b04c2ed2b5f6815a460645e4e1b4e950bf6bd81dd0352d1048df85266f1696534aff5b1cbc17f15d82cc8e0c0d4f0453f9439094f8e0f7f4bc045b654d9a2f1f44a9c57019f63ecc41021c05b5380675cb56ea8bb691d79ee204d2c4edacde3c1fb3f4996a11d84b035f965e74009e2ab80e2c7ea3c84a834d4971a1e9cf423e4ea67ee526eb3c3e4c2d7372c4290a0741e1fcca5ae4cf36705abe98ac81e98a5419baefcaf3093a7e0449ef1021f88ffb7ad21b2677e41cdda12025b06542c4b2564f15e0b99db43b7c7020028bd829372122cd910227cb07c53cb58fd9dc620c0491f3e2bf883fe6ee8cb1f5b73767977d857e4513e8b5612f6ae4b56014e6a3ad2a065b65472212e2f611743484cfaef860999d1dc5608c58412fab888ad72bb87dd9b55b692f31e252daf8944ec5c02a5a9c23903c50dbd845f2fcc3bc9806af13ca7b025cabe675195b1d56f3fe7d7bca12530bcc0af217efcb03a218bdb6f9726536ea902c8303b02e3ced22be59753588b5f0e2f3419fa5345a942dbcdf3010465384a225ba26cdd0f1d74999c69f336bb6d01fae5cf81cbb8c1a7a29c1eb83ca6b51113bde56b8cfb6a5d72557622a37f039d090a689accd02b57c691174338de8e05bb3620c079705c969c58e56b079dc9eb44eb0fcebe548f5a31f4072a5ed56a2f03107bf40a359b2601eddf53cade66f294cfeaa40a0d94b9c90d15f61852f295d3911f8ea914d015885c8c64540a83badf0021a416c3e37b78236a2ecd1fce4114033416bdd3a36c18ec13250ee9c74c0fc4dd564b3d24a825802d5ae402a53bacace115ae3bbb329be79d1e5e42dbaf0a6446431145fe49b86a8703c7c41f8985d54f12e314c16ff89351d8addf66ebba2783f2d1a11965182aa0b0dd2de53586c5a695c6265c2b173958da648611090557bdebf11a1e042f089fe98e049f4796c60d26be38356fe020d9ace9008410d53a1bb7db78b52ee44bac364213f5c59f1eac4e3314f3423b92fdd7a6156608111ac6ddf58385ec1f3df12061208db98816ac948d803fad10d5ece2018c60faa13de5e5a9033745c824932e53f4122a39f635813545c1b74732cd55642f19ed6deca1585ebf7242c849bde981572a2199066e9c912b2068c8f1c8b936c43ae95c6e22bd7b80dfea05f495d751107da5928e806d0af905c87b5a0795df146af6580d8f9c6a0e2645686d43822ce9b4be0bd5937c097917e048b5af71c7e7521d490f107e9231ee5bd9fbf0727ba87774ed24cd52f471ffb71849ebd55605996515bdcfe95bb1df3541e7c42da4166dd01ec3597634aa6455d15fe14af435e8d7a55ff1682d55a2da867ae63d11fb3fd987fa5d7032ecefc35d3fb9570940e779e13da18070e6df5292f97f2a281f9598101102c955fe4808a2319c85fdef3d55b19e05bb8c2d3da64bafb67a53491513a24f6f0804aa162c8a7db25b38089373fecc45a0eaef65dd9be3b4b7f9436a5423fdcdb5a9b60138fc6a2261225390d9ae0d8ab7f0f7ffff69dca06881d33a637d634358abebb333df41151f239add91abaafc89070cb2159ce3a31655c22e4696c9fa7a7211d1251d4bb21ea4a321a3dbebc29d97f526251e40e548dcd7ed07587719a266f006179dcd22e50b3705152817057b097b043ad63b8d867edc20aea9b4c959ef4ff70f47128cfcc21e31f17978ecacc366f459ac1cc459a3976e4173ca322675f84f18036119ec2f204c3fb554a0b72f7e9d8c882ab147b3d280ca9dff7b9160b1b437b901f03cbc05fe05c6f44824b48aa8da52ae7dda1653fd500f9ccd221843cf76513b3b74d094f14d93a00d7cb954bc4cf2f04f9a35e38edcb1e84f62057647dcb3571f1dd296ca1e049f1746a8a282e85138500e7649db756b2d2ad88f11c471c89dc6be2cd43481013b8d0ae83da2b855cea7be424f8b2325b1850d1fdef03e765458df4513d57c72ba9751e1edc3c4e7f97e3202bb46eec7be89871ba3704aa6c6fc08851e551a3f655fa1fb798d12f003faf31c56b6df399a5dd0ed29ef9e4139dbc254bc5d6051840a859eabaaad56324588fae881fd638d2b70fb3813402df61d941ab495588e5fc3823249bf9a03cf877902394f512de118edaf98843a5445e9073fcfa409df3db0221f1c77e2dd21e74f9e10c9e180dc4ed17010eb949c6d67a22bd5337b2c68f9eccdec778ece728e91353696b742c8f5a3a569f054efb8c1ed478ee9b75e26c768a5816aa6bd08a4c72e745fdb5deb34ecb86b3a84346c1c70f9c16fc45bc0421f0da2f630912d5079f390cc53b78e343310de722b53d2a3b4aa386caa0d7e91986e19c3363426ba30eb5284293af81d00158a3f5233327b40c3b989725ba7dd5b31ac7abf8d3e0b737e843065cd7316dc2f374a00bed4cf9caa0d6e232c854df1bc24c3d484bc6bcb14ec770d5745474dc6ac3b3ddbffc551c9fcc2c56a5e0ae17948457c01e701bf1554022bc2b7d9dd42b2b91172fd85e6874d2d61fc7b3bb3cee2a9bfec09f6d7e98279c6f511f4140b116c856c1438e34bca59fdca2409f025b896a52d68719bf93e82e7d89bbf798991fda0af8d06d17f39eba4bca09c1fe594b537ad4c9b94ab52c895539d639425f9146b24b016368a638e5bba391bc8763cae7c52ff9c496884f1d84e5e08ed451358ecb3c4919dd410e82cac35ae744078287c05c89b42999ea6b8b127d40d53a5722d45139e8bc507a11e7add7fa9ab12cc40afeec008a4668e3e6440f27bb5780936c0e3668ac51262390c79b3f21fd041cf36ba3522f3a552714ff188bfd554c60d0e7d11213cf7d3864a5175d4047c2f3284741f18ec22995a5b82bf62190151bc1529c6d9927f9b0c1dacebd9c2dc406f7f64a973f9a70cff6e3abeebeb46514bbf2ead382f7262d46bd43d88c1b91a9011d1f8ba81fa536a7162aee2b2ec6fc0f2d6efc87b98d2e41e0f946969da659c21053775ece415a34d42b6cfd5bc52259867b411dfb991461ca618052309ca9c96468c2da12dfab0e822ff3bbe7ba281982a239ac19c47024fe1f0e3550cf0975add1f680a9dac9b2c4ab0aed4f409ddda6765eb8a0a9d1e9d07458c69ac8195541219b18efcd06c0001f2ae7fee2d404666a18ca3cb3aa4f0623e86c5b1229f6c2ca28d951111294b91edc52730b6b2c46e000672a7c89b2f38045bd3e37dbb8a75e18687a514dcf740c87a34834d3c3cc8aadf6166ec0c42d2be92f90a3af49633ff23cd80848ceb57ac550eaf9ae496bdc6a2d7cf50fe107895b4a1ed014f78af24eccd6a07420f1dc0df1e7c44b4ba937dd43cab9c798371b148325578d61931766af02b45054bdc2d9fcab2f4b49092f6fff7c27886820739d6140a4a905f0020249e8ae8dd87da1a1e7b1851eb01045aaa72dc8a2bf68055e7aed41d85336648a3405195d2ab61b0e29a770461f32fd05e14c17d72c5252f026a7b9abe7ea9176d3c46f6ed9fb716758d97b41e4f5d81a24538f763d83eecafafc668422612b40cfc32b3354b24755fbe400a2bfed494fe6d0ba0051713b776e67e2f1915e94708e6dc74b398f2f526933aad8fe7dc32faf40022606aebb6e0756b994c3176fae7640ee06d6c67bd54764c4752f1bf831f43e0227cba101174c5554ce26400f333dd8e9f6db1cdf670ce407d7d06c3aef4c0724b62edc8f1ba3e04f0e394d15a73b9255abb4d6ac70303dcf9160d32dc02d4804219ed5c7e3b48402e58ab2f58305f9bb95d2a8759947de96328ed5234cfe7d0b2a9a014df7e4cd0ae48906315f139b8635d2e6bd4aba32e62b8906cdfe5622c411bf0373d0cb07d17bb2bb5b83eae4401c243605fd1df759fd0ddc704ccab5a9776c40fbf6bde0f11b9646c699f26063a9550ac228c9884c277bcadcc0a2c225dc203e28e253c4e464b23d2529d09c7b7dd3c984667372472b615645f294c4e3b0797f9d1c234015b78502d98bfc04f1fa2f16cf3e7221d5794d035e4b172a4d84e679cb1c82df2fb49d3c6668eb1661bed56705096c2371a19d668832808eedd9e5b1256c18fe7ccc494e5e29145d453c553ec86fb7f3a634d0d45661875f2f1005ba5e734c1a976f37cd23450e4606e32d027bc9ec2edd9395e14b2082179bd7b4f9b8caa2d00a2de71d48553f7d4153cb56a1b08f11925e4b11c9281744ae9171f3d6faa3ab3f88c5c34fd23e4f6efeceafdcbc07686ef56efa62c0ad62f1cdcb4d3b5bc508c1f05263bc347158fa5495828f34eb7fcde98fefaa82bafeefed3f4a58968d751c051b52e0047f066de5be533bc3b1e439ab1c8602f6c67503803c8fa113737cb8279f358dbacdf45432b7a654d0e1122cca93420e956661d7275181c75b0d9c20e84c7007dfc49f27bc00007cf4ffa631c892981fd70141d532fcd51de5c23fe0b7a186d0dc296362f235d61698740cc315891cc9342da17843bcde274c17e462263d0e8b4832dd9075a7bbb443d4b26b41e534ad5551ed5ada102175e695363fb48d6b99ac978a3aa6f405d87f983384ce35740e930491d75675337c5dc081e3d301228e61bde5cc169968e5b4350cca2b085f9f75cc4b88497a78cd0a0073d90246c7dc102c7cbf3516498e8a41aa85d8cc5bc285ff66e8338e85ca83fb6889e2bccff52059bb9e92e92c155a349952680ffd0a3c346061a53fdf074417fc90c4d1af7c2acc3ee4b080752cbc9455ba5931b7e910f1e4af0efce905d2cc9c685923ead387fa532c0e8ad92719c76c281cd010e1acce500ae1443838b8afb48af032069dd07aa4df0d56bcb70a64592633699c8658102f1fbca441325e27f1732a7a973d8cb3a0684d72943ef6f1892f2d7ccf39bb6dfe5801ab98653bdbcfbb787bf125253be2624f6cf44177d588bd7b780d9e3f4e3a4e50b8a253fa21abce6a94b9073289c76773b46140f5a6e46b9de9ec066c176f5d1a69f380e1901216617363362d13ebb26ad74fb008ec08841550ff14ca800a1ecf2e007ebaad9f4e0d9664448d60ac0d8544243129fb81c1723b9b4bc2ee971dff736d9fcde0afbfbf5c50a4cc06a4c363998326c17bdc9e2508651dedd9a2a52bd87f8693cfcff60753acf9716c526e8635f12377e36564ae55d0fdb3c7997ec4dbdaa5b4d18c7b660acd95060831795da7d299a5a8d8cf9e92537dbd3ef7f56aebe38fa97c41da6bf0572a0270be7e5a7dcc0be3529339464c811052b65a938e874ea6da469c7d8992ce0aff1c75e82d1621ecb967213c65f2de582cb41de3804c507ddfc708ef3f6096ba4491e431160f98de806d0f334e03cfb7a3bece601099bd971253f3aa0df845da8b478603d5d88533d0cab9c89f2dd9a1404cf8939ffdda652a94093865a85fce2bc3d7babcff7b9f3306bd76b9af80c78ad518f89ee73b7a710da604e72f4927be8d65d06be2e0732fa786a83e27597cfbed9bf98df445499e0746b9f2cb9659ac0a9cef433148521f33b1d78d13c8441c0d1e20fd93ac450a3787a2292bcbd68cd1f961d34937be9a21abaf26f361bf53aa0c095e53c51f3e04d567eabe6e40d96a17c2bcc9230b18f7e079bc549a314b4ae21d30a3341aa205bc75c7f1d21b0a49549c300faeda243d0ce18da5e66c5b663cd705005dd9fea0a9564174abb797d64c58fdab1fae44576d514b75eaa31c9278b15bf9b6df7c6c2873d7a56fb91ab77b83761a09f9e1ddae535622fb87f7462256a60dd39dd3ceb6690b0272920b635ea639daf24f95462c523e5bbd8d8407c61163ab38877d5edfa04c2a78d4d240523ba97c7d01c71783f8748e85164b4dd08c25506a4ed18300b42b7bc6e417f512ae456ceec2ffc83190991a06d4a58ede215babcd3688e1d61f1975016244e80c88ae2aec05c7eeb1c50caca72b3b415b6b870bf5e10bd1ac3ba6b4acb1d1afac554444d94c97e171005fa4ea9c651bb4e527ff58d0c2f90fb453a92d6546a26e9e98395b09e8471bdcf2a145aacb649708cf048a7856ce8cf390c107ff2c66efbf2a76c5b041860ea576103cd8c6b25e50eca9ff6a2fa88083fe9ac0d1fb639c516b9bcdf23c34c6145a705498ff9b9747f15e1c08c63da6efeda4eca02c3f00dfec06c82220c9de840040118dde76be788daf84e6a2f44c81fe6defcc474f99c51c4648d297cbc48f081e0809dbda505d020cbe865e430e0491644ec8c52bd3ab8ce8c4862990f49fe2588caf804ce9500ef42d5a50c057c257168e283e4a4aedbe4ccfaf3eeffb212f9e23d15434d60bf4f455f512e2b655aff3225d1b217c261110cec0400f54dd303d6231d028c2eb649bccc91d30a6391c88bff9d447c3cf35a3467be5957e0ea4d4dc237c9f2c68ce48f658f820a3d72d559b60f233ce538c92cb148808e34fedf2d648c21e7f2ea29a77270c393bda42d869351d6c085d965dc12cbfd0311b8bf604f4391d378781eea3b5f1e0da9d0d8f8de88e56fe47d362cd46f591d3ec0f7cccb85a21f21ddcd4107821ce0ca9ddf99dfdfd9b0c9cd45053e5b1b4385bd8f5b227ada31b5c23e9420014474e8b4494fde7c38edfe70994d97b8cbdfac588df49a49c472fcce78cccc051f31cbbc1e0422878d8d490f3aee28adf1587c38fb7e7d1be54abeaa83cf54b633803a5e669ff4295df8735231ce39631616bd05e0e31117c722c2fd6787003b0bc7fe422a089c89329544e085d71102c1813769450a9f66f160d1702cdb17bd2c6fdf0f722762d193ce83623eeffab17b01b10a31db6e2feb6eb3abdbb2e36320e1a56e44e48d26090afa7f65003a98cbfef590ac3ec89b3eb230557cf6aa566e841806aa2767b21bb26fe001f11ae039e0c9a4bf1bf3d271960f16158eb5bd9ebf0080abd8369d512cab2d1aaae2b14d0ff6ee705a38fb0c801a98b0624cc138fc24834fdf430f33e1760db913da3290f34415c9e3df3e97da1780545ab68ac5a24db89f24d62f4a399728e4144a8c89f47ac2d29e30c49b0bcf790a5e3d3fcd1943c6a28f37251d9dd827a69579e6c17b629c927473b5a07b0a29d9562708d6c8ce576109ad1a3473ffb2047eb069beeec24c114bef392c929038c92abd0e6a19b610e27881361824d57008b7373d0ab76379570ded76c9b8284fe2c247791073c29b2fc6fca05019220ab92856892d3c0dcc6da0b597fe559c162d060d71513ebca050d9638164b9ae271fba5575ade787ec5aee8fc253d1b234b1df561db3e36ac64b9b0100dd6b407043537b2b141f | ||
diff --git a/src/lib/libssl/src/test/SHAmix.x b/src/lib/libssl/src/test/SHAmix.x new file mode 100644 index 0000000000..83bcb14126 --- /dev/null +++ b/src/lib/libssl/src/test/SHAmix.x | |||
@@ -0,0 +1,129 @@ | |||
1 | [L = 64] | ||
2 | |||
3 | Len = 16 | ||
4 | Msg = 98a1 | ||
5 | MD = 74d78642f70ca830bec75fc60a585917e388cfa4cd1d23daab1c4d9ff1010cac3e67275df64db5a6a7c7d0fda24f1fc3eb272678a7c8becff6743ee812129078 | ||
6 | |||
7 | Len = 104 | ||
8 | Msg = 35a37a46df4ccbadd815942249 | ||
9 | MD = 6f5589ea195e745654885d50de687d7fe682affc8da1fb09e681540525f04ecb93022361a27759b9e272c883564223c5e4ecafeb0daaf1abce6caa4bd4153379 | ||
10 | |||
11 | Len = 352 | ||
12 | Msg = a93aed0fa5e163a82c9a934aebaab8180edf7de0b32f0fe99f9c75ec305b24609334cefa372c7c758262dc8f | ||
13 | MD = 66a16799d606c569d2fcd70d7d8321ec90ef61711481aaf7d747744ebfd08ec2e7aead49429af7b4ceec6d8e147ed018e034efbe07982699e818db5fc4b1d71a | ||
14 | |||
15 | Len = 1016 | ||
16 | Msg = 433e88eb2f8aba562d15c18126fbdffb81d5d6c9397fa052321f5f78cd629708ba099b540da5451e949eeab8687a8d6ac35c531411cb37144ab5ff6a7eb46f1ab28fbcd2ea0444cd87c57bf7d3c02952dba3d3987da07622c16e7c086d90e88ad3d9d4afee301d2bad915d868f54197b70b23c9fa385c443404fbc9abf7e6a | ||
17 | MD = 790bc4844e9aeef8938df0ccda17890556a4151817111a526a88919cfb172f0b03c216080c1b60210eb1942097f17b6d0691bf5b018b6d959198d6a694b922c9 | ||
18 | |||
19 | Len = 13696 | ||
20 | Msg = 2c46a76a9dfbae1f5e59f085e9c3d4b600c24b2d404d062cf948e75a3d4ab5b137a31397be9eb34b2a03c78367e0b85448891b511ddee1f787cccd498b172cb7e656c044a03ffde8e42478330fbe9c34072a9e99ce31b41757cc820d98e7d564e06694b96b66f4be34c5eadd0ae4e61fe6abbe4d7ccee855104fedee8b451a7fcedb793d469b0094c0ed07c97fda00dd8c1662b44e3ee6775a5ef6368cb662d257be561a5967893433a4b63f97295036a37272176d081545df00852bc5c4162324161296cd51f76433f2df867a5840f2d0c8d5be00b4dc89443d82175bf69c3bdceb97facae2b2ed68e06ae74fef36d8bd1f75f130cba509341dd54079d45de22845cc8e77a022977c7540aa3e779cb1127f39f825d4d78e55a967ef45e7c1dfb02d9999fd15af2914ba47177177d94576f1091a0657d9e04fe81e6be7b631fc1baae66584c9c26ddbb568750d77555c927bcda1fbdc15c7cbe3e3fe88ca13ff12c59b383343c12976708c0e3dff78be0e286dd32eecf20b71a09fee50a9d0b13c85a15b320b162690f399282798aa3291fdd2f9c40ed873e829388466ddd1da42f2de16aaa9272ccf44790cf3c95382c304e25ae8cb2fc9d9869808f3ee7d42cb143bb0c3a55e03db6d1202ca1bdb744e448640c0aa60d3ebbda5c21e623bb080f4a073a48822725d764e51d415aad1d7c5a7f17433d15ac7d849f910c375ee0899f6a576dada42fd651343383f286009902bb62deeeb2514de6af7f09892c20d0b238f6021f03b62444b1e1f21beeb89acfcd7136416fe7bd8f202e76afaf5345311798be7cb25351add2bb044d2380221009c4d1cbbaba4cdc8631dc0144f2778a6aa1eb3d3c81df0b1b2142fce111af8214d049e40f536c5d462b9224a978e82cc6c420e70ecc3cdaffb726a183c793845315f730fa4dac9fe46e4180397107a6a051f7f0a58ceb9bf4df37e1a81c8e9569187228e8037df2e59c52ba815566768bedc8e09d5e7bdc9f2bff23aaaaf133bb5a3332750f6124ce185e29fda0851addfa2c3d52bb6dfb530fd4ee27dd5bfdce5dc2f41debe6740274bc651aecd4023b098a7d622e2296b50d51b79c4e3f521695a9d43f038e8f273405e26584d3db179e7c1758114a3d39970df674580bbf2884405974f0b9c4b0d8b3287a2314f3f81b6991812f354d655f62513c9551b378cc2efa4c3e08b313c56cada52217fb6112eb8299b28445aca8f72e7170a1cd8bbfee4d2145fbe8d49c6af8831c4d4fc7177a50ee55a7b484261504af946c6bd5e1d6b89092f3c487c0568fa07c356fae9b8e831b8320289039746a435b122cfbc4a0d316bf90d481d3b7d979cc50d98c1190af8dc58e0035557dd5e94f437f41fab513202643a77748f76c6b77302bf40c392cd18731da082c99bdedeb70e15cd68bff59619cabcc92adcf122753c55afde0817352bc247d1170b8ddba1ad1b0faadfe0efbfc5fe6334377fa372c3435691f53dfc2ad5e08966b2d3525b1eec2d993a5cd4ff34278bd40dd80313a0727d05e0a932156152f3e11a190d8d69726f5c57d20f811e1e8932e86409ffdac96c6251c2a2976b8757adcac5d2de94931d1cbea866ec8bcba5774f8a7fde792f6acfd0f01356fd66fdf54a416af6a9397e00f848a2e9831627cbcbb52b5a868ec174e69b4cfa1ed72cdf23f39d7eaf4bdb318c188b1f0fe75655e34ad71907cdb77a1a2b162cd7c22d93dc45321eafb17cd60282e83736267b3e1fb249c307d49509f50839942f0f493afd9ef37db053a918e3ec83d801bbdead07554a018b8ba348fe9b7dd92ea7c5fc0e65a644ba19aa1fb6c022ab768ec7cb249ba17b9dda2860bd4aaaa3dc70ec009804141ad5ebc61203658e57a0887ec0fded18d844a96e79ba7e879c4253056f23e205a80ab1471953438f85848f4ab31ab175c089e0bbb97ea0dd6a67385770356741966053735e2cc2ecdd2c8c75cc045181dd7267584b901674b553082b2c58fb8f8be0b99306194a6f069f684535423304d40a268d55784a14260fa9c9cb1306b82f91cbee3c9f43dea9e50903135cc1c6505605a100bfa28564a2057974eef0852b7b72ce264815026d0759f691db618ef760edde73ec888e181403834f7221bb27a69479ec9b28a3fb0c3f68d4467d25712fc48ad78763f9ea6e8a2e85260225ca1b1a38b720e589fafca29f07257c5467cb74ee53189b8c81b784c43e93f98abde1ed53af60b27b13df6ce45001c6e1813de3521028981086f7d88ba13f6fb1a800f312fbe2f842eebe847fd760c394668cfbfd353ec14ca0366eccd7b4cd63318116bdc42e20a632a0d2b8c5cddb37bfc0a239ebe3800a787d2ece077a7968036b3d9b31cd906f888e3ed742cd769033e2c24c5a9e3c10b6d300db5a17dd88 | ||
21 | MD = a86e07bcd19080d4a83e1384bd8189f60a7dd7a6998406ade0bf03f805375bd823c7656dd51cd9d63e542f8ade41f16d73794d60d0906424133778156ee54b95 | ||
22 | |||
23 | Len = 100816 | ||
24 | Msg = f8ed40e878dc68ceec52cc8e2868722310fb117ca3a52e1839eb85d308b8aa00ed0bf0b76aec8a70eba4f0d14d2d85c5a0e876ce2c8ee59cb36947def6c40a587aa07b368ca8e8a08367018e45b984de0d7f1aa46b977cc18c0cd9b7bb897cbb2814aa0ce8f8c9843e03c86c19f2ba95dd2ac4a466a93aae4b3b05055ff148517ecf43e286c57744a3e10a14d0c26e139a503e7927aa688c78609170ebe3b54104390e5f6cf538093a67922e7210e77fcb584ec9b6844e829be246a266460cb442bad52ca47255fb8cfe276108c36e02f9acbd3d191d34b93d29ec40d80496d1c1bb5ef036221641200e905598c54bc4abb3527c5a5f6258e59d4bf54a0498c108a2725428efc2047e0096b32dfdc6ec69d5d72f81301f881ca62a66c22e5dab9fd9d90084c0a36b2f3a0123cc5327a3bc7a12fd947ab57169ac533e4b6a2cb80fc65b9b527cff9fba26994c7fafb5102a0acd8f9d246a3a54178c23eaa04c0fdfd3c0cd980d1fc7a72b25d74df9b95c3dedce8ca316870c654f9ebea9b806da9767cf40605a4b0c7fb06f6b3f197bae7d8cde9daf38530e25bc51b68f9aa23ec0e95199b14bca96c91f3db15bf8432f714dc46ac87218691bc66cb3a42f6865e1c30f8394c8e68c0ddf5851ab7c5906a1994a9af6ac1c44d0d6b95ff15d9f77825ccea40fb9e516d45888f2378e045d95d936d541cea9c8ca52fe5f7d0d919b2b1c59a42d06105ea4f2943c05178e59d67351c5b2c0051c93a4045e512884fa656b772cf398af89081546d920fd3d24ebd16310506a786ab33293027394c1bcb7b1efe46b550ac28529646e8d2a5ae65c59345e24b44cd7b06673f3ed3b9008aa568a739c26682fa596b7a655842cc6b2758b583487c78d14a76bdac7033806c5c210828ef313f8efc4072681f5fded748c31a58ac933b4665c445f07d603e0905e49b84aa55146eb1c1c99196413832a05efee2e64d6732fefc629b79b37bb9390fcbed7226b412204bda523b8b8af5c4a8bdb263ef9f3f6c7b9e1de3a1dc257c1f33b3d54a9101be5b4f2a9db319993c2cd137c41e35c434ce52e859afd1a635af4d8852252dc5e28c729b2b4c96a56d57f3f3854ded59fe612b9b3a51fee3fc1c83db673b0cc7433bff2472bc74a2eeb6706605e308690fd072a7042ca6474603711d8310909e47063f46f287260a26c4f11fe492298a0f98d28c45948a4899e08fcf443a6ba36457dd8329314d53ac0fd0819fcfc3357426c5bb8d3dfd706e205a81091cf08f31cd3459854f3d07e503991ba5f067e3c406c6c5396d8257496f4ba3703cb1ba25c2fe4aa54577af782cd57e85a88a2d75c54039e8b7bb559219edd6e81e41acb6d575d6f798afb2cbf7f00abd5c9c7b0fceec79f9a0fb040ebcbb7bff3602df7b71357efacd37aa57019350bb81213508a006160acde3dae5c42f03141887eaca22d7b33d6791febfb619d11ebabb13e6c5378e9a72e852ddccd31cc53a43275966b7042ddc51485ca20e1c456dcc7020cafb5407548b044d332229911fc74d7fb97de25abff7efb431da82de2ed7e25d0dcc06ffc74e57ca93a6a9f64d76a5c39776fe2266f88d6d0229b527525fd2e22a1407e26f94c5bc6adb1e7327f3c8bb8d4c983385c579dd8f5623df8cd6da569c7de73d9210e6b9253a177653a13ece075940fc81016d8c35fa4f6542df5120c174158ff32533476f4e059e35117081a24798fbdd1eb10f82809836f8dbefe755611347f75423dd8571695960c6f66cca71f0a01e8fecbe1183bee3335eff10b4ff8104132040e2145ec3164b2448f60c730887b9d7894e5f7df3f876cb17136c99cf32db1c02fba860937378dbd093c4c5112133781f06c8ca07c527c2c085e8ba5e52b399f2909e217aef6e3035ecafe2caeb1004069dea023af7eab873deb5ebcef2313c9827821bb9f89fd3d1570a569673d3ede86a4fb13dff242eb98450a8917fd8865c56e0a9f11d72394b79808b0429f3a83cf2465161596887fa2d557b367a1de9c7753666b0cca9c30cba9f0a749c03c55cdc7a6d45852c76ce2010de3e7f75d95228efdc79949b238d90b25f983868b7f07f585f7b00e45d9e132f3c09ee84f794d899759be3dabd46a256f4cf8da71270617cc2425b24cef25d1d2f3945afa6f81abfccc858cd02e05619649b1a5347650934105c02622d538447223d136a8a0455cf3c6f61f696b32266197b5cd1d936fd3ad4288520fb4a2f59bf95e659f33210446ef18debeb679dd99de0c3c74a6eb3dd783861f5db4e94a151c42ce27519d0bbbf1f3b1163563ec06c8bfd881d94a3b896fc07352fc97ada73685588a2242da1b718f81bb1077bc70fbd58b8b52163489ae403838b533851bec30ed0ecd97d72d1af534f3703db59f1f563bdc39d690a0e90e545506463a37e84974fd7b256bbb912cb4077d3e3f5bdd4bd2bab713b696c830b1f2185734c4d2dbd49d5372fe8b813ce73f5e01c36bddbb376ef4541033f2b0355613eeda8951ebf7377e08f967902eb7e23c0fa798c6ae52401721053f1095cacb1e9496500e83c412236fc21566090b3a3eee55aa402c0b774802fd81c9e8579761cfcfdfb1aa23786b2dc35dacd5ca8d8d283369f53e4a5db18060c2c6b0c303052aeeffe169fcaf7ecc63090a9ade245045ab9c8aebf738772297caaef5f857322a597846c7370083d409df27612e47b0cb240daa3cfa51c57108612ac0dddb0f59791289ccbdb3a2cb1fa9ac31a23dd5440682fb373bf0c1f41c4fe2185ad7c53eb69552807410053b0c2d40132250e637b8c425e6a35d93333b5b7d0557927b6179c848ec455fd1ab38348c0e96c60b2da49bd15118df64b6ce4fa48fbc555a4b2874141718e731a40b85382ae6e86ead31cea77f83bf5c063bf1febf71688a832d615e09d6f14badedeaeb6ffbfe343fc7274e78cd46a2aaec0a349c5f133291ee57cdcb65c5474e46294de6bb50886bce6c6f44dcb95f2a4761ed2e6c9e7bfed51e0964afab4e0f7e0b07960f2590baae66b1ec9a63ba0fb6c0d27e81508c51487dbbdc9beb8879fd58c188dfc774b3d0ddbd77ee8bdcdfa0ed8a9387728e12b13e8b3c10cc1c132bd822c2147c5ddf9a993aedbf78ec256db1be76644ca8ca7727208bf89732657152d34e948d73c47561d156f773136684d4162d02260300020123d13a95f4f835907c344942ddeccafe2abb7dc4792c4f1e39c24748c63cba933b16be0b8853e058c47a1ae2c4dfff39ec2339b345fe3557d03c1df91a0607a711636c4416ffdb73532aeeb74f237ed8bf971388a0659e4682a46b8327e751034cbf2c87c7828da9d24baf07a742ada34d1ef38ab1e8f2b4f801192c146600709533e61bc2665dc1e9e6441bf3c4f6643bc0c102a10f9a69da5b0e3d0a0c7cb694c682493032b5853f02953b5c2fc0e1348565389762fc2dcfbb34fd305f2d9df080e859396ffcbb7da78aae0a0d72e3de76c774bc6a81c87f2872b6afe97ced5269009304a4992c4add0bbe24e57632e19ad0fe37ae910193aab0aeae32cf6d618ab33eba59f6a04fad00b1d2403396e6fa661d31b695a1b349d62f56c08fe6c6eae7a482177adf341e51d03ea511d7959c721bd20bf371860ecd7fce1d25212891850b85648db0a039e6638d9c78bc958add3e41341536b5007be63fd1f7e3308876bcebcb97dc3b05a7b2eaadd00f8fcc8dcfa7b961bbe727c9aed1626ff786d6a0ffdbd1002cae8a7d047b6181962a686c152b2341c7c58c9f1dab5af424d183ed1c7d003165a1d04ea3683ff31a0f68615af6f91c21f736e67df641ed31b998445afadf9052bbe004d5dad08f62e5d353e42fc35a92242d8414d99dc4e7e81c8c027af686baa5c185e3f99abb3855b22cfdff0a62e2f47a632b7df8e00e0317af5c24ce7c64077bbb15ec27e062070cd3eb8e549ed9112469090ad9a96eb59294b021eed81987178cb2dcff67a9a2e930f6032c753e203380f8a7c987cea393234699de03a1d09ce204f0a8b6d5cf522b6887174fdbccb08f3e7c4fe2f778254465b32766c48812a45151ac37ae354dac87419f9476baa27e24b2f322b2da4ddf579750684a5881bae2269351fb7de59b9d5a4badd8951135f2713dafc57215dc626ee170fae7f20bff98e36b864e1fe0f0f9a300c903069bf0e0b6f2f8e78423cf6063e89dde6c81efcf26ef15510563c84730f611ac879a6628e55115e1a29de6945d37fbe4f803fcf2e344712d9e0d6f6c79f8773a9f199b705235e20a7830ee3357c5dca29d7a6c29a3d2628bf2c42c8f076cc4525301d8e1860729070dc53164d9fa08bf63cc889eed01b0130a7146d860bbc09ead3865a3082db0836a45f5506c3e46e452e298764939226cedfd06700e4e33c6b4a78add601140249596831e97f960b973a4e4dc3fe2813fa34eb47f998ce57270368fb81719a09298a223f7e3931ce5cdfab3f658649533354e982c87dc9e49eacebb5bb4af9a767b4f1c03d774431168cd4fec1b2726f1aae3f9a062a825f3295557eebf3af4784487b869fb049de44d03fee71194fc200af72103b157431935b5ab9bc122773ffd313d52d7acf1078386090fc011de695e71567cfd51c06317d4ff8841ceeb74ad35f4e5f4d20921123cb88bb2079674ad39e133cdfd6478d69c9bddc7a818be5d7b254bd9e0abdb030f52846fdfeae8ff370a51a9c5f6017af3c6c3db17c5c614ea18ab0e3ca0dd5de621217dffa36e5c5318fe191040a50cc3ca620683bc34da6c142e1c50afce28a86b8b66d189adcd755561a647080d93f3ede1cf54c3afb7e863fc8a82a2576d3f79e9b2bb634e598507a3d7d017e0176b7868bff3a3dfb4474b3ce03c401f33929364e727fbf8096b77eb351435c7a113b3215cc6246dd86f1517a7e550cf828900248f7c1754e40fed62477b296a37d3e53231360d012c4908b466e49b0e620c0a5031228009f259b030956ebd70e49357c3c3ac2842b6bd6e3ca5a3e985dc03f7105681fec03b320a7ca753b782ad3b52fd9c8e3bd980b48dd6ec8901dbf756108e85015821c880416e0693e0479cb31c0743450f6d9214afabc4feadb9bcee9def460a58d3a02d9e3039970068b8e3fd0a403a6ca7f2c71ae2b46ab3c731b1e65e2104c47fcb1f69e7c8c6df8c09b33f2e1cd4192faab316a44536dcac608832019f5765cc5240eabe3c87445c980c299a5e7ae0acc2c2ed19fdc8f011515bcb00476b03633c7669db1b44f97f6cd402778e9687c740dbe5686789b79d0b13f784a2a866eb91ab2d66f064c49e8df513ec348fd7272ee548ba08e1f9f99696ffb53677550d59c67f88404f6e610455a422d9cd987493ca5c366a397dccface2bba8e3e99719dafa768956cbf6fd8defc4104b8925878716a0514f70cbf3fa2c2bc2f66fabe654eed3076257e71117665703eb88c79e4c2b94e8e856e7a6ef90ee2a358409db78b98056ce1750eb80725d70e35507fdfa5933a61496ba48fbd5555717b33b59d4ef211fe096aefd478859ffc97a41372023ef114adcae5a8d5e03c21369baf1e7f417cb40326bc6db1cdf0904651dda3c1039a2f1755e7c329f7c03bf33f324206ce6e1638711c8c9a45f153aa1f847cca2a5d3af1d24fe7a1e1094819e8e712cbe10ead1012b7371b35cbcc2bd5b10505fb63bea20ac81d25e83ed0105e7595b6c28400f4d336791ce4a584323d0b455bbed44392c5f86c9d5287593f6986d4b0b8f9974a7a4157859ba801251d3b44b2bad84f29cb87dcf1680d6d10d1bfd59f0c95fb7bd07fdb3ea2fccd6e3ee80af438956ccfe31e750972f893ea5dcaa26d077fb3f09d990c2f41c8707368bba007803621ecd76540cdb8705435d74f4300eee04710a936f241c034709e625b0dd5dae1f6e86d034426819c365a05f5be420cdf4042bbff965a666a5756f67259448ebf742b6ea189fa17a4c3bfaf651d19a8a525f09d9cff637c8fac02eaa58d3ee3f7221da1e61833c0b183cd9f47686f09597e8115b435454acef80c079eafaa22b18927d07bf8b7c5ebfdec9c42a52b7824d45decef41e6184dc2db1505ca6f94172fafc10731706e79b9856dfede353d2eadeceaf72a302e3492d7dc81e3777e4e9e1f3d33cc4402833ffedb241a75a09e9495d671f80ad3acf06823bb04a92b815edd0ca7d01dcb3318c1ae5c62d3e99c0ec37908b45b51dd65f6b45b34ede2d6f553f60a45e20fafcb34ae4dbd375f52a5db9c62650deeee78e955087c2bea75ede7c304347b171fe0c1a2a033894be6e04605271307f307b2a9cf6ae24b8c87ce033a3fa4cf2bacdfcf54fcccb1f580476c7d00c631a8529a9eea2a713610341e0e25609dc8927e51c58a0a9197a54963b5cb95877354f4b8316df02ed2bea367704a12274d96bcbe0d0d728923a368bb8ab98d5db5401894c822632308ddfd309071fb4b477d8eac0ea5dbbc3e3606d8510d9051dfb5e4b7cdcf2c57c1b76902d864c3109c901da53019ed33cea84b407490486ad9f980a8a63df3d2e3921064afea137f35179130db3351f5bc3f5e7d590a5ab08b5415efbd345f9d57b71ade7dca939efa5a12d677b9af0af14468176a43712bde10cb15787c18bf066eaef8abcdea77d3a0c61d6c74ae7b54fe90940d0233e4b874c9a141dcc740d7fff43b9fbbc012a933d890232cf74fccb7ff7eac1148e203c7381b7f1d1429b1b1152ec25cbf7562596eb402a9328e43b5dc5cae36592da5523f0b9907a6817ecd395a7c778daae85bb11372b20641a04250b77b3a0ece885d07faf9622650259b874536d6d2b92181c834dc111b6fcba483167be40ecc922fb87006f63b9e8e632879563f37a8f712db9fa68c1a20ab239c0116fe022fad1279f3288b8e74a16d447e467b6381515814dd3aecab5c2a09c400b44e9100c04c720dc7e8c6d9460002da6c52004c16999975fef8752c2f9c229cbd9e6446b226cc454bd68cd665668a17328bb30f301e92ef5c7a2197a326df5c99b422096de8af231d1d8872e6e505bcfff026d4862f28d4bb3856a66ced22c9b0587451d8da4230a38561b5b1c69b523a4701a2001382aa82fcbd60733a14696a540227db44aef346d6c0a7ae5173604d59eb828614cafc1b8cfecda054dcc7306f73925e6d1af56ed74c51c6cdb66e9fee8d7a0078254fedb0c0f5dc85a4686870709b499eafbc8451aebadf848b0598ce8f955688bd2d6032abe10d1391d67c20a049841f95d2ee0c8deae2bc1baca0c098d8718cba1ddcd968981c47cd98d247aca4f838f3bf16d092eab8be8deb1f8d504d37cc44a8c96c9f22f2698036d4ad3bb48b31f109626565c147d20a4a7dfd61fb918f81548fb4f78875c1d138e819f6822651b93a3c92ad77793fba5222d870ea671f9cac967919d18f96e92778548415b2e170d90b201215354fc48a77e62823a2c2bb354782ad052732f08beb278f751529416f37d83ea26248517ae2ef2ead28c1077908995a2d25db0deaa957bcab39715283287fd626ea7388abccba2d90e364a7ff4284c84f70da68ce1aafb5be0401cb9d45e085aab41892a49e10cbd5baf2c34f5e0ca076f2772abea6f622b66020d546f8c2f134a87f96edbeb9b08394b585f2c2f98aa792f97b43b5f3aa9c34189804a9ecc2cfaeefbd0f967d85a25bf3136fd8132dec38aa82e4af6ff677682f3b62be27a180aeb22f918c24f23bf6f5954e0722324cccd06829fc32ae4fe3aee6e5a03b3651900e13fb0a759e544d033418b6ed40d037b4549a0404792c8fddc317b7f028493c4c91d6773932f8486417544f3d007e5f9e6fc02fadff175303f77f6b0e1f709bb3d3a93b38552ccf62688a39da1a602dd5e122e6f4e9171769ada5255cc5cf938dfefcbe3ab0faca434c42dc8c357e89a3d1488fa3df35c3580b124ba3bf6d0d203d586707eb692150ed05a01bf9de5c4e67bb948088784016394d47abb853f2b6b643a066ad81bcd1735aed4e108a8c1fcd025b548de874eb60de7f3c568728959147d1219e4b830e06ca2bee1f8a035e28a54ee6958d4821a84e5d1e41139905f7ec60fe67ce5f4eccdcc2c3d1e4a753a32dd3004970a4ff3824471822fe2b5010b9b6c6b01336dbf0181a95cba2624663215468519871cc39e8a7f4a151c8bd03363b402020f2fb98069b2cb8cc1b7e930938e7540d95d1d223e47865135793f9eb573660ff79f7ed2fae503e68ba44596ee745fbd8fa562c5c666d174cc01b1961736e18b8b517161ab9c8058026e0ddd6c94aed0086a26e1b959a5e05eb9d8c1ff5b2ef518ca23b4f265db61b499a48cc46bed28d23ffc1e8d9c9e345c06079ad47c88dd4e8e286575bd7f9420ab9c2d5c6685488b8b34d4c9ac04e1427ae0994cf789b48b01d1db9c2fe75fc5187727bb11119f82d0739ce4048467a08cd635bf78cc1b6cc9c28fdc199d351064a81456f81c9e56a43aef7332973804b06b18a26caa62523a7d0acc272ba49124b17bb68800d5756afd34ddb2b7e2dd8a118aac3fcf39d9f853c4d2c4fd3ed5bd25a6604d68d57db93d15aa1160f8a97e6c24238e84f272780966867f9c644ca2775cdac4af0ece036cfa6ebb1cd9d701dd7daec5763c9a4de0385db383a5647918e79c6a6de1f4ee1f6b722c561704c8d7efa4710d78dfce8ad2df0d3d82cbb59cef0bcb001f70bdc6e17af1a720b117fe02bb1dd527b18e6bce70e9447cd0cc85cbcf431fe7c006f5e4ef878a974a93b25f492847c9ae020583c9d412f4124246164d8f080b615e2eee267a7aeb5fa0974de52cefef23cdda7b305a33a91e9b50471ceb72dae337c485d636e28d6ee31f5705983808b1567d4d4ae820ec445c56e6a404cad6b408691475397c0dd6cfad232106ba96e5104052700a653e21f9ac6d79578a9f52548f426a1e81dd45bae30acdd4d22a2dafd633564d6b2f45e7d35413503c955cb0a9784b42ae8c2a5933a6729f3922f969a158540dcd201ecb6e32f88b5b4921914a2e8f424c8b031f115ea5d23a21e6f22439ffd7e5d11b08df729f65613b4f6ad3edbc9a066a5e712ecbddfa6fa764cdf170c0485f82d924a99b7e7ad8dc44c1f93e49b6469a9af3de5691944413f1417b753bcb84d5b7a34f362c383cbc802b0c88bd23a7ac471b9287571c42081b1134bfc8ce104a550942ab1f2a074cb00a90558d6e841ff15cfde6951f03e450a1bfc90dec6c513fcb2692ddccc31d22e5274d41036656183c72fce208e44920776f196193137ac67d6d65ce9cfaae774f23a86e6ee8ff3a4e9422a4667d971906e5496a4e80278774899c882708611bad282f6c1d666bc5e7c40082b43a6e98d494a18e9b3cf7f154fdbf90d786e59e83b72ad0ab893c49aca50ed37ea5202e650fda54f5c46ca2a35c476f4b009c5e6733232275abd1341199b63d22386c484cb95c43ea90e609c407bc79ddd00609cc2eb0d82848db239b249f164b7ea384d0239fe1e64d04955b9297472cafa2ff272c5c78100aaa86cdd8120556f25652a3c12da5853338e3be8f505d93ea03cd1cae7e78e95befdc0e26b760d11e05403c348e0523fe036381408033c009a8e1f117af5100a6eb91f08307df465c20bc1dd029875ef7e49338689f602d98f2dc690a57a6f2864e57098f8bd723574944ad3688b292db6d01387a16493912722ac8f91fd12b748899bdaeabdf0479df788eda440d7bf30d1c25d78d757f00b74bb556506637fc1ab87162f05d464e63a6272db3fe56e9357275035d6b6bee32bd92c4a1dc94778551e94ee1d8854f767bfac3811bd0287672aaa01ea18c25650f05a68cbacd9158e479b508e72df778589e1e03dc543b60bb3b10399e5c50de9e728e69774fb3f5fea757ddefccd0f9da75afe4b67f9c54aaaaf646e858fb001a6deed0a8a769ecef0689c988de566b6015fb8c40aeb5f2df7ea4bee60e8e69d15c4a4aa5411dbe63fbdd6418cf025d87f37362f15e22aba83abe1a3de9857c71c2234023b969eacc0bc526363b7f30b092ca114f2a6cefb34394d146866ac86a33fc497a8cb8e2a5bac398579ff7958878421fb08fff4f8f3deb8c9641b8de392647df3017a5467f9d7b23036935ec6e188dd6dbfb544b8a9e04a4b3c7fa1e4d1d9879daf69986b8083e6eb023a4b5eff80fef17f8f65433c882a21565a919448e6091d1b61013fdaf9fc3e45bbe827c9b4ab10b05600a1961e81d31c7404f8e0d32bfcac2937eaed811db167dfdc29286b0d51bad2bcdb9dea76eaf495a31a7fe717c1c98be374a36271cdd06ed06c02ef4c3c06cb42f73b3332ed488416010e6bf2f4dc4dade6e2e61f19e9306bf941868f59fa0939005743dd647f0a04b576a7e71d4c383c479453501e18ec56d7cb79fe31ff534afbd8609ed701ef163f9de31bc58114399fa0f22b62c66c380e8a10c34b7e731df2a8d39dcf36fbf3a66d67b973e3a94bf6ee0bd96f5c76baa76492032fdd2f59ecaee403d486f543f2cd7ae7b0dabe1b5566e681cd40d384a94349e9668650a6f2d2daf86c59a7b02ba466cd03ce1d50c3f0ca4c02dc4b3d1c0e7b9a77df9eae0bfcffa32117d7e05adc7195f4278c93497401629897a58d08ad7141ea52e0163f14992d7a284e7b875ce4640b4dd48ceedad1ea17d8ab1e760773044845e0899602f1bdfff4d42ab80c0765d1a8bde2ba0a830c050923956d06c80b182264ad19ae4f7c39e43195f7d421bdcda00e3eb5ec5ef2ec91d69df691ba7fe250352acf01fa92af5e2c634b9c7c97889e9147e869acc153d88cdc18908f882f371ba9c1e13c26e9cb8e3cbd4c5e1988080ca65a67b3a4c3460cfadbec904d853fddd2f5375b6070941fca53cc106b5748480213cfbdc1c34320a0478b05f76fd0454c75eca069cb1fa7b21704dab67dc40d041c8a1040db378e76655636ad725219c049e6536982d6ee9f11dd032280e622547c7ff44a938a1f233c356a98182d22d5770fbc871e20bb37483dd5d6ea1551993b95b30774a49b50d411ebe0e8c92834094e23ec2664d822c40e96fb42b8607b62b6949e05edcaa436d0ffac6a8ff384068acfc0220c0b098d368fb8113918a4f8c9de37cece74c8695cef2427e54a6e77ad092a9b7f1d94ac9f0836deff41b905b5dafc58ad6063759b0372a634f69a639e19521825d66a282f489c3172a3659264d0132af3571e637782bb6fe5c0afd24547612166fd3409d0991392fa054ea5bd07a4cd0921a13ad7b62a0b5e6d56cd8adb7f3eaa5c99576941c38aff311c49a8c9d8c755869302a2e5e40109c8365a551cd3f859b9421be189d3a0e9ed78830d5cd6a2414e9cc4c25814d94d98f8848e5386d6dbddd65d22b96c5d20020a5dd409c7e5344065871e57e01c91a443501dc8bf619890fe231319b5480c3879dee618d319962596539e2970513fb5c0c8eac3a71ff99962779cf1d7e916566d0e29d121c5cec5d7302a18ed00be9316f3de8c669a64c2a960a588f9c8a42690f6867cda7146e8ce27aa6a7fb27606eed9df6a235a42d17ce71627446e206e879de56025a66556263f06684dedcfd6f083d6a707e5fc8f8212d716e062f0f7fd0c2fc62bea93d68581265a803c31cac3f8ac8939c5f8c464ebd19df42c7e8998494af614c8383294f3f3883f2404ac10404759e182a038c97aea04a85530ec005e203807c5bc30fa9f5339b32fb0427e64915e29a25bb25ac60b92256470e7de5298d42c6b88995f8d2fb704e49d55b66b71e237af90fcbfd71d9093e1a543da2e9911ac4102346dc4704859cb33ac5f5dce2b3331a9dc9fb506461a5436c89bf90d39afcf93cbca4cfc35da6ddb112243928246ae0d1ba269b0fce0468d3ecabbdb925c9ea3241e2dbdc6b151fb4aa724a42f98b0248171fa01fa103f116d0e7deb65dc359b09126f9a420300fd209508ec7a50be56d5b470e387d0c52a1d104625f9571ce1404d1b7af3fb00475b95f752ab96610be112d33ded48624015781e7198f4dcdf917839471fbedb43c34efabe09941fab6b342cf672a29dbb1eed0db788dbfcfcc63bcfe80f7718571f691818dd6f839e3cc282f85f03fe0400171cdf1235049fa53de7450b4c40ed398d5a486f52124c1c63de2afc950e81839f52d17e2a7d32f82788465a65da6cd763c6360763561ed2bf47749080549b6e2db87514e1ee1c85a0bbd346eb6e3cc29267cbedcad67a287fc5be65ec59ba8b6854b31c83dfc5155187d4150685c5c2c342ed68b01ac9e44b60f0c100a347a0f93074dd37d8956fe2f43110dda66e9f9e6185c23dab74cfca21f3ede4bca87687549ea02662f45dfa0ad27f9959a120cacb7c419810e1b1a50fad31c12c47d5bbc61bad77044aa541d29faa6126c60ef088b82eead17a52843307d4bf798b853d90d14c5347ff10615381d85e964331b7a123d15a77a6790d93e920052ddb4db4baaac5e2b27b66ff955e53b8308151c81da4711189ccf0eb393c5bbccfa1f6c94a8d5f4bcd266fc6a12061967ce836ca042257368f567dc42de6ce0be84449234a6163b72069f25b7ead4b2003e1a7665e87ccf211abe94175d1c11bff2c0b6bc110194d34aab96934ef59804cd26e4434ba166d9833fb091be37b139cc10748b881c93690528a96ccccd2dbe024510b8da37dceab567dc52706461c486a0463369cbb99bcca2e8a4d2e005c45401964722a4b3ed37c351c9f21685e8992c9634349379f41796deebffc2928058c8ef6ea37c6e4970dedb78d1c2a00ea9e1ff1e7708470a6c60e6a2b1e966aa872776afdb238e97f716b3df8dfd42bf0f7ceb52bf9eb33731bdba5987b8f48b4599d67b383e77413107857e951ae0625059e5616ccb41131df9a480efd5beab3a9c99615921caedc53dbad675c00ba1030577db1d22731677914fa958b44792cc9c19e2ac71ebe61a05ee67ae7116e39e1c0d103f18bbc9d531164360d901da8234d29fb0b37cd2a60c7aa2adb2a4b297ea2fb14122ad95bd4592ef86c88fdae1e37dc8e44ad03c0fcdfa3801e93796771c5a2ec1e4ab12a64b3ffe48e7442c6224661ed5cc987aada6e778399941f7b20f16f94fb346b916be87f005c9c13789741602039d38270643cce3c347565eef5ee09139330301951c15756be47994de6f1802dc5131b9b011051b1d87d744756831a71cc8528487f032fee9dbffccc751e6a1ee6d07bb218b3a7ec6bf5740ead7a47b6907d7aa95b79aecedf4a637ead8fc6fb8654c93d13ee79f5d6258dcc61993aebc65e4fc14eea7d006e31f6e9f60e3bca8ce52ec559876fd20255e507daa99b185671ce1ac11d448c30bcdf97b9617195e0ccd2d15246308dd6cda74a8071114327fe203b1adbaa780f3243105c5111636a51dce966f5652e39d4f91abbbb4576234d6cacc3ec57cef2dd4dda49a6c33d12bb7595fd5ab5bb15b40301f34ddfb831a5dbf62218f496c003227fe6282e2ac054c45e7f3fc93e51b3ee8690f08612395095a0a12729d663eded879d9ffb325c62f2cb546a48bed51ae232fa6ce28a2494c132a6e09d98c2e3d478d5d2d15dce2e2665e4a3db448931068b99899c2bd8ba87349b0cf9e3c52cffdcf58a59b4fe0089b298b42ad7553f831bd60f5cfa3e09102fe773e4c05412973a678f3b3ed420433cd664dc7f218e816a17c5c9013ecb84abf2dd073557dbc41b92a91e0339d57b8b077a9a44d56427fec5748c47c1460b2e2412094db6d0ad06dea0aa0c1368592594bf0b2f590a9d6149e44dd4adc4cb42e5d9940d59397b83b33b88604c210694e3fbd84795c80c1b09ddb3b1ec8bef6e9dfc4d7f295e551a79436007ca48aa605ef5a89571e59cb26f2766e564e39d3bb441deaa0c8664549881d90a77256c0f6c77241fd6ab74b0e2890f78ff16fd2f9271ef96ebfbd0b878ba9c703900752b7447f4efaa60bd9dc9cd5673a36b39d49f54274caf03c0cf82b95141fa20ed3ce02ebf0dd74d9eff8eb9e2dd3a2976b244b12fd33ee75c1f1c459f86a1cefbc817f42d7f43ba406098165cbeab99df4fe751ae3382efce32af252e461652c7598161e74fd8eeca474fab6b1ede039935f2fd4d7562623b90a422a78941f47a76863d95857c33653d1b42b806bbafcfeccb7bb4a0c58acebf6104b2570afc3ca88e4fdf2719cf39c964a1ea7d2ae4a7fadc938abc95adac495093f6b959b1347501606b3f960b6d739291aa8c13eb49e98b0f78d2b91400b6d8961cb6165c8b684738e4d4db2f2ac30ddaa03a5e0cde4142b625e81907f08c60d7cb5729456806c89ff0efd08397423e44738ff38f8e88684f3a099dcda455521caca37ab4f4d9ed5d37975d4fdd778b97cc93babc804864a35e3a2db04598152e67a2f1f157681c3962d46ada23ea5d9a524f9cdbdd08a07a3a85b1f6fbde11d5a35c7743b83bbefd19aedf6d92241d16aeca7f33cc51839b75f111e8edaeaed808daf2f43fdb3c6f032ea45052ac31d4870c4d0d76aa75d0b88635ce449054013f234c4a16cffc58c95ba1cb8a0a0399861eecb1039bdedfab4d05f0270c6b16f03f6b8e629f687f133ebf2662c7f930530746679aac2791f54d6a95bfab5be0c33739074ed4e7ae88dde4a8036a7d6095cf41776366b6ae3f8f4a0734f48c275e129cfffff5e0abd042f99a957bf6f0f47fc7288750f4fe30198f8cad7067b36cd87ebca08abd3f9475e7443f83cca91a1ebfc42ef3494871f51f6d52a5524b9391c687571be5327c7c94ee2a096653acb410917fd51e56a92be4f24c1db6b97b465ca84c31c04c2f61eae07e952eb6554aa4d8a380d9ee81c1c462c360fcc3cdff2867a953b655562cd06162af8b99bbe662e0c27ce4d9a1c1a907def48a3231c2110c930a2f1498e32dbbfee0e5c5869332f3024fa5dfb0327a27c663cacd4e9902de34dd93529e90eb347bafa5035f56fc578e8386c7571d1f0ba335225ecd8be026b4544ad70f3af11501a53119ee39a8558ca0ed5b3d897ffb9cf0fcab55a0942d3bf7bc6b94ea27a6b748f2cfda431f35252c44610b7e843ed91ebf7e8fe10638f04f52d6d5a7752ec62350efcb7c473f80b1f2a26805151e8346d39d23551e92fbe372df7979c3f756bbb43f6bed09bbc6b65fe6fd241ae1c2f1a0d0b805c582853b85502968f9478e9a84895f9d4ef01ec4f3f571e57cd0bda68ee1f6f7e14fb6e0f4ef8c7dff6796472a935294fc27b16216966d5021339ded059687355b42b55926854bbfbd9f974a0c26eadbfca8a6183093996cf252894e6db910c71ca3ab2e82d90d371c36b92c9409cf7937bb266ea9b29c41d774aa522e103cb30bbabfe872b57beb027623742806aa7694a859ede9bc1fd7b9e32880b064b0030fce1a0e5cdf3ce558a5feaa32e323dbfab6661c5878c9377ee52a615b7c17bf1228e328aa20f92d070c71561969e1af532e76835fb0436810c3d87b982217edfb1143bfc3405ac9f6f3a50145608dfa8658b0ab642a347255c55b59cd1c5897b2cf625a0f0706c30ca1c1321e90cec57b7c3d1bd1af455e3732db80643383c41eaa6781f63da6233360ee720cc04d171ae2445b0c071e339d547f7ac32f407d29ec7abce0a9e1ef5276544877bab2f84bd2eef47ffa66f96e7170cd54d836c9badbc59435146031502c1a3cc744a470f693636d9050c5b894d2d6047df60eb0bac16d905d46cbf017ca69d66427cb88036eca4ea9d0e579f6bfd8a4a850703a0fe49d39c107c9358e98689fb62bd0475aab4b2031446b437c7f9e373caf0270a28d7b15c71f02079dde401e26175bb6e392106a9072021f0e5c5145a1db6f595b032faed8551f6e2ce318db1ab513db876a3eb42d225014949c19543e9c5dfd2290e28c5d72c87223f0195ffbcba1c02c7d0087721efd2af6881dee7dba7565e07abc35bc3fa41c6a4d6a313222ac6dbb117c69c62db2691c68869ac5fc5e987b0ae4335f815c73ea4235da2582dde81d6fdae5911617daef847be17f2bc09edd88830eac03977f89179fe03eb2dc3b38df43803ca2d38455232549110f4580ec3cc04c0d8cfe493013d2cde47c506ef6a8dfc42d998f70378fac5ce4709345926dc477e9e339d8c87ff6287ea6e2873e14d538cdc3f2a47e0e37a2601652f5b665b616a7d1ef3537a3327a76f93990f7694e6484e7a52a10e9eea2edc92b99406abfb2b11ec86667c7af4a333dfe900bf071d1bbcf4f0ad768fae4f450c53817c507d26e926e753e3395201d3ad89061f16706d841994abad283f0db74cada25beb5fe46f48669a62e0b849cb77097e1b4578b45062af4a071b04f0cfddf87519cf2bfa10ebb4b860239ff187e6dad73806ae968e6ac0f738baa88edb3ae4883a9e59be7a6b222c5f54818f95578daff9fc7a7aba8c4a41a699923e85ddf24a32bb71c808516f64d506058a70539276d57984d75161cba7d53a4a864c51a249a6b8fcad5738dd0055ba8468b56579ba5f102642df65c598490f3a0c9b1064f4eb1962c4c38bfb7d55d496a0b0f7b3f90b42f733d112c89176aaf937eea4bada845f3ca4e9b56b3a5a06b4c90fa4c1914ea47020c2f32531e270007ed389246906ecf2c4465f7cc5d6a347583dd73341ad97199021819be81100d867d628323ef7552db945e4c0be604cf6c4a8197958bcbd6c1879387d3286dff979632c54baba2a35ea84efd7726b662b94fae61464d069e0103692599fb86fdc3a06e01c6ae3deb3de6fdb21806c716e5f82b784e4ad3f0e2de629a18e3a2309003dfde9dde8e5101b83312f76e811277afc286b56879f4eb80468e58c60bc088284d05d725ddfe3185b7c51b472a7ff7db3930839142d4a452ddab628e07d43375801d7c6a711a55b452748d770b84ede35920c1ac74b595baef963d21df9418533fcf959593ccf5afccc753e86c4ae231eafe77a158c2472143faf169db29bf2b53c3288d8b3c9added65778095f85e2cb471ab58362041f0a27d874c42bbb06385a0403ca193cba67cf70029cdb7e73c7e2267b856fa0b8dd4c706b45e7174659b0ee2891df911724324f7ca5daf07c912b9b2abff762e62a1817688757492975db7185c4695f3a90895634b8d07453b36dd95197abc31d5d153dfb0d0ec92639540e99d6590f9b394f14c93a5e829fbb33616e810f59c502be44a13b700fd3009545e34c211abf9afe1bb8ced793c6f516d40010649f83a78ddbe9b71d8596582997d0aa54192e1200db61dade30500d72a184ca7dfcbfb80e5442f489d316cc8b75005564835d4b11c482e2c4d0d160f14a8b13ae0a0fb0ba5e3b782770aaca357df0e1c4d1c3b28b776a8b3e0da1abfd4f7190673fca1e1c5a31c688d6e8ddb21300e4178d07c4e854a718ac3f672b0120d6a54c16957c9ec8c444208e47737bc4eeb0bf2d801eb2fcb72f91fe988aa75f38e6cf26e858dc2a718580ff5d281d13e8fc3e3bc30c75c0193481c39c375a5b06b962d9491f3f1fb80f1cb27067f0709e0b0730573a9b5f5bdbee1708ad84b4ceb1a9a61e4c41e90655764057bfa07b8c81cc83a315be1aed6a49715479c0fd0f53f625fe6c7f36fadd001149ab978532e4d0de3d1a38934c74265b161899843704fad16ffc6189f42a5cadec98603e0f98c6889bd4a559079e074cb40678fad4690a20d988735280a1ee8ea71275069132101b35c18ecc9d3c6eceb4cfe9b165e4b6acc17d4f113ef8283c0fb6506f5635401e916d4f7e7bc3cf49aed166587a0c72cdbe673f467d81bc2e9cd08cd8dd16d90b353481df31e89b45e8b | ||
25 | MD = be3cfa6c965b2ee4e6fb0236665b0b95f66c8da8b338375b7393672283b0e50b96112d7cb76fffaa6db8ea4a7687fc6234dc1ee52e764d69ba8ac40c0f51beba | ||
26 | |||
27 | [L = 48] | ||
28 | |||
29 | Len = 16 | ||
30 | Msg = 3a35 | ||
31 | MD = 87bea682792f6bb4977fe1b92e0cc7017413dd263732c3604f0ebd63c2817ce5ddc5d78c0137f614a06e72ab1cab2f4c | ||
32 | |||
33 | Len = 104 | ||
34 | Msg = 7db15b3ee240b45d4610950996 | ||
35 | MD = 7311a6356ab38a690c0b3a1581c3e7b6de418996c05e79849891b061c51d53dffc0fff2b8ad1c1eff165aee5ef6e18ff | ||
36 | |||
37 | Len = 352 | ||
38 | Msg = d2a1efc725c46cd6a19760f49edf0bae823c1b4992ae2260085746cf65833bd008e56e64002383f51f960239 | ||
39 | MD = adb1778360ec659e90609e74b6af219a01a024f216b68aa944841429ed5b03b139444b8b848f73fd5f350ef02d46b6ce | ||
40 | |||
41 | Len = 1016 | ||
42 | Msg = d11ad1253592c094746da7b5c88d329bc3ce1929913b8be07e82d3f6b7a536a855f31ad197376eba6f2f4534413fc4e4e7673fdff8739f774a710754b568b7c61a473059a41c98aa4e86617aa66d2601d0f0d584cd9f132afeebdc0ce3da6a8b290059e6e4aa080c195c42ae7f7e1e99865223439929b0a3a0d79b46ca6419 | ||
43 | MD = 0cbec7be7299f48f043c3d1aacf833b4258c32190a21a8ac2471666b4a51b63cc77fff6e081aaf5ef21b1b7523d65763 | ||
44 | |||
45 | Len = 13696 | ||
46 | Msg = 2f7a9929dffaa4a4dcfeea1fc37b18e3cf935abbaa17cf9d834b3a8d61e9fabfb7683cfc387d6f46ece3f8bf845827c7ebe86a651d6dc1e83c5772cee1a9fee4b04453af2f68430bd87835126cfd1b3f8beea4d3822fb27864570e255cb65b414197480b6bc20a39c5450adf2474da93d72f6ecf8063899722d3755b7a19f71e93e782d89593ab19ddd3ddf053c54e0bf832311fbf132e8b9e540f38e4d9bcc3cdbf69de54e40ef348a9170ba2f65def167f568ce846889c0161448342fe907718a465e451bc1b0f2e4f21f9b911f186589f43dea305811473837c063b915d849c20deb43323bab4b64e61823f1df119e71962dd975700391b411f8778980a3080ba3c14a321d32c082d416ddd2345f0eb751a516d44ee55222395cfa11e7fc4edfbe7cd49bf4ebd4d7428843a2ad5538b3cd201ccd431aeafb146a65d28a4870a6948a7cc0413b0adac7e8dff3a898aeff5f4b65d10b28ceb749bd354c061c3008ec569d5f90a4d4f5caa51d35b49dc4028e738c8ff5939fef3fa202fed9ebef6f2c7dd0ba41cdb5c0c16985f96fd93a65d134fb4a90ffc0fb6cc5396b843c2151bb7c9170f2fa4fb44292a4af28df5481de0c3c917ba1c46467a35302738158493fbf6a0422cee558d4bce3d78e14b4fefb65bb05043e2cc2a6a8ea64565ff6ce2fd2c4f43fc02926ee44ee02fe1dce25cfde0115c9396c9ea06269f17b2caf58e2332cc1c8528d9705c70da1f76f22aeb1d1b93449180640fb5c4c4a708bc4621d7d2bed5b1a752191cfdd45086d34f247ed1df0f24e7c620de32bdfc4d1f882380d2cd7467c926f48abc75cbfac8788f88cd9dc5361517a5eb36311e6b39e21a85fba2038fd47d860f776697bb19cdb5a4d6746fae507e274399c91648537d905015e58910117e5914f44ebcb00e771d38b30c1473e1232d4e222cebceb4810c48e83e0fd4c852f4fffcd643c0ef9e4fae2d0ebc6f102f3f749b02a5e3a61517d53b539cc24120df3957a633d50369d46c0c226f8924cae51dcaf54d716f61385fd8cf38c2c311a32bcd6594d6930133dc18ef36a9671ba8b179abe95f588ef74e8558ebbc974dc73c26bb6eaae78ef464181e18b71f4b0f986ecc8495a9c4dc0b0b96be9806fbd3d32952ca3b4737a06ed6561e9c9581a33a720123fbaa2a70fc3233b83e56444f5aa0cfaf70fb24be6118404f3e11e6ea004cf2d079a3e93a8ac1d4e297cf4fc43851dd26314a7ed6a5a784b386daa26e50c64692f7db28c21d82234289bb45bad5042236667e6d70a24bc9525c3adcb793a6a5725d9b10911e3bc8e3fd604db7998346e7f7dd1815c0cbb735a977bd4b32b5b976932bc92ef3b56bcadc089045ec95f241cdb0a84c67f1f76353da6cb493bb27a881d37a2106b8b3010cf935eb3601ce4dce3e449eff8331e444ab117a20809a1010db4cf3be0c488f777b6532df908112e3d11592f04a0cc16232d62340cbb8b5268a662b8278d37c03d848a04f0ab498f5af43b0a20e310197b7e1395a65299fac29f051bcc5fcd09a5605bfee370ee8ea21f5807d9748acca815a44d81796d68b0014eed3bb6a94233fc51725de3809ac6f538beaacf8cbe3d96aca21a7a763a957f8892f22c6d086d9af2e5ac9d90321e186584f17e964c90739559ddd034df076c4aa38c2b78aab6dec8ef6be9adf33bfb66f159ec4826653ee6cb483539c47a4a1d95663e6cc7a42a3bf628623a4c9500a59a50a312aa104b198ce5f3e58952bb79ff1ccfa9ddba2fd4705e91b5acaddab9d6522d7666264ac5f533b6d8ac4512d8371c69c06b6d322b046ae2a0a20aec1c3bfb05f3d91b9044cabdd873abb5f2b0e3e19740df31e39828f9ff9bbb20b73541a7a70b8174ce4e43e0d356e629cdbc6c08d29bd7acb6a4347823075683ce9d7de4ab3ddda6572b175951f30a15263355fe9641b3322df7dd52077402a884cd472e6d0b6c34cd63ab63cec8760c7ebe384f7cc31066bbdb7a3417425e039c4d340166e4bba4839076ac9457c87459c57957d0a06dced2f7a18acd22b7295785dafa435a2a8a2c3a1fa05d115fe129d19fc44c5a29bf15b4d9c2b375bc8e591f92756cfc573a39b8fccb8395cad7617b11f14a60e2dbf69b897844cbbcb70363010f6e1bc0590ea594aa924597dbb32a868b55551789f82437180b85661809089d34a168d44b4d788dba23b13542715843eee797366d9ce7793e72331735bc78cd61b13421a568ba3e66926921c04e9d00888ba7ddeb474db63813756ea4a02c1823083e36ebd2d32d5c88cdebb98d511304cc276c7799cf84a1699ccac9569b13f530c762732e6bd0f8415001b2c02d11dff36660b717054b16df49ba38425e3764a56052ffddecdfc686aff22079897376cc15591e11579fe4feeccb55f | ||
47 | MD = 70e1259106fc7a7c6be11d95fb673bfaf0074e342fdaefb458faf4619e7f0edbd68d509b9ca7243d2e5e039d42ee3b47 | ||
48 | |||
49 | Len = 100816 | ||
50 | Msg = 5f464d3301c5e0871d6b41b002dcd09abc80a805de3482d97f3fd7b9838745da1c0534168f76b93c3c53bbabd904541ffe5179cae619dea77446140b7400f47d242141c7f2e9894d88f44c9e066861498e7394f206f594a419790d697f6a11187f84bc6fb288186109343eb11172bec076d041a4c7306d7978c009fc2d2d62563614ed3555ba2d21c8fcd70e8389352dbe4ec808af3231ce990452eb05b1b0dc4fbb1b4265e69235cc3561dae4148c386cd770474863a84a822b2e5f905fc255d55f90bd6a760d441dc52240ba7d8c888a5283891a2c99963d1fe680549d6267cdea92cfead167f6c49663668f2bfdc61fa647f5abf3ce5ad2c6c175dbd456ba41436aa06f5f68f5c88e6b74ea86a79934bd05b486210d3d470a0967ad6d67f7385260578088d7e63197849354f651aad07e04ed301f1fe7a6d2047d50ce5dc6bbffbb1da6b47d740898f4eb54e3c5a1fbd18ec93254cc01f705fce04e6100ced132c519674b2345547804a372b5c925bd9ee9701527db33408d37b72f8d18b882d3c4744eb58f011d21fce336d426de1fcd5e09610216248b51fe2b79b96c2bd6ca0155e05a8a516b7a24d529a9a475284735bd9c4c437ddf399864b64fc5d0d6ffc4e5a7a3dbdd476bc39ed29a0a92e1f2b6b3506c2be5452d4f896db6eb4f895b554b2af64c4cb8dc2369b91022dc50b7291404cc9605c31569c32756a64ff8c4fbb0f1bca346c7b58a5c6774b2fc7f7fd50741d34c8564d92f396b97be782923ff3c855ea9757bde419f632c8399763003b58ee9140c2d62e914c1e1fa742661a9166d42267edc40905b35a25d5c3cb3fb457376b7422896df7bb19c23e8f764416731d2e20cf2c1beb8663c07edd8f105e078e2fed05c5e5897c430017fa2160f565a75a4c5c64a15dd7d644bf355d169ae2696ae5ed1a39e8f81055cdf315e5b0c6f9235515fc4dbf30281ef17b83a6ed604f89293904bf78c7183fcb0ab236cb1f8935e59c51559217efabc000b165d819b717118a03facb61a13a99b194f8b6c7ddfe5850127d79078397a56564c7ed6716a129409680434061b2a4782c9006587de927c1ae09d6778a5f1c39fc419fe10493eb0d4ad492fbd05485eee7913c59df82fe7182af2cf06a6e8edf06676200077bd1408f5c1cec537cb8566470cb44895826d04ec20f0aba4297c501add65c75d5767ad2ab63aa81b7b66f01b32590f1d55b7e50e6df1ee077a19c8c895f5ef62d452cc336e9aee171fa997ddcedd7af86e6cc37722fb5838a46c5e58e7f700edfb7c6bf832171d9581f660752867118e9535a6118635709d6f1c1cb21b938068958e956149d9bffc67f355cb88205d4894ba97c3e3c8be9fa2d20abe79f3f93a6a2f4f56fd075bb49a4b7dc83630e58c32a29d757fdbcaa607352f65483cf2cb4208a3bf94ca7a25e2a4e05279be31c33696c10fa4971d1b64ee938dd299f483e5c098845749a3b706a787529bf2ca56693d0a7a98243e6482a43e1f5d3086ca1b00368d8ead5ed2d0fb79b1e2f537ab9340809ca3a9b5eb2900390432293008ab7086c2811d33de0648be5597ef002c7c462b5e0f4e0b1720a98b2299ad7aa55eb78f0c77c2ab4371385f280107ae40ebf814a8223dc74f31483c63d9e4ed09fc7e5a51bac34d69d97163116a66c84ea9fe4263269b71fd228555ae3cf5109c4d6ced7b9049a2b8069bd2f71834d6c07fffbd7561939188bc07dcea08086bc7182a5270427c3199bf5fb5c4549861fd32a38ec81c4ab058c777dc01864787f0275f911a17838272cd65135f66baf06d8d93bc439eeb55d50b7c5adafed8eb8140b4b05f59871dacf954f4b096c30b7857774fcd319c096750bf605db8e31fe02cd1b9294eaf8bb009d4609f2cdb3a8657f650501b8553765de8f572fb91ac77b35db35f402453e5c58f60146f2906ff56b9c6b3a5d0bb6afb9e2201110919ac9c01a7e9750dfdb2f72afbf7a8d6f64b1c68b9de17a2c9abf289eef24074eee9b1649caf3693118165503a30200993d271aa31b8b92606a10a52612dd1fab495b82f9a98cade18b9d8a723a71ceb63fd1d27372bd281f9b40aa1839b0cc2f2177a09aa8e7b159ac118d7c145e7a4f032e788d21facde2b4dbc1d5d2238f530d9bf9bd2798f611d03ed8919f0c85bc2da99750b7a8d6322d2e66ff6ab9ebaf7424e8c1c3f4fe92be61f65359106395f5ef995e925be3868ad513f561f873acdbaf18590c903d64bd275121c11ea655124d091740887868544c5348664399d3da96e2e35fff34f062fb939d656bc072096e510b40b2f75ff010af68d64fd0acc778e2e13c9667de266b1816c4ac449521b02bbb217002c604be72e73051aa9048d192e3210a68769dd2693e5d44951711aed3a751240d42f8925844131daa36c51d7d59bbaf99623fddf1649db954705fd6f3405e63894f5258c9ffecf83208c2c90cc55b1a8d2972ea6b3a049ee54942b50526b7930953986e428b2c75e47ed870bba68dbfa624dd94112f3059da0a80c583baeb570fe8314f5c66501b34116c81148dd22396fcd6479da49f7e952c8084f97d6803ff85c3787222064ca368f596a1ebb6dab20a03916b3ab071c927d87fc10ecc4e7ab4a5761e3eadaea4de1a0dee30aa39a9e4dbee047201d7d8a4df1284cf668ae3ed7dc4cb2cc4b5cae9307353fd2ae4c105c5d9f3bb021535fc3ae9bf3ff54ddda8b2e1037cd9d69822df436dc1c750a9f557d1a3a63fbe73c64261dae0c70bba6edb57519f5b957f138d1aa5fefe01b73c1851aea42938147bac2762527a492cb85da43014c876e223b05597354d7c9b328df67f354d168a84ce86dff57d8a870db034196dbeff83ebef80bbe52425a8810f2c9fea29ee688a201cce4a5f447be789a3881a9da3b6c491288e8f1091719032608b332e0410f4576597e17e0b5dde305f069be2e80d565bb979a3915488f88e3ebb90e81c264bcaddd72b8843af4a4ae31f723d50fa0995b027c334c351128913bb93e67b1b08f101f6b8dc8202b44fbc3d3dfb530f66e5a8f35e69725c86998c05ac87c561a4706e90fa095adab4a566da4fab82bff6b20076e5bdf62dbd6614245b6a6f8cb6bf60106f8d12b9c3e26f8127dc547e2181531ce980a3273f452892110cfe1ea834a30f99d66e026a9d22dc76fc3cec8fda2d7fea701deb84dd45c97dcde57a017693e90983a156f11c4d168d89c06d8a32dbfa590adadd16850854f24bba315b0bbf372f03711a20163afa0c137383b9120b26c59f5e9e7cd2ccaf0ef4e0d70d5a81748ad441ee5fe178e14317cab184fe178fb0cc0d82105d2f423467fdcda0f9871b9d84882609248356f3053a99866dad9f9b0f8c4a897a8cb8f30365a7ae5f3ca6e772d863d445e6d57c6a478e35d719d0e4e84f3a30b1816ddb55bcd79df21ea0e95da72a19cc1fe74fc576120bc108be3ed4cae3bea889fb4ddd67efe858a994237378eb623dab070d954ac780c1e6d2095383c98ba622cbdb18fb53260979fb2672c21a4600f4bf06583a112d303096d4e30e7e1060d869f386eba3cf7aec3052ca17593dcc9969fa9cd88179c262770211cf53f53f175037a5cd445d239cee48f7ed0aa1d715a22ac18a8aeecf191d415e4afd92b76c091803f4c757a9e89f696ab7b11ad6d5f24774e4a004dcb0e3f33705dd8150431f051016af37647b9e44b10bef114276d4b1055b634461c655a82a847639a038ec9f58876e84e9a2955b696e072d8054c3f81173473604d5fcc0a75b4a340dba0c375beb87b8b01a0f2de232bbb8371c3a9d27a0ce521c4c43dd3bdeebf92f42f87d88978d5b4e3e563cba0e5f59dd29c31096885b113ea5c57e66a3be015b703bc26d3fd1d51a7c14f85f65747ac909d7e30c8e800be27eebf4a62e42e538ae30b6883907cebb7fc5e150bc9da3a138f394e817df9a9e44420078f30d0d3d6981ca581791a097a5e3982c983d5cec239096c7d8cc55c87242026d769ef1d04eb96e5b5001e3358af88d417cc61f107659791a35d8b5f7a5767ae24d5b2ba7aa12230076db1f1b9b6f213dceea62949d98bc5db38743b23a59ea75dbe4231a285678f5f07facc053c2048022fcb01f15e8c100d64a877ecd56d196a6ac60ae35e0e09a517224ba409ba7b70d8f9fe65bc427b212a4e9b3cb17b0d332267cea4f3bea7c1e550f7ffe567b20e3057aa0ebb560d00d28e2f7aff718a9f2d4d044f0d20709bb9ad567c98cff7c4810e8c542370cf90a491bc1088f69998d59f344b74db6c1bdb61f284e99b517a11452ca0bb37c7bae77fca6514b341066086e600f098a32a92935380a173c9182a2513584c54ff67e580dfe16b508acf1729a3d649ff1eae286bffd688fe658612d6c8e69e6e7f7de4ba85ec54747cdc42b1f23546b7e490e31280f066e52fac117fd3b0792e4de62d5843ee98c7201529455c85b169fdb90cb05e3403cf2f737148bd20a53c73880880a14ffff37d62130e682e50bc7210ea6c1f0c27656cc1785a0d9ce93ff94dbc5b2877519d9bac4a339e98ec594a7cc76f4ddf994fee8070dd4b8e0fe0e51b93105fcf566f83d914dd862b4ce78de7e9e16f142234bd969ff8005dddc641dcd3c7cfbdd6113cd3ba34a9503a0f433899e90e158abde2ed4ed4b3711c991577c5aafeaa982bce80835f8e6d7c7975571fafb1499991646bc499ec32930367d4b1de76ff656442cab987bdecdbcc2b2bc35ce01816594bfa4b6e33080caa41dbdf8ebf2205649f98a2d3bf331fb16b9ecd1824eacbbc9f81297b115b4d36aa7496e05f7d40d4edd1886c1bac10cf3f97840a03277e6369e7a7e90d932050ab8720fce076de5c355fb17959bd75cfaeff325b0737f8f5b1160de0b0184ba04afcc30bca77a6a37e29662302d01858c0bc1d32b883011b7df5a387805296cd91bbc835a3e76152d017ee929d4cbf137eb78db89d71617dd76cb00707aacb8088ac77a1f52ed710331193edb29933a7efd8cc153e6adfc2c6637e88cd86b06036b8177847b4d086b0ff9b5dc91f3cbd1c08217023d7449253c25331594f0f16a3c5f2e122e0145c4ec94f096b45a1fd0b2dd3f1d51e58978471782a336eae49d7bc4e050d1c6a391658f71a1f752c0ec6302bc2dba9e3766359359ce34955a2db86740c90d09cc50e92dbb76e17a39955fa7108bddeaddaf860d1aff14acec8b609ac1d336270a940604209df91cf45be72edee04277d694a6f968ae6d8e065702f3d607f3baf8db4ab7637fa4c78bb0b7fe69937eb1dcb616fca564a5a521e12df71fefbc321187159bd6a47b066a3440ba634de9153a94546b63aa33aed9da2018e1f30628df37f5360ca4f2660a46ffd73e58183e8abffdea25f7bdf798a2b7cddeaa481bcc6e682a67e99143066963d96d4a928a478951dd6ec59b1be8cb23aa688e1867738aecdd9afade39c92c0b2572bdde84eb912ed990ac618834c412231216fdb84f1e01b3f8414fc6dd0f646fd0fa62bb0157b3535e1497c9272df1cc5dcd4e6ab9a8456222655c56ac73fe0d2aa8b599035daddf0986a45b1a59510abe19a11b6dba065c8bcf8a85d20a3681c2414dab7c036cc1358b1dba98d6ae62c5948c36b5b3e307a6f860c0c822ac724a5c917ed5f98ece548a7a741d366868e6c676394c3659f7f6786594196dde332543376f9ba0724b091d30f431f91d919417e5bf7ba1e9a21cb80f6c204c3a58d59d960a5788b5cba5abd7c7518f4c5170115125de97009a6c3fc4d5773e4f57fdd433eb7422c7c4dccee57a1679633ced3b5f08df763d4577983c5ca8b49bc4e08fa76f8bff36daf0fed068db47f0c87e0e45d518dffe37c129cc6e2f5f9e0430185723098e715284a42f302a6b8368a4f2dc16f534d1e5db9d0b86659fc4ba6f16c982774115d02a57684c7e5489b1f491584b0f0546e4194a6041f5e5be3bfff3852a4fc772d83491023a61a37228ef6260edc0d1cb972cba610d5ad1d92d554700771d8236ef55e983765ed8eb21e7de7c8bb51aee9368758454fee4a3f32179c1e54af1d069e0b9728cd0554351907e018146511e4d6f0450b57c8ebd21c71450116296bdfc779945da60b9192c5bb9a67b1f04d94992df4cbb3e30732dc8af2177fef17e0b7d01740b8a64db16bc29c1e589b6bdfc967edeb2ce8a649ba892bc856a929f0b837a838ca7f917a52436ea3d20e72afacc5b9d58a7fd0fefd96787c65ffa7f910d6d0ada63d64d5c4679960e7f06aeb8c70dfef954f8e39efdb629b72979be208d616071289cfaa0756a4bb5eea5c7baf8fe7a31501e7e2d67d708d461c0c93e85f03afd70bd9e16437171e01a34f475e4b5a58d13ce4e2fba72bbba93403f3f8981e0bbd6a8a6223327bf096c44b36e0ccbf7592a98c1fa67f198b628787ec80aaef848b4fea158c715799e6f458327f399e6420f0e7821f2dc4663bbea065c7bdfe830b6102e2e7193381b9dc7f2381ba808c43b8fdf3addab4b5fa81564716f7d46e0349d9b27b559710d723c7ef2f79eb55c3a9d75b99ae6fde6877b278b583f8ae3cae776b914b0cae0772397fd19b6a27676c7ca02cd07f4b4d49bbe1ec87f2ac7e39e5f7712319c31271dbbbaf4b826af8a9f4acab696c62719f7a6a032c4bcf90922a3c630647b7c1c7b78b10afbd863f07486561a0bc8d9b1ff5fc41998a7e3c604e24af1c1df2da1dd5d83eefa2e4012f7fb5959ef9339574367deff73723484b5a969c8c23dc251a3b887f34b9ea09c9a1838e8aaabb254445d7556dda257dfd5579737fe1dd6c67f3851ca68b011e7cb7b6958d588f143828f0bb24fceca31b47b77d1ce05e75ab05b55d6c9f9107f0c738f2cf8a1629f7e9b2694324e082503937ff8ca7c5098f770289af7d038dcedcf0ed77c8b82e2a9003a6f3db69e14131e144f6be7cf0bb5353ea96aebd78befbc6ceae9bdde97823cdbc5ca8ef8a993a9d9383aee9f2d6a18fc64ab92990672ea2dc9b89ed248aacf7f1a513da43fe5953335afe76d78867a066f226ae9c727c6c60671c50a50732698ef7a492d51998eb6da5368a667baf6d12b77eb36686ee0ca239dc6f3598be0bda79e47f0891fe4d8989df8c685480de11c148a2b44c8a6bea3a50b09be557c51f545a09a30e9362cf3080e6a6bee3dbad370ce24f6c5a6f8091007ca195057fa3af8f99703a601086c2a1ffe55fde4c2c4153dbff8d6601ab68743c0d50d021b0b3099535ba6c40f866ca3ff0df7c19d709a3f58b57b40ab5e43556a8c0c1938c875267bb39c0db6b45840e8ee7c22bf6b48798bd744f70e42fca343a8bdfbd7f55f275ca5d62c7288756d4861fba68d16d842c5b893c1d8171bb3c8b593387d3426f292ace5cee7753c9f9a12e6bb9af5a24192e4184f7d3d191d862d3c3dace7853eaa235b6369fd164e5a7bddd06daa3eec7fe4130e82478d36f88a0999cba1f251ffb3a7689ea2baf016073193898716a9f933448d7ba8e0968c669bdb7dd5e6e32fd84a6ce9e8632b393f9263532ec2107b4c0d2abdf3abb2de2d63511805eb58a70bc4ded040d76640af60ce7f03b9a682b8dd84ed8a47225a48e0b94ea47828f1c8974cd64e5027d8b13d43519875d2bbe4461a7f0f5b5b8d63a472765405ea9c994225806395e64dff88506f7f7f3b6368d769e6e550d4e3e81efb13771cf403e855f75312f1383ce4c2744d0b4e3735a0f1e1b99eb014fa60c0d1ca9035fbc4403330c2fefa8411fb7c3d6ede5b5c8f4736106bbe01923d483a84f031e9685a3b6a70646a2a5059ce35fa496b3f21fca6047471a5bdd33908cc9328de9fb032347c249bf7093390b750696124621dfa67fd9c7fe85d6e5a4d277ad8f8d169f8b5e8dbee280f8443518bd94abc5ca704e781e6cb1868ba2d6fbbaa850326fbfa5a20e4df6fb5f8ee2728e86a758763a8af21e1f7a8584d3f0b09a0b19fe8fcd37bc4fdf45084d7fd92b80544f29aba52496e2c9a0aa4adeb89820be321cfd2f0a53585a15d04c7fe4ec9be6eb5df419e20b71506c1f642df75c53a9e3b2414fe6102fa8af7be3f6c95de824c31fd6fe8ef9d49e26095a2674a33cb574e9e493939bdeaf5b309b4c51256ef71e95dbbcee0a11991693b533f916e1c82ce86d65d89b6d596017fae944ec364546e78abbcbe4322b83e2fcbb4c5d4ccb54d8642c7eb9e28c08598a356a5c46f8813e6b63ec2f3e3bb721b726361f85a734e0514f4e9c4732991ed3998b1ba8f618c2071d1b943eb0f8766fdb7f0492421429bd380deca3325c8d5c7b6ed16429539ae54f1eba39748f09aa44efb67d863cda304e8653ff7499cfad44dc27807779ef8e63be4b376ec403f3c84eda4e5af31c30f9807762e0980b4e5d9dc406cad4e888bfc3ec4186de8ccfcf631b0ba5831747a1c200d45ea06ac82c7952fd09aaae5dcdf5475da427cbc8c1f71ebe5132f2fcae15975ed6fa14a11b38766e1c446894f31c0496b0e5e96507d28e6e4549d6d78841e40630ef306491a1da60eaea3fb69bffcbf192610e2e07bc1124690fea61980e8ed654c5e796f67d26db5de35b4a2c67427833e360ac2a7d4fe7a5ce572144443ed62ac460c1b19402e85c79e3d80e1c143279b20a66d8dcf2bfe1cc44a0f5aa9b0d9b36c46c2cae148dd0f2ffe9a8e6e7274d1832e57aa39fb40553da6414094e838d613a20ce9307d49f97d904648d6460985b01af769800cff9a940f70729fe40e98feb64ff0a81c5b2b096b1a9d832e440c49e4e3684bd17a5169fe138d2544d9806fec027dd2a67f1856178e090f9bb2f9b314a202e7e95f2e41fa80dccf7b1810e9cbcaed2acc2445d60e26f7d63ee4b28e4299e60ea4fc659e7d6f0de91748bf1ede1fdb2acde9482bb76bf6716847eb2dd7517e0a94f0bbf20f248d2c79fa0f518b67a44d5c4c73a9bbc3816ba85ae8344b5f377649da75cf1857d6e4338a76446c48e52cc7bc7ce283d4252f8fac5e1427299edc33f84798316f77bad4a87849e91a1a23c0b7a86898046e278eaaa15ff33730a6d3f885dfe2d1dc0acda2a9e49a71cfecb7dcaa9e70eaa8fe15d4567a280e8960ba49d5289535907e9f277f96e8e652c21d89e81696dd821db5b7e1e53e160584477aa9e4c0e12160c9956df36cce6f4e724dd543827366010ed3d843cdf4319c1bf968a70e9b1b6bcd8af96c9eb0620c569716b7bc42e13251a6adf8201faa129844b5e1d699cafa1b66a674e732c7662b0410e5bca2704c5ebed7850d0ebb825cfb0627a183cc9643b709aedeac2c06700358400c389f99666ae97ccd37f265da7addeb07df9ccad6fa777d0da2fc47b6235179136bbbb409596841e921eb278142a19e6203c7f235bf8461ccadb4b47dd290d36ac27126c808b866f9531261f1e0f5c458a6bab6f064b4efc432e1c7379f9af19ac34c5c22e76e6e7651e48f9ce44eff542f018397889d896cc9001a63e8e455fbe4a9ee9a740edad894fe1af2bb21a1dd0318e28ba982c12ed69c08835ce17336ad1638af3cfe0ea892ab8e83d3f25e6bd98d5e4d36292992e2122c265a26cbb3931dd4c1b0d0ac5ee19974d0dd45777908bb416cbce52531820effcd7f28e1fb2d3d4d826e1b2673e834485a25af9f9d174f566abc3b36732ceefdd91a7c3885e1d10d51c321ff704d0883905b7539309ba5e7b7a2bfefd0494e90e9da7541ec37858ec05ea9a9ec5672b113cd5ad6ebfc5b8fe40ed7c3f17d8a73703dc89086b4d75c5eaf06b840bb2f5b4519a4fb17bfdca9605f17253f203efffc92da96fde023007d22cdad05d18aecb4bf08085c5ca5eecd21f2b611e7e8a0ef981fe7aa2014f5ac6862fab44011dfd33be8a1226943aa7ae5fee9221b0400d9ac2ce5241b09a68cde6b13c47d50bf310ecb37f25c32770a299020d8500d8a4b5d7621e4379dbd6ef34a9aceefd4055ea6144f54bbfedefb5b5b0fbd1d81c7a51a802072ec3d84f34585f22c1df84caca07849b1ef054cbef9b40848e9fd238761df5358cf55a79a53a1bc749e49ffab7c5bd9a28bf24ad5833facf43bcc3852c1e85cfe47929fc49c325c20d74588eb9833519f192243cf96625057899b70a7c93f8fdbfb60d8129d9c43c95f8782ed8293641ffd21d21d91a0b4db69d766f6d6497e9a414ceb04b65425d6ad6c8811da00639dce8d8030038f2d08330c75b0879aab81bfb3330b950e54c13780d308fceed2a103a1a8b77a923b66aba737654ba7995acd306aa7b80f632184412e2369c353c2132ae614553e626f0a3436959104ba6e0040dc597dfbc3602a49e401bf2249699375b2c722083489f54fcdc1f616a133ef6112a1754818158ff78f245b9046100b0e89407f74145fe336976af971c054f12d98002c68b3aa2bd699fbcd71bc4dc071e430bbf694595a951e01098aaa499be2f70611f248a694539ef8936b2e8b7a3c5de8662436fed1f7bc24a4e5c17a663d9a23b4692993301b08cb3bc10f518eca51081c717ec8dfbb0c2669f7987fe6aa0bd98231d8e8b58951b42537f12884a857e02d62de4fda6b88b6b754b1b27394c6a819e0f92f6b2b2473fe245678e252ed31477cc7ec6895bc361b718fcab3aa550fc9faeccfe77cdb5b151ab1db2e569b5bc923ee26f0b6113504d295112d47218140e44652a10af10a088f95c7cf2fccd040fc93980939122411ec643e26e7d69ced3178402e320fe156e774b75b5afc2f3d6b6ab828bb4993b1436faa5728cec34d66f520f59e82716ed6d1324944c3c91d04d5ffc5a921f4716c39de24768484d0096f7d8dbce35aeec22db11f899e5e7e3d57e7668f35d6c0db3542255d9262137d39ae6cf9bcde254dfccc54a6062fcf8982f781d9ffab2df4f49ec04a72eb9646d63bf9e1799bc0bec0ec7f0675ed9f8dc9b8be15d9f2175dfa1c8bc99071c70ad7bedb10a4143fa91c89f54777f84c9eae9361cf7f4c2b7ab873ee5785a5241db0af86f3c6d7f091623d6dc576d07550a42023633a09c8dfa21d7e70cce64c13f37663f75c47921c246f3f2d1d16a8283ce7697da4cb7e016971a2a1d0c59d6202bc18b7cee3828de597efdab53b33a9fb41aa7b49f1c964512901773bb396ac80e90ba1a94c408b2860065ae9aec64a41d76cf8842d299d0babf14d5840d647d075c34175e26a786f30091a24f1ce8db30137520dce1cfffb6318a0d0fdcac883eac603bf365efa2c806eb4f194cae8c16780342165222192f6ee2e103ae2a31dc08a84dfc89c64d2e9ada7ca1839dfff62ddfb7982c79684cfc821a098bc6bf09f87317209b16d14d45c6f38fc99f7bf9bb73460977bb323665d480c87c687cec052a5f08a2c6744c8e177a8a269b4a47a925b9123cd2c014313edae988f8aeaeb633ee5ba6be7f53fe36da3aa37ab2077f5fd75a82a55a0fe62af213b85e9e7694f78cc2b0e63a8c1b89db484722fc62c688678a511c474f0eff8eef1382946d26de00e5c626ec1d7079445c1b7c6f7f05073249b11fd1fb30257724a14cd7bbf451146bf366de2e826fdf1d25705587c4460040ab963e3bd504755b6aa5b18786b68efd3c8e59e8dbd172346fe7f4a18bac98164669d73984044f3c777368f965763742ab86a3720208c64801c796f6e3a1c4748b81e41ac58dcf6ecfa0453b18fad7e3473604f57f7da302e1fa81ad538d4a0280c4ad092007bb9a7a12907227a936871886c699db97d00a1966fdef64d9f3672f1b792c1edadc6781b391c91bea1bd7275f30859dbd1707b1f554e49ceb874ca06e92ab466efa7eeb6990667a27507a7ba789e24d593ea2af8eccb3862cce58daa63eaf212bdd86c01ed471cfc79b191c481ad773d20e821d18af85a7049034e5a9c660357a4c2808b9a6139f32c55c13282b8d98904f4f027d438189dc9487c96172e50dc1100ccc224e7374cf96ea6731032c43fbc9b367a4d1d0b31aa3fa8eb589672e69f1d9144114bbd508d56c2049ecdbfd7b43545375a099ad2885353d8c550d22dbb738e6fe3f104b444c89475a2cc24d7887daced8fa05006c02dfded01c00707e2ad04c41199c5decc1eae34b0c0abb5a5beee1b5253c3350e1a077682767a0b9124a4df2e8879366fd37fc04d4dbcf89883892f46a65ce3aec22123cbe6b3af6364df1f9f5f9751bc8179b6dcc5c126dd65feb7d11a85994e90ab6342834c79c5f82413e88198c73e932c66e3cb60b6e0c0cf438622e5dc5a1036c38afe9cf13559044a9e90f5fd72a3188ef6b1043f5f4e6b40ea51f6235dcb33b3099b2d8c2e02103235f0476ad51bce6d8a2934068549633e521a3ee4c62c22b042fb86c13c8da849233205a5e277aea1129678c31f5c379a71fe08b72fad9449cb923126dd465d1e0ae8a925374149b8248b3afb69f168f3ae701c00f6ea08fe07f1b5338ce6af2f3156ba6f300310114479f2f6119367c88c12c158b84be13b9c8c7b5dd7c90edb5b3ea1fa5927a25ad6d5596992dcd4877f58a134e05dcd80dde4fc2c2a680cc0ccf3084d3f4970e3603fa6bc5a180fcf1ca4241c0b8a1e7c607dc025016e297e2b0645de4ec2fc49851b9374f3ef99edd897c284a67b647ca8c96fcef935d541e9faf334043ea50b99fb8819ecce039227b624e52d8c20003b5a43808e4990da8e4398c4fc172b983351fd11a13dcd2aae5193d42d46e1b57c92e3e01d23fc968c729f3782d6c07dd5a17af2bda96735c12cc7d8023629fb0125e974425f7914690a7ed26508343ae58c8a439ebb6232049a194768d4594f5d65aca37a5686c2a86dd04bef35d74e0755937ac0ce3ebded1c00c8adabf030e5e4a5f44193b62fcf2f1bfa9dca2a25afaf2f1ec06c5d17ef3526d26d17af3e2f257ded24b177ba41c0ba64fd4fbd5042fbd5961a105e0e9f77f3db13c1b6c5bd9a9d04801a5c00a4c544218a21016c65bdff774a44b1d05256e0693e14d76605d67bd10048d3816caf31a6d10886c88c783538bd93e92bbc4484f3388b61adac4b92b911c76ebb1dd11b7b4e40be032bccff610068746f41e34a1fbfbfe5faf57c8a4331008e2c1cfd69f57e74379ac80eb6769f4ce4196795b835201ce4ec85ebcaf5eaaec242fe6695cbce1d53fde5b002e006bba8c8a1ee57da061ceed0d21bdd57ab0cab9e46bf3764d9a6c3ab19736d43b33f32eb955f9174ee4a54666e7f19cefeb49aac7a59b7370d9ae730b7bb4e08413222f0a66bfdac252fb61bcfa838f262312febfde8add8f6843f1d64ea3da42d4ef986498604d65737a44f5a099338520cdbdb65ce73b110dd4bcf8592a4adc3e0170b13404f99f0ec8f9fb225c1275a921f09369db165e9109dd5be472b9bc1901bfd882d264d9ed8d88b4c8f3b35f88b69e3e4b8ef5debb895be536a3af492d968dc1caf31879d672f70ad9869ea98335cf9e4a2760f955fd3e8099e4b2eb4269e354548f9de9921e50e49f3f5cbd63468b9db0cfdf17250c8f13535d4c0a1f21c87967cd798fe93b9b2960447401ef90db22c3adfba0f55f5585ad37040e8d6745184dd536d5a26edec365bd6edff1bcc616cdea3bfc8b9d98c0ef9a626054e361194cd05b2287612399f6d3d3be2f71555f14ad2893af6f60ab61adef663c3c2464ade671dd5ebc71935aad290573588fe6e11f48cd2b7db62e4b9932890d1b96e1b83eff70f026d199db75fb1e83197c937b672613c66ea131f485b4318e27c079b4018d4205484993bf50ce70275b244f2caf47cb47eb2a9ca59afbc78809a912eb56a4bb65cae4694f682c6329c690003a1c355f779b5857a60091b1c3685995a366cb43d753a704d3e59c5f5003c78feed877351e27334b3fdefe5907edd9eb25588a42248b9c4a93efa7cc63bad1e5900b95b70436c35eb85cc8251c4030fab9556920141cca24d6acd3122b92b7e868dc174bf071117958a4797fc90866aca685f1456fab397ae647ab9970348082bd74865bab7f248568db98ced7ed84e8360fa91afde3f23509e6b4caf948349ad9fb6a4efe0a0468302cae7a0f999195af1c19058669fc3b88b2780b9075dc180298498caeb7ba0cf8bd42eb36b1959d5ad3ca6fd1e85f76abd27ec5fb637ee38173ad7d86304d5708b6dc8817e099e77f5d43c1a70624cdb96e4e6103bb25e59eb51d894d1dc533a74005bb79cca35b66e10c61d06b5227fcb071457025d605a0862218ca252b871f8343ec231dbee15688aeb914c0f16ebabe6edb0a489b2bd10d4392c6f1863bb6a62181de7cef61997ab02f3bad0a893cc0cd8a99cd7b3f7773085f0929de36b5d124e3729140c375de9a2d0cd9a360cadf17b9e45b7f2adbdff9e75b743b62642ed67aa703b8ef33dcf51a50edc7dbab42d3d2b49badd2457a9f92847aa6a60ae2beae457a5fce1a9e485ecf907be22913893cd1350f20fc6c81c94be426eaf01864e813a03e4674491b61516bc95d8a77c15f03d0adfc4adc27f27a5ac4165ff6518eda1a5c408708f78a9e26b834179804a312148d4f75f21a77d78387139da40c0a6293c2a59d0162437d68504f189ed970c5abb9ffc6d8e1be2b0877c7f24b1dc273b1765bfc5ce6f4b8d99a96d5b1c92ee53a39f685b304313d909c1ba8130d20d51c824cec420b0315229df295f75b453a6c131afaae0c36d7c4fff70623638a4f7ded5eb7db58d95deb6249a29b171d8ce651556dee8037bf4ca74453a4a76aab7cc07ba44e55de57dbef8542c3851ea353fb8e259ee89bbecf9ce8d8bd6227afc0028afac48a7acd9b4e8cbe982eb1475917ad6be4cdca9cf6e7cddd971b2924f2bb730264801685d387485e41993c3fa0af9987e8b52c21688fd9a9595ad8d1b9f41e0457be18492aa09f69e64e2954d1ca3cc1d32b2915cd9cf6862ca79c80beb47347c4cceadf48a37b29b1d6de4e94717d60cdb4293fcf170bba388bddf7a9035a15d433f20fd697c3e4c8b8c5f590ab44aefdda94681407008ea48d03ff21e9bbb4ae7a9aa37c855fe3537c44106e8079f18c24d2584474bd4a99367660ce6f7e6d7c294961e174366e7babc569d5f80572a21a4bd7086629363e0c9ee2599c8b8863c96613ae6c32cc67ccafc66e1cce79654567ad08e62e9abc99e44d6a79ca4d8de15b7f8a763a4741676af0e1f3bd4e002c8fa1ebfbb3bd3a65ae68a80c230422f98f6e1e9837252e045eafd585ba389958297d59aea1e8e1f665fcbc5f7ff449996aa712dc0faf582cf3caf3dbae80594f9f07fc06de63d9d672d14d7ac4662b4a54f40d4aab2de766910be2fc7f6f679b5708790b5376498d3baf0463dca2f093b51bb7e9f3e7033ba0384af0174becc3bb477bc5e86959a12a5e8924adf0bffdf5e5b9c1cf24d232881ad5c05c5c0f50318ea83d8683339ca6a583c52198c00f7c1abbda282e7fd3b179297338ecf9c923a3a87a130dfc06164e9b4c1fe11d51b382643de44b30a6831dee119241d1b6f84f2484784fdf65e41f78c38e15fb4b00e45df1edc40e3467cdcda351a4c0a0185ac4649e91024377e1c331587a8586cc0a4dfe29e14004c3536d305f5dee0eeb8c2f216c1b8d27375b239f6458e08980badd6d82e9ee9e007578c0a3b48288d9ad0ec3c934a99a8c5741149af937dc82bdb545df26428b87fc935c05f1a4964a8408539f267e23de9bc498e2a4b0083cdb7c8e27de6252bfaf680a6d5b7ec1a6dac6d7d537334a95f1553324a0739414dbdb50445a767b0f589fd4c33b35905577ef5a53b0f097191f9cee4836a908748779941de2a78fe1bde0c2efd9f48cbf232ce101d9df93d3ed40d036ae7aedc3a5ff619abd1c159ca8d2dbda7de13b4ca62576c7f925c52925eae2d7500dc969fe14c0a335ff95a7df1d276a6f242765c781208d59edb5848d412b11638b27ce5a61b8209075976c2a6aae88f6e6d8704fe9e83b425dec4defeeb3cd311b8c5a818d51f917a8a4525361791d5c4fd5d70704d4b9fa9df1ea119882f400e682753a41931712c043c120a98f0fe786a600b47befefc9d64cc5bbe8a16c191490874e258760c9e4fd215bebf848e0b4d35521f53ec5f9308644b785171fc4cc3ff886e034bd833d59dbcacebdae8f00e43c151bcb24d1d226d1cc19ecf349361530a81ba3168af3df5536fbe52b3b93621f57959df298e5b4d3c14928d2ef7b9c977c7dda54242d17f8661978a62d94d565b00abc199790b9b25fbfd4a3ffc35c95ccafe35d9a138a2c24d17f06ae2cc376e822317f16fcbcd56e23f84ec135dc935e58c61b34cfbf5a36cb00350483b6bac786030e5c5045a6b61c9aba7dfaa4f7fb21897539863ee865ae061a77c0359915de3aacb3b5dc8cfe53c4d17b393c2b6bb23652f36390407922969d510cc97b99d1df4361530aef10707d7a021b2d9576b2d49ca88b3cc83ad1baa6d88ef8c81c08f8baaf515637b21ace9d5cc8fd9fe4ca6c3aa129caea7060791d566f4de8662b90f9e5d849cdadf9bd23cf6737b07ca105142663c30de27adcea11d64d433fe1ace84b0f6917c8b655f2a421602f07e0a7127e61ae9859c5e9f652ec82416fd2566f291f417ecdf99bf3231d02864e2e5a1cf34c13f59de9aa2760d8734bbda79576c62f566b8269990e9384a41c1634271acb4c7a8b768f276685c3a8c7f20872e56b683244b1af562c3e7dcf592a9915f44f886cc2ac5f679c07d5aa1fd69cf3a460f25c722073da336a310aa551062d92c7297002060072af2f3500b9310c239bedf45c5e985c2e0d60c7dd68522376dc7b560fb34d1b5089450c32ffcbff07b35a96bb6fe01259a06868d00af697f8bbb238d03d49570a109181c9576c1ea9d2ee02000cc23e63d6c93c6cf3050bbb15b6f73b09c25da62e5abd4c2bdb1110e1f25db39f04885595cd6a388c4726c8d4cdbad87d80d42fcaeae843e2e17f44c9aed25c8f6f9736c7ba1bbd3b839126de40a930024a65aacb872936e446114e706a868444cb140e53d976816983f3dd1d57eeca01eab8211b7aa8ae99d26e35c06ea4b226e0a6e52172a40e7f0df5f67759ae2ee026749ba10b8e33694c3e01a001526f9d75f6c419cdccece3ea3f78d69014e509c741214581034bbc7e2bbaf76db8421154abb2233117a1ffe2786b21424576e295c9baef262e80fa2edb69aff800b3ea436eb827e8adb73abc48d740b86c69d557b16e874038598b25f616afeb4f4a900be7dd0d38b5b6fb4259c51a3aaf4748d7a445f518485ed72b25c7df8ed0906b74bd29bd6a5724ac3a503c990f3697a5db484821f68718470810862728a80ce34599a41fc5bd8bb46dd845a4812ae1532c457ef4211d0e41835e5a6f030247614822571c930c727ba397e723d6b3aeba9244f054e331c82e65b74c9f6504c74b4301499a1a6f6269a3352aff57f88442d4eda42a82ebcf7776c5629f97d6160bffdd8282a40ce2e6375b161e4c22ee53bce7a45f4774aa827e2da657e1a1bc07445f0bbd770b7a5a25b1b469fd58715510dbf8d97af4e1b9459a20b08a8d3fa9d92feb32db95b22d36de0bc8b1c397b09970a6826392fd8392b2d790dcc1295888f42ac81ad213c7328b2324b28be7cc1f4fb8414a7785472f1dd3e11d66017b1756d1697be92490e15f056346d7e9126a1f35fd76cb016fe2841c8996a3507c4fffe7fc45026df10b03b86fb6cf26e8418926a030b5fa62748fbb728fa19dc2f8947468c1477750771e442e4a9d25b76d359211c05df788ade5b7824f8770b5dac0819737dec916ee59b28a49666ee8b7ca81386eec8049542f18a3207e51bdbc291470eeefecac385c096a | ||
51 | MD = b70acba01bd715f542859a4224d035eb177fe7b34d5447e099acd1716ba6d00f515bd02021b5b3015d736b04687544de | ||
52 | |||
53 | [L = 32] | ||
54 | |||
55 | Len = 16 | ||
56 | Msg = 43cd | ||
57 | MD = 7c5f9ed821a021ef1850dd4e0b179a656fbe27b104463720f467db32bbfab5a4 | ||
58 | |||
59 | Len = 104 | ||
60 | Msg = 5f75a437ce0698a7d8151c3fe0 | ||
61 | MD = 774782a9c3023dcef8b2cb83f7994324e3cca35323419b3914a9b6bc3ace5ce1 | ||
62 | |||
63 | Len = 352 | ||
64 | Msg = f88bac738d1e3e10f75e46e3fe026d7e423fdcf3d7e4028b33a291bb4aabca53f780fbf99e0346d610d4a38f | ||
65 | MD = f114f1a390bfc30f34652751f3a38e8bdc9597625e363689459b80082eb34009 | ||
66 | |||
67 | Len = 488 | ||
68 | Msg = 832e5b78a73a1012ee62e00621db7f4d248893007c6e5d6e0e689c6b291baeebc72df9cf10b289fe20e7fab80a2399271d0ac63766049da875eed56264 | ||
69 | MD = 7d00fe393c308eadb8c0a4f771d409e17c9a796e63b45fc8e84c0cb2bdb62532 | ||
70 | |||
71 | Len = 13976 | ||
72 | Msg = deab57cdeb41974037a9bef5e292894038264eb4d8993d4d1501e6ef9c68fb0f571f57b0925640925deae9a6317e3bc4d6cdd5a0833e52fb48baca16a9ba9b6c8ca469a0555763b54f04c87d4e41aa549258f30eefe5a52d2ba06657a8773b0842e094857b6d8911d6a0636280025e56356fade362b4bf4c875cc19be0c6644b447be0454dbf390eb966c03e10e9de3487b90d0825d327c12495e3c89ad09c9d591e55c91376fb14c2fde9f7461fb25450df1a65806b65f3caf4d5c81ebc6e664871fcf915b9578bb70ee6776acc62205888dce2baa4024941209e81b4b35f0eda1bdcbd9ab1d6db6140bda4c41776fe675d5c681da5852d50c246dda4ddf9fdd7c5fdfeec85ff6c883c78689c2977584406a1ddef977606c182d6c33561c39c071668a2515e5aa6f4aa1faa392aed95b82ab32b79a15e3b5a07551ab068455131b72493126470f26c30b852e4415e1d8b719b3803ecc336e4facbcc5d1908851f4f39b776bec8b6b9794d47e5965458858560eed5a0305e260240c0849d93a19787b0f8c795eb5ba32be573845256ae6d0b0a3336e42a1beac8bdde6d1b6e0b6207903d4b105f4af2ef89bd099ded870daea2f170e03bd5f6f4490e60bc222d4876e16d4c58aeea6e6c400dbb9e9f4b2b142f0fc9bdeaf4132ded38a4a8366e107cac7210945fa2df4b124be37ef76290e5b9758aa3bfe0091bb0448206323584c2f833e0edfbdc0c33075fc9647a3404ca490bfab94302a0679a1a42fe9fec6af0cd98038b09ffbecd2832b579b2294f6ae5b96328fdc0a0b9b3a32cba04fa8bae3389c3951173bdc17caaefe526aa386f98670b177683d0b804c5875fe9c7afa233ee66349c9fd1b60bb0becf5e1d887e67fd3baf34b4f90d94699d18d6bb9d77d4af358f31edc254de2d6c5fe3ec07425c633b18c1b9e3606b78b40b543e1fd31fb578cf58c45744fc073fbf3c7d7d607e815379a5fc565892d81560eab8fb5f1ae6771b998c592e6d288014f13ab283d53fcbfa66e31a9d107308402191fac2cf2b799c7dae91b93a7676898b8a6e516a86eac58ed8f6d8ed2fd4d38031e4a4466dc8798b90c48e6adb6b4391d47872443cfaffa542b4b132f6c3408f0081af8692aadb4c9bbd55053ea56d8b82998f6b4b41d331891acfe6af1bb0d6679989978368ea463743b514866d2d01fb9950e8990867bc14f1db1142254adeccf3da812949cd03cd1d569e9d0bab7ca7405cc21096e3cd4d007cbb9629372e98584b4c6b97ad0bc314e1ab6ac71184ee555c01973570ed9b115bed956f9e4e349083013098b1e483f0fe44d5e9849f38a2f7ae152b36a266ea1faf263ea8c706632ba8629602187379546fc6b82e57ededd6d074c15c771754710731e07c207899eb47e8d7c72ffd768c36257d373375ffa06f9b3f0af11417f9ff9f9b44e1f1f96ae8aaa429af88b14da1da81c7bb38a0fe9372ed6a9ac6fb5e9e56b82593d94c5192904450227bf040b7ce0904789f979845e112a1f995c849ec3f7e49bd975a474e8201630f40fc0d80e76019f110ae158cd0f8da96ea4561f24237d8e795ebf52368218bff3e9d5b040ecd2caef4ab1e7127e53bfa2b3b4fb74829f9993ac703192aedef79dd9ad24c2c976638b4575afbce22ecacc273ba43379ed55ceeb51838b0adb80585bd1b5f2707ee16b67a7232adf7163415b24b9ff9dc94b7197fdc89e2a90d2b9eccde45e965edd064dc0d1eadabe11b8ec3aad2742b5d3323ebf913a92817749090c20758f98aef2544d4c8b48874e8936d7ee492d5585675c214deeb74fd67c4d170ac5e0aeefa607c6e37abd4f8238e776fde3921afab75cbd8f392d3e88da057903ce2e140797f4a85737bd89455e6aa27c7535687b78cd0ea59848e006c8de9c9c0cbc7a9f5e977be850adc710503ce4ba7c7bd0b042297f518abec6c8ef451c33e030251f506cbc3744228b6bb4dab86877d9e6019a0ea9f39ed37557b3b5527c171da5f013e0d3c480a038cff2c087d6e5d41b17e6c8f90c334b5e2b9ccbe9d4efd99fba1f907d00a49b71b5a08aedb644fed24bcf04e71be67b03cd20d53ccef8f854f5e9f7f28c1e98a8a53496646713bebe15a93f1ea336e6e8a4e68de5dab0fe880bf983eec75d1c5027357f6669e098411e0bc3ea2293138f5b34425f78b6508b94d4c0cc32ee9afaa409a26e5f2a1fddcd6d5ff42a89755a58b08f243957a2e208e24b055f51992ab447bc06876eba169c545fa71b88a0fc15d1e0be9d334a1dd0c86f44bd149b42c07608a9a30d0b7e13574f8d862f2ac72b2ed38904d7cab194fdb9e4dcb615f5610b24e202a36866baccac01fadb575df11dd43e00a3b92fcdd8c7702ea49d951e7dad2a56c075730b4af1ceda2bcb2310256f28312579fad40ff471336ea6a44143edfcffc297258d48bd2ea47efab8f0dc00f1e6dba1a55009ed627b7 | ||
73 | MD = 6e5905b22cb95e48b73c5a885f5463f554d81257bd26301c4393d57fff1c8323 | ||
74 | |||
75 | Len = 48824 | ||
76 | Msg = 5223e2fece634a95e1e7c83ad4a11a0478f4a41572bd66c2d7902cf4f94404cd80b1f58fbcb8eeba3984fd759410c12f8ee922865f363f684df5a8787c87ceb3086fb8535157f7f39653dbf5c66ae7219253838ec77cf1c6db518225c5ba0a8212e5911236474b8820ddcb8111b87320adb82ff553986324aa2a21c37ce4a083c89ce9931290d4c1fea933e31d014d7507a28e83aa917ccae10bed1a490e77fe501b299f8e3b78e659407ce1934d5d68c7980800746f26ffa9794ef1d23f793bd2eab7fe524e213e58280f441ba48b40162305335b3a480c2afeac11c27f8d817792fd7805d4b61224eb52d35c0fbf471bcaede505fbc9398b216f43bfd69b1a669a61d44fd21faae410af58ff95e1c3ff1528de1aba93cef56bff4d714d8c4cc88a4ddcda52444ec1208d99ab3fd9fde98c1ee6437d8d138f62c5f782eb4660c5eb28564b5b0d46e3a2546009148f3d02b837c5284e9f508290270b97b9b29e84445a0b4df662d9711e6b73c11cebcb7120dc427034b1ccf57d8e4f5bbdb84d2e1d4bc3862a2b51931d3c9a7a5fd6ee5f4c7327c338abd011af638d730141b6eafe63469eff50f473262e9fdce636eff4c5663acb6075a4fdb00c8b8a8d3322e1700a5b3e7db90b36c1a94991b8f51657121b442db6f890e208f312466778d73bfaa8cc0ead4edd0776155f3eddf9abb1bbfc0c94421adce83d7ee94f99f61e1f25a55fb596f8b40ccedbaa8e5e2cf629496f5ca60bc4cf36d917da4e2b973eb57869dddc409dd66d5061f22642743fe843defa0b19dfb2f56425abeb234181267b5c0d2ab4268c538510feb191bbcd1631b0af6c7451cd4c641025cd8bde2d9ab6e6b948f97c1ee6f35098d553e8e9da9b4d437125046864633f109d6a558b38b270a7dd1785d44d248a863a91e3db5c0a1d7ec133decb65e81c3402c98ee329f660a092172bf6b1a02491895394ebc506882805a6c93e767c0e58a5af717d950a206c0f0055cb39ed88816a9fe3613d15f608e486ac08bfa67d462d24e6a0a37716d3fbdaeb9c0e951c1e847fb884ebc1cfe707dc6e7269eed1c44331d5957bc4ac9dfeaed4b157204a3080fafb9df8917b8d15aff9c49cdc739b8fdc26a546794991c183fa523d14797e051894f48b0d62c2b70834467ff9c993b82fc1152c1f5479ec6144c7e8fb10d1bce26bd1cdbeec4e95ee073f3bcc3c7367328e30543d371b27509a577f5c79f14d5f687ce62b82f856695af9f7dd350543ec763de75b593f1859e44c2ac01ba65f98743cfddd8a89a38115badcb51a0ff5655f830c0122af6a830aec13ae5eb89a93755b3a5a6eca233f21cb12db545a24a5334becb8fa32c3d7f5805faeaaeea85a551fc62c94807faa6474c0d74cae79b5d8ddae07498fcc5b8b4f394867112ef5fad1c9da66765ecbc7fc0f3269d29c9c38817c77778f2c19b5a3c705fde9d76a4eb86aed4a7369a832ad267312903462397f7b8fecfa8b195cc2316cd53e48c3371ed2ecaa3e484b8ecd2e22b1aee910c51ed5d71198936266f5a00655d82c089f49295feda0a2bcc1a54ec8adf565acc3a8b2d74c30eafbbd843c59e67f293f6d8296cf7b611f01b57dafec6e2d4d411a633918068c38ef47b72ceff1fae772891141c3bc496824509d78165c1e4cd4b4989321a8722643eed69950dc120fa8da3e53c3181f252d7c4cd2cedf8f086f788ee77a98ab5b019828aa02108f49ea4a51f457f7adfd2220d3e59d5f4a29194e8f5eac40ff80312ff6888ff6393c3fc0914b08c1b9990d247ad80a441558db1ee1203e07353dd99a885a7ff5d791af2548815dde0ca1f56f89d39ef6b93dbcd0cd54b854173903c12649587433f0425fbcbddfb66ebce3eb4800dfddfe7fc44d9b23a3916b1db68c187da4dd13ff0157352814b1a792de7fff855761abc6fb7b93b48525fa90fbe3a51dea974069f3f5fdea86387eccee13f58a8eeb8abc6a43fd30e9788c3bd9ae1751b30a82d420225b2abdb1bc121b9073380be16107188d20be54f2e9c658d5b443869ea0e991c496104086290b6edcc1b656adf94f0d42458750fbd8d88040c518ebbb644f4dc4f7c6971d8d60eee0272df7b51a3d5248b4b264fb22195ad891fb6ac994ae5c0bc6714ae0b0b9a484edc576638b78ee89b568195a8f33ed8362128c30f9b0c7804b3ce1355abc96b15aa55c1e16a9e9ec90d1f580e7cb412a7e85d8585bfb950acd4de5865214ce4db7f6314d81784c588c1482d5f28c5fb62e7dd7aa8237ce9396ccde3a616754414cdf7b5a958c1eb7f25a48c2781b4e0dba220f8c350d7b02ece252b94f5e2e766189c4ac1a8e67f00acacead402316196a9b0a673e24a33f18b7cb6be4a066d33e1c93abd8252feb1c8d9cff134ac0c0861150a463264e316172d0b8e7d6043f2bbf71bf97fa7f9070ca3a21b93853ec55ab67a96db884c2113bea0822a70ea46f9ae5501eb55ec74eaa3179fa96d7842092d9e023844ed96f3c9fc35bbc8ee953d677c636fdd578fd5507719e0c55702fed2eaf4f32b35ec29a7a515bbc8bf61f9baf89a77aeb8bc6f247706c41d398cae5ec80b76abc3a5380001aea500eb31b10160139d5a8e8f1a976dd2dde5ce439a29dba24d370536a14bb87cf201e088e5e3397b3b61477c6a41e22a98af53cc34bc8c55f15d7924e7e32fed4d3c3ddc2ac8eb1dfc438218c08c6a6a8eea888b208f6092dd9f9df49e7ede8bf11051afd23b0b983a81bcc8d00f7d1f2b27cb04c03aeee59c7df23a17775ae5984eda788eb2015680ac5610fb1380b4e7d7a9cda6178dca98690449f5551b66ad2826cab2b662f56903fc95b4611bc86f7a834a34ddc3be7bf142c8baa096abaa3cd51ad0c0b6d15e590eab9e50a4c60c91061f1ed6373d91974c1ad9d263110a0d43fd8b596396cafc0ae70b7ac24a59bba090a6994ec483db7ed4c572f723670a11c724e8ffa2497d8fccae37eaa1d14ac1537eaf80efbd2e597b2ffac97f2bc3cd2c4017f170544dfbb0d9109478fddf06ec0981542bc8107a725be25070d2cab4716f4edfad75fddd582ebd363c49e8efaed9a76ee51f22304eebc232a4f67f865b04f610a628fdb317116666785fe8ca30619a07c83cc449855202d687f162b12d93b63af6e7ddfb7223d4ab998a5f450523c1d521ab76f4aa113cc2967e04a38dae07c51c2d0f44fdc8605c3c53ccee91a2c73dade5dae021cbc87d5cd6e5fbefb65335827311fe1e91921ecd66b2055a6102d7a976308a80c44e6d47a67718c84f2112d65486a558f1f269b91d9f47e3e11d09c0c748625bad2718e3674898abdb19d3644bcdc9317c09a3ac02f514b2a57e6a706362e5f6e8fb16cc83daea0eec85fdc8c367d84c9230730291440a4b109f7034d510a3f70a22dd4fa69e8b65e5fdf87045d560eec71f4e59531c7711d4f8917a96e22ad07346d2f92a13fb4569fa6a075da6e1acad1eac1cb2ef19ab452264de2357c927c6dfae6598cbc821eaf3b8da754ce91a96c702c95b2c308bf3a550cbf4d22d417745b5f17d36608feb826b862747c59d26a0e8eb96547a1852f9fbd095f1c5d20721804941d462f3ee2f0876ee2825c8df24c4f00f0844e50588ac688127013df8eba3c971362dd255420649245e880212cb3d732fb82f866dda090040f28e09cf1c86eea5dc4fbfc373eb69745b4afd841ca8e172d4a8510e7698345fd4cab9ec2ca0453a274720bb2d2e5468bf0d0f85919dd762fe3df969e6c071285e25c2e2a49659b8a78289aee655965bfa3cbca9b292a19a855ec40293185354ff4da9451ccf98abfda07f1137e79bc89d688963081dec641a99656b040637402890f185edb28e7e6a2f65848a6af158f90eea440aa6246a2e6c31f5d220b9846aae2027afe5a7caad6dc16b56463367cd9e73bf22a1d6172145de4565ee369c55e3b99ccbef70fb080a3748340fbe8f6b95ba46e8b76de5a3c4bedc37c55ae24ad02267da26769a3a732badac2e0f3a5393028dd54d78701647582cd04c8310e9f1ff1b433125229547130e1737a1f33604f0d670ea7221097c3eb9c7fa4b8293d7b429af76191ea8e481dc1da31344537a09b33404d782eda1d6f5775500c1d8efc615778baf0905d9fcba1806ef986c40b1c6a72335104376b58266c36f5939a8b95123e8635c0c95e80aaeb97379b1179d6332dc07539b595ec32eebd3a336a1128f3cf2e2924db6d8504a516b62f26d012b7f75cab765c8374a3824da5a405746023b51894649ab422d636513ee809fa181d5b6fbc63351e37a1b14efc8f739e86ca78ae3e280f1c9e4824b2976ec4dd308ede6171a7474c7f530128089bbd75e10f9e57ee17408b4384f99f886a5f63a2320a9b90eb9bf692e1fc449171eae3bb1bb17a6ed937ea57af3c82db84e073b5306683e1d63705b9742a085fb802cf5a1639818417fc2223f476c2566351f4b3b17a822e11255f3c3412dd39190e200727bcd3f9799519ef792ec7c2b0b9d0e2dccf013d436dee63483c2ce83c15c00a76c4d894a60cb90366ecf9e61221ee8bdaec66d715159876d8305b35c81f96ab2cd8f81f4769e9a6e439c08c329036f5d2591ac42f2747bc0e77d4e566358a3271819b6003b290211b9b847ab70e906aed9f86cc38aae27e1098fdc3bd5d84e66c45292183f198bc329cad794aa4e430534511b7d9a75104061b409676a16c1146af0a286e2de8bf51c4a35193581a902bd3224cb9257c961989042538092af92644a63d6d6f6872a29aceca39341ad29dd22354812c4b7c7068b039ac9ca7e6358e662a28be001d4aa697ace540cc3ed3c97b98d8c5a6fd3543ae9a7962c9229b14b0b646229807747064be3e83191cf24092dd67f675638d9f6510486379f47f5eeda870a3187946819ec9ed05e7b325bfd0eed5c9a0f4a2063d63c1a8a0a309f586c94d4a68bbe860ae9599ce204c92cf9d92cb460ff99cff9e5a8b3824786360e1e1861e71158395faeaebe7aa2f61f76190f174aab9a313f0bf4f1befbbb22768b8c22719cf3fa9ec908b576fa4bbc084b1ee5b5a7eddc89b58b45ae7b421d38215aa6e49304323eb4e202655f3c8b16ebd6b03058e75a907ee63fcf6aad5eb96c1e5faea81b88b5eee525c4663af52877c0f759432913b9d48030903e7f9f70e851cd4e20bc56aaf36cb02293d992b38b583b8f0b25a08c3303d8af5b1b37f5127f7021b13934645ef3020e5caadc5e7326ed4ff56f797e26cb986b6512b0cc76f1d8e7be44aaa88e12cbc644f14a7feb979d2ab66907063c51e052d0f8b25d827377fecc5111be0d365e08d17f559e3134cb9db294f1cac03150f4232f853ec15ecde55fd1023b58e83934869796400088e9177e85a2227ee45addd049c1d6b03e5b29dd570496fdb2fde7d8cc74fbb5fe76266ebd90a3b4d57e6e6cb9f0bbdb7ca03ae955915768011c714c909a27ee20135927af55d4feaf2c345d029a54af942da6f85f2103345d059f66864e6b0578111e2ddd5a1cd8bbf4ae35b60747b93f53ec8ec64c10cf4149909b102a2b88712ff3e5ba3611cf96585a6b36fffb64b8c37a114d6b16a53879136eb0b5e003a5a068e3e8422a4fc8d7c77227cce64ebafcde2437166b62ccf486660a7a2ef37012ebacca26ecd5bdf363feeb06aee39050974c25d6a564594c67f56fcf7ed48b07fab4e25ccffe002bbe460325abafe37f23dd9c145b4667f146a1635e462330f02470b35c5a2519f1350c02b263201ec9026cfc57d3659373910e878f2b6c1c5be774df8e01e775d476956c257bd0ccdec17ee939c46e5653d5813eda752ba7bbb245a99a5db1ae55d19692074c2e5820df97c502a4bd1b12929e1be8e9ce6d802347c3e9c4202de6046436c05ab55b2fcb2c227adade6c2046d98102cfd0d859a91f8104eb9f6f155da2acf93df2405bf2c083eafd3ec41d60b810e0bdef6298b21193642a9c0c646bc6771a5c61a25604d96bdb727abd5a7ebe4ddb2a56a6ddece26d8007b26043ad44279c3c8ffb7e6ffb3cd4e10ea2780f509a8a9bc31f99a7e66201195f1543a0a020f754d9a665a29a896faf673df6811379579891374c71b2234fc61e95d4d46f15d44bdb4d7c3b3be3f46410ca46827b8cca976d8866e8ca33c4945d5c87b705588b78015b529843af0b75a7e1e871fd276c1e947d896b92e6181ab7e3ccc7077bb57fe85a6958667d3d7a790f6cde1cebb494c2912478a0eca2bfaad62492e9f1caaa0cc520da08c0d2d910cd44255f4c2ca0646dc89e789a1cf9a28e2f99315d33accb1639cbaf0c94181b85fef648bb4cc7f66dc65b8e90bf5f3b763e58520098febfe7e47bddc2d9cdd5e40dbf4ddb8d51f51bde2e57432266d248d13ed09e62f66794d188f9861c50ec41f0eee30f76f4ece250956733ee97036098db41991a4a3eb7816196c8e447db3a2913bcd992174a7bde1f42d57c764b47f5bc09533760c1ba74943a0dca291f2746bc1fcc573f9a22c72a5eca347b1679683fbc8f32b08d381baf67b7266b14b3ba46a04a3ee45881ac452f64df1bf17f70f4cf9fa4dfed9ae70184679184784a0451d2f5c19c02031e0e4957b4df68b4a069a6f6f6458f6d773924a1841ba664a55c2c3187dd33416cd410e56e4bf8d3671cf737bf67df2a4cc4dcc786872b9e2dc4009fea0e48a749353ac053d80e36357d24d468dd595bc823017c015d7450fe38149370c5decf13b00b6b0e0a2567ac08b45f7b0c8a7c89d227219d051d17a706ccbea49a42035cb327381568eae23b5e2a3b7e8beef6f260d24ab224827ca8ee9d640dd23eee94ed02c9e26abb3053cbfaeadbb1f365a24d8769d92240da842e0b361524020b5c9c22a2fd8602dc9600aaf02b35344309f6bb018a94d4cbc9639ab7430657c4046f0b25df517e31626abeedd58c2e19aa0ae1a43ed2bacad91dc04a2fdf9cc33cc420f4f04379e95988ab36731d5d5402d89fb47e826f4243bb206124364d63564a0872f8d2826eebd9046c7c6f2e7c951e49d4b22a7eec89da1fbed890d63ef15f26422185143c89da3ee269f83e1de11a7467822146042be92295a585e3a09e720ec522e1cbdcb41acf5ac45ee892677ba3ff670d71339a76ed98237be252ae21268e756f05ba0b094a1803f9da84a8a05d0ec9456cf565e1b548cae95eafa0fb01f091935e6eff2413bcb15f605f15270408216fb5b41ed83dfa1454c522375e35bdefe54275f109d0ab450636ac4d8e4d9e27f2d81a15b8cc5e98549254a1c9162918db3e399118f5864774a9d6a2347e1315753071eb1204c8bf5f52b1a0da37e484ebbe545fdfe6b031215678c3b83a19a24d7b661f626beb01eb82b384f02f42bcad4f40addd48db8a92b90d2297e6143702056123286617f86fbef4fea940f648867d790b8f803abc5f4e0e3f4226954c296afd96e287e21b7243d05e743161810da578096521805edd81f68a45500f6a3a1885cb1f45cbd399dde024df65072eb973c827fca13eeaa3f140842016f509aa9ab4603d2457c92cc9aef24950697a0044e3d7c483b8d8391886cd50dff8c2f16de3d6caa7f864c1b3874750781b2b78b545a94b4da0b0036433c6561f5cfea50eae9f5645302eef18238473606e9b9931880d0f6368fa9970d1ffbe59c4454bf97f4a5e8091801b53ee4a209e0642d83605836f69742071aaebd9d813b10f4ccac03851ee9f20cd1351f8e68554c9bc5f58ad19d474ca128edbf561d195e52ddf3c19bee3bb597ac2f92143bafc98bc09fbda6d18dd4ff2a93cd2ba17f54f75c32d3f141468c2baef4e53b6a340286dc2599bf7bb002aa86688e26f5b51a6aaf32e48ffd539d4f3f4bbf0cde2d20138151c82384f9ff29a634ab4e0103d93340bb9a7b0caa108bc7fdc88d7de14abb17e9efdad2b0f304f0bfcbabaeb1b9db75959dbf54930e67aed3a9c8309aa90506b6b9ed4f1d06c4ced19746e206e1e9b8879663bf56bf6c5c920ac5e09e6579b780cb63e1875ef0a731b726864b7ae5705a2d6d343a4a213a05928b7337a59f900fd04472382610e2a8d25383c9ab5804d609e79a88d70eaef3ea22d3aa9100fa2a6e98e97684ade9fe90d6bfc59dc9dec3d3d8db8990bc2123ba92e64253235e9b4d682e8aa04e23fb9bb6248a77c065e93249de829bb2fc5ea9e396461090222816bb29bca37bf86698fb995f62c50110cf418bbe2078a56c5f1ec9fdf3d0b09a719ac253b5bcd00932ae058b86611aff51c8ca8448978615854b69b0216a6eb8050ce199fd9a13aa0fd652570a1b187f61e6831b3a960521c3705da8c5e6c64c7b196ed4a49c2912d77b670b177c6458a7a49ecc1ffd8c57c0978d2a05cd1f1c7ac9514dd14b7b0933a52cefd40b6452ca0903df1f55828025c7e18109a6e0f2ab25724cad2d6f57cb5d894a6a508134731e9b9c61254f64990941f4faf97394b634b91860cc6ec346aa666600d323c849ea4c4a0ef55acbc56495ca004f3fca42ff0ffb11b0e1164c95ab89bf1db3d4f575ff334d4e0d7d50e0c54c422eac5ef78c5a3be95f2e18872540fccfb597211ec79d9d47b6cf41e385b9c2e92122167fe584210f63bf919c620d | ||
77 | MD = d7c901f0d92a868dced7e2659e90121108611dd7781325fc57e5c336c2279510 | ||
78 | |||
79 | [L = 28] | ||
80 | |||
81 | Len = 16 | ||
82 | Msg = 3dd2 | ||
83 | MD = b7399529fe614af98f9ecd73e45790406883cb22e3bdcdf28fadd033 | ||
84 | |||
85 | Len = 104 | ||
86 | Msg = 3d232201038fe7d846ac1bd4c6 | ||
87 | MD = d0aee5482c509540a4ea4b902bf42fc8df3af6de42fb14e903d1b2e4 | ||
88 | |||
89 | Len = 352 | ||
90 | Msg = 44c98cfc71f82215dadf494d68d1d6b92bb4eb81fa0fbf945a659d9aa2c2302b5c93fd3eedba31e479e29d36 | ||
91 | MD = 56c22e6066cd4c4d6415c5a225257e7f888b317ba4e98eadb72b4be0 | ||
92 | |||
93 | Len = 504 | ||
94 | Msg = 02a5c7b1b749d6d49bed302d9439f23ab83020bd4d573906f4190e74216ad33aceab775f71cd31092bba5cfa42f0845bd16fc1b8bed6434dedc92f80b395aa | ||
95 | MD = 33a84e66cf1ce6970c35807db25e05ca05809e53d4e34cda9bfc0045 | ||
96 | |||
97 | Len = 13976 | ||
98 | Msg = bd70deb2cafa75918308d703a6783fe9dc5e3d21de9bfeb6dbb1cd531ed5dafeec463a02abde302d4ae6ab3cdc2f0f94865e38339c88bde507ff71bbea6b30b9851cd8cf599e950b8c8e620c90adccba0033f934ca66ea0a936afdad575bb6235099beff1a632c9114a8045a0919fdc21083880eb05c0d8c489c7810aecef4a41766f67c37557e28a9db9a0d909c2b167ff7eba79693afd3ee3aeace38eb73a5a02a882cf89b123812cf2a0f6d5edd1d14362ce9c43257474def5cce3adbba8cb48e7af9a45e702a182dbf47e8869b3f99e953ba81628e502c60d4f8ffc551c31b3ad6ca85c52164839d5e9d493deee4d4b76604174bdb5655385d34ced2c1b09dd5a486e1f9ac501bc611f9d7aa5c748f496faecc14c6c18e1dfc6aee2991bd0207ea1701219955a751df43dbf66f57904675a0e9e6d7f9a0b8bb82a8f44951117ab2642d6671daf1e5d1639d48aff6a05781c2b5e8976653b0a164445872d393d30355acf0bb49bf2bed4265c9a3b786249afc7a438d706eadb6f90a7f93ad51bde6d2c8e6ff09dacb3dc67ba0d3030c54c8367e1e4280bb5903274191344610de61c3c770c6820a6cc9d826f7c743f88f13580ba23cfc00598fd733b5dd069bde7f10f2b8961c16b69761b0f308dd137f844a67f6054e065863f226141755b96645a291e3fa3fc853b2475fbe1d3b25ca22f4da4425dc95fc855e63d6699b311ebd5fec1c7753e6e81f747c808ec3f618f63eaeb1221075edff0532225c40ccadee304a8997c03920e7ce4e60e4df4d120611296786516dd4d9cdda2077ac52bce0fdf552e1ee89a0133f1f87a6f6f35f5c53958ed806465919a0a5fa42488bf29caf33a0dd469e13abae351d5c6fb1a800ee384da199c823c965d9d5457a3ef8292c4d9b142e3f1fb502da498eb44d95f8c85bcd6871bbdbf004bfdc09ab35758f5e8b6a0d0f366c3b255333c52c8fcd4ecb4536b5f6e72897649f3415443612d72c3436505249a344feeb04883f41f90ade40af119014b3c56fc108f1ab0a77087d9226665d416cd975e9e4605529c032e8926002a70924820c6c7e264a794b2a3beb63d69ae56e017294fad4d611cbd0d3847212a38f22d623eabe3b884a36464d8814286fff52c4dd366f6c2abfc2eb865e0dc9ec6e55ca9d81f1b8cc47e2629bb162e54655bf2a9e156ab0bafb4b8ce96858aeea6e6665607a3f268036f4890dad759486b15e3c9e791429ec8f11bae4ea7c490656fdb0551dcf0b0be017c08bc674bd97d9d701c3ac955e2941ba7d5f2ba122a6f0c1b164b1caf2d50df111fd4287e9e195d181f6f514d7dadbefdd4274edc234025b727680576046842a834b6ad89eccaff5c5209bb91d652357e3750d8bb0165572fb71d09fdfc60f6b1e5d868c67c0edead427e7aeb734e29b96e03ea174b6b1af523feacaf6bd745ceb1bdecec9251958b7f521182daddf62ff6c4f58977adeba81c616ff2e937ca4f16eb9c44e63f9e974709122083ae45524ff87d7a0cca33a90f09b660db0efeb393c61967de2564315827ef1cf42b71c0f822f471713c9d885a3c3281d7c95dbc96f1c6dde0af70ea11232b00a2d215ec8de8fcf84b6193b6ac9d46de660361aabed3371fa44a6f32107f3854262eac355f9ef98701f580b4649175cefc29950e7a0eec958f629999c4b0a98fd4bdaf5c0bd97c963b551f2220bd41ec00b8726836e949e818a49aa1ac5bf12c64fb9991111ce8be3e0cb9605f753dae1a4c84389416f17fb66cecba45d591b22d64e5a4edcde067a088d9ff7f5dbb9dbf324510000c55d50f480a640fb22da9b4862dd81080d61af9560b601edb5e3346263f5f193df97079a27e3f9876078b80ebdcdb17ca4c50aef0c8329c72a7f77584cd963e105eea9c28a2ad4e95c1d018e27d0e720ea59147f59ad796b80b6293da8a55ed47e8abdd37221db0a5eefff31688e2adc294654ab0fddf9c1ffafd4783f01eb539492cb35a77315d0ad19395f47b18298a7b353dcf5bab0b2f193ff73d99310478d2e5c4ff1c68a2493c138818edef73caec9977bd4eda6249c8933953e06d796b288f78b18c343ef561082fd03bf92b084afaaee741de3004abaf746350048294bc52450e31147173f2da13d6ffc5adc718e149f9df3702f414dd3ee88296ae8a0106b071b589e8696401da7993d58a9bf8e5bf417165498c96b4ff5fd2b45bbf88f551688425122a3737ca54b2992fdb4d60957a93097222c3cf4c45dabe18b9d6a69e6f27567d5adec489e4b6812c29a8fa52f1de642b7b0e749c16f54473ed5ca2fdf2199e885fed308fa62a3e0deb7e0b8e439e25b3e9f95d755fdcb7ebee9d73069dd57dd1cdc5145205882023b54f2c9dec6cced9e3f6d24e8cdbb8ef121b8f3eded574d81908e867af5ac82bfb8ed60848b4bfdc1d998bae3a9ca80c1c49601d11a40409c62b1536f01ca67 | ||
99 | MD = 60700d4ef068822d0fe6df450b4aa8e206b2790d6dcf973229a59889 | ||
100 | |||
101 | Len = 48824 | ||
102 | Msg = 5fd54472a44e4476d254c0940071ad42dc723354f76ba61f63fbb9df80d1ee56136f51b6982e66c1da83602fc08093506a9e2cf27cb92085ba5c627dd63f59f8850e91a1d86cb1d4ca38ad03160f3c584b128d9b21e935570e086d3815307ab8df396cfa0c100bf6cbfc0fd7a8258fa1a656bc178e02cfdc868540d8e5ad39dd46794a8bdc205e710555ee7421ca7475a4f3232e6a0cd55d4b5d4525f0bd7eb1e455931aeea6918b9fceb2a32706d31a6d7028a85e102f228417e2e7db68317ae155af70eda98c8dc1ecc32a62e294d92855354c1114c5735a3c81e551b63a81650107557f3237bf953989d17c65a0fafd2bb1e32c237f98f55389e8f8b0810e97e201914c487a68403c6d621a98ddc515780435564245d87ce462b8785def699f7f06ebfdf33dd1ed7dd5a3e781348298c7950a387bff7d1878731d7ac66ad9a6607f2c3a3b6843c2852a5e882a8d78ae9dce2a79d595cdf09626dfa6f1dba7d40ed21caa29e304e7dbd559a89bd1f07d84165dc259ef112dc6e2c5a3e82b1c50106983f6c4965c85073c5deddbe6323003d56abb0df590f69010981ab3407e43eeaa29c6156995c492c931fff1b686eda3741a0bfb9094747d1620b2580415d431ffd6c02245f6cb03e39f87e82834dcea59355b2ba663ce145d2514e15e2b2c60cf518ff510c6c3e2f16d2dc523832762ed8352a320462ddd4d6fe755350672038163d996b44ed3b85d64989291bdf39398cb996de785b9614ec5d4bd73efcfa37fd4470b17d6240b8e4c715759286b04c3d7d791e2689927c9f18320ff2e6bc7306c805e23a5de66eced5f1a630cb43dd46db515f837f6b824b99b86c10b6df7fcf22d97be05284edf0e0be597b3f9c63556db031339f79ac9e6c5f8a1cefdbb4b30f5bcd23c2a4dcf791cbfdd6460284c5af0621ab7c5571e40a87c87be459c85ec81d746930dea24f43bb11d6611ea83409d3bf4f987778d8eed1d5b246a2112ef78ef0252f9ae464810c13f02359441d289958b4766807d9a3be0054897d35b01830deec1151f9e3d42f92b80f4aeedd65c78c6e98afc562a3bcf6d72f238c6e94a38f2288ac7929a7a61c92875c1f115c0ed8d261a727f0794f17ceaa3dabc717478f6ce7f2e8b295f000241e154b4575bfac8483f6b62f9ef4e18f7d341a65faad5e2fc1ddaf2b09adebc155ff09e63d5aa5f95206e66c7f4ef2ae3aaf3ea7c93589efa8c552df8d203e0ea181c1703d7023b56e603f33b4adb9bf44f7af290d8081210f327a6c9b0785709346087fd090c42d2b8b2711b9a1a5173eb5e246320ee27867ad6c3eadc4407bada44561a12cf5d53bf0448308bb536a8a525eabc1410c3a34becee25fd6fda453251ec229b53751f2280e142c6b331daa659ab655b78cfb08bf18e40bb02b7f1650eb2dd4ba1707f0aafa219f21c29521581ce249e2e34f5656b0a04c00485079b040e13cbc038bb9f17f47cb8f908591b26bdc28538d8baffe4cc39b17d2ecffbb9698bc2b8b31b08424034c051b535e0cfdf07b7a0a54781e33ba739759991aeb72c0ed992cbe76eb8ec0ab12c182e8b049cbadd6e82e314f1bf15fef5ae95dc86bd64b8556766f8ff62c33492198e454e5ca59ea856d8e095c04da8045522abac865506096ee1cfa1082af08ca09b3533878ea3580b6c0c57a615e0ab768246b3eda96bb6caa01a2648068e21959f843d853e948588e8c0bfda364ef1f9fbd3235c27916562eb0214891eb55ae0e059f4bf7d1838b5942656c27899dec6d67b823a981d1e1e0aaff5323b0e3d69a7dddf9b12d7787ab763a3c7a2697ac65b655aefc4bae7e6444850ad2540d5193b378682c77a4dbf9aa22e517e68cedfd1ba32e3730ecaa2e3f6ae61a4f427d6e69071dd62a9bf6c860980c9d23ce1fa82a1937e6dc1ce3a2de096b680d23d89ee102912ac0bd769c1c02095678dbb00b4430428797cfb966b2f901480811e1b9cde358b6d499c9e93f0961f050465d7b0c70d4961e75a9fe40a24e36eaad27238231dae6d0a17f446c16bce7348e669be563649eba9f23be29adb8b10f462780a066ae573f74e51215a26097b02469c25180890e06acc53ab063c742e08d51359b0a39749b84b9f6be44f3ae3da8e5a2f340a8607d4eed08877d007928d332d6f49502bb5f416c46d866fc87477c58a22d3c5932a8d6298c1151daa032c84ad92f8f90b8053b5aa6f690d1bf682f314471cbf200f3d30959e07adc6488dd17b0be5279e727f3237b8b4b19b31a220dfe63882937f8d5ead677608c42a57217f2239614c521d94559290e3b0ed8055d5474e96564224f6ca6389b40a71337da11e1c307dead8e4eb43252cc2f1c49addb18781cf20acffd3db693b02e5c8ecc949b51b99005529e0149a13390615f5df6e0bcd68e1ca82b0173d25134dbf76dfe92daa085d3f6b1e4d18217df41b70c4c40101884c2886495f2ef8a473bf23cb47ab6533c93cb38c36c6dcf6837f1272fc91a6962b6e1386fb643e1f1d71fc75ab58d5800bf4081217cdce0c7ae9e3d25de543fc4444314f32067eeb147c08c55c5c8158ed11729837547f28a300eccc312260215f50e98c4e3d4170208a50a4a4def1243538f906df8476b0c46d3449be73866d463d422595300e160840daf8c906ae4aac13a64457853b0ea6d8c32f4efe3b48c0b1450250086d459648b0ab14fd3f341a4a803be77e56a811e7a26827eb0a1a9454f90bc6ece665904adaa3cdeb2c4847858fd1d79750e8cd45d8da9163784b8bd06629410502debfed5eca3cf8fef0fa6bdcef6efaaf35a1986d6fd68e0f436dca9442077a4818ebda4606a94a3c93fda46e7ef5ccfef656896a0d3d93566b02ed8c3f6174417cdcb99a415b0c6e9816d94e64b438c295b4bfd69e0d9ad52911de5509971b7370593160629b641d690eb2828bf363857983e3b9098fcd15e66448f786f196685d2ceaa251b17ad06dacd614d9fa78ce0a8b9c1c360b529d0bc1d17ba0b70ea8ac1b8d67f6e5770f0cbaee0b38109d26b09493060dc851f5fef121e83e30aab9c3efc2b8397e8362aefea1708f7ffa14d3656f7f7610f3a629bce14648a593250c6f309c02c6c552bb42984ac58db920dbc7d98f59295f37f3e9b99da55ef074ed65801b390366669b4c7aa1c483ffd23082793f9e5cbe30c34250f63fa3ea2cd097593dc67e8d27b7e4f07e73a9f7b33a5ef6962df1381a038d4f58fdbca9d71ccf640b917f631b75d4a2e8ba46c64a6223f99cee30f47c1a935dccc7f054fc39d3498c824e10cc3ee337e781a3971f0e98295aca611bde701c2359858914248f6bafc88232bbc27bd85883b00990bba7862fd7a7cbd4c86df049071fcd10d686613ec877758d83927cacc530bed9a596b5b21c6fb748c379d676de7e05719a867c9f934b5dad99ed97dcb4e70a9b6542ed5b2f086d9f56fc9752e788785ef8f7837a31e433438cf2f18f58be37fe8412f6d21a5c35000a5efb862926700079413f76ab2c3e79e20b516eba9d8c29897097bee55157936607cabaac41337ea4cc783c0809c875259f8020e16d5045fcc39ac796d11a82f25fcc9579bf0a010200f5745065175fdc15474ed514cc796672c59637c3c8f236cfc9c0978a3db1194680c58c27746090d76ca09f7c48ee4ee7e1d3cf0ea70dbbbd88e30e8814b57404dfd7c33727a0c84cb7bd468b0bcb3c89b526679c00fb0892d2a5e7a3d73698a3db53fd7d78460cdcf24ed22b5f39b8c00b3506541ae4a5b76fae29c1cd5b0f8c3ce142e0af7ae4efe3fa4c438a604bf4a9abb41e3fef1b9227a7dccc3f4d6026ca289b4b1366d9ed546abbbbd5677c8d582e79e2b544f18dc23809ab753313d84dd10fa3ed2f723f0b46277b8877d4f3e0665e88c50caf0f0708b746b736b00c8c83a7d18500384bd035996aebb7da8f09fd6af9b76fde7fbfc0ee854d7ec02950e76abd23ffb27a6ddf1772465016c79b98a61bd3940547b207b6507e32cb9761a5604f0f546834a8edac7ae06910045de218d761a4accea886188f947b57bd876491709028e2e24b075d6b022b51af1880ca16a8c65b7c69e51b2ad580ee058acc0606f0a3a9ea1cd4342bf4be602e941dc4bef1239bb9bccbc8098a6a17d63186c6fa75ec44b6e4fd38a3fe49c5eb995f0cb884e2f3ed6be02515fa605b98453ad935682c3bac6a2971bb68f4094cefeeaceda92dec803ccd3d346f8b40b48f8f489e118a17367801e85c79e9b3bb5d73ac44a8290cdbf83a154f2f125090d42e1a1cb72f5ebbd42da46c7a4d4b9fad9612a4c800de6467ceb74f831e1395dfbf5799a3429ba34754add4b34b5960a5fee8f752dae78450322a1ab3d7102b77e907fc1eec5355991e0c7d6c0866660e5436248edeb1a37c0e769a0764cfbb6354332d6e55103b9235c84eedaff918af3f0213c435c32ab409a4b5c7eed8ab6ca9e313dba459bcfa3ee92e7d669be0526856ac3c06a57fbecbba553a9cb4655a901d98af02b74098e478076655d325bd7639d73d7ae00c62fdc361a997ea4ff5b0eba33096b12f35cc7cc0eea62950b912b47c11b9fb386a47c4c15c0602d304b2541da889cff299a1fd415e7e25c70ee4cd83feea7e6a9c50c75d9b128458513d61ec5d0299ef8c090472fe0850f384938ed44d36f10cc2c1d31daee3f946a2fa18f9982a988fd6ac973b1569313ce3c8ff5746c4dd85a241f1e9dca0e904c091832ca028533a3e34c184edcc510bf22a27f530bdca3d057928a96f72dafc73a9aa6dbf2552598e468735cc5736c67a620e9455483e9cb2108045ad80569582ea93a53b491e528c8df336fb326ad74317bc1dfb8ec30a73af01a5dff3e437b7fe48ba5dbb3e8f01ae0c6fc28675a415f23a796bb6e0ef0efeb4b14cf20d4ad88ad1966da43a76b454dac8687bdd97b89b8f8eede91eb34ca4a0523ea65736ae39341fb32b9b716f25662a37382c16f3b9c346c84f03bef54acd6efb364c6401b07b3f7679e8e7f8c9b77b75e6e98b90f4df88460f1978d19744eecccb743a999aaedd00b5a94018e9d5a56bac9d5d55f6e93bad52e84aa7340cbbf98d56213d9dd3e1970867e3972dc98e61b3cff40b64ec49463ff79a41c82dbbcaa37a82b761f432849aa83a3d3c9a209e2207b87ae9ed9959ffced165fcb0d8873668c3cd8f18ba0f92f7acd2bf50416c22ce11692bf6132eb9f558dc789cf9776da94e48cf48607f19d9a11d5df4db11dbaa67a1d20e9f0c96f5956ee3f906e371c489efc88b0c1e56d881e7bf8dd5d6742622eb873e253dbe54f2e2e6d0e6136941de8c23e9a632727bb5f88c23170316c7aa0df28d8d07589dd6022828834f7ea9b4e5876a1704944aa3186dbf89e0e81767cfba03bfb38c55a9945209c4dfd88272c49d1745dce5ceb40f0a6713b5139dc2fb87a8a4888406d2610b7b910a9e5782ef0df719028d8e50a40a269dc9bee12157038522d06537bb31fc87d21af9ad4b2e7e127bbdb313e0a116010f65126cedadd4a122d15a71cbcccc346f55100e354b997154567fe3caccd50251d137c58fc3a2048dd5883b6af9248b51040c01a80c051b8a151a8878edf0304b5554746d6116b749221a1d0082ac925e6e140f0c3b6a180742ac8a50ce0e93e6399102f151d7c14000369ff52d0b537fdd51bec99e7271b1255c6fbc36d83408c417f6825a8e2a58b9054ab2c3ead69d97ea9947fec32d720653c123ecf51a9a3f0ed88743e3fb7b94aea59d0bf0219ee50825ef220554312cb907edb90e4d85f29e316ad57d3b90d859391fcfc63e6c0fd3ec27d4e1efd6e0b5ca8165cbd6af25ed8792d805f27fce308ca1d51335ed5d727558dafe05486a6f9149b8d3bc022026656714222830be582889e6800c0b170e48ebfd069e711210e4ac7acf07652a6f5051507de68aeffc9540cab5cdac84ceee46059ec23820c04b127266c0bf8df0d2b856be3377ab42592f495980baeddbeed3ba707a85dba64fe36941eefa8fd37204ec8c18df3852febd2b142b1c9a5cd0f9e424cd408ceb7788270899fd793db99ddb8f9ca8df550c513790d8bad37a1d1f4a62c4527bb64c677462c9b093582decea70c7bbe873095536728e7ce05d5cafb5d166a1f03055e918f787fb244c5857e3d7a1009bd37f30f165564a082c1510ed19bb1633811a76da70dac67641c2478c6b335f409ef54a2d0f370c9510d0aabae3cb998bd023778375cbf9cf5ef125afd584c11efbf40bb51839aacd3016e5e4d79f134245f952dbad617c78cb6f5712bd9c0c7e1303db5029640cf9b56e29329c3e6a9e0a2371aac1a437b9b1c4477ec9842aa80eaa22c5eac11b60c661de6ddbb088e844293ab8589c13d938765bbaa44301e4137148dd0257bd4c8c766c5d3bfe53671e9417cd1b52f622870ffd90f4e17b7a4ae1b5601a2edb032e353bca652fb565beea6fb0b2cdcadac71794c662677fb1dc81d116d94f5eced526b37c004b95284cb6aa2ac415754a1f14882595dcf4d3f1d905c6e8c12cf5a9d23d3ab55bdaf9f17d2f03f933e1bab89040753648c426b072b73aee8c2fc0d1c03fce2c656e20d4c96803fb2ef471b912267eecb4d6f342d3513894b94d77767823fe0c7438e51f21bcf16f0e98b94b23a10760271281cf843989824f7061bf834f93fd8d2090f70e939700dcb4d8964a19da39a9601a7e0ed9f55f567fc7d5682d55a9ba0e68861756bb549f2f17c10ff6bd2042a80477f89743d3d762f1dfaf230bb502eab6f4c46b26135ff3bef5faa179bdfbd288e3cadd3d88d8012706e19b7fcc6e9cc2699d3ba0e624e715599480d6b7dbc6eeea0d12a9236444b17285fc7794040dd40c2b2ef175f7f3641664fc9bb7ea6d7eb3489d504f8013d64a23aebcb5ce233405f5ade067dffff253f27e926431ad806703e8fab23656e0b7431916d8d4c72a7d831e3664e5f30839c76c8167b76f3b2dc75a6ef48df515e06ea54ca51de2fd9c5eeabb1610b7eef06a2f3167859cf82e1a5b76be8ed8beee2bba28c3b15af6890d7a37226834ec9f63306a0da11aff918753d8b83fe7220803c070db98195d6d18357233f5504a6e3bd6f30115d3987f93aa5d89aa0b8b577d1fed94da057a6f088233efc0f44f86798896eae9ad0b20c8c9cdd9d72a3f02213f6797800894b864cb44fed009440fa5b0197023929f9bad16f052cc2d87327788a68b9209f46fb4776b092d75713048b5453ccd699d19cafa8e9a93fdab0f0863711916efe3bd81ee71b8e0221e12e9ffe2f6ee1a4dc1a8de6e593480f3c05b3691e916a4a7ca51971eb2f0f693dd10f6b8468f8cf7bcce285938b5a0a76ef86acfa2990f88bdafdc39a065db17b845028ed2b7a9e331c44217de20440e406868f1eca818d0be20248c2948b8f4cb118b2e456e585949139270f57c54715f3297bf714aa7c5f72ed8ddf6a074703ffbf95e45bc81a02c42822c22d2b718f2de5e03d687a4b18d605ef5ae75f9d43c8cb4e77aaa0c0101d978120f29574b22f52783c667f7daab3e1f9cfacf2e68e94a24918e3fe2c4f061deeb64891b5217fe5908e7f389897751839982b7fb736fbfb1232684e93123611b7fc8fbeb74f8815b5ae13240051920f3b6ed34483ff673c467ed7f0a8fbf619796e485affbed0697415d2d0598ba34d5b9e44ffd12a5edc323883a2e28efe9baf860324f2d2016748503eac1888213926b0e0f0335a4b51820a2bd3b42d982ec6ce307b453b6385aed7a735a1e98479394147c40f01c532926e10e1b26a5b395bc150ec4b4daf5b1436bd0baa225583ffc9d9e9d8a354f60fded37b41c7c051daea04e689ab2d4e24d7d07c75c50ccfd6a527e024d1632246c6f40f06b86ffec0b29cf894b665d53d459226b93422d37a8da23587fe884dc3c0f2fb55dea296a9a5b9a0d101f186d9fa6288c912202547cdf958569d2cbf235740eed38d10b0025dbb6de31058e98780d22149c19d4bcaf06dd7353fd91cd1f47e47f45622e1472542be2f63f463d253617eafd4f2ad609f9020884905dd5c22fba53ccc619104b6c0203a7f6c8c26fc80ff6fceb8c0c51600c2e46b4b872e6d597511524545a76cb42278b519d911e6c1320e01682c551e204ccdf91290c52e0836167a5685cbb1af338eb794c10fac92950f3f7956acf28f1ca984e380bcff9876b0c71dc7ce4011d1d0f955da9ca885c6e7bb74c6194dadb0fb9146dd725c8a9574aaf3824b727c9be3fce59c35850b162c17d3013689fca858a0a51d81cf4f30d6a8705bbfe35ff03c34cc7c56aca32140d72c8e8121fc71353596b777b266d75b322c9a97fd2c5d4e2362f19c99de66da7bd9c495c03d9a15b28431a0c051e786fa80f5503a72519e6b419263d72d553d688349c0cf30918eba0622b953a0efce4415c29515c26ba15f00e548ef108afe3f8194aeb965e5e4be94f10df6c45ea5c133a8c3398d09fb80f950b83c1866a1637d2bcc195e05cc32a9233b244cc2b1d4930e66f032cb1163c37b3e58b576ab76de759569797fa9b8bb4fad66aaaa56f09c7a0ce4641d6799d7bb47cf684990ec1e08871458c211a353ccf1285e7429c7b8520180918f7 | ||
103 | MD = 85747c796a910421ecb364b4b4f0e68b49e9217944f6586eac4993ec | ||
104 | |||
105 | [L = 20] | ||
106 | |||
107 | Len = 16 | ||
108 | Msg = 8a61 | ||
109 | MD = 60bdeabf39efdf21ba9c0f94af6552d2ffe699e1 | ||
110 | |||
111 | Len = 104 | ||
112 | Msg = 37487aa02b03bdbc6bc62e7e26 | ||
113 | MD = f146072f92dc4a551721a10bf0b01564cc2b43df | ||
114 | |||
115 | Len = 352 | ||
116 | Msg = 6ecd002568bae3bf1873993041bfa292eb94e9ad092d8eb3585be82e8a20cb36a47a06e7a57d301268a4a533 | ||
117 | MD = b0a2d6033cf1d8ff120a605b745d736ee4aa06d2 | ||
118 | |||
119 | Len = 504 | ||
120 | Msg = f6dc1d2f6b8e126d99939664693d8709513f97d730074ec2794e536d94ede79c81f2b2ecbff3c2c26ca2d181ada2c60050997f3bb087ce48d956c18dedb227 | ||
121 | MD = 395dd2989edc854746e384f339f0808c515747be | ||
122 | |||
123 | Len = 13976 | ||
124 | Msg = 07a6372c863c7d7c6764e4f05addbbe161762735dfd2d23bf268e2d603cd28de9c369ac379390473e1d3fa7e37af1178cca54fa0f782dfbe68070952b93462ea46c640d43ffe71f5fba42df98f4c48ada0d8aca8753e0731508bc15dff283178ae5c10a6ff132eca5dde63a78d3ac94685152897828eb25a55fdf140fd33fd4e7b03f283e201a1baae8986d25603fb0b2566aab345fb48031d648144dddc2e3556c0ceb1104f348d96ae7dc0152e45c625d21b46e70c31f250c858aec4ab2cf5e79d8c79b0854e0abf5330b9f044113d306161968f4ad6f0973160c9dc296056d5a11523ea2b56fbce8387070fccc639ec1c65ec663b9dc49aa880dc4ddd3020c9d44ff7e8cab6266e436af19b4ecb82010a0f8f9469ef380034a02e3f50051a6a3f233dcfe9d553459dc1bebc538ae0183448c9405c351271dea808d908480e61e9793cca111b4cfb9874b799626a1bd9a0f6e0929ad51b97ad81b2438f5fc255db3a3dfec9f0d8393c6b245b03d3faeb58021db3ad391b17a91174a66db4feef1b4c889699bcbea7928f4d29be2d47f76455c8cb1dc7da9cda41962a28ad8cd7b39965b809e7c7eca1c6792c1ce1c8a4cad6290170e91fcc49fa5ff64ab433b4aa081c8da2d9bbb072f9f18ca455469b946c877e3006b34ffd2219335b30ba2e0980f43cebfb629d0b11fe70dff28883ca012c6ae4855fcefea20a08e189eaeed7eb36ed6db3835976f4e60053205805727c5eec15d0e9f155637a9e66268b9c1c302bcaae6ae88cbb8cf1668a487cc996c4662c4a4e195f094cb31c717165e0e13718f8388957dfe0bf69c70cd0bd763dc38c530b67b9c12244fcab8bd13f602de848a2937699f9ef77944e5f22e3b470601789e1838fbea9359c733aaee2c7082b02ee459b7684ef9bbc200da4b62d368351f5520a65ffa506dc9b097117bb7ae88d04d85fb525e91327689ec0fe86971480c0e864012b1e9f044c7d80a4e48c07320dd4292086e4c71d4c98dd826a9bfced112bfa2beb1ce85cad204451ec45703931bf637d4fe89fe8f485620b7f4b21e011a232ade7a8c92be77925e878ae0bea9723749528fe83cf89ecb9616dae6ca0e8d5754ec6c92abb21108c2f33cdc18c6887c430b72c5b193356494cddccc577bd4c2cd53188f352846edff0c2ac7869cb74bb16a77c0f0f194a7a9477ae15abb890bd0bcfeb0c39381a87f1d05319c7e971c10e9ef687f96450b400e25b4285032892b849fd5db8649cedfb03c88defea063ee144a1ab1f3bf05f59c7db364dc39c11a446c3ce16307d78d50315ba29f5bb9a57438564c8c7b3e367cd37d74b2375a4966f47489dc5448f4979428abd32193d3840aa983d3020a9f29d760fc7493ab2576c90b1934b799c1d0d55e4f2caa78f4ce61930c79dc017c2dea0c5085d73a3b0e4a6f341e9a5061a6658af11e5edf95bdad915ac3619969e39bee15788a8de667f92f4efc84f35082d52d562aa74e12cc7f22d3425b58f5056d74afcf162cd44e65b9ee510ff91af094c3d2d42c3b088536d62a98f1c689edcf3ea3fc228d711c109d76ae83d82d6a34dcfbad563cf3726519b519fd48b51741aa86720836494b7a589c778927047a25d73508adaa401e9a6c0767a675e31c5556cbe35fadc9671359b45e985c3c8af84113989b299ae4474b85e4b5d4b0578ab1e8a2915a8df97c4f52a639fe32272cb91bbfb721505dec46d51383cb8973425a714245c2e37d0577fbe0d66381d9239db1f08a380cf609dc699698e0fada2caeda44d58d766c4f8214b10642b80b8d7d8add7cc41d47108ab7d07dab71069a2d982cc900b331caec317942122158bac6eac9175c2dcba0c04443aa9188832b553f5ca8c336880824d6bc02486a2b4c086665d276aafe3b1b93729829adca50c44466fd5b5cb977aa78fbcf5c0f0da1b09216468a11493ffb39efdeda5d669ae92bee2f2fb250aa1b9cbb11c36c7a6c6dd26cdc3cfd572ffd8c1dd72a13c27a327a34c6b6b3d80fc6c67c72152eec0c8ecbdc1bd5cb829b811e7f29af6d786f4e93dd4c96fdda295a6aa258d7b2fcf291c2d68e0b1866032475964ec0c6f2fa8c2d6a3936ecb187350def4e818507bf157c0e9b33406be7660605af14cccc9c799b4e051d0d0899e53495bb8931a6e2984bc6dbe4e02ec8b4642fc2f1cb5fd5a5520b48cfcb49e1f9533838753554dd98b6a1b8a67409279df477330e5f37367e06247ca5c3ffefd00e693dcc0c9c30754121c9ee88a574915b9e77c104fd2f921c2c096573951407ba9b440423d76bdc6fc978237a6e302cede7f99038ec31500884775556941f1edc30e3a417b0e02cb6fb5bfbe5cdfacf4006411287bedc565fb06f1be987416407dc852254934df4ab59edce476f3506e65be6ce6ddf91038642291fb8e92ba5b1f0b105670905a2c14796110bac6f52455b430a47b8eff61 | ||
125 | MD = 1adccf11e5b7ce2a3ddf71e920138c8647ad699c | ||
126 | |||
127 | Len = 48824 | ||
128 | Msg = cd8490c93613bdf1f284b94b330f6d6f45a39c651d2a160b340e2eb696fc6d1c35e88872845190d141c669de92a97daa5433b1d7b0b899fdef2ce74b8fe72a7296a5b5be26d1dc86520367c730c7400c2fa06f91ab4c48a7bf4ae35a5b9acd5296c4fdf7451b0ad9cc439b4e34f11e5d7ef2bdda376f8dd34d6f092b219dc085dd4c4a6308b8808f588eedbbc7af7f64e83182fc7ca7cf4741a341060a7969d31445834c982fa8739ded4555108acbea1666a83da17f77cc42ee73323eb53203e3b790f81c08e94c44678b6538096ab7b09916e6cf7ceb2af85987f8e4d982dff1ab59b0bdccaae1f405a73366b5c5935dd0b43e2d2894290ceb66a0246dc02de728c5bba30255fb56ce8107c3144246c5156a8fe40ada9126adf67227fa56b66c37be63f532516211ca012977b04a97916f201f1baa2629eda520b51508ab4229df2ceedce406dece0110e0a911464f69e7be38fb91deba0addcdb3161d2799c628f5a57fa1dc37357c947681bd9c36f4832c20ac466c0c245de3b250c33282ea1a02d007f03b34ed427631283eb614db4d521f555136e7e42b4cfbee8134c63dbe3bb79b5a8b9f9f5b9f5ac61cfab1c54d197f1e3ba613f251eed616df952d691b88a16466343ef2d0f63882ddd2d55b8a6786308b2257f5d7b38af166bd7f1339d2d8899c9eda8fa86215850ba547450c267eb3c9147d96c38161a69d1584e521ffa23384313a1debcd37f72ddad02adb3cadce7ee34b7c1f42a15d0d030487daf9488aa7562845a11ee7ffccdb38b300935caa31f78a4ff3dd93403cf0c6a16ca611b58c736aafd33d6dc56f0f47878211d26f6ab801b9453a7f74b44593dae0f047ddbbf2c902891111729edec44f69a05944b18e7a601f41ad24fd6833da3dbe3029bd390de7c9841b2ee2b079b2bd2737518fe1bbec88da64769dc36e4a8bf716c219b2fe059d7dd220c1ed2c59878db5bf8b198e0689edee921ebc0cd2d3853fcf57c363050ce58071c5fda6ebcfbc1bb62e9eb956286291a108bdd4191c4ff47900d6068e1ea26b487649af119b9bb15dfed804836f2196cbe12d8fc86e3d7ce89b52ad49dc9ddbce5b370f73f512bedd853039366612453733740586d1372143b09f21dd4dbe1a2bfc308db8e4098c5e4b0c1e16141ee50e85fafefc4e2529b3c7252af37aee6f86e19df28871686107d7d57dcc812bc077602642d2ecefdd5f694b8f336913210793e4068da2178600b1f41cffb5221c9b4b6298afb47e85701d7b1a44241679d8996f916c81ff437261cfc358b9ec42a2ce16ca3bacb8690d6c1d91cfb3e0bf1e7ba45bd01606df856fd03c7e946f7ab371a89e1fde86d05fdd97bd7b1c583b04c2ed2b5f6815a460645e4e1b4e950bf6bd81dd0352d1048df85266f1696534aff5b1cbc17f15d82cc8e0c0d4f0453f9439094f8e0f7f4bc045b654d9a2f1f44a9c57019f63ecc41021c05b5380675cb56ea8bb691d79ee204d2c4edacde3c1fb3f4996a11d84b035f965e74009e2ab80e2c7ea3c84a834d4971a1e9cf423e4ea67ee526eb3c3e4c2d7372c4290a0741e1fcca5ae4cf36705abe98ac81e98a5419baefcaf3093a7e0449ef1021f88ffb7ad21b2677e41cdda12025b06542c4b2564f15e0b99db43b7c7020028bd829372122cd910227cb07c53cb58fd9dc620c0491f3e2bf883fe6ee8cb1f5b73767977d857e4513e8b5612f6ae4b56014e6a3ad2a065b65472212e2f611743484cfaef860999d1dc5608c58412fab888ad72bb87dd9b55b692f31e252daf8944ec5c02a5a9c23903c50dbd845f2fcc3bc9806af13ca7b025cabe675195b1d56f3fe7d7bca12530bcc0af217efcb03a218bdb6f9726536ea902c8303b02e3ced22be59753588b5f0e2f3419fa5345a942dbcdf3010465384a225ba26cdd0f1d74999c69f336bb6d01fae5cf81cbb8c1a7a29c1eb83ca6b51113bde56b8cfb6a5d72557622a37f039d090a689accd02b57c691174338de8e05bb3620c079705c969c58e56b079dc9eb44eb0fcebe548f5a31f4072a5ed56a2f03107bf40a359b2601eddf53cade66f294cfeaa40a0d94b9c90d15f61852f295d3911f8ea914d015885c8c64540a83badf0021a416c3e37b78236a2ecd1fce4114033416bdd3a36c18ec13250ee9c74c0fc4dd564b3d24a825802d5ae402a53bacace115ae3bbb329be79d1e5e42dbaf0a6446431145fe49b86a8703c7c41f8985d54f12e314c16ff89351d8addf66ebba2783f2d1a11965182aa0b0dd2de53586c5a695c6265c2b173958da648611090557bdebf11a1e042f089fe98e049f4796c60d26be38356fe020d9ace9008410d53a1bb7db78b52ee44bac364213f5c59f1eac4e3314f3423b92fdd7a6156608111ac6ddf58385ec1f3df12061208db98816ac948d803fad10d5ece2018c60faa13de5e5a9033745c824932e53f4122a39f635813545c1b74732cd55642f19ed6deca1585ebf7242c849bde981572a2199066e9c912b2068c8f1c8b936c43ae95c6e22bd7b80dfea05f495d751107da5928e806d0af905c87b5a0795df146af6580d8f9c6a0e2645686d43822ce9b4be0bd5937c097917e048b5af71c7e7521d490f107e9231ee5bd9fbf0727ba87774ed24cd52f471ffb71849ebd55605996515bdcfe95bb1df3541e7c42da4166dd01ec3597634aa6455d15fe14af435e8d7a55ff1682d55a2da867ae63d11fb3fd987fa5d7032ecefc35d3fb9570940e779e13da18070e6df5292f97f2a281f9598101102c955fe4808a2319c85fdef3d55b19e05bb8c2d3da64bafb67a53491513a24f6f0804aa162c8a7db25b38089373fecc45a0eaef65dd9be3b4b7f9436a5423fdcdb5a9b60138fc6a2261225390d9ae0d8ab7f0f7ffff69dca06881d33a637d634358abebb333df41151f239add91abaafc89070cb2159ce3a31655c22e4696c9fa7a7211d1251d4bb21ea4a321a3dbebc29d97f526251e40e548dcd7ed07587719a266f006179dcd22e50b3705152817057b097b043ad63b8d867edc20aea9b4c959ef4ff70f47128cfcc21e31f17978ecacc366f459ac1cc459a3976e4173ca322675f84f18036119ec2f204c3fb554a0b72f7e9d8c882ab147b3d280ca9dff7b9160b1b437b901f03cbc05fe05c6f44824b48aa8da52ae7dda1653fd500f9ccd221843cf76513b3b74d094f14d93a00d7cb954bc4cf2f04f9a35e38edcb1e84f62057647dcb3571f1dd296ca1e049f1746a8a282e85138500e7649db756b2d2ad88f11c471c89dc6be2cd43481013b8d0ae83da2b855cea7be424f8b2325b1850d1fdef03e765458df4513d57c72ba9751e1edc3c4e7f97e3202bb46eec7be89871ba3704aa6c6fc08851e551a3f655fa1fb798d12f003faf31c56b6df399a5dd0ed29ef9e4139dbc254bc5d6051840a859eabaaad56324588fae881fd638d2b70fb3813402df61d941ab495588e5fc3823249bf9a03cf877902394f512de118edaf98843a5445e9073fcfa409df3db0221f1c77e2dd21e74f9e10c9e180dc4ed17010eb949c6d67a22bd5337b2c68f9eccdec778ece728e91353696b742c8f5a3a569f054efb8c1ed478ee9b75e26c768a5816aa6bd08a4c72e745fdb5deb34ecb86b3a84346c1c70f9c16fc45bc0421f0da2f630912d5079f390cc53b78e343310de722b53d2a3b4aa386caa0d7e91986e19c3363426ba30eb5284293af81d00158a3f5233327b40c3b989725ba7dd5b31ac7abf8d3e0b737e843065cd7316dc2f374a00bed4cf9caa0d6e232c854df1bc24c3d484bc6bcb14ec770d5745474dc6ac3b3ddbffc551c9fcc2c56a5e0ae17948457c01e701bf1554022bc2b7d9dd42b2b91172fd85e6874d2d61fc7b3bb3cee2a9bfec09f6d7e98279c6f511f4140b116c856c1438e34bca59fdca2409f025b896a52d68719bf93e82e7d89bbf798991fda0af8d06d17f39eba4bca09c1fe594b537ad4c9b94ab52c895539d639425f9146b24b016368a638e5bba391bc8763cae7c52ff9c496884f1d84e5e08ed451358ecb3c4919dd410e82cac35ae744078287c05c89b42999ea6b8b127d40d53a5722d45139e8bc507a11e7add7fa9ab12cc40afeec008a4668e3e6440f27bb5780936c0e3668ac51262390c79b3f21fd041cf36ba3522f3a552714ff188bfd554c60d0e7d11213cf7d3864a5175d4047c2f3284741f18ec22995a5b82bf62190151bc1529c6d9927f9b0c1dacebd9c2dc406f7f64a973f9a70cff6e3abeebeb46514bbf2ead382f7262d46bd43d88c1b91a9011d1f8ba81fa536a7162aee2b2ec6fc0f2d6efc87b98d2e41e0f946969da659c21053775ece415a34d42b6cfd5bc52259867b411dfb991461ca618052309ca9c96468c2da12dfab0e822ff3bbe7ba281982a239ac19c47024fe1f0e3550cf0975add1f680a9dac9b2c4ab0aed4f409ddda6765eb8a0a9d1e9d07458c69ac8195541219b18efcd06c0001f2ae7fee2d404666a18ca3cb3aa4f0623e86c5b1229f6c2ca28d951111294b91edc52730b6b2c46e000672a7c89b2f38045bd3e37dbb8a75e18687a514dcf740c87a34834d3c3cc8aadf6166ec0c42d2be92f90a3af49633ff23cd80848ceb57ac550eaf9ae496bdc6a2d7cf50fe107895b4a1ed014f78af24eccd6a07420f1dc0df1e7c44b4ba937dd43cab9c798371b148325578d61931766af02b45054bdc2d9fcab2f4b49092f6fff7c27886820739d6140a4a905f0020249e8ae8dd87da1a1e7b1851eb01045aaa72dc8a2bf68055e7aed41d85336648a3405195d2ab61b0e29a770461f32fd05e14c17d72c5252f026a7b9abe7ea9176d3c46f6ed9fb716758d97b41e4f5d81a24538f763d83eecafafc668422612b40cfc32b3354b24755fbe400a2bfed494fe6d0ba0051713b776e67e2f1915e94708e6dc74b398f2f526933aad8fe7dc32faf40022606aebb6e0756b994c3176fae7640ee06d6c67bd54764c4752f1bf831f43e0227cba101174c5554ce26400f333dd8e9f6db1cdf670ce407d7d06c3aef4c0724b62edc8f1ba3e04f0e394d15a73b9255abb4d6ac70303dcf9160d32dc02d4804219ed5c7e3b48402e58ab2f58305f9bb95d2a8759947de96328ed5234cfe7d0b2a9a014df7e4cd0ae48906315f139b8635d2e6bd4aba32e62b8906cdfe5622c411bf0373d0cb07d17bb2bb5b83eae4401c243605fd1df759fd0ddc704ccab5a9776c40fbf6bde0f11b9646c699f26063a9550ac228c9884c277bcadcc0a2c225dc203e28e253c4e464b23d2529d09c7b7dd3c984667372472b615645f294c4e3b0797f9d1c234015b78502d98bfc04f1fa2f16cf3e7221d5794d035e4b172a4d84e679cb1c82df2fb49d3c6668eb1661bed56705096c2371a19d668832808eedd9e5b1256c18fe7ccc494e5e29145d453c553ec86fb7f3a634d0d45661875f2f1005ba5e734c1a976f37cd23450e4606e32d027bc9ec2edd9395e14b2082179bd7b4f9b8caa2d00a2de71d48553f7d4153cb56a1b08f11925e4b11c9281744ae9171f3d6faa3ab3f88c5c34fd23e4f6efeceafdcbc07686ef56efa62c0ad62f1cdcb4d3b5bc508c1f05263bc347158fa5495828f34eb7fcde98fefaa82bafeefed3f4a58968d751c051b52e0047f066de5be533bc3b1e439ab1c8602f6c67503803c8fa113737cb8279f358dbacdf45432b7a654d0e1122cca93420e956661d7275181c75b0d9c20e84c7007dfc49f27bc00007cf4ffa631c892981fd70141d532fcd51de5c23fe0b7a186d0dc296362f235d61698740cc315891cc9342da17843bcde274c17e462263d0e8b4832dd9075a7bbb443d4b26b41e534ad5551ed5ada102175e695363fb48d6b99ac978a3aa6f405d87f983384ce35740e930491d75675337c5dc081e3d301228e61bde5cc169968e5b4350cca2b085f9f75cc4b88497a78cd0a0073d90246c7dc102c7cbf3516498e8a41aa85d8cc5bc285ff66e8338e85ca83fb6889e2bccff52059bb9e92e92c155a349952680ffd0a3c346061a53fdf074417fc90c4d1af7c2acc3ee4b080752cbc9455ba5931b7e910f1e4af0efce905d2cc9c685923ead387fa532c0e8ad92719c76c281cd010e1acce500ae1443838b8afb48af032069dd07aa4df0d56bcb70a64592633699c8658102f1fbca441325e27f1732a7a973d8cb3a0684d72943ef6f1892f2d7ccf39bb6dfe5801ab98653bdbcfbb787bf125253be2624f6cf44177d588bd7b780d9e3f4e3a4e50b8a253fa21abce6a94b9073289c76773b46140f5a6e46b9de9ec066c176f5d1a69f380e1901216617363362d13ebb26ad74fb008ec08841550ff14ca800a1ecf2e007ebaad9f4e0d9664448d60ac0d8544243129fb81c1723b9b4bc2ee971dff736d9fcde0afbfbf5c50a4cc06a4c363998326c17bdc9e2508651dedd9a2a52bd87f8693cfcff60753acf9716c526e8635f12377e36564ae55d0fdb3c7997ec4dbdaa5b4d18c7b660acd95060831795da7d299a5a8d8cf9e92537dbd3ef7f56aebe38fa97c41da6bf0572a0270be7e5a7dcc0be3529339464c811052b65a938e874ea6da469c7d8992ce0aff1c75e82d1621ecb967213c65f2de582cb41de3804c507ddfc708ef3f6096ba4491e431160f98de806d0f334e03cfb7a3bece601099bd971253f3aa0df845da8b478603d5d88533d0cab9c89f2dd9a1404cf8939ffdda652a94093865a85fce2bc3d7babcff7b9f3306bd76b9af80c78ad518f89ee73b7a710da604e72f4927be8d65d06be2e0732fa786a83e27597cfbed9bf98df445499e0746b9f2cb9659ac0a9cef433148521f33b1d78d13c8441c0d1e20fd93ac450a3787a2292bcbd68cd1f961d34937be9a21abaf26f361bf53aa0c095e53c51f3e04d567eabe6e40d96a17c2bcc9230b18f7e079bc549a314b4ae21d30a3341aa205bc75c7f1d21b0a49549c300faeda243d0ce18da5e66c5b663cd705005dd9fea0a9564174abb797d64c58fdab1fae44576d514b75eaa31c9278b15bf9b6df7c6c2873d7a56fb91ab77b83761a09f9e1ddae535622fb87f7462256a60dd39dd3ceb6690b0272920b635ea639daf24f95462c523e5bbd8d8407c61163ab38877d5edfa04c2a78d4d240523ba97c7d01c71783f8748e85164b4dd08c25506a4ed18300b42b7bc6e417f512ae456ceec2ffc83190991a06d4a58ede215babcd3688e1d61f1975016244e80c88ae2aec05c7eeb1c50caca72b3b415b6b870bf5e10bd1ac3ba6b4acb1d1afac554444d94c97e171005fa4ea9c651bb4e527ff58d0c2f90fb453a92d6546a26e9e98395b09e8471bdcf2a145aacb649708cf048a7856ce8cf390c107ff2c66efbf2a76c5b041860ea576103cd8c6b25e50eca9ff6a2fa88083fe9ac0d1fb639c516b9bcdf23c34c6145a705498ff9b9747f15e1c08c63da6efeda4eca02c3f00dfec06c82220c9de840040118dde76be788daf84e6a2f44c81fe6defcc474f99c51c4648d297cbc48f081e0809dbda505d020cbe865e430e0491644ec8c52bd3ab8ce8c4862990f49fe2588caf804ce9500ef42d5a50c057c257168e283e4a4aedbe4ccfaf3eeffb212f9e23d15434d60bf4f455f512e2b655aff3225d1b217c261110cec0400f54dd303d6231d028c2eb649bccc91d30a6391c88bff9d447c3cf35a3467be5957e0ea4d4dc237c9f2c68ce48f658f820a3d72d559b60f233ce538c92cb148808e34fedf2d648c21e7f2ea29a77270c393bda42d869351d6c085d965dc12cbfd0311b8bf604f4391d378781eea3b5f1e0da9d0d8f8de88e56fe47d362cd46f591d3ec0f7cccb85a21f21ddcd4107821ce0ca9ddf99dfdfd9b0c9cd45053e5b1b4385bd8f5b227ada31b5c23e9420014474e8b4494fde7c38edfe70994d97b8cbdfac588df49a49c472fcce78cccc051f31cbbc1e0422878d8d490f3aee28adf1587c38fb7e7d1be54abeaa83cf54b633803a5e669ff4295df8735231ce39631616bd05e0e31117c722c2fd6787003b0bc7fe422a089c89329544e085d71102c1813769450a9f66f160d1702cdb17bd2c6fdf0f722762d193ce83623eeffab17b01b10a31db6e2feb6eb3abdbb2e36320e1a56e44e48d26090afa7f65003a98cbfef590ac3ec89b3eb230557cf6aa566e841806aa2767b21bb26fe001f11ae039e0c9a4bf1bf3d271960f16158eb5bd9ebf0080abd8369d512cab2d1aaae2b14d0ff6ee705a38fb0c801a98b0624cc138fc24834fdf430f33e1760db913da3290f34415c9e3df3e97da1780545ab68ac5a24db89f24d62f4a399728e4144a8c89f47ac2d29e30c49b0bcf790a5e3d3fcd1943c6a28f37251d9dd827a69579e6c17b629c927473b5a07b0a29d9562708d6c8ce576109ad1a3473ffb2047eb069beeec24c114bef392c929038c92abd0e6a19b610e27881361824d57008b7373d0ab76379570ded76c9b8284fe2c247791073c29b2fc6fca05019220ab92856892d3c0dcc6da0b597fe559c162d060d71513ebca050d9638164b9ae271fba5575ade787ec5aee8fc253d1b234b1df561db3e36ac64b9b0100dd6b407043537b2b141f | ||
129 | MD = 2cbc07b9b9c819b8fd38d8a614a8a9c3fa7e40ee | ||
diff --git a/src/lib/libssl/src/test/Uss.cnf b/src/lib/libssl/src/test/Uss.cnf index 0c0ebb5f67..98b2e054b7 100644 --- a/src/lib/libssl/src/test/Uss.cnf +++ b/src/lib/libssl/src/test/Uss.cnf | |||
@@ -7,7 +7,7 @@ RANDFILE = ./.rnd | |||
7 | 7 | ||
8 | #################################################################### | 8 | #################################################################### |
9 | [ req ] | 9 | [ req ] |
10 | default_bits = 512 | 10 | default_bits = 1024 |
11 | default_keyfile = keySS.pem | 11 | default_keyfile = keySS.pem |
12 | distinguished_name = req_distinguished_name | 12 | distinguished_name = req_distinguished_name |
13 | encrypt_rsa_key = no | 13 | encrypt_rsa_key = no |
diff --git a/src/lib/libssl/src/util/arx.pl b/src/lib/libssl/src/util/arx.pl new file mode 100644 index 0000000000..ce62625c33 --- /dev/null +++ b/src/lib/libssl/src/util/arx.pl | |||
@@ -0,0 +1,15 @@ | |||
1 | #!/bin/perl | ||
2 | |||
3 | # Simple perl script to wrap round "ar" program and exclude any | ||
4 | # object files in the environment variable EXCL_OBJ | ||
5 | |||
6 | map { s/^.*\/([^\/]*)$/$1/ ; $EXCL{$_} = 1} split(' ', $ENV{EXCL_OBJ}); | ||
7 | |||
8 | #my @ks = keys %EXCL; | ||
9 | #print STDERR "Excluding: @ks \n"; | ||
10 | |||
11 | my @ARGS = grep { !exists $EXCL{$_} } @ARGV; | ||
12 | |||
13 | system @ARGS; | ||
14 | |||
15 | exit $? >> 8; | ||
diff --git a/src/lib/libssl/src/util/fipslink.pl b/src/lib/libssl/src/util/fipslink.pl index a893833c5c..3597bc1740 100644 --- a/src/lib/libssl/src/util/fipslink.pl +++ b/src/lib/libssl/src/util/fipslink.pl | |||
@@ -28,7 +28,7 @@ if (exists $ENV{"PREMAIN_DSO_EXE"}) | |||
28 | } | 28 | } |
29 | 29 | ||
30 | check_hash($sha1_exe, "fips_premain.c"); | 30 | check_hash($sha1_exe, "fips_premain.c"); |
31 | check_hash($sha1_exe, "fipscanister.o"); | 31 | check_hash($sha1_exe, "fipscanister.lib"); |
32 | 32 | ||
33 | 33 | ||
34 | print "Integrity check OK\n"; | 34 | print "Integrity check OK\n"; |
diff --git a/src/lib/libssl/src/util/mksdef.pl b/src/lib/libssl/src/util/mksdef.pl new file mode 100644 index 0000000000..065dc675f1 --- /dev/null +++ b/src/lib/libssl/src/util/mksdef.pl | |||
@@ -0,0 +1,87 @@ | |||
1 | |||
2 | # Perl script to split libeay32.def into two distinct DEF files for use in | ||
3 | # fipdso mode. It works out symbols in each case by running "link" command and | ||
4 | # parsing the output to find the list of missing symbols then splitting | ||
5 | # libeay32.def based on the result. | ||
6 | |||
7 | |||
8 | # Get list of unknown symbols | ||
9 | |||
10 | my @deferr = `link @ARGV`; | ||
11 | |||
12 | my $preamble = ""; | ||
13 | my @fipsdll; | ||
14 | my @fipsrest; | ||
15 | my %nosym; | ||
16 | |||
17 | # Add symbols to a hash for easy lookup | ||
18 | |||
19 | foreach (@deferr) | ||
20 | { | ||
21 | if (/^.*symbol (\S+)$/) | ||
22 | { | ||
23 | $nosym{$1} = 1; | ||
24 | } | ||
25 | } | ||
26 | |||
27 | open (IN, "ms/libeay32.def") || die "Can't Open DEF file for spliting"; | ||
28 | |||
29 | my $started = 0; | ||
30 | |||
31 | # Parse libeay32.def into two arrays depending on whether the symbol matches | ||
32 | # the missing list. | ||
33 | |||
34 | |||
35 | foreach (<IN>) | ||
36 | { | ||
37 | if (/^\s*(\S+)\s*(\@\S+)\s*$/) | ||
38 | { | ||
39 | $started = 1; | ||
40 | if (exists $nosym{$1}) | ||
41 | { | ||
42 | push @fipsrest, $_; | ||
43 | } | ||
44 | else | ||
45 | { | ||
46 | my $imptmp = sprintf " %-39s %s\n", | ||
47 | "$1=libosslfips.$1", $2; | ||
48 | push @fipsrest, $imptmp; | ||
49 | push @fipsdll, "\t$1\n"; | ||
50 | } | ||
51 | } | ||
52 | $preamble .= $_ unless $started; | ||
53 | } | ||
54 | |||
55 | close IN; | ||
56 | |||
57 | # Hack! Add some additional exports needed for libcryptofips.dll | ||
58 | # | ||
59 | |||
60 | push @fipsdll, "\tOPENSSL_showfatal\n"; | ||
61 | push @fipsdll, "\tOPENSSL_cpuid_setup\n"; | ||
62 | |||
63 | # Write out DEF files for each array | ||
64 | |||
65 | write_def("ms/libosslfips.def", "LIBOSSLFIPS", $preamble, \@fipsdll); | ||
66 | write_def("ms/libeayfips.def", "", $preamble, \@fipsrest); | ||
67 | |||
68 | |||
69 | sub write_def | ||
70 | { | ||
71 | my ($fnam, $defname, $preamble, $rdefs) = @_; | ||
72 | open (OUT, ">$fnam") || die "Can't Open DEF file $fnam for Writing\n"; | ||
73 | |||
74 | if ($defname ne "") | ||
75 | { | ||
76 | $preamble =~ s/LIBEAY32/$defname/g; | ||
77 | $preamble =~ s/LIBEAY/$defname/g; | ||
78 | } | ||
79 | print OUT $preamble; | ||
80 | foreach (@$rdefs) | ||
81 | { | ||
82 | print OUT $_; | ||
83 | } | ||
84 | close OUT; | ||
85 | } | ||
86 | |||
87 | |||
diff --git a/src/lib/libssl/test/SHAmix.r b/src/lib/libssl/test/SHAmix.r new file mode 100644 index 0000000000..453fce20ce --- /dev/null +++ b/src/lib/libssl/test/SHAmix.r | |||
@@ -0,0 +1,99 @@ | |||
1 | [L = 64] | ||
2 | |||
3 | Len = 16 | ||
4 | Msg = 98a1 | ||
5 | |||
6 | Len = 104 | ||
7 | Msg = 35a37a46df4ccbadd815942249 | ||
8 | |||
9 | Len = 352 | ||
10 | Msg = a93aed0fa5e163a82c9a934aebaab8180edf7de0b32f0fe99f9c75ec305b24609334cefa372c7c758262dc8f | ||
11 | |||
12 | Len = 1016 | ||
13 | Msg = 433e88eb2f8aba562d15c18126fbdffb81d5d6c9397fa052321f5f78cd629708ba099b540da5451e949eeab8687a8d6ac35c531411cb37144ab5ff6a7eb46f1ab28fbcd2ea0444cd87c57bf7d3c02952dba3d3987da07622c16e7c086d90e88ad3d9d4afee301d2bad915d868f54197b70b23c9fa385c443404fbc9abf7e6a | ||
14 | |||
15 | Len = 13696 | ||
16 | Msg = 2c46a76a9dfbae1f5e59f085e9c3d4b600c24b2d404d062cf948e75a3d4ab5b137a31397be9eb34b2a03c78367e0b85448891b511ddee1f787cccd498b172cb7e656c044a03ffde8e42478330fbe9c34072a9e99ce31b41757cc820d98e7d564e06694b96b66f4be34c5eadd0ae4e61fe6abbe4d7ccee855104fedee8b451a7fcedb793d469b0094c0ed07c97fda00dd8c1662b44e3ee6775a5ef6368cb662d257be561a5967893433a4b63f97295036a37272176d081545df00852bc5c4162324161296cd51f76433f2df867a5840f2d0c8d5be00b4dc89443d82175bf69c3bdceb97facae2b2ed68e06ae74fef36d8bd1f75f130cba509341dd54079d45de22845cc8e77a022977c7540aa3e779cb1127f39f825d4d78e55a967ef45e7c1dfb02d9999fd15af2914ba47177177d94576f1091a0657d9e04fe81e6be7b631fc1baae66584c9c26ddbb568750d77555c927bcda1fbdc15c7cbe3e3fe88ca13ff12c59b383343c12976708c0e3dff78be0e286dd32eecf20b71a09fee50a9d0b13c85a15b320b162690f399282798aa3291fdd2f9c40ed873e829388466ddd1da42f2de16aaa9272ccf44790cf3c95382c304e25ae8cb2fc9d9869808f3ee7d42cb143bb0c3a55e03db6d1202ca1bdb744e448640c0aa60d3ebbda5c21e623bb080f4a073a48822725d764e51d415aad1d7c5a7f17433d15ac7d849f910c375ee0899f6a576dada42fd651343383f286009902bb62deeeb2514de6af7f09892c20d0b238f6021f03b62444b1e1f21beeb89acfcd7136416fe7bd8f202e76afaf5345311798be7cb25351add2bb044d2380221009c4d1cbbaba4cdc8631dc0144f2778a6aa1eb3d3c81df0b1b2142fce111af8214d049e40f536c5d462b9224a978e82cc6c420e70ecc3cdaffb726a183c793845315f730fa4dac9fe46e4180397107a6a051f7f0a58ceb9bf4df37e1a81c8e9569187228e8037df2e59c52ba815566768bedc8e09d5e7bdc9f2bff23aaaaf133bb5a3332750f6124ce185e29fda0851addfa2c3d52bb6dfb530fd4ee27dd5bfdce5dc2f41debe6740274bc651aecd4023b098a7d622e2296b50d51b79c4e3f521695a9d43f038e8f273405e26584d3db179e7c1758114a3d39970df674580bbf2884405974f0b9c4b0d8b3287a2314f3f81b6991812f354d655f62513c9551b378cc2efa4c3e08b313c56cada52217fb6112eb8299b28445aca8f72e7170a1cd8bbfee4d2145fbe8d49c6af8831c4d4fc7177a50ee55a7b484261504af946c6bd5e1d6b89092f3c487c0568fa07c356fae9b8e831b8320289039746a435b122cfbc4a0d316bf90d481d3b7d979cc50d98c1190af8dc58e0035557dd5e94f437f41fab513202643a77748f76c6b77302bf40c392cd18731da082c99bdedeb70e15cd68bff59619cabcc92adcf122753c55afde0817352bc247d1170b8ddba1ad1b0faadfe0efbfc5fe6334377fa372c3435691f53dfc2ad5e08966b2d3525b1eec2d993a5cd4ff34278bd40dd80313a0727d05e0a932156152f3e11a190d8d69726f5c57d20f811e1e8932e86409ffdac96c6251c2a2976b8757adcac5d2de94931d1cbea866ec8bcba5774f8a7fde792f6acfd0f01356fd66fdf54a416af6a9397e00f848a2e9831627cbcbb52b5a868ec174e69b4cfa1ed72cdf23f39d7eaf4bdb318c188b1f0fe75655e34ad71907cdb77a1a2b162cd7c22d93dc45321eafb17cd60282e83736267b3e1fb249c307d49509f50839942f0f493afd9ef37db053a918e3ec83d801bbdead07554a018b8ba348fe9b7dd92ea7c5fc0e65a644ba19aa1fb6c022ab768ec7cb249ba17b9dda2860bd4aaaa3dc70ec009804141ad5ebc61203658e57a0887ec0fded18d844a96e79ba7e879c4253056f23e205a80ab1471953438f85848f4ab31ab175c089e0bbb97ea0dd6a67385770356741966053735e2cc2ecdd2c8c75cc045181dd7267584b901674b553082b2c58fb8f8be0b99306194a6f069f684535423304d40a268d55784a14260fa9c9cb1306b82f91cbee3c9f43dea9e50903135cc1c6505605a100bfa28564a2057974eef0852b7b72ce264815026d0759f691db618ef760edde73ec888e181403834f7221bb27a69479ec9b28a3fb0c3f68d4467d25712fc48ad78763f9ea6e8a2e85260225ca1b1a38b720e589fafca29f07257c5467cb74ee53189b8c81b784c43e93f98abde1ed53af60b27b13df6ce45001c6e1813de3521028981086f7d88ba13f6fb1a800f312fbe2f842eebe847fd760c394668cfbfd353ec14ca0366eccd7b4cd63318116bdc42e20a632a0d2b8c5cddb37bfc0a239ebe3800a787d2ece077a7968036b3d9b31cd906f888e3ed742cd769033e2c24c5a9e3c10b6d300db5a17dd88 | ||
17 | |||
18 | Len = 100816 | ||
19 | Msg = f8ed40e878dc68ceec52cc8e2868722310fb117ca3a52e1839eb85d308b8aa00ed0bf0b76aec8a70eba4f0d14d2d85c5a0e876ce2c8ee59cb36947def6c40a587aa07b368ca8e8a08367018e45b984de0d7f1aa46b977cc18c0cd9b7bb897cbb2814aa0ce8f8c9843e03c86c19f2ba95dd2ac4a466a93aae4b3b05055ff148517ecf43e286c57744a3e10a14d0c26e139a503e7927aa688c78609170ebe3b54104390e5f6cf538093a67922e7210e77fcb584ec9b6844e829be246a266460cb442bad52ca47255fb8cfe276108c36e02f9acbd3d191d34b93d29ec40d80496d1c1bb5ef036221641200e905598c54bc4abb3527c5a5f6258e59d4bf54a0498c108a2725428efc2047e0096b32dfdc6ec69d5d72f81301f881ca62a66c22e5dab9fd9d90084c0a36b2f3a0123cc5327a3bc7a12fd947ab57169ac533e4b6a2cb80fc65b9b527cff9fba26994c7fafb5102a0acd8f9d246a3a54178c23eaa04c0fdfd3c0cd980d1fc7a72b25d74df9b95c3dedce8ca316870c654f9ebea9b806da9767cf40605a4b0c7fb06f6b3f197bae7d8cde9daf38530e25bc51b68f9aa23ec0e95199b14bca96c91f3db15bf8432f714dc46ac87218691bc66cb3a42f6865e1c30f8394c8e68c0ddf5851ab7c5906a1994a9af6ac1c44d0d6b95ff15d9f77825ccea40fb9e516d45888f2378e045d95d936d541cea9c8ca52fe5f7d0d919b2b1c59a42d06105ea4f2943c05178e59d67351c5b2c0051c93a4045e512884fa656b772cf398af89081546d920fd3d24ebd16310506a786ab33293027394c1bcb7b1efe46b550ac28529646e8d2a5ae65c59345e24b44cd7b06673f3ed3b9008aa568a739c26682fa596b7a655842cc6b2758b583487c78d14a76bdac7033806c5c210828ef313f8efc4072681f5fded748c31a58ac933b4665c445f07d603e0905e49b84aa55146eb1c1c99196413832a05efee2e64d6732fefc629b79b37bb9390fcbed7226b412204bda523b8b8af5c4a8bdb263ef9f3f6c7b9e1de3a1dc257c1f33b3d54a9101be5b4f2a9db319993c2cd137c41e35c434ce52e859afd1a635af4d8852252dc5e28c729b2b4c96a56d57f3f3854ded59fe612b9b3a51fee3fc1c83db673b0cc7433bff2472bc74a2eeb6706605e308690fd072a7042ca6474603711d8310909e47063f46f287260a26c4f11fe492298a0f98d28c45948a4899e08fcf443a6ba36457dd8329314d53ac0fd0819fcfc3357426c5bb8d3dfd706e205a81091cf08f31cd3459854f3d07e503991ba5f067e3c406c6c5396d8257496f4ba3703cb1ba25c2fe4aa54577af782cd57e85a88a2d75c54039e8b7bb559219edd6e81e41acb6d575d6f798afb2cbf7f00abd5c9c7b0fceec79f9a0fb040ebcbb7bff3602df7b71357efacd37aa57019350bb81213508a006160acde3dae5c42f03141887eaca22d7b33d6791febfb619d11ebabb13e6c5378e9a72e852ddccd31cc53a43275966b7042ddc51485ca20e1c456dcc7020cafb5407548b044d332229911fc74d7fb97de25abff7efb431da82de2ed7e25d0dcc06ffc74e57ca93a6a9f64d76a5c39776fe2266f88d6d0229b527525fd2e22a1407e26f94c5bc6adb1e7327f3c8bb8d4c983385c579dd8f5623df8cd6da569c7de73d9210e6b9253a177653a13ece075940fc81016d8c35fa4f6542df5120c174158ff32533476f4e059e35117081a24798fbdd1eb10f82809836f8dbefe755611347f75423dd8571695960c6f66cca71f0a01e8fecbe1183bee3335eff10b4ff8104132040e2145ec3164b2448f60c730887b9d7894e5f7df3f876cb17136c99cf32db1c02fba860937378dbd093c4c5112133781f06c8ca07c527c2c085e8ba5e52b399f2909e217aef6e3035ecafe2caeb1004069dea023af7eab873deb5ebcef2313c9827821bb9f89fd3d1570a569673d3ede86a4fb13dff242eb98450a8917fd8865c56e0a9f11d72394b79808b0429f3a83cf2465161596887fa2d557b367a1de9c7753666b0cca9c30cba9f0a749c03c55cdc7a6d45852c76ce2010de3e7f75d95228efdc79949b238d90b25f983868b7f07f585f7b00e45d9e132f3c09ee84f794d899759be3dabd46a256f4cf8da71270617cc2425b24cef25d1d2f3945afa6f81abfccc858cd02e05619649b1a5347650934105c02622d538447223d136a8a0455cf3c6f61f696b32266197b5cd1d936fd3ad4288520fb4a2f59bf95e659f33210446ef18debeb679dd99de0c3c74a6eb3dd783861f5db4e94a151c42ce27519d0bbbf1f3b1163563ec06c8bfd881d94a3b896fc07352fc97ada73685588a2242da1b718f81bb1077bc70fbd58b8b52163489ae403838b533851bec30ed0ecd97d72d1af534f3703db59f1f563bdc39d690a0e90e545506463a37e84974fd7b256bbb912cb4077d3e3f5bdd4bd2bab713b696c830b1f2185734c4d2dbd49d5372fe8b813ce73f5e01c36bddbb376ef4541033f2b0355613eeda8951ebf7377e08f967902eb7e23c0fa798c6ae52401721053f1095cacb1e9496500e83c412236fc21566090b3a3eee55aa402c0b774802fd81c9e8579761cfcfdfb1aa23786b2dc35dacd5ca8d8d283369f53e4a5db18060c2c6b0c303052aeeffe169fcaf7ecc63090a9ade245045ab9c8aebf738772297caaef5f857322a597846c7370083d409df27612e47b0cb240daa3cfa51c57108612ac0dddb0f59791289ccbdb3a2cb1fa9ac31a23dd5440682fb373bf0c1f41c4fe2185ad7c53eb69552807410053b0c2d40132250e637b8c425e6a35d93333b5b7d0557927b6179c848ec455fd1ab38348c0e96c60b2da49bd15118df64b6ce4fa48fbc555a4b2874141718e731a40b85382ae6e86ead31cea77f83bf5c063bf1febf71688a832d615e09d6f14badedeaeb6ffbfe343fc7274e78cd46a2aaec0a349c5f133291ee57cdcb65c5474e46294de6bb50886bce6c6f44dcb95f2a4761ed2e6c9e7bfed51e0964afab4e0f7e0b07960f2590baae66b1ec9a63ba0fb6c0d27e81508c51487dbbdc9beb8879fd58c188dfc774b3d0ddbd77ee8bdcdfa0ed8a9387728e12b13e8b3c10cc1c132bd822c2147c5ddf9a993aedbf78ec256db1be76644ca8ca7727208bf89732657152d34e948d73c47561d156f773136684d4162d02260300020123d13a95f4f835907c344942ddeccafe2abb7dc4792c4f1e39c24748c63cba933b16be0b8853e058c47a1ae2c4dfff39ec2339b345fe3557d03c1df91a0607a711636c4416ffdb73532aeeb74f237ed8bf971388a0659e4682a46b8327e751034cbf2c87c7828da9d24baf07a742ada34d1ef38ab1e8f2b4f801192c146600709533e61bc2665dc1e9e6441bf3c4f6643bc0c102a10f9a69da5b0e3d0a0c7cb694c682493032b5853f02953b5c2fc0e1348565389762fc2dcfbb34fd305f2d9df080e859396ffcbb7da78aae0a0d72e3de76c774bc6a81c87f2872b6afe97ced5269009304a4992c4add0bbe24e57632e19ad0fe37ae910193aab0aeae32cf6d618ab33eba59f6a04fad00b1d2403396e6fa661d31b695a1b349d62f56c08fe6c6eae7a482177adf341e51d03ea511d7959c721bd20bf371860ecd7fce1d25212891850b85648db0a039e6638d9c78bc958add3e41341536b5007be63fd1f7e3308876bcebcb97dc3b05a7b2eaadd00f8fcc8dcfa7b961bbe727c9aed1626ff786d6a0ffdbd1002cae8a7d047b6181962a686c152b2341c7c58c9f1dab5af424d183ed1c7d003165a1d04ea3683ff31a0f68615af6f91c21f736e67df641ed31b998445afadf9052bbe004d5dad08f62e5d353e42fc35a92242d8414d99dc4e7e81c8c027af686baa5c185e3f99abb3855b22cfdff0a62e2f47a632b7df8e00e0317af5c24ce7c64077bbb15ec27e062070cd3eb8e549ed9112469090ad9a96eb59294b021eed81987178cb2dcff67a9a2e930f6032c753e203380f8a7c987cea393234699de03a1d09ce204f0a8b6d5cf522b6887174fdbccb08f3e7c4fe2f778254465b32766c48812a45151ac37ae354dac87419f9476baa27e24b2f322b2da4ddf579750684a5881bae2269351fb7de59b9d5a4badd8951135f2713dafc57215dc626ee170fae7f20bff98e36b864e1fe0f0f9a300c903069bf0e0b6f2f8e78423cf6063e89dde6c81efcf26ef15510563c84730f611ac879a6628e55115e1a29de6945d37fbe4f803fcf2e344712d9e0d6f6c79f8773a9f199b705235e20a7830ee3357c5dca29d7a6c29a3d2628bf2c42c8f076cc4525301d8e1860729070dc53164d9fa08bf63cc889eed01b0130a7146d860bbc09ead3865a3082db0836a45f5506c3e46e452e298764939226cedfd06700e4e33c6b4a78add601140249596831e97f960b973a4e4dc3fe2813fa34eb47f998ce57270368fb81719a09298a223f7e3931ce5cdfab3f658649533354e982c87dc9e49eacebb5bb4af9a767b4f1c03d774431168cd4fec1b2726f1aae3f9a062a825f3295557eebf3af4784487b869fb049de44d03fee71194fc200af72103b157431935b5ab9bc122773ffd313d52d7acf1078386090fc011de695e71567cfd51c06317d4ff8841ceeb74ad35f4e5f4d20921123cb88bb2079674ad39e133cdfd6478d69c9bddc7a818be5d7b254bd9e0abdb030f52846fdfeae8ff370a51a9c5f6017af3c6c3db17c5c614ea18ab0e3ca0dd5de621217dffa36e5c5318fe191040a50cc3ca620683bc34da6c142e1c50afce28a86b8b66d189adcd755561a647080d93f3ede1cf54c3afb7e863fc8a82a2576d3f79e9b2bb634e598507a3d7d017e0176b7868bff3a3dfb4474b3ce03c401f33929364e727fbf8096b77eb351435c7a113b3215cc6246dd86f1517a7e550cf828900248f7c1754e40fed62477b296a37d3e53231360d012c4908b466e49b0e620c0a5031228009f259b030956ebd70e49357c3c3ac2842b6bd6e3ca5a3e985dc03f7105681fec03b320a7ca753b782ad3b52fd9c8e3bd980b48dd6ec8901dbf756108e85015821c880416e0693e0479cb31c0743450f6d9214afabc4feadb9bcee9def460a58d3a02d9e3039970068b8e3fd0a403a6ca7f2c71ae2b46ab3c731b1e65e2104c47fcb1f69e7c8c6df8c09b33f2e1cd4192faab316a44536dcac608832019f5765cc5240eabe3c87445c980c299a5e7ae0acc2c2ed19fdc8f011515bcb00476b03633c7669db1b44f97f6cd402778e9687c740dbe5686789b79d0b13f784a2a866eb91ab2d66f064c49e8df513ec348fd7272ee548ba08e1f9f99696ffb53677550d59c67f88404f6e610455a422d9cd987493ca5c366a397dccface2bba8e3e99719dafa768956cbf6fd8defc4104b8925878716a0514f70cbf3fa2c2bc2f66fabe654eed3076257e71117665703eb88c79e4c2b94e8e856e7a6ef90ee2a358409db78b98056ce1750eb80725d70e35507fdfa5933a61496ba48fbd5555717b33b59d4ef211fe096aefd478859ffc97a41372023ef114adcae5a8d5e03c21369baf1e7f417cb40326bc6db1cdf0904651dda3c1039a2f1755e7c329f7c03bf33f324206ce6e1638711c8c9a45f153aa1f847cca2a5d3af1d24fe7a1e1094819e8e712cbe10ead1012b7371b35cbcc2bd5b10505fb63bea20ac81d25e83ed0105e7595b6c28400f4d336791ce4a584323d0b455bbed44392c5f86c9d5287593f6986d4b0b8f9974a7a4157859ba801251d3b44b2bad84f29cb87dcf1680d6d10d1bfd59f0c95fb7bd07fdb3ea2fccd6e3ee80af438956ccfe31e750972f893ea5dcaa26d077fb3f09d990c2f41c8707368bba007803621ecd76540cdb8705435d74f4300eee04710a936f241c034709e625b0dd5dae1f6e86d034426819c365a05f5be420cdf4042bbff965a666a5756f67259448ebf742b6ea189fa17a4c3bfaf651d19a8a525f09d9cff637c8fac02eaa58d3ee3f7221da1e61833c0b183cd9f47686f09597e8115b435454acef80c079eafaa22b18927d07bf8b7c5ebfdec9c42a52b7824d45decef41e6184dc2db1505ca6f94172fafc10731706e79b9856dfede353d2eadeceaf72a302e3492d7dc81e3777e4e9e1f3d33cc4402833ffedb241a75a09e9495d671f80ad3acf06823bb04a92b815edd0ca7d01dcb3318c1ae5c62d3e99c0ec37908b45b51dd65f6b45b34ede2d6f553f60a45e20fafcb34ae4dbd375f52a5db9c62650deeee78e955087c2bea75ede7c304347b171fe0c1a2a033894be6e04605271307f307b2a9cf6ae24b8c87ce033a3fa4cf2bacdfcf54fcccb1f580476c7d00c631a8529a9eea2a713610341e0e25609dc8927e51c58a0a9197a54963b5cb95877354f4b8316df02ed2bea367704a12274d96bcbe0d0d728923a368bb8ab98d5db5401894c822632308ddfd309071fb4b477d8eac0ea5dbbc3e3606d8510d9051dfb5e4b7cdcf2c57c1b76902d864c3109c901da53019ed33cea84b407490486ad9f980a8a63df3d2e3921064afea137f35179130db3351f5bc3f5e7d590a5ab08b5415efbd345f9d57b71ade7dca939efa5a12d677b9af0af14468176a43712bde10cb15787c18bf066eaef8abcdea77d3a0c61d6c74ae7b54fe90940d0233e4b874c9a141dcc740d7fff43b9fbbc012a933d890232cf74fccb7ff7eac1148e203c7381b7f1d1429b1b1152ec25cbf7562596eb402a9328e43b5dc5cae36592da5523f0b9907a6817ecd395a7c778daae85bb11372b20641a04250b77b3a0ece885d07faf9622650259b874536d6d2b92181c834dc111b6fcba483167be40ecc922fb87006f63b9e8e632879563f37a8f712db9fa68c1a20ab239c0116fe022fad1279f3288b8e74a16d447e467b6381515814dd3aecab5c2a09c400b44e9100c04c720dc7e8c6d9460002da6c52004c16999975fef8752c2f9c229cbd9e6446b226cc454bd68cd665668a17328bb30f301e92ef5c7a2197a326df5c99b422096de8af231d1d8872e6e505bcfff026d4862f28d4bb3856a66ced22c9b0587451d8da4230a38561b5b1c69b523a4701a2001382aa82fcbd60733a14696a540227db44aef346d6c0a7ae5173604d59eb828614cafc1b8cfecda054dcc7306f73925e6d1af56ed74c51c6cdb66e9fee8d7a0078254fedb0c0f5dc85a4686870709b499eafbc8451aebadf848b0598ce8f955688bd2d6032abe10d1391d67c20a049841f95d2ee0c8deae2bc1baca0c098d8718cba1ddcd968981c47cd98d247aca4f838f3bf16d092eab8be8deb1f8d504d37cc44a8c96c9f22f2698036d4ad3bb48b31f109626565c147d20a4a7dfd61fb918f81548fb4f78875c1d138e819f6822651b93a3c92ad77793fba5222d870ea671f9cac967919d18f96e92778548415b2e170d90b201215354fc48a77e62823a2c2bb354782ad052732f08beb278f751529416f37d83ea26248517ae2ef2ead28c1077908995a2d25db0deaa957bcab39715283287fd626ea7388abccba2d90e364a7ff4284c84f70da68ce1aafb5be0401cb9d45e085aab41892a49e10cbd5baf2c34f5e0ca076f2772abea6f622b66020d546f8c2f134a87f96edbeb9b08394b585f2c2f98aa792f97b43b5f3aa9c34189804a9ecc2cfaeefbd0f967d85a25bf3136fd8132dec38aa82e4af6ff677682f3b62be27a180aeb22f918c24f23bf6f5954e0722324cccd06829fc32ae4fe3aee6e5a03b3651900e13fb0a759e544d033418b6ed40d037b4549a0404792c8fddc317b7f028493c4c91d6773932f8486417544f3d007e5f9e6fc02fadff175303f77f6b0e1f709bb3d3a93b38552ccf62688a39da1a602dd5e122e6f4e9171769ada5255cc5cf938dfefcbe3ab0faca434c42dc8c357e89a3d1488fa3df35c3580b124ba3bf6d0d203d586707eb692150ed05a01bf9de5c4e67bb948088784016394d47abb853f2b6b643a066ad81bcd1735aed4e108a8c1fcd025b548de874eb60de7f3c568728959147d1219e4b830e06ca2bee1f8a035e28a54ee6958d4821a84e5d1e41139905f7ec60fe67ce5f4eccdcc2c3d1e4a753a32dd3004970a4ff3824471822fe2b5010b9b6c6b01336dbf0181a95cba2624663215468519871cc39e8a7f4a151c8bd03363b402020f2fb98069b2cb8cc1b7e930938e7540d95d1d223e47865135793f9eb573660ff79f7ed2fae503e68ba44596ee745fbd8fa562c5c666d174cc01b1961736e18b8b517161ab9c8058026e0ddd6c94aed0086a26e1b959a5e05eb9d8c1ff5b2ef518ca23b4f265db61b499a48cc46bed28d23ffc1e8d9c9e345c06079ad47c88dd4e8e286575bd7f9420ab9c2d5c6685488b8b34d4c9ac04e1427ae0994cf789b48b01d1db9c2fe75fc5187727bb11119f82d0739ce4048467a08cd635bf78cc1b6cc9c28fdc199d351064a81456f81c9e56a43aef7332973804b06b18a26caa62523a7d0acc272ba49124b17bb68800d5756afd34ddb2b7e2dd8a118aac3fcf39d9f853c4d2c4fd3ed5bd25a6604d68d57db93d15aa1160f8a97e6c24238e84f272780966867f9c644ca2775cdac4af0ece036cfa6ebb1cd9d701dd7daec5763c9a4de0385db383a5647918e79c6a6de1f4ee1f6b722c561704c8d7efa4710d78dfce8ad2df0d3d82cbb59cef0bcb001f70bdc6e17af1a720b117fe02bb1dd527b18e6bce70e9447cd0cc85cbcf431fe7c006f5e4ef878a974a93b25f492847c9ae020583c9d412f4124246164d8f080b615e2eee267a7aeb5fa0974de52cefef23cdda7b305a33a91e9b50471ceb72dae337c485d636e28d6ee31f5705983808b1567d4d4ae820ec445c56e6a404cad6b408691475397c0dd6cfad232106ba96e5104052700a653e21f9ac6d79578a9f52548f426a1e81dd45bae30acdd4d22a2dafd633564d6b2f45e7d35413503c955cb0a9784b42ae8c2a5933a6729f3922f969a158540dcd201ecb6e32f88b5b4921914a2e8f424c8b031f115ea5d23a21e6f22439ffd7e5d11b08df729f65613b4f6ad3edbc9a066a5e712ecbddfa6fa764cdf170c0485f82d924a99b7e7ad8dc44c1f93e49b6469a9af3de5691944413f1417b753bcb84d5b7a34f362c383cbc802b0c88bd23a7ac471b9287571c42081b1134bfc8ce104a550942ab1f2a074cb00a90558d6e841ff15cfde6951f03e450a1bfc90dec6c513fcb2692ddccc31d22e5274d41036656183c72fce208e44920776f196193137ac67d6d65ce9cfaae774f23a86e6ee8ff3a4e9422a4667d971906e5496a4e80278774899c882708611bad282f6c1d666bc5e7c40082b43a6e98d494a18e9b3cf7f154fdbf90d786e59e83b72ad0ab893c49aca50ed37ea5202e650fda54f5c46ca2a35c476f4b009c5e6733232275abd1341199b63d22386c484cb95c43ea90e609c407bc79ddd00609cc2eb0d82848db239b249f164b7ea384d0239fe1e64d04955b9297472cafa2ff272c5c78100aaa86cdd8120556f25652a3c12da5853338e3be8f505d93ea03cd1cae7e78e95befdc0e26b760d11e05403c348e0523fe036381408033c009a8e1f117af5100a6eb91f08307df465c20bc1dd029875ef7e49338689f602d98f2dc690a57a6f2864e57098f8bd723574944ad3688b292db6d01387a16493912722ac8f91fd12b748899bdaeabdf0479df788eda440d7bf30d1c25d78d757f00b74bb556506637fc1ab87162f05d464e63a6272db3fe56e9357275035d6b6bee32bd92c4a1dc94778551e94ee1d8854f767bfac3811bd0287672aaa01ea18c25650f05a68cbacd9158e479b508e72df778589e1e03dc543b60bb3b10399e5c50de9e728e69774fb3f5fea757ddefccd0f9da75afe4b67f9c54aaaaf646e858fb001a6deed0a8a769ecef0689c988de566b6015fb8c40aeb5f2df7ea4bee60e8e69d15c4a4aa5411dbe63fbdd6418cf025d87f37362f15e22aba83abe1a3de9857c71c2234023b969eacc0bc526363b7f30b092ca114f2a6cefb34394d146866ac86a33fc497a8cb8e2a5bac398579ff7958878421fb08fff4f8f3deb8c9641b8de392647df3017a5467f9d7b23036935ec6e188dd6dbfb544b8a9e04a4b3c7fa1e4d1d9879daf69986b8083e6eb023a4b5eff80fef17f8f65433c882a21565a919448e6091d1b61013fdaf9fc3e45bbe827c9b4ab10b05600a1961e81d31c7404f8e0d32bfcac2937eaed811db167dfdc29286b0d51bad2bcdb9dea76eaf495a31a7fe717c1c98be374a36271cdd06ed06c02ef4c3c06cb42f73b3332ed488416010e6bf2f4dc4dade6e2e61f19e9306bf941868f59fa0939005743dd647f0a04b576a7e71d4c383c479453501e18ec56d7cb79fe31ff534afbd8609ed701ef163f9de31bc58114399fa0f22b62c66c380e8a10c34b7e731df2a8d39dcf36fbf3a66d67b973e3a94bf6ee0bd96f5c76baa76492032fdd2f59ecaee403d486f543f2cd7ae7b0dabe1b5566e681cd40d384a94349e9668650a6f2d2daf86c59a7b02ba466cd03ce1d50c3f0ca4c02dc4b3d1c0e7b9a77df9eae0bfcffa32117d7e05adc7195f4278c93497401629897a58d08ad7141ea52e0163f14992d7a284e7b875ce4640b4dd48ceedad1ea17d8ab1e760773044845e0899602f1bdfff4d42ab80c0765d1a8bde2ba0a830c050923956d06c80b182264ad19ae4f7c39e43195f7d421bdcda00e3eb5ec5ef2ec91d69df691ba7fe250352acf01fa92af5e2c634b9c7c97889e9147e869acc153d88cdc18908f882f371ba9c1e13c26e9cb8e3cbd4c5e1988080ca65a67b3a4c3460cfadbec904d853fddd2f5375b6070941fca53cc106b5748480213cfbdc1c34320a0478b05f76fd0454c75eca069cb1fa7b21704dab67dc40d041c8a1040db378e76655636ad725219c049e6536982d6ee9f11dd032280e622547c7ff44a938a1f233c356a98182d22d5770fbc871e20bb37483dd5d6ea1551993b95b30774a49b50d411ebe0e8c92834094e23ec2664d822c40e96fb42b8607b62b6949e05edcaa436d0ffac6a8ff384068acfc0220c0b098d368fb8113918a4f8c9de37cece74c8695cef2427e54a6e77ad092a9b7f1d94ac9f0836deff41b905b5dafc58ad6063759b0372a634f69a639e19521825d66a282f489c3172a3659264d0132af3571e637782bb6fe5c0afd24547612166fd3409d0991392fa054ea5bd07a4cd0921a13ad7b62a0b5e6d56cd8adb7f3eaa5c99576941c38aff311c49a8c9d8c755869302a2e5e40109c8365a551cd3f859b9421be189d3a0e9ed78830d5cd6a2414e9cc4c25814d94d98f8848e5386d6dbddd65d22b96c5d20020a5dd409c7e5344065871e57e01c91a443501dc8bf619890fe231319b5480c3879dee618d319962596539e2970513fb5c0c8eac3a71ff99962779cf1d7e916566d0e29d121c5cec5d7302a18ed00be9316f3de8c669a64c2a960a588f9c8a42690f6867cda7146e8ce27aa6a7fb27606eed9df6a235a42d17ce71627446e206e879de56025a66556263f06684dedcfd6f083d6a707e5fc8f8212d716e062f0f7fd0c2fc62bea93d68581265a803c31cac3f8ac8939c5f8c464ebd19df42c7e8998494af614c8383294f3f3883f2404ac10404759e182a038c97aea04a85530ec005e203807c5bc30fa9f5339b32fb0427e64915e29a25bb25ac60b92256470e7de5298d42c6b88995f8d2fb704e49d55b66b71e237af90fcbfd71d9093e1a543da2e9911ac4102346dc4704859cb33ac5f5dce2b3331a9dc9fb506461a5436c89bf90d39afcf93cbca4cfc35da6ddb112243928246ae0d1ba269b0fce0468d3ecabbdb925c9ea3241e2dbdc6b151fb4aa724a42f98b0248171fa01fa103f116d0e7deb65dc359b09126f9a420300fd209508ec7a50be56d5b470e387d0c52a1d104625f9571ce1404d1b7af3fb00475b95f752ab96610be112d33ded48624015781e7198f4dcdf917839471fbedb43c34efabe09941fab6b342cf672a29dbb1eed0db788dbfcfcc63bcfe80f7718571f691818dd6f839e3cc282f85f03fe0400171cdf1235049fa53de7450b4c40ed398d5a486f52124c1c63de2afc950e81839f52d17e2a7d32f82788465a65da6cd763c6360763561ed2bf47749080549b6e2db87514e1ee1c85a0bbd346eb6e3cc29267cbedcad67a287fc5be65ec59ba8b6854b31c83dfc5155187d4150685c5c2c342ed68b01ac9e44b60f0c100a347a0f93074dd37d8956fe2f43110dda66e9f9e6185c23dab74cfca21f3ede4bca87687549ea02662f45dfa0ad27f9959a120cacb7c419810e1b1a50fad31c12c47d5bbc61bad77044aa541d29faa6126c60ef088b82eead17a52843307d4bf798b853d90d14c5347ff10615381d85e964331b7a123d15a77a6790d93e920052ddb4db4baaac5e2b27b66ff955e53b8308151c81da4711189ccf0eb393c5bbccfa1f6c94a8d5f4bcd266fc6a12061967ce836ca042257368f567dc42de6ce0be84449234a6163b72069f25b7ead4b2003e1a7665e87ccf211abe94175d1c11bff2c0b6bc110194d34aab96934ef59804cd26e4434ba166d9833fb091be37b139cc10748b881c93690528a96ccccd2dbe024510b8da37dceab567dc52706461c486a0463369cbb99bcca2e8a4d2e005c45401964722a4b3ed37c351c9f21685e8992c9634349379f41796deebffc2928058c8ef6ea37c6e4970dedb78d1c2a00ea9e1ff1e7708470a6c60e6a2b1e966aa872776afdb238e97f716b3df8dfd42bf0f7ceb52bf9eb33731bdba5987b8f48b4599d67b383e77413107857e951ae0625059e5616ccb41131df9a480efd5beab3a9c99615921caedc53dbad675c00ba1030577db1d22731677914fa958b44792cc9c19e2ac71ebe61a05ee67ae7116e39e1c0d103f18bbc9d531164360d901da8234d29fb0b37cd2a60c7aa2adb2a4b297ea2fb14122ad95bd4592ef86c88fdae1e37dc8e44ad03c0fcdfa3801e93796771c5a2ec1e4ab12a64b3ffe48e7442c6224661ed5cc987aada6e778399941f7b20f16f94fb346b916be87f005c9c13789741602039d38270643cce3c347565eef5ee09139330301951c15756be47994de6f1802dc5131b9b011051b1d87d744756831a71cc8528487f032fee9dbffccc751e6a1ee6d07bb218b3a7ec6bf5740ead7a47b6907d7aa95b79aecedf4a637ead8fc6fb8654c93d13ee79f5d6258dcc61993aebc65e4fc14eea7d006e31f6e9f60e3bca8ce52ec559876fd20255e507daa99b185671ce1ac11d448c30bcdf97b9617195e0ccd2d15246308dd6cda74a8071114327fe203b1adbaa780f3243105c5111636a51dce966f5652e39d4f91abbbb4576234d6cacc3ec57cef2dd4dda49a6c33d12bb7595fd5ab5bb15b40301f34ddfb831a5dbf62218f496c003227fe6282e2ac054c45e7f3fc93e51b3ee8690f08612395095a0a12729d663eded879d9ffb325c62f2cb546a48bed51ae232fa6ce28a2494c132a6e09d98c2e3d478d5d2d15dce2e2665e4a3db448931068b99899c2bd8ba87349b0cf9e3c52cffdcf58a59b4fe0089b298b42ad7553f831bd60f5cfa3e09102fe773e4c05412973a678f3b3ed420433cd664dc7f218e816a17c5c9013ecb84abf2dd073557dbc41b92a91e0339d57b8b077a9a44d56427fec5748c47c1460b2e2412094db6d0ad06dea0aa0c1368592594bf0b2f590a9d6149e44dd4adc4cb42e5d9940d59397b83b33b88604c210694e3fbd84795c80c1b09ddb3b1ec8bef6e9dfc4d7f295e551a79436007ca48aa605ef5a89571e59cb26f2766e564e39d3bb441deaa0c8664549881d90a77256c0f6c77241fd6ab74b0e2890f78ff16fd2f9271ef96ebfbd0b878ba9c703900752b7447f4efaa60bd9dc9cd5673a36b39d49f54274caf03c0cf82b95141fa20ed3ce02ebf0dd74d9eff8eb9e2dd3a2976b244b12fd33ee75c1f1c459f86a1cefbc817f42d7f43ba406098165cbeab99df4fe751ae3382efce32af252e461652c7598161e74fd8eeca474fab6b1ede039935f2fd4d7562623b90a422a78941f47a76863d95857c33653d1b42b806bbafcfeccb7bb4a0c58acebf6104b2570afc3ca88e4fdf2719cf39c964a1ea7d2ae4a7fadc938abc95adac495093f6b959b1347501606b3f960b6d739291aa8c13eb49e98b0f78d2b91400b6d8961cb6165c8b684738e4d4db2f2ac30ddaa03a5e0cde4142b625e81907f08c60d7cb5729456806c89ff0efd08397423e44738ff38f8e88684f3a099dcda455521caca37ab4f4d9ed5d37975d4fdd778b97cc93babc804864a35e3a2db04598152e67a2f1f157681c3962d46ada23ea5d9a524f9cdbdd08a07a3a85b1f6fbde11d5a35c7743b83bbefd19aedf6d92241d16aeca7f33cc51839b75f111e8edaeaed808daf2f43fdb3c6f032ea45052ac31d4870c4d0d76aa75d0b88635ce449054013f234c4a16cffc58c95ba1cb8a0a0399861eecb1039bdedfab4d05f0270c6b16f03f6b8e629f687f133ebf2662c7f930530746679aac2791f54d6a95bfab5be0c33739074ed4e7ae88dde4a8036a7d6095cf41776366b6ae3f8f4a0734f48c275e129cfffff5e0abd042f99a957bf6f0f47fc7288750f4fe30198f8cad7067b36cd87ebca08abd3f9475e7443f83cca91a1ebfc42ef3494871f51f6d52a5524b9391c687571be5327c7c94ee2a096653acb410917fd51e56a92be4f24c1db6b97b465ca84c31c04c2f61eae07e952eb6554aa4d8a380d9ee81c1c462c360fcc3cdff2867a953b655562cd06162af8b99bbe662e0c27ce4d9a1c1a907def48a3231c2110c930a2f1498e32dbbfee0e5c5869332f3024fa5dfb0327a27c663cacd4e9902de34dd93529e90eb347bafa5035f56fc578e8386c7571d1f0ba335225ecd8be026b4544ad70f3af11501a53119ee39a8558ca0ed5b3d897ffb9cf0fcab55a0942d3bf7bc6b94ea27a6b748f2cfda431f35252c44610b7e843ed91ebf7e8fe10638f04f52d6d5a7752ec62350efcb7c473f80b1f2a26805151e8346d39d23551e92fbe372df7979c3f756bbb43f6bed09bbc6b65fe6fd241ae1c2f1a0d0b805c582853b85502968f9478e9a84895f9d4ef01ec4f3f571e57cd0bda68ee1f6f7e14fb6e0f4ef8c7dff6796472a935294fc27b16216966d5021339ded059687355b42b55926854bbfbd9f974a0c26eadbfca8a6183093996cf252894e6db910c71ca3ab2e82d90d371c36b92c9409cf7937bb266ea9b29c41d774aa522e103cb30bbabfe872b57beb027623742806aa7694a859ede9bc1fd7b9e32880b064b0030fce1a0e5cdf3ce558a5feaa32e323dbfab6661c5878c9377ee52a615b7c17bf1228e328aa20f92d070c71561969e1af532e76835fb0436810c3d87b982217edfb1143bfc3405ac9f6f3a50145608dfa8658b0ab642a347255c55b59cd1c5897b2cf625a0f0706c30ca1c1321e90cec57b7c3d1bd1af455e3732db80643383c41eaa6781f63da6233360ee720cc04d171ae2445b0c071e339d547f7ac32f407d29ec7abce0a9e1ef5276544877bab2f84bd2eef47ffa66f96e7170cd54d836c9badbc59435146031502c1a3cc744a470f693636d9050c5b894d2d6047df60eb0bac16d905d46cbf017ca69d66427cb88036eca4ea9d0e579f6bfd8a4a850703a0fe49d39c107c9358e98689fb62bd0475aab4b2031446b437c7f9e373caf0270a28d7b15c71f02079dde401e26175bb6e392106a9072021f0e5c5145a1db6f595b032faed8551f6e2ce318db1ab513db876a3eb42d225014949c19543e9c5dfd2290e28c5d72c87223f0195ffbcba1c02c7d0087721efd2af6881dee7dba7565e07abc35bc3fa41c6a4d6a313222ac6dbb117c69c62db2691c68869ac5fc5e987b0ae4335f815c73ea4235da2582dde81d6fdae5911617daef847be17f2bc09edd88830eac03977f89179fe03eb2dc3b38df43803ca2d38455232549110f4580ec3cc04c0d8cfe493013d2cde47c506ef6a8dfc42d998f70378fac5ce4709345926dc477e9e339d8c87ff6287ea6e2873e14d538cdc3f2a47e0e37a2601652f5b665b616a7d1ef3537a3327a76f93990f7694e6484e7a52a10e9eea2edc92b99406abfb2b11ec86667c7af4a333dfe900bf071d1bbcf4f0ad768fae4f450c53817c507d26e926e753e3395201d3ad89061f16706d841994abad283f0db74cada25beb5fe46f48669a62e0b849cb77097e1b4578b45062af4a071b04f0cfddf87519cf2bfa10ebb4b860239ff187e6dad73806ae968e6ac0f738baa88edb3ae4883a9e59be7a6b222c5f54818f95578daff9fc7a7aba8c4a41a699923e85ddf24a32bb71c808516f64d506058a70539276d57984d75161cba7d53a4a864c51a249a6b8fcad5738dd0055ba8468b56579ba5f102642df65c598490f3a0c9b1064f4eb1962c4c38bfb7d55d496a0b0f7b3f90b42f733d112c89176aaf937eea4bada845f3ca4e9b56b3a5a06b4c90fa4c1914ea47020c2f32531e270007ed389246906ecf2c4465f7cc5d6a347583dd73341ad97199021819be81100d867d628323ef7552db945e4c0be604cf6c4a8197958bcbd6c1879387d3286dff979632c54baba2a35ea84efd7726b662b94fae61464d069e0103692599fb86fdc3a06e01c6ae3deb3de6fdb21806c716e5f82b784e4ad3f0e2de629a18e3a2309003dfde9dde8e5101b83312f76e811277afc286b56879f4eb80468e58c60bc088284d05d725ddfe3185b7c51b472a7ff7db3930839142d4a452ddab628e07d43375801d7c6a711a55b452748d770b84ede35920c1ac74b595baef963d21df9418533fcf959593ccf5afccc753e86c4ae231eafe77a158c2472143faf169db29bf2b53c3288d8b3c9added65778095f85e2cb471ab58362041f0a27d874c42bbb06385a0403ca193cba67cf70029cdb7e73c7e2267b856fa0b8dd4c706b45e7174659b0ee2891df911724324f7ca5daf07c912b9b2abff762e62a1817688757492975db7185c4695f3a90895634b8d07453b36dd95197abc31d5d153dfb0d0ec92639540e99d6590f9b394f14c93a5e829fbb33616e810f59c502be44a13b700fd3009545e34c211abf9afe1bb8ced793c6f516d40010649f83a78ddbe9b71d8596582997d0aa54192e1200db61dade30500d72a184ca7dfcbfb80e5442f489d316cc8b75005564835d4b11c482e2c4d0d160f14a8b13ae0a0fb0ba5e3b782770aaca357df0e1c4d1c3b28b776a8b3e0da1abfd4f7190673fca1e1c5a31c688d6e8ddb21300e4178d07c4e854a718ac3f672b0120d6a54c16957c9ec8c444208e47737bc4eeb0bf2d801eb2fcb72f91fe988aa75f38e6cf26e858dc2a718580ff5d281d13e8fc3e3bc30c75c0193481c39c375a5b06b962d9491f3f1fb80f1cb27067f0709e0b0730573a9b5f5bdbee1708ad84b4ceb1a9a61e4c41e90655764057bfa07b8c81cc83a315be1aed6a49715479c0fd0f53f625fe6c7f36fadd001149ab978532e4d0de3d1a38934c74265b161899843704fad16ffc6189f42a5cadec98603e0f98c6889bd4a559079e074cb40678fad4690a20d988735280a1ee8ea71275069132101b35c18ecc9d3c6eceb4cfe9b165e4b6acc17d4f113ef8283c0fb6506f5635401e916d4f7e7bc3cf49aed166587a0c72cdbe673f467d81bc2e9cd08cd8dd16d90b353481df31e89b45e8b | ||
20 | |||
21 | [L = 48] | ||
22 | |||
23 | Len = 16 | ||
24 | Msg = 3a35 | ||
25 | |||
26 | Len = 104 | ||
27 | Msg = 7db15b3ee240b45d4610950996 | ||
28 | |||
29 | Len = 352 | ||
30 | Msg = d2a1efc725c46cd6a19760f49edf0bae823c1b4992ae2260085746cf65833bd008e56e64002383f51f960239 | ||
31 | |||
32 | Len = 1016 | ||
33 | Msg = d11ad1253592c094746da7b5c88d329bc3ce1929913b8be07e82d3f6b7a536a855f31ad197376eba6f2f4534413fc4e4e7673fdff8739f774a710754b568b7c61a473059a41c98aa4e86617aa66d2601d0f0d584cd9f132afeebdc0ce3da6a8b290059e6e4aa080c195c42ae7f7e1e99865223439929b0a3a0d79b46ca6419 | ||
34 | |||
35 | Len = 13696 | ||
36 | Msg = 2f7a9929dffaa4a4dcfeea1fc37b18e3cf935abbaa17cf9d834b3a8d61e9fabfb7683cfc387d6f46ece3f8bf845827c7ebe86a651d6dc1e83c5772cee1a9fee4b04453af2f68430bd87835126cfd1b3f8beea4d3822fb27864570e255cb65b414197480b6bc20a39c5450adf2474da93d72f6ecf8063899722d3755b7a19f71e93e782d89593ab19ddd3ddf053c54e0bf832311fbf132e8b9e540f38e4d9bcc3cdbf69de54e40ef348a9170ba2f65def167f568ce846889c0161448342fe907718a465e451bc1b0f2e4f21f9b911f186589f43dea305811473837c063b915d849c20deb43323bab4b64e61823f1df119e71962dd975700391b411f8778980a3080ba3c14a321d32c082d416ddd2345f0eb751a516d44ee55222395cfa11e7fc4edfbe7cd49bf4ebd4d7428843a2ad5538b3cd201ccd431aeafb146a65d28a4870a6948a7cc0413b0adac7e8dff3a898aeff5f4b65d10b28ceb749bd354c061c3008ec569d5f90a4d4f5caa51d35b49dc4028e738c8ff5939fef3fa202fed9ebef6f2c7dd0ba41cdb5c0c16985f96fd93a65d134fb4a90ffc0fb6cc5396b843c2151bb7c9170f2fa4fb44292a4af28df5481de0c3c917ba1c46467a35302738158493fbf6a0422cee558d4bce3d78e14b4fefb65bb05043e2cc2a6a8ea64565ff6ce2fd2c4f43fc02926ee44ee02fe1dce25cfde0115c9396c9ea06269f17b2caf58e2332cc1c8528d9705c70da1f76f22aeb1d1b93449180640fb5c4c4a708bc4621d7d2bed5b1a752191cfdd45086d34f247ed1df0f24e7c620de32bdfc4d1f882380d2cd7467c926f48abc75cbfac8788f88cd9dc5361517a5eb36311e6b39e21a85fba2038fd47d860f776697bb19cdb5a4d6746fae507e274399c91648537d905015e58910117e5914f44ebcb00e771d38b30c1473e1232d4e222cebceb4810c48e83e0fd4c852f4fffcd643c0ef9e4fae2d0ebc6f102f3f749b02a5e3a61517d53b539cc24120df3957a633d50369d46c0c226f8924cae51dcaf54d716f61385fd8cf38c2c311a32bcd6594d6930133dc18ef36a9671ba8b179abe95f588ef74e8558ebbc974dc73c26bb6eaae78ef464181e18b71f4b0f986ecc8495a9c4dc0b0b96be9806fbd3d32952ca3b4737a06ed6561e9c9581a33a720123fbaa2a70fc3233b83e56444f5aa0cfaf70fb24be6118404f3e11e6ea004cf2d079a3e93a8ac1d4e297cf4fc43851dd26314a7ed6a5a784b386daa26e50c64692f7db28c21d82234289bb45bad5042236667e6d70a24bc9525c3adcb793a6a5725d9b10911e3bc8e3fd604db7998346e7f7dd1815c0cbb735a977bd4b32b5b976932bc92ef3b56bcadc089045ec95f241cdb0a84c67f1f76353da6cb493bb27a881d37a2106b8b3010cf935eb3601ce4dce3e449eff8331e444ab117a20809a1010db4cf3be0c488f777b6532df908112e3d11592f04a0cc16232d62340cbb8b5268a662b8278d37c03d848a04f0ab498f5af43b0a20e310197b7e1395a65299fac29f051bcc5fcd09a5605bfee370ee8ea21f5807d9748acca815a44d81796d68b0014eed3bb6a94233fc51725de3809ac6f538beaacf8cbe3d96aca21a7a763a957f8892f22c6d086d9af2e5ac9d90321e186584f17e964c90739559ddd034df076c4aa38c2b78aab6dec8ef6be9adf33bfb66f159ec4826653ee6cb483539c47a4a1d95663e6cc7a42a3bf628623a4c9500a59a50a312aa104b198ce5f3e58952bb79ff1ccfa9ddba2fd4705e91b5acaddab9d6522d7666264ac5f533b6d8ac4512d8371c69c06b6d322b046ae2a0a20aec1c3bfb05f3d91b9044cabdd873abb5f2b0e3e19740df31e39828f9ff9bbb20b73541a7a70b8174ce4e43e0d356e629cdbc6c08d29bd7acb6a4347823075683ce9d7de4ab3ddda6572b175951f30a15263355fe9641b3322df7dd52077402a884cd472e6d0b6c34cd63ab63cec8760c7ebe384f7cc31066bbdb7a3417425e039c4d340166e4bba4839076ac9457c87459c57957d0a06dced2f7a18acd22b7295785dafa435a2a8a2c3a1fa05d115fe129d19fc44c5a29bf15b4d9c2b375bc8e591f92756cfc573a39b8fccb8395cad7617b11f14a60e2dbf69b897844cbbcb70363010f6e1bc0590ea594aa924597dbb32a868b55551789f82437180b85661809089d34a168d44b4d788dba23b13542715843eee797366d9ce7793e72331735bc78cd61b13421a568ba3e66926921c04e9d00888ba7ddeb474db63813756ea4a02c1823083e36ebd2d32d5c88cdebb98d511304cc276c7799cf84a1699ccac9569b13f530c762732e6bd0f8415001b2c02d11dff36660b717054b16df49ba38425e3764a56052ffddecdfc686aff22079897376cc15591e11579fe4feeccb55f | ||
37 | |||
38 | Len = 100816 | ||
39 | Msg = 5f464d3301c5e0871d6b41b002dcd09abc80a805de3482d97f3fd7b9838745da1c0534168f76b93c3c53bbabd904541ffe5179cae619dea77446140b7400f47d242141c7f2e9894d88f44c9e066861498e7394f206f594a419790d697f6a11187f84bc6fb288186109343eb11172bec076d041a4c7306d7978c009fc2d2d62563614ed3555ba2d21c8fcd70e8389352dbe4ec808af3231ce990452eb05b1b0dc4fbb1b4265e69235cc3561dae4148c386cd770474863a84a822b2e5f905fc255d55f90bd6a760d441dc52240ba7d8c888a5283891a2c99963d1fe680549d6267cdea92cfead167f6c49663668f2bfdc61fa647f5abf3ce5ad2c6c175dbd456ba41436aa06f5f68f5c88e6b74ea86a79934bd05b486210d3d470a0967ad6d67f7385260578088d7e63197849354f651aad07e04ed301f1fe7a6d2047d50ce5dc6bbffbb1da6b47d740898f4eb54e3c5a1fbd18ec93254cc01f705fce04e6100ced132c519674b2345547804a372b5c925bd9ee9701527db33408d37b72f8d18b882d3c4744eb58f011d21fce336d426de1fcd5e09610216248b51fe2b79b96c2bd6ca0155e05a8a516b7a24d529a9a475284735bd9c4c437ddf399864b64fc5d0d6ffc4e5a7a3dbdd476bc39ed29a0a92e1f2b6b3506c2be5452d4f896db6eb4f895b554b2af64c4cb8dc2369b91022dc50b7291404cc9605c31569c32756a64ff8c4fbb0f1bca346c7b58a5c6774b2fc7f7fd50741d34c8564d92f396b97be782923ff3c855ea9757bde419f632c8399763003b58ee9140c2d62e914c1e1fa742661a9166d42267edc40905b35a25d5c3cb3fb457376b7422896df7bb19c23e8f764416731d2e20cf2c1beb8663c07edd8f105e078e2fed05c5e5897c430017fa2160f565a75a4c5c64a15dd7d644bf355d169ae2696ae5ed1a39e8f81055cdf315e5b0c6f9235515fc4dbf30281ef17b83a6ed604f89293904bf78c7183fcb0ab236cb1f8935e59c51559217efabc000b165d819b717118a03facb61a13a99b194f8b6c7ddfe5850127d79078397a56564c7ed6716a129409680434061b2a4782c9006587de927c1ae09d6778a5f1c39fc419fe10493eb0d4ad492fbd05485eee7913c59df82fe7182af2cf06a6e8edf06676200077bd1408f5c1cec537cb8566470cb44895826d04ec20f0aba4297c501add65c75d5767ad2ab63aa81b7b66f01b32590f1d55b7e50e6df1ee077a19c8c895f5ef62d452cc336e9aee171fa997ddcedd7af86e6cc37722fb5838a46c5e58e7f700edfb7c6bf832171d9581f660752867118e9535a6118635709d6f1c1cb21b938068958e956149d9bffc67f355cb88205d4894ba97c3e3c8be9fa2d20abe79f3f93a6a2f4f56fd075bb49a4b7dc83630e58c32a29d757fdbcaa607352f65483cf2cb4208a3bf94ca7a25e2a4e05279be31c33696c10fa4971d1b64ee938dd299f483e5c098845749a3b706a787529bf2ca56693d0a7a98243e6482a43e1f5d3086ca1b00368d8ead5ed2d0fb79b1e2f537ab9340809ca3a9b5eb2900390432293008ab7086c2811d33de0648be5597ef002c7c462b5e0f4e0b1720a98b2299ad7aa55eb78f0c77c2ab4371385f280107ae40ebf814a8223dc74f31483c63d9e4ed09fc7e5a51bac34d69d97163116a66c84ea9fe4263269b71fd228555ae3cf5109c4d6ced7b9049a2b8069bd2f71834d6c07fffbd7561939188bc07dcea08086bc7182a5270427c3199bf5fb5c4549861fd32a38ec81c4ab058c777dc01864787f0275f911a17838272cd65135f66baf06d8d93bc439eeb55d50b7c5adafed8eb8140b4b05f59871dacf954f4b096c30b7857774fcd319c096750bf605db8e31fe02cd1b9294eaf8bb009d4609f2cdb3a8657f650501b8553765de8f572fb91ac77b35db35f402453e5c58f60146f2906ff56b9c6b3a5d0bb6afb9e2201110919ac9c01a7e9750dfdb2f72afbf7a8d6f64b1c68b9de17a2c9abf289eef24074eee9b1649caf3693118165503a30200993d271aa31b8b92606a10a52612dd1fab495b82f9a98cade18b9d8a723a71ceb63fd1d27372bd281f9b40aa1839b0cc2f2177a09aa8e7b159ac118d7c145e7a4f032e788d21facde2b4dbc1d5d2238f530d9bf9bd2798f611d03ed8919f0c85bc2da99750b7a8d6322d2e66ff6ab9ebaf7424e8c1c3f4fe92be61f65359106395f5ef995e925be3868ad513f561f873acdbaf18590c903d64bd275121c11ea655124d091740887868544c5348664399d3da96e2e35fff34f062fb939d656bc072096e510b40b2f75ff010af68d64fd0acc778e2e13c9667de266b1816c4ac449521b02bbb217002c604be72e73051aa9048d192e3210a68769dd2693e5d44951711aed3a751240d42f8925844131daa36c51d7d59bbaf99623fddf1649db954705fd6f3405e63894f5258c9ffecf83208c2c90cc55b1a8d2972ea6b3a049ee54942b50526b7930953986e428b2c75e47ed870bba68dbfa624dd94112f3059da0a80c583baeb570fe8314f5c66501b34116c81148dd22396fcd6479da49f7e952c8084f97d6803ff85c3787222064ca368f596a1ebb6dab20a03916b3ab071c927d87fc10ecc4e7ab4a5761e3eadaea4de1a0dee30aa39a9e4dbee047201d7d8a4df1284cf668ae3ed7dc4cb2cc4b5cae9307353fd2ae4c105c5d9f3bb021535fc3ae9bf3ff54ddda8b2e1037cd9d69822df436dc1c750a9f557d1a3a63fbe73c64261dae0c70bba6edb57519f5b957f138d1aa5fefe01b73c1851aea42938147bac2762527a492cb85da43014c876e223b05597354d7c9b328df67f354d168a84ce86dff57d8a870db034196dbeff83ebef80bbe52425a8810f2c9fea29ee688a201cce4a5f447be789a3881a9da3b6c491288e8f1091719032608b332e0410f4576597e17e0b5dde305f069be2e80d565bb979a3915488f88e3ebb90e81c264bcaddd72b8843af4a4ae31f723d50fa0995b027c334c351128913bb93e67b1b08f101f6b8dc8202b44fbc3d3dfb530f66e5a8f35e69725c86998c05ac87c561a4706e90fa095adab4a566da4fab82bff6b20076e5bdf62dbd6614245b6a6f8cb6bf60106f8d12b9c3e26f8127dc547e2181531ce980a3273f452892110cfe1ea834a30f99d66e026a9d22dc76fc3cec8fda2d7fea701deb84dd45c97dcde57a017693e90983a156f11c4d168d89c06d8a32dbfa590adadd16850854f24bba315b0bbf372f03711a20163afa0c137383b9120b26c59f5e9e7cd2ccaf0ef4e0d70d5a81748ad441ee5fe178e14317cab184fe178fb0cc0d82105d2f423467fdcda0f9871b9d84882609248356f3053a99866dad9f9b0f8c4a897a8cb8f30365a7ae5f3ca6e772d863d445e6d57c6a478e35d719d0e4e84f3a30b1816ddb55bcd79df21ea0e95da72a19cc1fe74fc576120bc108be3ed4cae3bea889fb4ddd67efe858a994237378eb623dab070d954ac780c1e6d2095383c98ba622cbdb18fb53260979fb2672c21a4600f4bf06583a112d303096d4e30e7e1060d869f386eba3cf7aec3052ca17593dcc9969fa9cd88179c262770211cf53f53f175037a5cd445d239cee48f7ed0aa1d715a22ac18a8aeecf191d415e4afd92b76c091803f4c757a9e89f696ab7b11ad6d5f24774e4a004dcb0e3f33705dd8150431f051016af37647b9e44b10bef114276d4b1055b634461c655a82a847639a038ec9f58876e84e9a2955b696e072d8054c3f81173473604d5fcc0a75b4a340dba0c375beb87b8b01a0f2de232bbb8371c3a9d27a0ce521c4c43dd3bdeebf92f42f87d88978d5b4e3e563cba0e5f59dd29c31096885b113ea5c57e66a3be015b703bc26d3fd1d51a7c14f85f65747ac909d7e30c8e800be27eebf4a62e42e538ae30b6883907cebb7fc5e150bc9da3a138f394e817df9a9e44420078f30d0d3d6981ca581791a097a5e3982c983d5cec239096c7d8cc55c87242026d769ef1d04eb96e5b5001e3358af88d417cc61f107659791a35d8b5f7a5767ae24d5b2ba7aa12230076db1f1b9b6f213dceea62949d98bc5db38743b23a59ea75dbe4231a285678f5f07facc053c2048022fcb01f15e8c100d64a877ecd56d196a6ac60ae35e0e09a517224ba409ba7b70d8f9fe65bc427b212a4e9b3cb17b0d332267cea4f3bea7c1e550f7ffe567b20e3057aa0ebb560d00d28e2f7aff718a9f2d4d044f0d20709bb9ad567c98cff7c4810e8c542370cf90a491bc1088f69998d59f344b74db6c1bdb61f284e99b517a11452ca0bb37c7bae77fca6514b341066086e600f098a32a92935380a173c9182a2513584c54ff67e580dfe16b508acf1729a3d649ff1eae286bffd688fe658612d6c8e69e6e7f7de4ba85ec54747cdc42b1f23546b7e490e31280f066e52fac117fd3b0792e4de62d5843ee98c7201529455c85b169fdb90cb05e3403cf2f737148bd20a53c73880880a14ffff37d62130e682e50bc7210ea6c1f0c27656cc1785a0d9ce93ff94dbc5b2877519d9bac4a339e98ec594a7cc76f4ddf994fee8070dd4b8e0fe0e51b93105fcf566f83d914dd862b4ce78de7e9e16f142234bd969ff8005dddc641dcd3c7cfbdd6113cd3ba34a9503a0f433899e90e158abde2ed4ed4b3711c991577c5aafeaa982bce80835f8e6d7c7975571fafb1499991646bc499ec32930367d4b1de76ff656442cab987bdecdbcc2b2bc35ce01816594bfa4b6e33080caa41dbdf8ebf2205649f98a2d3bf331fb16b9ecd1824eacbbc9f81297b115b4d36aa7496e05f7d40d4edd1886c1bac10cf3f97840a03277e6369e7a7e90d932050ab8720fce076de5c355fb17959bd75cfaeff325b0737f8f5b1160de0b0184ba04afcc30bca77a6a37e29662302d01858c0bc1d32b883011b7df5a387805296cd91bbc835a3e76152d017ee929d4cbf137eb78db89d71617dd76cb00707aacb8088ac77a1f52ed710331193edb29933a7efd8cc153e6adfc2c6637e88cd86b06036b8177847b4d086b0ff9b5dc91f3cbd1c08217023d7449253c25331594f0f16a3c5f2e122e0145c4ec94f096b45a1fd0b2dd3f1d51e58978471782a336eae49d7bc4e050d1c6a391658f71a1f752c0ec6302bc2dba9e3766359359ce34955a2db86740c90d09cc50e92dbb76e17a39955fa7108bddeaddaf860d1aff14acec8b609ac1d336270a940604209df91cf45be72edee04277d694a6f968ae6d8e065702f3d607f3baf8db4ab7637fa4c78bb0b7fe69937eb1dcb616fca564a5a521e12df71fefbc321187159bd6a47b066a3440ba634de9153a94546b63aa33aed9da2018e1f30628df37f5360ca4f2660a46ffd73e58183e8abffdea25f7bdf798a2b7cddeaa481bcc6e682a67e99143066963d96d4a928a478951dd6ec59b1be8cb23aa688e1867738aecdd9afade39c92c0b2572bdde84eb912ed990ac618834c412231216fdb84f1e01b3f8414fc6dd0f646fd0fa62bb0157b3535e1497c9272df1cc5dcd4e6ab9a8456222655c56ac73fe0d2aa8b599035daddf0986a45b1a59510abe19a11b6dba065c8bcf8a85d20a3681c2414dab7c036cc1358b1dba98d6ae62c5948c36b5b3e307a6f860c0c822ac724a5c917ed5f98ece548a7a741d366868e6c676394c3659f7f6786594196dde332543376f9ba0724b091d30f431f91d919417e5bf7ba1e9a21cb80f6c204c3a58d59d960a5788b5cba5abd7c7518f4c5170115125de97009a6c3fc4d5773e4f57fdd433eb7422c7c4dccee57a1679633ced3b5f08df763d4577983c5ca8b49bc4e08fa76f8bff36daf0fed068db47f0c87e0e45d518dffe37c129cc6e2f5f9e0430185723098e715284a42f302a6b8368a4f2dc16f534d1e5db9d0b86659fc4ba6f16c982774115d02a57684c7e5489b1f491584b0f0546e4194a6041f5e5be3bfff3852a4fc772d83491023a61a37228ef6260edc0d1cb972cba610d5ad1d92d554700771d8236ef55e983765ed8eb21e7de7c8bb51aee9368758454fee4a3f32179c1e54af1d069e0b9728cd0554351907e018146511e4d6f0450b57c8ebd21c71450116296bdfc779945da60b9192c5bb9a67b1f04d94992df4cbb3e30732dc8af2177fef17e0b7d01740b8a64db16bc29c1e589b6bdfc967edeb2ce8a649ba892bc856a929f0b837a838ca7f917a52436ea3d20e72afacc5b9d58a7fd0fefd96787c65ffa7f910d6d0ada63d64d5c4679960e7f06aeb8c70dfef954f8e39efdb629b72979be208d616071289cfaa0756a4bb5eea5c7baf8fe7a31501e7e2d67d708d461c0c93e85f03afd70bd9e16437171e01a34f475e4b5a58d13ce4e2fba72bbba93403f3f8981e0bbd6a8a6223327bf096c44b36e0ccbf7592a98c1fa67f198b628787ec80aaef848b4fea158c715799e6f458327f399e6420f0e7821f2dc4663bbea065c7bdfe830b6102e2e7193381b9dc7f2381ba808c43b8fdf3addab4b5fa81564716f7d46e0349d9b27b559710d723c7ef2f79eb55c3a9d75b99ae6fde6877b278b583f8ae3cae776b914b0cae0772397fd19b6a27676c7ca02cd07f4b4d49bbe1ec87f2ac7e39e5f7712319c31271dbbbaf4b826af8a9f4acab696c62719f7a6a032c4bcf90922a3c630647b7c1c7b78b10afbd863f07486561a0bc8d9b1ff5fc41998a7e3c604e24af1c1df2da1dd5d83eefa2e4012f7fb5959ef9339574367deff73723484b5a969c8c23dc251a3b887f34b9ea09c9a1838e8aaabb254445d7556dda257dfd5579737fe1dd6c67f3851ca68b011e7cb7b6958d588f143828f0bb24fceca31b47b77d1ce05e75ab05b55d6c9f9107f0c738f2cf8a1629f7e9b2694324e082503937ff8ca7c5098f770289af7d038dcedcf0ed77c8b82e2a9003a6f3db69e14131e144f6be7cf0bb5353ea96aebd78befbc6ceae9bdde97823cdbc5ca8ef8a993a9d9383aee9f2d6a18fc64ab92990672ea2dc9b89ed248aacf7f1a513da43fe5953335afe76d78867a066f226ae9c727c6c60671c50a50732698ef7a492d51998eb6da5368a667baf6d12b77eb36686ee0ca239dc6f3598be0bda79e47f0891fe4d8989df8c685480de11c148a2b44c8a6bea3a50b09be557c51f545a09a30e9362cf3080e6a6bee3dbad370ce24f6c5a6f8091007ca195057fa3af8f99703a601086c2a1ffe55fde4c2c4153dbff8d6601ab68743c0d50d021b0b3099535ba6c40f866ca3ff0df7c19d709a3f58b57b40ab5e43556a8c0c1938c875267bb39c0db6b45840e8ee7c22bf6b48798bd744f70e42fca343a8bdfbd7f55f275ca5d62c7288756d4861fba68d16d842c5b893c1d8171bb3c8b593387d3426f292ace5cee7753c9f9a12e6bb9af5a24192e4184f7d3d191d862d3c3dace7853eaa235b6369fd164e5a7bddd06daa3eec7fe4130e82478d36f88a0999cba1f251ffb3a7689ea2baf016073193898716a9f933448d7ba8e0968c669bdb7dd5e6e32fd84a6ce9e8632b393f9263532ec2107b4c0d2abdf3abb2de2d63511805eb58a70bc4ded040d76640af60ce7f03b9a682b8dd84ed8a47225a48e0b94ea47828f1c8974cd64e5027d8b13d43519875d2bbe4461a7f0f5b5b8d63a472765405ea9c994225806395e64dff88506f7f7f3b6368d769e6e550d4e3e81efb13771cf403e855f75312f1383ce4c2744d0b4e3735a0f1e1b99eb014fa60c0d1ca9035fbc4403330c2fefa8411fb7c3d6ede5b5c8f4736106bbe01923d483a84f031e9685a3b6a70646a2a5059ce35fa496b3f21fca6047471a5bdd33908cc9328de9fb032347c249bf7093390b750696124621dfa67fd9c7fe85d6e5a4d277ad8f8d169f8b5e8dbee280f8443518bd94abc5ca704e781e6cb1868ba2d6fbbaa850326fbfa5a20e4df6fb5f8ee2728e86a758763a8af21e1f7a8584d3f0b09a0b19fe8fcd37bc4fdf45084d7fd92b80544f29aba52496e2c9a0aa4adeb89820be321cfd2f0a53585a15d04c7fe4ec9be6eb5df419e20b71506c1f642df75c53a9e3b2414fe6102fa8af7be3f6c95de824c31fd6fe8ef9d49e26095a2674a33cb574e9e493939bdeaf5b309b4c51256ef71e95dbbcee0a11991693b533f916e1c82ce86d65d89b6d596017fae944ec364546e78abbcbe4322b83e2fcbb4c5d4ccb54d8642c7eb9e28c08598a356a5c46f8813e6b63ec2f3e3bb721b726361f85a734e0514f4e9c4732991ed3998b1ba8f618c2071d1b943eb0f8766fdb7f0492421429bd380deca3325c8d5c7b6ed16429539ae54f1eba39748f09aa44efb67d863cda304e8653ff7499cfad44dc27807779ef8e63be4b376ec403f3c84eda4e5af31c30f9807762e0980b4e5d9dc406cad4e888bfc3ec4186de8ccfcf631b0ba5831747a1c200d45ea06ac82c7952fd09aaae5dcdf5475da427cbc8c1f71ebe5132f2fcae15975ed6fa14a11b38766e1c446894f31c0496b0e5e96507d28e6e4549d6d78841e40630ef306491a1da60eaea3fb69bffcbf192610e2e07bc1124690fea61980e8ed654c5e796f67d26db5de35b4a2c67427833e360ac2a7d4fe7a5ce572144443ed62ac460c1b19402e85c79e3d80e1c143279b20a66d8dcf2bfe1cc44a0f5aa9b0d9b36c46c2cae148dd0f2ffe9a8e6e7274d1832e57aa39fb40553da6414094e838d613a20ce9307d49f97d904648d6460985b01af769800cff9a940f70729fe40e98feb64ff0a81c5b2b096b1a9d832e440c49e4e3684bd17a5169fe138d2544d9806fec027dd2a67f1856178e090f9bb2f9b314a202e7e95f2e41fa80dccf7b1810e9cbcaed2acc2445d60e26f7d63ee4b28e4299e60ea4fc659e7d6f0de91748bf1ede1fdb2acde9482bb76bf6716847eb2dd7517e0a94f0bbf20f248d2c79fa0f518b67a44d5c4c73a9bbc3816ba85ae8344b5f377649da75cf1857d6e4338a76446c48e52cc7bc7ce283d4252f8fac5e1427299edc33f84798316f77bad4a87849e91a1a23c0b7a86898046e278eaaa15ff33730a6d3f885dfe2d1dc0acda2a9e49a71cfecb7dcaa9e70eaa8fe15d4567a280e8960ba49d5289535907e9f277f96e8e652c21d89e81696dd821db5b7e1e53e160584477aa9e4c0e12160c9956df36cce6f4e724dd543827366010ed3d843cdf4319c1bf968a70e9b1b6bcd8af96c9eb0620c569716b7bc42e13251a6adf8201faa129844b5e1d699cafa1b66a674e732c7662b0410e5bca2704c5ebed7850d0ebb825cfb0627a183cc9643b709aedeac2c06700358400c389f99666ae97ccd37f265da7addeb07df9ccad6fa777d0da2fc47b6235179136bbbb409596841e921eb278142a19e6203c7f235bf8461ccadb4b47dd290d36ac27126c808b866f9531261f1e0f5c458a6bab6f064b4efc432e1c7379f9af19ac34c5c22e76e6e7651e48f9ce44eff542f018397889d896cc9001a63e8e455fbe4a9ee9a740edad894fe1af2bb21a1dd0318e28ba982c12ed69c08835ce17336ad1638af3cfe0ea892ab8e83d3f25e6bd98d5e4d36292992e2122c265a26cbb3931dd4c1b0d0ac5ee19974d0dd45777908bb416cbce52531820effcd7f28e1fb2d3d4d826e1b2673e834485a25af9f9d174f566abc3b36732ceefdd91a7c3885e1d10d51c321ff704d0883905b7539309ba5e7b7a2bfefd0494e90e9da7541ec37858ec05ea9a9ec5672b113cd5ad6ebfc5b8fe40ed7c3f17d8a73703dc89086b4d75c5eaf06b840bb2f5b4519a4fb17bfdca9605f17253f203efffc92da96fde023007d22cdad05d18aecb4bf08085c5ca5eecd21f2b611e7e8a0ef981fe7aa2014f5ac6862fab44011dfd33be8a1226943aa7ae5fee9221b0400d9ac2ce5241b09a68cde6b13c47d50bf310ecb37f25c32770a299020d8500d8a4b5d7621e4379dbd6ef34a9aceefd4055ea6144f54bbfedefb5b5b0fbd1d81c7a51a802072ec3d84f34585f22c1df84caca07849b1ef054cbef9b40848e9fd238761df5358cf55a79a53a1bc749e49ffab7c5bd9a28bf24ad5833facf43bcc3852c1e85cfe47929fc49c325c20d74588eb9833519f192243cf96625057899b70a7c93f8fdbfb60d8129d9c43c95f8782ed8293641ffd21d21d91a0b4db69d766f6d6497e9a414ceb04b65425d6ad6c8811da00639dce8d8030038f2d08330c75b0879aab81bfb3330b950e54c13780d308fceed2a103a1a8b77a923b66aba737654ba7995acd306aa7b80f632184412e2369c353c2132ae614553e626f0a3436959104ba6e0040dc597dfbc3602a49e401bf2249699375b2c722083489f54fcdc1f616a133ef6112a1754818158ff78f245b9046100b0e89407f74145fe336976af971c054f12d98002c68b3aa2bd699fbcd71bc4dc071e430bbf694595a951e01098aaa499be2f70611f248a694539ef8936b2e8b7a3c5de8662436fed1f7bc24a4e5c17a663d9a23b4692993301b08cb3bc10f518eca51081c717ec8dfbb0c2669f7987fe6aa0bd98231d8e8b58951b42537f12884a857e02d62de4fda6b88b6b754b1b27394c6a819e0f92f6b2b2473fe245678e252ed31477cc7ec6895bc361b718fcab3aa550fc9faeccfe77cdb5b151ab1db2e569b5bc923ee26f0b6113504d295112d47218140e44652a10af10a088f95c7cf2fccd040fc93980939122411ec643e26e7d69ced3178402e320fe156e774b75b5afc2f3d6b6ab828bb4993b1436faa5728cec34d66f520f59e82716ed6d1324944c3c91d04d5ffc5a921f4716c39de24768484d0096f7d8dbce35aeec22db11f899e5e7e3d57e7668f35d6c0db3542255d9262137d39ae6cf9bcde254dfccc54a6062fcf8982f781d9ffab2df4f49ec04a72eb9646d63bf9e1799bc0bec0ec7f0675ed9f8dc9b8be15d9f2175dfa1c8bc99071c70ad7bedb10a4143fa91c89f54777f84c9eae9361cf7f4c2b7ab873ee5785a5241db0af86f3c6d7f091623d6dc576d07550a42023633a09c8dfa21d7e70cce64c13f37663f75c47921c246f3f2d1d16a8283ce7697da4cb7e016971a2a1d0c59d6202bc18b7cee3828de597efdab53b33a9fb41aa7b49f1c964512901773bb396ac80e90ba1a94c408b2860065ae9aec64a41d76cf8842d299d0babf14d5840d647d075c34175e26a786f30091a24f1ce8db30137520dce1cfffb6318a0d0fdcac883eac603bf365efa2c806eb4f194cae8c16780342165222192f6ee2e103ae2a31dc08a84dfc89c64d2e9ada7ca1839dfff62ddfb7982c79684cfc821a098bc6bf09f87317209b16d14d45c6f38fc99f7bf9bb73460977bb323665d480c87c687cec052a5f08a2c6744c8e177a8a269b4a47a925b9123cd2c014313edae988f8aeaeb633ee5ba6be7f53fe36da3aa37ab2077f5fd75a82a55a0fe62af213b85e9e7694f78cc2b0e63a8c1b89db484722fc62c688678a511c474f0eff8eef1382946d26de00e5c626ec1d7079445c1b7c6f7f05073249b11fd1fb30257724a14cd7bbf451146bf366de2e826fdf1d25705587c4460040ab963e3bd504755b6aa5b18786b68efd3c8e59e8dbd172346fe7f4a18bac98164669d73984044f3c777368f965763742ab86a3720208c64801c796f6e3a1c4748b81e41ac58dcf6ecfa0453b18fad7e3473604f57f7da302e1fa81ad538d4a0280c4ad092007bb9a7a12907227a936871886c699db97d00a1966fdef64d9f3672f1b792c1edadc6781b391c91bea1bd7275f30859dbd1707b1f554e49ceb874ca06e92ab466efa7eeb6990667a27507a7ba789e24d593ea2af8eccb3862cce58daa63eaf212bdd86c01ed471cfc79b191c481ad773d20e821d18af85a7049034e5a9c660357a4c2808b9a6139f32c55c13282b8d98904f4f027d438189dc9487c96172e50dc1100ccc224e7374cf96ea6731032c43fbc9b367a4d1d0b31aa3fa8eb589672e69f1d9144114bbd508d56c2049ecdbfd7b43545375a099ad2885353d8c550d22dbb738e6fe3f104b444c89475a2cc24d7887daced8fa05006c02dfded01c00707e2ad04c41199c5decc1eae34b0c0abb5a5beee1b5253c3350e1a077682767a0b9124a4df2e8879366fd37fc04d4dbcf89883892f46a65ce3aec22123cbe6b3af6364df1f9f5f9751bc8179b6dcc5c126dd65feb7d11a85994e90ab6342834c79c5f82413e88198c73e932c66e3cb60b6e0c0cf438622e5dc5a1036c38afe9cf13559044a9e90f5fd72a3188ef6b1043f5f4e6b40ea51f6235dcb33b3099b2d8c2e02103235f0476ad51bce6d8a2934068549633e521a3ee4c62c22b042fb86c13c8da849233205a5e277aea1129678c31f5c379a71fe08b72fad9449cb923126dd465d1e0ae8a925374149b8248b3afb69f168f3ae701c00f6ea08fe07f1b5338ce6af2f3156ba6f300310114479f2f6119367c88c12c158b84be13b9c8c7b5dd7c90edb5b3ea1fa5927a25ad6d5596992dcd4877f58a134e05dcd80dde4fc2c2a680cc0ccf3084d3f4970e3603fa6bc5a180fcf1ca4241c0b8a1e7c607dc025016e297e2b0645de4ec2fc49851b9374f3ef99edd897c284a67b647ca8c96fcef935d541e9faf334043ea50b99fb8819ecce039227b624e52d8c20003b5a43808e4990da8e4398c4fc172b983351fd11a13dcd2aae5193d42d46e1b57c92e3e01d23fc968c729f3782d6c07dd5a17af2bda96735c12cc7d8023629fb0125e974425f7914690a7ed26508343ae58c8a439ebb6232049a194768d4594f5d65aca37a5686c2a86dd04bef35d74e0755937ac0ce3ebded1c00c8adabf030e5e4a5f44193b62fcf2f1bfa9dca2a25afaf2f1ec06c5d17ef3526d26d17af3e2f257ded24b177ba41c0ba64fd4fbd5042fbd5961a105e0e9f77f3db13c1b6c5bd9a9d04801a5c00a4c544218a21016c65bdff774a44b1d05256e0693e14d76605d67bd10048d3816caf31a6d10886c88c783538bd93e92bbc4484f3388b61adac4b92b911c76ebb1dd11b7b4e40be032bccff610068746f41e34a1fbfbfe5faf57c8a4331008e2c1cfd69f57e74379ac80eb6769f4ce4196795b835201ce4ec85ebcaf5eaaec242fe6695cbce1d53fde5b002e006bba8c8a1ee57da061ceed0d21bdd57ab0cab9e46bf3764d9a6c3ab19736d43b33f32eb955f9174ee4a54666e7f19cefeb49aac7a59b7370d9ae730b7bb4e08413222f0a66bfdac252fb61bcfa838f262312febfde8add8f6843f1d64ea3da42d4ef986498604d65737a44f5a099338520cdbdb65ce73b110dd4bcf8592a4adc3e0170b13404f99f0ec8f9fb225c1275a921f09369db165e9109dd5be472b9bc1901bfd882d264d9ed8d88b4c8f3b35f88b69e3e4b8ef5debb895be536a3af492d968dc1caf31879d672f70ad9869ea98335cf9e4a2760f955fd3e8099e4b2eb4269e354548f9de9921e50e49f3f5cbd63468b9db0cfdf17250c8f13535d4c0a1f21c87967cd798fe93b9b2960447401ef90db22c3adfba0f55f5585ad37040e8d6745184dd536d5a26edec365bd6edff1bcc616cdea3bfc8b9d98c0ef9a626054e361194cd05b2287612399f6d3d3be2f71555f14ad2893af6f60ab61adef663c3c2464ade671dd5ebc71935aad290573588fe6e11f48cd2b7db62e4b9932890d1b96e1b83eff70f026d199db75fb1e83197c937b672613c66ea131f485b4318e27c079b4018d4205484993bf50ce70275b244f2caf47cb47eb2a9ca59afbc78809a912eb56a4bb65cae4694f682c6329c690003a1c355f779b5857a60091b1c3685995a366cb43d753a704d3e59c5f5003c78feed877351e27334b3fdefe5907edd9eb25588a42248b9c4a93efa7cc63bad1e5900b95b70436c35eb85cc8251c4030fab9556920141cca24d6acd3122b92b7e868dc174bf071117958a4797fc90866aca685f1456fab397ae647ab9970348082bd74865bab7f248568db98ced7ed84e8360fa91afde3f23509e6b4caf948349ad9fb6a4efe0a0468302cae7a0f999195af1c19058669fc3b88b2780b9075dc180298498caeb7ba0cf8bd42eb36b1959d5ad3ca6fd1e85f76abd27ec5fb637ee38173ad7d86304d5708b6dc8817e099e77f5d43c1a70624cdb96e4e6103bb25e59eb51d894d1dc533a74005bb79cca35b66e10c61d06b5227fcb071457025d605a0862218ca252b871f8343ec231dbee15688aeb914c0f16ebabe6edb0a489b2bd10d4392c6f1863bb6a62181de7cef61997ab02f3bad0a893cc0cd8a99cd7b3f7773085f0929de36b5d124e3729140c375de9a2d0cd9a360cadf17b9e45b7f2adbdff9e75b743b62642ed67aa703b8ef33dcf51a50edc7dbab42d3d2b49badd2457a9f92847aa6a60ae2beae457a5fce1a9e485ecf907be22913893cd1350f20fc6c81c94be426eaf01864e813a03e4674491b61516bc95d8a77c15f03d0adfc4adc27f27a5ac4165ff6518eda1a5c408708f78a9e26b834179804a312148d4f75f21a77d78387139da40c0a6293c2a59d0162437d68504f189ed970c5abb9ffc6d8e1be2b0877c7f24b1dc273b1765bfc5ce6f4b8d99a96d5b1c92ee53a39f685b304313d909c1ba8130d20d51c824cec420b0315229df295f75b453a6c131afaae0c36d7c4fff70623638a4f7ded5eb7db58d95deb6249a29b171d8ce651556dee8037bf4ca74453a4a76aab7cc07ba44e55de57dbef8542c3851ea353fb8e259ee89bbecf9ce8d8bd6227afc0028afac48a7acd9b4e8cbe982eb1475917ad6be4cdca9cf6e7cddd971b2924f2bb730264801685d387485e41993c3fa0af9987e8b52c21688fd9a9595ad8d1b9f41e0457be18492aa09f69e64e2954d1ca3cc1d32b2915cd9cf6862ca79c80beb47347c4cceadf48a37b29b1d6de4e94717d60cdb4293fcf170bba388bddf7a9035a15d433f20fd697c3e4c8b8c5f590ab44aefdda94681407008ea48d03ff21e9bbb4ae7a9aa37c855fe3537c44106e8079f18c24d2584474bd4a99367660ce6f7e6d7c294961e174366e7babc569d5f80572a21a4bd7086629363e0c9ee2599c8b8863c96613ae6c32cc67ccafc66e1cce79654567ad08e62e9abc99e44d6a79ca4d8de15b7f8a763a4741676af0e1f3bd4e002c8fa1ebfbb3bd3a65ae68a80c230422f98f6e1e9837252e045eafd585ba389958297d59aea1e8e1f665fcbc5f7ff449996aa712dc0faf582cf3caf3dbae80594f9f07fc06de63d9d672d14d7ac4662b4a54f40d4aab2de766910be2fc7f6f679b5708790b5376498d3baf0463dca2f093b51bb7e9f3e7033ba0384af0174becc3bb477bc5e86959a12a5e8924adf0bffdf5e5b9c1cf24d232881ad5c05c5c0f50318ea83d8683339ca6a583c52198c00f7c1abbda282e7fd3b179297338ecf9c923a3a87a130dfc06164e9b4c1fe11d51b382643de44b30a6831dee119241d1b6f84f2484784fdf65e41f78c38e15fb4b00e45df1edc40e3467cdcda351a4c0a0185ac4649e91024377e1c331587a8586cc0a4dfe29e14004c3536d305f5dee0eeb8c2f216c1b8d27375b239f6458e08980badd6d82e9ee9e007578c0a3b48288d9ad0ec3c934a99a8c5741149af937dc82bdb545df26428b87fc935c05f1a4964a8408539f267e23de9bc498e2a4b0083cdb7c8e27de6252bfaf680a6d5b7ec1a6dac6d7d537334a95f1553324a0739414dbdb50445a767b0f589fd4c33b35905577ef5a53b0f097191f9cee4836a908748779941de2a78fe1bde0c2efd9f48cbf232ce101d9df93d3ed40d036ae7aedc3a5ff619abd1c159ca8d2dbda7de13b4ca62576c7f925c52925eae2d7500dc969fe14c0a335ff95a7df1d276a6f242765c781208d59edb5848d412b11638b27ce5a61b8209075976c2a6aae88f6e6d8704fe9e83b425dec4defeeb3cd311b8c5a818d51f917a8a4525361791d5c4fd5d70704d4b9fa9df1ea119882f400e682753a41931712c043c120a98f0fe786a600b47befefc9d64cc5bbe8a16c191490874e258760c9e4fd215bebf848e0b4d35521f53ec5f9308644b785171fc4cc3ff886e034bd833d59dbcacebdae8f00e43c151bcb24d1d226d1cc19ecf349361530a81ba3168af3df5536fbe52b3b93621f57959df298e5b4d3c14928d2ef7b9c977c7dda54242d17f8661978a62d94d565b00abc199790b9b25fbfd4a3ffc35c95ccafe35d9a138a2c24d17f06ae2cc376e822317f16fcbcd56e23f84ec135dc935e58c61b34cfbf5a36cb00350483b6bac786030e5c5045a6b61c9aba7dfaa4f7fb21897539863ee865ae061a77c0359915de3aacb3b5dc8cfe53c4d17b393c2b6bb23652f36390407922969d510cc97b99d1df4361530aef10707d7a021b2d9576b2d49ca88b3cc83ad1baa6d88ef8c81c08f8baaf515637b21ace9d5cc8fd9fe4ca6c3aa129caea7060791d566f4de8662b90f9e5d849cdadf9bd23cf6737b07ca105142663c30de27adcea11d64d433fe1ace84b0f6917c8b655f2a421602f07e0a7127e61ae9859c5e9f652ec82416fd2566f291f417ecdf99bf3231d02864e2e5a1cf34c13f59de9aa2760d8734bbda79576c62f566b8269990e9384a41c1634271acb4c7a8b768f276685c3a8c7f20872e56b683244b1af562c3e7dcf592a9915f44f886cc2ac5f679c07d5aa1fd69cf3a460f25c722073da336a310aa551062d92c7297002060072af2f3500b9310c239bedf45c5e985c2e0d60c7dd68522376dc7b560fb34d1b5089450c32ffcbff07b35a96bb6fe01259a06868d00af697f8bbb238d03d49570a109181c9576c1ea9d2ee02000cc23e63d6c93c6cf3050bbb15b6f73b09c25da62e5abd4c2bdb1110e1f25db39f04885595cd6a388c4726c8d4cdbad87d80d42fcaeae843e2e17f44c9aed25c8f6f9736c7ba1bbd3b839126de40a930024a65aacb872936e446114e706a868444cb140e53d976816983f3dd1d57eeca01eab8211b7aa8ae99d26e35c06ea4b226e0a6e52172a40e7f0df5f67759ae2ee026749ba10b8e33694c3e01a001526f9d75f6c419cdccece3ea3f78d69014e509c741214581034bbc7e2bbaf76db8421154abb2233117a1ffe2786b21424576e295c9baef262e80fa2edb69aff800b3ea436eb827e8adb73abc48d740b86c69d557b16e874038598b25f616afeb4f4a900be7dd0d38b5b6fb4259c51a3aaf4748d7a445f518485ed72b25c7df8ed0906b74bd29bd6a5724ac3a503c990f3697a5db484821f68718470810862728a80ce34599a41fc5bd8bb46dd845a4812ae1532c457ef4211d0e41835e5a6f030247614822571c930c727ba397e723d6b3aeba9244f054e331c82e65b74c9f6504c74b4301499a1a6f6269a3352aff57f88442d4eda42a82ebcf7776c5629f97d6160bffdd8282a40ce2e6375b161e4c22ee53bce7a45f4774aa827e2da657e1a1bc07445f0bbd770b7a5a25b1b469fd58715510dbf8d97af4e1b9459a20b08a8d3fa9d92feb32db95b22d36de0bc8b1c397b09970a6826392fd8392b2d790dcc1295888f42ac81ad213c7328b2324b28be7cc1f4fb8414a7785472f1dd3e11d66017b1756d1697be92490e15f056346d7e9126a1f35fd76cb016fe2841c8996a3507c4fffe7fc45026df10b03b86fb6cf26e8418926a030b5fa62748fbb728fa19dc2f8947468c1477750771e442e4a9d25b76d359211c05df788ade5b7824f8770b5dac0819737dec916ee59b28a49666ee8b7ca81386eec8049542f18a3207e51bdbc291470eeefecac385c096a | ||
40 | |||
41 | [L = 32] | ||
42 | |||
43 | Len = 16 | ||
44 | Msg = 43cd | ||
45 | |||
46 | Len = 104 | ||
47 | Msg = 5f75a437ce0698a7d8151c3fe0 | ||
48 | |||
49 | Len = 352 | ||
50 | Msg = f88bac738d1e3e10f75e46e3fe026d7e423fdcf3d7e4028b33a291bb4aabca53f780fbf99e0346d610d4a38f | ||
51 | |||
52 | Len = 488 | ||
53 | Msg = 832e5b78a73a1012ee62e00621db7f4d248893007c6e5d6e0e689c6b291baeebc72df9cf10b289fe20e7fab80a2399271d0ac63766049da875eed56264 | ||
54 | |||
55 | Len = 13976 | ||
56 | Msg = deab57cdeb41974037a9bef5e292894038264eb4d8993d4d1501e6ef9c68fb0f571f57b0925640925deae9a6317e3bc4d6cdd5a0833e52fb48baca16a9ba9b6c8ca469a0555763b54f04c87d4e41aa549258f30eefe5a52d2ba06657a8773b0842e094857b6d8911d6a0636280025e56356fade362b4bf4c875cc19be0c6644b447be0454dbf390eb966c03e10e9de3487b90d0825d327c12495e3c89ad09c9d591e55c91376fb14c2fde9f7461fb25450df1a65806b65f3caf4d5c81ebc6e664871fcf915b9578bb70ee6776acc62205888dce2baa4024941209e81b4b35f0eda1bdcbd9ab1d6db6140bda4c41776fe675d5c681da5852d50c246dda4ddf9fdd7c5fdfeec85ff6c883c78689c2977584406a1ddef977606c182d6c33561c39c071668a2515e5aa6f4aa1faa392aed95b82ab32b79a15e3b5a07551ab068455131b72493126470f26c30b852e4415e1d8b719b3803ecc336e4facbcc5d1908851f4f39b776bec8b6b9794d47e5965458858560eed5a0305e260240c0849d93a19787b0f8c795eb5ba32be573845256ae6d0b0a3336e42a1beac8bdde6d1b6e0b6207903d4b105f4af2ef89bd099ded870daea2f170e03bd5f6f4490e60bc222d4876e16d4c58aeea6e6c400dbb9e9f4b2b142f0fc9bdeaf4132ded38a4a8366e107cac7210945fa2df4b124be37ef76290e5b9758aa3bfe0091bb0448206323584c2f833e0edfbdc0c33075fc9647a3404ca490bfab94302a0679a1a42fe9fec6af0cd98038b09ffbecd2832b579b2294f6ae5b96328fdc0a0b9b3a32cba04fa8bae3389c3951173bdc17caaefe526aa386f98670b177683d0b804c5875fe9c7afa233ee66349c9fd1b60bb0becf5e1d887e67fd3baf34b4f90d94699d18d6bb9d77d4af358f31edc254de2d6c5fe3ec07425c633b18c1b9e3606b78b40b543e1fd31fb578cf58c45744fc073fbf3c7d7d607e815379a5fc565892d81560eab8fb5f1ae6771b998c592e6d288014f13ab283d53fcbfa66e31a9d107308402191fac2cf2b799c7dae91b93a7676898b8a6e516a86eac58ed8f6d8ed2fd4d38031e4a4466dc8798b90c48e6adb6b4391d47872443cfaffa542b4b132f6c3408f0081af8692aadb4c9bbd55053ea56d8b82998f6b4b41d331891acfe6af1bb0d6679989978368ea463743b514866d2d01fb9950e8990867bc14f1db1142254adeccf3da812949cd03cd1d569e9d0bab7ca7405cc21096e3cd4d007cbb9629372e98584b4c6b97ad0bc314e1ab6ac71184ee555c01973570ed9b115bed956f9e4e349083013098b1e483f0fe44d5e9849f38a2f7ae152b36a266ea1faf263ea8c706632ba8629602187379546fc6b82e57ededd6d074c15c771754710731e07c207899eb47e8d7c72ffd768c36257d373375ffa06f9b3f0af11417f9ff9f9b44e1f1f96ae8aaa429af88b14da1da81c7bb38a0fe9372ed6a9ac6fb5e9e56b82593d94c5192904450227bf040b7ce0904789f979845e112a1f995c849ec3f7e49bd975a474e8201630f40fc0d80e76019f110ae158cd0f8da96ea4561f24237d8e795ebf52368218bff3e9d5b040ecd2caef4ab1e7127e53bfa2b3b4fb74829f9993ac703192aedef79dd9ad24c2c976638b4575afbce22ecacc273ba43379ed55ceeb51838b0adb80585bd1b5f2707ee16b67a7232adf7163415b24b9ff9dc94b7197fdc89e2a90d2b9eccde45e965edd064dc0d1eadabe11b8ec3aad2742b5d3323ebf913a92817749090c20758f98aef2544d4c8b48874e8936d7ee492d5585675c214deeb74fd67c4d170ac5e0aeefa607c6e37abd4f8238e776fde3921afab75cbd8f392d3e88da057903ce2e140797f4a85737bd89455e6aa27c7535687b78cd0ea59848e006c8de9c9c0cbc7a9f5e977be850adc710503ce4ba7c7bd0b042297f518abec6c8ef451c33e030251f506cbc3744228b6bb4dab86877d9e6019a0ea9f39ed37557b3b5527c171da5f013e0d3c480a038cff2c087d6e5d41b17e6c8f90c334b5e2b9ccbe9d4efd99fba1f907d00a49b71b5a08aedb644fed24bcf04e71be67b03cd20d53ccef8f854f5e9f7f28c1e98a8a53496646713bebe15a93f1ea336e6e8a4e68de5dab0fe880bf983eec75d1c5027357f6669e098411e0bc3ea2293138f5b34425f78b6508b94d4c0cc32ee9afaa409a26e5f2a1fddcd6d5ff42a89755a58b08f243957a2e208e24b055f51992ab447bc06876eba169c545fa71b88a0fc15d1e0be9d334a1dd0c86f44bd149b42c07608a9a30d0b7e13574f8d862f2ac72b2ed38904d7cab194fdb9e4dcb615f5610b24e202a36866baccac01fadb575df11dd43e00a3b92fcdd8c7702ea49d951e7dad2a56c075730b4af1ceda2bcb2310256f28312579fad40ff471336ea6a44143edfcffc297258d48bd2ea47efab8f0dc00f1e6dba1a55009ed627b7 | ||
57 | |||
58 | Len = 48824 | ||
59 | Msg = 5223e2fece634a95e1e7c83ad4a11a0478f4a41572bd66c2d7902cf4f94404cd80b1f58fbcb8eeba3984fd759410c12f8ee922865f363f684df5a8787c87ceb3086fb8535157f7f39653dbf5c66ae7219253838ec77cf1c6db518225c5ba0a8212e5911236474b8820ddcb8111b87320adb82ff553986324aa2a21c37ce4a083c89ce9931290d4c1fea933e31d014d7507a28e83aa917ccae10bed1a490e77fe501b299f8e3b78e659407ce1934d5d68c7980800746f26ffa9794ef1d23f793bd2eab7fe524e213e58280f441ba48b40162305335b3a480c2afeac11c27f8d817792fd7805d4b61224eb52d35c0fbf471bcaede505fbc9398b216f43bfd69b1a669a61d44fd21faae410af58ff95e1c3ff1528de1aba93cef56bff4d714d8c4cc88a4ddcda52444ec1208d99ab3fd9fde98c1ee6437d8d138f62c5f782eb4660c5eb28564b5b0d46e3a2546009148f3d02b837c5284e9f508290270b97b9b29e84445a0b4df662d9711e6b73c11cebcb7120dc427034b1ccf57d8e4f5bbdb84d2e1d4bc3862a2b51931d3c9a7a5fd6ee5f4c7327c338abd011af638d730141b6eafe63469eff50f473262e9fdce636eff4c5663acb6075a4fdb00c8b8a8d3322e1700a5b3e7db90b36c1a94991b8f51657121b442db6f890e208f312466778d73bfaa8cc0ead4edd0776155f3eddf9abb1bbfc0c94421adce83d7ee94f99f61e1f25a55fb596f8b40ccedbaa8e5e2cf629496f5ca60bc4cf36d917da4e2b973eb57869dddc409dd66d5061f22642743fe843defa0b19dfb2f56425abeb234181267b5c0d2ab4268c538510feb191bbcd1631b0af6c7451cd4c641025cd8bde2d9ab6e6b948f97c1ee6f35098d553e8e9da9b4d437125046864633f109d6a558b38b270a7dd1785d44d248a863a91e3db5c0a1d7ec133decb65e81c3402c98ee329f660a092172bf6b1a02491895394ebc506882805a6c93e767c0e58a5af717d950a206c0f0055cb39ed88816a9fe3613d15f608e486ac08bfa67d462d24e6a0a37716d3fbdaeb9c0e951c1e847fb884ebc1cfe707dc6e7269eed1c44331d5957bc4ac9dfeaed4b157204a3080fafb9df8917b8d15aff9c49cdc739b8fdc26a546794991c183fa523d14797e051894f48b0d62c2b70834467ff9c993b82fc1152c1f5479ec6144c7e8fb10d1bce26bd1cdbeec4e95ee073f3bcc3c7367328e30543d371b27509a577f5c79f14d5f687ce62b82f856695af9f7dd350543ec763de75b593f1859e44c2ac01ba65f98743cfddd8a89a38115badcb51a0ff5655f830c0122af6a830aec13ae5eb89a93755b3a5a6eca233f21cb12db545a24a5334becb8fa32c3d7f5805faeaaeea85a551fc62c94807faa6474c0d74cae79b5d8ddae07498fcc5b8b4f394867112ef5fad1c9da66765ecbc7fc0f3269d29c9c38817c77778f2c19b5a3c705fde9d76a4eb86aed4a7369a832ad267312903462397f7b8fecfa8b195cc2316cd53e48c3371ed2ecaa3e484b8ecd2e22b1aee910c51ed5d71198936266f5a00655d82c089f49295feda0a2bcc1a54ec8adf565acc3a8b2d74c30eafbbd843c59e67f293f6d8296cf7b611f01b57dafec6e2d4d411a633918068c38ef47b72ceff1fae772891141c3bc496824509d78165c1e4cd4b4989321a8722643eed69950dc120fa8da3e53c3181f252d7c4cd2cedf8f086f788ee77a98ab5b019828aa02108f49ea4a51f457f7adfd2220d3e59d5f4a29194e8f5eac40ff80312ff6888ff6393c3fc0914b08c1b9990d247ad80a441558db1ee1203e07353dd99a885a7ff5d791af2548815dde0ca1f56f89d39ef6b93dbcd0cd54b854173903c12649587433f0425fbcbddfb66ebce3eb4800dfddfe7fc44d9b23a3916b1db68c187da4dd13ff0157352814b1a792de7fff855761abc6fb7b93b48525fa90fbe3a51dea974069f3f5fdea86387eccee13f58a8eeb8abc6a43fd30e9788c3bd9ae1751b30a82d420225b2abdb1bc121b9073380be16107188d20be54f2e9c658d5b443869ea0e991c496104086290b6edcc1b656adf94f0d42458750fbd8d88040c518ebbb644f4dc4f7c6971d8d60eee0272df7b51a3d5248b4b264fb22195ad891fb6ac994ae5c0bc6714ae0b0b9a484edc576638b78ee89b568195a8f33ed8362128c30f9b0c7804b3ce1355abc96b15aa55c1e16a9e9ec90d1f580e7cb412a7e85d8585bfb950acd4de5865214ce4db7f6314d81784c588c1482d5f28c5fb62e7dd7aa8237ce9396ccde3a616754414cdf7b5a958c1eb7f25a48c2781b4e0dba220f8c350d7b02ece252b94f5e2e766189c4ac1a8e67f00acacead402316196a9b0a673e24a33f18b7cb6be4a066d33e1c93abd8252feb1c8d9cff134ac0c0861150a463264e316172d0b8e7d6043f2bbf71bf97fa7f9070ca3a21b93853ec55ab67a96db884c2113bea0822a70ea46f9ae5501eb55ec74eaa3179fa96d7842092d9e023844ed96f3c9fc35bbc8ee953d677c636fdd578fd5507719e0c55702fed2eaf4f32b35ec29a7a515bbc8bf61f9baf89a77aeb8bc6f247706c41d398cae5ec80b76abc3a5380001aea500eb31b10160139d5a8e8f1a976dd2dde5ce439a29dba24d370536a14bb87cf201e088e5e3397b3b61477c6a41e22a98af53cc34bc8c55f15d7924e7e32fed4d3c3ddc2ac8eb1dfc438218c08c6a6a8eea888b208f6092dd9f9df49e7ede8bf11051afd23b0b983a81bcc8d00f7d1f2b27cb04c03aeee59c7df23a17775ae5984eda788eb2015680ac5610fb1380b4e7d7a9cda6178dca98690449f5551b66ad2826cab2b662f56903fc95b4611bc86f7a834a34ddc3be7bf142c8baa096abaa3cd51ad0c0b6d15e590eab9e50a4c60c91061f1ed6373d91974c1ad9d263110a0d43fd8b596396cafc0ae70b7ac24a59bba090a6994ec483db7ed4c572f723670a11c724e8ffa2497d8fccae37eaa1d14ac1537eaf80efbd2e597b2ffac97f2bc3cd2c4017f170544dfbb0d9109478fddf06ec0981542bc8107a725be25070d2cab4716f4edfad75fddd582ebd363c49e8efaed9a76ee51f22304eebc232a4f67f865b04f610a628fdb317116666785fe8ca30619a07c83cc449855202d687f162b12d93b63af6e7ddfb7223d4ab998a5f450523c1d521ab76f4aa113cc2967e04a38dae07c51c2d0f44fdc8605c3c53ccee91a2c73dade5dae021cbc87d5cd6e5fbefb65335827311fe1e91921ecd66b2055a6102d7a976308a80c44e6d47a67718c84f2112d65486a558f1f269b91d9f47e3e11d09c0c748625bad2718e3674898abdb19d3644bcdc9317c09a3ac02f514b2a57e6a706362e5f6e8fb16cc83daea0eec85fdc8c367d84c9230730291440a4b109f7034d510a3f70a22dd4fa69e8b65e5fdf87045d560eec71f4e59531c7711d4f8917a96e22ad07346d2f92a13fb4569fa6a075da6e1acad1eac1cb2ef19ab452264de2357c927c6dfae6598cbc821eaf3b8da754ce91a96c702c95b2c308bf3a550cbf4d22d417745b5f17d36608feb826b862747c59d26a0e8eb96547a1852f9fbd095f1c5d20721804941d462f3ee2f0876ee2825c8df24c4f00f0844e50588ac688127013df8eba3c971362dd255420649245e880212cb3d732fb82f866dda090040f28e09cf1c86eea5dc4fbfc373eb69745b4afd841ca8e172d4a8510e7698345fd4cab9ec2ca0453a274720bb2d2e5468bf0d0f85919dd762fe3df969e6c071285e25c2e2a49659b8a78289aee655965bfa3cbca9b292a19a855ec40293185354ff4da9451ccf98abfda07f1137e79bc89d688963081dec641a99656b040637402890f185edb28e7e6a2f65848a6af158f90eea440aa6246a2e6c31f5d220b9846aae2027afe5a7caad6dc16b56463367cd9e73bf22a1d6172145de4565ee369c55e3b99ccbef70fb080a3748340fbe8f6b95ba46e8b76de5a3c4bedc37c55ae24ad02267da26769a3a732badac2e0f3a5393028dd54d78701647582cd04c8310e9f1ff1b433125229547130e1737a1f33604f0d670ea7221097c3eb9c7fa4b8293d7b429af76191ea8e481dc1da31344537a09b33404d782eda1d6f5775500c1d8efc615778baf0905d9fcba1806ef986c40b1c6a72335104376b58266c36f5939a8b95123e8635c0c95e80aaeb97379b1179d6332dc07539b595ec32eebd3a336a1128f3cf2e2924db6d8504a516b62f26d012b7f75cab765c8374a3824da5a405746023b51894649ab422d636513ee809fa181d5b6fbc63351e37a1b14efc8f739e86ca78ae3e280f1c9e4824b2976ec4dd308ede6171a7474c7f530128089bbd75e10f9e57ee17408b4384f99f886a5f63a2320a9b90eb9bf692e1fc449171eae3bb1bb17a6ed937ea57af3c82db84e073b5306683e1d63705b9742a085fb802cf5a1639818417fc2223f476c2566351f4b3b17a822e11255f3c3412dd39190e200727bcd3f9799519ef792ec7c2b0b9d0e2dccf013d436dee63483c2ce83c15c00a76c4d894a60cb90366ecf9e61221ee8bdaec66d715159876d8305b35c81f96ab2cd8f81f4769e9a6e439c08c329036f5d2591ac42f2747bc0e77d4e566358a3271819b6003b290211b9b847ab70e906aed9f86cc38aae27e1098fdc3bd5d84e66c45292183f198bc329cad794aa4e430534511b7d9a75104061b409676a16c1146af0a286e2de8bf51c4a35193581a902bd3224cb9257c961989042538092af92644a63d6d6f6872a29aceca39341ad29dd22354812c4b7c7068b039ac9ca7e6358e662a28be001d4aa697ace540cc3ed3c97b98d8c5a6fd3543ae9a7962c9229b14b0b646229807747064be3e83191cf24092dd67f675638d9f6510486379f47f5eeda870a3187946819ec9ed05e7b325bfd0eed5c9a0f4a2063d63c1a8a0a309f586c94d4a68bbe860ae9599ce204c92cf9d92cb460ff99cff9e5a8b3824786360e1e1861e71158395faeaebe7aa2f61f76190f174aab9a313f0bf4f1befbbb22768b8c22719cf3fa9ec908b576fa4bbc084b1ee5b5a7eddc89b58b45ae7b421d38215aa6e49304323eb4e202655f3c8b16ebd6b03058e75a907ee63fcf6aad5eb96c1e5faea81b88b5eee525c4663af52877c0f759432913b9d48030903e7f9f70e851cd4e20bc56aaf36cb02293d992b38b583b8f0b25a08c3303d8af5b1b37f5127f7021b13934645ef3020e5caadc5e7326ed4ff56f797e26cb986b6512b0cc76f1d8e7be44aaa88e12cbc644f14a7feb979d2ab66907063c51e052d0f8b25d827377fecc5111be0d365e08d17f559e3134cb9db294f1cac03150f4232f853ec15ecde55fd1023b58e83934869796400088e9177e85a2227ee45addd049c1d6b03e5b29dd570496fdb2fde7d8cc74fbb5fe76266ebd90a3b4d57e6e6cb9f0bbdb7ca03ae955915768011c714c909a27ee20135927af55d4feaf2c345d029a54af942da6f85f2103345d059f66864e6b0578111e2ddd5a1cd8bbf4ae35b60747b93f53ec8ec64c10cf4149909b102a2b88712ff3e5ba3611cf96585a6b36fffb64b8c37a114d6b16a53879136eb0b5e003a5a068e3e8422a4fc8d7c77227cce64ebafcde2437166b62ccf486660a7a2ef37012ebacca26ecd5bdf363feeb06aee39050974c25d6a564594c67f56fcf7ed48b07fab4e25ccffe002bbe460325abafe37f23dd9c145b4667f146a1635e462330f02470b35c5a2519f1350c02b263201ec9026cfc57d3659373910e878f2b6c1c5be774df8e01e775d476956c257bd0ccdec17ee939c46e5653d5813eda752ba7bbb245a99a5db1ae55d19692074c2e5820df97c502a4bd1b12929e1be8e9ce6d802347c3e9c4202de6046436c05ab55b2fcb2c227adade6c2046d98102cfd0d859a91f8104eb9f6f155da2acf93df2405bf2c083eafd3ec41d60b810e0bdef6298b21193642a9c0c646bc6771a5c61a25604d96bdb727abd5a7ebe4ddb2a56a6ddece26d8007b26043ad44279c3c8ffb7e6ffb3cd4e10ea2780f509a8a9bc31f99a7e66201195f1543a0a020f754d9a665a29a896faf673df6811379579891374c71b2234fc61e95d4d46f15d44bdb4d7c3b3be3f46410ca46827b8cca976d8866e8ca33c4945d5c87b705588b78015b529843af0b75a7e1e871fd276c1e947d896b92e6181ab7e3ccc7077bb57fe85a6958667d3d7a790f6cde1cebb494c2912478a0eca2bfaad62492e9f1caaa0cc520da08c0d2d910cd44255f4c2ca0646dc89e789a1cf9a28e2f99315d33accb1639cbaf0c94181b85fef648bb4cc7f66dc65b8e90bf5f3b763e58520098febfe7e47bddc2d9cdd5e40dbf4ddb8d51f51bde2e57432266d248d13ed09e62f66794d188f9861c50ec41f0eee30f76f4ece250956733ee97036098db41991a4a3eb7816196c8e447db3a2913bcd992174a7bde1f42d57c764b47f5bc09533760c1ba74943a0dca291f2746bc1fcc573f9a22c72a5eca347b1679683fbc8f32b08d381baf67b7266b14b3ba46a04a3ee45881ac452f64df1bf17f70f4cf9fa4dfed9ae70184679184784a0451d2f5c19c02031e0e4957b4df68b4a069a6f6f6458f6d773924a1841ba664a55c2c3187dd33416cd410e56e4bf8d3671cf737bf67df2a4cc4dcc786872b9e2dc4009fea0e48a749353ac053d80e36357d24d468dd595bc823017c015d7450fe38149370c5decf13b00b6b0e0a2567ac08b45f7b0c8a7c89d227219d051d17a706ccbea49a42035cb327381568eae23b5e2a3b7e8beef6f260d24ab224827ca8ee9d640dd23eee94ed02c9e26abb3053cbfaeadbb1f365a24d8769d92240da842e0b361524020b5c9c22a2fd8602dc9600aaf02b35344309f6bb018a94d4cbc9639ab7430657c4046f0b25df517e31626abeedd58c2e19aa0ae1a43ed2bacad91dc04a2fdf9cc33cc420f4f04379e95988ab36731d5d5402d89fb47e826f4243bb206124364d63564a0872f8d2826eebd9046c7c6f2e7c951e49d4b22a7eec89da1fbed890d63ef15f26422185143c89da3ee269f83e1de11a7467822146042be92295a585e3a09e720ec522e1cbdcb41acf5ac45ee892677ba3ff670d71339a76ed98237be252ae21268e756f05ba0b094a1803f9da84a8a05d0ec9456cf565e1b548cae95eafa0fb01f091935e6eff2413bcb15f605f15270408216fb5b41ed83dfa1454c522375e35bdefe54275f109d0ab450636ac4d8e4d9e27f2d81a15b8cc5e98549254a1c9162918db3e399118f5864774a9d6a2347e1315753071eb1204c8bf5f52b1a0da37e484ebbe545fdfe6b031215678c3b83a19a24d7b661f626beb01eb82b384f02f42bcad4f40addd48db8a92b90d2297e6143702056123286617f86fbef4fea940f648867d790b8f803abc5f4e0e3f4226954c296afd96e287e21b7243d05e743161810da578096521805edd81f68a45500f6a3a1885cb1f45cbd399dde024df65072eb973c827fca13eeaa3f140842016f509aa9ab4603d2457c92cc9aef24950697a0044e3d7c483b8d8391886cd50dff8c2f16de3d6caa7f864c1b3874750781b2b78b545a94b4da0b0036433c6561f5cfea50eae9f5645302eef18238473606e9b9931880d0f6368fa9970d1ffbe59c4454bf97f4a5e8091801b53ee4a209e0642d83605836f69742071aaebd9d813b10f4ccac03851ee9f20cd1351f8e68554c9bc5f58ad19d474ca128edbf561d195e52ddf3c19bee3bb597ac2f92143bafc98bc09fbda6d18dd4ff2a93cd2ba17f54f75c32d3f141468c2baef4e53b6a340286dc2599bf7bb002aa86688e26f5b51a6aaf32e48ffd539d4f3f4bbf0cde2d20138151c82384f9ff29a634ab4e0103d93340bb9a7b0caa108bc7fdc88d7de14abb17e9efdad2b0f304f0bfcbabaeb1b9db75959dbf54930e67aed3a9c8309aa90506b6b9ed4f1d06c4ced19746e206e1e9b8879663bf56bf6c5c920ac5e09e6579b780cb63e1875ef0a731b726864b7ae5705a2d6d343a4a213a05928b7337a59f900fd04472382610e2a8d25383c9ab5804d609e79a88d70eaef3ea22d3aa9100fa2a6e98e97684ade9fe90d6bfc59dc9dec3d3d8db8990bc2123ba92e64253235e9b4d682e8aa04e23fb9bb6248a77c065e93249de829bb2fc5ea9e396461090222816bb29bca37bf86698fb995f62c50110cf418bbe2078a56c5f1ec9fdf3d0b09a719ac253b5bcd00932ae058b86611aff51c8ca8448978615854b69b0216a6eb8050ce199fd9a13aa0fd652570a1b187f61e6831b3a960521c3705da8c5e6c64c7b196ed4a49c2912d77b670b177c6458a7a49ecc1ffd8c57c0978d2a05cd1f1c7ac9514dd14b7b0933a52cefd40b6452ca0903df1f55828025c7e18109a6e0f2ab25724cad2d6f57cb5d894a6a508134731e9b9c61254f64990941f4faf97394b634b91860cc6ec346aa666600d323c849ea4c4a0ef55acbc56495ca004f3fca42ff0ffb11b0e1164c95ab89bf1db3d4f575ff334d4e0d7d50e0c54c422eac5ef78c5a3be95f2e18872540fccfb597211ec79d9d47b6cf41e385b9c2e92122167fe584210f63bf919c620d | ||
60 | |||
61 | [L = 28] | ||
62 | |||
63 | Len = 16 | ||
64 | Msg = 3dd2 | ||
65 | |||
66 | Len = 104 | ||
67 | Msg = 3d232201038fe7d846ac1bd4c6 | ||
68 | |||
69 | Len = 352 | ||
70 | Msg = 44c98cfc71f82215dadf494d68d1d6b92bb4eb81fa0fbf945a659d9aa2c2302b5c93fd3eedba31e479e29d36 | ||
71 | |||
72 | Len = 504 | ||
73 | Msg = 02a5c7b1b749d6d49bed302d9439f23ab83020bd4d573906f4190e74216ad33aceab775f71cd31092bba5cfa42f0845bd16fc1b8bed6434dedc92f80b395aa | ||
74 | |||
75 | Len = 13976 | ||
76 | Msg = bd70deb2cafa75918308d703a6783fe9dc5e3d21de9bfeb6dbb1cd531ed5dafeec463a02abde302d4ae6ab3cdc2f0f94865e38339c88bde507ff71bbea6b30b9851cd8cf599e950b8c8e620c90adccba0033f934ca66ea0a936afdad575bb6235099beff1a632c9114a8045a0919fdc21083880eb05c0d8c489c7810aecef4a41766f67c37557e28a9db9a0d909c2b167ff7eba79693afd3ee3aeace38eb73a5a02a882cf89b123812cf2a0f6d5edd1d14362ce9c43257474def5cce3adbba8cb48e7af9a45e702a182dbf47e8869b3f99e953ba81628e502c60d4f8ffc551c31b3ad6ca85c52164839d5e9d493deee4d4b76604174bdb5655385d34ced2c1b09dd5a486e1f9ac501bc611f9d7aa5c748f496faecc14c6c18e1dfc6aee2991bd0207ea1701219955a751df43dbf66f57904675a0e9e6d7f9a0b8bb82a8f44951117ab2642d6671daf1e5d1639d48aff6a05781c2b5e8976653b0a164445872d393d30355acf0bb49bf2bed4265c9a3b786249afc7a438d706eadb6f90a7f93ad51bde6d2c8e6ff09dacb3dc67ba0d3030c54c8367e1e4280bb5903274191344610de61c3c770c6820a6cc9d826f7c743f88f13580ba23cfc00598fd733b5dd069bde7f10f2b8961c16b69761b0f308dd137f844a67f6054e065863f226141755b96645a291e3fa3fc853b2475fbe1d3b25ca22f4da4425dc95fc855e63d6699b311ebd5fec1c7753e6e81f747c808ec3f618f63eaeb1221075edff0532225c40ccadee304a8997c03920e7ce4e60e4df4d120611296786516dd4d9cdda2077ac52bce0fdf552e1ee89a0133f1f87a6f6f35f5c53958ed806465919a0a5fa42488bf29caf33a0dd469e13abae351d5c6fb1a800ee384da199c823c965d9d5457a3ef8292c4d9b142e3f1fb502da498eb44d95f8c85bcd6871bbdbf004bfdc09ab35758f5e8b6a0d0f366c3b255333c52c8fcd4ecb4536b5f6e72897649f3415443612d72c3436505249a344feeb04883f41f90ade40af119014b3c56fc108f1ab0a77087d9226665d416cd975e9e4605529c032e8926002a70924820c6c7e264a794b2a3beb63d69ae56e017294fad4d611cbd0d3847212a38f22d623eabe3b884a36464d8814286fff52c4dd366f6c2abfc2eb865e0dc9ec6e55ca9d81f1b8cc47e2629bb162e54655bf2a9e156ab0bafb4b8ce96858aeea6e6665607a3f268036f4890dad759486b15e3c9e791429ec8f11bae4ea7c490656fdb0551dcf0b0be017c08bc674bd97d9d701c3ac955e2941ba7d5f2ba122a6f0c1b164b1caf2d50df111fd4287e9e195d181f6f514d7dadbefdd4274edc234025b727680576046842a834b6ad89eccaff5c5209bb91d652357e3750d8bb0165572fb71d09fdfc60f6b1e5d868c67c0edead427e7aeb734e29b96e03ea174b6b1af523feacaf6bd745ceb1bdecec9251958b7f521182daddf62ff6c4f58977adeba81c616ff2e937ca4f16eb9c44e63f9e974709122083ae45524ff87d7a0cca33a90f09b660db0efeb393c61967de2564315827ef1cf42b71c0f822f471713c9d885a3c3281d7c95dbc96f1c6dde0af70ea11232b00a2d215ec8de8fcf84b6193b6ac9d46de660361aabed3371fa44a6f32107f3854262eac355f9ef98701f580b4649175cefc29950e7a0eec958f629999c4b0a98fd4bdaf5c0bd97c963b551f2220bd41ec00b8726836e949e818a49aa1ac5bf12c64fb9991111ce8be3e0cb9605f753dae1a4c84389416f17fb66cecba45d591b22d64e5a4edcde067a088d9ff7f5dbb9dbf324510000c55d50f480a640fb22da9b4862dd81080d61af9560b601edb5e3346263f5f193df97079a27e3f9876078b80ebdcdb17ca4c50aef0c8329c72a7f77584cd963e105eea9c28a2ad4e95c1d018e27d0e720ea59147f59ad796b80b6293da8a55ed47e8abdd37221db0a5eefff31688e2adc294654ab0fddf9c1ffafd4783f01eb539492cb35a77315d0ad19395f47b18298a7b353dcf5bab0b2f193ff73d99310478d2e5c4ff1c68a2493c138818edef73caec9977bd4eda6249c8933953e06d796b288f78b18c343ef561082fd03bf92b084afaaee741de3004abaf746350048294bc52450e31147173f2da13d6ffc5adc718e149f9df3702f414dd3ee88296ae8a0106b071b589e8696401da7993d58a9bf8e5bf417165498c96b4ff5fd2b45bbf88f551688425122a3737ca54b2992fdb4d60957a93097222c3cf4c45dabe18b9d6a69e6f27567d5adec489e4b6812c29a8fa52f1de642b7b0e749c16f54473ed5ca2fdf2199e885fed308fa62a3e0deb7e0b8e439e25b3e9f95d755fdcb7ebee9d73069dd57dd1cdc5145205882023b54f2c9dec6cced9e3f6d24e8cdbb8ef121b8f3eded574d81908e867af5ac82bfb8ed60848b4bfdc1d998bae3a9ca80c1c49601d11a40409c62b1536f01ca67 | ||
77 | |||
78 | Len = 48824 | ||
79 | Msg = 5fd54472a44e4476d254c0940071ad42dc723354f76ba61f63fbb9df80d1ee56136f51b6982e66c1da83602fc08093506a9e2cf27cb92085ba5c627dd63f59f8850e91a1d86cb1d4ca38ad03160f3c584b128d9b21e935570e086d3815307ab8df396cfa0c100bf6cbfc0fd7a8258fa1a656bc178e02cfdc868540d8e5ad39dd46794a8bdc205e710555ee7421ca7475a4f3232e6a0cd55d4b5d4525f0bd7eb1e455931aeea6918b9fceb2a32706d31a6d7028a85e102f228417e2e7db68317ae155af70eda98c8dc1ecc32a62e294d92855354c1114c5735a3c81e551b63a81650107557f3237bf953989d17c65a0fafd2bb1e32c237f98f55389e8f8b0810e97e201914c487a68403c6d621a98ddc515780435564245d87ce462b8785def699f7f06ebfdf33dd1ed7dd5a3e781348298c7950a387bff7d1878731d7ac66ad9a6607f2c3a3b6843c2852a5e882a8d78ae9dce2a79d595cdf09626dfa6f1dba7d40ed21caa29e304e7dbd559a89bd1f07d84165dc259ef112dc6e2c5a3e82b1c50106983f6c4965c85073c5deddbe6323003d56abb0df590f69010981ab3407e43eeaa29c6156995c492c931fff1b686eda3741a0bfb9094747d1620b2580415d431ffd6c02245f6cb03e39f87e82834dcea59355b2ba663ce145d2514e15e2b2c60cf518ff510c6c3e2f16d2dc523832762ed8352a320462ddd4d6fe755350672038163d996b44ed3b85d64989291bdf39398cb996de785b9614ec5d4bd73efcfa37fd4470b17d6240b8e4c715759286b04c3d7d791e2689927c9f18320ff2e6bc7306c805e23a5de66eced5f1a630cb43dd46db515f837f6b824b99b86c10b6df7fcf22d97be05284edf0e0be597b3f9c63556db031339f79ac9e6c5f8a1cefdbb4b30f5bcd23c2a4dcf791cbfdd6460284c5af0621ab7c5571e40a87c87be459c85ec81d746930dea24f43bb11d6611ea83409d3bf4f987778d8eed1d5b246a2112ef78ef0252f9ae464810c13f02359441d289958b4766807d9a3be0054897d35b01830deec1151f9e3d42f92b80f4aeedd65c78c6e98afc562a3bcf6d72f238c6e94a38f2288ac7929a7a61c92875c1f115c0ed8d261a727f0794f17ceaa3dabc717478f6ce7f2e8b295f000241e154b4575bfac8483f6b62f9ef4e18f7d341a65faad5e2fc1ddaf2b09adebc155ff09e63d5aa5f95206e66c7f4ef2ae3aaf3ea7c93589efa8c552df8d203e0ea181c1703d7023b56e603f33b4adb9bf44f7af290d8081210f327a6c9b0785709346087fd090c42d2b8b2711b9a1a5173eb5e246320ee27867ad6c3eadc4407bada44561a12cf5d53bf0448308bb536a8a525eabc1410c3a34becee25fd6fda453251ec229b53751f2280e142c6b331daa659ab655b78cfb08bf18e40bb02b7f1650eb2dd4ba1707f0aafa219f21c29521581ce249e2e34f5656b0a04c00485079b040e13cbc038bb9f17f47cb8f908591b26bdc28538d8baffe4cc39b17d2ecffbb9698bc2b8b31b08424034c051b535e0cfdf07b7a0a54781e33ba739759991aeb72c0ed992cbe76eb8ec0ab12c182e8b049cbadd6e82e314f1bf15fef5ae95dc86bd64b8556766f8ff62c33492198e454e5ca59ea856d8e095c04da8045522abac865506096ee1cfa1082af08ca09b3533878ea3580b6c0c57a615e0ab768246b3eda96bb6caa01a2648068e21959f843d853e948588e8c0bfda364ef1f9fbd3235c27916562eb0214891eb55ae0e059f4bf7d1838b5942656c27899dec6d67b823a981d1e1e0aaff5323b0e3d69a7dddf9b12d7787ab763a3c7a2697ac65b655aefc4bae7e6444850ad2540d5193b378682c77a4dbf9aa22e517e68cedfd1ba32e3730ecaa2e3f6ae61a4f427d6e69071dd62a9bf6c860980c9d23ce1fa82a1937e6dc1ce3a2de096b680d23d89ee102912ac0bd769c1c02095678dbb00b4430428797cfb966b2f901480811e1b9cde358b6d499c9e93f0961f050465d7b0c70d4961e75a9fe40a24e36eaad27238231dae6d0a17f446c16bce7348e669be563649eba9f23be29adb8b10f462780a066ae573f74e51215a26097b02469c25180890e06acc53ab063c742e08d51359b0a39749b84b9f6be44f3ae3da8e5a2f340a8607d4eed08877d007928d332d6f49502bb5f416c46d866fc87477c58a22d3c5932a8d6298c1151daa032c84ad92f8f90b8053b5aa6f690d1bf682f314471cbf200f3d30959e07adc6488dd17b0be5279e727f3237b8b4b19b31a220dfe63882937f8d5ead677608c42a57217f2239614c521d94559290e3b0ed8055d5474e96564224f6ca6389b40a71337da11e1c307dead8e4eb43252cc2f1c49addb18781cf20acffd3db693b02e5c8ecc949b51b99005529e0149a13390615f5df6e0bcd68e1ca82b0173d25134dbf76dfe92daa085d3f6b1e4d18217df41b70c4c40101884c2886495f2ef8a473bf23cb47ab6533c93cb38c36c6dcf6837f1272fc91a6962b6e1386fb643e1f1d71fc75ab58d5800bf4081217cdce0c7ae9e3d25de543fc4444314f32067eeb147c08c55c5c8158ed11729837547f28a300eccc312260215f50e98c4e3d4170208a50a4a4def1243538f906df8476b0c46d3449be73866d463d422595300e160840daf8c906ae4aac13a64457853b0ea6d8c32f4efe3b48c0b1450250086d459648b0ab14fd3f341a4a803be77e56a811e7a26827eb0a1a9454f90bc6ece665904adaa3cdeb2c4847858fd1d79750e8cd45d8da9163784b8bd06629410502debfed5eca3cf8fef0fa6bdcef6efaaf35a1986d6fd68e0f436dca9442077a4818ebda4606a94a3c93fda46e7ef5ccfef656896a0d3d93566b02ed8c3f6174417cdcb99a415b0c6e9816d94e64b438c295b4bfd69e0d9ad52911de5509971b7370593160629b641d690eb2828bf363857983e3b9098fcd15e66448f786f196685d2ceaa251b17ad06dacd614d9fa78ce0a8b9c1c360b529d0bc1d17ba0b70ea8ac1b8d67f6e5770f0cbaee0b38109d26b09493060dc851f5fef121e83e30aab9c3efc2b8397e8362aefea1708f7ffa14d3656f7f7610f3a629bce14648a593250c6f309c02c6c552bb42984ac58db920dbc7d98f59295f37f3e9b99da55ef074ed65801b390366669b4c7aa1c483ffd23082793f9e5cbe30c34250f63fa3ea2cd097593dc67e8d27b7e4f07e73a9f7b33a5ef6962df1381a038d4f58fdbca9d71ccf640b917f631b75d4a2e8ba46c64a6223f99cee30f47c1a935dccc7f054fc39d3498c824e10cc3ee337e781a3971f0e98295aca611bde701c2359858914248f6bafc88232bbc27bd85883b00990bba7862fd7a7cbd4c86df049071fcd10d686613ec877758d83927cacc530bed9a596b5b21c6fb748c379d676de7e05719a867c9f934b5dad99ed97dcb4e70a9b6542ed5b2f086d9f56fc9752e788785ef8f7837a31e433438cf2f18f58be37fe8412f6d21a5c35000a5efb862926700079413f76ab2c3e79e20b516eba9d8c29897097bee55157936607cabaac41337ea4cc783c0809c875259f8020e16d5045fcc39ac796d11a82f25fcc9579bf0a010200f5745065175fdc15474ed514cc796672c59637c3c8f236cfc9c0978a3db1194680c58c27746090d76ca09f7c48ee4ee7e1d3cf0ea70dbbbd88e30e8814b57404dfd7c33727a0c84cb7bd468b0bcb3c89b526679c00fb0892d2a5e7a3d73698a3db53fd7d78460cdcf24ed22b5f39b8c00b3506541ae4a5b76fae29c1cd5b0f8c3ce142e0af7ae4efe3fa4c438a604bf4a9abb41e3fef1b9227a7dccc3f4d6026ca289b4b1366d9ed546abbbbd5677c8d582e79e2b544f18dc23809ab753313d84dd10fa3ed2f723f0b46277b8877d4f3e0665e88c50caf0f0708b746b736b00c8c83a7d18500384bd035996aebb7da8f09fd6af9b76fde7fbfc0ee854d7ec02950e76abd23ffb27a6ddf1772465016c79b98a61bd3940547b207b6507e32cb9761a5604f0f546834a8edac7ae06910045de218d761a4accea886188f947b57bd876491709028e2e24b075d6b022b51af1880ca16a8c65b7c69e51b2ad580ee058acc0606f0a3a9ea1cd4342bf4be602e941dc4bef1239bb9bccbc8098a6a17d63186c6fa75ec44b6e4fd38a3fe49c5eb995f0cb884e2f3ed6be02515fa605b98453ad935682c3bac6a2971bb68f4094cefeeaceda92dec803ccd3d346f8b40b48f8f489e118a17367801e85c79e9b3bb5d73ac44a8290cdbf83a154f2f125090d42e1a1cb72f5ebbd42da46c7a4d4b9fad9612a4c800de6467ceb74f831e1395dfbf5799a3429ba34754add4b34b5960a5fee8f752dae78450322a1ab3d7102b77e907fc1eec5355991e0c7d6c0866660e5436248edeb1a37c0e769a0764cfbb6354332d6e55103b9235c84eedaff918af3f0213c435c32ab409a4b5c7eed8ab6ca9e313dba459bcfa3ee92e7d669be0526856ac3c06a57fbecbba553a9cb4655a901d98af02b74098e478076655d325bd7639d73d7ae00c62fdc361a997ea4ff5b0eba33096b12f35cc7cc0eea62950b912b47c11b9fb386a47c4c15c0602d304b2541da889cff299a1fd415e7e25c70ee4cd83feea7e6a9c50c75d9b128458513d61ec5d0299ef8c090472fe0850f384938ed44d36f10cc2c1d31daee3f946a2fa18f9982a988fd6ac973b1569313ce3c8ff5746c4dd85a241f1e9dca0e904c091832ca028533a3e34c184edcc510bf22a27f530bdca3d057928a96f72dafc73a9aa6dbf2552598e468735cc5736c67a620e9455483e9cb2108045ad80569582ea93a53b491e528c8df336fb326ad74317bc1dfb8ec30a73af01a5dff3e437b7fe48ba5dbb3e8f01ae0c6fc28675a415f23a796bb6e0ef0efeb4b14cf20d4ad88ad1966da43a76b454dac8687bdd97b89b8f8eede91eb34ca4a0523ea65736ae39341fb32b9b716f25662a37382c16f3b9c346c84f03bef54acd6efb364c6401b07b3f7679e8e7f8c9b77b75e6e98b90f4df88460f1978d19744eecccb743a999aaedd00b5a94018e9d5a56bac9d5d55f6e93bad52e84aa7340cbbf98d56213d9dd3e1970867e3972dc98e61b3cff40b64ec49463ff79a41c82dbbcaa37a82b761f432849aa83a3d3c9a209e2207b87ae9ed9959ffced165fcb0d8873668c3cd8f18ba0f92f7acd2bf50416c22ce11692bf6132eb9f558dc789cf9776da94e48cf48607f19d9a11d5df4db11dbaa67a1d20e9f0c96f5956ee3f906e371c489efc88b0c1e56d881e7bf8dd5d6742622eb873e253dbe54f2e2e6d0e6136941de8c23e9a632727bb5f88c23170316c7aa0df28d8d07589dd6022828834f7ea9b4e5876a1704944aa3186dbf89e0e81767cfba03bfb38c55a9945209c4dfd88272c49d1745dce5ceb40f0a6713b5139dc2fb87a8a4888406d2610b7b910a9e5782ef0df719028d8e50a40a269dc9bee12157038522d06537bb31fc87d21af9ad4b2e7e127bbdb313e0a116010f65126cedadd4a122d15a71cbcccc346f55100e354b997154567fe3caccd50251d137c58fc3a2048dd5883b6af9248b51040c01a80c051b8a151a8878edf0304b5554746d6116b749221a1d0082ac925e6e140f0c3b6a180742ac8a50ce0e93e6399102f151d7c14000369ff52d0b537fdd51bec99e7271b1255c6fbc36d83408c417f6825a8e2a58b9054ab2c3ead69d97ea9947fec32d720653c123ecf51a9a3f0ed88743e3fb7b94aea59d0bf0219ee50825ef220554312cb907edb90e4d85f29e316ad57d3b90d859391fcfc63e6c0fd3ec27d4e1efd6e0b5ca8165cbd6af25ed8792d805f27fce308ca1d51335ed5d727558dafe05486a6f9149b8d3bc022026656714222830be582889e6800c0b170e48ebfd069e711210e4ac7acf07652a6f5051507de68aeffc9540cab5cdac84ceee46059ec23820c04b127266c0bf8df0d2b856be3377ab42592f495980baeddbeed3ba707a85dba64fe36941eefa8fd37204ec8c18df3852febd2b142b1c9a5cd0f9e424cd408ceb7788270899fd793db99ddb8f9ca8df550c513790d8bad37a1d1f4a62c4527bb64c677462c9b093582decea70c7bbe873095536728e7ce05d5cafb5d166a1f03055e918f787fb244c5857e3d7a1009bd37f30f165564a082c1510ed19bb1633811a76da70dac67641c2478c6b335f409ef54a2d0f370c9510d0aabae3cb998bd023778375cbf9cf5ef125afd584c11efbf40bb51839aacd3016e5e4d79f134245f952dbad617c78cb6f5712bd9c0c7e1303db5029640cf9b56e29329c3e6a9e0a2371aac1a437b9b1c4477ec9842aa80eaa22c5eac11b60c661de6ddbb088e844293ab8589c13d938765bbaa44301e4137148dd0257bd4c8c766c5d3bfe53671e9417cd1b52f622870ffd90f4e17b7a4ae1b5601a2edb032e353bca652fb565beea6fb0b2cdcadac71794c662677fb1dc81d116d94f5eced526b37c004b95284cb6aa2ac415754a1f14882595dcf4d3f1d905c6e8c12cf5a9d23d3ab55bdaf9f17d2f03f933e1bab89040753648c426b072b73aee8c2fc0d1c03fce2c656e20d4c96803fb2ef471b912267eecb4d6f342d3513894b94d77767823fe0c7438e51f21bcf16f0e98b94b23a10760271281cf843989824f7061bf834f93fd8d2090f70e939700dcb4d8964a19da39a9601a7e0ed9f55f567fc7d5682d55a9ba0e68861756bb549f2f17c10ff6bd2042a80477f89743d3d762f1dfaf230bb502eab6f4c46b26135ff3bef5faa179bdfbd288e3cadd3d88d8012706e19b7fcc6e9cc2699d3ba0e624e715599480d6b7dbc6eeea0d12a9236444b17285fc7794040dd40c2b2ef175f7f3641664fc9bb7ea6d7eb3489d504f8013d64a23aebcb5ce233405f5ade067dffff253f27e926431ad806703e8fab23656e0b7431916d8d4c72a7d831e3664e5f30839c76c8167b76f3b2dc75a6ef48df515e06ea54ca51de2fd9c5eeabb1610b7eef06a2f3167859cf82e1a5b76be8ed8beee2bba28c3b15af6890d7a37226834ec9f63306a0da11aff918753d8b83fe7220803c070db98195d6d18357233f5504a6e3bd6f30115d3987f93aa5d89aa0b8b577d1fed94da057a6f088233efc0f44f86798896eae9ad0b20c8c9cdd9d72a3f02213f6797800894b864cb44fed009440fa5b0197023929f9bad16f052cc2d87327788a68b9209f46fb4776b092d75713048b5453ccd699d19cafa8e9a93fdab0f0863711916efe3bd81ee71b8e0221e12e9ffe2f6ee1a4dc1a8de6e593480f3c05b3691e916a4a7ca51971eb2f0f693dd10f6b8468f8cf7bcce285938b5a0a76ef86acfa2990f88bdafdc39a065db17b845028ed2b7a9e331c44217de20440e406868f1eca818d0be20248c2948b8f4cb118b2e456e585949139270f57c54715f3297bf714aa7c5f72ed8ddf6a074703ffbf95e45bc81a02c42822c22d2b718f2de5e03d687a4b18d605ef5ae75f9d43c8cb4e77aaa0c0101d978120f29574b22f52783c667f7daab3e1f9cfacf2e68e94a24918e3fe2c4f061deeb64891b5217fe5908e7f389897751839982b7fb736fbfb1232684e93123611b7fc8fbeb74f8815b5ae13240051920f3b6ed34483ff673c467ed7f0a8fbf619796e485affbed0697415d2d0598ba34d5b9e44ffd12a5edc323883a2e28efe9baf860324f2d2016748503eac1888213926b0e0f0335a4b51820a2bd3b42d982ec6ce307b453b6385aed7a735a1e98479394147c40f01c532926e10e1b26a5b395bc150ec4b4daf5b1436bd0baa225583ffc9d9e9d8a354f60fded37b41c7c051daea04e689ab2d4e24d7d07c75c50ccfd6a527e024d1632246c6f40f06b86ffec0b29cf894b665d53d459226b93422d37a8da23587fe884dc3c0f2fb55dea296a9a5b9a0d101f186d9fa6288c912202547cdf958569d2cbf235740eed38d10b0025dbb6de31058e98780d22149c19d4bcaf06dd7353fd91cd1f47e47f45622e1472542be2f63f463d253617eafd4f2ad609f9020884905dd5c22fba53ccc619104b6c0203a7f6c8c26fc80ff6fceb8c0c51600c2e46b4b872e6d597511524545a76cb42278b519d911e6c1320e01682c551e204ccdf91290c52e0836167a5685cbb1af338eb794c10fac92950f3f7956acf28f1ca984e380bcff9876b0c71dc7ce4011d1d0f955da9ca885c6e7bb74c6194dadb0fb9146dd725c8a9574aaf3824b727c9be3fce59c35850b162c17d3013689fca858a0a51d81cf4f30d6a8705bbfe35ff03c34cc7c56aca32140d72c8e8121fc71353596b777b266d75b322c9a97fd2c5d4e2362f19c99de66da7bd9c495c03d9a15b28431a0c051e786fa80f5503a72519e6b419263d72d553d688349c0cf30918eba0622b953a0efce4415c29515c26ba15f00e548ef108afe3f8194aeb965e5e4be94f10df6c45ea5c133a8c3398d09fb80f950b83c1866a1637d2bcc195e05cc32a9233b244cc2b1d4930e66f032cb1163c37b3e58b576ab76de759569797fa9b8bb4fad66aaaa56f09c7a0ce4641d6799d7bb47cf684990ec1e08871458c211a353ccf1285e7429c7b8520180918f7 | ||
80 | |||
81 | [L = 20] | ||
82 | |||
83 | Len = 16 | ||
84 | Msg = 8a61 | ||
85 | |||
86 | Len = 104 | ||
87 | Msg = 37487aa02b03bdbc6bc62e7e26 | ||
88 | |||
89 | Len = 352 | ||
90 | Msg = 6ecd002568bae3bf1873993041bfa292eb94e9ad092d8eb3585be82e8a20cb36a47a06e7a57d301268a4a533 | ||
91 | |||
92 | Len = 504 | ||
93 | Msg = f6dc1d2f6b8e126d99939664693d8709513f97d730074ec2794e536d94ede79c81f2b2ecbff3c2c26ca2d181ada2c60050997f3bb087ce48d956c18dedb227 | ||
94 | |||
95 | Len = 13976 | ||
96 | Msg = 07a6372c863c7d7c6764e4f05addbbe161762735dfd2d23bf268e2d603cd28de9c369ac379390473e1d3fa7e37af1178cca54fa0f782dfbe68070952b93462ea46c640d43ffe71f5fba42df98f4c48ada0d8aca8753e0731508bc15dff283178ae5c10a6ff132eca5dde63a78d3ac94685152897828eb25a55fdf140fd33fd4e7b03f283e201a1baae8986d25603fb0b2566aab345fb48031d648144dddc2e3556c0ceb1104f348d96ae7dc0152e45c625d21b46e70c31f250c858aec4ab2cf5e79d8c79b0854e0abf5330b9f044113d306161968f4ad6f0973160c9dc296056d5a11523ea2b56fbce8387070fccc639ec1c65ec663b9dc49aa880dc4ddd3020c9d44ff7e8cab6266e436af19b4ecb82010a0f8f9469ef380034a02e3f50051a6a3f233dcfe9d553459dc1bebc538ae0183448c9405c351271dea808d908480e61e9793cca111b4cfb9874b799626a1bd9a0f6e0929ad51b97ad81b2438f5fc255db3a3dfec9f0d8393c6b245b03d3faeb58021db3ad391b17a91174a66db4feef1b4c889699bcbea7928f4d29be2d47f76455c8cb1dc7da9cda41962a28ad8cd7b39965b809e7c7eca1c6792c1ce1c8a4cad6290170e91fcc49fa5ff64ab433b4aa081c8da2d9bbb072f9f18ca455469b946c877e3006b34ffd2219335b30ba2e0980f43cebfb629d0b11fe70dff28883ca012c6ae4855fcefea20a08e189eaeed7eb36ed6db3835976f4e60053205805727c5eec15d0e9f155637a9e66268b9c1c302bcaae6ae88cbb8cf1668a487cc996c4662c4a4e195f094cb31c717165e0e13718f8388957dfe0bf69c70cd0bd763dc38c530b67b9c12244fcab8bd13f602de848a2937699f9ef77944e5f22e3b470601789e1838fbea9359c733aaee2c7082b02ee459b7684ef9bbc200da4b62d368351f5520a65ffa506dc9b097117bb7ae88d04d85fb525e91327689ec0fe86971480c0e864012b1e9f044c7d80a4e48c07320dd4292086e4c71d4c98dd826a9bfced112bfa2beb1ce85cad204451ec45703931bf637d4fe89fe8f485620b7f4b21e011a232ade7a8c92be77925e878ae0bea9723749528fe83cf89ecb9616dae6ca0e8d5754ec6c92abb21108c2f33cdc18c6887c430b72c5b193356494cddccc577bd4c2cd53188f352846edff0c2ac7869cb74bb16a77c0f0f194a7a9477ae15abb890bd0bcfeb0c39381a87f1d05319c7e971c10e9ef687f96450b400e25b4285032892b849fd5db8649cedfb03c88defea063ee144a1ab1f3bf05f59c7db364dc39c11a446c3ce16307d78d50315ba29f5bb9a57438564c8c7b3e367cd37d74b2375a4966f47489dc5448f4979428abd32193d3840aa983d3020a9f29d760fc7493ab2576c90b1934b799c1d0d55e4f2caa78f4ce61930c79dc017c2dea0c5085d73a3b0e4a6f341e9a5061a6658af11e5edf95bdad915ac3619969e39bee15788a8de667f92f4efc84f35082d52d562aa74e12cc7f22d3425b58f5056d74afcf162cd44e65b9ee510ff91af094c3d2d42c3b088536d62a98f1c689edcf3ea3fc228d711c109d76ae83d82d6a34dcfbad563cf3726519b519fd48b51741aa86720836494b7a589c778927047a25d73508adaa401e9a6c0767a675e31c5556cbe35fadc9671359b45e985c3c8af84113989b299ae4474b85e4b5d4b0578ab1e8a2915a8df97c4f52a639fe32272cb91bbfb721505dec46d51383cb8973425a714245c2e37d0577fbe0d66381d9239db1f08a380cf609dc699698e0fada2caeda44d58d766c4f8214b10642b80b8d7d8add7cc41d47108ab7d07dab71069a2d982cc900b331caec317942122158bac6eac9175c2dcba0c04443aa9188832b553f5ca8c336880824d6bc02486a2b4c086665d276aafe3b1b93729829adca50c44466fd5b5cb977aa78fbcf5c0f0da1b09216468a11493ffb39efdeda5d669ae92bee2f2fb250aa1b9cbb11c36c7a6c6dd26cdc3cfd572ffd8c1dd72a13c27a327a34c6b6b3d80fc6c67c72152eec0c8ecbdc1bd5cb829b811e7f29af6d786f4e93dd4c96fdda295a6aa258d7b2fcf291c2d68e0b1866032475964ec0c6f2fa8c2d6a3936ecb187350def4e818507bf157c0e9b33406be7660605af14cccc9c799b4e051d0d0899e53495bb8931a6e2984bc6dbe4e02ec8b4642fc2f1cb5fd5a5520b48cfcb49e1f9533838753554dd98b6a1b8a67409279df477330e5f37367e06247ca5c3ffefd00e693dcc0c9c30754121c9ee88a574915b9e77c104fd2f921c2c096573951407ba9b440423d76bdc6fc978237a6e302cede7f99038ec31500884775556941f1edc30e3a417b0e02cb6fb5bfbe5cdfacf4006411287bedc565fb06f1be987416407dc852254934df4ab59edce476f3506e65be6ce6ddf91038642291fb8e92ba5b1f0b105670905a2c14796110bac6f52455b430a47b8eff61 | ||
97 | |||
98 | Len = 48824 | ||
99 | Msg = cd8490c93613bdf1f284b94b330f6d6f45a39c651d2a160b340e2eb696fc6d1c35e88872845190d141c669de92a97daa5433b1d7b0b899fdef2ce74b8fe72a7296a5b5be26d1dc86520367c730c7400c2fa06f91ab4c48a7bf4ae35a5b9acd5296c4fdf7451b0ad9cc439b4e34f11e5d7ef2bdda376f8dd34d6f092b219dc085dd4c4a6308b8808f588eedbbc7af7f64e83182fc7ca7cf4741a341060a7969d31445834c982fa8739ded4555108acbea1666a83da17f77cc42ee73323eb53203e3b790f81c08e94c44678b6538096ab7b09916e6cf7ceb2af85987f8e4d982dff1ab59b0bdccaae1f405a73366b5c5935dd0b43e2d2894290ceb66a0246dc02de728c5bba30255fb56ce8107c3144246c5156a8fe40ada9126adf67227fa56b66c37be63f532516211ca012977b04a97916f201f1baa2629eda520b51508ab4229df2ceedce406dece0110e0a911464f69e7be38fb91deba0addcdb3161d2799c628f5a57fa1dc37357c947681bd9c36f4832c20ac466c0c245de3b250c33282ea1a02d007f03b34ed427631283eb614db4d521f555136e7e42b4cfbee8134c63dbe3bb79b5a8b9f9f5b9f5ac61cfab1c54d197f1e3ba613f251eed616df952d691b88a16466343ef2d0f63882ddd2d55b8a6786308b2257f5d7b38af166bd7f1339d2d8899c9eda8fa86215850ba547450c267eb3c9147d96c38161a69d1584e521ffa23384313a1debcd37f72ddad02adb3cadce7ee34b7c1f42a15d0d030487daf9488aa7562845a11ee7ffccdb38b300935caa31f78a4ff3dd93403cf0c6a16ca611b58c736aafd33d6dc56f0f47878211d26f6ab801b9453a7f74b44593dae0f047ddbbf2c902891111729edec44f69a05944b18e7a601f41ad24fd6833da3dbe3029bd390de7c9841b2ee2b079b2bd2737518fe1bbec88da64769dc36e4a8bf716c219b2fe059d7dd220c1ed2c59878db5bf8b198e0689edee921ebc0cd2d3853fcf57c363050ce58071c5fda6ebcfbc1bb62e9eb956286291a108bdd4191c4ff47900d6068e1ea26b487649af119b9bb15dfed804836f2196cbe12d8fc86e3d7ce89b52ad49dc9ddbce5b370f73f512bedd853039366612453733740586d1372143b09f21dd4dbe1a2bfc308db8e4098c5e4b0c1e16141ee50e85fafefc4e2529b3c7252af37aee6f86e19df28871686107d7d57dcc812bc077602642d2ecefdd5f694b8f336913210793e4068da2178600b1f41cffb5221c9b4b6298afb47e85701d7b1a44241679d8996f916c81ff437261cfc358b9ec42a2ce16ca3bacb8690d6c1d91cfb3e0bf1e7ba45bd01606df856fd03c7e946f7ab371a89e1fde86d05fdd97bd7b1c583b04c2ed2b5f6815a460645e4e1b4e950bf6bd81dd0352d1048df85266f1696534aff5b1cbc17f15d82cc8e0c0d4f0453f9439094f8e0f7f4bc045b654d9a2f1f44a9c57019f63ecc41021c05b5380675cb56ea8bb691d79ee204d2c4edacde3c1fb3f4996a11d84b035f965e74009e2ab80e2c7ea3c84a834d4971a1e9cf423e4ea67ee526eb3c3e4c2d7372c4290a0741e1fcca5ae4cf36705abe98ac81e98a5419baefcaf3093a7e0449ef1021f88ffb7ad21b2677e41cdda12025b06542c4b2564f15e0b99db43b7c7020028bd829372122cd910227cb07c53cb58fd9dc620c0491f3e2bf883fe6ee8cb1f5b73767977d857e4513e8b5612f6ae4b56014e6a3ad2a065b65472212e2f611743484cfaef860999d1dc5608c58412fab888ad72bb87dd9b55b692f31e252daf8944ec5c02a5a9c23903c50dbd845f2fcc3bc9806af13ca7b025cabe675195b1d56f3fe7d7bca12530bcc0af217efcb03a218bdb6f9726536ea902c8303b02e3ced22be59753588b5f0e2f3419fa5345a942dbcdf3010465384a225ba26cdd0f1d74999c69f336bb6d01fae5cf81cbb8c1a7a29c1eb83ca6b51113bde56b8cfb6a5d72557622a37f039d090a689accd02b57c691174338de8e05bb3620c079705c969c58e56b079dc9eb44eb0fcebe548f5a31f4072a5ed56a2f03107bf40a359b2601eddf53cade66f294cfeaa40a0d94b9c90d15f61852f295d3911f8ea914d015885c8c64540a83badf0021a416c3e37b78236a2ecd1fce4114033416bdd3a36c18ec13250ee9c74c0fc4dd564b3d24a825802d5ae402a53bacace115ae3bbb329be79d1e5e42dbaf0a6446431145fe49b86a8703c7c41f8985d54f12e314c16ff89351d8addf66ebba2783f2d1a11965182aa0b0dd2de53586c5a695c6265c2b173958da648611090557bdebf11a1e042f089fe98e049f4796c60d26be38356fe020d9ace9008410d53a1bb7db78b52ee44bac364213f5c59f1eac4e3314f3423b92fdd7a6156608111ac6ddf58385ec1f3df12061208db98816ac948d803fad10d5ece2018c60faa13de5e5a9033745c824932e53f4122a39f635813545c1b74732cd55642f19ed6deca1585ebf7242c849bde981572a2199066e9c912b2068c8f1c8b936c43ae95c6e22bd7b80dfea05f495d751107da5928e806d0af905c87b5a0795df146af6580d8f9c6a0e2645686d43822ce9b4be0bd5937c097917e048b5af71c7e7521d490f107e9231ee5bd9fbf0727ba87774ed24cd52f471ffb71849ebd55605996515bdcfe95bb1df3541e7c42da4166dd01ec3597634aa6455d15fe14af435e8d7a55ff1682d55a2da867ae63d11fb3fd987fa5d7032ecefc35d3fb9570940e779e13da18070e6df5292f97f2a281f9598101102c955fe4808a2319c85fdef3d55b19e05bb8c2d3da64bafb67a53491513a24f6f0804aa162c8a7db25b38089373fecc45a0eaef65dd9be3b4b7f9436a5423fdcdb5a9b60138fc6a2261225390d9ae0d8ab7f0f7ffff69dca06881d33a637d634358abebb333df41151f239add91abaafc89070cb2159ce3a31655c22e4696c9fa7a7211d1251d4bb21ea4a321a3dbebc29d97f526251e40e548dcd7ed07587719a266f006179dcd22e50b3705152817057b097b043ad63b8d867edc20aea9b4c959ef4ff70f47128cfcc21e31f17978ecacc366f459ac1cc459a3976e4173ca322675f84f18036119ec2f204c3fb554a0b72f7e9d8c882ab147b3d280ca9dff7b9160b1b437b901f03cbc05fe05c6f44824b48aa8da52ae7dda1653fd500f9ccd221843cf76513b3b74d094f14d93a00d7cb954bc4cf2f04f9a35e38edcb1e84f62057647dcb3571f1dd296ca1e049f1746a8a282e85138500e7649db756b2d2ad88f11c471c89dc6be2cd43481013b8d0ae83da2b855cea7be424f8b2325b1850d1fdef03e765458df4513d57c72ba9751e1edc3c4e7f97e3202bb46eec7be89871ba3704aa6c6fc08851e551a3f655fa1fb798d12f003faf31c56b6df399a5dd0ed29ef9e4139dbc254bc5d6051840a859eabaaad56324588fae881fd638d2b70fb3813402df61d941ab495588e5fc3823249bf9a03cf877902394f512de118edaf98843a5445e9073fcfa409df3db0221f1c77e2dd21e74f9e10c9e180dc4ed17010eb949c6d67a22bd5337b2c68f9eccdec778ece728e91353696b742c8f5a3a569f054efb8c1ed478ee9b75e26c768a5816aa6bd08a4c72e745fdb5deb34ecb86b3a84346c1c70f9c16fc45bc0421f0da2f630912d5079f390cc53b78e343310de722b53d2a3b4aa386caa0d7e91986e19c3363426ba30eb5284293af81d00158a3f5233327b40c3b989725ba7dd5b31ac7abf8d3e0b737e843065cd7316dc2f374a00bed4cf9caa0d6e232c854df1bc24c3d484bc6bcb14ec770d5745474dc6ac3b3ddbffc551c9fcc2c56a5e0ae17948457c01e701bf1554022bc2b7d9dd42b2b91172fd85e6874d2d61fc7b3bb3cee2a9bfec09f6d7e98279c6f511f4140b116c856c1438e34bca59fdca2409f025b896a52d68719bf93e82e7d89bbf798991fda0af8d06d17f39eba4bca09c1fe594b537ad4c9b94ab52c895539d639425f9146b24b016368a638e5bba391bc8763cae7c52ff9c496884f1d84e5e08ed451358ecb3c4919dd410e82cac35ae744078287c05c89b42999ea6b8b127d40d53a5722d45139e8bc507a11e7add7fa9ab12cc40afeec008a4668e3e6440f27bb5780936c0e3668ac51262390c79b3f21fd041cf36ba3522f3a552714ff188bfd554c60d0e7d11213cf7d3864a5175d4047c2f3284741f18ec22995a5b82bf62190151bc1529c6d9927f9b0c1dacebd9c2dc406f7f64a973f9a70cff6e3abeebeb46514bbf2ead382f7262d46bd43d88c1b91a9011d1f8ba81fa536a7162aee2b2ec6fc0f2d6efc87b98d2e41e0f946969da659c21053775ece415a34d42b6cfd5bc52259867b411dfb991461ca618052309ca9c96468c2da12dfab0e822ff3bbe7ba281982a239ac19c47024fe1f0e3550cf0975add1f680a9dac9b2c4ab0aed4f409ddda6765eb8a0a9d1e9d07458c69ac8195541219b18efcd06c0001f2ae7fee2d404666a18ca3cb3aa4f0623e86c5b1229f6c2ca28d951111294b91edc52730b6b2c46e000672a7c89b2f38045bd3e37dbb8a75e18687a514dcf740c87a34834d3c3cc8aadf6166ec0c42d2be92f90a3af49633ff23cd80848ceb57ac550eaf9ae496bdc6a2d7cf50fe107895b4a1ed014f78af24eccd6a07420f1dc0df1e7c44b4ba937dd43cab9c798371b148325578d61931766af02b45054bdc2d9fcab2f4b49092f6fff7c27886820739d6140a4a905f0020249e8ae8dd87da1a1e7b1851eb01045aaa72dc8a2bf68055e7aed41d85336648a3405195d2ab61b0e29a770461f32fd05e14c17d72c5252f026a7b9abe7ea9176d3c46f6ed9fb716758d97b41e4f5d81a24538f763d83eecafafc668422612b40cfc32b3354b24755fbe400a2bfed494fe6d0ba0051713b776e67e2f1915e94708e6dc74b398f2f526933aad8fe7dc32faf40022606aebb6e0756b994c3176fae7640ee06d6c67bd54764c4752f1bf831f43e0227cba101174c5554ce26400f333dd8e9f6db1cdf670ce407d7d06c3aef4c0724b62edc8f1ba3e04f0e394d15a73b9255abb4d6ac70303dcf9160d32dc02d4804219ed5c7e3b48402e58ab2f58305f9bb95d2a8759947de96328ed5234cfe7d0b2a9a014df7e4cd0ae48906315f139b8635d2e6bd4aba32e62b8906cdfe5622c411bf0373d0cb07d17bb2bb5b83eae4401c243605fd1df759fd0ddc704ccab5a9776c40fbf6bde0f11b9646c699f26063a9550ac228c9884c277bcadcc0a2c225dc203e28e253c4e464b23d2529d09c7b7dd3c984667372472b615645f294c4e3b0797f9d1c234015b78502d98bfc04f1fa2f16cf3e7221d5794d035e4b172a4d84e679cb1c82df2fb49d3c6668eb1661bed56705096c2371a19d668832808eedd9e5b1256c18fe7ccc494e5e29145d453c553ec86fb7f3a634d0d45661875f2f1005ba5e734c1a976f37cd23450e4606e32d027bc9ec2edd9395e14b2082179bd7b4f9b8caa2d00a2de71d48553f7d4153cb56a1b08f11925e4b11c9281744ae9171f3d6faa3ab3f88c5c34fd23e4f6efeceafdcbc07686ef56efa62c0ad62f1cdcb4d3b5bc508c1f05263bc347158fa5495828f34eb7fcde98fefaa82bafeefed3f4a58968d751c051b52e0047f066de5be533bc3b1e439ab1c8602f6c67503803c8fa113737cb8279f358dbacdf45432b7a654d0e1122cca93420e956661d7275181c75b0d9c20e84c7007dfc49f27bc00007cf4ffa631c892981fd70141d532fcd51de5c23fe0b7a186d0dc296362f235d61698740cc315891cc9342da17843bcde274c17e462263d0e8b4832dd9075a7bbb443d4b26b41e534ad5551ed5ada102175e695363fb48d6b99ac978a3aa6f405d87f983384ce35740e930491d75675337c5dc081e3d301228e61bde5cc169968e5b4350cca2b085f9f75cc4b88497a78cd0a0073d90246c7dc102c7cbf3516498e8a41aa85d8cc5bc285ff66e8338e85ca83fb6889e2bccff52059bb9e92e92c155a349952680ffd0a3c346061a53fdf074417fc90c4d1af7c2acc3ee4b080752cbc9455ba5931b7e910f1e4af0efce905d2cc9c685923ead387fa532c0e8ad92719c76c281cd010e1acce500ae1443838b8afb48af032069dd07aa4df0d56bcb70a64592633699c8658102f1fbca441325e27f1732a7a973d8cb3a0684d72943ef6f1892f2d7ccf39bb6dfe5801ab98653bdbcfbb787bf125253be2624f6cf44177d588bd7b780d9e3f4e3a4e50b8a253fa21abce6a94b9073289c76773b46140f5a6e46b9de9ec066c176f5d1a69f380e1901216617363362d13ebb26ad74fb008ec08841550ff14ca800a1ecf2e007ebaad9f4e0d9664448d60ac0d8544243129fb81c1723b9b4bc2ee971dff736d9fcde0afbfbf5c50a4cc06a4c363998326c17bdc9e2508651dedd9a2a52bd87f8693cfcff60753acf9716c526e8635f12377e36564ae55d0fdb3c7997ec4dbdaa5b4d18c7b660acd95060831795da7d299a5a8d8cf9e92537dbd3ef7f56aebe38fa97c41da6bf0572a0270be7e5a7dcc0be3529339464c811052b65a938e874ea6da469c7d8992ce0aff1c75e82d1621ecb967213c65f2de582cb41de3804c507ddfc708ef3f6096ba4491e431160f98de806d0f334e03cfb7a3bece601099bd971253f3aa0df845da8b478603d5d88533d0cab9c89f2dd9a1404cf8939ffdda652a94093865a85fce2bc3d7babcff7b9f3306bd76b9af80c78ad518f89ee73b7a710da604e72f4927be8d65d06be2e0732fa786a83e27597cfbed9bf98df445499e0746b9f2cb9659ac0a9cef433148521f33b1d78d13c8441c0d1e20fd93ac450a3787a2292bcbd68cd1f961d34937be9a21abaf26f361bf53aa0c095e53c51f3e04d567eabe6e40d96a17c2bcc9230b18f7e079bc549a314b4ae21d30a3341aa205bc75c7f1d21b0a49549c300faeda243d0ce18da5e66c5b663cd705005dd9fea0a9564174abb797d64c58fdab1fae44576d514b75eaa31c9278b15bf9b6df7c6c2873d7a56fb91ab77b83761a09f9e1ddae535622fb87f7462256a60dd39dd3ceb6690b0272920b635ea639daf24f95462c523e5bbd8d8407c61163ab38877d5edfa04c2a78d4d240523ba97c7d01c71783f8748e85164b4dd08c25506a4ed18300b42b7bc6e417f512ae456ceec2ffc83190991a06d4a58ede215babcd3688e1d61f1975016244e80c88ae2aec05c7eeb1c50caca72b3b415b6b870bf5e10bd1ac3ba6b4acb1d1afac554444d94c97e171005fa4ea9c651bb4e527ff58d0c2f90fb453a92d6546a26e9e98395b09e8471bdcf2a145aacb649708cf048a7856ce8cf390c107ff2c66efbf2a76c5b041860ea576103cd8c6b25e50eca9ff6a2fa88083fe9ac0d1fb639c516b9bcdf23c34c6145a705498ff9b9747f15e1c08c63da6efeda4eca02c3f00dfec06c82220c9de840040118dde76be788daf84e6a2f44c81fe6defcc474f99c51c4648d297cbc48f081e0809dbda505d020cbe865e430e0491644ec8c52bd3ab8ce8c4862990f49fe2588caf804ce9500ef42d5a50c057c257168e283e4a4aedbe4ccfaf3eeffb212f9e23d15434d60bf4f455f512e2b655aff3225d1b217c261110cec0400f54dd303d6231d028c2eb649bccc91d30a6391c88bff9d447c3cf35a3467be5957e0ea4d4dc237c9f2c68ce48f658f820a3d72d559b60f233ce538c92cb148808e34fedf2d648c21e7f2ea29a77270c393bda42d869351d6c085d965dc12cbfd0311b8bf604f4391d378781eea3b5f1e0da9d0d8f8de88e56fe47d362cd46f591d3ec0f7cccb85a21f21ddcd4107821ce0ca9ddf99dfdfd9b0c9cd45053e5b1b4385bd8f5b227ada31b5c23e9420014474e8b4494fde7c38edfe70994d97b8cbdfac588df49a49c472fcce78cccc051f31cbbc1e0422878d8d490f3aee28adf1587c38fb7e7d1be54abeaa83cf54b633803a5e669ff4295df8735231ce39631616bd05e0e31117c722c2fd6787003b0bc7fe422a089c89329544e085d71102c1813769450a9f66f160d1702cdb17bd2c6fdf0f722762d193ce83623eeffab17b01b10a31db6e2feb6eb3abdbb2e36320e1a56e44e48d26090afa7f65003a98cbfef590ac3ec89b3eb230557cf6aa566e841806aa2767b21bb26fe001f11ae039e0c9a4bf1bf3d271960f16158eb5bd9ebf0080abd8369d512cab2d1aaae2b14d0ff6ee705a38fb0c801a98b0624cc138fc24834fdf430f33e1760db913da3290f34415c9e3df3e97da1780545ab68ac5a24db89f24d62f4a399728e4144a8c89f47ac2d29e30c49b0bcf790a5e3d3fcd1943c6a28f37251d9dd827a69579e6c17b629c927473b5a07b0a29d9562708d6c8ce576109ad1a3473ffb2047eb069beeec24c114bef392c929038c92abd0e6a19b610e27881361824d57008b7373d0ab76379570ded76c9b8284fe2c247791073c29b2fc6fca05019220ab92856892d3c0dcc6da0b597fe559c162d060d71513ebca050d9638164b9ae271fba5575ade787ec5aee8fc253d1b234b1df561db3e36ac64b9b0100dd6b407043537b2b141f | ||
diff --git a/src/lib/libssl/test/SHAmix.x b/src/lib/libssl/test/SHAmix.x new file mode 100644 index 0000000000..83bcb14126 --- /dev/null +++ b/src/lib/libssl/test/SHAmix.x | |||
@@ -0,0 +1,129 @@ | |||
1 | [L = 64] | ||
2 | |||
3 | Len = 16 | ||
4 | Msg = 98a1 | ||
5 | MD = 74d78642f70ca830bec75fc60a585917e388cfa4cd1d23daab1c4d9ff1010cac3e67275df64db5a6a7c7d0fda24f1fc3eb272678a7c8becff6743ee812129078 | ||
6 | |||
7 | Len = 104 | ||
8 | Msg = 35a37a46df4ccbadd815942249 | ||
9 | MD = 6f5589ea195e745654885d50de687d7fe682affc8da1fb09e681540525f04ecb93022361a27759b9e272c883564223c5e4ecafeb0daaf1abce6caa4bd4153379 | ||
10 | |||
11 | Len = 352 | ||
12 | Msg = a93aed0fa5e163a82c9a934aebaab8180edf7de0b32f0fe99f9c75ec305b24609334cefa372c7c758262dc8f | ||
13 | MD = 66a16799d606c569d2fcd70d7d8321ec90ef61711481aaf7d747744ebfd08ec2e7aead49429af7b4ceec6d8e147ed018e034efbe07982699e818db5fc4b1d71a | ||
14 | |||
15 | Len = 1016 | ||
16 | Msg = 433e88eb2f8aba562d15c18126fbdffb81d5d6c9397fa052321f5f78cd629708ba099b540da5451e949eeab8687a8d6ac35c531411cb37144ab5ff6a7eb46f1ab28fbcd2ea0444cd87c57bf7d3c02952dba3d3987da07622c16e7c086d90e88ad3d9d4afee301d2bad915d868f54197b70b23c9fa385c443404fbc9abf7e6a | ||
17 | MD = 790bc4844e9aeef8938df0ccda17890556a4151817111a526a88919cfb172f0b03c216080c1b60210eb1942097f17b6d0691bf5b018b6d959198d6a694b922c9 | ||
18 | |||
19 | Len = 13696 | ||
20 | Msg = 2c46a76a9dfbae1f5e59f085e9c3d4b600c24b2d404d062cf948e75a3d4ab5b137a31397be9eb34b2a03c78367e0b85448891b511ddee1f787cccd498b172cb7e656c044a03ffde8e42478330fbe9c34072a9e99ce31b41757cc820d98e7d564e06694b96b66f4be34c5eadd0ae4e61fe6abbe4d7ccee855104fedee8b451a7fcedb793d469b0094c0ed07c97fda00dd8c1662b44e3ee6775a5ef6368cb662d257be561a5967893433a4b63f97295036a37272176d081545df00852bc5c4162324161296cd51f76433f2df867a5840f2d0c8d5be00b4dc89443d82175bf69c3bdceb97facae2b2ed68e06ae74fef36d8bd1f75f130cba509341dd54079d45de22845cc8e77a022977c7540aa3e779cb1127f39f825d4d78e55a967ef45e7c1dfb02d9999fd15af2914ba47177177d94576f1091a0657d9e04fe81e6be7b631fc1baae66584c9c26ddbb568750d77555c927bcda1fbdc15c7cbe3e3fe88ca13ff12c59b383343c12976708c0e3dff78be0e286dd32eecf20b71a09fee50a9d0b13c85a15b320b162690f399282798aa3291fdd2f9c40ed873e829388466ddd1da42f2de16aaa9272ccf44790cf3c95382c304e25ae8cb2fc9d9869808f3ee7d42cb143bb0c3a55e03db6d1202ca1bdb744e448640c0aa60d3ebbda5c21e623bb080f4a073a48822725d764e51d415aad1d7c5a7f17433d15ac7d849f910c375ee0899f6a576dada42fd651343383f286009902bb62deeeb2514de6af7f09892c20d0b238f6021f03b62444b1e1f21beeb89acfcd7136416fe7bd8f202e76afaf5345311798be7cb25351add2bb044d2380221009c4d1cbbaba4cdc8631dc0144f2778a6aa1eb3d3c81df0b1b2142fce111af8214d049e40f536c5d462b9224a978e82cc6c420e70ecc3cdaffb726a183c793845315f730fa4dac9fe46e4180397107a6a051f7f0a58ceb9bf4df37e1a81c8e9569187228e8037df2e59c52ba815566768bedc8e09d5e7bdc9f2bff23aaaaf133bb5a3332750f6124ce185e29fda0851addfa2c3d52bb6dfb530fd4ee27dd5bfdce5dc2f41debe6740274bc651aecd4023b098a7d622e2296b50d51b79c4e3f521695a9d43f038e8f273405e26584d3db179e7c1758114a3d39970df674580bbf2884405974f0b9c4b0d8b3287a2314f3f81b6991812f354d655f62513c9551b378cc2efa4c3e08b313c56cada52217fb6112eb8299b28445aca8f72e7170a1cd8bbfee4d2145fbe8d49c6af8831c4d4fc7177a50ee55a7b484261504af946c6bd5e1d6b89092f3c487c0568fa07c356fae9b8e831b8320289039746a435b122cfbc4a0d316bf90d481d3b7d979cc50d98c1190af8dc58e0035557dd5e94f437f41fab513202643a77748f76c6b77302bf40c392cd18731da082c99bdedeb70e15cd68bff59619cabcc92adcf122753c55afde0817352bc247d1170b8ddba1ad1b0faadfe0efbfc5fe6334377fa372c3435691f53dfc2ad5e08966b2d3525b1eec2d993a5cd4ff34278bd40dd80313a0727d05e0a932156152f3e11a190d8d69726f5c57d20f811e1e8932e86409ffdac96c6251c2a2976b8757adcac5d2de94931d1cbea866ec8bcba5774f8a7fde792f6acfd0f01356fd66fdf54a416af6a9397e00f848a2e9831627cbcbb52b5a868ec174e69b4cfa1ed72cdf23f39d7eaf4bdb318c188b1f0fe75655e34ad71907cdb77a1a2b162cd7c22d93dc45321eafb17cd60282e83736267b3e1fb249c307d49509f50839942f0f493afd9ef37db053a918e3ec83d801bbdead07554a018b8ba348fe9b7dd92ea7c5fc0e65a644ba19aa1fb6c022ab768ec7cb249ba17b9dda2860bd4aaaa3dc70ec009804141ad5ebc61203658e57a0887ec0fded18d844a96e79ba7e879c4253056f23e205a80ab1471953438f85848f4ab31ab175c089e0bbb97ea0dd6a67385770356741966053735e2cc2ecdd2c8c75cc045181dd7267584b901674b553082b2c58fb8f8be0b99306194a6f069f684535423304d40a268d55784a14260fa9c9cb1306b82f91cbee3c9f43dea9e50903135cc1c6505605a100bfa28564a2057974eef0852b7b72ce264815026d0759f691db618ef760edde73ec888e181403834f7221bb27a69479ec9b28a3fb0c3f68d4467d25712fc48ad78763f9ea6e8a2e85260225ca1b1a38b720e589fafca29f07257c5467cb74ee53189b8c81b784c43e93f98abde1ed53af60b27b13df6ce45001c6e1813de3521028981086f7d88ba13f6fb1a800f312fbe2f842eebe847fd760c394668cfbfd353ec14ca0366eccd7b4cd63318116bdc42e20a632a0d2b8c5cddb37bfc0a239ebe3800a787d2ece077a7968036b3d9b31cd906f888e3ed742cd769033e2c24c5a9e3c10b6d300db5a17dd88 | ||
21 | MD = a86e07bcd19080d4a83e1384bd8189f60a7dd7a6998406ade0bf03f805375bd823c7656dd51cd9d63e542f8ade41f16d73794d60d0906424133778156ee54b95 | ||
22 | |||
23 | Len = 100816 | ||
24 | Msg = f8ed40e878dc68ceec52cc8e2868722310fb117ca3a52e1839eb85d308b8aa00ed0bf0b76aec8a70eba4f0d14d2d85c5a0e876ce2c8ee59cb36947def6c40a587aa07b368ca8e8a08367018e45b984de0d7f1aa46b977cc18c0cd9b7bb897cbb2814aa0ce8f8c9843e03c86c19f2ba95dd2ac4a466a93aae4b3b05055ff148517ecf43e286c57744a3e10a14d0c26e139a503e7927aa688c78609170ebe3b54104390e5f6cf538093a67922e7210e77fcb584ec9b6844e829be246a266460cb442bad52ca47255fb8cfe276108c36e02f9acbd3d191d34b93d29ec40d80496d1c1bb5ef036221641200e905598c54bc4abb3527c5a5f6258e59d4bf54a0498c108a2725428efc2047e0096b32dfdc6ec69d5d72f81301f881ca62a66c22e5dab9fd9d90084c0a36b2f3a0123cc5327a3bc7a12fd947ab57169ac533e4b6a2cb80fc65b9b527cff9fba26994c7fafb5102a0acd8f9d246a3a54178c23eaa04c0fdfd3c0cd980d1fc7a72b25d74df9b95c3dedce8ca316870c654f9ebea9b806da9767cf40605a4b0c7fb06f6b3f197bae7d8cde9daf38530e25bc51b68f9aa23ec0e95199b14bca96c91f3db15bf8432f714dc46ac87218691bc66cb3a42f6865e1c30f8394c8e68c0ddf5851ab7c5906a1994a9af6ac1c44d0d6b95ff15d9f77825ccea40fb9e516d45888f2378e045d95d936d541cea9c8ca52fe5f7d0d919b2b1c59a42d06105ea4f2943c05178e59d67351c5b2c0051c93a4045e512884fa656b772cf398af89081546d920fd3d24ebd16310506a786ab33293027394c1bcb7b1efe46b550ac28529646e8d2a5ae65c59345e24b44cd7b06673f3ed3b9008aa568a739c26682fa596b7a655842cc6b2758b583487c78d14a76bdac7033806c5c210828ef313f8efc4072681f5fded748c31a58ac933b4665c445f07d603e0905e49b84aa55146eb1c1c99196413832a05efee2e64d6732fefc629b79b37bb9390fcbed7226b412204bda523b8b8af5c4a8bdb263ef9f3f6c7b9e1de3a1dc257c1f33b3d54a9101be5b4f2a9db319993c2cd137c41e35c434ce52e859afd1a635af4d8852252dc5e28c729b2b4c96a56d57f3f3854ded59fe612b9b3a51fee3fc1c83db673b0cc7433bff2472bc74a2eeb6706605e308690fd072a7042ca6474603711d8310909e47063f46f287260a26c4f11fe492298a0f98d28c45948a4899e08fcf443a6ba36457dd8329314d53ac0fd0819fcfc3357426c5bb8d3dfd706e205a81091cf08f31cd3459854f3d07e503991ba5f067e3c406c6c5396d8257496f4ba3703cb1ba25c2fe4aa54577af782cd57e85a88a2d75c54039e8b7bb559219edd6e81e41acb6d575d6f798afb2cbf7f00abd5c9c7b0fceec79f9a0fb040ebcbb7bff3602df7b71357efacd37aa57019350bb81213508a006160acde3dae5c42f03141887eaca22d7b33d6791febfb619d11ebabb13e6c5378e9a72e852ddccd31cc53a43275966b7042ddc51485ca20e1c456dcc7020cafb5407548b044d332229911fc74d7fb97de25abff7efb431da82de2ed7e25d0dcc06ffc74e57ca93a6a9f64d76a5c39776fe2266f88d6d0229b527525fd2e22a1407e26f94c5bc6adb1e7327f3c8bb8d4c983385c579dd8f5623df8cd6da569c7de73d9210e6b9253a177653a13ece075940fc81016d8c35fa4f6542df5120c174158ff32533476f4e059e35117081a24798fbdd1eb10f82809836f8dbefe755611347f75423dd8571695960c6f66cca71f0a01e8fecbe1183bee3335eff10b4ff8104132040e2145ec3164b2448f60c730887b9d7894e5f7df3f876cb17136c99cf32db1c02fba860937378dbd093c4c5112133781f06c8ca07c527c2c085e8ba5e52b399f2909e217aef6e3035ecafe2caeb1004069dea023af7eab873deb5ebcef2313c9827821bb9f89fd3d1570a569673d3ede86a4fb13dff242eb98450a8917fd8865c56e0a9f11d72394b79808b0429f3a83cf2465161596887fa2d557b367a1de9c7753666b0cca9c30cba9f0a749c03c55cdc7a6d45852c76ce2010de3e7f75d95228efdc79949b238d90b25f983868b7f07f585f7b00e45d9e132f3c09ee84f794d899759be3dabd46a256f4cf8da71270617cc2425b24cef25d1d2f3945afa6f81abfccc858cd02e05619649b1a5347650934105c02622d538447223d136a8a0455cf3c6f61f696b32266197b5cd1d936fd3ad4288520fb4a2f59bf95e659f33210446ef18debeb679dd99de0c3c74a6eb3dd783861f5db4e94a151c42ce27519d0bbbf1f3b1163563ec06c8bfd881d94a3b896fc07352fc97ada73685588a2242da1b718f81bb1077bc70fbd58b8b52163489ae403838b533851bec30ed0ecd97d72d1af534f3703db59f1f563bdc39d690a0e90e545506463a37e84974fd7b256bbb912cb4077d3e3f5bdd4bd2bab713b696c830b1f2185734c4d2dbd49d5372fe8b813ce73f5e01c36bddbb376ef4541033f2b0355613eeda8951ebf7377e08f967902eb7e23c0fa798c6ae52401721053f1095cacb1e9496500e83c412236fc21566090b3a3eee55aa402c0b774802fd81c9e8579761cfcfdfb1aa23786b2dc35dacd5ca8d8d283369f53e4a5db18060c2c6b0c303052aeeffe169fcaf7ecc63090a9ade245045ab9c8aebf738772297caaef5f857322a597846c7370083d409df27612e47b0cb240daa3cfa51c57108612ac0dddb0f59791289ccbdb3a2cb1fa9ac31a23dd5440682fb373bf0c1f41c4fe2185ad7c53eb69552807410053b0c2d40132250e637b8c425e6a35d93333b5b7d0557927b6179c848ec455fd1ab38348c0e96c60b2da49bd15118df64b6ce4fa48fbc555a4b2874141718e731a40b85382ae6e86ead31cea77f83bf5c063bf1febf71688a832d615e09d6f14badedeaeb6ffbfe343fc7274e78cd46a2aaec0a349c5f133291ee57cdcb65c5474e46294de6bb50886bce6c6f44dcb95f2a4761ed2e6c9e7bfed51e0964afab4e0f7e0b07960f2590baae66b1ec9a63ba0fb6c0d27e81508c51487dbbdc9beb8879fd58c188dfc774b3d0ddbd77ee8bdcdfa0ed8a9387728e12b13e8b3c10cc1c132bd822c2147c5ddf9a993aedbf78ec256db1be76644ca8ca7727208bf89732657152d34e948d73c47561d156f773136684d4162d02260300020123d13a95f4f835907c344942ddeccafe2abb7dc4792c4f1e39c24748c63cba933b16be0b8853e058c47a1ae2c4dfff39ec2339b345fe3557d03c1df91a0607a711636c4416ffdb73532aeeb74f237ed8bf971388a0659e4682a46b8327e751034cbf2c87c7828da9d24baf07a742ada34d1ef38ab1e8f2b4f801192c146600709533e61bc2665dc1e9e6441bf3c4f6643bc0c102a10f9a69da5b0e3d0a0c7cb694c682493032b5853f02953b5c2fc0e1348565389762fc2dcfbb34fd305f2d9df080e859396ffcbb7da78aae0a0d72e3de76c774bc6a81c87f2872b6afe97ced5269009304a4992c4add0bbe24e57632e19ad0fe37ae910193aab0aeae32cf6d618ab33eba59f6a04fad00b1d2403396e6fa661d31b695a1b349d62f56c08fe6c6eae7a482177adf341e51d03ea511d7959c721bd20bf371860ecd7fce1d25212891850b85648db0a039e6638d9c78bc958add3e41341536b5007be63fd1f7e3308876bcebcb97dc3b05a7b2eaadd00f8fcc8dcfa7b961bbe727c9aed1626ff786d6a0ffdbd1002cae8a7d047b6181962a686c152b2341c7c58c9f1dab5af424d183ed1c7d003165a1d04ea3683ff31a0f68615af6f91c21f736e67df641ed31b998445afadf9052bbe004d5dad08f62e5d353e42fc35a92242d8414d99dc4e7e81c8c027af686baa5c185e3f99abb3855b22cfdff0a62e2f47a632b7df8e00e0317af5c24ce7c64077bbb15ec27e062070cd3eb8e549ed9112469090ad9a96eb59294b021eed81987178cb2dcff67a9a2e930f6032c753e203380f8a7c987cea393234699de03a1d09ce204f0a8b6d5cf522b6887174fdbccb08f3e7c4fe2f778254465b32766c48812a45151ac37ae354dac87419f9476baa27e24b2f322b2da4ddf579750684a5881bae2269351fb7de59b9d5a4badd8951135f2713dafc57215dc626ee170fae7f20bff98e36b864e1fe0f0f9a300c903069bf0e0b6f2f8e78423cf6063e89dde6c81efcf26ef15510563c84730f611ac879a6628e55115e1a29de6945d37fbe4f803fcf2e344712d9e0d6f6c79f8773a9f199b705235e20a7830ee3357c5dca29d7a6c29a3d2628bf2c42c8f076cc4525301d8e1860729070dc53164d9fa08bf63cc889eed01b0130a7146d860bbc09ead3865a3082db0836a45f5506c3e46e452e298764939226cedfd06700e4e33c6b4a78add601140249596831e97f960b973a4e4dc3fe2813fa34eb47f998ce57270368fb81719a09298a223f7e3931ce5cdfab3f658649533354e982c87dc9e49eacebb5bb4af9a767b4f1c03d774431168cd4fec1b2726f1aae3f9a062a825f3295557eebf3af4784487b869fb049de44d03fee71194fc200af72103b157431935b5ab9bc122773ffd313d52d7acf1078386090fc011de695e71567cfd51c06317d4ff8841ceeb74ad35f4e5f4d20921123cb88bb2079674ad39e133cdfd6478d69c9bddc7a818be5d7b254bd9e0abdb030f52846fdfeae8ff370a51a9c5f6017af3c6c3db17c5c614ea18ab0e3ca0dd5de621217dffa36e5c5318fe191040a50cc3ca620683bc34da6c142e1c50afce28a86b8b66d189adcd755561a647080d93f3ede1cf54c3afb7e863fc8a82a2576d3f79e9b2bb634e598507a3d7d017e0176b7868bff3a3dfb4474b3ce03c401f33929364e727fbf8096b77eb351435c7a113b3215cc6246dd86f1517a7e550cf828900248f7c1754e40fed62477b296a37d3e53231360d012c4908b466e49b0e620c0a5031228009f259b030956ebd70e49357c3c3ac2842b6bd6e3ca5a3e985dc03f7105681fec03b320a7ca753b782ad3b52fd9c8e3bd980b48dd6ec8901dbf756108e85015821c880416e0693e0479cb31c0743450f6d9214afabc4feadb9bcee9def460a58d3a02d9e3039970068b8e3fd0a403a6ca7f2c71ae2b46ab3c731b1e65e2104c47fcb1f69e7c8c6df8c09b33f2e1cd4192faab316a44536dcac608832019f5765cc5240eabe3c87445c980c299a5e7ae0acc2c2ed19fdc8f011515bcb00476b03633c7669db1b44f97f6cd402778e9687c740dbe5686789b79d0b13f784a2a866eb91ab2d66f064c49e8df513ec348fd7272ee548ba08e1f9f99696ffb53677550d59c67f88404f6e610455a422d9cd987493ca5c366a397dccface2bba8e3e99719dafa768956cbf6fd8defc4104b8925878716a0514f70cbf3fa2c2bc2f66fabe654eed3076257e71117665703eb88c79e4c2b94e8e856e7a6ef90ee2a358409db78b98056ce1750eb80725d70e35507fdfa5933a61496ba48fbd5555717b33b59d4ef211fe096aefd478859ffc97a41372023ef114adcae5a8d5e03c21369baf1e7f417cb40326bc6db1cdf0904651dda3c1039a2f1755e7c329f7c03bf33f324206ce6e1638711c8c9a45f153aa1f847cca2a5d3af1d24fe7a1e1094819e8e712cbe10ead1012b7371b35cbcc2bd5b10505fb63bea20ac81d25e83ed0105e7595b6c28400f4d336791ce4a584323d0b455bbed44392c5f86c9d5287593f6986d4b0b8f9974a7a4157859ba801251d3b44b2bad84f29cb87dcf1680d6d10d1bfd59f0c95fb7bd07fdb3ea2fccd6e3ee80af438956ccfe31e750972f893ea5dcaa26d077fb3f09d990c2f41c8707368bba007803621ecd76540cdb8705435d74f4300eee04710a936f241c034709e625b0dd5dae1f6e86d034426819c365a05f5be420cdf4042bbff965a666a5756f67259448ebf742b6ea189fa17a4c3bfaf651d19a8a525f09d9cff637c8fac02eaa58d3ee3f7221da1e61833c0b183cd9f47686f09597e8115b435454acef80c079eafaa22b18927d07bf8b7c5ebfdec9c42a52b7824d45decef41e6184dc2db1505ca6f94172fafc10731706e79b9856dfede353d2eadeceaf72a302e3492d7dc81e3777e4e9e1f3d33cc4402833ffedb241a75a09e9495d671f80ad3acf06823bb04a92b815edd0ca7d01dcb3318c1ae5c62d3e99c0ec37908b45b51dd65f6b45b34ede2d6f553f60a45e20fafcb34ae4dbd375f52a5db9c62650deeee78e955087c2bea75ede7c304347b171fe0c1a2a033894be6e04605271307f307b2a9cf6ae24b8c87ce033a3fa4cf2bacdfcf54fcccb1f580476c7d00c631a8529a9eea2a713610341e0e25609dc8927e51c58a0a9197a54963b5cb95877354f4b8316df02ed2bea367704a12274d96bcbe0d0d728923a368bb8ab98d5db5401894c822632308ddfd309071fb4b477d8eac0ea5dbbc3e3606d8510d9051dfb5e4b7cdcf2c57c1b76902d864c3109c901da53019ed33cea84b407490486ad9f980a8a63df3d2e3921064afea137f35179130db3351f5bc3f5e7d590a5ab08b5415efbd345f9d57b71ade7dca939efa5a12d677b9af0af14468176a43712bde10cb15787c18bf066eaef8abcdea77d3a0c61d6c74ae7b54fe90940d0233e4b874c9a141dcc740d7fff43b9fbbc012a933d890232cf74fccb7ff7eac1148e203c7381b7f1d1429b1b1152ec25cbf7562596eb402a9328e43b5dc5cae36592da5523f0b9907a6817ecd395a7c778daae85bb11372b20641a04250b77b3a0ece885d07faf9622650259b874536d6d2b92181c834dc111b6fcba483167be40ecc922fb87006f63b9e8e632879563f37a8f712db9fa68c1a20ab239c0116fe022fad1279f3288b8e74a16d447e467b6381515814dd3aecab5c2a09c400b44e9100c04c720dc7e8c6d9460002da6c52004c16999975fef8752c2f9c229cbd9e6446b226cc454bd68cd665668a17328bb30f301e92ef5c7a2197a326df5c99b422096de8af231d1d8872e6e505bcfff026d4862f28d4bb3856a66ced22c9b0587451d8da4230a38561b5b1c69b523a4701a2001382aa82fcbd60733a14696a540227db44aef346d6c0a7ae5173604d59eb828614cafc1b8cfecda054dcc7306f73925e6d1af56ed74c51c6cdb66e9fee8d7a0078254fedb0c0f5dc85a4686870709b499eafbc8451aebadf848b0598ce8f955688bd2d6032abe10d1391d67c20a049841f95d2ee0c8deae2bc1baca0c098d8718cba1ddcd968981c47cd98d247aca4f838f3bf16d092eab8be8deb1f8d504d37cc44a8c96c9f22f2698036d4ad3bb48b31f109626565c147d20a4a7dfd61fb918f81548fb4f78875c1d138e819f6822651b93a3c92ad77793fba5222d870ea671f9cac967919d18f96e92778548415b2e170d90b201215354fc48a77e62823a2c2bb354782ad052732f08beb278f751529416f37d83ea26248517ae2ef2ead28c1077908995a2d25db0deaa957bcab39715283287fd626ea7388abccba2d90e364a7ff4284c84f70da68ce1aafb5be0401cb9d45e085aab41892a49e10cbd5baf2c34f5e0ca076f2772abea6f622b66020d546f8c2f134a87f96edbeb9b08394b585f2c2f98aa792f97b43b5f3aa9c34189804a9ecc2cfaeefbd0f967d85a25bf3136fd8132dec38aa82e4af6ff677682f3b62be27a180aeb22f918c24f23bf6f5954e0722324cccd06829fc32ae4fe3aee6e5a03b3651900e13fb0a759e544d033418b6ed40d037b4549a0404792c8fddc317b7f028493c4c91d6773932f8486417544f3d007e5f9e6fc02fadff175303f77f6b0e1f709bb3d3a93b38552ccf62688a39da1a602dd5e122e6f4e9171769ada5255cc5cf938dfefcbe3ab0faca434c42dc8c357e89a3d1488fa3df35c3580b124ba3bf6d0d203d586707eb692150ed05a01bf9de5c4e67bb948088784016394d47abb853f2b6b643a066ad81bcd1735aed4e108a8c1fcd025b548de874eb60de7f3c568728959147d1219e4b830e06ca2bee1f8a035e28a54ee6958d4821a84e5d1e41139905f7ec60fe67ce5f4eccdcc2c3d1e4a753a32dd3004970a4ff3824471822fe2b5010b9b6c6b01336dbf0181a95cba2624663215468519871cc39e8a7f4a151c8bd03363b402020f2fb98069b2cb8cc1b7e930938e7540d95d1d223e47865135793f9eb573660ff79f7ed2fae503e68ba44596ee745fbd8fa562c5c666d174cc01b1961736e18b8b517161ab9c8058026e0ddd6c94aed0086a26e1b959a5e05eb9d8c1ff5b2ef518ca23b4f265db61b499a48cc46bed28d23ffc1e8d9c9e345c06079ad47c88dd4e8e286575bd7f9420ab9c2d5c6685488b8b34d4c9ac04e1427ae0994cf789b48b01d1db9c2fe75fc5187727bb11119f82d0739ce4048467a08cd635bf78cc1b6cc9c28fdc199d351064a81456f81c9e56a43aef7332973804b06b18a26caa62523a7d0acc272ba49124b17bb68800d5756afd34ddb2b7e2dd8a118aac3fcf39d9f853c4d2c4fd3ed5bd25a6604d68d57db93d15aa1160f8a97e6c24238e84f272780966867f9c644ca2775cdac4af0ece036cfa6ebb1cd9d701dd7daec5763c9a4de0385db383a5647918e79c6a6de1f4ee1f6b722c561704c8d7efa4710d78dfce8ad2df0d3d82cbb59cef0bcb001f70bdc6e17af1a720b117fe02bb1dd527b18e6bce70e9447cd0cc85cbcf431fe7c006f5e4ef878a974a93b25f492847c9ae020583c9d412f4124246164d8f080b615e2eee267a7aeb5fa0974de52cefef23cdda7b305a33a91e9b50471ceb72dae337c485d636e28d6ee31f5705983808b1567d4d4ae820ec445c56e6a404cad6b408691475397c0dd6cfad232106ba96e5104052700a653e21f9ac6d79578a9f52548f426a1e81dd45bae30acdd4d22a2dafd633564d6b2f45e7d35413503c955cb0a9784b42ae8c2a5933a6729f3922f969a158540dcd201ecb6e32f88b5b4921914a2e8f424c8b031f115ea5d23a21e6f22439ffd7e5d11b08df729f65613b4f6ad3edbc9a066a5e712ecbddfa6fa764cdf170c0485f82d924a99b7e7ad8dc44c1f93e49b6469a9af3de5691944413f1417b753bcb84d5b7a34f362c383cbc802b0c88bd23a7ac471b9287571c42081b1134bfc8ce104a550942ab1f2a074cb00a90558d6e841ff15cfde6951f03e450a1bfc90dec6c513fcb2692ddccc31d22e5274d41036656183c72fce208e44920776f196193137ac67d6d65ce9cfaae774f23a86e6ee8ff3a4e9422a4667d971906e5496a4e80278774899c882708611bad282f6c1d666bc5e7c40082b43a6e98d494a18e9b3cf7f154fdbf90d786e59e83b72ad0ab893c49aca50ed37ea5202e650fda54f5c46ca2a35c476f4b009c5e6733232275abd1341199b63d22386c484cb95c43ea90e609c407bc79ddd00609cc2eb0d82848db239b249f164b7ea384d0239fe1e64d04955b9297472cafa2ff272c5c78100aaa86cdd8120556f25652a3c12da5853338e3be8f505d93ea03cd1cae7e78e95befdc0e26b760d11e05403c348e0523fe036381408033c009a8e1f117af5100a6eb91f08307df465c20bc1dd029875ef7e49338689f602d98f2dc690a57a6f2864e57098f8bd723574944ad3688b292db6d01387a16493912722ac8f91fd12b748899bdaeabdf0479df788eda440d7bf30d1c25d78d757f00b74bb556506637fc1ab87162f05d464e63a6272db3fe56e9357275035d6b6bee32bd92c4a1dc94778551e94ee1d8854f767bfac3811bd0287672aaa01ea18c25650f05a68cbacd9158e479b508e72df778589e1e03dc543b60bb3b10399e5c50de9e728e69774fb3f5fea757ddefccd0f9da75afe4b67f9c54aaaaf646e858fb001a6deed0a8a769ecef0689c988de566b6015fb8c40aeb5f2df7ea4bee60e8e69d15c4a4aa5411dbe63fbdd6418cf025d87f37362f15e22aba83abe1a3de9857c71c2234023b969eacc0bc526363b7f30b092ca114f2a6cefb34394d146866ac86a33fc497a8cb8e2a5bac398579ff7958878421fb08fff4f8f3deb8c9641b8de392647df3017a5467f9d7b23036935ec6e188dd6dbfb544b8a9e04a4b3c7fa1e4d1d9879daf69986b8083e6eb023a4b5eff80fef17f8f65433c882a21565a919448e6091d1b61013fdaf9fc3e45bbe827c9b4ab10b05600a1961e81d31c7404f8e0d32bfcac2937eaed811db167dfdc29286b0d51bad2bcdb9dea76eaf495a31a7fe717c1c98be374a36271cdd06ed06c02ef4c3c06cb42f73b3332ed488416010e6bf2f4dc4dade6e2e61f19e9306bf941868f59fa0939005743dd647f0a04b576a7e71d4c383c479453501e18ec56d7cb79fe31ff534afbd8609ed701ef163f9de31bc58114399fa0f22b62c66c380e8a10c34b7e731df2a8d39dcf36fbf3a66d67b973e3a94bf6ee0bd96f5c76baa76492032fdd2f59ecaee403d486f543f2cd7ae7b0dabe1b5566e681cd40d384a94349e9668650a6f2d2daf86c59a7b02ba466cd03ce1d50c3f0ca4c02dc4b3d1c0e7b9a77df9eae0bfcffa32117d7e05adc7195f4278c93497401629897a58d08ad7141ea52e0163f14992d7a284e7b875ce4640b4dd48ceedad1ea17d8ab1e760773044845e0899602f1bdfff4d42ab80c0765d1a8bde2ba0a830c050923956d06c80b182264ad19ae4f7c39e43195f7d421bdcda00e3eb5ec5ef2ec91d69df691ba7fe250352acf01fa92af5e2c634b9c7c97889e9147e869acc153d88cdc18908f882f371ba9c1e13c26e9cb8e3cbd4c5e1988080ca65a67b3a4c3460cfadbec904d853fddd2f5375b6070941fca53cc106b5748480213cfbdc1c34320a0478b05f76fd0454c75eca069cb1fa7b21704dab67dc40d041c8a1040db378e76655636ad725219c049e6536982d6ee9f11dd032280e622547c7ff44a938a1f233c356a98182d22d5770fbc871e20bb37483dd5d6ea1551993b95b30774a49b50d411ebe0e8c92834094e23ec2664d822c40e96fb42b8607b62b6949e05edcaa436d0ffac6a8ff384068acfc0220c0b098d368fb8113918a4f8c9de37cece74c8695cef2427e54a6e77ad092a9b7f1d94ac9f0836deff41b905b5dafc58ad6063759b0372a634f69a639e19521825d66a282f489c3172a3659264d0132af3571e637782bb6fe5c0afd24547612166fd3409d0991392fa054ea5bd07a4cd0921a13ad7b62a0b5e6d56cd8adb7f3eaa5c99576941c38aff311c49a8c9d8c755869302a2e5e40109c8365a551cd3f859b9421be189d3a0e9ed78830d5cd6a2414e9cc4c25814d94d98f8848e5386d6dbddd65d22b96c5d20020a5dd409c7e5344065871e57e01c91a443501dc8bf619890fe231319b5480c3879dee618d319962596539e2970513fb5c0c8eac3a71ff99962779cf1d7e916566d0e29d121c5cec5d7302a18ed00be9316f3de8c669a64c2a960a588f9c8a42690f6867cda7146e8ce27aa6a7fb27606eed9df6a235a42d17ce71627446e206e879de56025a66556263f06684dedcfd6f083d6a707e5fc8f8212d716e062f0f7fd0c2fc62bea93d68581265a803c31cac3f8ac8939c5f8c464ebd19df42c7e8998494af614c8383294f3f3883f2404ac10404759e182a038c97aea04a85530ec005e203807c5bc30fa9f5339b32fb0427e64915e29a25bb25ac60b92256470e7de5298d42c6b88995f8d2fb704e49d55b66b71e237af90fcbfd71d9093e1a543da2e9911ac4102346dc4704859cb33ac5f5dce2b3331a9dc9fb506461a5436c89bf90d39afcf93cbca4cfc35da6ddb112243928246ae0d1ba269b0fce0468d3ecabbdb925c9ea3241e2dbdc6b151fb4aa724a42f98b0248171fa01fa103f116d0e7deb65dc359b09126f9a420300fd209508ec7a50be56d5b470e387d0c52a1d104625f9571ce1404d1b7af3fb00475b95f752ab96610be112d33ded48624015781e7198f4dcdf917839471fbedb43c34efabe09941fab6b342cf672a29dbb1eed0db788dbfcfcc63bcfe80f7718571f691818dd6f839e3cc282f85f03fe0400171cdf1235049fa53de7450b4c40ed398d5a486f52124c1c63de2afc950e81839f52d17e2a7d32f82788465a65da6cd763c6360763561ed2bf47749080549b6e2db87514e1ee1c85a0bbd346eb6e3cc29267cbedcad67a287fc5be65ec59ba8b6854b31c83dfc5155187d4150685c5c2c342ed68b01ac9e44b60f0c100a347a0f93074dd37d8956fe2f43110dda66e9f9e6185c23dab74cfca21f3ede4bca87687549ea02662f45dfa0ad27f9959a120cacb7c419810e1b1a50fad31c12c47d5bbc61bad77044aa541d29faa6126c60ef088b82eead17a52843307d4bf798b853d90d14c5347ff10615381d85e964331b7a123d15a77a6790d93e920052ddb4db4baaac5e2b27b66ff955e53b8308151c81da4711189ccf0eb393c5bbccfa1f6c94a8d5f4bcd266fc6a12061967ce836ca042257368f567dc42de6ce0be84449234a6163b72069f25b7ead4b2003e1a7665e87ccf211abe94175d1c11bff2c0b6bc110194d34aab96934ef59804cd26e4434ba166d9833fb091be37b139cc10748b881c93690528a96ccccd2dbe024510b8da37dceab567dc52706461c486a0463369cbb99bcca2e8a4d2e005c45401964722a4b3ed37c351c9f21685e8992c9634349379f41796deebffc2928058c8ef6ea37c6e4970dedb78d1c2a00ea9e1ff1e7708470a6c60e6a2b1e966aa872776afdb238e97f716b3df8dfd42bf0f7ceb52bf9eb33731bdba5987b8f48b4599d67b383e77413107857e951ae0625059e5616ccb41131df9a480efd5beab3a9c99615921caedc53dbad675c00ba1030577db1d22731677914fa958b44792cc9c19e2ac71ebe61a05ee67ae7116e39e1c0d103f18bbc9d531164360d901da8234d29fb0b37cd2a60c7aa2adb2a4b297ea2fb14122ad95bd4592ef86c88fdae1e37dc8e44ad03c0fcdfa3801e93796771c5a2ec1e4ab12a64b3ffe48e7442c6224661ed5cc987aada6e778399941f7b20f16f94fb346b916be87f005c9c13789741602039d38270643cce3c347565eef5ee09139330301951c15756be47994de6f1802dc5131b9b011051b1d87d744756831a71cc8528487f032fee9dbffccc751e6a1ee6d07bb218b3a7ec6bf5740ead7a47b6907d7aa95b79aecedf4a637ead8fc6fb8654c93d13ee79f5d6258dcc61993aebc65e4fc14eea7d006e31f6e9f60e3bca8ce52ec559876fd20255e507daa99b185671ce1ac11d448c30bcdf97b9617195e0ccd2d15246308dd6cda74a8071114327fe203b1adbaa780f3243105c5111636a51dce966f5652e39d4f91abbbb4576234d6cacc3ec57cef2dd4dda49a6c33d12bb7595fd5ab5bb15b40301f34ddfb831a5dbf62218f496c003227fe6282e2ac054c45e7f3fc93e51b3ee8690f08612395095a0a12729d663eded879d9ffb325c62f2cb546a48bed51ae232fa6ce28a2494c132a6e09d98c2e3d478d5d2d15dce2e2665e4a3db448931068b99899c2bd8ba87349b0cf9e3c52cffdcf58a59b4fe0089b298b42ad7553f831bd60f5cfa3e09102fe773e4c05412973a678f3b3ed420433cd664dc7f218e816a17c5c9013ecb84abf2dd073557dbc41b92a91e0339d57b8b077a9a44d56427fec5748c47c1460b2e2412094db6d0ad06dea0aa0c1368592594bf0b2f590a9d6149e44dd4adc4cb42e5d9940d59397b83b33b88604c210694e3fbd84795c80c1b09ddb3b1ec8bef6e9dfc4d7f295e551a79436007ca48aa605ef5a89571e59cb26f2766e564e39d3bb441deaa0c8664549881d90a77256c0f6c77241fd6ab74b0e2890f78ff16fd2f9271ef96ebfbd0b878ba9c703900752b7447f4efaa60bd9dc9cd5673a36b39d49f54274caf03c0cf82b95141fa20ed3ce02ebf0dd74d9eff8eb9e2dd3a2976b244b12fd33ee75c1f1c459f86a1cefbc817f42d7f43ba406098165cbeab99df4fe751ae3382efce32af252e461652c7598161e74fd8eeca474fab6b1ede039935f2fd4d7562623b90a422a78941f47a76863d95857c33653d1b42b806bbafcfeccb7bb4a0c58acebf6104b2570afc3ca88e4fdf2719cf39c964a1ea7d2ae4a7fadc938abc95adac495093f6b959b1347501606b3f960b6d739291aa8c13eb49e98b0f78d2b91400b6d8961cb6165c8b684738e4d4db2f2ac30ddaa03a5e0cde4142b625e81907f08c60d7cb5729456806c89ff0efd08397423e44738ff38f8e88684f3a099dcda455521caca37ab4f4d9ed5d37975d4fdd778b97cc93babc804864a35e3a2db04598152e67a2f1f157681c3962d46ada23ea5d9a524f9cdbdd08a07a3a85b1f6fbde11d5a35c7743b83bbefd19aedf6d92241d16aeca7f33cc51839b75f111e8edaeaed808daf2f43fdb3c6f032ea45052ac31d4870c4d0d76aa75d0b88635ce449054013f234c4a16cffc58c95ba1cb8a0a0399861eecb1039bdedfab4d05f0270c6b16f03f6b8e629f687f133ebf2662c7f930530746679aac2791f54d6a95bfab5be0c33739074ed4e7ae88dde4a8036a7d6095cf41776366b6ae3f8f4a0734f48c275e129cfffff5e0abd042f99a957bf6f0f47fc7288750f4fe30198f8cad7067b36cd87ebca08abd3f9475e7443f83cca91a1ebfc42ef3494871f51f6d52a5524b9391c687571be5327c7c94ee2a096653acb410917fd51e56a92be4f24c1db6b97b465ca84c31c04c2f61eae07e952eb6554aa4d8a380d9ee81c1c462c360fcc3cdff2867a953b655562cd06162af8b99bbe662e0c27ce4d9a1c1a907def48a3231c2110c930a2f1498e32dbbfee0e5c5869332f3024fa5dfb0327a27c663cacd4e9902de34dd93529e90eb347bafa5035f56fc578e8386c7571d1f0ba335225ecd8be026b4544ad70f3af11501a53119ee39a8558ca0ed5b3d897ffb9cf0fcab55a0942d3bf7bc6b94ea27a6b748f2cfda431f35252c44610b7e843ed91ebf7e8fe10638f04f52d6d5a7752ec62350efcb7c473f80b1f2a26805151e8346d39d23551e92fbe372df7979c3f756bbb43f6bed09bbc6b65fe6fd241ae1c2f1a0d0b805c582853b85502968f9478e9a84895f9d4ef01ec4f3f571e57cd0bda68ee1f6f7e14fb6e0f4ef8c7dff6796472a935294fc27b16216966d5021339ded059687355b42b55926854bbfbd9f974a0c26eadbfca8a6183093996cf252894e6db910c71ca3ab2e82d90d371c36b92c9409cf7937bb266ea9b29c41d774aa522e103cb30bbabfe872b57beb027623742806aa7694a859ede9bc1fd7b9e32880b064b0030fce1a0e5cdf3ce558a5feaa32e323dbfab6661c5878c9377ee52a615b7c17bf1228e328aa20f92d070c71561969e1af532e76835fb0436810c3d87b982217edfb1143bfc3405ac9f6f3a50145608dfa8658b0ab642a347255c55b59cd1c5897b2cf625a0f0706c30ca1c1321e90cec57b7c3d1bd1af455e3732db80643383c41eaa6781f63da6233360ee720cc04d171ae2445b0c071e339d547f7ac32f407d29ec7abce0a9e1ef5276544877bab2f84bd2eef47ffa66f96e7170cd54d836c9badbc59435146031502c1a3cc744a470f693636d9050c5b894d2d6047df60eb0bac16d905d46cbf017ca69d66427cb88036eca4ea9d0e579f6bfd8a4a850703a0fe49d39c107c9358e98689fb62bd0475aab4b2031446b437c7f9e373caf0270a28d7b15c71f02079dde401e26175bb6e392106a9072021f0e5c5145a1db6f595b032faed8551f6e2ce318db1ab513db876a3eb42d225014949c19543e9c5dfd2290e28c5d72c87223f0195ffbcba1c02c7d0087721efd2af6881dee7dba7565e07abc35bc3fa41c6a4d6a313222ac6dbb117c69c62db2691c68869ac5fc5e987b0ae4335f815c73ea4235da2582dde81d6fdae5911617daef847be17f2bc09edd88830eac03977f89179fe03eb2dc3b38df43803ca2d38455232549110f4580ec3cc04c0d8cfe493013d2cde47c506ef6a8dfc42d998f70378fac5ce4709345926dc477e9e339d8c87ff6287ea6e2873e14d538cdc3f2a47e0e37a2601652f5b665b616a7d1ef3537a3327a76f93990f7694e6484e7a52a10e9eea2edc92b99406abfb2b11ec86667c7af4a333dfe900bf071d1bbcf4f0ad768fae4f450c53817c507d26e926e753e3395201d3ad89061f16706d841994abad283f0db74cada25beb5fe46f48669a62e0b849cb77097e1b4578b45062af4a071b04f0cfddf87519cf2bfa10ebb4b860239ff187e6dad73806ae968e6ac0f738baa88edb3ae4883a9e59be7a6b222c5f54818f95578daff9fc7a7aba8c4a41a699923e85ddf24a32bb71c808516f64d506058a70539276d57984d75161cba7d53a4a864c51a249a6b8fcad5738dd0055ba8468b56579ba5f102642df65c598490f3a0c9b1064f4eb1962c4c38bfb7d55d496a0b0f7b3f90b42f733d112c89176aaf937eea4bada845f3ca4e9b56b3a5a06b4c90fa4c1914ea47020c2f32531e270007ed389246906ecf2c4465f7cc5d6a347583dd73341ad97199021819be81100d867d628323ef7552db945e4c0be604cf6c4a8197958bcbd6c1879387d3286dff979632c54baba2a35ea84efd7726b662b94fae61464d069e0103692599fb86fdc3a06e01c6ae3deb3de6fdb21806c716e5f82b784e4ad3f0e2de629a18e3a2309003dfde9dde8e5101b83312f76e811277afc286b56879f4eb80468e58c60bc088284d05d725ddfe3185b7c51b472a7ff7db3930839142d4a452ddab628e07d43375801d7c6a711a55b452748d770b84ede35920c1ac74b595baef963d21df9418533fcf959593ccf5afccc753e86c4ae231eafe77a158c2472143faf169db29bf2b53c3288d8b3c9added65778095f85e2cb471ab58362041f0a27d874c42bbb06385a0403ca193cba67cf70029cdb7e73c7e2267b856fa0b8dd4c706b45e7174659b0ee2891df911724324f7ca5daf07c912b9b2abff762e62a1817688757492975db7185c4695f3a90895634b8d07453b36dd95197abc31d5d153dfb0d0ec92639540e99d6590f9b394f14c93a5e829fbb33616e810f59c502be44a13b700fd3009545e34c211abf9afe1bb8ced793c6f516d40010649f83a78ddbe9b71d8596582997d0aa54192e1200db61dade30500d72a184ca7dfcbfb80e5442f489d316cc8b75005564835d4b11c482e2c4d0d160f14a8b13ae0a0fb0ba5e3b782770aaca357df0e1c4d1c3b28b776a8b3e0da1abfd4f7190673fca1e1c5a31c688d6e8ddb21300e4178d07c4e854a718ac3f672b0120d6a54c16957c9ec8c444208e47737bc4eeb0bf2d801eb2fcb72f91fe988aa75f38e6cf26e858dc2a718580ff5d281d13e8fc3e3bc30c75c0193481c39c375a5b06b962d9491f3f1fb80f1cb27067f0709e0b0730573a9b5f5bdbee1708ad84b4ceb1a9a61e4c41e90655764057bfa07b8c81cc83a315be1aed6a49715479c0fd0f53f625fe6c7f36fadd001149ab978532e4d0de3d1a38934c74265b161899843704fad16ffc6189f42a5cadec98603e0f98c6889bd4a559079e074cb40678fad4690a20d988735280a1ee8ea71275069132101b35c18ecc9d3c6eceb4cfe9b165e4b6acc17d4f113ef8283c0fb6506f5635401e916d4f7e7bc3cf49aed166587a0c72cdbe673f467d81bc2e9cd08cd8dd16d90b353481df31e89b45e8b | ||
25 | MD = be3cfa6c965b2ee4e6fb0236665b0b95f66c8da8b338375b7393672283b0e50b96112d7cb76fffaa6db8ea4a7687fc6234dc1ee52e764d69ba8ac40c0f51beba | ||
26 | |||
27 | [L = 48] | ||
28 | |||
29 | Len = 16 | ||
30 | Msg = 3a35 | ||
31 | MD = 87bea682792f6bb4977fe1b92e0cc7017413dd263732c3604f0ebd63c2817ce5ddc5d78c0137f614a06e72ab1cab2f4c | ||
32 | |||
33 | Len = 104 | ||
34 | Msg = 7db15b3ee240b45d4610950996 | ||
35 | MD = 7311a6356ab38a690c0b3a1581c3e7b6de418996c05e79849891b061c51d53dffc0fff2b8ad1c1eff165aee5ef6e18ff | ||
36 | |||
37 | Len = 352 | ||
38 | Msg = d2a1efc725c46cd6a19760f49edf0bae823c1b4992ae2260085746cf65833bd008e56e64002383f51f960239 | ||
39 | MD = adb1778360ec659e90609e74b6af219a01a024f216b68aa944841429ed5b03b139444b8b848f73fd5f350ef02d46b6ce | ||
40 | |||
41 | Len = 1016 | ||
42 | Msg = d11ad1253592c094746da7b5c88d329bc3ce1929913b8be07e82d3f6b7a536a855f31ad197376eba6f2f4534413fc4e4e7673fdff8739f774a710754b568b7c61a473059a41c98aa4e86617aa66d2601d0f0d584cd9f132afeebdc0ce3da6a8b290059e6e4aa080c195c42ae7f7e1e99865223439929b0a3a0d79b46ca6419 | ||
43 | MD = 0cbec7be7299f48f043c3d1aacf833b4258c32190a21a8ac2471666b4a51b63cc77fff6e081aaf5ef21b1b7523d65763 | ||
44 | |||
45 | Len = 13696 | ||
46 | Msg = 2f7a9929dffaa4a4dcfeea1fc37b18e3cf935abbaa17cf9d834b3a8d61e9fabfb7683cfc387d6f46ece3f8bf845827c7ebe86a651d6dc1e83c5772cee1a9fee4b04453af2f68430bd87835126cfd1b3f8beea4d3822fb27864570e255cb65b414197480b6bc20a39c5450adf2474da93d72f6ecf8063899722d3755b7a19f71e93e782d89593ab19ddd3ddf053c54e0bf832311fbf132e8b9e540f38e4d9bcc3cdbf69de54e40ef348a9170ba2f65def167f568ce846889c0161448342fe907718a465e451bc1b0f2e4f21f9b911f186589f43dea305811473837c063b915d849c20deb43323bab4b64e61823f1df119e71962dd975700391b411f8778980a3080ba3c14a321d32c082d416ddd2345f0eb751a516d44ee55222395cfa11e7fc4edfbe7cd49bf4ebd4d7428843a2ad5538b3cd201ccd431aeafb146a65d28a4870a6948a7cc0413b0adac7e8dff3a898aeff5f4b65d10b28ceb749bd354c061c3008ec569d5f90a4d4f5caa51d35b49dc4028e738c8ff5939fef3fa202fed9ebef6f2c7dd0ba41cdb5c0c16985f96fd93a65d134fb4a90ffc0fb6cc5396b843c2151bb7c9170f2fa4fb44292a4af28df5481de0c3c917ba1c46467a35302738158493fbf6a0422cee558d4bce3d78e14b4fefb65bb05043e2cc2a6a8ea64565ff6ce2fd2c4f43fc02926ee44ee02fe1dce25cfde0115c9396c9ea06269f17b2caf58e2332cc1c8528d9705c70da1f76f22aeb1d1b93449180640fb5c4c4a708bc4621d7d2bed5b1a752191cfdd45086d34f247ed1df0f24e7c620de32bdfc4d1f882380d2cd7467c926f48abc75cbfac8788f88cd9dc5361517a5eb36311e6b39e21a85fba2038fd47d860f776697bb19cdb5a4d6746fae507e274399c91648537d905015e58910117e5914f44ebcb00e771d38b30c1473e1232d4e222cebceb4810c48e83e0fd4c852f4fffcd643c0ef9e4fae2d0ebc6f102f3f749b02a5e3a61517d53b539cc24120df3957a633d50369d46c0c226f8924cae51dcaf54d716f61385fd8cf38c2c311a32bcd6594d6930133dc18ef36a9671ba8b179abe95f588ef74e8558ebbc974dc73c26bb6eaae78ef464181e18b71f4b0f986ecc8495a9c4dc0b0b96be9806fbd3d32952ca3b4737a06ed6561e9c9581a33a720123fbaa2a70fc3233b83e56444f5aa0cfaf70fb24be6118404f3e11e6ea004cf2d079a3e93a8ac1d4e297cf4fc43851dd26314a7ed6a5a784b386daa26e50c64692f7db28c21d82234289bb45bad5042236667e6d70a24bc9525c3adcb793a6a5725d9b10911e3bc8e3fd604db7998346e7f7dd1815c0cbb735a977bd4b32b5b976932bc92ef3b56bcadc089045ec95f241cdb0a84c67f1f76353da6cb493bb27a881d37a2106b8b3010cf935eb3601ce4dce3e449eff8331e444ab117a20809a1010db4cf3be0c488f777b6532df908112e3d11592f04a0cc16232d62340cbb8b5268a662b8278d37c03d848a04f0ab498f5af43b0a20e310197b7e1395a65299fac29f051bcc5fcd09a5605bfee370ee8ea21f5807d9748acca815a44d81796d68b0014eed3bb6a94233fc51725de3809ac6f538beaacf8cbe3d96aca21a7a763a957f8892f22c6d086d9af2e5ac9d90321e186584f17e964c90739559ddd034df076c4aa38c2b78aab6dec8ef6be9adf33bfb66f159ec4826653ee6cb483539c47a4a1d95663e6cc7a42a3bf628623a4c9500a59a50a312aa104b198ce5f3e58952bb79ff1ccfa9ddba2fd4705e91b5acaddab9d6522d7666264ac5f533b6d8ac4512d8371c69c06b6d322b046ae2a0a20aec1c3bfb05f3d91b9044cabdd873abb5f2b0e3e19740df31e39828f9ff9bbb20b73541a7a70b8174ce4e43e0d356e629cdbc6c08d29bd7acb6a4347823075683ce9d7de4ab3ddda6572b175951f30a15263355fe9641b3322df7dd52077402a884cd472e6d0b6c34cd63ab63cec8760c7ebe384f7cc31066bbdb7a3417425e039c4d340166e4bba4839076ac9457c87459c57957d0a06dced2f7a18acd22b7295785dafa435a2a8a2c3a1fa05d115fe129d19fc44c5a29bf15b4d9c2b375bc8e591f92756cfc573a39b8fccb8395cad7617b11f14a60e2dbf69b897844cbbcb70363010f6e1bc0590ea594aa924597dbb32a868b55551789f82437180b85661809089d34a168d44b4d788dba23b13542715843eee797366d9ce7793e72331735bc78cd61b13421a568ba3e66926921c04e9d00888ba7ddeb474db63813756ea4a02c1823083e36ebd2d32d5c88cdebb98d511304cc276c7799cf84a1699ccac9569b13f530c762732e6bd0f8415001b2c02d11dff36660b717054b16df49ba38425e3764a56052ffddecdfc686aff22079897376cc15591e11579fe4feeccb55f | ||
47 | MD = 70e1259106fc7a7c6be11d95fb673bfaf0074e342fdaefb458faf4619e7f0edbd68d509b9ca7243d2e5e039d42ee3b47 | ||
48 | |||
49 | Len = 100816 | ||
50 | Msg = 5f464d3301c5e0871d6b41b002dcd09abc80a805de3482d97f3fd7b9838745da1c0534168f76b93c3c53bbabd904541ffe5179cae619dea77446140b7400f47d242141c7f2e9894d88f44c9e066861498e7394f206f594a419790d697f6a11187f84bc6fb288186109343eb11172bec076d041a4c7306d7978c009fc2d2d62563614ed3555ba2d21c8fcd70e8389352dbe4ec808af3231ce990452eb05b1b0dc4fbb1b4265e69235cc3561dae4148c386cd770474863a84a822b2e5f905fc255d55f90bd6a760d441dc52240ba7d8c888a5283891a2c99963d1fe680549d6267cdea92cfead167f6c49663668f2bfdc61fa647f5abf3ce5ad2c6c175dbd456ba41436aa06f5f68f5c88e6b74ea86a79934bd05b486210d3d470a0967ad6d67f7385260578088d7e63197849354f651aad07e04ed301f1fe7a6d2047d50ce5dc6bbffbb1da6b47d740898f4eb54e3c5a1fbd18ec93254cc01f705fce04e6100ced132c519674b2345547804a372b5c925bd9ee9701527db33408d37b72f8d18b882d3c4744eb58f011d21fce336d426de1fcd5e09610216248b51fe2b79b96c2bd6ca0155e05a8a516b7a24d529a9a475284735bd9c4c437ddf399864b64fc5d0d6ffc4e5a7a3dbdd476bc39ed29a0a92e1f2b6b3506c2be5452d4f896db6eb4f895b554b2af64c4cb8dc2369b91022dc50b7291404cc9605c31569c32756a64ff8c4fbb0f1bca346c7b58a5c6774b2fc7f7fd50741d34c8564d92f396b97be782923ff3c855ea9757bde419f632c8399763003b58ee9140c2d62e914c1e1fa742661a9166d42267edc40905b35a25d5c3cb3fb457376b7422896df7bb19c23e8f764416731d2e20cf2c1beb8663c07edd8f105e078e2fed05c5e5897c430017fa2160f565a75a4c5c64a15dd7d644bf355d169ae2696ae5ed1a39e8f81055cdf315e5b0c6f9235515fc4dbf30281ef17b83a6ed604f89293904bf78c7183fcb0ab236cb1f8935e59c51559217efabc000b165d819b717118a03facb61a13a99b194f8b6c7ddfe5850127d79078397a56564c7ed6716a129409680434061b2a4782c9006587de927c1ae09d6778a5f1c39fc419fe10493eb0d4ad492fbd05485eee7913c59df82fe7182af2cf06a6e8edf06676200077bd1408f5c1cec537cb8566470cb44895826d04ec20f0aba4297c501add65c75d5767ad2ab63aa81b7b66f01b32590f1d55b7e50e6df1ee077a19c8c895f5ef62d452cc336e9aee171fa997ddcedd7af86e6cc37722fb5838a46c5e58e7f700edfb7c6bf832171d9581f660752867118e9535a6118635709d6f1c1cb21b938068958e956149d9bffc67f355cb88205d4894ba97c3e3c8be9fa2d20abe79f3f93a6a2f4f56fd075bb49a4b7dc83630e58c32a29d757fdbcaa607352f65483cf2cb4208a3bf94ca7a25e2a4e05279be31c33696c10fa4971d1b64ee938dd299f483e5c098845749a3b706a787529bf2ca56693d0a7a98243e6482a43e1f5d3086ca1b00368d8ead5ed2d0fb79b1e2f537ab9340809ca3a9b5eb2900390432293008ab7086c2811d33de0648be5597ef002c7c462b5e0f4e0b1720a98b2299ad7aa55eb78f0c77c2ab4371385f280107ae40ebf814a8223dc74f31483c63d9e4ed09fc7e5a51bac34d69d97163116a66c84ea9fe4263269b71fd228555ae3cf5109c4d6ced7b9049a2b8069bd2f71834d6c07fffbd7561939188bc07dcea08086bc7182a5270427c3199bf5fb5c4549861fd32a38ec81c4ab058c777dc01864787f0275f911a17838272cd65135f66baf06d8d93bc439eeb55d50b7c5adafed8eb8140b4b05f59871dacf954f4b096c30b7857774fcd319c096750bf605db8e31fe02cd1b9294eaf8bb009d4609f2cdb3a8657f650501b8553765de8f572fb91ac77b35db35f402453e5c58f60146f2906ff56b9c6b3a5d0bb6afb9e2201110919ac9c01a7e9750dfdb2f72afbf7a8d6f64b1c68b9de17a2c9abf289eef24074eee9b1649caf3693118165503a30200993d271aa31b8b92606a10a52612dd1fab495b82f9a98cade18b9d8a723a71ceb63fd1d27372bd281f9b40aa1839b0cc2f2177a09aa8e7b159ac118d7c145e7a4f032e788d21facde2b4dbc1d5d2238f530d9bf9bd2798f611d03ed8919f0c85bc2da99750b7a8d6322d2e66ff6ab9ebaf7424e8c1c3f4fe92be61f65359106395f5ef995e925be3868ad513f561f873acdbaf18590c903d64bd275121c11ea655124d091740887868544c5348664399d3da96e2e35fff34f062fb939d656bc072096e510b40b2f75ff010af68d64fd0acc778e2e13c9667de266b1816c4ac449521b02bbb217002c604be72e73051aa9048d192e3210a68769dd2693e5d44951711aed3a751240d42f8925844131daa36c51d7d59bbaf99623fddf1649db954705fd6f3405e63894f5258c9ffecf83208c2c90cc55b1a8d2972ea6b3a049ee54942b50526b7930953986e428b2c75e47ed870bba68dbfa624dd94112f3059da0a80c583baeb570fe8314f5c66501b34116c81148dd22396fcd6479da49f7e952c8084f97d6803ff85c3787222064ca368f596a1ebb6dab20a03916b3ab071c927d87fc10ecc4e7ab4a5761e3eadaea4de1a0dee30aa39a9e4dbee047201d7d8a4df1284cf668ae3ed7dc4cb2cc4b5cae9307353fd2ae4c105c5d9f3bb021535fc3ae9bf3ff54ddda8b2e1037cd9d69822df436dc1c750a9f557d1a3a63fbe73c64261dae0c70bba6edb57519f5b957f138d1aa5fefe01b73c1851aea42938147bac2762527a492cb85da43014c876e223b05597354d7c9b328df67f354d168a84ce86dff57d8a870db034196dbeff83ebef80bbe52425a8810f2c9fea29ee688a201cce4a5f447be789a3881a9da3b6c491288e8f1091719032608b332e0410f4576597e17e0b5dde305f069be2e80d565bb979a3915488f88e3ebb90e81c264bcaddd72b8843af4a4ae31f723d50fa0995b027c334c351128913bb93e67b1b08f101f6b8dc8202b44fbc3d3dfb530f66e5a8f35e69725c86998c05ac87c561a4706e90fa095adab4a566da4fab82bff6b20076e5bdf62dbd6614245b6a6f8cb6bf60106f8d12b9c3e26f8127dc547e2181531ce980a3273f452892110cfe1ea834a30f99d66e026a9d22dc76fc3cec8fda2d7fea701deb84dd45c97dcde57a017693e90983a156f11c4d168d89c06d8a32dbfa590adadd16850854f24bba315b0bbf372f03711a20163afa0c137383b9120b26c59f5e9e7cd2ccaf0ef4e0d70d5a81748ad441ee5fe178e14317cab184fe178fb0cc0d82105d2f423467fdcda0f9871b9d84882609248356f3053a99866dad9f9b0f8c4a897a8cb8f30365a7ae5f3ca6e772d863d445e6d57c6a478e35d719d0e4e84f3a30b1816ddb55bcd79df21ea0e95da72a19cc1fe74fc576120bc108be3ed4cae3bea889fb4ddd67efe858a994237378eb623dab070d954ac780c1e6d2095383c98ba622cbdb18fb53260979fb2672c21a4600f4bf06583a112d303096d4e30e7e1060d869f386eba3cf7aec3052ca17593dcc9969fa9cd88179c262770211cf53f53f175037a5cd445d239cee48f7ed0aa1d715a22ac18a8aeecf191d415e4afd92b76c091803f4c757a9e89f696ab7b11ad6d5f24774e4a004dcb0e3f33705dd8150431f051016af37647b9e44b10bef114276d4b1055b634461c655a82a847639a038ec9f58876e84e9a2955b696e072d8054c3f81173473604d5fcc0a75b4a340dba0c375beb87b8b01a0f2de232bbb8371c3a9d27a0ce521c4c43dd3bdeebf92f42f87d88978d5b4e3e563cba0e5f59dd29c31096885b113ea5c57e66a3be015b703bc26d3fd1d51a7c14f85f65747ac909d7e30c8e800be27eebf4a62e42e538ae30b6883907cebb7fc5e150bc9da3a138f394e817df9a9e44420078f30d0d3d6981ca581791a097a5e3982c983d5cec239096c7d8cc55c87242026d769ef1d04eb96e5b5001e3358af88d417cc61f107659791a35d8b5f7a5767ae24d5b2ba7aa12230076db1f1b9b6f213dceea62949d98bc5db38743b23a59ea75dbe4231a285678f5f07facc053c2048022fcb01f15e8c100d64a877ecd56d196a6ac60ae35e0e09a517224ba409ba7b70d8f9fe65bc427b212a4e9b3cb17b0d332267cea4f3bea7c1e550f7ffe567b20e3057aa0ebb560d00d28e2f7aff718a9f2d4d044f0d20709bb9ad567c98cff7c4810e8c542370cf90a491bc1088f69998d59f344b74db6c1bdb61f284e99b517a11452ca0bb37c7bae77fca6514b341066086e600f098a32a92935380a173c9182a2513584c54ff67e580dfe16b508acf1729a3d649ff1eae286bffd688fe658612d6c8e69e6e7f7de4ba85ec54747cdc42b1f23546b7e490e31280f066e52fac117fd3b0792e4de62d5843ee98c7201529455c85b169fdb90cb05e3403cf2f737148bd20a53c73880880a14ffff37d62130e682e50bc7210ea6c1f0c27656cc1785a0d9ce93ff94dbc5b2877519d9bac4a339e98ec594a7cc76f4ddf994fee8070dd4b8e0fe0e51b93105fcf566f83d914dd862b4ce78de7e9e16f142234bd969ff8005dddc641dcd3c7cfbdd6113cd3ba34a9503a0f433899e90e158abde2ed4ed4b3711c991577c5aafeaa982bce80835f8e6d7c7975571fafb1499991646bc499ec32930367d4b1de76ff656442cab987bdecdbcc2b2bc35ce01816594bfa4b6e33080caa41dbdf8ebf2205649f98a2d3bf331fb16b9ecd1824eacbbc9f81297b115b4d36aa7496e05f7d40d4edd1886c1bac10cf3f97840a03277e6369e7a7e90d932050ab8720fce076de5c355fb17959bd75cfaeff325b0737f8f5b1160de0b0184ba04afcc30bca77a6a37e29662302d01858c0bc1d32b883011b7df5a387805296cd91bbc835a3e76152d017ee929d4cbf137eb78db89d71617dd76cb00707aacb8088ac77a1f52ed710331193edb29933a7efd8cc153e6adfc2c6637e88cd86b06036b8177847b4d086b0ff9b5dc91f3cbd1c08217023d7449253c25331594f0f16a3c5f2e122e0145c4ec94f096b45a1fd0b2dd3f1d51e58978471782a336eae49d7bc4e050d1c6a391658f71a1f752c0ec6302bc2dba9e3766359359ce34955a2db86740c90d09cc50e92dbb76e17a39955fa7108bddeaddaf860d1aff14acec8b609ac1d336270a940604209df91cf45be72edee04277d694a6f968ae6d8e065702f3d607f3baf8db4ab7637fa4c78bb0b7fe69937eb1dcb616fca564a5a521e12df71fefbc321187159bd6a47b066a3440ba634de9153a94546b63aa33aed9da2018e1f30628df37f5360ca4f2660a46ffd73e58183e8abffdea25f7bdf798a2b7cddeaa481bcc6e682a67e99143066963d96d4a928a478951dd6ec59b1be8cb23aa688e1867738aecdd9afade39c92c0b2572bdde84eb912ed990ac618834c412231216fdb84f1e01b3f8414fc6dd0f646fd0fa62bb0157b3535e1497c9272df1cc5dcd4e6ab9a8456222655c56ac73fe0d2aa8b599035daddf0986a45b1a59510abe19a11b6dba065c8bcf8a85d20a3681c2414dab7c036cc1358b1dba98d6ae62c5948c36b5b3e307a6f860c0c822ac724a5c917ed5f98ece548a7a741d366868e6c676394c3659f7f6786594196dde332543376f9ba0724b091d30f431f91d919417e5bf7ba1e9a21cb80f6c204c3a58d59d960a5788b5cba5abd7c7518f4c5170115125de97009a6c3fc4d5773e4f57fdd433eb7422c7c4dccee57a1679633ced3b5f08df763d4577983c5ca8b49bc4e08fa76f8bff36daf0fed068db47f0c87e0e45d518dffe37c129cc6e2f5f9e0430185723098e715284a42f302a6b8368a4f2dc16f534d1e5db9d0b86659fc4ba6f16c982774115d02a57684c7e5489b1f491584b0f0546e4194a6041f5e5be3bfff3852a4fc772d83491023a61a37228ef6260edc0d1cb972cba610d5ad1d92d554700771d8236ef55e983765ed8eb21e7de7c8bb51aee9368758454fee4a3f32179c1e54af1d069e0b9728cd0554351907e018146511e4d6f0450b57c8ebd21c71450116296bdfc779945da60b9192c5bb9a67b1f04d94992df4cbb3e30732dc8af2177fef17e0b7d01740b8a64db16bc29c1e589b6bdfc967edeb2ce8a649ba892bc856a929f0b837a838ca7f917a52436ea3d20e72afacc5b9d58a7fd0fefd96787c65ffa7f910d6d0ada63d64d5c4679960e7f06aeb8c70dfef954f8e39efdb629b72979be208d616071289cfaa0756a4bb5eea5c7baf8fe7a31501e7e2d67d708d461c0c93e85f03afd70bd9e16437171e01a34f475e4b5a58d13ce4e2fba72bbba93403f3f8981e0bbd6a8a6223327bf096c44b36e0ccbf7592a98c1fa67f198b628787ec80aaef848b4fea158c715799e6f458327f399e6420f0e7821f2dc4663bbea065c7bdfe830b6102e2e7193381b9dc7f2381ba808c43b8fdf3addab4b5fa81564716f7d46e0349d9b27b559710d723c7ef2f79eb55c3a9d75b99ae6fde6877b278b583f8ae3cae776b914b0cae0772397fd19b6a27676c7ca02cd07f4b4d49bbe1ec87f2ac7e39e5f7712319c31271dbbbaf4b826af8a9f4acab696c62719f7a6a032c4bcf90922a3c630647b7c1c7b78b10afbd863f07486561a0bc8d9b1ff5fc41998a7e3c604e24af1c1df2da1dd5d83eefa2e4012f7fb5959ef9339574367deff73723484b5a969c8c23dc251a3b887f34b9ea09c9a1838e8aaabb254445d7556dda257dfd5579737fe1dd6c67f3851ca68b011e7cb7b6958d588f143828f0bb24fceca31b47b77d1ce05e75ab05b55d6c9f9107f0c738f2cf8a1629f7e9b2694324e082503937ff8ca7c5098f770289af7d038dcedcf0ed77c8b82e2a9003a6f3db69e14131e144f6be7cf0bb5353ea96aebd78befbc6ceae9bdde97823cdbc5ca8ef8a993a9d9383aee9f2d6a18fc64ab92990672ea2dc9b89ed248aacf7f1a513da43fe5953335afe76d78867a066f226ae9c727c6c60671c50a50732698ef7a492d51998eb6da5368a667baf6d12b77eb36686ee0ca239dc6f3598be0bda79e47f0891fe4d8989df8c685480de11c148a2b44c8a6bea3a50b09be557c51f545a09a30e9362cf3080e6a6bee3dbad370ce24f6c5a6f8091007ca195057fa3af8f99703a601086c2a1ffe55fde4c2c4153dbff8d6601ab68743c0d50d021b0b3099535ba6c40f866ca3ff0df7c19d709a3f58b57b40ab5e43556a8c0c1938c875267bb39c0db6b45840e8ee7c22bf6b48798bd744f70e42fca343a8bdfbd7f55f275ca5d62c7288756d4861fba68d16d842c5b893c1d8171bb3c8b593387d3426f292ace5cee7753c9f9a12e6bb9af5a24192e4184f7d3d191d862d3c3dace7853eaa235b6369fd164e5a7bddd06daa3eec7fe4130e82478d36f88a0999cba1f251ffb3a7689ea2baf016073193898716a9f933448d7ba8e0968c669bdb7dd5e6e32fd84a6ce9e8632b393f9263532ec2107b4c0d2abdf3abb2de2d63511805eb58a70bc4ded040d76640af60ce7f03b9a682b8dd84ed8a47225a48e0b94ea47828f1c8974cd64e5027d8b13d43519875d2bbe4461a7f0f5b5b8d63a472765405ea9c994225806395e64dff88506f7f7f3b6368d769e6e550d4e3e81efb13771cf403e855f75312f1383ce4c2744d0b4e3735a0f1e1b99eb014fa60c0d1ca9035fbc4403330c2fefa8411fb7c3d6ede5b5c8f4736106bbe01923d483a84f031e9685a3b6a70646a2a5059ce35fa496b3f21fca6047471a5bdd33908cc9328de9fb032347c249bf7093390b750696124621dfa67fd9c7fe85d6e5a4d277ad8f8d169f8b5e8dbee280f8443518bd94abc5ca704e781e6cb1868ba2d6fbbaa850326fbfa5a20e4df6fb5f8ee2728e86a758763a8af21e1f7a8584d3f0b09a0b19fe8fcd37bc4fdf45084d7fd92b80544f29aba52496e2c9a0aa4adeb89820be321cfd2f0a53585a15d04c7fe4ec9be6eb5df419e20b71506c1f642df75c53a9e3b2414fe6102fa8af7be3f6c95de824c31fd6fe8ef9d49e26095a2674a33cb574e9e493939bdeaf5b309b4c51256ef71e95dbbcee0a11991693b533f916e1c82ce86d65d89b6d596017fae944ec364546e78abbcbe4322b83e2fcbb4c5d4ccb54d8642c7eb9e28c08598a356a5c46f8813e6b63ec2f3e3bb721b726361f85a734e0514f4e9c4732991ed3998b1ba8f618c2071d1b943eb0f8766fdb7f0492421429bd380deca3325c8d5c7b6ed16429539ae54f1eba39748f09aa44efb67d863cda304e8653ff7499cfad44dc27807779ef8e63be4b376ec403f3c84eda4e5af31c30f9807762e0980b4e5d9dc406cad4e888bfc3ec4186de8ccfcf631b0ba5831747a1c200d45ea06ac82c7952fd09aaae5dcdf5475da427cbc8c1f71ebe5132f2fcae15975ed6fa14a11b38766e1c446894f31c0496b0e5e96507d28e6e4549d6d78841e40630ef306491a1da60eaea3fb69bffcbf192610e2e07bc1124690fea61980e8ed654c5e796f67d26db5de35b4a2c67427833e360ac2a7d4fe7a5ce572144443ed62ac460c1b19402e85c79e3d80e1c143279b20a66d8dcf2bfe1cc44a0f5aa9b0d9b36c46c2cae148dd0f2ffe9a8e6e7274d1832e57aa39fb40553da6414094e838d613a20ce9307d49f97d904648d6460985b01af769800cff9a940f70729fe40e98feb64ff0a81c5b2b096b1a9d832e440c49e4e3684bd17a5169fe138d2544d9806fec027dd2a67f1856178e090f9bb2f9b314a202e7e95f2e41fa80dccf7b1810e9cbcaed2acc2445d60e26f7d63ee4b28e4299e60ea4fc659e7d6f0de91748bf1ede1fdb2acde9482bb76bf6716847eb2dd7517e0a94f0bbf20f248d2c79fa0f518b67a44d5c4c73a9bbc3816ba85ae8344b5f377649da75cf1857d6e4338a76446c48e52cc7bc7ce283d4252f8fac5e1427299edc33f84798316f77bad4a87849e91a1a23c0b7a86898046e278eaaa15ff33730a6d3f885dfe2d1dc0acda2a9e49a71cfecb7dcaa9e70eaa8fe15d4567a280e8960ba49d5289535907e9f277f96e8e652c21d89e81696dd821db5b7e1e53e160584477aa9e4c0e12160c9956df36cce6f4e724dd543827366010ed3d843cdf4319c1bf968a70e9b1b6bcd8af96c9eb0620c569716b7bc42e13251a6adf8201faa129844b5e1d699cafa1b66a674e732c7662b0410e5bca2704c5ebed7850d0ebb825cfb0627a183cc9643b709aedeac2c06700358400c389f99666ae97ccd37f265da7addeb07df9ccad6fa777d0da2fc47b6235179136bbbb409596841e921eb278142a19e6203c7f235bf8461ccadb4b47dd290d36ac27126c808b866f9531261f1e0f5c458a6bab6f064b4efc432e1c7379f9af19ac34c5c22e76e6e7651e48f9ce44eff542f018397889d896cc9001a63e8e455fbe4a9ee9a740edad894fe1af2bb21a1dd0318e28ba982c12ed69c08835ce17336ad1638af3cfe0ea892ab8e83d3f25e6bd98d5e4d36292992e2122c265a26cbb3931dd4c1b0d0ac5ee19974d0dd45777908bb416cbce52531820effcd7f28e1fb2d3d4d826e1b2673e834485a25af9f9d174f566abc3b36732ceefdd91a7c3885e1d10d51c321ff704d0883905b7539309ba5e7b7a2bfefd0494e90e9da7541ec37858ec05ea9a9ec5672b113cd5ad6ebfc5b8fe40ed7c3f17d8a73703dc89086b4d75c5eaf06b840bb2f5b4519a4fb17bfdca9605f17253f203efffc92da96fde023007d22cdad05d18aecb4bf08085c5ca5eecd21f2b611e7e8a0ef981fe7aa2014f5ac6862fab44011dfd33be8a1226943aa7ae5fee9221b0400d9ac2ce5241b09a68cde6b13c47d50bf310ecb37f25c32770a299020d8500d8a4b5d7621e4379dbd6ef34a9aceefd4055ea6144f54bbfedefb5b5b0fbd1d81c7a51a802072ec3d84f34585f22c1df84caca07849b1ef054cbef9b40848e9fd238761df5358cf55a79a53a1bc749e49ffab7c5bd9a28bf24ad5833facf43bcc3852c1e85cfe47929fc49c325c20d74588eb9833519f192243cf96625057899b70a7c93f8fdbfb60d8129d9c43c95f8782ed8293641ffd21d21d91a0b4db69d766f6d6497e9a414ceb04b65425d6ad6c8811da00639dce8d8030038f2d08330c75b0879aab81bfb3330b950e54c13780d308fceed2a103a1a8b77a923b66aba737654ba7995acd306aa7b80f632184412e2369c353c2132ae614553e626f0a3436959104ba6e0040dc597dfbc3602a49e401bf2249699375b2c722083489f54fcdc1f616a133ef6112a1754818158ff78f245b9046100b0e89407f74145fe336976af971c054f12d98002c68b3aa2bd699fbcd71bc4dc071e430bbf694595a951e01098aaa499be2f70611f248a694539ef8936b2e8b7a3c5de8662436fed1f7bc24a4e5c17a663d9a23b4692993301b08cb3bc10f518eca51081c717ec8dfbb0c2669f7987fe6aa0bd98231d8e8b58951b42537f12884a857e02d62de4fda6b88b6b754b1b27394c6a819e0f92f6b2b2473fe245678e252ed31477cc7ec6895bc361b718fcab3aa550fc9faeccfe77cdb5b151ab1db2e569b5bc923ee26f0b6113504d295112d47218140e44652a10af10a088f95c7cf2fccd040fc93980939122411ec643e26e7d69ced3178402e320fe156e774b75b5afc2f3d6b6ab828bb4993b1436faa5728cec34d66f520f59e82716ed6d1324944c3c91d04d5ffc5a921f4716c39de24768484d0096f7d8dbce35aeec22db11f899e5e7e3d57e7668f35d6c0db3542255d9262137d39ae6cf9bcde254dfccc54a6062fcf8982f781d9ffab2df4f49ec04a72eb9646d63bf9e1799bc0bec0ec7f0675ed9f8dc9b8be15d9f2175dfa1c8bc99071c70ad7bedb10a4143fa91c89f54777f84c9eae9361cf7f4c2b7ab873ee5785a5241db0af86f3c6d7f091623d6dc576d07550a42023633a09c8dfa21d7e70cce64c13f37663f75c47921c246f3f2d1d16a8283ce7697da4cb7e016971a2a1d0c59d6202bc18b7cee3828de597efdab53b33a9fb41aa7b49f1c964512901773bb396ac80e90ba1a94c408b2860065ae9aec64a41d76cf8842d299d0babf14d5840d647d075c34175e26a786f30091a24f1ce8db30137520dce1cfffb6318a0d0fdcac883eac603bf365efa2c806eb4f194cae8c16780342165222192f6ee2e103ae2a31dc08a84dfc89c64d2e9ada7ca1839dfff62ddfb7982c79684cfc821a098bc6bf09f87317209b16d14d45c6f38fc99f7bf9bb73460977bb323665d480c87c687cec052a5f08a2c6744c8e177a8a269b4a47a925b9123cd2c014313edae988f8aeaeb633ee5ba6be7f53fe36da3aa37ab2077f5fd75a82a55a0fe62af213b85e9e7694f78cc2b0e63a8c1b89db484722fc62c688678a511c474f0eff8eef1382946d26de00e5c626ec1d7079445c1b7c6f7f05073249b11fd1fb30257724a14cd7bbf451146bf366de2e826fdf1d25705587c4460040ab963e3bd504755b6aa5b18786b68efd3c8e59e8dbd172346fe7f4a18bac98164669d73984044f3c777368f965763742ab86a3720208c64801c796f6e3a1c4748b81e41ac58dcf6ecfa0453b18fad7e3473604f57f7da302e1fa81ad538d4a0280c4ad092007bb9a7a12907227a936871886c699db97d00a1966fdef64d9f3672f1b792c1edadc6781b391c91bea1bd7275f30859dbd1707b1f554e49ceb874ca06e92ab466efa7eeb6990667a27507a7ba789e24d593ea2af8eccb3862cce58daa63eaf212bdd86c01ed471cfc79b191c481ad773d20e821d18af85a7049034e5a9c660357a4c2808b9a6139f32c55c13282b8d98904f4f027d438189dc9487c96172e50dc1100ccc224e7374cf96ea6731032c43fbc9b367a4d1d0b31aa3fa8eb589672e69f1d9144114bbd508d56c2049ecdbfd7b43545375a099ad2885353d8c550d22dbb738e6fe3f104b444c89475a2cc24d7887daced8fa05006c02dfded01c00707e2ad04c41199c5decc1eae34b0c0abb5a5beee1b5253c3350e1a077682767a0b9124a4df2e8879366fd37fc04d4dbcf89883892f46a65ce3aec22123cbe6b3af6364df1f9f5f9751bc8179b6dcc5c126dd65feb7d11a85994e90ab6342834c79c5f82413e88198c73e932c66e3cb60b6e0c0cf438622e5dc5a1036c38afe9cf13559044a9e90f5fd72a3188ef6b1043f5f4e6b40ea51f6235dcb33b3099b2d8c2e02103235f0476ad51bce6d8a2934068549633e521a3ee4c62c22b042fb86c13c8da849233205a5e277aea1129678c31f5c379a71fe08b72fad9449cb923126dd465d1e0ae8a925374149b8248b3afb69f168f3ae701c00f6ea08fe07f1b5338ce6af2f3156ba6f300310114479f2f6119367c88c12c158b84be13b9c8c7b5dd7c90edb5b3ea1fa5927a25ad6d5596992dcd4877f58a134e05dcd80dde4fc2c2a680cc0ccf3084d3f4970e3603fa6bc5a180fcf1ca4241c0b8a1e7c607dc025016e297e2b0645de4ec2fc49851b9374f3ef99edd897c284a67b647ca8c96fcef935d541e9faf334043ea50b99fb8819ecce039227b624e52d8c20003b5a43808e4990da8e4398c4fc172b983351fd11a13dcd2aae5193d42d46e1b57c92e3e01d23fc968c729f3782d6c07dd5a17af2bda96735c12cc7d8023629fb0125e974425f7914690a7ed26508343ae58c8a439ebb6232049a194768d4594f5d65aca37a5686c2a86dd04bef35d74e0755937ac0ce3ebded1c00c8adabf030e5e4a5f44193b62fcf2f1bfa9dca2a25afaf2f1ec06c5d17ef3526d26d17af3e2f257ded24b177ba41c0ba64fd4fbd5042fbd5961a105e0e9f77f3db13c1b6c5bd9a9d04801a5c00a4c544218a21016c65bdff774a44b1d05256e0693e14d76605d67bd10048d3816caf31a6d10886c88c783538bd93e92bbc4484f3388b61adac4b92b911c76ebb1dd11b7b4e40be032bccff610068746f41e34a1fbfbfe5faf57c8a4331008e2c1cfd69f57e74379ac80eb6769f4ce4196795b835201ce4ec85ebcaf5eaaec242fe6695cbce1d53fde5b002e006bba8c8a1ee57da061ceed0d21bdd57ab0cab9e46bf3764d9a6c3ab19736d43b33f32eb955f9174ee4a54666e7f19cefeb49aac7a59b7370d9ae730b7bb4e08413222f0a66bfdac252fb61bcfa838f262312febfde8add8f6843f1d64ea3da42d4ef986498604d65737a44f5a099338520cdbdb65ce73b110dd4bcf8592a4adc3e0170b13404f99f0ec8f9fb225c1275a921f09369db165e9109dd5be472b9bc1901bfd882d264d9ed8d88b4c8f3b35f88b69e3e4b8ef5debb895be536a3af492d968dc1caf31879d672f70ad9869ea98335cf9e4a2760f955fd3e8099e4b2eb4269e354548f9de9921e50e49f3f5cbd63468b9db0cfdf17250c8f13535d4c0a1f21c87967cd798fe93b9b2960447401ef90db22c3adfba0f55f5585ad37040e8d6745184dd536d5a26edec365bd6edff1bcc616cdea3bfc8b9d98c0ef9a626054e361194cd05b2287612399f6d3d3be2f71555f14ad2893af6f60ab61adef663c3c2464ade671dd5ebc71935aad290573588fe6e11f48cd2b7db62e4b9932890d1b96e1b83eff70f026d199db75fb1e83197c937b672613c66ea131f485b4318e27c079b4018d4205484993bf50ce70275b244f2caf47cb47eb2a9ca59afbc78809a912eb56a4bb65cae4694f682c6329c690003a1c355f779b5857a60091b1c3685995a366cb43d753a704d3e59c5f5003c78feed877351e27334b3fdefe5907edd9eb25588a42248b9c4a93efa7cc63bad1e5900b95b70436c35eb85cc8251c4030fab9556920141cca24d6acd3122b92b7e868dc174bf071117958a4797fc90866aca685f1456fab397ae647ab9970348082bd74865bab7f248568db98ced7ed84e8360fa91afde3f23509e6b4caf948349ad9fb6a4efe0a0468302cae7a0f999195af1c19058669fc3b88b2780b9075dc180298498caeb7ba0cf8bd42eb36b1959d5ad3ca6fd1e85f76abd27ec5fb637ee38173ad7d86304d5708b6dc8817e099e77f5d43c1a70624cdb96e4e6103bb25e59eb51d894d1dc533a74005bb79cca35b66e10c61d06b5227fcb071457025d605a0862218ca252b871f8343ec231dbee15688aeb914c0f16ebabe6edb0a489b2bd10d4392c6f1863bb6a62181de7cef61997ab02f3bad0a893cc0cd8a99cd7b3f7773085f0929de36b5d124e3729140c375de9a2d0cd9a360cadf17b9e45b7f2adbdff9e75b743b62642ed67aa703b8ef33dcf51a50edc7dbab42d3d2b49badd2457a9f92847aa6a60ae2beae457a5fce1a9e485ecf907be22913893cd1350f20fc6c81c94be426eaf01864e813a03e4674491b61516bc95d8a77c15f03d0adfc4adc27f27a5ac4165ff6518eda1a5c408708f78a9e26b834179804a312148d4f75f21a77d78387139da40c0a6293c2a59d0162437d68504f189ed970c5abb9ffc6d8e1be2b0877c7f24b1dc273b1765bfc5ce6f4b8d99a96d5b1c92ee53a39f685b304313d909c1ba8130d20d51c824cec420b0315229df295f75b453a6c131afaae0c36d7c4fff70623638a4f7ded5eb7db58d95deb6249a29b171d8ce651556dee8037bf4ca74453a4a76aab7cc07ba44e55de57dbef8542c3851ea353fb8e259ee89bbecf9ce8d8bd6227afc0028afac48a7acd9b4e8cbe982eb1475917ad6be4cdca9cf6e7cddd971b2924f2bb730264801685d387485e41993c3fa0af9987e8b52c21688fd9a9595ad8d1b9f41e0457be18492aa09f69e64e2954d1ca3cc1d32b2915cd9cf6862ca79c80beb47347c4cceadf48a37b29b1d6de4e94717d60cdb4293fcf170bba388bddf7a9035a15d433f20fd697c3e4c8b8c5f590ab44aefdda94681407008ea48d03ff21e9bbb4ae7a9aa37c855fe3537c44106e8079f18c24d2584474bd4a99367660ce6f7e6d7c294961e174366e7babc569d5f80572a21a4bd7086629363e0c9ee2599c8b8863c96613ae6c32cc67ccafc66e1cce79654567ad08e62e9abc99e44d6a79ca4d8de15b7f8a763a4741676af0e1f3bd4e002c8fa1ebfbb3bd3a65ae68a80c230422f98f6e1e9837252e045eafd585ba389958297d59aea1e8e1f665fcbc5f7ff449996aa712dc0faf582cf3caf3dbae80594f9f07fc06de63d9d672d14d7ac4662b4a54f40d4aab2de766910be2fc7f6f679b5708790b5376498d3baf0463dca2f093b51bb7e9f3e7033ba0384af0174becc3bb477bc5e86959a12a5e8924adf0bffdf5e5b9c1cf24d232881ad5c05c5c0f50318ea83d8683339ca6a583c52198c00f7c1abbda282e7fd3b179297338ecf9c923a3a87a130dfc06164e9b4c1fe11d51b382643de44b30a6831dee119241d1b6f84f2484784fdf65e41f78c38e15fb4b00e45df1edc40e3467cdcda351a4c0a0185ac4649e91024377e1c331587a8586cc0a4dfe29e14004c3536d305f5dee0eeb8c2f216c1b8d27375b239f6458e08980badd6d82e9ee9e007578c0a3b48288d9ad0ec3c934a99a8c5741149af937dc82bdb545df26428b87fc935c05f1a4964a8408539f267e23de9bc498e2a4b0083cdb7c8e27de6252bfaf680a6d5b7ec1a6dac6d7d537334a95f1553324a0739414dbdb50445a767b0f589fd4c33b35905577ef5a53b0f097191f9cee4836a908748779941de2a78fe1bde0c2efd9f48cbf232ce101d9df93d3ed40d036ae7aedc3a5ff619abd1c159ca8d2dbda7de13b4ca62576c7f925c52925eae2d7500dc969fe14c0a335ff95a7df1d276a6f242765c781208d59edb5848d412b11638b27ce5a61b8209075976c2a6aae88f6e6d8704fe9e83b425dec4defeeb3cd311b8c5a818d51f917a8a4525361791d5c4fd5d70704d4b9fa9df1ea119882f400e682753a41931712c043c120a98f0fe786a600b47befefc9d64cc5bbe8a16c191490874e258760c9e4fd215bebf848e0b4d35521f53ec5f9308644b785171fc4cc3ff886e034bd833d59dbcacebdae8f00e43c151bcb24d1d226d1cc19ecf349361530a81ba3168af3df5536fbe52b3b93621f57959df298e5b4d3c14928d2ef7b9c977c7dda54242d17f8661978a62d94d565b00abc199790b9b25fbfd4a3ffc35c95ccafe35d9a138a2c24d17f06ae2cc376e822317f16fcbcd56e23f84ec135dc935e58c61b34cfbf5a36cb00350483b6bac786030e5c5045a6b61c9aba7dfaa4f7fb21897539863ee865ae061a77c0359915de3aacb3b5dc8cfe53c4d17b393c2b6bb23652f36390407922969d510cc97b99d1df4361530aef10707d7a021b2d9576b2d49ca88b3cc83ad1baa6d88ef8c81c08f8baaf515637b21ace9d5cc8fd9fe4ca6c3aa129caea7060791d566f4de8662b90f9e5d849cdadf9bd23cf6737b07ca105142663c30de27adcea11d64d433fe1ace84b0f6917c8b655f2a421602f07e0a7127e61ae9859c5e9f652ec82416fd2566f291f417ecdf99bf3231d02864e2e5a1cf34c13f59de9aa2760d8734bbda79576c62f566b8269990e9384a41c1634271acb4c7a8b768f276685c3a8c7f20872e56b683244b1af562c3e7dcf592a9915f44f886cc2ac5f679c07d5aa1fd69cf3a460f25c722073da336a310aa551062d92c7297002060072af2f3500b9310c239bedf45c5e985c2e0d60c7dd68522376dc7b560fb34d1b5089450c32ffcbff07b35a96bb6fe01259a06868d00af697f8bbb238d03d49570a109181c9576c1ea9d2ee02000cc23e63d6c93c6cf3050bbb15b6f73b09c25da62e5abd4c2bdb1110e1f25db39f04885595cd6a388c4726c8d4cdbad87d80d42fcaeae843e2e17f44c9aed25c8f6f9736c7ba1bbd3b839126de40a930024a65aacb872936e446114e706a868444cb140e53d976816983f3dd1d57eeca01eab8211b7aa8ae99d26e35c06ea4b226e0a6e52172a40e7f0df5f67759ae2ee026749ba10b8e33694c3e01a001526f9d75f6c419cdccece3ea3f78d69014e509c741214581034bbc7e2bbaf76db8421154abb2233117a1ffe2786b21424576e295c9baef262e80fa2edb69aff800b3ea436eb827e8adb73abc48d740b86c69d557b16e874038598b25f616afeb4f4a900be7dd0d38b5b6fb4259c51a3aaf4748d7a445f518485ed72b25c7df8ed0906b74bd29bd6a5724ac3a503c990f3697a5db484821f68718470810862728a80ce34599a41fc5bd8bb46dd845a4812ae1532c457ef4211d0e41835e5a6f030247614822571c930c727ba397e723d6b3aeba9244f054e331c82e65b74c9f6504c74b4301499a1a6f6269a3352aff57f88442d4eda42a82ebcf7776c5629f97d6160bffdd8282a40ce2e6375b161e4c22ee53bce7a45f4774aa827e2da657e1a1bc07445f0bbd770b7a5a25b1b469fd58715510dbf8d97af4e1b9459a20b08a8d3fa9d92feb32db95b22d36de0bc8b1c397b09970a6826392fd8392b2d790dcc1295888f42ac81ad213c7328b2324b28be7cc1f4fb8414a7785472f1dd3e11d66017b1756d1697be92490e15f056346d7e9126a1f35fd76cb016fe2841c8996a3507c4fffe7fc45026df10b03b86fb6cf26e8418926a030b5fa62748fbb728fa19dc2f8947468c1477750771e442e4a9d25b76d359211c05df788ade5b7824f8770b5dac0819737dec916ee59b28a49666ee8b7ca81386eec8049542f18a3207e51bdbc291470eeefecac385c096a | ||
51 | MD = b70acba01bd715f542859a4224d035eb177fe7b34d5447e099acd1716ba6d00f515bd02021b5b3015d736b04687544de | ||
52 | |||
53 | [L = 32] | ||
54 | |||
55 | Len = 16 | ||
56 | Msg = 43cd | ||
57 | MD = 7c5f9ed821a021ef1850dd4e0b179a656fbe27b104463720f467db32bbfab5a4 | ||
58 | |||
59 | Len = 104 | ||
60 | Msg = 5f75a437ce0698a7d8151c3fe0 | ||
61 | MD = 774782a9c3023dcef8b2cb83f7994324e3cca35323419b3914a9b6bc3ace5ce1 | ||
62 | |||
63 | Len = 352 | ||
64 | Msg = f88bac738d1e3e10f75e46e3fe026d7e423fdcf3d7e4028b33a291bb4aabca53f780fbf99e0346d610d4a38f | ||
65 | MD = f114f1a390bfc30f34652751f3a38e8bdc9597625e363689459b80082eb34009 | ||
66 | |||
67 | Len = 488 | ||
68 | Msg = 832e5b78a73a1012ee62e00621db7f4d248893007c6e5d6e0e689c6b291baeebc72df9cf10b289fe20e7fab80a2399271d0ac63766049da875eed56264 | ||
69 | MD = 7d00fe393c308eadb8c0a4f771d409e17c9a796e63b45fc8e84c0cb2bdb62532 | ||
70 | |||
71 | Len = 13976 | ||
72 | Msg = deab57cdeb41974037a9bef5e292894038264eb4d8993d4d1501e6ef9c68fb0f571f57b0925640925deae9a6317e3bc4d6cdd5a0833e52fb48baca16a9ba9b6c8ca469a0555763b54f04c87d4e41aa549258f30eefe5a52d2ba06657a8773b0842e094857b6d8911d6a0636280025e56356fade362b4bf4c875cc19be0c6644b447be0454dbf390eb966c03e10e9de3487b90d0825d327c12495e3c89ad09c9d591e55c91376fb14c2fde9f7461fb25450df1a65806b65f3caf4d5c81ebc6e664871fcf915b9578bb70ee6776acc62205888dce2baa4024941209e81b4b35f0eda1bdcbd9ab1d6db6140bda4c41776fe675d5c681da5852d50c246dda4ddf9fdd7c5fdfeec85ff6c883c78689c2977584406a1ddef977606c182d6c33561c39c071668a2515e5aa6f4aa1faa392aed95b82ab32b79a15e3b5a07551ab068455131b72493126470f26c30b852e4415e1d8b719b3803ecc336e4facbcc5d1908851f4f39b776bec8b6b9794d47e5965458858560eed5a0305e260240c0849d93a19787b0f8c795eb5ba32be573845256ae6d0b0a3336e42a1beac8bdde6d1b6e0b6207903d4b105f4af2ef89bd099ded870daea2f170e03bd5f6f4490e60bc222d4876e16d4c58aeea6e6c400dbb9e9f4b2b142f0fc9bdeaf4132ded38a4a8366e107cac7210945fa2df4b124be37ef76290e5b9758aa3bfe0091bb0448206323584c2f833e0edfbdc0c33075fc9647a3404ca490bfab94302a0679a1a42fe9fec6af0cd98038b09ffbecd2832b579b2294f6ae5b96328fdc0a0b9b3a32cba04fa8bae3389c3951173bdc17caaefe526aa386f98670b177683d0b804c5875fe9c7afa233ee66349c9fd1b60bb0becf5e1d887e67fd3baf34b4f90d94699d18d6bb9d77d4af358f31edc254de2d6c5fe3ec07425c633b18c1b9e3606b78b40b543e1fd31fb578cf58c45744fc073fbf3c7d7d607e815379a5fc565892d81560eab8fb5f1ae6771b998c592e6d288014f13ab283d53fcbfa66e31a9d107308402191fac2cf2b799c7dae91b93a7676898b8a6e516a86eac58ed8f6d8ed2fd4d38031e4a4466dc8798b90c48e6adb6b4391d47872443cfaffa542b4b132f6c3408f0081af8692aadb4c9bbd55053ea56d8b82998f6b4b41d331891acfe6af1bb0d6679989978368ea463743b514866d2d01fb9950e8990867bc14f1db1142254adeccf3da812949cd03cd1d569e9d0bab7ca7405cc21096e3cd4d007cbb9629372e98584b4c6b97ad0bc314e1ab6ac71184ee555c01973570ed9b115bed956f9e4e349083013098b1e483f0fe44d5e9849f38a2f7ae152b36a266ea1faf263ea8c706632ba8629602187379546fc6b82e57ededd6d074c15c771754710731e07c207899eb47e8d7c72ffd768c36257d373375ffa06f9b3f0af11417f9ff9f9b44e1f1f96ae8aaa429af88b14da1da81c7bb38a0fe9372ed6a9ac6fb5e9e56b82593d94c5192904450227bf040b7ce0904789f979845e112a1f995c849ec3f7e49bd975a474e8201630f40fc0d80e76019f110ae158cd0f8da96ea4561f24237d8e795ebf52368218bff3e9d5b040ecd2caef4ab1e7127e53bfa2b3b4fb74829f9993ac703192aedef79dd9ad24c2c976638b4575afbce22ecacc273ba43379ed55ceeb51838b0adb80585bd1b5f2707ee16b67a7232adf7163415b24b9ff9dc94b7197fdc89e2a90d2b9eccde45e965edd064dc0d1eadabe11b8ec3aad2742b5d3323ebf913a92817749090c20758f98aef2544d4c8b48874e8936d7ee492d5585675c214deeb74fd67c4d170ac5e0aeefa607c6e37abd4f8238e776fde3921afab75cbd8f392d3e88da057903ce2e140797f4a85737bd89455e6aa27c7535687b78cd0ea59848e006c8de9c9c0cbc7a9f5e977be850adc710503ce4ba7c7bd0b042297f518abec6c8ef451c33e030251f506cbc3744228b6bb4dab86877d9e6019a0ea9f39ed37557b3b5527c171da5f013e0d3c480a038cff2c087d6e5d41b17e6c8f90c334b5e2b9ccbe9d4efd99fba1f907d00a49b71b5a08aedb644fed24bcf04e71be67b03cd20d53ccef8f854f5e9f7f28c1e98a8a53496646713bebe15a93f1ea336e6e8a4e68de5dab0fe880bf983eec75d1c5027357f6669e098411e0bc3ea2293138f5b34425f78b6508b94d4c0cc32ee9afaa409a26e5f2a1fddcd6d5ff42a89755a58b08f243957a2e208e24b055f51992ab447bc06876eba169c545fa71b88a0fc15d1e0be9d334a1dd0c86f44bd149b42c07608a9a30d0b7e13574f8d862f2ac72b2ed38904d7cab194fdb9e4dcb615f5610b24e202a36866baccac01fadb575df11dd43e00a3b92fcdd8c7702ea49d951e7dad2a56c075730b4af1ceda2bcb2310256f28312579fad40ff471336ea6a44143edfcffc297258d48bd2ea47efab8f0dc00f1e6dba1a55009ed627b7 | ||
73 | MD = 6e5905b22cb95e48b73c5a885f5463f554d81257bd26301c4393d57fff1c8323 | ||
74 | |||
75 | Len = 48824 | ||
76 | Msg = 5223e2fece634a95e1e7c83ad4a11a0478f4a41572bd66c2d7902cf4f94404cd80b1f58fbcb8eeba3984fd759410c12f8ee922865f363f684df5a8787c87ceb3086fb8535157f7f39653dbf5c66ae7219253838ec77cf1c6db518225c5ba0a8212e5911236474b8820ddcb8111b87320adb82ff553986324aa2a21c37ce4a083c89ce9931290d4c1fea933e31d014d7507a28e83aa917ccae10bed1a490e77fe501b299f8e3b78e659407ce1934d5d68c7980800746f26ffa9794ef1d23f793bd2eab7fe524e213e58280f441ba48b40162305335b3a480c2afeac11c27f8d817792fd7805d4b61224eb52d35c0fbf471bcaede505fbc9398b216f43bfd69b1a669a61d44fd21faae410af58ff95e1c3ff1528de1aba93cef56bff4d714d8c4cc88a4ddcda52444ec1208d99ab3fd9fde98c1ee6437d8d138f62c5f782eb4660c5eb28564b5b0d46e3a2546009148f3d02b837c5284e9f508290270b97b9b29e84445a0b4df662d9711e6b73c11cebcb7120dc427034b1ccf57d8e4f5bbdb84d2e1d4bc3862a2b51931d3c9a7a5fd6ee5f4c7327c338abd011af638d730141b6eafe63469eff50f473262e9fdce636eff4c5663acb6075a4fdb00c8b8a8d3322e1700a5b3e7db90b36c1a94991b8f51657121b442db6f890e208f312466778d73bfaa8cc0ead4edd0776155f3eddf9abb1bbfc0c94421adce83d7ee94f99f61e1f25a55fb596f8b40ccedbaa8e5e2cf629496f5ca60bc4cf36d917da4e2b973eb57869dddc409dd66d5061f22642743fe843defa0b19dfb2f56425abeb234181267b5c0d2ab4268c538510feb191bbcd1631b0af6c7451cd4c641025cd8bde2d9ab6e6b948f97c1ee6f35098d553e8e9da9b4d437125046864633f109d6a558b38b270a7dd1785d44d248a863a91e3db5c0a1d7ec133decb65e81c3402c98ee329f660a092172bf6b1a02491895394ebc506882805a6c93e767c0e58a5af717d950a206c0f0055cb39ed88816a9fe3613d15f608e486ac08bfa67d462d24e6a0a37716d3fbdaeb9c0e951c1e847fb884ebc1cfe707dc6e7269eed1c44331d5957bc4ac9dfeaed4b157204a3080fafb9df8917b8d15aff9c49cdc739b8fdc26a546794991c183fa523d14797e051894f48b0d62c2b70834467ff9c993b82fc1152c1f5479ec6144c7e8fb10d1bce26bd1cdbeec4e95ee073f3bcc3c7367328e30543d371b27509a577f5c79f14d5f687ce62b82f856695af9f7dd350543ec763de75b593f1859e44c2ac01ba65f98743cfddd8a89a38115badcb51a0ff5655f830c0122af6a830aec13ae5eb89a93755b3a5a6eca233f21cb12db545a24a5334becb8fa32c3d7f5805faeaaeea85a551fc62c94807faa6474c0d74cae79b5d8ddae07498fcc5b8b4f394867112ef5fad1c9da66765ecbc7fc0f3269d29c9c38817c77778f2c19b5a3c705fde9d76a4eb86aed4a7369a832ad267312903462397f7b8fecfa8b195cc2316cd53e48c3371ed2ecaa3e484b8ecd2e22b1aee910c51ed5d71198936266f5a00655d82c089f49295feda0a2bcc1a54ec8adf565acc3a8b2d74c30eafbbd843c59e67f293f6d8296cf7b611f01b57dafec6e2d4d411a633918068c38ef47b72ceff1fae772891141c3bc496824509d78165c1e4cd4b4989321a8722643eed69950dc120fa8da3e53c3181f252d7c4cd2cedf8f086f788ee77a98ab5b019828aa02108f49ea4a51f457f7adfd2220d3e59d5f4a29194e8f5eac40ff80312ff6888ff6393c3fc0914b08c1b9990d247ad80a441558db1ee1203e07353dd99a885a7ff5d791af2548815dde0ca1f56f89d39ef6b93dbcd0cd54b854173903c12649587433f0425fbcbddfb66ebce3eb4800dfddfe7fc44d9b23a3916b1db68c187da4dd13ff0157352814b1a792de7fff855761abc6fb7b93b48525fa90fbe3a51dea974069f3f5fdea86387eccee13f58a8eeb8abc6a43fd30e9788c3bd9ae1751b30a82d420225b2abdb1bc121b9073380be16107188d20be54f2e9c658d5b443869ea0e991c496104086290b6edcc1b656adf94f0d42458750fbd8d88040c518ebbb644f4dc4f7c6971d8d60eee0272df7b51a3d5248b4b264fb22195ad891fb6ac994ae5c0bc6714ae0b0b9a484edc576638b78ee89b568195a8f33ed8362128c30f9b0c7804b3ce1355abc96b15aa55c1e16a9e9ec90d1f580e7cb412a7e85d8585bfb950acd4de5865214ce4db7f6314d81784c588c1482d5f28c5fb62e7dd7aa8237ce9396ccde3a616754414cdf7b5a958c1eb7f25a48c2781b4e0dba220f8c350d7b02ece252b94f5e2e766189c4ac1a8e67f00acacead402316196a9b0a673e24a33f18b7cb6be4a066d33e1c93abd8252feb1c8d9cff134ac0c0861150a463264e316172d0b8e7d6043f2bbf71bf97fa7f9070ca3a21b93853ec55ab67a96db884c2113bea0822a70ea46f9ae5501eb55ec74eaa3179fa96d7842092d9e023844ed96f3c9fc35bbc8ee953d677c636fdd578fd5507719e0c55702fed2eaf4f32b35ec29a7a515bbc8bf61f9baf89a77aeb8bc6f247706c41d398cae5ec80b76abc3a5380001aea500eb31b10160139d5a8e8f1a976dd2dde5ce439a29dba24d370536a14bb87cf201e088e5e3397b3b61477c6a41e22a98af53cc34bc8c55f15d7924e7e32fed4d3c3ddc2ac8eb1dfc438218c08c6a6a8eea888b208f6092dd9f9df49e7ede8bf11051afd23b0b983a81bcc8d00f7d1f2b27cb04c03aeee59c7df23a17775ae5984eda788eb2015680ac5610fb1380b4e7d7a9cda6178dca98690449f5551b66ad2826cab2b662f56903fc95b4611bc86f7a834a34ddc3be7bf142c8baa096abaa3cd51ad0c0b6d15e590eab9e50a4c60c91061f1ed6373d91974c1ad9d263110a0d43fd8b596396cafc0ae70b7ac24a59bba090a6994ec483db7ed4c572f723670a11c724e8ffa2497d8fccae37eaa1d14ac1537eaf80efbd2e597b2ffac97f2bc3cd2c4017f170544dfbb0d9109478fddf06ec0981542bc8107a725be25070d2cab4716f4edfad75fddd582ebd363c49e8efaed9a76ee51f22304eebc232a4f67f865b04f610a628fdb317116666785fe8ca30619a07c83cc449855202d687f162b12d93b63af6e7ddfb7223d4ab998a5f450523c1d521ab76f4aa113cc2967e04a38dae07c51c2d0f44fdc8605c3c53ccee91a2c73dade5dae021cbc87d5cd6e5fbefb65335827311fe1e91921ecd66b2055a6102d7a976308a80c44e6d47a67718c84f2112d65486a558f1f269b91d9f47e3e11d09c0c748625bad2718e3674898abdb19d3644bcdc9317c09a3ac02f514b2a57e6a706362e5f6e8fb16cc83daea0eec85fdc8c367d84c9230730291440a4b109f7034d510a3f70a22dd4fa69e8b65e5fdf87045d560eec71f4e59531c7711d4f8917a96e22ad07346d2f92a13fb4569fa6a075da6e1acad1eac1cb2ef19ab452264de2357c927c6dfae6598cbc821eaf3b8da754ce91a96c702c95b2c308bf3a550cbf4d22d417745b5f17d36608feb826b862747c59d26a0e8eb96547a1852f9fbd095f1c5d20721804941d462f3ee2f0876ee2825c8df24c4f00f0844e50588ac688127013df8eba3c971362dd255420649245e880212cb3d732fb82f866dda090040f28e09cf1c86eea5dc4fbfc373eb69745b4afd841ca8e172d4a8510e7698345fd4cab9ec2ca0453a274720bb2d2e5468bf0d0f85919dd762fe3df969e6c071285e25c2e2a49659b8a78289aee655965bfa3cbca9b292a19a855ec40293185354ff4da9451ccf98abfda07f1137e79bc89d688963081dec641a99656b040637402890f185edb28e7e6a2f65848a6af158f90eea440aa6246a2e6c31f5d220b9846aae2027afe5a7caad6dc16b56463367cd9e73bf22a1d6172145de4565ee369c55e3b99ccbef70fb080a3748340fbe8f6b95ba46e8b76de5a3c4bedc37c55ae24ad02267da26769a3a732badac2e0f3a5393028dd54d78701647582cd04c8310e9f1ff1b433125229547130e1737a1f33604f0d670ea7221097c3eb9c7fa4b8293d7b429af76191ea8e481dc1da31344537a09b33404d782eda1d6f5775500c1d8efc615778baf0905d9fcba1806ef986c40b1c6a72335104376b58266c36f5939a8b95123e8635c0c95e80aaeb97379b1179d6332dc07539b595ec32eebd3a336a1128f3cf2e2924db6d8504a516b62f26d012b7f75cab765c8374a3824da5a405746023b51894649ab422d636513ee809fa181d5b6fbc63351e37a1b14efc8f739e86ca78ae3e280f1c9e4824b2976ec4dd308ede6171a7474c7f530128089bbd75e10f9e57ee17408b4384f99f886a5f63a2320a9b90eb9bf692e1fc449171eae3bb1bb17a6ed937ea57af3c82db84e073b5306683e1d63705b9742a085fb802cf5a1639818417fc2223f476c2566351f4b3b17a822e11255f3c3412dd39190e200727bcd3f9799519ef792ec7c2b0b9d0e2dccf013d436dee63483c2ce83c15c00a76c4d894a60cb90366ecf9e61221ee8bdaec66d715159876d8305b35c81f96ab2cd8f81f4769e9a6e439c08c329036f5d2591ac42f2747bc0e77d4e566358a3271819b6003b290211b9b847ab70e906aed9f86cc38aae27e1098fdc3bd5d84e66c45292183f198bc329cad794aa4e430534511b7d9a75104061b409676a16c1146af0a286e2de8bf51c4a35193581a902bd3224cb9257c961989042538092af92644a63d6d6f6872a29aceca39341ad29dd22354812c4b7c7068b039ac9ca7e6358e662a28be001d4aa697ace540cc3ed3c97b98d8c5a6fd3543ae9a7962c9229b14b0b646229807747064be3e83191cf24092dd67f675638d9f6510486379f47f5eeda870a3187946819ec9ed05e7b325bfd0eed5c9a0f4a2063d63c1a8a0a309f586c94d4a68bbe860ae9599ce204c92cf9d92cb460ff99cff9e5a8b3824786360e1e1861e71158395faeaebe7aa2f61f76190f174aab9a313f0bf4f1befbbb22768b8c22719cf3fa9ec908b576fa4bbc084b1ee5b5a7eddc89b58b45ae7b421d38215aa6e49304323eb4e202655f3c8b16ebd6b03058e75a907ee63fcf6aad5eb96c1e5faea81b88b5eee525c4663af52877c0f759432913b9d48030903e7f9f70e851cd4e20bc56aaf36cb02293d992b38b583b8f0b25a08c3303d8af5b1b37f5127f7021b13934645ef3020e5caadc5e7326ed4ff56f797e26cb986b6512b0cc76f1d8e7be44aaa88e12cbc644f14a7feb979d2ab66907063c51e052d0f8b25d827377fecc5111be0d365e08d17f559e3134cb9db294f1cac03150f4232f853ec15ecde55fd1023b58e83934869796400088e9177e85a2227ee45addd049c1d6b03e5b29dd570496fdb2fde7d8cc74fbb5fe76266ebd90a3b4d57e6e6cb9f0bbdb7ca03ae955915768011c714c909a27ee20135927af55d4feaf2c345d029a54af942da6f85f2103345d059f66864e6b0578111e2ddd5a1cd8bbf4ae35b60747b93f53ec8ec64c10cf4149909b102a2b88712ff3e5ba3611cf96585a6b36fffb64b8c37a114d6b16a53879136eb0b5e003a5a068e3e8422a4fc8d7c77227cce64ebafcde2437166b62ccf486660a7a2ef37012ebacca26ecd5bdf363feeb06aee39050974c25d6a564594c67f56fcf7ed48b07fab4e25ccffe002bbe460325abafe37f23dd9c145b4667f146a1635e462330f02470b35c5a2519f1350c02b263201ec9026cfc57d3659373910e878f2b6c1c5be774df8e01e775d476956c257bd0ccdec17ee939c46e5653d5813eda752ba7bbb245a99a5db1ae55d19692074c2e5820df97c502a4bd1b12929e1be8e9ce6d802347c3e9c4202de6046436c05ab55b2fcb2c227adade6c2046d98102cfd0d859a91f8104eb9f6f155da2acf93df2405bf2c083eafd3ec41d60b810e0bdef6298b21193642a9c0c646bc6771a5c61a25604d96bdb727abd5a7ebe4ddb2a56a6ddece26d8007b26043ad44279c3c8ffb7e6ffb3cd4e10ea2780f509a8a9bc31f99a7e66201195f1543a0a020f754d9a665a29a896faf673df6811379579891374c71b2234fc61e95d4d46f15d44bdb4d7c3b3be3f46410ca46827b8cca976d8866e8ca33c4945d5c87b705588b78015b529843af0b75a7e1e871fd276c1e947d896b92e6181ab7e3ccc7077bb57fe85a6958667d3d7a790f6cde1cebb494c2912478a0eca2bfaad62492e9f1caaa0cc520da08c0d2d910cd44255f4c2ca0646dc89e789a1cf9a28e2f99315d33accb1639cbaf0c94181b85fef648bb4cc7f66dc65b8e90bf5f3b763e58520098febfe7e47bddc2d9cdd5e40dbf4ddb8d51f51bde2e57432266d248d13ed09e62f66794d188f9861c50ec41f0eee30f76f4ece250956733ee97036098db41991a4a3eb7816196c8e447db3a2913bcd992174a7bde1f42d57c764b47f5bc09533760c1ba74943a0dca291f2746bc1fcc573f9a22c72a5eca347b1679683fbc8f32b08d381baf67b7266b14b3ba46a04a3ee45881ac452f64df1bf17f70f4cf9fa4dfed9ae70184679184784a0451d2f5c19c02031e0e4957b4df68b4a069a6f6f6458f6d773924a1841ba664a55c2c3187dd33416cd410e56e4bf8d3671cf737bf67df2a4cc4dcc786872b9e2dc4009fea0e48a749353ac053d80e36357d24d468dd595bc823017c015d7450fe38149370c5decf13b00b6b0e0a2567ac08b45f7b0c8a7c89d227219d051d17a706ccbea49a42035cb327381568eae23b5e2a3b7e8beef6f260d24ab224827ca8ee9d640dd23eee94ed02c9e26abb3053cbfaeadbb1f365a24d8769d92240da842e0b361524020b5c9c22a2fd8602dc9600aaf02b35344309f6bb018a94d4cbc9639ab7430657c4046f0b25df517e31626abeedd58c2e19aa0ae1a43ed2bacad91dc04a2fdf9cc33cc420f4f04379e95988ab36731d5d5402d89fb47e826f4243bb206124364d63564a0872f8d2826eebd9046c7c6f2e7c951e49d4b22a7eec89da1fbed890d63ef15f26422185143c89da3ee269f83e1de11a7467822146042be92295a585e3a09e720ec522e1cbdcb41acf5ac45ee892677ba3ff670d71339a76ed98237be252ae21268e756f05ba0b094a1803f9da84a8a05d0ec9456cf565e1b548cae95eafa0fb01f091935e6eff2413bcb15f605f15270408216fb5b41ed83dfa1454c522375e35bdefe54275f109d0ab450636ac4d8e4d9e27f2d81a15b8cc5e98549254a1c9162918db3e399118f5864774a9d6a2347e1315753071eb1204c8bf5f52b1a0da37e484ebbe545fdfe6b031215678c3b83a19a24d7b661f626beb01eb82b384f02f42bcad4f40addd48db8a92b90d2297e6143702056123286617f86fbef4fea940f648867d790b8f803abc5f4e0e3f4226954c296afd96e287e21b7243d05e743161810da578096521805edd81f68a45500f6a3a1885cb1f45cbd399dde024df65072eb973c827fca13eeaa3f140842016f509aa9ab4603d2457c92cc9aef24950697a0044e3d7c483b8d8391886cd50dff8c2f16de3d6caa7f864c1b3874750781b2b78b545a94b4da0b0036433c6561f5cfea50eae9f5645302eef18238473606e9b9931880d0f6368fa9970d1ffbe59c4454bf97f4a5e8091801b53ee4a209e0642d83605836f69742071aaebd9d813b10f4ccac03851ee9f20cd1351f8e68554c9bc5f58ad19d474ca128edbf561d195e52ddf3c19bee3bb597ac2f92143bafc98bc09fbda6d18dd4ff2a93cd2ba17f54f75c32d3f141468c2baef4e53b6a340286dc2599bf7bb002aa86688e26f5b51a6aaf32e48ffd539d4f3f4bbf0cde2d20138151c82384f9ff29a634ab4e0103d93340bb9a7b0caa108bc7fdc88d7de14abb17e9efdad2b0f304f0bfcbabaeb1b9db75959dbf54930e67aed3a9c8309aa90506b6b9ed4f1d06c4ced19746e206e1e9b8879663bf56bf6c5c920ac5e09e6579b780cb63e1875ef0a731b726864b7ae5705a2d6d343a4a213a05928b7337a59f900fd04472382610e2a8d25383c9ab5804d609e79a88d70eaef3ea22d3aa9100fa2a6e98e97684ade9fe90d6bfc59dc9dec3d3d8db8990bc2123ba92e64253235e9b4d682e8aa04e23fb9bb6248a77c065e93249de829bb2fc5ea9e396461090222816bb29bca37bf86698fb995f62c50110cf418bbe2078a56c5f1ec9fdf3d0b09a719ac253b5bcd00932ae058b86611aff51c8ca8448978615854b69b0216a6eb8050ce199fd9a13aa0fd652570a1b187f61e6831b3a960521c3705da8c5e6c64c7b196ed4a49c2912d77b670b177c6458a7a49ecc1ffd8c57c0978d2a05cd1f1c7ac9514dd14b7b0933a52cefd40b6452ca0903df1f55828025c7e18109a6e0f2ab25724cad2d6f57cb5d894a6a508134731e9b9c61254f64990941f4faf97394b634b91860cc6ec346aa666600d323c849ea4c4a0ef55acbc56495ca004f3fca42ff0ffb11b0e1164c95ab89bf1db3d4f575ff334d4e0d7d50e0c54c422eac5ef78c5a3be95f2e18872540fccfb597211ec79d9d47b6cf41e385b9c2e92122167fe584210f63bf919c620d | ||
77 | MD = d7c901f0d92a868dced7e2659e90121108611dd7781325fc57e5c336c2279510 | ||
78 | |||
79 | [L = 28] | ||
80 | |||
81 | Len = 16 | ||
82 | Msg = 3dd2 | ||
83 | MD = b7399529fe614af98f9ecd73e45790406883cb22e3bdcdf28fadd033 | ||
84 | |||
85 | Len = 104 | ||
86 | Msg = 3d232201038fe7d846ac1bd4c6 | ||
87 | MD = d0aee5482c509540a4ea4b902bf42fc8df3af6de42fb14e903d1b2e4 | ||
88 | |||
89 | Len = 352 | ||
90 | Msg = 44c98cfc71f82215dadf494d68d1d6b92bb4eb81fa0fbf945a659d9aa2c2302b5c93fd3eedba31e479e29d36 | ||
91 | MD = 56c22e6066cd4c4d6415c5a225257e7f888b317ba4e98eadb72b4be0 | ||
92 | |||
93 | Len = 504 | ||
94 | Msg = 02a5c7b1b749d6d49bed302d9439f23ab83020bd4d573906f4190e74216ad33aceab775f71cd31092bba5cfa42f0845bd16fc1b8bed6434dedc92f80b395aa | ||
95 | MD = 33a84e66cf1ce6970c35807db25e05ca05809e53d4e34cda9bfc0045 | ||
96 | |||
97 | Len = 13976 | ||
98 | Msg = bd70deb2cafa75918308d703a6783fe9dc5e3d21de9bfeb6dbb1cd531ed5dafeec463a02abde302d4ae6ab3cdc2f0f94865e38339c88bde507ff71bbea6b30b9851cd8cf599e950b8c8e620c90adccba0033f934ca66ea0a936afdad575bb6235099beff1a632c9114a8045a0919fdc21083880eb05c0d8c489c7810aecef4a41766f67c37557e28a9db9a0d909c2b167ff7eba79693afd3ee3aeace38eb73a5a02a882cf89b123812cf2a0f6d5edd1d14362ce9c43257474def5cce3adbba8cb48e7af9a45e702a182dbf47e8869b3f99e953ba81628e502c60d4f8ffc551c31b3ad6ca85c52164839d5e9d493deee4d4b76604174bdb5655385d34ced2c1b09dd5a486e1f9ac501bc611f9d7aa5c748f496faecc14c6c18e1dfc6aee2991bd0207ea1701219955a751df43dbf66f57904675a0e9e6d7f9a0b8bb82a8f44951117ab2642d6671daf1e5d1639d48aff6a05781c2b5e8976653b0a164445872d393d30355acf0bb49bf2bed4265c9a3b786249afc7a438d706eadb6f90a7f93ad51bde6d2c8e6ff09dacb3dc67ba0d3030c54c8367e1e4280bb5903274191344610de61c3c770c6820a6cc9d826f7c743f88f13580ba23cfc00598fd733b5dd069bde7f10f2b8961c16b69761b0f308dd137f844a67f6054e065863f226141755b96645a291e3fa3fc853b2475fbe1d3b25ca22f4da4425dc95fc855e63d6699b311ebd5fec1c7753e6e81f747c808ec3f618f63eaeb1221075edff0532225c40ccadee304a8997c03920e7ce4e60e4df4d120611296786516dd4d9cdda2077ac52bce0fdf552e1ee89a0133f1f87a6f6f35f5c53958ed806465919a0a5fa42488bf29caf33a0dd469e13abae351d5c6fb1a800ee384da199c823c965d9d5457a3ef8292c4d9b142e3f1fb502da498eb44d95f8c85bcd6871bbdbf004bfdc09ab35758f5e8b6a0d0f366c3b255333c52c8fcd4ecb4536b5f6e72897649f3415443612d72c3436505249a344feeb04883f41f90ade40af119014b3c56fc108f1ab0a77087d9226665d416cd975e9e4605529c032e8926002a70924820c6c7e264a794b2a3beb63d69ae56e017294fad4d611cbd0d3847212a38f22d623eabe3b884a36464d8814286fff52c4dd366f6c2abfc2eb865e0dc9ec6e55ca9d81f1b8cc47e2629bb162e54655bf2a9e156ab0bafb4b8ce96858aeea6e6665607a3f268036f4890dad759486b15e3c9e791429ec8f11bae4ea7c490656fdb0551dcf0b0be017c08bc674bd97d9d701c3ac955e2941ba7d5f2ba122a6f0c1b164b1caf2d50df111fd4287e9e195d181f6f514d7dadbefdd4274edc234025b727680576046842a834b6ad89eccaff5c5209bb91d652357e3750d8bb0165572fb71d09fdfc60f6b1e5d868c67c0edead427e7aeb734e29b96e03ea174b6b1af523feacaf6bd745ceb1bdecec9251958b7f521182daddf62ff6c4f58977adeba81c616ff2e937ca4f16eb9c44e63f9e974709122083ae45524ff87d7a0cca33a90f09b660db0efeb393c61967de2564315827ef1cf42b71c0f822f471713c9d885a3c3281d7c95dbc96f1c6dde0af70ea11232b00a2d215ec8de8fcf84b6193b6ac9d46de660361aabed3371fa44a6f32107f3854262eac355f9ef98701f580b4649175cefc29950e7a0eec958f629999c4b0a98fd4bdaf5c0bd97c963b551f2220bd41ec00b8726836e949e818a49aa1ac5bf12c64fb9991111ce8be3e0cb9605f753dae1a4c84389416f17fb66cecba45d591b22d64e5a4edcde067a088d9ff7f5dbb9dbf324510000c55d50f480a640fb22da9b4862dd81080d61af9560b601edb5e3346263f5f193df97079a27e3f9876078b80ebdcdb17ca4c50aef0c8329c72a7f77584cd963e105eea9c28a2ad4e95c1d018e27d0e720ea59147f59ad796b80b6293da8a55ed47e8abdd37221db0a5eefff31688e2adc294654ab0fddf9c1ffafd4783f01eb539492cb35a77315d0ad19395f47b18298a7b353dcf5bab0b2f193ff73d99310478d2e5c4ff1c68a2493c138818edef73caec9977bd4eda6249c8933953e06d796b288f78b18c343ef561082fd03bf92b084afaaee741de3004abaf746350048294bc52450e31147173f2da13d6ffc5adc718e149f9df3702f414dd3ee88296ae8a0106b071b589e8696401da7993d58a9bf8e5bf417165498c96b4ff5fd2b45bbf88f551688425122a3737ca54b2992fdb4d60957a93097222c3cf4c45dabe18b9d6a69e6f27567d5adec489e4b6812c29a8fa52f1de642b7b0e749c16f54473ed5ca2fdf2199e885fed308fa62a3e0deb7e0b8e439e25b3e9f95d755fdcb7ebee9d73069dd57dd1cdc5145205882023b54f2c9dec6cced9e3f6d24e8cdbb8ef121b8f3eded574d81908e867af5ac82bfb8ed60848b4bfdc1d998bae3a9ca80c1c49601d11a40409c62b1536f01ca67 | ||
99 | MD = 60700d4ef068822d0fe6df450b4aa8e206b2790d6dcf973229a59889 | ||
100 | |||
101 | Len = 48824 | ||
102 | Msg = 5fd54472a44e4476d254c0940071ad42dc723354f76ba61f63fbb9df80d1ee56136f51b6982e66c1da83602fc08093506a9e2cf27cb92085ba5c627dd63f59f8850e91a1d86cb1d4ca38ad03160f3c584b128d9b21e935570e086d3815307ab8df396cfa0c100bf6cbfc0fd7a8258fa1a656bc178e02cfdc868540d8e5ad39dd46794a8bdc205e710555ee7421ca7475a4f3232e6a0cd55d4b5d4525f0bd7eb1e455931aeea6918b9fceb2a32706d31a6d7028a85e102f228417e2e7db68317ae155af70eda98c8dc1ecc32a62e294d92855354c1114c5735a3c81e551b63a81650107557f3237bf953989d17c65a0fafd2bb1e32c237f98f55389e8f8b0810e97e201914c487a68403c6d621a98ddc515780435564245d87ce462b8785def699f7f06ebfdf33dd1ed7dd5a3e781348298c7950a387bff7d1878731d7ac66ad9a6607f2c3a3b6843c2852a5e882a8d78ae9dce2a79d595cdf09626dfa6f1dba7d40ed21caa29e304e7dbd559a89bd1f07d84165dc259ef112dc6e2c5a3e82b1c50106983f6c4965c85073c5deddbe6323003d56abb0df590f69010981ab3407e43eeaa29c6156995c492c931fff1b686eda3741a0bfb9094747d1620b2580415d431ffd6c02245f6cb03e39f87e82834dcea59355b2ba663ce145d2514e15e2b2c60cf518ff510c6c3e2f16d2dc523832762ed8352a320462ddd4d6fe755350672038163d996b44ed3b85d64989291bdf39398cb996de785b9614ec5d4bd73efcfa37fd4470b17d6240b8e4c715759286b04c3d7d791e2689927c9f18320ff2e6bc7306c805e23a5de66eced5f1a630cb43dd46db515f837f6b824b99b86c10b6df7fcf22d97be05284edf0e0be597b3f9c63556db031339f79ac9e6c5f8a1cefdbb4b30f5bcd23c2a4dcf791cbfdd6460284c5af0621ab7c5571e40a87c87be459c85ec81d746930dea24f43bb11d6611ea83409d3bf4f987778d8eed1d5b246a2112ef78ef0252f9ae464810c13f02359441d289958b4766807d9a3be0054897d35b01830deec1151f9e3d42f92b80f4aeedd65c78c6e98afc562a3bcf6d72f238c6e94a38f2288ac7929a7a61c92875c1f115c0ed8d261a727f0794f17ceaa3dabc717478f6ce7f2e8b295f000241e154b4575bfac8483f6b62f9ef4e18f7d341a65faad5e2fc1ddaf2b09adebc155ff09e63d5aa5f95206e66c7f4ef2ae3aaf3ea7c93589efa8c552df8d203e0ea181c1703d7023b56e603f33b4adb9bf44f7af290d8081210f327a6c9b0785709346087fd090c42d2b8b2711b9a1a5173eb5e246320ee27867ad6c3eadc4407bada44561a12cf5d53bf0448308bb536a8a525eabc1410c3a34becee25fd6fda453251ec229b53751f2280e142c6b331daa659ab655b78cfb08bf18e40bb02b7f1650eb2dd4ba1707f0aafa219f21c29521581ce249e2e34f5656b0a04c00485079b040e13cbc038bb9f17f47cb8f908591b26bdc28538d8baffe4cc39b17d2ecffbb9698bc2b8b31b08424034c051b535e0cfdf07b7a0a54781e33ba739759991aeb72c0ed992cbe76eb8ec0ab12c182e8b049cbadd6e82e314f1bf15fef5ae95dc86bd64b8556766f8ff62c33492198e454e5ca59ea856d8e095c04da8045522abac865506096ee1cfa1082af08ca09b3533878ea3580b6c0c57a615e0ab768246b3eda96bb6caa01a2648068e21959f843d853e948588e8c0bfda364ef1f9fbd3235c27916562eb0214891eb55ae0e059f4bf7d1838b5942656c27899dec6d67b823a981d1e1e0aaff5323b0e3d69a7dddf9b12d7787ab763a3c7a2697ac65b655aefc4bae7e6444850ad2540d5193b378682c77a4dbf9aa22e517e68cedfd1ba32e3730ecaa2e3f6ae61a4f427d6e69071dd62a9bf6c860980c9d23ce1fa82a1937e6dc1ce3a2de096b680d23d89ee102912ac0bd769c1c02095678dbb00b4430428797cfb966b2f901480811e1b9cde358b6d499c9e93f0961f050465d7b0c70d4961e75a9fe40a24e36eaad27238231dae6d0a17f446c16bce7348e669be563649eba9f23be29adb8b10f462780a066ae573f74e51215a26097b02469c25180890e06acc53ab063c742e08d51359b0a39749b84b9f6be44f3ae3da8e5a2f340a8607d4eed08877d007928d332d6f49502bb5f416c46d866fc87477c58a22d3c5932a8d6298c1151daa032c84ad92f8f90b8053b5aa6f690d1bf682f314471cbf200f3d30959e07adc6488dd17b0be5279e727f3237b8b4b19b31a220dfe63882937f8d5ead677608c42a57217f2239614c521d94559290e3b0ed8055d5474e96564224f6ca6389b40a71337da11e1c307dead8e4eb43252cc2f1c49addb18781cf20acffd3db693b02e5c8ecc949b51b99005529e0149a13390615f5df6e0bcd68e1ca82b0173d25134dbf76dfe92daa085d3f6b1e4d18217df41b70c4c40101884c2886495f2ef8a473bf23cb47ab6533c93cb38c36c6dcf6837f1272fc91a6962b6e1386fb643e1f1d71fc75ab58d5800bf4081217cdce0c7ae9e3d25de543fc4444314f32067eeb147c08c55c5c8158ed11729837547f28a300eccc312260215f50e98c4e3d4170208a50a4a4def1243538f906df8476b0c46d3449be73866d463d422595300e160840daf8c906ae4aac13a64457853b0ea6d8c32f4efe3b48c0b1450250086d459648b0ab14fd3f341a4a803be77e56a811e7a26827eb0a1a9454f90bc6ece665904adaa3cdeb2c4847858fd1d79750e8cd45d8da9163784b8bd06629410502debfed5eca3cf8fef0fa6bdcef6efaaf35a1986d6fd68e0f436dca9442077a4818ebda4606a94a3c93fda46e7ef5ccfef656896a0d3d93566b02ed8c3f6174417cdcb99a415b0c6e9816d94e64b438c295b4bfd69e0d9ad52911de5509971b7370593160629b641d690eb2828bf363857983e3b9098fcd15e66448f786f196685d2ceaa251b17ad06dacd614d9fa78ce0a8b9c1c360b529d0bc1d17ba0b70ea8ac1b8d67f6e5770f0cbaee0b38109d26b09493060dc851f5fef121e83e30aab9c3efc2b8397e8362aefea1708f7ffa14d3656f7f7610f3a629bce14648a593250c6f309c02c6c552bb42984ac58db920dbc7d98f59295f37f3e9b99da55ef074ed65801b390366669b4c7aa1c483ffd23082793f9e5cbe30c34250f63fa3ea2cd097593dc67e8d27b7e4f07e73a9f7b33a5ef6962df1381a038d4f58fdbca9d71ccf640b917f631b75d4a2e8ba46c64a6223f99cee30f47c1a935dccc7f054fc39d3498c824e10cc3ee337e781a3971f0e98295aca611bde701c2359858914248f6bafc88232bbc27bd85883b00990bba7862fd7a7cbd4c86df049071fcd10d686613ec877758d83927cacc530bed9a596b5b21c6fb748c379d676de7e05719a867c9f934b5dad99ed97dcb4e70a9b6542ed5b2f086d9f56fc9752e788785ef8f7837a31e433438cf2f18f58be37fe8412f6d21a5c35000a5efb862926700079413f76ab2c3e79e20b516eba9d8c29897097bee55157936607cabaac41337ea4cc783c0809c875259f8020e16d5045fcc39ac796d11a82f25fcc9579bf0a010200f5745065175fdc15474ed514cc796672c59637c3c8f236cfc9c0978a3db1194680c58c27746090d76ca09f7c48ee4ee7e1d3cf0ea70dbbbd88e30e8814b57404dfd7c33727a0c84cb7bd468b0bcb3c89b526679c00fb0892d2a5e7a3d73698a3db53fd7d78460cdcf24ed22b5f39b8c00b3506541ae4a5b76fae29c1cd5b0f8c3ce142e0af7ae4efe3fa4c438a604bf4a9abb41e3fef1b9227a7dccc3f4d6026ca289b4b1366d9ed546abbbbd5677c8d582e79e2b544f18dc23809ab753313d84dd10fa3ed2f723f0b46277b8877d4f3e0665e88c50caf0f0708b746b736b00c8c83a7d18500384bd035996aebb7da8f09fd6af9b76fde7fbfc0ee854d7ec02950e76abd23ffb27a6ddf1772465016c79b98a61bd3940547b207b6507e32cb9761a5604f0f546834a8edac7ae06910045de218d761a4accea886188f947b57bd876491709028e2e24b075d6b022b51af1880ca16a8c65b7c69e51b2ad580ee058acc0606f0a3a9ea1cd4342bf4be602e941dc4bef1239bb9bccbc8098a6a17d63186c6fa75ec44b6e4fd38a3fe49c5eb995f0cb884e2f3ed6be02515fa605b98453ad935682c3bac6a2971bb68f4094cefeeaceda92dec803ccd3d346f8b40b48f8f489e118a17367801e85c79e9b3bb5d73ac44a8290cdbf83a154f2f125090d42e1a1cb72f5ebbd42da46c7a4d4b9fad9612a4c800de6467ceb74f831e1395dfbf5799a3429ba34754add4b34b5960a5fee8f752dae78450322a1ab3d7102b77e907fc1eec5355991e0c7d6c0866660e5436248edeb1a37c0e769a0764cfbb6354332d6e55103b9235c84eedaff918af3f0213c435c32ab409a4b5c7eed8ab6ca9e313dba459bcfa3ee92e7d669be0526856ac3c06a57fbecbba553a9cb4655a901d98af02b74098e478076655d325bd7639d73d7ae00c62fdc361a997ea4ff5b0eba33096b12f35cc7cc0eea62950b912b47c11b9fb386a47c4c15c0602d304b2541da889cff299a1fd415e7e25c70ee4cd83feea7e6a9c50c75d9b128458513d61ec5d0299ef8c090472fe0850f384938ed44d36f10cc2c1d31daee3f946a2fa18f9982a988fd6ac973b1569313ce3c8ff5746c4dd85a241f1e9dca0e904c091832ca028533a3e34c184edcc510bf22a27f530bdca3d057928a96f72dafc73a9aa6dbf2552598e468735cc5736c67a620e9455483e9cb2108045ad80569582ea93a53b491e528c8df336fb326ad74317bc1dfb8ec30a73af01a5dff3e437b7fe48ba5dbb3e8f01ae0c6fc28675a415f23a796bb6e0ef0efeb4b14cf20d4ad88ad1966da43a76b454dac8687bdd97b89b8f8eede91eb34ca4a0523ea65736ae39341fb32b9b716f25662a37382c16f3b9c346c84f03bef54acd6efb364c6401b07b3f7679e8e7f8c9b77b75e6e98b90f4df88460f1978d19744eecccb743a999aaedd00b5a94018e9d5a56bac9d5d55f6e93bad52e84aa7340cbbf98d56213d9dd3e1970867e3972dc98e61b3cff40b64ec49463ff79a41c82dbbcaa37a82b761f432849aa83a3d3c9a209e2207b87ae9ed9959ffced165fcb0d8873668c3cd8f18ba0f92f7acd2bf50416c22ce11692bf6132eb9f558dc789cf9776da94e48cf48607f19d9a11d5df4db11dbaa67a1d20e9f0c96f5956ee3f906e371c489efc88b0c1e56d881e7bf8dd5d6742622eb873e253dbe54f2e2e6d0e6136941de8c23e9a632727bb5f88c23170316c7aa0df28d8d07589dd6022828834f7ea9b4e5876a1704944aa3186dbf89e0e81767cfba03bfb38c55a9945209c4dfd88272c49d1745dce5ceb40f0a6713b5139dc2fb87a8a4888406d2610b7b910a9e5782ef0df719028d8e50a40a269dc9bee12157038522d06537bb31fc87d21af9ad4b2e7e127bbdb313e0a116010f65126cedadd4a122d15a71cbcccc346f55100e354b997154567fe3caccd50251d137c58fc3a2048dd5883b6af9248b51040c01a80c051b8a151a8878edf0304b5554746d6116b749221a1d0082ac925e6e140f0c3b6a180742ac8a50ce0e93e6399102f151d7c14000369ff52d0b537fdd51bec99e7271b1255c6fbc36d83408c417f6825a8e2a58b9054ab2c3ead69d97ea9947fec32d720653c123ecf51a9a3f0ed88743e3fb7b94aea59d0bf0219ee50825ef220554312cb907edb90e4d85f29e316ad57d3b90d859391fcfc63e6c0fd3ec27d4e1efd6e0b5ca8165cbd6af25ed8792d805f27fce308ca1d51335ed5d727558dafe05486a6f9149b8d3bc022026656714222830be582889e6800c0b170e48ebfd069e711210e4ac7acf07652a6f5051507de68aeffc9540cab5cdac84ceee46059ec23820c04b127266c0bf8df0d2b856be3377ab42592f495980baeddbeed3ba707a85dba64fe36941eefa8fd37204ec8c18df3852febd2b142b1c9a5cd0f9e424cd408ceb7788270899fd793db99ddb8f9ca8df550c513790d8bad37a1d1f4a62c4527bb64c677462c9b093582decea70c7bbe873095536728e7ce05d5cafb5d166a1f03055e918f787fb244c5857e3d7a1009bd37f30f165564a082c1510ed19bb1633811a76da70dac67641c2478c6b335f409ef54a2d0f370c9510d0aabae3cb998bd023778375cbf9cf5ef125afd584c11efbf40bb51839aacd3016e5e4d79f134245f952dbad617c78cb6f5712bd9c0c7e1303db5029640cf9b56e29329c3e6a9e0a2371aac1a437b9b1c4477ec9842aa80eaa22c5eac11b60c661de6ddbb088e844293ab8589c13d938765bbaa44301e4137148dd0257bd4c8c766c5d3bfe53671e9417cd1b52f622870ffd90f4e17b7a4ae1b5601a2edb032e353bca652fb565beea6fb0b2cdcadac71794c662677fb1dc81d116d94f5eced526b37c004b95284cb6aa2ac415754a1f14882595dcf4d3f1d905c6e8c12cf5a9d23d3ab55bdaf9f17d2f03f933e1bab89040753648c426b072b73aee8c2fc0d1c03fce2c656e20d4c96803fb2ef471b912267eecb4d6f342d3513894b94d77767823fe0c7438e51f21bcf16f0e98b94b23a10760271281cf843989824f7061bf834f93fd8d2090f70e939700dcb4d8964a19da39a9601a7e0ed9f55f567fc7d5682d55a9ba0e68861756bb549f2f17c10ff6bd2042a80477f89743d3d762f1dfaf230bb502eab6f4c46b26135ff3bef5faa179bdfbd288e3cadd3d88d8012706e19b7fcc6e9cc2699d3ba0e624e715599480d6b7dbc6eeea0d12a9236444b17285fc7794040dd40c2b2ef175f7f3641664fc9bb7ea6d7eb3489d504f8013d64a23aebcb5ce233405f5ade067dffff253f27e926431ad806703e8fab23656e0b7431916d8d4c72a7d831e3664e5f30839c76c8167b76f3b2dc75a6ef48df515e06ea54ca51de2fd9c5eeabb1610b7eef06a2f3167859cf82e1a5b76be8ed8beee2bba28c3b15af6890d7a37226834ec9f63306a0da11aff918753d8b83fe7220803c070db98195d6d18357233f5504a6e3bd6f30115d3987f93aa5d89aa0b8b577d1fed94da057a6f088233efc0f44f86798896eae9ad0b20c8c9cdd9d72a3f02213f6797800894b864cb44fed009440fa5b0197023929f9bad16f052cc2d87327788a68b9209f46fb4776b092d75713048b5453ccd699d19cafa8e9a93fdab0f0863711916efe3bd81ee71b8e0221e12e9ffe2f6ee1a4dc1a8de6e593480f3c05b3691e916a4a7ca51971eb2f0f693dd10f6b8468f8cf7bcce285938b5a0a76ef86acfa2990f88bdafdc39a065db17b845028ed2b7a9e331c44217de20440e406868f1eca818d0be20248c2948b8f4cb118b2e456e585949139270f57c54715f3297bf714aa7c5f72ed8ddf6a074703ffbf95e45bc81a02c42822c22d2b718f2de5e03d687a4b18d605ef5ae75f9d43c8cb4e77aaa0c0101d978120f29574b22f52783c667f7daab3e1f9cfacf2e68e94a24918e3fe2c4f061deeb64891b5217fe5908e7f389897751839982b7fb736fbfb1232684e93123611b7fc8fbeb74f8815b5ae13240051920f3b6ed34483ff673c467ed7f0a8fbf619796e485affbed0697415d2d0598ba34d5b9e44ffd12a5edc323883a2e28efe9baf860324f2d2016748503eac1888213926b0e0f0335a4b51820a2bd3b42d982ec6ce307b453b6385aed7a735a1e98479394147c40f01c532926e10e1b26a5b395bc150ec4b4daf5b1436bd0baa225583ffc9d9e9d8a354f60fded37b41c7c051daea04e689ab2d4e24d7d07c75c50ccfd6a527e024d1632246c6f40f06b86ffec0b29cf894b665d53d459226b93422d37a8da23587fe884dc3c0f2fb55dea296a9a5b9a0d101f186d9fa6288c912202547cdf958569d2cbf235740eed38d10b0025dbb6de31058e98780d22149c19d4bcaf06dd7353fd91cd1f47e47f45622e1472542be2f63f463d253617eafd4f2ad609f9020884905dd5c22fba53ccc619104b6c0203a7f6c8c26fc80ff6fceb8c0c51600c2e46b4b872e6d597511524545a76cb42278b519d911e6c1320e01682c551e204ccdf91290c52e0836167a5685cbb1af338eb794c10fac92950f3f7956acf28f1ca984e380bcff9876b0c71dc7ce4011d1d0f955da9ca885c6e7bb74c6194dadb0fb9146dd725c8a9574aaf3824b727c9be3fce59c35850b162c17d3013689fca858a0a51d81cf4f30d6a8705bbfe35ff03c34cc7c56aca32140d72c8e8121fc71353596b777b266d75b322c9a97fd2c5d4e2362f19c99de66da7bd9c495c03d9a15b28431a0c051e786fa80f5503a72519e6b419263d72d553d688349c0cf30918eba0622b953a0efce4415c29515c26ba15f00e548ef108afe3f8194aeb965e5e4be94f10df6c45ea5c133a8c3398d09fb80f950b83c1866a1637d2bcc195e05cc32a9233b244cc2b1d4930e66f032cb1163c37b3e58b576ab76de759569797fa9b8bb4fad66aaaa56f09c7a0ce4641d6799d7bb47cf684990ec1e08871458c211a353ccf1285e7429c7b8520180918f7 | ||
103 | MD = 85747c796a910421ecb364b4b4f0e68b49e9217944f6586eac4993ec | ||
104 | |||
105 | [L = 20] | ||
106 | |||
107 | Len = 16 | ||
108 | Msg = 8a61 | ||
109 | MD = 60bdeabf39efdf21ba9c0f94af6552d2ffe699e1 | ||
110 | |||
111 | Len = 104 | ||
112 | Msg = 37487aa02b03bdbc6bc62e7e26 | ||
113 | MD = f146072f92dc4a551721a10bf0b01564cc2b43df | ||
114 | |||
115 | Len = 352 | ||
116 | Msg = 6ecd002568bae3bf1873993041bfa292eb94e9ad092d8eb3585be82e8a20cb36a47a06e7a57d301268a4a533 | ||
117 | MD = b0a2d6033cf1d8ff120a605b745d736ee4aa06d2 | ||
118 | |||
119 | Len = 504 | ||
120 | Msg = f6dc1d2f6b8e126d99939664693d8709513f97d730074ec2794e536d94ede79c81f2b2ecbff3c2c26ca2d181ada2c60050997f3bb087ce48d956c18dedb227 | ||
121 | MD = 395dd2989edc854746e384f339f0808c515747be | ||
122 | |||
123 | Len = 13976 | ||
124 | Msg = 07a6372c863c7d7c6764e4f05addbbe161762735dfd2d23bf268e2d603cd28de9c369ac379390473e1d3fa7e37af1178cca54fa0f782dfbe68070952b93462ea46c640d43ffe71f5fba42df98f4c48ada0d8aca8753e0731508bc15dff283178ae5c10a6ff132eca5dde63a78d3ac94685152897828eb25a55fdf140fd33fd4e7b03f283e201a1baae8986d25603fb0b2566aab345fb48031d648144dddc2e3556c0ceb1104f348d96ae7dc0152e45c625d21b46e70c31f250c858aec4ab2cf5e79d8c79b0854e0abf5330b9f044113d306161968f4ad6f0973160c9dc296056d5a11523ea2b56fbce8387070fccc639ec1c65ec663b9dc49aa880dc4ddd3020c9d44ff7e8cab6266e436af19b4ecb82010a0f8f9469ef380034a02e3f50051a6a3f233dcfe9d553459dc1bebc538ae0183448c9405c351271dea808d908480e61e9793cca111b4cfb9874b799626a1bd9a0f6e0929ad51b97ad81b2438f5fc255db3a3dfec9f0d8393c6b245b03d3faeb58021db3ad391b17a91174a66db4feef1b4c889699bcbea7928f4d29be2d47f76455c8cb1dc7da9cda41962a28ad8cd7b39965b809e7c7eca1c6792c1ce1c8a4cad6290170e91fcc49fa5ff64ab433b4aa081c8da2d9bbb072f9f18ca455469b946c877e3006b34ffd2219335b30ba2e0980f43cebfb629d0b11fe70dff28883ca012c6ae4855fcefea20a08e189eaeed7eb36ed6db3835976f4e60053205805727c5eec15d0e9f155637a9e66268b9c1c302bcaae6ae88cbb8cf1668a487cc996c4662c4a4e195f094cb31c717165e0e13718f8388957dfe0bf69c70cd0bd763dc38c530b67b9c12244fcab8bd13f602de848a2937699f9ef77944e5f22e3b470601789e1838fbea9359c733aaee2c7082b02ee459b7684ef9bbc200da4b62d368351f5520a65ffa506dc9b097117bb7ae88d04d85fb525e91327689ec0fe86971480c0e864012b1e9f044c7d80a4e48c07320dd4292086e4c71d4c98dd826a9bfced112bfa2beb1ce85cad204451ec45703931bf637d4fe89fe8f485620b7f4b21e011a232ade7a8c92be77925e878ae0bea9723749528fe83cf89ecb9616dae6ca0e8d5754ec6c92abb21108c2f33cdc18c6887c430b72c5b193356494cddccc577bd4c2cd53188f352846edff0c2ac7869cb74bb16a77c0f0f194a7a9477ae15abb890bd0bcfeb0c39381a87f1d05319c7e971c10e9ef687f96450b400e25b4285032892b849fd5db8649cedfb03c88defea063ee144a1ab1f3bf05f59c7db364dc39c11a446c3ce16307d78d50315ba29f5bb9a57438564c8c7b3e367cd37d74b2375a4966f47489dc5448f4979428abd32193d3840aa983d3020a9f29d760fc7493ab2576c90b1934b799c1d0d55e4f2caa78f4ce61930c79dc017c2dea0c5085d73a3b0e4a6f341e9a5061a6658af11e5edf95bdad915ac3619969e39bee15788a8de667f92f4efc84f35082d52d562aa74e12cc7f22d3425b58f5056d74afcf162cd44e65b9ee510ff91af094c3d2d42c3b088536d62a98f1c689edcf3ea3fc228d711c109d76ae83d82d6a34dcfbad563cf3726519b519fd48b51741aa86720836494b7a589c778927047a25d73508adaa401e9a6c0767a675e31c5556cbe35fadc9671359b45e985c3c8af84113989b299ae4474b85e4b5d4b0578ab1e8a2915a8df97c4f52a639fe32272cb91bbfb721505dec46d51383cb8973425a714245c2e37d0577fbe0d66381d9239db1f08a380cf609dc699698e0fada2caeda44d58d766c4f8214b10642b80b8d7d8add7cc41d47108ab7d07dab71069a2d982cc900b331caec317942122158bac6eac9175c2dcba0c04443aa9188832b553f5ca8c336880824d6bc02486a2b4c086665d276aafe3b1b93729829adca50c44466fd5b5cb977aa78fbcf5c0f0da1b09216468a11493ffb39efdeda5d669ae92bee2f2fb250aa1b9cbb11c36c7a6c6dd26cdc3cfd572ffd8c1dd72a13c27a327a34c6b6b3d80fc6c67c72152eec0c8ecbdc1bd5cb829b811e7f29af6d786f4e93dd4c96fdda295a6aa258d7b2fcf291c2d68e0b1866032475964ec0c6f2fa8c2d6a3936ecb187350def4e818507bf157c0e9b33406be7660605af14cccc9c799b4e051d0d0899e53495bb8931a6e2984bc6dbe4e02ec8b4642fc2f1cb5fd5a5520b48cfcb49e1f9533838753554dd98b6a1b8a67409279df477330e5f37367e06247ca5c3ffefd00e693dcc0c9c30754121c9ee88a574915b9e77c104fd2f921c2c096573951407ba9b440423d76bdc6fc978237a6e302cede7f99038ec31500884775556941f1edc30e3a417b0e02cb6fb5bfbe5cdfacf4006411287bedc565fb06f1be987416407dc852254934df4ab59edce476f3506e65be6ce6ddf91038642291fb8e92ba5b1f0b105670905a2c14796110bac6f52455b430a47b8eff61 | ||
125 | MD = 1adccf11e5b7ce2a3ddf71e920138c8647ad699c | ||
126 | |||
127 | Len = 48824 | ||
128 | Msg = cd8490c93613bdf1f284b94b330f6d6f45a39c651d2a160b340e2eb696fc6d1c35e88872845190d141c669de92a97daa5433b1d7b0b899fdef2ce74b8fe72a7296a5b5be26d1dc86520367c730c7400c2fa06f91ab4c48a7bf4ae35a5b9acd5296c4fdf7451b0ad9cc439b4e34f11e5d7ef2bdda376f8dd34d6f092b219dc085dd4c4a6308b8808f588eedbbc7af7f64e83182fc7ca7cf4741a341060a7969d31445834c982fa8739ded4555108acbea1666a83da17f77cc42ee73323eb53203e3b790f81c08e94c44678b6538096ab7b09916e6cf7ceb2af85987f8e4d982dff1ab59b0bdccaae1f405a73366b5c5935dd0b43e2d2894290ceb66a0246dc02de728c5bba30255fb56ce8107c3144246c5156a8fe40ada9126adf67227fa56b66c37be63f532516211ca012977b04a97916f201f1baa2629eda520b51508ab4229df2ceedce406dece0110e0a911464f69e7be38fb91deba0addcdb3161d2799c628f5a57fa1dc37357c947681bd9c36f4832c20ac466c0c245de3b250c33282ea1a02d007f03b34ed427631283eb614db4d521f555136e7e42b4cfbee8134c63dbe3bb79b5a8b9f9f5b9f5ac61cfab1c54d197f1e3ba613f251eed616df952d691b88a16466343ef2d0f63882ddd2d55b8a6786308b2257f5d7b38af166bd7f1339d2d8899c9eda8fa86215850ba547450c267eb3c9147d96c38161a69d1584e521ffa23384313a1debcd37f72ddad02adb3cadce7ee34b7c1f42a15d0d030487daf9488aa7562845a11ee7ffccdb38b300935caa31f78a4ff3dd93403cf0c6a16ca611b58c736aafd33d6dc56f0f47878211d26f6ab801b9453a7f74b44593dae0f047ddbbf2c902891111729edec44f69a05944b18e7a601f41ad24fd6833da3dbe3029bd390de7c9841b2ee2b079b2bd2737518fe1bbec88da64769dc36e4a8bf716c219b2fe059d7dd220c1ed2c59878db5bf8b198e0689edee921ebc0cd2d3853fcf57c363050ce58071c5fda6ebcfbc1bb62e9eb956286291a108bdd4191c4ff47900d6068e1ea26b487649af119b9bb15dfed804836f2196cbe12d8fc86e3d7ce89b52ad49dc9ddbce5b370f73f512bedd853039366612453733740586d1372143b09f21dd4dbe1a2bfc308db8e4098c5e4b0c1e16141ee50e85fafefc4e2529b3c7252af37aee6f86e19df28871686107d7d57dcc812bc077602642d2ecefdd5f694b8f336913210793e4068da2178600b1f41cffb5221c9b4b6298afb47e85701d7b1a44241679d8996f916c81ff437261cfc358b9ec42a2ce16ca3bacb8690d6c1d91cfb3e0bf1e7ba45bd01606df856fd03c7e946f7ab371a89e1fde86d05fdd97bd7b1c583b04c2ed2b5f6815a460645e4e1b4e950bf6bd81dd0352d1048df85266f1696534aff5b1cbc17f15d82cc8e0c0d4f0453f9439094f8e0f7f4bc045b654d9a2f1f44a9c57019f63ecc41021c05b5380675cb56ea8bb691d79ee204d2c4edacde3c1fb3f4996a11d84b035f965e74009e2ab80e2c7ea3c84a834d4971a1e9cf423e4ea67ee526eb3c3e4c2d7372c4290a0741e1fcca5ae4cf36705abe98ac81e98a5419baefcaf3093a7e0449ef1021f88ffb7ad21b2677e41cdda12025b06542c4b2564f15e0b99db43b7c7020028bd829372122cd910227cb07c53cb58fd9dc620c0491f3e2bf883fe6ee8cb1f5b73767977d857e4513e8b5612f6ae4b56014e6a3ad2a065b65472212e2f611743484cfaef860999d1dc5608c58412fab888ad72bb87dd9b55b692f31e252daf8944ec5c02a5a9c23903c50dbd845f2fcc3bc9806af13ca7b025cabe675195b1d56f3fe7d7bca12530bcc0af217efcb03a218bdb6f9726536ea902c8303b02e3ced22be59753588b5f0e2f3419fa5345a942dbcdf3010465384a225ba26cdd0f1d74999c69f336bb6d01fae5cf81cbb8c1a7a29c1eb83ca6b51113bde56b8cfb6a5d72557622a37f039d090a689accd02b57c691174338de8e05bb3620c079705c969c58e56b079dc9eb44eb0fcebe548f5a31f4072a5ed56a2f03107bf40a359b2601eddf53cade66f294cfeaa40a0d94b9c90d15f61852f295d3911f8ea914d015885c8c64540a83badf0021a416c3e37b78236a2ecd1fce4114033416bdd3a36c18ec13250ee9c74c0fc4dd564b3d24a825802d5ae402a53bacace115ae3bbb329be79d1e5e42dbaf0a6446431145fe49b86a8703c7c41f8985d54f12e314c16ff89351d8addf66ebba2783f2d1a11965182aa0b0dd2de53586c5a695c6265c2b173958da648611090557bdebf11a1e042f089fe98e049f4796c60d26be38356fe020d9ace9008410d53a1bb7db78b52ee44bac364213f5c59f1eac4e3314f3423b92fdd7a6156608111ac6ddf58385ec1f3df12061208db98816ac948d803fad10d5ece2018c60faa13de5e5a9033745c824932e53f4122a39f635813545c1b74732cd55642f19ed6deca1585ebf7242c849bde981572a2199066e9c912b2068c8f1c8b936c43ae95c6e22bd7b80dfea05f495d751107da5928e806d0af905c87b5a0795df146af6580d8f9c6a0e2645686d43822ce9b4be0bd5937c097917e048b5af71c7e7521d490f107e9231ee5bd9fbf0727ba87774ed24cd52f471ffb71849ebd55605996515bdcfe95bb1df3541e7c42da4166dd01ec3597634aa6455d15fe14af435e8d7a55ff1682d55a2da867ae63d11fb3fd987fa5d7032ecefc35d3fb9570940e779e13da18070e6df5292f97f2a281f9598101102c955fe4808a2319c85fdef3d55b19e05bb8c2d3da64bafb67a53491513a24f6f0804aa162c8a7db25b38089373fecc45a0eaef65dd9be3b4b7f9436a5423fdcdb5a9b60138fc6a2261225390d9ae0d8ab7f0f7ffff69dca06881d33a637d634358abebb333df41151f239add91abaafc89070cb2159ce3a31655c22e4696c9fa7a7211d1251d4bb21ea4a321a3dbebc29d97f526251e40e548dcd7ed07587719a266f006179dcd22e50b3705152817057b097b043ad63b8d867edc20aea9b4c959ef4ff70f47128cfcc21e31f17978ecacc366f459ac1cc459a3976e4173ca322675f84f18036119ec2f204c3fb554a0b72f7e9d8c882ab147b3d280ca9dff7b9160b1b437b901f03cbc05fe05c6f44824b48aa8da52ae7dda1653fd500f9ccd221843cf76513b3b74d094f14d93a00d7cb954bc4cf2f04f9a35e38edcb1e84f62057647dcb3571f1dd296ca1e049f1746a8a282e85138500e7649db756b2d2ad88f11c471c89dc6be2cd43481013b8d0ae83da2b855cea7be424f8b2325b1850d1fdef03e765458df4513d57c72ba9751e1edc3c4e7f97e3202bb46eec7be89871ba3704aa6c6fc08851e551a3f655fa1fb798d12f003faf31c56b6df399a5dd0ed29ef9e4139dbc254bc5d6051840a859eabaaad56324588fae881fd638d2b70fb3813402df61d941ab495588e5fc3823249bf9a03cf877902394f512de118edaf98843a5445e9073fcfa409df3db0221f1c77e2dd21e74f9e10c9e180dc4ed17010eb949c6d67a22bd5337b2c68f9eccdec778ece728e91353696b742c8f5a3a569f054efb8c1ed478ee9b75e26c768a5816aa6bd08a4c72e745fdb5deb34ecb86b3a84346c1c70f9c16fc45bc0421f0da2f630912d5079f390cc53b78e343310de722b53d2a3b4aa386caa0d7e91986e19c3363426ba30eb5284293af81d00158a3f5233327b40c3b989725ba7dd5b31ac7abf8d3e0b737e843065cd7316dc2f374a00bed4cf9caa0d6e232c854df1bc24c3d484bc6bcb14ec770d5745474dc6ac3b3ddbffc551c9fcc2c56a5e0ae17948457c01e701bf1554022bc2b7d9dd42b2b91172fd85e6874d2d61fc7b3bb3cee2a9bfec09f6d7e98279c6f511f4140b116c856c1438e34bca59fdca2409f025b896a52d68719bf93e82e7d89bbf798991fda0af8d06d17f39eba4bca09c1fe594b537ad4c9b94ab52c895539d639425f9146b24b016368a638e5bba391bc8763cae7c52ff9c496884f1d84e5e08ed451358ecb3c4919dd410e82cac35ae744078287c05c89b42999ea6b8b127d40d53a5722d45139e8bc507a11e7add7fa9ab12cc40afeec008a4668e3e6440f27bb5780936c0e3668ac51262390c79b3f21fd041cf36ba3522f3a552714ff188bfd554c60d0e7d11213cf7d3864a5175d4047c2f3284741f18ec22995a5b82bf62190151bc1529c6d9927f9b0c1dacebd9c2dc406f7f64a973f9a70cff6e3abeebeb46514bbf2ead382f7262d46bd43d88c1b91a9011d1f8ba81fa536a7162aee2b2ec6fc0f2d6efc87b98d2e41e0f946969da659c21053775ece415a34d42b6cfd5bc52259867b411dfb991461ca618052309ca9c96468c2da12dfab0e822ff3bbe7ba281982a239ac19c47024fe1f0e3550cf0975add1f680a9dac9b2c4ab0aed4f409ddda6765eb8a0a9d1e9d07458c69ac8195541219b18efcd06c0001f2ae7fee2d404666a18ca3cb3aa4f0623e86c5b1229f6c2ca28d951111294b91edc52730b6b2c46e000672a7c89b2f38045bd3e37dbb8a75e18687a514dcf740c87a34834d3c3cc8aadf6166ec0c42d2be92f90a3af49633ff23cd80848ceb57ac550eaf9ae496bdc6a2d7cf50fe107895b4a1ed014f78af24eccd6a07420f1dc0df1e7c44b4ba937dd43cab9c798371b148325578d61931766af02b45054bdc2d9fcab2f4b49092f6fff7c27886820739d6140a4a905f0020249e8ae8dd87da1a1e7b1851eb01045aaa72dc8a2bf68055e7aed41d85336648a3405195d2ab61b0e29a770461f32fd05e14c17d72c5252f026a7b9abe7ea9176d3c46f6ed9fb716758d97b41e4f5d81a24538f763d83eecafafc668422612b40cfc32b3354b24755fbe400a2bfed494fe6d0ba0051713b776e67e2f1915e94708e6dc74b398f2f526933aad8fe7dc32faf40022606aebb6e0756b994c3176fae7640ee06d6c67bd54764c4752f1bf831f43e0227cba101174c5554ce26400f333dd8e9f6db1cdf670ce407d7d06c3aef4c0724b62edc8f1ba3e04f0e394d15a73b9255abb4d6ac70303dcf9160d32dc02d4804219ed5c7e3b48402e58ab2f58305f9bb95d2a8759947de96328ed5234cfe7d0b2a9a014df7e4cd0ae48906315f139b8635d2e6bd4aba32e62b8906cdfe5622c411bf0373d0cb07d17bb2bb5b83eae4401c243605fd1df759fd0ddc704ccab5a9776c40fbf6bde0f11b9646c699f26063a9550ac228c9884c277bcadcc0a2c225dc203e28e253c4e464b23d2529d09c7b7dd3c984667372472b615645f294c4e3b0797f9d1c234015b78502d98bfc04f1fa2f16cf3e7221d5794d035e4b172a4d84e679cb1c82df2fb49d3c6668eb1661bed56705096c2371a19d668832808eedd9e5b1256c18fe7ccc494e5e29145d453c553ec86fb7f3a634d0d45661875f2f1005ba5e734c1a976f37cd23450e4606e32d027bc9ec2edd9395e14b2082179bd7b4f9b8caa2d00a2de71d48553f7d4153cb56a1b08f11925e4b11c9281744ae9171f3d6faa3ab3f88c5c34fd23e4f6efeceafdcbc07686ef56efa62c0ad62f1cdcb4d3b5bc508c1f05263bc347158fa5495828f34eb7fcde98fefaa82bafeefed3f4a58968d751c051b52e0047f066de5be533bc3b1e439ab1c8602f6c67503803c8fa113737cb8279f358dbacdf45432b7a654d0e1122cca93420e956661d7275181c75b0d9c20e84c7007dfc49f27bc00007cf4ffa631c892981fd70141d532fcd51de5c23fe0b7a186d0dc296362f235d61698740cc315891cc9342da17843bcde274c17e462263d0e8b4832dd9075a7bbb443d4b26b41e534ad5551ed5ada102175e695363fb48d6b99ac978a3aa6f405d87f983384ce35740e930491d75675337c5dc081e3d301228e61bde5cc169968e5b4350cca2b085f9f75cc4b88497a78cd0a0073d90246c7dc102c7cbf3516498e8a41aa85d8cc5bc285ff66e8338e85ca83fb6889e2bccff52059bb9e92e92c155a349952680ffd0a3c346061a53fdf074417fc90c4d1af7c2acc3ee4b080752cbc9455ba5931b7e910f1e4af0efce905d2cc9c685923ead387fa532c0e8ad92719c76c281cd010e1acce500ae1443838b8afb48af032069dd07aa4df0d56bcb70a64592633699c8658102f1fbca441325e27f1732a7a973d8cb3a0684d72943ef6f1892f2d7ccf39bb6dfe5801ab98653bdbcfbb787bf125253be2624f6cf44177d588bd7b780d9e3f4e3a4e50b8a253fa21abce6a94b9073289c76773b46140f5a6e46b9de9ec066c176f5d1a69f380e1901216617363362d13ebb26ad74fb008ec08841550ff14ca800a1ecf2e007ebaad9f4e0d9664448d60ac0d8544243129fb81c1723b9b4bc2ee971dff736d9fcde0afbfbf5c50a4cc06a4c363998326c17bdc9e2508651dedd9a2a52bd87f8693cfcff60753acf9716c526e8635f12377e36564ae55d0fdb3c7997ec4dbdaa5b4d18c7b660acd95060831795da7d299a5a8d8cf9e92537dbd3ef7f56aebe38fa97c41da6bf0572a0270be7e5a7dcc0be3529339464c811052b65a938e874ea6da469c7d8992ce0aff1c75e82d1621ecb967213c65f2de582cb41de3804c507ddfc708ef3f6096ba4491e431160f98de806d0f334e03cfb7a3bece601099bd971253f3aa0df845da8b478603d5d88533d0cab9c89f2dd9a1404cf8939ffdda652a94093865a85fce2bc3d7babcff7b9f3306bd76b9af80c78ad518f89ee73b7a710da604e72f4927be8d65d06be2e0732fa786a83e27597cfbed9bf98df445499e0746b9f2cb9659ac0a9cef433148521f33b1d78d13c8441c0d1e20fd93ac450a3787a2292bcbd68cd1f961d34937be9a21abaf26f361bf53aa0c095e53c51f3e04d567eabe6e40d96a17c2bcc9230b18f7e079bc549a314b4ae21d30a3341aa205bc75c7f1d21b0a49549c300faeda243d0ce18da5e66c5b663cd705005dd9fea0a9564174abb797d64c58fdab1fae44576d514b75eaa31c9278b15bf9b6df7c6c2873d7a56fb91ab77b83761a09f9e1ddae535622fb87f7462256a60dd39dd3ceb6690b0272920b635ea639daf24f95462c523e5bbd8d8407c61163ab38877d5edfa04c2a78d4d240523ba97c7d01c71783f8748e85164b4dd08c25506a4ed18300b42b7bc6e417f512ae456ceec2ffc83190991a06d4a58ede215babcd3688e1d61f1975016244e80c88ae2aec05c7eeb1c50caca72b3b415b6b870bf5e10bd1ac3ba6b4acb1d1afac554444d94c97e171005fa4ea9c651bb4e527ff58d0c2f90fb453a92d6546a26e9e98395b09e8471bdcf2a145aacb649708cf048a7856ce8cf390c107ff2c66efbf2a76c5b041860ea576103cd8c6b25e50eca9ff6a2fa88083fe9ac0d1fb639c516b9bcdf23c34c6145a705498ff9b9747f15e1c08c63da6efeda4eca02c3f00dfec06c82220c9de840040118dde76be788daf84e6a2f44c81fe6defcc474f99c51c4648d297cbc48f081e0809dbda505d020cbe865e430e0491644ec8c52bd3ab8ce8c4862990f49fe2588caf804ce9500ef42d5a50c057c257168e283e4a4aedbe4ccfaf3eeffb212f9e23d15434d60bf4f455f512e2b655aff3225d1b217c261110cec0400f54dd303d6231d028c2eb649bccc91d30a6391c88bff9d447c3cf35a3467be5957e0ea4d4dc237c9f2c68ce48f658f820a3d72d559b60f233ce538c92cb148808e34fedf2d648c21e7f2ea29a77270c393bda42d869351d6c085d965dc12cbfd0311b8bf604f4391d378781eea3b5f1e0da9d0d8f8de88e56fe47d362cd46f591d3ec0f7cccb85a21f21ddcd4107821ce0ca9ddf99dfdfd9b0c9cd45053e5b1b4385bd8f5b227ada31b5c23e9420014474e8b4494fde7c38edfe70994d97b8cbdfac588df49a49c472fcce78cccc051f31cbbc1e0422878d8d490f3aee28adf1587c38fb7e7d1be54abeaa83cf54b633803a5e669ff4295df8735231ce39631616bd05e0e31117c722c2fd6787003b0bc7fe422a089c89329544e085d71102c1813769450a9f66f160d1702cdb17bd2c6fdf0f722762d193ce83623eeffab17b01b10a31db6e2feb6eb3abdbb2e36320e1a56e44e48d26090afa7f65003a98cbfef590ac3ec89b3eb230557cf6aa566e841806aa2767b21bb26fe001f11ae039e0c9a4bf1bf3d271960f16158eb5bd9ebf0080abd8369d512cab2d1aaae2b14d0ff6ee705a38fb0c801a98b0624cc138fc24834fdf430f33e1760db913da3290f34415c9e3df3e97da1780545ab68ac5a24db89f24d62f4a399728e4144a8c89f47ac2d29e30c49b0bcf790a5e3d3fcd1943c6a28f37251d9dd827a69579e6c17b629c927473b5a07b0a29d9562708d6c8ce576109ad1a3473ffb2047eb069beeec24c114bef392c929038c92abd0e6a19b610e27881361824d57008b7373d0ab76379570ded76c9b8284fe2c247791073c29b2fc6fca05019220ab92856892d3c0dcc6da0b597fe559c162d060d71513ebca050d9638164b9ae271fba5575ade787ec5aee8fc253d1b234b1df561db3e36ac64b9b0100dd6b407043537b2b141f | ||
129 | MD = 2cbc07b9b9c819b8fd38d8a614a8a9c3fa7e40ee | ||