OLD | NEW |
1 /* crypto/bn/bn_lib.c */ | 1 /* crypto/bn/bn_lib.c */ |
2 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 * All rights reserved. | 3 * All rights reserved. |
4 * | 4 * |
5 * This package is an SSL implementation written | 5 * This package is an SSL implementation written |
6 * by Eric Young (eay@cryptsoft.com). | 6 * by Eric Young (eay@cryptsoft.com). |
7 * The implementation was written so as to conform with Netscapes SSL. | 7 * The implementation was written so as to conform with Netscapes SSL. |
8 * | 8 * |
9 * This library is free for commercial and non-commercial use as long as | 9 * This library is free for commercial and non-commercial use as long as |
10 * the following conditions are aheared to. The following conditions | 10 * the following conditions are aheared to. The following conditions |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 if (which == 0) return(bn_limit_bits); | 126 if (which == 0) return(bn_limit_bits); |
127 else if (which == 1) return(bn_limit_bits_high); | 127 else if (which == 1) return(bn_limit_bits_high); |
128 else if (which == 2) return(bn_limit_bits_low); | 128 else if (which == 2) return(bn_limit_bits_low); |
129 else if (which == 3) return(bn_limit_bits_mont); | 129 else if (which == 3) return(bn_limit_bits_mont); |
130 else return(0); | 130 else return(0); |
131 } | 131 } |
132 #endif | 132 #endif |
133 | 133 |
134 const BIGNUM *BN_value_one(void) | 134 const BIGNUM *BN_value_one(void) |
135 { | 135 { |
136 » static BN_ULONG data_one=1L; | 136 » static const BN_ULONG data_one=1L; |
137 » static BIGNUM const_one={&data_one,1,1,0,BN_FLG_STATIC_DATA}; | 137 » static const BIGNUM const_one={(BN_ULONG *)&data_one,1,1,0,BN_FLG_STATIC
_DATA}; |
138 | 138 |
139 return(&const_one); | 139 return(&const_one); |
140 } | 140 } |
141 | 141 |
| 142 char *BN_options(void) |
| 143 { |
| 144 static int init=0; |
| 145 static char data[16]; |
| 146 |
| 147 if (!init) |
| 148 { |
| 149 init++; |
| 150 #ifdef BN_LLONG |
| 151 BIO_snprintf(data,sizeof data,"bn(%d,%d)", |
| 152 (int)sizeof(BN_ULLONG)*8,(int)sizeof(BN_ULONG)*8); |
| 153 #else |
| 154 BIO_snprintf(data,sizeof data,"bn(%d,%d)", |
| 155 (int)sizeof(BN_ULONG)*8,(int)sizeof(BN_ULONG)*8); |
| 156 #endif |
| 157 } |
| 158 return(data); |
| 159 } |
| 160 |
142 int BN_num_bits_word(BN_ULONG l) | 161 int BN_num_bits_word(BN_ULONG l) |
143 { | 162 { |
144 » static const char bits[256]={ | 163 » static const unsigned char bits[256]={ |
145 0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4, | 164 0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4, |
146 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, | 165 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, |
147 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, | 166 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, |
148 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, | 167 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, |
149 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, | 168 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, |
150 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, | 169 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, |
151 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, | 170 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, |
152 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, | 171 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, |
153 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, | 172 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, |
154 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, | 173 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
209 #if defined(THIRTY_TWO_BIT) || defined(SIXTY_FOUR_BIT) || defined(SIXTY_FOUR_BIT
_LONG) | 228 #if defined(THIRTY_TWO_BIT) || defined(SIXTY_FOUR_BIT) || defined(SIXTY_FOUR_BIT
_LONG) |
210 if (l & 0xffff0000L) | 229 if (l & 0xffff0000L) |
211 { | 230 { |
212 if (l & 0xff000000L) | 231 if (l & 0xff000000L) |
213 return(bits[(int)(l>>24L)]+24); | 232 return(bits[(int)(l>>24L)]+24); |
214 else return(bits[(int)(l>>16L)]+16); | 233 else return(bits[(int)(l>>16L)]+16); |
215 } | 234 } |
216 else | 235 else |
217 #endif | 236 #endif |
218 { | 237 { |
219 #if defined(SIXTEEN_BIT) || defined(THIRTY_TWO_BIT) || defined(SIXTY_FOUR_BIT) |
| defined(SIXTY_FOUR_BIT_LONG) | 238 #if defined(THIRTY_TWO_BIT) || defined(SIXTY_FOUR_BIT) || defined(SIXTY_FOUR_BIT
_LONG) |
220 if (l & 0xff00L) | 239 if (l & 0xff00L) |
221 return(bits[(int)(l>>8)]+8); | 240 return(bits[(int)(l>>8)]+8); |
222 else | 241 else |
223 #endif | 242 #endif |
224 return(bits[(int)(l )] ); | 243 return(bits[(int)(l )] ); |
225 } | 244 } |
226 } | 245 } |
227 } | 246 } |
228 | 247 |
229 int BN_num_bits(const BIGNUM *a) | 248 int BN_num_bits(const BIGNUM *a) |
(...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
737 | 756 |
738 int BN_is_bit_set(const BIGNUM *a, int n) | 757 int BN_is_bit_set(const BIGNUM *a, int n) |
739 { | 758 { |
740 int i,j; | 759 int i,j; |
741 | 760 |
742 bn_check_top(a); | 761 bn_check_top(a); |
743 if (n < 0) return 0; | 762 if (n < 0) return 0; |
744 i=n/BN_BITS2; | 763 i=n/BN_BITS2; |
745 j=n%BN_BITS2; | 764 j=n%BN_BITS2; |
746 if (a->top <= i) return 0; | 765 if (a->top <= i) return 0; |
747 » return(((a->d[i])>>j)&((BN_ULONG)1)); | 766 » return (int)(((a->d[i])>>j)&((BN_ULONG)1)); |
748 } | 767 } |
749 | 768 |
750 int BN_mask_bits(BIGNUM *a, int n) | 769 int BN_mask_bits(BIGNUM *a, int n) |
751 { | 770 { |
752 int b,w; | 771 int b,w; |
753 | 772 |
754 bn_check_top(a); | 773 bn_check_top(a); |
755 if (n < 0) return 0; | 774 if (n < 0) return 0; |
756 | 775 |
757 w=n/BN_BITS2; | 776 w=n/BN_BITS2; |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
817 if (dl > 0) | 836 if (dl > 0) |
818 { | 837 { |
819 for (i=dl; i>0; i--) | 838 for (i=dl; i>0; i--) |
820 { | 839 { |
821 if (a[n+i] != 0) | 840 if (a[n+i] != 0) |
822 return 1; /* a > b */ | 841 return 1; /* a > b */ |
823 } | 842 } |
824 } | 843 } |
825 return bn_cmp_words(a,b,cl); | 844 return bn_cmp_words(a,b,cl); |
826 } | 845 } |
OLD | NEW |