diff options
| author | beck <> | 2001-08-01 19:51:17 +0000 |
|---|---|---|
| committer | beck <> | 2001-08-01 19:51:17 +0000 |
| commit | 4b790f68539c49ef91f5e82506c2624900c92106 (patch) | |
| tree | d14ff9f79630cb04ad006cd2730646f44f62d786 /src/lib/libc | |
| parent | edbfd6c7e91e15e92ef0df548474ac76b6dddca0 (diff) | |
| download | openbsd-4b790f68539c49ef91f5e82506c2624900c92106.tar.gz openbsd-4b790f68539c49ef91f5e82506c2624900c92106.tar.bz2 openbsd-4b790f68539c49ef91f5e82506c2624900c92106.zip | |
merge openssl 0.9.6b-engine
Note that this is a maintenence release, API's appear *not* to have changed.
As such, I have only increased the minor number on these libraries
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libcrypto/asn1/t_x509.c | 2 | ||||
| -rw-r--r-- | src/lib/libcrypto/asn1/x_pubkey.c | 2 | ||||
| -rw-r--r-- | src/lib/libcrypto/bio/b_print.c | 14 | ||||
| -rw-r--r-- | src/lib/libcrypto/bio/bf_buff.c | 2 | ||||
| -rw-r--r-- | src/lib/libcrypto/bn/asm/mips3.s | 430 | ||||
| -rw-r--r-- | src/lib/libcrypto/cryptlib.c | 10 | ||||
| -rw-r--r-- | src/lib/libcrypto/dsa/dsa.h | 1 | ||||
| -rw-r--r-- | src/lib/libcrypto/dsa/dsa_err.c | 1 | ||||
| -rw-r--r-- | src/lib/libcrypto/dsa/dsa_ossl.c | 21 | ||||
| -rw-r--r-- | src/lib/libcrypto/evp/e_bf.c | 2 | ||||
| -rw-r--r-- | src/lib/libcrypto/evp/evp.h | 6 | ||||
| -rw-r--r-- | src/lib/libcrypto/evp/evp_key.c | 6 | ||||
| -rw-r--r-- | src/lib/libcrypto/opensslv.h | 6 | ||||
| -rw-r--r-- | src/lib/libcrypto/perlasm/x86unix.pl | 2 | ||||
| -rw-r--r-- | src/lib/libcrypto/rand/md_rand.c | 99 | ||||
| -rw-r--r-- | src/lib/libcrypto/rand/randfile.c | 8 | ||||
| -rw-r--r-- | src/lib/libcrypto/rsa/rsa_oaep.c | 29 | ||||
| -rw-r--r-- | src/lib/libcrypto/x509/x509_obj.c | 2 | ||||
| -rw-r--r-- | src/lib/libcrypto/x509/x509_trs.c | 3 |
19 files changed, 390 insertions, 256 deletions
diff --git a/src/lib/libcrypto/asn1/t_x509.c b/src/lib/libcrypto/asn1/t_x509.c index 314bdfb1c7..89ae73a6de 100644 --- a/src/lib/libcrypto/asn1/t_x509.c +++ b/src/lib/libcrypto/asn1/t_x509.c | |||
| @@ -349,6 +349,8 @@ int X509_NAME_print(BIO *bp, X509_NAME *name, int obase) | |||
| 349 | ll=80-2-obase; | 349 | ll=80-2-obase; |
| 350 | 350 | ||
| 351 | s=X509_NAME_oneline(name,buf,256); | 351 | s=X509_NAME_oneline(name,buf,256); |
| 352 | if (!*s) | ||
| 353 | return 1; | ||
| 352 | s++; /* skip the first slash */ | 354 | s++; /* skip the first slash */ |
| 353 | 355 | ||
| 354 | l=ll; | 356 | l=ll; |
diff --git a/src/lib/libcrypto/asn1/x_pubkey.c b/src/lib/libcrypto/asn1/x_pubkey.c index b2e2a51477..4397a404b5 100644 --- a/src/lib/libcrypto/asn1/x_pubkey.c +++ b/src/lib/libcrypto/asn1/x_pubkey.c | |||
| @@ -234,7 +234,7 @@ EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key) | |||
| 234 | a=key->algor; | 234 | a=key->algor; |
| 235 | if (ret->type == EVP_PKEY_DSA) | 235 | if (ret->type == EVP_PKEY_DSA) |
| 236 | { | 236 | { |
| 237 | if (a->parameter->type == V_ASN1_SEQUENCE) | 237 | if (a->parameter && (a->parameter->type == V_ASN1_SEQUENCE)) |
| 238 | { | 238 | { |
| 239 | ret->pkey.dsa->write_params=0; | 239 | ret->pkey.dsa->write_params=0; |
| 240 | p=a->parameter->value.sequence->data; | 240 | p=a->parameter->value.sequence->data; |
diff --git a/src/lib/libcrypto/bio/b_print.c b/src/lib/libcrypto/bio/b_print.c index b4f7a85f2e..91a049406e 100644 --- a/src/lib/libcrypto/bio/b_print.c +++ b/src/lib/libcrypto/bio/b_print.c | |||
| @@ -109,7 +109,11 @@ | |||
| 109 | #endif | 109 | #endif |
| 110 | 110 | ||
| 111 | #if HAVE_LONG_LONG | 111 | #if HAVE_LONG_LONG |
| 112 | #define LLONG long long | 112 | # if defined(WIN32) && !defined(__GNUC__) |
| 113 | # define LLONG _int64 | ||
| 114 | # else | ||
| 115 | # define LLONG long long | ||
| 116 | # endif | ||
| 113 | #else | 117 | #else |
| 114 | #define LLONG long | 118 | #define LLONG long |
| 115 | #endif | 119 | #endif |
| @@ -152,7 +156,7 @@ static void _dopr(char **sbuffer, char **buffer, | |||
| 152 | 156 | ||
| 153 | /* some handy macros */ | 157 | /* some handy macros */ |
| 154 | #define char_to_int(p) (p - '0') | 158 | #define char_to_int(p) (p - '0') |
| 155 | #define MAX(p,q) ((p >= q) ? p : q) | 159 | #define OSSL_MAX(p,q) ((p >= q) ? p : q) |
| 156 | 160 | ||
| 157 | static void | 161 | static void |
| 158 | _dopr( | 162 | _dopr( |
| @@ -503,13 +507,13 @@ fmtint( | |||
| 503 | convert[place] = 0; | 507 | convert[place] = 0; |
| 504 | 508 | ||
| 505 | zpadlen = max - place; | 509 | zpadlen = max - place; |
| 506 | spadlen = min - MAX(max, place) - (signvalue ? 1 : 0); | 510 | spadlen = min - OSSL_MAX(max, place) - (signvalue ? 1 : 0); |
| 507 | if (zpadlen < 0) | 511 | if (zpadlen < 0) |
| 508 | zpadlen = 0; | 512 | zpadlen = 0; |
| 509 | if (spadlen < 0) | 513 | if (spadlen < 0) |
| 510 | spadlen = 0; | 514 | spadlen = 0; |
| 511 | if (flags & DP_F_ZERO) { | 515 | if (flags & DP_F_ZERO) { |
| 512 | zpadlen = MAX(zpadlen, spadlen); | 516 | zpadlen = OSSL_MAX(zpadlen, spadlen); |
| 513 | spadlen = 0; | 517 | spadlen = 0; |
| 514 | } | 518 | } |
| 515 | if (flags & DP_F_MINUS) | 519 | if (flags & DP_F_MINUS) |
| @@ -641,7 +645,7 @@ fmtfp( | |||
| 641 | (caps ? "0123456789ABCDEF" | 645 | (caps ? "0123456789ABCDEF" |
| 642 | : "0123456789abcdef")[fracpart % 10]; | 646 | : "0123456789abcdef")[fracpart % 10]; |
| 643 | fracpart = (fracpart / 10); | 647 | fracpart = (fracpart / 10); |
| 644 | } while (fracpart && (fplace < 20)); | 648 | } while (fplace < max); |
| 645 | if (fplace == 20) | 649 | if (fplace == 20) |
| 646 | fplace--; | 650 | fplace--; |
| 647 | fconvert[fplace] = 0; | 651 | fconvert[fplace] = 0; |
diff --git a/src/lib/libcrypto/bio/bf_buff.c b/src/lib/libcrypto/bio/bf_buff.c index f50e8f98a3..c90238bae1 100644 --- a/src/lib/libcrypto/bio/bf_buff.c +++ b/src/lib/libcrypto/bio/bf_buff.c | |||
| @@ -70,7 +70,7 @@ static long buffer_ctrl(BIO *h, int cmd, long arg1, void *arg2); | |||
| 70 | static int buffer_new(BIO *h); | 70 | static int buffer_new(BIO *h); |
| 71 | static int buffer_free(BIO *data); | 71 | static int buffer_free(BIO *data); |
| 72 | static long buffer_callback_ctrl(BIO *h, int cmd, bio_info_cb *fp); | 72 | static long buffer_callback_ctrl(BIO *h, int cmd, bio_info_cb *fp); |
| 73 | #define DEFAULT_BUFFER_SIZE 1024 | 73 | #define DEFAULT_BUFFER_SIZE 4096 |
| 74 | 74 | ||
| 75 | static BIO_METHOD methods_buffer= | 75 | static BIO_METHOD methods_buffer= |
| 76 | { | 76 | { |
diff --git a/src/lib/libcrypto/bn/asm/mips3.s b/src/lib/libcrypto/bn/asm/mips3.s index 45786c00a5..dca4105c7d 100644 --- a/src/lib/libcrypto/bn/asm/mips3.s +++ b/src/lib/libcrypto/bn/asm/mips3.s | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | .rdata | 1 | .rdata |
| 2 | .asciiz "mips3.s, Version 1.0" | 2 | .asciiz "mips3.s, Version 1.1" |
| 3 | .asciiz "MIPS III/IV ISA artwork by Andy Polyakov <appro@fy.chalmers.se>" | 3 | .asciiz "MIPS III/IV ISA artwork by Andy Polyakov <appro@fy.chalmers.se>" |
| 4 | 4 | ||
| 5 | /* | 5 | /* |
| @@ -849,6 +849,7 @@ LEAF(bn_mul_comba8) | |||
| 849 | sltu AT,c_1,t_1 | 849 | sltu AT,c_1,t_1 |
| 850 | daddu t_2,AT | 850 | daddu t_2,AT |
| 851 | daddu c_2,t_2 | 851 | daddu c_2,t_2 |
| 852 | sltu c_3,c_2,t_2 | ||
| 852 | dmultu a_1,b_2 /* mul_add_c(a[1],b[2],c1,c2,c3); */ | 853 | dmultu a_1,b_2 /* mul_add_c(a[1],b[2],c1,c2,c3); */ |
| 853 | mflo t_1 | 854 | mflo t_1 |
| 854 | mfhi t_2 | 855 | mfhi t_2 |
| @@ -856,7 +857,8 @@ LEAF(bn_mul_comba8) | |||
| 856 | sltu AT,c_1,t_1 | 857 | sltu AT,c_1,t_1 |
| 857 | daddu t_2,AT | 858 | daddu t_2,AT |
| 858 | daddu c_2,t_2 | 859 | daddu c_2,t_2 |
| 859 | sltu c_3,c_2,t_2 | 860 | sltu AT,c_2,t_2 |
| 861 | daddu c_3,AT | ||
| 860 | dmultu a_2,b_1 /* mul_add_c(a[2],b[1],c1,c2,c3); */ | 862 | dmultu a_2,b_1 /* mul_add_c(a[2],b[1],c1,c2,c3); */ |
| 861 | mflo t_1 | 863 | mflo t_1 |
| 862 | mfhi t_2 | 864 | mfhi t_2 |
| @@ -884,6 +886,7 @@ LEAF(bn_mul_comba8) | |||
| 884 | sltu AT,c_2,t_1 | 886 | sltu AT,c_2,t_1 |
| 885 | daddu t_2,AT | 887 | daddu t_2,AT |
| 886 | daddu c_3,t_2 | 888 | daddu c_3,t_2 |
| 889 | sltu c_1,c_3,t_2 | ||
| 887 | dmultu a_3,b_1 /* mul_add_c(a[3],b[1],c2,c3,c1); */ | 890 | dmultu a_3,b_1 /* mul_add_c(a[3],b[1],c2,c3,c1); */ |
| 888 | mflo t_1 | 891 | mflo t_1 |
| 889 | mfhi t_2 | 892 | mfhi t_2 |
| @@ -891,7 +894,8 @@ LEAF(bn_mul_comba8) | |||
| 891 | sltu AT,c_2,t_1 | 894 | sltu AT,c_2,t_1 |
| 892 | daddu t_2,AT | 895 | daddu t_2,AT |
| 893 | daddu c_3,t_2 | 896 | daddu c_3,t_2 |
| 894 | sltu c_1,c_3,t_2 | 897 | sltu AT,c_3,t_2 |
| 898 | daddu c_1,AT | ||
| 895 | dmultu a_2,b_2 /* mul_add_c(a[2],b[2],c2,c3,c1); */ | 899 | dmultu a_2,b_2 /* mul_add_c(a[2],b[2],c2,c3,c1); */ |
| 896 | mflo t_1 | 900 | mflo t_1 |
| 897 | mfhi t_2 | 901 | mfhi t_2 |
| @@ -928,6 +932,7 @@ LEAF(bn_mul_comba8) | |||
| 928 | sltu AT,c_3,t_1 | 932 | sltu AT,c_3,t_1 |
| 929 | daddu t_2,AT | 933 | daddu t_2,AT |
| 930 | daddu c_1,t_2 | 934 | daddu c_1,t_2 |
| 935 | sltu c_2,c_1,t_2 | ||
| 931 | dmultu a_1,b_4 /* mul_add_c(a[1],b[4],c3,c1,c2); */ | 936 | dmultu a_1,b_4 /* mul_add_c(a[1],b[4],c3,c1,c2); */ |
| 932 | mflo t_1 | 937 | mflo t_1 |
| 933 | mfhi t_2 | 938 | mfhi t_2 |
| @@ -935,7 +940,8 @@ LEAF(bn_mul_comba8) | |||
| 935 | sltu AT,c_3,t_1 | 940 | sltu AT,c_3,t_1 |
| 936 | daddu t_2,AT | 941 | daddu t_2,AT |
| 937 | daddu c_1,t_2 | 942 | daddu c_1,t_2 |
| 938 | sltu c_2,c_1,t_2 | 943 | sltu AT,c_1,t_2 |
| 944 | daddu c_2,AT | ||
| 939 | dmultu a_2,b_3 /* mul_add_c(a[2],b[3],c3,c1,c2); */ | 945 | dmultu a_2,b_3 /* mul_add_c(a[2],b[3],c3,c1,c2); */ |
| 940 | mflo t_1 | 946 | mflo t_1 |
| 941 | mfhi t_2 | 947 | mfhi t_2 |
| @@ -981,6 +987,7 @@ LEAF(bn_mul_comba8) | |||
| 981 | sltu AT,c_1,t_1 | 987 | sltu AT,c_1,t_1 |
| 982 | daddu t_2,AT | 988 | daddu t_2,AT |
| 983 | daddu c_2,t_2 | 989 | daddu c_2,t_2 |
| 990 | sltu c_3,c_2,t_2 | ||
| 984 | dmultu a_5,b_1 /* mul_add_c(a[5],b[1],c1,c2,c3); */ | 991 | dmultu a_5,b_1 /* mul_add_c(a[5],b[1],c1,c2,c3); */ |
| 985 | mflo t_1 | 992 | mflo t_1 |
| 986 | mfhi t_2 | 993 | mfhi t_2 |
| @@ -988,7 +995,8 @@ LEAF(bn_mul_comba8) | |||
| 988 | sltu AT,c_1,t_1 | 995 | sltu AT,c_1,t_1 |
| 989 | daddu t_2,AT | 996 | daddu t_2,AT |
| 990 | daddu c_2,t_2 | 997 | daddu c_2,t_2 |
| 991 | sltu c_3,c_2,t_2 | 998 | sltu AT,c_2,t_2 |
| 999 | daddu c_3,AT | ||
| 992 | dmultu a_4,b_2 /* mul_add_c(a[4],b[2],c1,c2,c3); */ | 1000 | dmultu a_4,b_2 /* mul_add_c(a[4],b[2],c1,c2,c3); */ |
| 993 | mflo t_1 | 1001 | mflo t_1 |
| 994 | mfhi t_2 | 1002 | mfhi t_2 |
| @@ -1043,6 +1051,7 @@ LEAF(bn_mul_comba8) | |||
| 1043 | sltu AT,c_2,t_1 | 1051 | sltu AT,c_2,t_1 |
| 1044 | daddu t_2,AT | 1052 | daddu t_2,AT |
| 1045 | daddu c_3,t_2 | 1053 | daddu c_3,t_2 |
| 1054 | sltu c_1,c_3,t_2 | ||
| 1046 | dmultu a_1,b_6 /* mul_add_c(a[1],b[6],c2,c3,c1); */ | 1055 | dmultu a_1,b_6 /* mul_add_c(a[1],b[6],c2,c3,c1); */ |
| 1047 | mflo t_1 | 1056 | mflo t_1 |
| 1048 | mfhi t_2 | 1057 | mfhi t_2 |
| @@ -1050,7 +1059,8 @@ LEAF(bn_mul_comba8) | |||
| 1050 | sltu AT,c_2,t_1 | 1059 | sltu AT,c_2,t_1 |
| 1051 | daddu t_2,AT | 1060 | daddu t_2,AT |
| 1052 | daddu c_3,t_2 | 1061 | daddu c_3,t_2 |
| 1053 | sltu c_1,c_3,t_2 | 1062 | sltu AT,c_3,t_2 |
| 1063 | daddu c_1,AT | ||
| 1054 | dmultu a_2,b_5 /* mul_add_c(a[2],b[5],c2,c3,c1); */ | 1064 | dmultu a_2,b_5 /* mul_add_c(a[2],b[5],c2,c3,c1); */ |
| 1055 | mflo t_1 | 1065 | mflo t_1 |
| 1056 | mfhi t_2 | 1066 | mfhi t_2 |
| @@ -1114,6 +1124,7 @@ LEAF(bn_mul_comba8) | |||
| 1114 | sltu AT,c_3,t_1 | 1124 | sltu AT,c_3,t_1 |
| 1115 | daddu t_2,AT | 1125 | daddu t_2,AT |
| 1116 | daddu c_1,t_2 | 1126 | daddu c_1,t_2 |
| 1127 | sltu c_2,c_1,t_2 | ||
| 1117 | dmultu a_6,b_2 /* mul_add_c(a[6],b[2],c3,c1,c2); */ | 1128 | dmultu a_6,b_2 /* mul_add_c(a[6],b[2],c3,c1,c2); */ |
| 1118 | mflo t_1 | 1129 | mflo t_1 |
| 1119 | mfhi t_2 | 1130 | mfhi t_2 |
| @@ -1121,7 +1132,8 @@ LEAF(bn_mul_comba8) | |||
| 1121 | sltu AT,c_3,t_1 | 1132 | sltu AT,c_3,t_1 |
| 1122 | daddu t_2,AT | 1133 | daddu t_2,AT |
| 1123 | daddu c_1,t_2 | 1134 | daddu c_1,t_2 |
| 1124 | sltu c_2,c_1,t_2 | 1135 | sltu AT,c_1,t_2 |
| 1136 | daddu c_2,AT | ||
| 1125 | dmultu a_5,b_3 /* mul_add_c(a[5],b[3],c3,c1,c2); */ | 1137 | dmultu a_5,b_3 /* mul_add_c(a[5],b[3],c3,c1,c2); */ |
| 1126 | mflo t_1 | 1138 | mflo t_1 |
| 1127 | mfhi t_2 | 1139 | mfhi t_2 |
| @@ -1176,6 +1188,7 @@ LEAF(bn_mul_comba8) | |||
| 1176 | sltu AT,c_1,t_1 | 1188 | sltu AT,c_1,t_1 |
| 1177 | daddu t_2,AT | 1189 | daddu t_2,AT |
| 1178 | daddu c_2,t_2 | 1190 | daddu c_2,t_2 |
| 1191 | sltu c_3,c_2,t_2 | ||
| 1179 | dmultu a_3,b_6 /* mul_add_c(a[3],b[6],c1,c2,c3); */ | 1192 | dmultu a_3,b_6 /* mul_add_c(a[3],b[6],c1,c2,c3); */ |
| 1180 | mflo t_1 | 1193 | mflo t_1 |
| 1181 | mfhi t_2 | 1194 | mfhi t_2 |
| @@ -1183,7 +1196,8 @@ LEAF(bn_mul_comba8) | |||
| 1183 | sltu AT,c_1,t_1 | 1196 | sltu AT,c_1,t_1 |
| 1184 | daddu t_2,AT | 1197 | daddu t_2,AT |
| 1185 | daddu c_2,t_2 | 1198 | daddu c_2,t_2 |
| 1186 | sltu c_3,c_2,t_2 | 1199 | sltu AT,c_2,t_2 |
| 1200 | daddu c_3,AT | ||
| 1187 | dmultu a_4,b_5 /* mul_add_c(a[4],b[5],c1,c2,c3); */ | 1201 | dmultu a_4,b_5 /* mul_add_c(a[4],b[5],c1,c2,c3); */ |
| 1188 | mflo t_1 | 1202 | mflo t_1 |
| 1189 | mfhi t_2 | 1203 | mfhi t_2 |
| @@ -1229,6 +1243,7 @@ LEAF(bn_mul_comba8) | |||
| 1229 | sltu AT,c_2,t_1 | 1243 | sltu AT,c_2,t_1 |
| 1230 | daddu t_2,AT | 1244 | daddu t_2,AT |
| 1231 | daddu c_3,t_2 | 1245 | daddu c_3,t_2 |
| 1246 | sltu c_1,c_3,t_2 | ||
| 1232 | dmultu a_6,b_4 /* mul_add_c(a[6],b[4],c2,c3,c1); */ | 1247 | dmultu a_6,b_4 /* mul_add_c(a[6],b[4],c2,c3,c1); */ |
| 1233 | mflo t_1 | 1248 | mflo t_1 |
| 1234 | mfhi t_2 | 1249 | mfhi t_2 |
| @@ -1236,7 +1251,8 @@ LEAF(bn_mul_comba8) | |||
| 1236 | sltu AT,c_2,t_1 | 1251 | sltu AT,c_2,t_1 |
| 1237 | daddu t_2,AT | 1252 | daddu t_2,AT |
| 1238 | daddu c_3,t_2 | 1253 | daddu c_3,t_2 |
| 1239 | sltu c_1,c_3,t_2 | 1254 | sltu AT,c_3,t_2 |
| 1255 | daddu c_1,AT | ||
| 1240 | dmultu a_5,b_5 /* mul_add_c(a[5],b[5],c2,c3,c1); */ | 1256 | dmultu a_5,b_5 /* mul_add_c(a[5],b[5],c2,c3,c1); */ |
| 1241 | mflo t_1 | 1257 | mflo t_1 |
| 1242 | mfhi t_2 | 1258 | mfhi t_2 |
| @@ -1273,6 +1289,7 @@ LEAF(bn_mul_comba8) | |||
| 1273 | sltu AT,c_3,t_1 | 1289 | sltu AT,c_3,t_1 |
| 1274 | daddu t_2,AT | 1290 | daddu t_2,AT |
| 1275 | daddu c_1,t_2 | 1291 | daddu c_1,t_2 |
| 1292 | sltu c_2,c_1,t_2 | ||
| 1276 | dmultu a_5,b_6 /* mul_add_c(a[5],b[6],c3,c1,c2); */ | 1293 | dmultu a_5,b_6 /* mul_add_c(a[5],b[6],c3,c1,c2); */ |
| 1277 | mflo t_1 | 1294 | mflo t_1 |
| 1278 | mfhi t_2 | 1295 | mfhi t_2 |
| @@ -1280,7 +1297,8 @@ LEAF(bn_mul_comba8) | |||
| 1280 | sltu AT,c_3,t_1 | 1297 | sltu AT,c_3,t_1 |
| 1281 | daddu t_2,AT | 1298 | daddu t_2,AT |
| 1282 | daddu c_1,t_2 | 1299 | daddu c_1,t_2 |
| 1283 | sltu c_2,c_1,t_2 | 1300 | sltu AT,c_1,t_2 |
| 1301 | daddu c_2,AT | ||
| 1284 | dmultu a_6,b_5 /* mul_add_c(a[6],b[5],c3,c1,c2); */ | 1302 | dmultu a_6,b_5 /* mul_add_c(a[6],b[5],c3,c1,c2); */ |
| 1285 | mflo t_1 | 1303 | mflo t_1 |
| 1286 | mfhi t_2 | 1304 | mfhi t_2 |
| @@ -1308,6 +1326,7 @@ LEAF(bn_mul_comba8) | |||
| 1308 | sltu AT,c_1,t_1 | 1326 | sltu AT,c_1,t_1 |
| 1309 | daddu t_2,AT | 1327 | daddu t_2,AT |
| 1310 | daddu c_2,t_2 | 1328 | daddu c_2,t_2 |
| 1329 | sltu c_3,c_2,t_2 | ||
| 1311 | dmultu a_6,b_6 /* mul_add_c(a[6],b[6],c1,c2,c3); */ | 1330 | dmultu a_6,b_6 /* mul_add_c(a[6],b[6],c1,c2,c3); */ |
| 1312 | mflo t_1 | 1331 | mflo t_1 |
| 1313 | mfhi t_2 | 1332 | mfhi t_2 |
| @@ -1315,7 +1334,8 @@ LEAF(bn_mul_comba8) | |||
| 1315 | sltu AT,c_1,t_1 | 1334 | sltu AT,c_1,t_1 |
| 1316 | daddu t_2,AT | 1335 | daddu t_2,AT |
| 1317 | daddu c_2,t_2 | 1336 | daddu c_2,t_2 |
| 1318 | sltu c_3,c_2,t_2 | 1337 | sltu AT,c_2,t_2 |
| 1338 | daddu c_3,AT | ||
| 1319 | dmultu a_5,b_7 /* mul_add_c(a[5],b[7],c1,c2,c3); */ | 1339 | dmultu a_5,b_7 /* mul_add_c(a[5],b[7],c1,c2,c3); */ |
| 1320 | mflo t_1 | 1340 | mflo t_1 |
| 1321 | mfhi t_2 | 1341 | mfhi t_2 |
| @@ -1334,6 +1354,7 @@ LEAF(bn_mul_comba8) | |||
| 1334 | sltu AT,c_2,t_1 | 1354 | sltu AT,c_2,t_1 |
| 1335 | daddu t_2,AT | 1355 | daddu t_2,AT |
| 1336 | daddu c_3,t_2 | 1356 | daddu c_3,t_2 |
| 1357 | sltu c_1,c_3,t_2 | ||
| 1337 | dmultu a_7,b_6 /* mul_add_c(a[7],b[6],c2,c3,c1); */ | 1358 | dmultu a_7,b_6 /* mul_add_c(a[7],b[6],c2,c3,c1); */ |
| 1338 | mflo t_1 | 1359 | mflo t_1 |
| 1339 | mfhi t_2 | 1360 | mfhi t_2 |
| @@ -1341,7 +1362,8 @@ LEAF(bn_mul_comba8) | |||
| 1341 | sltu AT,c_2,t_1 | 1362 | sltu AT,c_2,t_1 |
| 1342 | daddu t_2,AT | 1363 | daddu t_2,AT |
| 1343 | daddu c_3,t_2 | 1364 | daddu c_3,t_2 |
| 1344 | sltu c_1,c_3,t_2 | 1365 | sltu AT,c_3,t_2 |
| 1366 | daddu c_1,AT | ||
| 1345 | sd c_2,104(a0) /* r[13]=c2; */ | 1367 | sd c_2,104(a0) /* r[13]=c2; */ |
| 1346 | 1368 | ||
| 1347 | dmultu a_7,b_7 /* mul_add_c(a[7],b[7],c3,c1,c2); */ | 1369 | dmultu a_7,b_7 /* mul_add_c(a[7],b[7],c3,c1,c2); */ |
| @@ -1430,6 +1452,7 @@ LEAF(bn_mul_comba4) | |||
| 1430 | sltu AT,c_1,t_1 | 1452 | sltu AT,c_1,t_1 |
| 1431 | daddu t_2,AT | 1453 | daddu t_2,AT |
| 1432 | daddu c_2,t_2 | 1454 | daddu c_2,t_2 |
| 1455 | sltu c_3,c_2,t_2 | ||
| 1433 | dmultu a_1,b_2 /* mul_add_c(a[1],b[2],c1,c2,c3); */ | 1456 | dmultu a_1,b_2 /* mul_add_c(a[1],b[2],c1,c2,c3); */ |
| 1434 | mflo t_1 | 1457 | mflo t_1 |
| 1435 | mfhi t_2 | 1458 | mfhi t_2 |
| @@ -1437,7 +1460,8 @@ LEAF(bn_mul_comba4) | |||
| 1437 | sltu AT,c_1,t_1 | 1460 | sltu AT,c_1,t_1 |
| 1438 | daddu t_2,AT | 1461 | daddu t_2,AT |
| 1439 | daddu c_2,t_2 | 1462 | daddu c_2,t_2 |
| 1440 | sltu c_3,c_2,t_2 | 1463 | sltu AT,c_2,t_2 |
| 1464 | daddu c_3,AT | ||
| 1441 | dmultu a_2,b_1 /* mul_add_c(a[2],b[1],c1,c2,c3); */ | 1465 | dmultu a_2,b_1 /* mul_add_c(a[2],b[1],c1,c2,c3); */ |
| 1442 | mflo t_1 | 1466 | mflo t_1 |
| 1443 | mfhi t_2 | 1467 | mfhi t_2 |
| @@ -1465,6 +1489,7 @@ LEAF(bn_mul_comba4) | |||
| 1465 | sltu AT,c_2,t_1 | 1489 | sltu AT,c_2,t_1 |
| 1466 | daddu t_2,AT | 1490 | daddu t_2,AT |
| 1467 | daddu c_3,t_2 | 1491 | daddu c_3,t_2 |
| 1492 | sltu c_1,c_3,t_2 | ||
| 1468 | dmultu a_2,b_2 /* mul_add_c(a[2],b[2],c2,c3,c1); */ | 1493 | dmultu a_2,b_2 /* mul_add_c(a[2],b[2],c2,c3,c1); */ |
| 1469 | mflo t_1 | 1494 | mflo t_1 |
| 1470 | mfhi t_2 | 1495 | mfhi t_2 |
| @@ -1472,7 +1497,8 @@ LEAF(bn_mul_comba4) | |||
| 1472 | sltu AT,c_2,t_1 | 1497 | sltu AT,c_2,t_1 |
| 1473 | daddu t_2,AT | 1498 | daddu t_2,AT |
| 1474 | daddu c_3,t_2 | 1499 | daddu c_3,t_2 |
| 1475 | sltu c_1,c_3,t_2 | 1500 | sltu AT,c_3,t_2 |
| 1501 | daddu c_1,AT | ||
| 1476 | dmultu a_1,b_3 /* mul_add_c(a[1],b[3],c2,c3,c1); */ | 1502 | dmultu a_1,b_3 /* mul_add_c(a[1],b[3],c2,c3,c1); */ |
| 1477 | mflo t_1 | 1503 | mflo t_1 |
| 1478 | mfhi t_2 | 1504 | mfhi t_2 |
| @@ -1491,6 +1517,7 @@ LEAF(bn_mul_comba4) | |||
| 1491 | sltu AT,c_3,t_1 | 1517 | sltu AT,c_3,t_1 |
| 1492 | daddu t_2,AT | 1518 | daddu t_2,AT |
| 1493 | daddu c_1,t_2 | 1519 | daddu c_1,t_2 |
| 1520 | sltu c_2,c_1,t_2 | ||
| 1494 | dmultu a_3,b_2 /* mul_add_c(a[3],b[2],c3,c1,c2); */ | 1521 | dmultu a_3,b_2 /* mul_add_c(a[3],b[2],c3,c1,c2); */ |
| 1495 | mflo t_1 | 1522 | mflo t_1 |
| 1496 | mfhi t_2 | 1523 | mfhi t_2 |
| @@ -1498,7 +1525,8 @@ LEAF(bn_mul_comba4) | |||
| 1498 | sltu AT,c_3,t_1 | 1525 | sltu AT,c_3,t_1 |
| 1499 | daddu t_2,AT | 1526 | daddu t_2,AT |
| 1500 | daddu c_1,t_2 | 1527 | daddu c_1,t_2 |
| 1501 | sltu c_2,c_1,t_2 | 1528 | sltu AT,c_1,t_2 |
| 1529 | daddu c_2,AT | ||
| 1502 | sd c_3,40(a0) | 1530 | sd c_3,40(a0) |
| 1503 | 1531 | ||
| 1504 | dmultu a_3,b_3 /* mul_add_c(a[3],b[3],c1,c2,c3); */ | 1532 | dmultu a_3,b_3 /* mul_add_c(a[3],b[3],c1,c2,c3); */ |
| @@ -1543,28 +1571,30 @@ LEAF(bn_sqr_comba8) | |||
| 1543 | dmultu a_0,a_1 /* mul_add_c2(a[0],b[1],c2,c3,c1); */ | 1571 | dmultu a_0,a_1 /* mul_add_c2(a[0],b[1],c2,c3,c1); */ |
| 1544 | mflo t_1 | 1572 | mflo t_1 |
| 1545 | mfhi t_2 | 1573 | mfhi t_2 |
| 1574 | slt c_1,t_2,zero | ||
| 1575 | dsll t_2,1 | ||
| 1576 | slt a2,t_1,zero | ||
| 1577 | daddu t_2,a2 | ||
| 1578 | dsll t_1,1 | ||
| 1546 | daddu c_2,t_1 | 1579 | daddu c_2,t_1 |
| 1547 | sltu AT,c_2,t_1 | 1580 | sltu AT,c_2,t_1 |
| 1548 | daddu c_3,t_2,AT | 1581 | daddu c_3,t_2,AT |
| 1549 | daddu c_2,t_1 | ||
| 1550 | sltu AT,c_2,t_1 | ||
| 1551 | daddu t_2,AT | ||
| 1552 | daddu c_3,t_2 | ||
| 1553 | sltu c_1,c_3,t_2 | ||
| 1554 | sd c_2,8(a0) | 1582 | sd c_2,8(a0) |
| 1555 | 1583 | ||
| 1556 | dmultu a_2,a_0 /* mul_add_c2(a[2],b[0],c3,c1,c2); */ | 1584 | dmultu a_2,a_0 /* mul_add_c2(a[2],b[0],c3,c1,c2); */ |
| 1557 | mflo t_1 | 1585 | mflo t_1 |
| 1558 | mfhi t_2 | 1586 | mfhi t_2 |
| 1559 | daddu c_3,t_1 | 1587 | slt c_2,t_2,zero |
| 1560 | sltu AT,c_3,t_1 | 1588 | dsll t_2,1 |
| 1561 | daddu a2,t_2,AT | 1589 | slt a2,t_1,zero |
| 1562 | daddu c_1,a2 | 1590 | daddu t_2,a2 |
| 1591 | dsll t_1,1 | ||
| 1563 | daddu c_3,t_1 | 1592 | daddu c_3,t_1 |
| 1564 | sltu AT,c_3,t_1 | 1593 | sltu AT,c_3,t_1 |
| 1565 | daddu t_2,AT | 1594 | daddu t_2,AT |
| 1566 | daddu c_1,t_2 | 1595 | daddu c_1,t_2 |
| 1567 | sltu c_2,c_1,t_2 | 1596 | sltu AT,c_1,t_2 |
| 1597 | daddu c_2,AT | ||
| 1568 | dmultu a_1,a_1 /* mul_add_c(a[1],b[1],c3,c1,c2); */ | 1598 | dmultu a_1,a_1 /* mul_add_c(a[1],b[1],c3,c1,c2); */ |
| 1569 | mflo t_1 | 1599 | mflo t_1 |
| 1570 | mfhi t_2 | 1600 | mfhi t_2 |
| @@ -1579,24 +1609,26 @@ LEAF(bn_sqr_comba8) | |||
| 1579 | dmultu a_0,a_3 /* mul_add_c2(a[0],b[3],c1,c2,c3); */ | 1609 | dmultu a_0,a_3 /* mul_add_c2(a[0],b[3],c1,c2,c3); */ |
| 1580 | mflo t_1 | 1610 | mflo t_1 |
| 1581 | mfhi t_2 | 1611 | mfhi t_2 |
| 1582 | daddu c_1,t_1 | 1612 | slt c_3,t_2,zero |
| 1583 | sltu AT,c_1,t_1 | 1613 | dsll t_2,1 |
| 1584 | daddu a2,t_2,AT | 1614 | slt a2,t_1,zero |
| 1585 | daddu c_2,a2 | 1615 | daddu t_2,a2 |
| 1616 | dsll t_1,1 | ||
| 1586 | daddu c_1,t_1 | 1617 | daddu c_1,t_1 |
| 1587 | sltu AT,c_1,t_1 | 1618 | sltu AT,c_1,t_1 |
| 1588 | daddu t_2,AT | 1619 | daddu t_2,AT |
| 1589 | daddu c_2,t_2 | 1620 | daddu c_2,t_2 |
| 1590 | sltu c_3,c_2,t_2 | 1621 | sltu AT,c_2,t_2 |
| 1622 | daddu c_3,AT | ||
| 1591 | dmultu a_1,a_2 /* mul_add_c2(a[1],b[2],c1,c2,c3); */ | 1623 | dmultu a_1,a_2 /* mul_add_c2(a[1],b[2],c1,c2,c3); */ |
| 1592 | mflo t_1 | 1624 | mflo t_1 |
| 1593 | mfhi t_2 | 1625 | mfhi t_2 |
| 1594 | daddu c_1,t_1 | 1626 | slt AT,t_2,zero |
| 1595 | sltu AT,c_1,t_1 | ||
| 1596 | daddu a2,t_2,AT | ||
| 1597 | daddu c_2,a2 | ||
| 1598 | sltu AT,c_2,a2 | ||
| 1599 | daddu c_3,AT | 1627 | daddu c_3,AT |
| 1628 | dsll t_2,1 | ||
| 1629 | slt a2,t_1,zero | ||
| 1630 | daddu t_2,a2 | ||
| 1631 | dsll t_1,1 | ||
| 1600 | daddu c_1,t_1 | 1632 | daddu c_1,t_1 |
| 1601 | sltu AT,c_1,t_1 | 1633 | sltu AT,c_1,t_1 |
| 1602 | daddu t_2,AT | 1634 | daddu t_2,AT |
| @@ -1608,24 +1640,26 @@ LEAF(bn_sqr_comba8) | |||
| 1608 | dmultu a_4,a_0 /* mul_add_c2(a[4],b[0],c2,c3,c1); */ | 1640 | dmultu a_4,a_0 /* mul_add_c2(a[4],b[0],c2,c3,c1); */ |
| 1609 | mflo t_1 | 1641 | mflo t_1 |
| 1610 | mfhi t_2 | 1642 | mfhi t_2 |
| 1611 | daddu c_2,t_1 | 1643 | slt c_1,t_2,zero |
| 1612 | sltu AT,c_2,t_1 | 1644 | dsll t_2,1 |
| 1613 | daddu a2,t_2,AT | 1645 | slt a2,t_1,zero |
| 1614 | daddu c_3,a2 | 1646 | daddu t_2,a2 |
| 1647 | dsll t_1,1 | ||
| 1615 | daddu c_2,t_1 | 1648 | daddu c_2,t_1 |
| 1616 | sltu AT,c_2,t_1 | 1649 | sltu AT,c_2,t_1 |
| 1617 | daddu t_2,AT | 1650 | daddu t_2,AT |
| 1618 | daddu c_3,t_2 | 1651 | daddu c_3,t_2 |
| 1619 | sltu c_1,c_3,t_2 | 1652 | sltu AT,c_3,t_2 |
| 1653 | daddu c_1,AT | ||
| 1620 | dmultu a_3,a_1 /* mul_add_c2(a[3],b[1],c2,c3,c1); */ | 1654 | dmultu a_3,a_1 /* mul_add_c2(a[3],b[1],c2,c3,c1); */ |
| 1621 | mflo t_1 | 1655 | mflo t_1 |
| 1622 | mfhi t_2 | 1656 | mfhi t_2 |
| 1623 | daddu c_2,t_1 | 1657 | slt AT,t_2,zero |
| 1624 | sltu AT,c_2,t_1 | ||
| 1625 | daddu a2,t_2,AT | ||
| 1626 | daddu c_3,a2 | ||
| 1627 | sltu AT,c_3,a2 | ||
| 1628 | daddu c_1,AT | 1658 | daddu c_1,AT |
| 1659 | dsll t_2,1 | ||
| 1660 | slt a2,t_1,zero | ||
| 1661 | daddu t_2,a2 | ||
| 1662 | dsll t_1,1 | ||
| 1629 | daddu c_2,t_1 | 1663 | daddu c_2,t_1 |
| 1630 | sltu AT,c_2,t_1 | 1664 | sltu AT,c_2,t_1 |
| 1631 | daddu t_2,AT | 1665 | daddu t_2,AT |
| @@ -1646,24 +1680,26 @@ LEAF(bn_sqr_comba8) | |||
| 1646 | dmultu a_0,a_5 /* mul_add_c2(a[0],b[5],c3,c1,c2); */ | 1680 | dmultu a_0,a_5 /* mul_add_c2(a[0],b[5],c3,c1,c2); */ |
| 1647 | mflo t_1 | 1681 | mflo t_1 |
| 1648 | mfhi t_2 | 1682 | mfhi t_2 |
| 1649 | daddu c_3,t_1 | 1683 | slt c_2,t_2,zero |
| 1650 | sltu AT,c_3,t_1 | 1684 | dsll t_2,1 |
| 1651 | daddu a2,t_2,AT | 1685 | slt a2,t_1,zero |
| 1652 | daddu c_1,a2 | 1686 | daddu t_2,a2 |
| 1687 | dsll t_1,1 | ||
| 1653 | daddu c_3,t_1 | 1688 | daddu c_3,t_1 |
| 1654 | sltu AT,c_3,t_1 | 1689 | sltu AT,c_3,t_1 |
| 1655 | daddu t_2,AT | 1690 | daddu t_2,AT |
| 1656 | daddu c_1,t_2 | 1691 | daddu c_1,t_2 |
| 1657 | sltu c_2,c_1,t_2 | 1692 | sltu AT,c_1,t_2 |
| 1693 | daddu c_2,AT | ||
| 1658 | dmultu a_1,a_4 /* mul_add_c2(a[1],b[4],c3,c1,c2); */ | 1694 | dmultu a_1,a_4 /* mul_add_c2(a[1],b[4],c3,c1,c2); */ |
| 1659 | mflo t_1 | 1695 | mflo t_1 |
| 1660 | mfhi t_2 | 1696 | mfhi t_2 |
| 1661 | daddu c_3,t_1 | 1697 | slt AT,t_2,zero |
| 1662 | sltu AT,c_3,t_1 | ||
| 1663 | daddu a2,t_2,AT | ||
| 1664 | daddu c_1,a2 | ||
| 1665 | sltu AT,c_1,a2 | ||
| 1666 | daddu c_2,AT | 1698 | daddu c_2,AT |
| 1699 | dsll t_2,1 | ||
| 1700 | slt a2,t_1,zero | ||
| 1701 | daddu t_2,a2 | ||
| 1702 | dsll t_1,1 | ||
| 1667 | daddu c_3,t_1 | 1703 | daddu c_3,t_1 |
| 1668 | sltu AT,c_3,t_1 | 1704 | sltu AT,c_3,t_1 |
| 1669 | daddu t_2,AT | 1705 | daddu t_2,AT |
| @@ -1673,12 +1709,12 @@ LEAF(bn_sqr_comba8) | |||
| 1673 | dmultu a_2,a_3 /* mul_add_c2(a[2],b[3],c3,c1,c2); */ | 1709 | dmultu a_2,a_3 /* mul_add_c2(a[2],b[3],c3,c1,c2); */ |
| 1674 | mflo t_1 | 1710 | mflo t_1 |
| 1675 | mfhi t_2 | 1711 | mfhi t_2 |
| 1676 | daddu c_3,t_1 | 1712 | slt AT,t_2,zero |
| 1677 | sltu AT,c_3,t_1 | ||
| 1678 | daddu a2,t_2,AT | ||
| 1679 | daddu c_1,a2 | ||
| 1680 | sltu AT,c_1,a2 | ||
| 1681 | daddu c_2,AT | 1713 | daddu c_2,AT |
| 1714 | dsll t_2,1 | ||
| 1715 | slt a2,t_1,zero | ||
| 1716 | daddu t_2,a2 | ||
| 1717 | dsll t_1,1 | ||
| 1682 | daddu c_3,t_1 | 1718 | daddu c_3,t_1 |
| 1683 | sltu AT,c_3,t_1 | 1719 | sltu AT,c_3,t_1 |
| 1684 | daddu t_2,AT | 1720 | daddu t_2,AT |
| @@ -1690,24 +1726,26 @@ LEAF(bn_sqr_comba8) | |||
| 1690 | dmultu a_6,a_0 /* mul_add_c2(a[6],b[0],c1,c2,c3); */ | 1726 | dmultu a_6,a_0 /* mul_add_c2(a[6],b[0],c1,c2,c3); */ |
| 1691 | mflo t_1 | 1727 | mflo t_1 |
| 1692 | mfhi t_2 | 1728 | mfhi t_2 |
| 1693 | daddu c_1,t_1 | 1729 | slt c_3,t_2,zero |
| 1694 | sltu AT,c_1,t_1 | 1730 | dsll t_2,1 |
| 1695 | daddu a2,t_2,AT | 1731 | slt a2,t_1,zero |
| 1696 | daddu c_2,a2 | 1732 | daddu t_2,a2 |
| 1733 | dsll t_1,1 | ||
| 1697 | daddu c_1,t_1 | 1734 | daddu c_1,t_1 |
| 1698 | sltu AT,c_1,t_1 | 1735 | sltu AT,c_1,t_1 |
| 1699 | daddu t_2,AT | 1736 | daddu t_2,AT |
| 1700 | daddu c_2,t_2 | 1737 | daddu c_2,t_2 |
| 1701 | sltu c_3,c_2,t_2 | 1738 | sltu AT,c_2,t_2 |
| 1739 | daddu c_3,AT | ||
| 1702 | dmultu a_5,a_1 /* mul_add_c2(a[5],b[1],c1,c2,c3); */ | 1740 | dmultu a_5,a_1 /* mul_add_c2(a[5],b[1],c1,c2,c3); */ |
| 1703 | mflo t_1 | 1741 | mflo t_1 |
| 1704 | mfhi t_2 | 1742 | mfhi t_2 |
| 1705 | daddu c_1,t_1 | 1743 | slt AT,t_2,zero |
| 1706 | sltu AT,c_1,t_1 | ||
| 1707 | daddu a2,t_2,AT | ||
| 1708 | daddu c_2,a2 | ||
| 1709 | sltu AT,c_2,a2 | ||
| 1710 | daddu c_3,AT | 1744 | daddu c_3,AT |
| 1745 | dsll t_2,1 | ||
| 1746 | slt a2,t_1,zero | ||
| 1747 | daddu t_2,a2 | ||
| 1748 | dsll t_1,1 | ||
| 1711 | daddu c_1,t_1 | 1749 | daddu c_1,t_1 |
| 1712 | sltu AT,c_1,t_1 | 1750 | sltu AT,c_1,t_1 |
| 1713 | daddu t_2,AT | 1751 | daddu t_2,AT |
| @@ -1717,12 +1755,12 @@ LEAF(bn_sqr_comba8) | |||
| 1717 | dmultu a_4,a_2 /* mul_add_c2(a[4],b[2],c1,c2,c3); */ | 1755 | dmultu a_4,a_2 /* mul_add_c2(a[4],b[2],c1,c2,c3); */ |
| 1718 | mflo t_1 | 1756 | mflo t_1 |
| 1719 | mfhi t_2 | 1757 | mfhi t_2 |
| 1720 | daddu c_1,t_1 | 1758 | slt AT,t_2,zero |
| 1721 | sltu AT,c_1,t_1 | ||
| 1722 | daddu a2,t_2,AT | ||
| 1723 | daddu c_2,a2 | ||
| 1724 | sltu AT,c_2,a2 | ||
| 1725 | daddu c_3,AT | 1759 | daddu c_3,AT |
| 1760 | dsll t_2,1 | ||
| 1761 | slt a2,t_1,zero | ||
| 1762 | daddu t_2,a2 | ||
| 1763 | dsll t_1,1 | ||
| 1726 | daddu c_1,t_1 | 1764 | daddu c_1,t_1 |
| 1727 | sltu AT,c_1,t_1 | 1765 | sltu AT,c_1,t_1 |
| 1728 | daddu t_2,AT | 1766 | daddu t_2,AT |
| @@ -1743,24 +1781,26 @@ LEAF(bn_sqr_comba8) | |||
| 1743 | dmultu a_0,a_7 /* mul_add_c2(a[0],b[7],c2,c3,c1); */ | 1781 | dmultu a_0,a_7 /* mul_add_c2(a[0],b[7],c2,c3,c1); */ |
| 1744 | mflo t_1 | 1782 | mflo t_1 |
| 1745 | mfhi t_2 | 1783 | mfhi t_2 |
| 1746 | daddu c_2,t_1 | 1784 | slt c_1,t_2,zero |
| 1747 | sltu AT,c_2,t_1 | 1785 | dsll t_2,1 |
| 1748 | daddu a2,t_2,AT | 1786 | slt a2,t_1,zero |
| 1749 | daddu c_3,a2 | 1787 | daddu t_2,a2 |
| 1788 | dsll t_1,1 | ||
| 1750 | daddu c_2,t_1 | 1789 | daddu c_2,t_1 |
| 1751 | sltu AT,c_2,t_1 | 1790 | sltu AT,c_2,t_1 |
| 1752 | daddu t_2,AT | 1791 | daddu t_2,AT |
| 1753 | daddu c_3,t_2 | 1792 | daddu c_3,t_2 |
| 1754 | sltu c_1,c_3,t_2 | 1793 | sltu AT,c_3,t_2 |
| 1794 | daddu c_1,AT | ||
| 1755 | dmultu a_1,a_6 /* mul_add_c2(a[1],b[6],c2,c3,c1); */ | 1795 | dmultu a_1,a_6 /* mul_add_c2(a[1],b[6],c2,c3,c1); */ |
| 1756 | mflo t_1 | 1796 | mflo t_1 |
| 1757 | mfhi t_2 | 1797 | mfhi t_2 |
| 1758 | daddu c_2,t_1 | 1798 | slt AT,t_2,zero |
| 1759 | sltu AT,c_2,t_1 | ||
| 1760 | daddu a2,t_2,AT | ||
| 1761 | daddu c_3,a2 | ||
| 1762 | sltu AT,c_3,a2 | ||
| 1763 | daddu c_1,AT | 1799 | daddu c_1,AT |
| 1800 | dsll t_2,1 | ||
| 1801 | slt a2,t_1,zero | ||
| 1802 | daddu t_2,a2 | ||
| 1803 | dsll t_1,1 | ||
| 1764 | daddu c_2,t_1 | 1804 | daddu c_2,t_1 |
| 1765 | sltu AT,c_2,t_1 | 1805 | sltu AT,c_2,t_1 |
| 1766 | daddu t_2,AT | 1806 | daddu t_2,AT |
| @@ -1770,12 +1810,12 @@ LEAF(bn_sqr_comba8) | |||
| 1770 | dmultu a_2,a_5 /* mul_add_c2(a[2],b[5],c2,c3,c1); */ | 1810 | dmultu a_2,a_5 /* mul_add_c2(a[2],b[5],c2,c3,c1); */ |
| 1771 | mflo t_1 | 1811 | mflo t_1 |
| 1772 | mfhi t_2 | 1812 | mfhi t_2 |
| 1773 | daddu c_2,t_1 | 1813 | slt AT,t_2,zero |
| 1774 | sltu AT,c_2,t_1 | ||
| 1775 | daddu a2,t_2,AT | ||
| 1776 | daddu c_3,a2 | ||
| 1777 | sltu AT,c_3,a2 | ||
| 1778 | daddu c_1,AT | 1814 | daddu c_1,AT |
| 1815 | dsll t_2,1 | ||
| 1816 | slt a2,t_1,zero | ||
| 1817 | daddu t_2,a2 | ||
| 1818 | dsll t_1,1 | ||
| 1779 | daddu c_2,t_1 | 1819 | daddu c_2,t_1 |
| 1780 | sltu AT,c_2,t_1 | 1820 | sltu AT,c_2,t_1 |
| 1781 | daddu t_2,AT | 1821 | daddu t_2,AT |
| @@ -1785,12 +1825,12 @@ LEAF(bn_sqr_comba8) | |||
| 1785 | dmultu a_3,a_4 /* mul_add_c2(a[3],b[4],c2,c3,c1); */ | 1825 | dmultu a_3,a_4 /* mul_add_c2(a[3],b[4],c2,c3,c1); */ |
| 1786 | mflo t_1 | 1826 | mflo t_1 |
| 1787 | mfhi t_2 | 1827 | mfhi t_2 |
| 1788 | daddu c_2,t_1 | 1828 | slt AT,t_2,zero |
| 1789 | sltu AT,c_2,t_1 | ||
| 1790 | daddu a2,t_2,AT | ||
| 1791 | daddu c_3,a2 | ||
| 1792 | sltu AT,c_3,a2 | ||
| 1793 | daddu c_1,AT | 1829 | daddu c_1,AT |
| 1830 | dsll t_2,1 | ||
| 1831 | slt a2,t_1,zero | ||
| 1832 | daddu t_2,a2 | ||
| 1833 | dsll t_1,1 | ||
| 1794 | daddu c_2,t_1 | 1834 | daddu c_2,t_1 |
| 1795 | sltu AT,c_2,t_1 | 1835 | sltu AT,c_2,t_1 |
| 1796 | daddu t_2,AT | 1836 | daddu t_2,AT |
| @@ -1802,24 +1842,26 @@ LEAF(bn_sqr_comba8) | |||
| 1802 | dmultu a_7,a_1 /* mul_add_c2(a[7],b[1],c3,c1,c2); */ | 1842 | dmultu a_7,a_1 /* mul_add_c2(a[7],b[1],c3,c1,c2); */ |
| 1803 | mflo t_1 | 1843 | mflo t_1 |
| 1804 | mfhi t_2 | 1844 | mfhi t_2 |
| 1805 | daddu c_3,t_1 | 1845 | slt c_2,t_2,zero |
| 1806 | sltu AT,c_3,t_1 | 1846 | dsll t_2,1 |
| 1807 | daddu a2,t_2,AT | 1847 | slt a2,t_1,zero |
| 1808 | daddu c_1,a2 | 1848 | daddu t_2,a2 |
| 1849 | dsll t_1,1 | ||
| 1809 | daddu c_3,t_1 | 1850 | daddu c_3,t_1 |
| 1810 | sltu AT,c_3,t_1 | 1851 | sltu AT,c_3,t_1 |
| 1811 | daddu t_2,AT | 1852 | daddu t_2,AT |
| 1812 | daddu c_1,t_2 | 1853 | daddu c_1,t_2 |
| 1813 | sltu c_2,c_1,t_2 | 1854 | sltu AT,c_1,t_2 |
| 1855 | daddu c_2,AT | ||
| 1814 | dmultu a_6,a_2 /* mul_add_c2(a[6],b[2],c3,c1,c2); */ | 1856 | dmultu a_6,a_2 /* mul_add_c2(a[6],b[2],c3,c1,c2); */ |
| 1815 | mflo t_1 | 1857 | mflo t_1 |
| 1816 | mfhi t_2 | 1858 | mfhi t_2 |
| 1817 | daddu c_3,t_1 | 1859 | slt AT,t_2,zero |
| 1818 | sltu AT,c_3,t_1 | ||
| 1819 | daddu a2,t_2,AT | ||
| 1820 | daddu c_1,a2 | ||
| 1821 | sltu AT,c_1,a2 | ||
| 1822 | daddu c_2,AT | 1860 | daddu c_2,AT |
| 1861 | dsll t_2,1 | ||
| 1862 | slt a2,t_1,zero | ||
| 1863 | daddu t_2,a2 | ||
| 1864 | dsll t_1,1 | ||
| 1823 | daddu c_3,t_1 | 1865 | daddu c_3,t_1 |
| 1824 | sltu AT,c_3,t_1 | 1866 | sltu AT,c_3,t_1 |
| 1825 | daddu t_2,AT | 1867 | daddu t_2,AT |
| @@ -1829,12 +1871,12 @@ LEAF(bn_sqr_comba8) | |||
| 1829 | dmultu a_5,a_3 /* mul_add_c2(a[5],b[3],c3,c1,c2); */ | 1871 | dmultu a_5,a_3 /* mul_add_c2(a[5],b[3],c3,c1,c2); */ |
| 1830 | mflo t_1 | 1872 | mflo t_1 |
| 1831 | mfhi t_2 | 1873 | mfhi t_2 |
| 1832 | daddu c_3,t_1 | 1874 | slt AT,t_2,zero |
| 1833 | sltu AT,c_3,t_1 | ||
| 1834 | daddu a2,t_2,AT | ||
| 1835 | daddu c_1,a2 | ||
| 1836 | sltu AT,c_1,a2 | ||
| 1837 | daddu c_2,AT | 1875 | daddu c_2,AT |
| 1876 | dsll t_2,1 | ||
| 1877 | slt a2,t_1,zero | ||
| 1878 | daddu t_2,a2 | ||
| 1879 | dsll t_1,1 | ||
| 1838 | daddu c_3,t_1 | 1880 | daddu c_3,t_1 |
| 1839 | sltu AT,c_3,t_1 | 1881 | sltu AT,c_3,t_1 |
| 1840 | daddu t_2,AT | 1882 | daddu t_2,AT |
| @@ -1855,24 +1897,26 @@ LEAF(bn_sqr_comba8) | |||
| 1855 | dmultu a_2,a_7 /* mul_add_c2(a[2],b[7],c1,c2,c3); */ | 1897 | dmultu a_2,a_7 /* mul_add_c2(a[2],b[7],c1,c2,c3); */ |
| 1856 | mflo t_1 | 1898 | mflo t_1 |
| 1857 | mfhi t_2 | 1899 | mfhi t_2 |
| 1858 | daddu c_1,t_1 | 1900 | slt c_3,t_2,zero |
| 1859 | sltu AT,c_1,t_1 | 1901 | dsll t_2,1 |
| 1860 | daddu a2,t_2,AT | 1902 | slt a2,t_1,zero |
| 1861 | daddu c_2,a2 | 1903 | daddu t_2,a2 |
| 1904 | dsll t_1,1 | ||
| 1862 | daddu c_1,t_1 | 1905 | daddu c_1,t_1 |
| 1863 | sltu AT,c_1,t_1 | 1906 | sltu AT,c_1,t_1 |
| 1864 | daddu t_2,AT | 1907 | daddu t_2,AT |
| 1865 | daddu c_2,t_2 | 1908 | daddu c_2,t_2 |
| 1866 | sltu c_3,c_2,t_2 | 1909 | sltu AT,c_2,t_2 |
| 1910 | daddu c_3,AT | ||
| 1867 | dmultu a_3,a_6 /* mul_add_c2(a[3],b[6],c1,c2,c3); */ | 1911 | dmultu a_3,a_6 /* mul_add_c2(a[3],b[6],c1,c2,c3); */ |
| 1868 | mflo t_1 | 1912 | mflo t_1 |
| 1869 | mfhi t_2 | 1913 | mfhi t_2 |
| 1870 | daddu c_1,t_1 | 1914 | slt AT,t_2,zero |
| 1871 | sltu AT,c_1,t_1 | ||
| 1872 | daddu a2,t_2,AT | ||
| 1873 | daddu c_2,a2 | ||
| 1874 | sltu AT,c_2,a2 | ||
| 1875 | daddu c_3,AT | 1915 | daddu c_3,AT |
| 1916 | dsll t_2,1 | ||
| 1917 | slt a2,t_1,zero | ||
| 1918 | daddu t_2,a2 | ||
| 1919 | dsll t_1,1 | ||
| 1876 | daddu c_1,t_1 | 1920 | daddu c_1,t_1 |
| 1877 | sltu AT,c_1,t_1 | 1921 | sltu AT,c_1,t_1 |
| 1878 | daddu t_2,AT | 1922 | daddu t_2,AT |
| @@ -1882,12 +1926,12 @@ LEAF(bn_sqr_comba8) | |||
| 1882 | dmultu a_4,a_5 /* mul_add_c2(a[4],b[5],c1,c2,c3); */ | 1926 | dmultu a_4,a_5 /* mul_add_c2(a[4],b[5],c1,c2,c3); */ |
| 1883 | mflo t_1 | 1927 | mflo t_1 |
| 1884 | mfhi t_2 | 1928 | mfhi t_2 |
| 1885 | daddu c_1,t_1 | 1929 | slt AT,t_2,zero |
| 1886 | sltu AT,c_1,t_1 | ||
| 1887 | daddu a2,t_2,AT | ||
| 1888 | daddu c_2,a2 | ||
| 1889 | sltu AT,c_2,a2 | ||
| 1890 | daddu c_3,AT | 1930 | daddu c_3,AT |
| 1931 | dsll t_2,1 | ||
| 1932 | slt a2,t_1,zero | ||
| 1933 | daddu t_2,a2 | ||
| 1934 | dsll t_1,1 | ||
| 1891 | daddu c_1,t_1 | 1935 | daddu c_1,t_1 |
| 1892 | sltu AT,c_1,t_1 | 1936 | sltu AT,c_1,t_1 |
| 1893 | daddu t_2,AT | 1937 | daddu t_2,AT |
| @@ -1899,24 +1943,26 @@ LEAF(bn_sqr_comba8) | |||
| 1899 | dmultu a_7,a_3 /* mul_add_c2(a[7],b[3],c2,c3,c1); */ | 1943 | dmultu a_7,a_3 /* mul_add_c2(a[7],b[3],c2,c3,c1); */ |
| 1900 | mflo t_1 | 1944 | mflo t_1 |
| 1901 | mfhi t_2 | 1945 | mfhi t_2 |
| 1902 | daddu c_2,t_1 | 1946 | slt c_1,t_2,zero |
| 1903 | sltu AT,c_2,t_1 | 1947 | dsll t_2,1 |
| 1904 | daddu a2,t_2,AT | 1948 | slt a2,t_1,zero |
| 1905 | daddu c_3,a2 | 1949 | daddu t_2,a2 |
| 1950 | dsll t_1,1 | ||
| 1906 | daddu c_2,t_1 | 1951 | daddu c_2,t_1 |
| 1907 | sltu AT,c_2,t_1 | 1952 | sltu AT,c_2,t_1 |
| 1908 | daddu t_2,AT | 1953 | daddu t_2,AT |
| 1909 | daddu c_3,t_2 | 1954 | daddu c_3,t_2 |
| 1910 | sltu c_1,c_3,t_2 | 1955 | sltu AT,c_3,t_2 |
| 1956 | daddu c_1,AT | ||
| 1911 | dmultu a_6,a_4 /* mul_add_c2(a[6],b[4],c2,c3,c1); */ | 1957 | dmultu a_6,a_4 /* mul_add_c2(a[6],b[4],c2,c3,c1); */ |
| 1912 | mflo t_1 | 1958 | mflo t_1 |
| 1913 | mfhi t_2 | 1959 | mfhi t_2 |
| 1914 | daddu c_2,t_1 | 1960 | slt AT,t_2,zero |
| 1915 | sltu AT,c_2,t_1 | ||
| 1916 | daddu a2,t_2,AT | ||
| 1917 | daddu c_3,a2 | ||
| 1918 | sltu AT,c_3,a2 | ||
| 1919 | daddu c_1,AT | 1961 | daddu c_1,AT |
| 1962 | dsll t_2,1 | ||
| 1963 | slt a2,t_1,zero | ||
| 1964 | daddu t_2,a2 | ||
| 1965 | dsll t_1,1 | ||
| 1920 | daddu c_2,t_1 | 1966 | daddu c_2,t_1 |
| 1921 | sltu AT,c_2,t_1 | 1967 | sltu AT,c_2,t_1 |
| 1922 | daddu t_2,AT | 1968 | daddu t_2,AT |
| @@ -1937,24 +1983,26 @@ LEAF(bn_sqr_comba8) | |||
| 1937 | dmultu a_4,a_7 /* mul_add_c2(a[4],b[7],c3,c1,c2); */ | 1983 | dmultu a_4,a_7 /* mul_add_c2(a[4],b[7],c3,c1,c2); */ |
| 1938 | mflo t_1 | 1984 | mflo t_1 |
| 1939 | mfhi t_2 | 1985 | mfhi t_2 |
| 1940 | daddu c_3,t_1 | 1986 | slt c_2,t_2,zero |
| 1941 | sltu AT,c_3,t_1 | 1987 | dsll t_2,1 |
| 1942 | daddu a2,t_2,AT | 1988 | slt a2,t_1,zero |
| 1943 | daddu c_1,a2 | 1989 | daddu t_2,a2 |
| 1990 | dsll t_1,1 | ||
| 1944 | daddu c_3,t_1 | 1991 | daddu c_3,t_1 |
| 1945 | sltu AT,c_3,t_1 | 1992 | sltu AT,c_3,t_1 |
| 1946 | daddu t_2,AT | 1993 | daddu t_2,AT |
| 1947 | daddu c_1,t_2 | 1994 | daddu c_1,t_2 |
| 1948 | sltu c_2,c_1,t_2 | 1995 | sltu AT,c_1,t_2 |
| 1996 | daddu c_2,AT | ||
| 1949 | dmultu a_5,a_6 /* mul_add_c2(a[5],b[6],c3,c1,c2); */ | 1997 | dmultu a_5,a_6 /* mul_add_c2(a[5],b[6],c3,c1,c2); */ |
| 1950 | mflo t_1 | 1998 | mflo t_1 |
| 1951 | mfhi t_2 | 1999 | mfhi t_2 |
| 1952 | daddu c_3,t_1 | 2000 | slt AT,t_2,zero |
| 1953 | sltu AT,c_3,t_1 | ||
| 1954 | daddu a2,t_2,AT | ||
| 1955 | daddu c_1,a2 | ||
| 1956 | sltu AT,c_1,a2 | ||
| 1957 | daddu c_2,AT | 2001 | daddu c_2,AT |
| 2002 | dsll t_2,1 | ||
| 2003 | slt a2,t_1,zero | ||
| 2004 | daddu t_2,a2 | ||
| 2005 | dsll t_1,1 | ||
| 1958 | daddu c_3,t_1 | 2006 | daddu c_3,t_1 |
| 1959 | sltu AT,c_3,t_1 | 2007 | sltu AT,c_3,t_1 |
| 1960 | daddu t_2,AT | 2008 | daddu t_2,AT |
| @@ -1966,15 +2014,17 @@ LEAF(bn_sqr_comba8) | |||
| 1966 | dmultu a_7,a_5 /* mul_add_c2(a[7],b[5],c1,c2,c3); */ | 2014 | dmultu a_7,a_5 /* mul_add_c2(a[7],b[5],c1,c2,c3); */ |
| 1967 | mflo t_1 | 2015 | mflo t_1 |
| 1968 | mfhi t_2 | 2016 | mfhi t_2 |
| 1969 | daddu c_1,t_1 | 2017 | slt c_3,t_2,zero |
| 1970 | sltu AT,c_1,t_1 | 2018 | dsll t_2,1 |
| 1971 | daddu a2,t_2,AT | 2019 | slt a2,t_1,zero |
| 1972 | daddu c_2,a2 | 2020 | daddu t_2,a2 |
| 2021 | dsll t_1,1 | ||
| 1973 | daddu c_1,t_1 | 2022 | daddu c_1,t_1 |
| 1974 | sltu AT,c_1,t_1 | 2023 | sltu AT,c_1,t_1 |
| 1975 | daddu t_2,AT | 2024 | daddu t_2,AT |
| 1976 | daddu c_2,t_2 | 2025 | daddu c_2,t_2 |
| 1977 | sltu c_3,c_2,t_2 | 2026 | sltu AT,c_2,t_2 |
| 2027 | daddu c_3,AT | ||
| 1978 | dmultu a_6,a_6 /* mul_add_c(a[6],b[6],c1,c2,c3); */ | 2028 | dmultu a_6,a_6 /* mul_add_c(a[6],b[6],c1,c2,c3); */ |
| 1979 | mflo t_1 | 2029 | mflo t_1 |
| 1980 | mfhi t_2 | 2030 | mfhi t_2 |
| @@ -1989,15 +2039,17 @@ LEAF(bn_sqr_comba8) | |||
| 1989 | dmultu a_6,a_7 /* mul_add_c2(a[6],b[7],c2,c3,c1); */ | 2039 | dmultu a_6,a_7 /* mul_add_c2(a[6],b[7],c2,c3,c1); */ |
| 1990 | mflo t_1 | 2040 | mflo t_1 |
| 1991 | mfhi t_2 | 2041 | mfhi t_2 |
| 1992 | daddu c_2,t_1 | 2042 | slt c_1,t_2,zero |
| 1993 | sltu AT,c_2,t_1 | 2043 | dsll t_2,1 |
| 1994 | daddu a2,t_2,AT | 2044 | slt a2,t_1,zero |
| 1995 | daddu c_3,a2 | 2045 | daddu t_2,a2 |
| 2046 | dsll t_1,1 | ||
| 1996 | daddu c_2,t_1 | 2047 | daddu c_2,t_1 |
| 1997 | sltu AT,c_2,t_1 | 2048 | sltu AT,c_2,t_1 |
| 1998 | daddu t_2,AT | 2049 | daddu t_2,AT |
| 1999 | daddu c_3,t_2 | 2050 | daddu c_3,t_2 |
| 2000 | sltu c_1,c_3,t_2 | 2051 | sltu AT,c_3,t_2 |
| 2052 | daddu c_1,AT | ||
| 2001 | sd c_2,104(a0) | 2053 | sd c_2,104(a0) |
| 2002 | 2054 | ||
| 2003 | dmultu a_7,a_7 /* mul_add_c(a[7],b[7],c3,c1,c2); */ | 2055 | dmultu a_7,a_7 /* mul_add_c(a[7],b[7],c3,c1,c2); */ |
| @@ -2028,28 +2080,30 @@ LEAF(bn_sqr_comba4) | |||
| 2028 | dmultu a_0,a_1 /* mul_add_c2(a[0],b[1],c2,c3,c1); */ | 2080 | dmultu a_0,a_1 /* mul_add_c2(a[0],b[1],c2,c3,c1); */ |
| 2029 | mflo t_1 | 2081 | mflo t_1 |
| 2030 | mfhi t_2 | 2082 | mfhi t_2 |
| 2083 | slt c_1,t_2,zero | ||
| 2084 | dsll t_2,1 | ||
| 2085 | slt a2,t_1,zero | ||
| 2086 | daddu t_2,a2 | ||
| 2087 | dsll t_1,1 | ||
| 2031 | daddu c_2,t_1 | 2088 | daddu c_2,t_1 |
| 2032 | sltu AT,c_2,t_1 | 2089 | sltu AT,c_2,t_1 |
| 2033 | daddu c_3,t_2,AT | 2090 | daddu c_3,t_2,AT |
| 2034 | daddu c_2,t_1 | ||
| 2035 | sltu AT,c_2,t_1 | ||
| 2036 | daddu t_2,AT | ||
| 2037 | daddu c_3,t_2 | ||
| 2038 | sltu c_1,c_3,t_2 | ||
| 2039 | sd c_2,8(a0) | 2091 | sd c_2,8(a0) |
| 2040 | 2092 | ||
| 2041 | dmultu a_2,a_0 /* mul_add_c2(a[2],b[0],c3,c1,c2); */ | 2093 | dmultu a_2,a_0 /* mul_add_c2(a[2],b[0],c3,c1,c2); */ |
| 2042 | mflo t_1 | 2094 | mflo t_1 |
| 2043 | mfhi t_2 | 2095 | mfhi t_2 |
| 2044 | daddu c_3,t_1 | 2096 | slt c_2,t_2,zero |
| 2045 | sltu AT,c_3,t_1 | 2097 | dsll t_2,1 |
| 2046 | daddu a2,t_2,AT | 2098 | slt a2,t_1,zero |
| 2047 | daddu c_1,a2 | 2099 | daddu t_2,a2 |
| 2100 | dsll t_1,1 | ||
| 2048 | daddu c_3,t_1 | 2101 | daddu c_3,t_1 |
| 2049 | sltu AT,c_3,t_1 | 2102 | sltu AT,c_3,t_1 |
| 2050 | daddu t_2,AT | 2103 | daddu t_2,AT |
| 2051 | daddu c_1,t_2 | 2104 | daddu c_1,t_2 |
| 2052 | sltu c_2,c_1,t_2 | 2105 | sltu AT,c_1,t_2 |
| 2106 | daddu c_2,AT | ||
| 2053 | dmultu a_1,a_1 /* mul_add_c(a[1],b[1],c3,c1,c2); */ | 2107 | dmultu a_1,a_1 /* mul_add_c(a[1],b[1],c3,c1,c2); */ |
| 2054 | mflo t_1 | 2108 | mflo t_1 |
| 2055 | mfhi t_2 | 2109 | mfhi t_2 |
| @@ -2064,24 +2118,26 @@ LEAF(bn_sqr_comba4) | |||
| 2064 | dmultu a_0,a_3 /* mul_add_c2(a[0],b[3],c1,c2,c3); */ | 2118 | dmultu a_0,a_3 /* mul_add_c2(a[0],b[3],c1,c2,c3); */ |
| 2065 | mflo t_1 | 2119 | mflo t_1 |
| 2066 | mfhi t_2 | 2120 | mfhi t_2 |
| 2067 | daddu c_1,t_1 | 2121 | slt c_3,t_2,zero |
| 2068 | sltu AT,c_1,t_1 | 2122 | dsll t_2,1 |
| 2069 | daddu a2,t_2,AT | 2123 | slt a2,t_1,zero |
| 2070 | daddu c_2,a2 | 2124 | daddu t_2,a2 |
| 2125 | dsll t_1,1 | ||
| 2071 | daddu c_1,t_1 | 2126 | daddu c_1,t_1 |
| 2072 | sltu AT,c_1,t_1 | 2127 | sltu AT,c_1,t_1 |
| 2073 | daddu t_2,AT | 2128 | daddu t_2,AT |
| 2074 | daddu c_2,t_2 | 2129 | daddu c_2,t_2 |
| 2075 | sltu c_3,c_2,t_2 | 2130 | sltu AT,c_2,t_2 |
| 2131 | daddu c_3,AT | ||
| 2076 | dmultu a_1,a_2 /* mul_add_c(a2[1],b[2],c1,c2,c3); */ | 2132 | dmultu a_1,a_2 /* mul_add_c(a2[1],b[2],c1,c2,c3); */ |
| 2077 | mflo t_1 | 2133 | mflo t_1 |
| 2078 | mfhi t_2 | 2134 | mfhi t_2 |
| 2079 | daddu c_1,t_1 | 2135 | slt AT,t_2,zero |
| 2080 | sltu AT,c_1,t_1 | ||
| 2081 | daddu a2,t_2,AT | ||
| 2082 | daddu c_2,a2 | ||
| 2083 | sltu AT,c_2,a2 | ||
| 2084 | daddu c_3,AT | 2136 | daddu c_3,AT |
| 2137 | dsll t_2,1 | ||
| 2138 | slt a2,t_1,zero | ||
| 2139 | daddu t_2,a2 | ||
| 2140 | dsll t_1,1 | ||
| 2085 | daddu c_1,t_1 | 2141 | daddu c_1,t_1 |
| 2086 | sltu AT,c_1,t_1 | 2142 | sltu AT,c_1,t_1 |
| 2087 | daddu t_2,AT | 2143 | daddu t_2,AT |
| @@ -2093,15 +2149,17 @@ LEAF(bn_sqr_comba4) | |||
| 2093 | dmultu a_3,a_1 /* mul_add_c2(a[3],b[1],c2,c3,c1); */ | 2149 | dmultu a_3,a_1 /* mul_add_c2(a[3],b[1],c2,c3,c1); */ |
| 2094 | mflo t_1 | 2150 | mflo t_1 |
| 2095 | mfhi t_2 | 2151 | mfhi t_2 |
| 2096 | daddu c_2,t_1 | 2152 | slt c_1,t_2,zero |
| 2097 | sltu AT,c_2,t_1 | 2153 | dsll t_2,1 |
| 2098 | daddu a2,t_2,AT | 2154 | slt a2,t_1,zero |
| 2099 | daddu c_3,a2 | 2155 | daddu t_2,a2 |
| 2156 | dsll t_1,1 | ||
| 2100 | daddu c_2,t_1 | 2157 | daddu c_2,t_1 |
| 2101 | sltu AT,c_2,t_1 | 2158 | sltu AT,c_2,t_1 |
| 2102 | daddu t_2,AT | 2159 | daddu t_2,AT |
| 2103 | daddu c_3,t_2 | 2160 | daddu c_3,t_2 |
| 2104 | sltu c_1,c_3,t_2 | 2161 | sltu AT,c_3,t_2 |
| 2162 | daddu c_1,AT | ||
| 2105 | dmultu a_2,a_2 /* mul_add_c(a[2],b[2],c2,c3,c1); */ | 2163 | dmultu a_2,a_2 /* mul_add_c(a[2],b[2],c2,c3,c1); */ |
| 2106 | mflo t_1 | 2164 | mflo t_1 |
| 2107 | mfhi t_2 | 2165 | mfhi t_2 |
| @@ -2116,15 +2174,17 @@ LEAF(bn_sqr_comba4) | |||
| 2116 | dmultu a_2,a_3 /* mul_add_c2(a[2],b[3],c3,c1,c2); */ | 2174 | dmultu a_2,a_3 /* mul_add_c2(a[2],b[3],c3,c1,c2); */ |
| 2117 | mflo t_1 | 2175 | mflo t_1 |
| 2118 | mfhi t_2 | 2176 | mfhi t_2 |
| 2119 | daddu c_3,t_1 | 2177 | slt c_2,t_2,zero |
| 2120 | sltu AT,c_3,t_1 | 2178 | dsll t_2,1 |
| 2121 | daddu a2,t_2,AT | 2179 | slt a2,t_1,zero |
| 2122 | daddu c_1,a2 | 2180 | daddu t_2,a2 |
| 2181 | dsll t_1,1 | ||
| 2123 | daddu c_3,t_1 | 2182 | daddu c_3,t_1 |
| 2124 | sltu AT,c_3,t_1 | 2183 | sltu AT,c_3,t_1 |
| 2125 | daddu t_2,AT | 2184 | daddu t_2,AT |
| 2126 | daddu c_1,t_2 | 2185 | daddu c_1,t_2 |
| 2127 | sltu c_2,c_1,t_2 | 2186 | sltu AT,c_1,t_2 |
| 2187 | daddu c_2,AT | ||
| 2128 | sd c_3,40(a0) | 2188 | sd c_3,40(a0) |
| 2129 | 2189 | ||
| 2130 | dmultu a_3,a_3 /* mul_add_c(a[3],b[3],c1,c2,c3); */ | 2190 | dmultu a_3,a_3 /* mul_add_c(a[3],b[3],c1,c2,c3); */ |
diff --git a/src/lib/libcrypto/cryptlib.c b/src/lib/libcrypto/cryptlib.c index 9de60fd528..a7a9262133 100644 --- a/src/lib/libcrypto/cryptlib.c +++ b/src/lib/libcrypto/cryptlib.c | |||
| @@ -241,7 +241,7 @@ void CRYPTO_destroy_dynlockid(int i) | |||
| 241 | } | 241 | } |
| 242 | else | 242 | else |
| 243 | #endif | 243 | #endif |
| 244 | if (--(pointer->references) <= 0) | 244 | if (pointer->references <= 0) |
| 245 | { | 245 | { |
| 246 | sk_CRYPTO_dynlock_set(dyn_locks, i, NULL); | 246 | sk_CRYPTO_dynlock_set(dyn_locks, i, NULL); |
| 247 | } | 247 | } |
| @@ -396,16 +396,15 @@ void CRYPTO_lock(int mode, int type, const char *file, int line) | |||
| 396 | #endif | 396 | #endif |
| 397 | if (type < 0) | 397 | if (type < 0) |
| 398 | { | 398 | { |
| 399 | int i = -type - 1; | ||
| 400 | struct CRYPTO_dynlock_value *pointer | 399 | struct CRYPTO_dynlock_value *pointer |
| 401 | = CRYPTO_get_dynlock_value(i); | 400 | = CRYPTO_get_dynlock_value(type); |
| 402 | 401 | ||
| 403 | if (pointer) | 402 | if (pointer && dynlock_lock_callback) |
| 404 | { | 403 | { |
| 405 | dynlock_lock_callback(mode, pointer, file, line); | 404 | dynlock_lock_callback(mode, pointer, file, line); |
| 406 | } | 405 | } |
| 407 | 406 | ||
| 408 | CRYPTO_destroy_dynlockid(i); | 407 | CRYPTO_destroy_dynlockid(type); |
| 409 | } | 408 | } |
| 410 | else | 409 | else |
| 411 | if (locking_callback != NULL) | 410 | if (locking_callback != NULL) |
| @@ -431,7 +430,6 @@ int CRYPTO_add_lock(int *pointer, int amount, int type, const char *file, | |||
| 431 | CRYPTO_get_lock_name(type), | 430 | CRYPTO_get_lock_name(type), |
| 432 | file,line); | 431 | file,line); |
| 433 | #endif | 432 | #endif |
| 434 | *pointer=ret; | ||
| 435 | } | 433 | } |
| 436 | else | 434 | else |
| 437 | { | 435 | { |
diff --git a/src/lib/libcrypto/dsa/dsa.h b/src/lib/libcrypto/dsa/dsa.h index 65689a3426..12b60a8faa 100644 --- a/src/lib/libcrypto/dsa/dsa.h +++ b/src/lib/libcrypto/dsa/dsa.h | |||
| @@ -248,6 +248,7 @@ DH *DSA_dup_DH(DSA *r); | |||
| 248 | 248 | ||
| 249 | /* Reason codes. */ | 249 | /* Reason codes. */ |
| 250 | #define DSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 100 | 250 | #define DSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 100 |
| 251 | #define DSA_R_MISSING_PARAMETERS 101 | ||
| 251 | 252 | ||
| 252 | #ifdef __cplusplus | 253 | #ifdef __cplusplus |
| 253 | } | 254 | } |
diff --git a/src/lib/libcrypto/dsa/dsa_err.c b/src/lib/libcrypto/dsa/dsa_err.c index 2b3ab3a9ad..736aeef7c4 100644 --- a/src/lib/libcrypto/dsa/dsa_err.c +++ b/src/lib/libcrypto/dsa/dsa_err.c | |||
| @@ -85,6 +85,7 @@ static ERR_STRING_DATA DSA_str_functs[]= | |||
| 85 | static ERR_STRING_DATA DSA_str_reasons[]= | 85 | static ERR_STRING_DATA DSA_str_reasons[]= |
| 86 | { | 86 | { |
| 87 | {DSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE ,"data too large for key size"}, | 87 | {DSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE ,"data too large for key size"}, |
| 88 | {DSA_R_MISSING_PARAMETERS ,"missing parameters"}, | ||
| 88 | {0,NULL} | 89 | {0,NULL} |
| 89 | }; | 90 | }; |
| 90 | 91 | ||
diff --git a/src/lib/libcrypto/dsa/dsa_ossl.c b/src/lib/libcrypto/dsa/dsa_ossl.c index 5cbbdddfb9..34c6e9a141 100644 --- a/src/lib/libcrypto/dsa/dsa_ossl.c +++ b/src/lib/libcrypto/dsa/dsa_ossl.c | |||
| @@ -108,6 +108,11 @@ static DSA_SIG *dsa_do_sign(const unsigned char *dgst, int dlen, DSA *dsa) | |||
| 108 | int i,reason=ERR_R_BN_LIB; | 108 | int i,reason=ERR_R_BN_LIB; |
| 109 | DSA_SIG *ret=NULL; | 109 | DSA_SIG *ret=NULL; |
| 110 | 110 | ||
| 111 | if (!dsa->p || !dsa->q || !dsa->g) | ||
| 112 | { | ||
| 113 | reason=DSA_R_MISSING_PARAMETERS; | ||
| 114 | goto err; | ||
| 115 | } | ||
| 111 | BN_init(&m); | 116 | BN_init(&m); |
| 112 | BN_init(&xr); | 117 | BN_init(&xr); |
| 113 | s=BN_new(); | 118 | s=BN_new(); |
| @@ -170,6 +175,11 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp) | |||
| 170 | BIGNUM k,*kinv=NULL,*r=NULL; | 175 | BIGNUM k,*kinv=NULL,*r=NULL; |
| 171 | int ret=0; | 176 | int ret=0; |
| 172 | 177 | ||
| 178 | if (!dsa->p || !dsa->q || !dsa->g) | ||
| 179 | { | ||
| 180 | DSAerr(DSA_F_DSA_SIGN_SETUP,DSA_R_MISSING_PARAMETERS); | ||
| 181 | return 0; | ||
| 182 | } | ||
| 173 | if (ctx_in == NULL) | 183 | if (ctx_in == NULL) |
| 174 | { | 184 | { |
| 175 | if ((ctx=BN_CTX_new()) == NULL) goto err; | 185 | if ((ctx=BN_CTX_new()) == NULL) goto err; |
| @@ -233,6 +243,17 @@ static int dsa_do_verify(const unsigned char *dgst, int dgst_len, DSA_SIG *sig, | |||
| 233 | BN_init(&u2); | 243 | BN_init(&u2); |
| 234 | BN_init(&t1); | 244 | BN_init(&t1); |
| 235 | 245 | ||
| 246 | if (BN_is_zero(sig->r) || sig->r->neg || BN_ucmp(sig->r, dsa->q) >= 0) | ||
| 247 | { | ||
| 248 | ret = 0; | ||
| 249 | goto err; | ||
| 250 | } | ||
| 251 | if (BN_is_zero(sig->s) || sig->s->neg || BN_ucmp(sig->s, dsa->q) >= 0) | ||
| 252 | { | ||
| 253 | ret = 0; | ||
| 254 | goto err; | ||
| 255 | } | ||
| 256 | |||
| 236 | /* Calculate W = inv(S) mod Q | 257 | /* Calculate W = inv(S) mod Q |
| 237 | * save W in u2 */ | 258 | * save W in u2 */ |
| 238 | if ((BN_mod_inverse(&u2,sig->s,dsa->q,ctx)) == NULL) goto err; | 259 | if ((BN_mod_inverse(&u2,sig->s,dsa->q,ctx)) == NULL) goto err; |
diff --git a/src/lib/libcrypto/evp/e_bf.c b/src/lib/libcrypto/evp/e_bf.c index 72047f64da..53559b0b65 100644 --- a/src/lib/libcrypto/evp/e_bf.c +++ b/src/lib/libcrypto/evp/e_bf.c | |||
| @@ -67,7 +67,7 @@ static int bf_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, | |||
| 67 | const unsigned char *iv, int enc); | 67 | const unsigned char *iv, int enc); |
| 68 | 68 | ||
| 69 | IMPLEMENT_BLOCK_CIPHER(bf, bf_ks, BF, bf_ks, NID_bf, 8, 16, 8, | 69 | IMPLEMENT_BLOCK_CIPHER(bf, bf_ks, BF, bf_ks, NID_bf, 8, 16, 8, |
| 70 | 0, bf_init_key, NULL, | 70 | EVP_CIPH_VARIABLE_LENGTH, bf_init_key, NULL, |
| 71 | EVP_CIPHER_set_asn1_iv, EVP_CIPHER_get_asn1_iv, NULL) | 71 | EVP_CIPHER_set_asn1_iv, EVP_CIPHER_get_asn1_iv, NULL) |
| 72 | 72 | ||
| 73 | static int bf_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, | 73 | static int bf_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, |
diff --git a/src/lib/libcrypto/evp/evp.h b/src/lib/libcrypto/evp/evp.h index 76d417b44a..fd43127092 100644 --- a/src/lib/libcrypto/evp/evp.h +++ b/src/lib/libcrypto/evp/evp.h | |||
| @@ -553,9 +553,9 @@ int EVP_read_pw_string(char *buf,int length,const char *prompt,int verify); | |||
| 553 | void EVP_set_pw_prompt(char *prompt); | 553 | void EVP_set_pw_prompt(char *prompt); |
| 554 | char * EVP_get_pw_prompt(void); | 554 | char * EVP_get_pw_prompt(void); |
| 555 | 555 | ||
| 556 | int EVP_BytesToKey(const EVP_CIPHER *type,EVP_MD *md,unsigned char *salt, | 556 | int EVP_BytesToKey(const EVP_CIPHER *type, EVP_MD *md, |
| 557 | unsigned char *data, int datal, int count, | 557 | const unsigned char *salt, const unsigned char *data, int datal, |
| 558 | unsigned char *key,unsigned char *iv); | 558 | int count, unsigned char *key, unsigned char *iv); |
| 559 | 559 | ||
| 560 | int EVP_EncryptInit(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *type, | 560 | int EVP_EncryptInit(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *type, |
| 561 | unsigned char *key, unsigned char *iv); | 561 | unsigned char *key, unsigned char *iv); |
diff --git a/src/lib/libcrypto/evp/evp_key.c b/src/lib/libcrypto/evp/evp_key.c index 09b72bf4bd..e7434ef9b2 100644 --- a/src/lib/libcrypto/evp/evp_key.c +++ b/src/lib/libcrypto/evp/evp_key.c | |||
| @@ -95,9 +95,9 @@ int EVP_read_pw_string(char *buf, int len, const char *prompt, int verify) | |||
| 95 | #endif | 95 | #endif |
| 96 | } | 96 | } |
| 97 | 97 | ||
| 98 | int EVP_BytesToKey(const EVP_CIPHER *type, EVP_MD *md, unsigned char *salt, | 98 | int EVP_BytesToKey(const EVP_CIPHER *type, EVP_MD *md, |
| 99 | unsigned char *data, int datal, int count, unsigned char *key, | 99 | const unsigned char *salt, const unsigned char *data, int datal, |
| 100 | unsigned char *iv) | 100 | int count, unsigned char *key, unsigned char *iv) |
| 101 | { | 101 | { |
| 102 | EVP_MD_CTX c; | 102 | EVP_MD_CTX c; |
| 103 | unsigned char md_buf[EVP_MAX_MD_SIZE]; | 103 | unsigned char md_buf[EVP_MAX_MD_SIZE]; |
diff --git a/src/lib/libcrypto/opensslv.h b/src/lib/libcrypto/opensslv.h index dc50f6d7da..4b25018e49 100644 --- a/src/lib/libcrypto/opensslv.h +++ b/src/lib/libcrypto/opensslv.h | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | #define HEADER_OPENSSLV_H | 2 | #define HEADER_OPENSSLV_H |
| 3 | 3 | ||
| 4 | /* Numeric release version identifier: | 4 | /* Numeric release version identifier: |
| 5 | * MMNNFFPPS: major minor fix patch status | 5 | * MNNFFPPS: major minor fix patch status |
| 6 | * The status nibble has one of the values 0 for development, 1 to e for betas | 6 | * The status nibble has one of the values 0 for development, 1 to e for betas |
| 7 | * 1 to 14, and f for release. The patch level is exactly that. | 7 | * 1 to 14, and f for release. The patch level is exactly that. |
| 8 | * For example: | 8 | * For example: |
| @@ -25,8 +25,8 @@ | |||
| 25 | * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for | 25 | * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for |
| 26 | * major minor fix final patch/beta) | 26 | * major minor fix final patch/beta) |
| 27 | */ | 27 | */ |
| 28 | #define OPENSSL_VERSION_NUMBER 0x0090601fL | 28 | #define OPENSSL_VERSION_NUMBER 0x0090602fL |
| 29 | #define OPENSSL_VERSION_TEXT "OpenSSL 0.9.6a [engine] 5 Apr 2001" | 29 | #define OPENSSL_VERSION_TEXT "OpenSSL 0.9.6b [engine] 9 Jul 2001" |
| 30 | #define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT | 30 | #define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT |
| 31 | 31 | ||
| 32 | 32 | ||
diff --git a/src/lib/libcrypto/perlasm/x86unix.pl b/src/lib/libcrypto/perlasm/x86unix.pl index 309060ea00..10a7af8bff 100644 --- a/src/lib/libcrypto/perlasm/x86unix.pl +++ b/src/lib/libcrypto/perlasm/x86unix.pl | |||
| @@ -79,7 +79,7 @@ sub main'DWP | |||
| 79 | local($addr,$reg1,$reg2,$idx)=@_; | 79 | local($addr,$reg1,$reg2,$idx)=@_; |
| 80 | 80 | ||
| 81 | $ret=""; | 81 | $ret=""; |
| 82 | $addr =~ s/(^|[+ \t])([A-Za-z_]+)($|[+ \t])/$1$under$2$3/; | 82 | $addr =~ s/(^|[+ \t])([A-Za-z_]+[A-Za-z0-9_]+)($|[+ \t])/$1$under$2$3/; |
| 83 | $reg1="$regs{$reg1}" if defined($regs{$reg1}); | 83 | $reg1="$regs{$reg1}" if defined($regs{$reg1}); |
| 84 | $reg2="$regs{$reg2}" if defined($regs{$reg2}); | 84 | $reg2="$regs{$reg2}" if defined($regs{$reg2}); |
| 85 | $ret.=$addr if ($addr ne "") && ($addr ne 0); | 85 | $ret.=$addr if ($addr ne "") && ($addr ne 0); |
diff --git a/src/lib/libcrypto/rand/md_rand.c b/src/lib/libcrypto/rand/md_rand.c index ae57570608..04b9d695b0 100644 --- a/src/lib/libcrypto/rand/md_rand.c +++ b/src/lib/libcrypto/rand/md_rand.c | |||
| @@ -141,10 +141,11 @@ static long md_count[2]={0,0}; | |||
| 141 | static double entropy=0; | 141 | static double entropy=0; |
| 142 | static int initialized=0; | 142 | static int initialized=0; |
| 143 | 143 | ||
| 144 | /* This should be set to 1 only when ssleay_rand_add() is called inside | 144 | static unsigned int crypto_lock_rand = 0; /* may be set only when a thread |
| 145 | an already locked state, so it doesn't try to lock and thereby cause | 145 | * holds CRYPTO_LOCK_RAND |
| 146 | a hang. And it should always be reset back to 0 before unlocking. */ | 146 | * (to prevent double locking) */ |
| 147 | static int add_do_not_lock=0; | 147 | static unsigned long locking_thread = 0; /* valid iff crypto_lock_rand is set */ |
| 148 | |||
| 148 | 149 | ||
| 149 | #ifdef PREDICT | 150 | #ifdef PREDICT |
| 150 | int rand_predictable=0; | 151 | int rand_predictable=0; |
| @@ -191,6 +192,7 @@ static void ssleay_rand_add(const void *buf, int num, double add) | |||
| 191 | long md_c[2]; | 192 | long md_c[2]; |
| 192 | unsigned char local_md[MD_DIGEST_LENGTH]; | 193 | unsigned char local_md[MD_DIGEST_LENGTH]; |
| 193 | MD_CTX m; | 194 | MD_CTX m; |
| 195 | int do_not_lock; | ||
| 194 | 196 | ||
| 195 | /* | 197 | /* |
| 196 | * (Based on the rand(3) manpage) | 198 | * (Based on the rand(3) manpage) |
| @@ -207,7 +209,10 @@ static void ssleay_rand_add(const void *buf, int num, double add) | |||
| 207 | * hash function. | 209 | * hash function. |
| 208 | */ | 210 | */ |
| 209 | 211 | ||
| 210 | if (!add_do_not_lock) CRYPTO_w_lock(CRYPTO_LOCK_RAND); | 212 | /* check if we already have the lock */ |
| 213 | do_not_lock = crypto_lock_rand && (locking_thread == CRYPTO_thread_id()); | ||
| 214 | |||
| 215 | if (!do_not_lock) CRYPTO_w_lock(CRYPTO_LOCK_RAND); | ||
| 211 | st_idx=state_index; | 216 | st_idx=state_index; |
| 212 | 217 | ||
| 213 | /* use our own copies of the counters so that even | 218 | /* use our own copies of the counters so that even |
| @@ -239,7 +244,7 @@ static void ssleay_rand_add(const void *buf, int num, double add) | |||
| 239 | 244 | ||
| 240 | md_count[1] += (num / MD_DIGEST_LENGTH) + (num % MD_DIGEST_LENGTH > 0); | 245 | md_count[1] += (num / MD_DIGEST_LENGTH) + (num % MD_DIGEST_LENGTH > 0); |
| 241 | 246 | ||
| 242 | if (!add_do_not_lock) CRYPTO_w_unlock(CRYPTO_LOCK_RAND); | 247 | if (!do_not_lock) CRYPTO_w_unlock(CRYPTO_LOCK_RAND); |
| 243 | 248 | ||
| 244 | for (i=0; i<num; i+=MD_DIGEST_LENGTH) | 249 | for (i=0; i<num; i+=MD_DIGEST_LENGTH) |
| 245 | { | 250 | { |
| @@ -281,7 +286,7 @@ static void ssleay_rand_add(const void *buf, int num, double add) | |||
| 281 | } | 286 | } |
| 282 | memset((char *)&m,0,sizeof(m)); | 287 | memset((char *)&m,0,sizeof(m)); |
| 283 | 288 | ||
| 284 | if (!add_do_not_lock) CRYPTO_w_lock(CRYPTO_LOCK_RAND); | 289 | if (!do_not_lock) CRYPTO_w_lock(CRYPTO_LOCK_RAND); |
| 285 | /* Don't just copy back local_md into md -- this could mean that | 290 | /* Don't just copy back local_md into md -- this could mean that |
| 286 | * other thread's seeding remains without effect (except for | 291 | * other thread's seeding remains without effect (except for |
| 287 | * the incremented counter). By XORing it we keep at least as | 292 | * the incremented counter). By XORing it we keep at least as |
| @@ -292,7 +297,7 @@ static void ssleay_rand_add(const void *buf, int num, double add) | |||
| 292 | } | 297 | } |
| 293 | if (entropy < ENTROPY_NEEDED) /* stop counting when we have enough */ | 298 | if (entropy < ENTROPY_NEEDED) /* stop counting when we have enough */ |
| 294 | entropy += add; | 299 | entropy += add; |
| 295 | if (!add_do_not_lock) CRYPTO_w_unlock(CRYPTO_LOCK_RAND); | 300 | if (!do_not_lock) CRYPTO_w_unlock(CRYPTO_LOCK_RAND); |
| 296 | 301 | ||
| 297 | #if !defined(THREADS) && !defined(WIN32) | 302 | #if !defined(THREADS) && !defined(WIN32) |
| 298 | assert(md_c[1] == md_count[1]); | 303 | assert(md_c[1] == md_count[1]); |
| @@ -340,28 +345,31 @@ static int ssleay_rand_bytes(unsigned char *buf, int num) | |||
| 340 | * | 345 | * |
| 341 | * For each group of 10 bytes (or less), we do the following: | 346 | * For each group of 10 bytes (or less), we do the following: |
| 342 | * | 347 | * |
| 343 | * Input into the hash function the top 10 bytes from the | 348 | * Input into the hash function the local 'md' (which is initialized from |
| 344 | * local 'md' (which is initialized from the global 'md' | 349 | * the global 'md' before any bytes are generated), the bytes that are to |
| 345 | * before any bytes are generated), the bytes that are | 350 | * be overwritten by the random bytes, and bytes from the 'state' |
| 346 | * to be overwritten by the random bytes, and bytes from the | 351 | * (incrementing looping index). From this digest output (which is kept |
| 347 | * 'state' (incrementing looping index). From this digest output | 352 | * in 'md'), the top (up to) 10 bytes are returned to the caller and the |
| 348 | * (which is kept in 'md'), the top (up to) 10 bytes are | 353 | * bottom 10 bytes are xored into the 'state'. |
| 349 | * returned to the caller and the bottom (up to) 10 bytes are xored | 354 | * |
| 350 | * into the 'state'. | ||
| 351 | * Finally, after we have finished 'num' random bytes for the | 355 | * Finally, after we have finished 'num' random bytes for the |
| 352 | * caller, 'count' (which is incremented) and the local and global 'md' | 356 | * caller, 'count' (which is incremented) and the local and global 'md' |
| 353 | * are fed into the hash function and the results are kept in the | 357 | * are fed into the hash function and the results are kept in the |
| 354 | * global 'md'. | 358 | * global 'md'. |
| 355 | */ | 359 | */ |
| 356 | 360 | ||
| 357 | if (!initialized) | ||
| 358 | RAND_poll(); | ||
| 359 | |||
| 360 | CRYPTO_w_lock(CRYPTO_LOCK_RAND); | 361 | CRYPTO_w_lock(CRYPTO_LOCK_RAND); |
| 361 | add_do_not_lock = 1; /* Since we call ssleay_rand_add while in | ||
| 362 | this locked state. */ | ||
| 363 | 362 | ||
| 364 | initialized = 1; | 363 | /* prevent ssleay_rand_bytes() from trying to obtain the lock again */ |
| 364 | crypto_lock_rand = 1; | ||
| 365 | locking_thread = CRYPTO_thread_id(); | ||
| 366 | |||
| 367 | if (!initialized) | ||
| 368 | { | ||
| 369 | RAND_poll(); | ||
| 370 | initialized = 1; | ||
| 371 | } | ||
| 372 | |||
| 365 | if (!stirred_pool) | 373 | if (!stirred_pool) |
| 366 | do_stir_pool = 1; | 374 | do_stir_pool = 1; |
| 367 | 375 | ||
| @@ -387,11 +395,11 @@ static int ssleay_rand_bytes(unsigned char *buf, int num) | |||
| 387 | 395 | ||
| 388 | if (do_stir_pool) | 396 | if (do_stir_pool) |
| 389 | { | 397 | { |
| 390 | /* Our output function chains only half of 'md', so we better | 398 | /* In the output function only half of 'md' remains secret, |
| 391 | * make sure that the required entropy gets 'evenly distributed' | 399 | * so we better make sure that the required entropy gets |
| 392 | * through 'state', our randomness pool. The input function | 400 | * 'evenly distributed' through 'state', our randomness pool. |
| 393 | * (ssleay_rand_add) chains all of 'md', which makes it more | 401 | * The input function (ssleay_rand_add) chains all of 'md', |
| 394 | * suitable for this purpose. | 402 | * which makes it more suitable for this purpose. |
| 395 | */ | 403 | */ |
| 396 | 404 | ||
| 397 | int n = STATE_SIZE; /* so that the complete pool gets accessed */ | 405 | int n = STATE_SIZE; /* so that the complete pool gets accessed */ |
| @@ -425,8 +433,9 @@ static int ssleay_rand_bytes(unsigned char *buf, int num) | |||
| 425 | 433 | ||
| 426 | md_count[0] += 1; | 434 | md_count[0] += 1; |
| 427 | 435 | ||
| 428 | add_do_not_lock = 0; /* If this would ever be forgotten, we can | 436 | /* before unlocking, we must clear 'crypto_lock_rand' */ |
| 429 | expect any evil god to eat our souls. */ | 437 | crypto_lock_rand = 0; |
| 438 | locking_thread = 0; | ||
| 430 | CRYPTO_w_unlock(CRYPTO_LOCK_RAND); | 439 | CRYPTO_w_unlock(CRYPTO_LOCK_RAND); |
| 431 | 440 | ||
| 432 | while (num > 0) | 441 | while (num > 0) |
| @@ -492,11 +501,12 @@ static int ssleay_rand_bytes(unsigned char *buf, int num) | |||
| 492 | static int ssleay_rand_pseudo_bytes(unsigned char *buf, int num) | 501 | static int ssleay_rand_pseudo_bytes(unsigned char *buf, int num) |
| 493 | { | 502 | { |
| 494 | int ret; | 503 | int ret; |
| 504 | unsigned long err; | ||
| 495 | 505 | ||
| 496 | ret = RAND_bytes(buf, num); | 506 | ret = RAND_bytes(buf, num); |
| 497 | if (ret == 0) | 507 | if (ret == 0) |
| 498 | { | 508 | { |
| 499 | long err = ERR_peek_error(); | 509 | err = ERR_peek_error(); |
| 500 | if (ERR_GET_LIB(err) == ERR_LIB_RAND && | 510 | if (ERR_GET_LIB(err) == ERR_LIB_RAND && |
| 501 | ERR_GET_REASON(err) == RAND_R_PRNG_NOT_SEEDED) | 511 | ERR_GET_REASON(err) == RAND_R_PRNG_NOT_SEEDED) |
| 502 | (void)ERR_get_error(); | 512 | (void)ERR_get_error(); |
| @@ -507,14 +517,37 @@ static int ssleay_rand_pseudo_bytes(unsigned char *buf, int num) | |||
| 507 | static int ssleay_rand_status(void) | 517 | static int ssleay_rand_status(void) |
| 508 | { | 518 | { |
| 509 | int ret; | 519 | int ret; |
| 520 | int do_not_lock; | ||
| 510 | 521 | ||
| 522 | /* check if we already have the lock | ||
| 523 | * (could happen if a RAND_poll() implementation calls RAND_status()) */ | ||
| 524 | do_not_lock = crypto_lock_rand && (locking_thread == CRYPTO_thread_id()); | ||
| 525 | |||
| 526 | if (!do_not_lock) | ||
| 527 | { | ||
| 528 | CRYPTO_w_lock(CRYPTO_LOCK_RAND); | ||
| 529 | |||
| 530 | /* prevent ssleay_rand_bytes() from trying to obtain the lock again */ | ||
| 531 | crypto_lock_rand = 1; | ||
| 532 | locking_thread = CRYPTO_thread_id(); | ||
| 533 | } | ||
| 534 | |||
| 511 | if (!initialized) | 535 | if (!initialized) |
| 536 | { | ||
| 512 | RAND_poll(); | 537 | RAND_poll(); |
| 538 | initialized = 1; | ||
| 539 | } | ||
| 513 | 540 | ||
| 514 | CRYPTO_w_lock(CRYPTO_LOCK_RAND); | ||
| 515 | initialized = 1; | ||
| 516 | ret = entropy >= ENTROPY_NEEDED; | 541 | ret = entropy >= ENTROPY_NEEDED; |
| 517 | CRYPTO_w_unlock(CRYPTO_LOCK_RAND); | ||
| 518 | 542 | ||
| 543 | if (!do_not_lock) | ||
| 544 | { | ||
| 545 | /* before unlocking, we must clear 'crypto_lock_rand' */ | ||
| 546 | crypto_lock_rand = 0; | ||
| 547 | locking_thread = 0; | ||
| 548 | |||
| 549 | CRYPTO_w_unlock(CRYPTO_LOCK_RAND); | ||
| 550 | } | ||
| 551 | |||
| 519 | return ret; | 552 | return ret; |
| 520 | } | 553 | } |
diff --git a/src/lib/libcrypto/rand/randfile.c b/src/lib/libcrypto/rand/randfile.c index f4376cf8cc..2ffb84c89e 100644 --- a/src/lib/libcrypto/rand/randfile.c +++ b/src/lib/libcrypto/rand/randfile.c | |||
| @@ -233,6 +233,12 @@ const char *RAND_file_name(char *buf, size_t size) | |||
| 233 | { | 233 | { |
| 234 | if (issetugid() == 0) | 234 | if (issetugid() == 0) |
| 235 | s=getenv("HOME"); | 235 | s=getenv("HOME"); |
| 236 | #ifdef DEFAULT_HOME | ||
| 237 | if (s == NULL) | ||
| 238 | { | ||
| 239 | s = DEFAULT_HOME; | ||
| 240 | } | ||
| 241 | #endif | ||
| 236 | if (s && *s && strlen(s)+strlen(RFILE)+2 < size) | 242 | if (s && *s && strlen(s)+strlen(RFILE)+2 < size) |
| 237 | { | 243 | { |
| 238 | strlcpy(buf,s,size); | 244 | strlcpy(buf,s,size); |
| @@ -242,7 +248,7 @@ const char *RAND_file_name(char *buf, size_t size) | |||
| 242 | strlcat(buf,RFILE,size); | 248 | strlcat(buf,RFILE,size); |
| 243 | ret=buf; | 249 | ret=buf; |
| 244 | } | 250 | } |
| 245 | else | 251 | else |
| 246 | buf[0] = '\0'; /* no file name */ | 252 | buf[0] = '\0'; /* no file name */ |
| 247 | } | 253 | } |
| 248 | 254 | ||
diff --git a/src/lib/libcrypto/rsa/rsa_oaep.c b/src/lib/libcrypto/rsa/rsa_oaep.c index fd0b7f361f..1849e55cd5 100644 --- a/src/lib/libcrypto/rsa/rsa_oaep.c +++ b/src/lib/libcrypto/rsa/rsa_oaep.c | |||
| @@ -77,14 +77,16 @@ int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen, | |||
| 77 | int i, dblen, mlen = -1; | 77 | int i, dblen, mlen = -1; |
| 78 | unsigned char *maskeddb; | 78 | unsigned char *maskeddb; |
| 79 | int lzero; | 79 | int lzero; |
| 80 | unsigned char *db, seed[SHA_DIGEST_LENGTH], phash[SHA_DIGEST_LENGTH]; | 80 | unsigned char *db = NULL, seed[SHA_DIGEST_LENGTH], phash[SHA_DIGEST_LENGTH]; |
| 81 | 81 | ||
| 82 | if (--num < 2 * SHA_DIGEST_LENGTH + 1) | 82 | if (--num < 2 * SHA_DIGEST_LENGTH + 1) |
| 83 | { | 83 | goto decoding_err; |
| 84 | RSAerr(RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP, RSA_R_OAEP_DECODING_ERROR); | ||
| 85 | return (-1); | ||
| 86 | } | ||
| 87 | 84 | ||
| 85 | lzero = num - flen; | ||
| 86 | if (lzero < 0) | ||
| 87 | goto decoding_err; | ||
| 88 | maskeddb = from - lzero + SHA_DIGEST_LENGTH; | ||
| 89 | |||
| 88 | dblen = num - SHA_DIGEST_LENGTH; | 90 | dblen = num - SHA_DIGEST_LENGTH; |
| 89 | db = OPENSSL_malloc(dblen); | 91 | db = OPENSSL_malloc(dblen); |
| 90 | if (db == NULL) | 92 | if (db == NULL) |
| @@ -93,9 +95,6 @@ int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen, | |||
| 93 | return (-1); | 95 | return (-1); |
| 94 | } | 96 | } |
| 95 | 97 | ||
| 96 | lzero = num - flen; | ||
| 97 | maskeddb = from - lzero + SHA_DIGEST_LENGTH; | ||
| 98 | |||
| 99 | MGF1(seed, SHA_DIGEST_LENGTH, maskeddb, dblen); | 98 | MGF1(seed, SHA_DIGEST_LENGTH, maskeddb, dblen); |
| 100 | for (i = lzero; i < SHA_DIGEST_LENGTH; i++) | 99 | for (i = lzero; i < SHA_DIGEST_LENGTH; i++) |
| 101 | seed[i] ^= from[i - lzero]; | 100 | seed[i] ^= from[i - lzero]; |
| @@ -107,21 +106,20 @@ int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen, | |||
| 107 | SHA1(param, plen, phash); | 106 | SHA1(param, plen, phash); |
| 108 | 107 | ||
| 109 | if (memcmp(db, phash, SHA_DIGEST_LENGTH) != 0) | 108 | if (memcmp(db, phash, SHA_DIGEST_LENGTH) != 0) |
| 110 | RSAerr(RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP, RSA_R_OAEP_DECODING_ERROR); | 109 | goto decoding_err; |
| 111 | else | 110 | else |
| 112 | { | 111 | { |
| 113 | for (i = SHA_DIGEST_LENGTH; i < dblen; i++) | 112 | for (i = SHA_DIGEST_LENGTH; i < dblen; i++) |
| 114 | if (db[i] != 0x00) | 113 | if (db[i] != 0x00) |
| 115 | break; | 114 | break; |
| 116 | if (db[i] != 0x01 || i++ >= dblen) | 115 | if (db[i] != 0x01 || i++ >= dblen) |
| 117 | RSAerr(RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP, | 116 | goto decoding_err; |
| 118 | RSA_R_OAEP_DECODING_ERROR); | ||
| 119 | else | 117 | else |
| 120 | { | 118 | { |
| 121 | mlen = dblen - i; | 119 | mlen = dblen - i; |
| 122 | if (tlen < mlen) | 120 | if (tlen < mlen) |
| 123 | { | 121 | { |
| 124 | RSAerr(RSA_F_RSA_PADDING_ADD_PKCS1_OAEP, RSA_R_DATA_TOO_LARGE); | 122 | RSAerr(RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP, RSA_R_DATA_TOO_LARGE); |
| 125 | mlen = -1; | 123 | mlen = -1; |
| 126 | } | 124 | } |
| 127 | else | 125 | else |
| @@ -130,6 +128,13 @@ int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen, | |||
| 130 | } | 128 | } |
| 131 | OPENSSL_free(db); | 129 | OPENSSL_free(db); |
| 132 | return (mlen); | 130 | return (mlen); |
| 131 | |||
| 132 | decoding_err: | ||
| 133 | /* to avoid chosen ciphertext attacks, the error message should not reveal | ||
| 134 | * which kind of decoding error happened */ | ||
| 135 | RSAerr(RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP, RSA_R_OAEP_DECODING_ERROR); | ||
| 136 | if (db != NULL) OPENSSL_free(db); | ||
| 137 | return -1; | ||
| 133 | } | 138 | } |
| 134 | 139 | ||
| 135 | int MGF1(unsigned char *mask, long len, unsigned char *seed, long seedlen) | 140 | int MGF1(unsigned char *mask, long len, unsigned char *seed, long seedlen) |
diff --git a/src/lib/libcrypto/x509/x509_obj.c b/src/lib/libcrypto/x509/x509_obj.c index 6a3ba8eb15..f0271fdfa1 100644 --- a/src/lib/libcrypto/x509/x509_obj.c +++ b/src/lib/libcrypto/x509/x509_obj.c | |||
| @@ -214,6 +214,8 @@ int i; | |||
| 214 | } | 214 | } |
| 215 | else | 215 | else |
| 216 | p=buf; | 216 | p=buf; |
| 217 | if (i == 0) | ||
| 218 | *p = '\0'; | ||
| 217 | return(p); | 219 | return(p); |
| 218 | err: | 220 | err: |
| 219 | X509err(X509_F_X509_NAME_ONELINE,ERR_R_MALLOC_FAILURE); | 221 | X509err(X509_F_X509_NAME_ONELINE,ERR_R_MALLOC_FAILURE); |
diff --git a/src/lib/libcrypto/x509/x509_trs.c b/src/lib/libcrypto/x509/x509_trs.c index a7b1543461..86b3b79dcc 100644 --- a/src/lib/libcrypto/x509/x509_trs.c +++ b/src/lib/libcrypto/x509/x509_trs.c | |||
| @@ -228,7 +228,8 @@ int X509_TRUST_get_trust(X509_TRUST *xp) | |||
| 228 | 228 | ||
| 229 | static int trust_1oidany(X509_TRUST *trust, X509 *x, int flags) | 229 | static int trust_1oidany(X509_TRUST *trust, X509 *x, int flags) |
| 230 | { | 230 | { |
| 231 | if(x->aux) return obj_trust(trust->arg1, x, flags); | 231 | if(x->aux && (x->aux->trust || x->aux->reject)) |
| 232 | return obj_trust(trust->arg1, x, flags); | ||
| 232 | /* we don't have any trust settings: for compatibility | 233 | /* we don't have any trust settings: for compatibility |
| 233 | * we return trusted if it is self signed | 234 | * we return trusted if it is self signed |
| 234 | */ | 235 | */ |
