Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 
 
 

494 rindas
11 KiB

  1. /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  2. * All rights reserved.
  3. *
  4. * This package is an SSL implementation written
  5. * by Eric Young (eay@cryptsoft.com).
  6. * The implementation was written so as to conform with Netscapes SSL.
  7. *
  8. * This library is free for commercial and non-commercial use as long as
  9. * the following conditions are aheared to. The following conditions
  10. * apply to all code found in this distribution, be it the RC4, RSA,
  11. * lhash, DES, etc., code; not just the SSL code. The SSL documentation
  12. * included with this distribution is covered by the same copyright terms
  13. * except that the holder is Tim Hudson (tjh@cryptsoft.com).
  14. *
  15. * Copyright remains Eric Young's, and as such any Copyright notices in
  16. * the code are not to be removed.
  17. * If this package is used in a product, Eric Young should be given attribution
  18. * as the author of the parts of the library used.
  19. * This can be in the form of a textual message at program startup or
  20. * in documentation (online or textual) provided with the package.
  21. *
  22. * Redistribution and use in source and binary forms, with or without
  23. * modification, are permitted provided that the following conditions
  24. * are met:
  25. * 1. Redistributions of source code must retain the copyright
  26. * notice, this list of conditions and the following disclaimer.
  27. * 2. Redistributions in binary form must reproduce the above copyright
  28. * notice, this list of conditions and the following disclaimer in the
  29. * documentation and/or other materials provided with the distribution.
  30. * 3. All advertising materials mentioning features or use of this software
  31. * must display the following acknowledgement:
  32. * "This product includes cryptographic software written by
  33. * Eric Young (eay@cryptsoft.com)"
  34. * The word 'cryptographic' can be left out if the rouines from the library
  35. * being used are not cryptographic related :-).
  36. * 4. If you include any Windows specific code (or a derivative thereof) from
  37. * the apps directory (application code) you must include an acknowledgement:
  38. * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
  39. *
  40. * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
  41. * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  42. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  43. * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  44. * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  45. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  46. * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  47. * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  48. * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  49. * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  50. * SUCH DAMAGE.
  51. *
  52. * The licence and distribution terms for any publically available version or
  53. * derivative of this code cannot be changed. i.e. this code cannot simply be
  54. * copied and put under another distribution licence
  55. * [including the GNU Public Licence.] */
  56. #ifndef OPENSSL_HEADER_BN_INTERNAL_H
  57. #define OPENSSL_HEADER_BN_INTERNAL_H
  58. #include <openssl/base.h>
  59. #if defined(__cplusplus)
  60. extern "C" {
  61. #endif
  62. static void ripemd160_block_data_order(uint32_t h[5], const uint8_t *data,
  63. size_t num);
  64. #define DATA_ORDER_IS_LITTLE_ENDIAN
  65. #define HASH_LONG uint32_t
  66. #define HASH_CTX RIPEMD160_CTX
  67. #define HASH_CBLOCK RIPEMD160_CBLOCK
  68. #define HASH_UPDATE RIPEMD160_Update
  69. #define HASH_TRANSFORM RIPEMD160_Transform
  70. #define HASH_FINAL RIPEMD160_Final
  71. #define HASH_MAKE_STRING(c, s) \
  72. do { \
  73. unsigned long ll; \
  74. ll = (c)->h[0]; \
  75. HOST_l2c(ll, (s)); \
  76. ll = (c)->h[1]; \
  77. HOST_l2c(ll, (s)); \
  78. ll = (c)->h[2]; \
  79. HOST_l2c(ll, (s)); \
  80. ll = (c)->h[3]; \
  81. HOST_l2c(ll, (s)); \
  82. ll = (c)->h[4]; \
  83. HOST_l2c(ll, (s)); \
  84. } while (0)
  85. #define HASH_BLOCK_DATA_ORDER ripemd160_block_data_order
  86. #include "../../crypto/fipsmodule/digest/md32_common.h"
  87. // Transformed F2 and F4 are courtesy of Wei Dai <weidai@eskimo.com>
  88. #define F1(x, y, z) ((x) ^ (y) ^ (z))
  89. #define F2(x, y, z) ((((y) ^ (z)) & (x)) ^ (z))
  90. #define F3(x, y, z) (((~(y)) | (x)) ^ (z))
  91. #define F4(x, y, z) ((((x) ^ (y)) & (z)) ^ (y))
  92. #define F5(x, y, z) (((~(z)) | (y)) ^ (x))
  93. #define RIPEMD160_A 0x67452301L
  94. #define RIPEMD160_B 0xEFCDAB89L
  95. #define RIPEMD160_C 0x98BADCFEL
  96. #define RIPEMD160_D 0x10325476L
  97. #define RIPEMD160_E 0xC3D2E1F0L
  98. #define ROTATE(a, n) (((a) << (n)) | (((a)&0xffffffff) >> (32 - (n))))
  99. #define RIP1(a, b, c, d, e, w, s) \
  100. { \
  101. a += F1(b, c, d) + X(w); \
  102. a = ROTATE(a, s) + e; \
  103. c = ROTATE(c, 10); \
  104. }
  105. #define RIP2(a, b, c, d, e, w, s, K) \
  106. { \
  107. a += F2(b, c, d) + X(w) + K; \
  108. a = ROTATE(a, s) + e; \
  109. c = ROTATE(c, 10); \
  110. }
  111. #define RIP3(a, b, c, d, e, w, s, K) \
  112. { \
  113. a += F3(b, c, d) + X(w) + K; \
  114. a = ROTATE(a, s) + e; \
  115. c = ROTATE(c, 10); \
  116. }
  117. #define RIP4(a, b, c, d, e, w, s, K) \
  118. { \
  119. a += F4(b, c, d) + X(w) + K; \
  120. a = ROTATE(a, s) + e; \
  121. c = ROTATE(c, 10); \
  122. }
  123. #define RIP5(a, b, c, d, e, w, s, K) \
  124. { \
  125. a += F5(b, c, d) + X(w) + K; \
  126. a = ROTATE(a, s) + e; \
  127. c = ROTATE(c, 10); \
  128. }
  129. #define KL0 0x00000000L
  130. #define KL1 0x5A827999L
  131. #define KL2 0x6ED9EBA1L
  132. #define KL3 0x8F1BBCDCL
  133. #define KL4 0xA953FD4EL
  134. #define KR0 0x50A28BE6L
  135. #define KR1 0x5C4DD124L
  136. #define KR2 0x6D703EF3L
  137. #define KR3 0x7A6D76E9L
  138. #define KR4 0x00000000L
  139. #define WL00 0
  140. #define SL00 11
  141. #define WL01 1
  142. #define SL01 14
  143. #define WL02 2
  144. #define SL02 15
  145. #define WL03 3
  146. #define SL03 12
  147. #define WL04 4
  148. #define SL04 5
  149. #define WL05 5
  150. #define SL05 8
  151. #define WL06 6
  152. #define SL06 7
  153. #define WL07 7
  154. #define SL07 9
  155. #define WL08 8
  156. #define SL08 11
  157. #define WL09 9
  158. #define SL09 13
  159. #define WL10 10
  160. #define SL10 14
  161. #define WL11 11
  162. #define SL11 15
  163. #define WL12 12
  164. #define SL12 6
  165. #define WL13 13
  166. #define SL13 7
  167. #define WL14 14
  168. #define SL14 9
  169. #define WL15 15
  170. #define SL15 8
  171. #define WL16 7
  172. #define SL16 7
  173. #define WL17 4
  174. #define SL17 6
  175. #define WL18 13
  176. #define SL18 8
  177. #define WL19 1
  178. #define SL19 13
  179. #define WL20 10
  180. #define SL20 11
  181. #define WL21 6
  182. #define SL21 9
  183. #define WL22 15
  184. #define SL22 7
  185. #define WL23 3
  186. #define SL23 15
  187. #define WL24 12
  188. #define SL24 7
  189. #define WL25 0
  190. #define SL25 12
  191. #define WL26 9
  192. #define SL26 15
  193. #define WL27 5
  194. #define SL27 9
  195. #define WL28 2
  196. #define SL28 11
  197. #define WL29 14
  198. #define SL29 7
  199. #define WL30 11
  200. #define SL30 13
  201. #define WL31 8
  202. #define SL31 12
  203. #define WL32 3
  204. #define SL32 11
  205. #define WL33 10
  206. #define SL33 13
  207. #define WL34 14
  208. #define SL34 6
  209. #define WL35 4
  210. #define SL35 7
  211. #define WL36 9
  212. #define SL36 14
  213. #define WL37 15
  214. #define SL37 9
  215. #define WL38 8
  216. #define SL38 13
  217. #define WL39 1
  218. #define SL39 15
  219. #define WL40 2
  220. #define SL40 14
  221. #define WL41 7
  222. #define SL41 8
  223. #define WL42 0
  224. #define SL42 13
  225. #define WL43 6
  226. #define SL43 6
  227. #define WL44 13
  228. #define SL44 5
  229. #define WL45 11
  230. #define SL45 12
  231. #define WL46 5
  232. #define SL46 7
  233. #define WL47 12
  234. #define SL47 5
  235. #define WL48 1
  236. #define SL48 11
  237. #define WL49 9
  238. #define SL49 12
  239. #define WL50 11
  240. #define SL50 14
  241. #define WL51 10
  242. #define SL51 15
  243. #define WL52 0
  244. #define SL52 14
  245. #define WL53 8
  246. #define SL53 15
  247. #define WL54 12
  248. #define SL54 9
  249. #define WL55 4
  250. #define SL55 8
  251. #define WL56 13
  252. #define SL56 9
  253. #define WL57 3
  254. #define SL57 14
  255. #define WL58 7
  256. #define SL58 5
  257. #define WL59 15
  258. #define SL59 6
  259. #define WL60 14
  260. #define SL60 8
  261. #define WL61 5
  262. #define SL61 6
  263. #define WL62 6
  264. #define SL62 5
  265. #define WL63 2
  266. #define SL63 12
  267. #define WL64 4
  268. #define SL64 9
  269. #define WL65 0
  270. #define SL65 15
  271. #define WL66 5
  272. #define SL66 5
  273. #define WL67 9
  274. #define SL67 11
  275. #define WL68 7
  276. #define SL68 6
  277. #define WL69 12
  278. #define SL69 8
  279. #define WL70 2
  280. #define SL70 13
  281. #define WL71 10
  282. #define SL71 12
  283. #define WL72 14
  284. #define SL72 5
  285. #define WL73 1
  286. #define SL73 12
  287. #define WL74 3
  288. #define SL74 13
  289. #define WL75 8
  290. #define SL75 14
  291. #define WL76 11
  292. #define SL76 11
  293. #define WL77 6
  294. #define SL77 8
  295. #define WL78 15
  296. #define SL78 5
  297. #define WL79 13
  298. #define SL79 6
  299. #define WR00 5
  300. #define SR00 8
  301. #define WR01 14
  302. #define SR01 9
  303. #define WR02 7
  304. #define SR02 9
  305. #define WR03 0
  306. #define SR03 11
  307. #define WR04 9
  308. #define SR04 13
  309. #define WR05 2
  310. #define SR05 15
  311. #define WR06 11
  312. #define SR06 15
  313. #define WR07 4
  314. #define SR07 5
  315. #define WR08 13
  316. #define SR08 7
  317. #define WR09 6
  318. #define SR09 7
  319. #define WR10 15
  320. #define SR10 8
  321. #define WR11 8
  322. #define SR11 11
  323. #define WR12 1
  324. #define SR12 14
  325. #define WR13 10
  326. #define SR13 14
  327. #define WR14 3
  328. #define SR14 12
  329. #define WR15 12
  330. #define SR15 6
  331. #define WR16 6
  332. #define SR16 9
  333. #define WR17 11
  334. #define SR17 13
  335. #define WR18 3
  336. #define SR18 15
  337. #define WR19 7
  338. #define SR19 7
  339. #define WR20 0
  340. #define SR20 12
  341. #define WR21 13
  342. #define SR21 8
  343. #define WR22 5
  344. #define SR22 9
  345. #define WR23 10
  346. #define SR23 11
  347. #define WR24 14
  348. #define SR24 7
  349. #define WR25 15
  350. #define SR25 7
  351. #define WR26 8
  352. #define SR26 12
  353. #define WR27 12
  354. #define SR27 7
  355. #define WR28 4
  356. #define SR28 6
  357. #define WR29 9
  358. #define SR29 15
  359. #define WR30 1
  360. #define SR30 13
  361. #define WR31 2
  362. #define SR31 11
  363. #define WR32 15
  364. #define SR32 9
  365. #define WR33 5
  366. #define SR33 7
  367. #define WR34 1
  368. #define SR34 15
  369. #define WR35 3
  370. #define SR35 11
  371. #define WR36 7
  372. #define SR36 8
  373. #define WR37 14
  374. #define SR37 6
  375. #define WR38 6
  376. #define SR38 6
  377. #define WR39 9
  378. #define SR39 14
  379. #define WR40 11
  380. #define SR40 12
  381. #define WR41 8
  382. #define SR41 13
  383. #define WR42 12
  384. #define SR42 5
  385. #define WR43 2
  386. #define SR43 14
  387. #define WR44 10
  388. #define SR44 13
  389. #define WR45 0
  390. #define SR45 13
  391. #define WR46 4
  392. #define SR46 7
  393. #define WR47 13
  394. #define SR47 5
  395. #define WR48 8
  396. #define SR48 15
  397. #define WR49 6
  398. #define SR49 5
  399. #define WR50 4
  400. #define SR50 8
  401. #define WR51 1
  402. #define SR51 11
  403. #define WR52 3
  404. #define SR52 14
  405. #define WR53 11
  406. #define SR53 14
  407. #define WR54 15
  408. #define SR54 6
  409. #define WR55 0
  410. #define SR55 14
  411. #define WR56 5
  412. #define SR56 6
  413. #define WR57 12
  414. #define SR57 9
  415. #define WR58 2
  416. #define SR58 12
  417. #define WR59 13
  418. #define SR59 9
  419. #define WR60 9
  420. #define SR60 12
  421. #define WR61 7
  422. #define SR61 5
  423. #define WR62 10
  424. #define SR62 15
  425. #define WR63 14
  426. #define SR63 8
  427. #define WR64 12
  428. #define SR64 8
  429. #define WR65 15
  430. #define SR65 5
  431. #define WR66 10
  432. #define SR66 12
  433. #define WR67 4
  434. #define SR67 9
  435. #define WR68 1
  436. #define SR68 12
  437. #define WR69 5
  438. #define SR69 5
  439. #define WR70 8
  440. #define SR70 14
  441. #define WR71 7
  442. #define SR71 6
  443. #define WR72 6
  444. #define SR72 8
  445. #define WR73 2
  446. #define SR73 13
  447. #define WR74 13
  448. #define SR74 6
  449. #define WR75 14
  450. #define SR75 5
  451. #define WR76 0
  452. #define SR76 15
  453. #define WR77 3
  454. #define SR77 13
  455. #define WR78 9
  456. #define SR78 11
  457. #define WR79 11
  458. #define SR79 11
  459. #if defined(__cplusplus)
  460. } // extern C
  461. #endif
  462. #endif // OPENSSL_HEADER_BN_INTERNAL_H