@authon/react-native-wallet 0.0.0-stage → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +251 -2
  3. package/android/build.gradle +40 -0
  4. package/android/consumer-rules.pro +10 -0
  5. package/android/src/main/AndroidManifest.xml +8 -0
  6. package/android/src/main/java/dev/authon/reactnative/wallet/AuthonWalletModule.kt +235 -0
  7. package/android/src/vendor/GENERATED.md +4 -0
  8. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/AndroidCapabilityProbe.kt +86 -0
  9. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/AuthonWallet.kt +218 -0
  10. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Bitcoin.kt +296 -0
  11. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Bytes.kt +74 -0
  12. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Chains.kt +157 -0
  13. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/CredentialManagerPasskeys.kt +192 -0
  14. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Der.kt +17 -0
  15. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/DeviceStore.kt +170 -0
  16. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/DialogWalletApprover.kt +141 -0
  17. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Eip712.kt +176 -0
  18. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Encodings.kt +133 -0
  19. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/EvmAccount.kt +45 -0
  20. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/EvmTransaction.kt +180 -0
  21. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/GfTables.kt +44 -0
  22. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/HdWallet.kt +130 -0
  23. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Http.kt +86 -0
  24. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/JsValues.kt +83 -0
  25. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/KeystoreDeviceStore.kt +236 -0
  26. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Prf.kt +111 -0
  27. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Proof.kt +134 -0
  28. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Shamir.kt +106 -0
  29. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/SignSummary.kt +335 -0
  30. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Solana.kt +195 -0
  31. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Tron.kt +184 -0
  32. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/WalletApi.kt +361 -0
  33. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/WalletCapabilities.kt +91 -0
  34. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/WalletError.kt +74 -0
  35. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/WalletOps.kt +551 -0
  36. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/WalletTypes.kt +78 -0
  37. package/android/src/vendor/kotlin/dev/authon/sdk/wallet/Xrp.kt +193 -0
  38. package/build/authonContext.d.ts +19 -0
  39. package/build/authonContext.d.ts.map +1 -0
  40. package/build/authonContext.js +20 -0
  41. package/build/authonContext.js.map +1 -0
  42. package/build/client.d.ts +92 -0
  43. package/build/client.d.ts.map +1 -0
  44. package/build/client.js +431 -0
  45. package/build/client.js.map +1 -0
  46. package/build/errors.d.ts +25 -0
  47. package/build/errors.d.ts.map +1 -0
  48. package/build/errors.js +15 -0
  49. package/build/errors.js.map +1 -0
  50. package/build/index.d.ts +7 -0
  51. package/build/index.d.ts.map +1 -0
  52. package/build/index.js +4 -0
  53. package/build/index.js.map +1 -0
  54. package/build/native.d.ts +43 -0
  55. package/build/native.d.ts.map +1 -0
  56. package/build/native.js +12 -0
  57. package/build/native.js.map +1 -0
  58. package/build/types.d.ts +167 -0
  59. package/build/types.d.ts.map +1 -0
  60. package/build/types.js +3 -0
  61. package/build/types.js.map +1 -0
  62. package/build/useAuthonWallet.d.ts +25 -0
  63. package/build/useAuthonWallet.d.ts.map +1 -0
  64. package/build/useAuthonWallet.js +77 -0
  65. package/build/useAuthonWallet.js.map +1 -0
  66. package/expo-module.config.json +9 -0
  67. package/ios/AuthonReactNativeWallet.podspec +41 -0
  68. package/ios/AuthonWalletModule.swift +233 -0
  69. package/ios/vendor/AuthonWallet/AuthonWallet.swift +232 -0
  70. package/ios/vendor/AuthonWallet/Capabilities.swift +149 -0
  71. package/ios/vendor/AuthonWallet/Chains/Bitcoin.swift +296 -0
  72. package/ios/vendor/AuthonWallet/Chains/Solana.swift +207 -0
  73. package/ios/vendor/AuthonWallet/Chains/Tron.swift +181 -0
  74. package/ios/vendor/AuthonWallet/Chains/XRP.swift +191 -0
  75. package/ios/vendor/AuthonWallet/Crypto/BIP39Wordlist.swift +262 -0
  76. package/ios/vendor/AuthonWallet/Crypto/Chains.swift +278 -0
  77. package/ios/vendor/AuthonWallet/Crypto/HDKey.swift +108 -0
  78. package/ios/vendor/AuthonWallet/Crypto/Secp256k1.swift +128 -0
  79. package/ios/vendor/AuthonWallet/Crypto/Shamir.swift +123 -0
  80. package/ios/vendor/AuthonWallet/EVM/Address.swift +57 -0
  81. package/ios/vendor/AuthonWallet/EVM/EvmAccount.swift +48 -0
  82. package/ios/vendor/AuthonWallet/EVM/Transaction.swift +165 -0
  83. package/ios/vendor/AuthonWallet/EVM/TypedData.swift +193 -0
  84. package/ios/vendor/AuthonWallet/Support/BigInteger.swift +220 -0
  85. package/ios/vendor/AuthonWallet/Support/Bytes.swift +89 -0
  86. package/ios/vendor/AuthonWallet/Support/JSONValue.swift +341 -0
  87. package/ios/vendor/AuthonWallet/UI/WalletApprover.swift +250 -0
  88. package/ios/vendor/AuthonWallet/Wallet/Backup.swift +69 -0
  89. package/ios/vendor/AuthonWallet/Wallet/DeviceStore.swift +351 -0
  90. package/ios/vendor/AuthonWallet/Wallet/Passkeys.swift +190 -0
  91. package/ios/vendor/AuthonWallet/Wallet/Proof.swift +143 -0
  92. package/ios/vendor/AuthonWallet/Wallet/Shares.swift +116 -0
  93. package/ios/vendor/AuthonWallet/Wallet/Summary.swift +342 -0
  94. package/ios/vendor/AuthonWallet/Wallet/WalletAPI.swift +361 -0
  95. package/ios/vendor/AuthonWallet/Wallet/WalletOps.swift +654 -0
  96. package/ios/vendor/AuthonWallet/WalletError.swift +84 -0
  97. package/ios/vendor/CKeccak/LICENSE +22 -0
  98. package/ios/vendor/CKeccak/README.md +30 -0
  99. package/ios/vendor/CKeccak/byte_order.h +59 -0
  100. package/ios/vendor/CKeccak/include/ckeccak.h +13 -0
  101. package/ios/vendor/CKeccak/memzero.c +75 -0
  102. package/ios/vendor/CKeccak/memzero.h +8 -0
  103. package/ios/vendor/CKeccak/options.h +99 -0
  104. package/ios/vendor/CKeccak/ripemd160.c +343 -0
  105. package/ios/vendor/CKeccak/ripemd160.h +22 -0
  106. package/ios/vendor/CKeccak/sha3.c +413 -0
  107. package/ios/vendor/CKeccak/sha3.h +89 -0
  108. package/ios/vendor/CMonocypher/LICENCE.md +173 -0
  109. package/ios/vendor/CMonocypher/README.md +27 -0
  110. package/ios/vendor/CMonocypher/include/monocypher-ed25519.h +140 -0
  111. package/ios/vendor/CMonocypher/include/monocypher.h +321 -0
  112. package/ios/vendor/CMonocypher/monocypher-ed25519.c +500 -0
  113. package/ios/vendor/CMonocypher/monocypher.c +2956 -0
  114. package/ios/vendor/CSecp256k1/COPYING +19 -0
  115. package/ios/vendor/CSecp256k1/README.md +35 -0
  116. package/ios/vendor/CSecp256k1/build/precomputed_ecmult.c +3 -0
  117. package/ios/vendor/CSecp256k1/build/precomputed_ecmult_gen.c +3 -0
  118. package/ios/vendor/CSecp256k1/build/secp256k1.c +3 -0
  119. package/ios/vendor/CSecp256k1/include/secp256k1.h +899 -0
  120. package/ios/vendor/CSecp256k1/include/secp256k1_preallocated.h +134 -0
  121. package/ios/vendor/CSecp256k1/include/secp256k1_recovery.h +113 -0
  122. package/ios/vendor/CSecp256k1/src/assumptions.h +87 -0
  123. package/ios/vendor/CSecp256k1/src/checkmem.h +102 -0
  124. package/ios/vendor/CSecp256k1/src/ecdsa.h +21 -0
  125. package/ios/vendor/CSecp256k1/src/ecdsa_impl.h +304 -0
  126. package/ios/vendor/CSecp256k1/src/eckey.h +25 -0
  127. package/ios/vendor/CSecp256k1/src/eckey_impl.h +92 -0
  128. package/ios/vendor/CSecp256k1/src/ecmult.h +61 -0
  129. package/ios/vendor/CSecp256k1/src/ecmult_const.h +38 -0
  130. package/ios/vendor/CSecp256k1/src/ecmult_const_impl.h +399 -0
  131. package/ios/vendor/CSecp256k1/src/ecmult_gen.h +143 -0
  132. package/ios/vendor/CSecp256k1/src/ecmult_gen_impl.h +341 -0
  133. package/ios/vendor/CSecp256k1/src/ecmult_impl.h +853 -0
  134. package/ios/vendor/CSecp256k1/src/field.h +350 -0
  135. package/ios/vendor/CSecp256k1/src/field_10x26.h +57 -0
  136. package/ios/vendor/CSecp256k1/src/field_10x26_impl.h +1232 -0
  137. package/ios/vendor/CSecp256k1/src/field_5x52.h +62 -0
  138. package/ios/vendor/CSecp256k1/src/field_5x52_impl.h +522 -0
  139. package/ios/vendor/CSecp256k1/src/field_5x52_int128_impl.h +274 -0
  140. package/ios/vendor/CSecp256k1/src/field_impl.h +457 -0
  141. package/ios/vendor/CSecp256k1/src/group.h +212 -0
  142. package/ios/vendor/CSecp256k1/src/group_impl.h +974 -0
  143. package/ios/vendor/CSecp256k1/src/hash.h +44 -0
  144. package/ios/vendor/CSecp256k1/src/hash_impl.h +299 -0
  145. package/ios/vendor/CSecp256k1/src/hsort.h +33 -0
  146. package/ios/vendor/CSecp256k1/src/hsort_impl.h +125 -0
  147. package/ios/vendor/CSecp256k1/src/int128.h +90 -0
  148. package/ios/vendor/CSecp256k1/src/int128_impl.h +18 -0
  149. package/ios/vendor/CSecp256k1/src/int128_native.h +19 -0
  150. package/ios/vendor/CSecp256k1/src/int128_native_impl.h +94 -0
  151. package/ios/vendor/CSecp256k1/src/int128_struct.h +14 -0
  152. package/ios/vendor/CSecp256k1/src/int128_struct_impl.h +205 -0
  153. package/ios/vendor/CSecp256k1/src/modinv32.h +43 -0
  154. package/ios/vendor/CSecp256k1/src/modinv32_impl.h +725 -0
  155. package/ios/vendor/CSecp256k1/src/modinv64.h +47 -0
  156. package/ios/vendor/CSecp256k1/src/modinv64_impl.h +780 -0
  157. package/ios/vendor/CSecp256k1/src/modules/recovery/main_impl.h +159 -0
  158. package/ios/vendor/CSecp256k1/src/precomputed_ecmult.c +16456 -0
  159. package/ios/vendor/CSecp256k1/src/precomputed_ecmult.h +38 -0
  160. package/ios/vendor/CSecp256k1/src/precomputed_ecmult_gen.c +1779 -0
  161. package/ios/vendor/CSecp256k1/src/precomputed_ecmult_gen.h +26 -0
  162. package/ios/vendor/CSecp256k1/src/scalar.h +105 -0
  163. package/ios/vendor/CSecp256k1/src/scalar_4x64.h +19 -0
  164. package/ios/vendor/CSecp256k1/src/scalar_4x64_impl.h +1000 -0
  165. package/ios/vendor/CSecp256k1/src/scalar_8x32.h +19 -0
  166. package/ios/vendor/CSecp256k1/src/scalar_8x32_impl.h +816 -0
  167. package/ios/vendor/CSecp256k1/src/scalar_impl.h +321 -0
  168. package/ios/vendor/CSecp256k1/src/scalar_low.h +24 -0
  169. package/ios/vendor/CSecp256k1/src/scalar_low_impl.h +206 -0
  170. package/ios/vendor/CSecp256k1/src/scratch.h +44 -0
  171. package/ios/vendor/CSecp256k1/src/scratch_impl.h +99 -0
  172. package/ios/vendor/CSecp256k1/src/secp256k1.c +831 -0
  173. package/ios/vendor/CSecp256k1/src/selftest.h +32 -0
  174. package/ios/vendor/CSecp256k1/src/util.h +451 -0
  175. package/ios/vendor/GENERATED.md +4 -0
  176. package/package.json +66 -3
  177. package/src/authonContext.ts +30 -0
  178. package/src/client.ts +459 -0
  179. package/src/errors.ts +58 -0
  180. package/src/index.ts +26 -0
  181. package/src/native.ts +52 -0
  182. package/src/types.ts +171 -0
  183. package/src/useAuthonWallet.ts +103 -0
@@ -0,0 +1,343 @@
1
+ /*
2
+ * RIPE MD-160 implementation
3
+ *
4
+ * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may
8
+ * not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
15
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ *
19
+ * This file is part of mbed TLS (https://tls.mbed.org)
20
+ */
21
+
22
+ /*
23
+ * The RIPEMD-160 algorithm was designed by RIPE in 1996
24
+ * http://homes.esat.kuleuven.be/~bosselae/ripemd160.html
25
+ * http://ehash.iaik.tugraz.at/wiki/RIPEMD-160
26
+ */
27
+
28
+ #include <string.h>
29
+
30
+ #include "ripemd160.h"
31
+ #include "memzero.h"
32
+
33
+ /*
34
+ * 32-bit integer manipulation macros (little endian)
35
+ */
36
+ #ifndef GET_UINT32_LE
37
+ #define GET_UINT32_LE(n,b,i) \
38
+ { \
39
+ (n) = ( (uint32_t) (b)[(i) ] ) \
40
+ | ( (uint32_t) (b)[(i) + 1] << 8 ) \
41
+ | ( (uint32_t) (b)[(i) + 2] << 16 ) \
42
+ | ( (uint32_t) (b)[(i) + 3] << 24 ); \
43
+ }
44
+ #endif
45
+
46
+ #ifndef PUT_UINT32_LE
47
+ #define PUT_UINT32_LE(n,b,i) \
48
+ { \
49
+ (b)[(i) ] = (uint8_t) ( ( (n) ) & 0xFF ); \
50
+ (b)[(i) + 1] = (uint8_t) ( ( (n) >> 8 ) & 0xFF ); \
51
+ (b)[(i) + 2] = (uint8_t) ( ( (n) >> 16 ) & 0xFF ); \
52
+ (b)[(i) + 3] = (uint8_t) ( ( (n) >> 24 ) & 0xFF ); \
53
+ }
54
+ #endif
55
+
56
+ /*
57
+ * RIPEMD-160 context setup
58
+ */
59
+ void ripemd160_Init(RIPEMD160_CTX *ctx)
60
+ {
61
+ memzero(ctx, sizeof(RIPEMD160_CTX));
62
+ ctx->total[0] = 0;
63
+ ctx->total[1] = 0;
64
+ ctx->state[0] = 0x67452301;
65
+ ctx->state[1] = 0xEFCDAB89;
66
+ ctx->state[2] = 0x98BADCFE;
67
+ ctx->state[3] = 0x10325476;
68
+ ctx->state[4] = 0xC3D2E1F0;
69
+ }
70
+
71
+ #if !defined(MBEDTLS_RIPEMD160_PROCESS_ALT)
72
+ /*
73
+ * Process one block
74
+ */
75
+ void ripemd160_process( RIPEMD160_CTX *ctx, const uint8_t data[RIPEMD160_BLOCK_LENGTH] )
76
+ {
77
+ uint32_t A = 0, B = 0, C = 0, D = 0, E = 0, Ap = 0, Bp = 0, Cp = 0, Dp = 0, Ep = 0, X[16] = {0};
78
+
79
+ GET_UINT32_LE( X[ 0], data, 0 );
80
+ GET_UINT32_LE( X[ 1], data, 4 );
81
+ GET_UINT32_LE( X[ 2], data, 8 );
82
+ GET_UINT32_LE( X[ 3], data, 12 );
83
+ GET_UINT32_LE( X[ 4], data, 16 );
84
+ GET_UINT32_LE( X[ 5], data, 20 );
85
+ GET_UINT32_LE( X[ 6], data, 24 );
86
+ GET_UINT32_LE( X[ 7], data, 28 );
87
+ GET_UINT32_LE( X[ 8], data, 32 );
88
+ GET_UINT32_LE( X[ 9], data, 36 );
89
+ GET_UINT32_LE( X[10], data, 40 );
90
+ GET_UINT32_LE( X[11], data, 44 );
91
+ GET_UINT32_LE( X[12], data, 48 );
92
+ GET_UINT32_LE( X[13], data, 52 );
93
+ GET_UINT32_LE( X[14], data, 56 );
94
+ GET_UINT32_LE( X[15], data, 60 );
95
+
96
+ A = Ap = ctx->state[0];
97
+ B = Bp = ctx->state[1];
98
+ C = Cp = ctx->state[2];
99
+ D = Dp = ctx->state[3];
100
+ E = Ep = ctx->state[4];
101
+
102
+ #define F1( x, y, z ) ( x ^ y ^ z )
103
+ #define F2( x, y, z ) ( ( x & y ) | ( ~x & z ) )
104
+ #define F3( x, y, z ) ( ( x | ~y ) ^ z )
105
+ #define F4( x, y, z ) ( ( x & z ) | ( y & ~z ) )
106
+ #define F5( x, y, z ) ( x ^ ( y | ~z ) )
107
+
108
+ #define S( x, n ) ( ( x << n ) | ( x >> (32 - n) ) )
109
+
110
+ #define P( a, b, c, d, e, r, s, f, k ) \
111
+ a += f( b, c, d ) + X[r] + k; \
112
+ a = S( a, s ) + e; \
113
+ c = S( c, 10 );
114
+
115
+ #define P2( a, b, c, d, e, r, s, rp, sp ) \
116
+ P( a, b, c, d, e, r, s, F, K ); \
117
+ P( a ## p, b ## p, c ## p, d ## p, e ## p, rp, sp, Fp, Kp );
118
+
119
+ #define F F1
120
+ #define K 0x00000000
121
+ #define Fp F5
122
+ #define Kp 0x50A28BE6
123
+ P2( A, B, C, D, E, 0, 11, 5, 8 );
124
+ P2( E, A, B, C, D, 1, 14, 14, 9 );
125
+ P2( D, E, A, B, C, 2, 15, 7, 9 );
126
+ P2( C, D, E, A, B, 3, 12, 0, 11 );
127
+ P2( B, C, D, E, A, 4, 5, 9, 13 );
128
+ P2( A, B, C, D, E, 5, 8, 2, 15 );
129
+ P2( E, A, B, C, D, 6, 7, 11, 15 );
130
+ P2( D, E, A, B, C, 7, 9, 4, 5 );
131
+ P2( C, D, E, A, B, 8, 11, 13, 7 );
132
+ P2( B, C, D, E, A, 9, 13, 6, 7 );
133
+ P2( A, B, C, D, E, 10, 14, 15, 8 );
134
+ P2( E, A, B, C, D, 11, 15, 8, 11 );
135
+ P2( D, E, A, B, C, 12, 6, 1, 14 );
136
+ P2( C, D, E, A, B, 13, 7, 10, 14 );
137
+ P2( B, C, D, E, A, 14, 9, 3, 12 );
138
+ P2( A, B, C, D, E, 15, 8, 12, 6 );
139
+ #undef F
140
+ #undef K
141
+ #undef Fp
142
+ #undef Kp
143
+
144
+ #define F F2
145
+ #define K 0x5A827999
146
+ #define Fp F4
147
+ #define Kp 0x5C4DD124
148
+ P2( E, A, B, C, D, 7, 7, 6, 9 );
149
+ P2( D, E, A, B, C, 4, 6, 11, 13 );
150
+ P2( C, D, E, A, B, 13, 8, 3, 15 );
151
+ P2( B, C, D, E, A, 1, 13, 7, 7 );
152
+ P2( A, B, C, D, E, 10, 11, 0, 12 );
153
+ P2( E, A, B, C, D, 6, 9, 13, 8 );
154
+ P2( D, E, A, B, C, 15, 7, 5, 9 );
155
+ P2( C, D, E, A, B, 3, 15, 10, 11 );
156
+ P2( B, C, D, E, A, 12, 7, 14, 7 );
157
+ P2( A, B, C, D, E, 0, 12, 15, 7 );
158
+ P2( E, A, B, C, D, 9, 15, 8, 12 );
159
+ P2( D, E, A, B, C, 5, 9, 12, 7 );
160
+ P2( C, D, E, A, B, 2, 11, 4, 6 );
161
+ P2( B, C, D, E, A, 14, 7, 9, 15 );
162
+ P2( A, B, C, D, E, 11, 13, 1, 13 );
163
+ P2( E, A, B, C, D, 8, 12, 2, 11 );
164
+ #undef F
165
+ #undef K
166
+ #undef Fp
167
+ #undef Kp
168
+
169
+ #define F F3
170
+ #define K 0x6ED9EBA1
171
+ #define Fp F3
172
+ #define Kp 0x6D703EF3
173
+ P2( D, E, A, B, C, 3, 11, 15, 9 );
174
+ P2( C, D, E, A, B, 10, 13, 5, 7 );
175
+ P2( B, C, D, E, A, 14, 6, 1, 15 );
176
+ P2( A, B, C, D, E, 4, 7, 3, 11 );
177
+ P2( E, A, B, C, D, 9, 14, 7, 8 );
178
+ P2( D, E, A, B, C, 15, 9, 14, 6 );
179
+ P2( C, D, E, A, B, 8, 13, 6, 6 );
180
+ P2( B, C, D, E, A, 1, 15, 9, 14 );
181
+ P2( A, B, C, D, E, 2, 14, 11, 12 );
182
+ P2( E, A, B, C, D, 7, 8, 8, 13 );
183
+ P2( D, E, A, B, C, 0, 13, 12, 5 );
184
+ P2( C, D, E, A, B, 6, 6, 2, 14 );
185
+ P2( B, C, D, E, A, 13, 5, 10, 13 );
186
+ P2( A, B, C, D, E, 11, 12, 0, 13 );
187
+ P2( E, A, B, C, D, 5, 7, 4, 7 );
188
+ P2( D, E, A, B, C, 12, 5, 13, 5 );
189
+ #undef F
190
+ #undef K
191
+ #undef Fp
192
+ #undef Kp
193
+
194
+ #define F F4
195
+ #define K 0x8F1BBCDC
196
+ #define Fp F2
197
+ #define Kp 0x7A6D76E9
198
+ P2( C, D, E, A, B, 1, 11, 8, 15 );
199
+ P2( B, C, D, E, A, 9, 12, 6, 5 );
200
+ P2( A, B, C, D, E, 11, 14, 4, 8 );
201
+ P2( E, A, B, C, D, 10, 15, 1, 11 );
202
+ P2( D, E, A, B, C, 0, 14, 3, 14 );
203
+ P2( C, D, E, A, B, 8, 15, 11, 14 );
204
+ P2( B, C, D, E, A, 12, 9, 15, 6 );
205
+ P2( A, B, C, D, E, 4, 8, 0, 14 );
206
+ P2( E, A, B, C, D, 13, 9, 5, 6 );
207
+ P2( D, E, A, B, C, 3, 14, 12, 9 );
208
+ P2( C, D, E, A, B, 7, 5, 2, 12 );
209
+ P2( B, C, D, E, A, 15, 6, 13, 9 );
210
+ P2( A, B, C, D, E, 14, 8, 9, 12 );
211
+ P2( E, A, B, C, D, 5, 6, 7, 5 );
212
+ P2( D, E, A, B, C, 6, 5, 10, 15 );
213
+ P2( C, D, E, A, B, 2, 12, 14, 8 );
214
+ #undef F
215
+ #undef K
216
+ #undef Fp
217
+ #undef Kp
218
+
219
+ #define F F5
220
+ #define K 0xA953FD4E
221
+ #define Fp F1
222
+ #define Kp 0x00000000
223
+ P2( B, C, D, E, A, 4, 9, 12, 8 );
224
+ P2( A, B, C, D, E, 0, 15, 15, 5 );
225
+ P2( E, A, B, C, D, 5, 5, 10, 12 );
226
+ P2( D, E, A, B, C, 9, 11, 4, 9 );
227
+ P2( C, D, E, A, B, 7, 6, 1, 12 );
228
+ P2( B, C, D, E, A, 12, 8, 5, 5 );
229
+ P2( A, B, C, D, E, 2, 13, 8, 14 );
230
+ P2( E, A, B, C, D, 10, 12, 7, 6 );
231
+ P2( D, E, A, B, C, 14, 5, 6, 8 );
232
+ P2( C, D, E, A, B, 1, 12, 2, 13 );
233
+ P2( B, C, D, E, A, 3, 13, 13, 6 );
234
+ P2( A, B, C, D, E, 8, 14, 14, 5 );
235
+ P2( E, A, B, C, D, 11, 11, 0, 15 );
236
+ P2( D, E, A, B, C, 6, 8, 3, 13 );
237
+ P2( C, D, E, A, B, 15, 5, 9, 11 );
238
+ P2( B, C, D, E, A, 13, 6, 11, 11 );
239
+ #undef F
240
+ #undef K
241
+ #undef Fp
242
+ #undef Kp
243
+
244
+ C = ctx->state[1] + C + Dp;
245
+ ctx->state[1] = ctx->state[2] + D + Ep;
246
+ ctx->state[2] = ctx->state[3] + E + Ap;
247
+ ctx->state[3] = ctx->state[4] + A + Bp;
248
+ ctx->state[4] = ctx->state[0] + B + Cp;
249
+ ctx->state[0] = C;
250
+ }
251
+ #endif /* !MBEDTLS_RIPEMD160_PROCESS_ALT */
252
+
253
+ /*
254
+ * RIPEMD-160 process buffer
255
+ */
256
+ void ripemd160_Update( RIPEMD160_CTX *ctx, const uint8_t *input, uint32_t ilen )
257
+ {
258
+ uint32_t fill = 0;
259
+ uint32_t left = 0;
260
+
261
+ if( ilen == 0 )
262
+ return;
263
+
264
+ left = ctx->total[0] & 0x3F;
265
+ fill = RIPEMD160_BLOCK_LENGTH - left;
266
+
267
+ ctx->total[0] += (uint32_t) ilen;
268
+ ctx->total[0] &= 0xFFFFFFFF;
269
+
270
+ if( ctx->total[0] < (uint32_t) ilen )
271
+ ctx->total[1]++;
272
+
273
+ if( left && ilen >= fill )
274
+ {
275
+ memcpy( (void *) (ctx->buffer + left), input, fill );
276
+ ripemd160_process( ctx, ctx->buffer );
277
+ input += fill;
278
+ ilen -= fill;
279
+ left = 0;
280
+ }
281
+
282
+ while( ilen >= RIPEMD160_BLOCK_LENGTH )
283
+ {
284
+ ripemd160_process( ctx, input );
285
+ input += RIPEMD160_BLOCK_LENGTH;
286
+ ilen -= RIPEMD160_BLOCK_LENGTH;
287
+ }
288
+
289
+ if( ilen > 0 )
290
+ {
291
+ memcpy( (void *) (ctx->buffer + left), input, ilen );
292
+ }
293
+ }
294
+
295
+ static const uint8_t ripemd160_padding[RIPEMD160_BLOCK_LENGTH] =
296
+ {
297
+ 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
298
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
299
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
300
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
301
+ };
302
+
303
+ /*
304
+ * RIPEMD-160 final digest
305
+ */
306
+ void ripemd160_Final( RIPEMD160_CTX *ctx, uint8_t output[RIPEMD160_DIGEST_LENGTH] )
307
+ {
308
+ uint32_t last = 0; uint32_t padn = 0;
309
+ uint32_t high = 0; uint32_t low = 0;
310
+ uint8_t msglen[8] = {0};
311
+
312
+ high = ( ctx->total[0] >> 29 )
313
+ | ( ctx->total[1] << 3 );
314
+ low = ( ctx->total[0] << 3 );
315
+
316
+ PUT_UINT32_LE( low, msglen, 0 );
317
+ PUT_UINT32_LE( high, msglen, 4 );
318
+
319
+ last = ctx->total[0] & 0x3F;
320
+ padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last );
321
+
322
+ ripemd160_Update( ctx, ripemd160_padding, padn );
323
+ ripemd160_Update( ctx, msglen, 8 );
324
+
325
+ PUT_UINT32_LE( ctx->state[0], output, 0 );
326
+ PUT_UINT32_LE( ctx->state[1], output, 4 );
327
+ PUT_UINT32_LE( ctx->state[2], output, 8 );
328
+ PUT_UINT32_LE( ctx->state[3], output, 12 );
329
+ PUT_UINT32_LE( ctx->state[4], output, 16 );
330
+
331
+ memzero(ctx, sizeof(RIPEMD160_CTX));
332
+ }
333
+
334
+ /*
335
+ * output = RIPEMD-160( input buffer )
336
+ */
337
+ void ripemd160(const uint8_t *msg, uint32_t msg_len, uint8_t hash[RIPEMD160_DIGEST_LENGTH])
338
+ {
339
+ RIPEMD160_CTX ctx = {0};
340
+ ripemd160_Init( &ctx );
341
+ ripemd160_Update( &ctx, msg, msg_len );
342
+ ripemd160_Final( &ctx, hash );
343
+ }
@@ -0,0 +1,22 @@
1
+ #ifndef __RIPEMD160_H__
2
+ #define __RIPEMD160_H__
3
+
4
+ #include <stdint.h>
5
+
6
+ #define RIPEMD160_BLOCK_LENGTH 64
7
+ #define RIPEMD160_DIGEST_LENGTH 20
8
+
9
+ typedef struct _RIPEMD160_CTX {
10
+ uint32_t total[2]; /*!< number of bytes processed */
11
+ uint32_t state[5]; /*!< intermediate digest state */
12
+ uint8_t buffer[RIPEMD160_BLOCK_LENGTH]; /*!< data block being processed */
13
+ } RIPEMD160_CTX;
14
+
15
+ void ripemd160_Init(RIPEMD160_CTX *ctx);
16
+ void ripemd160_Update(RIPEMD160_CTX *ctx, const uint8_t *input, uint32_t ilen);
17
+ void ripemd160_Final(RIPEMD160_CTX *ctx,
18
+ uint8_t output[RIPEMD160_DIGEST_LENGTH]);
19
+ void ripemd160(const uint8_t *msg, uint32_t msg_len,
20
+ uint8_t hash[RIPEMD160_DIGEST_LENGTH]);
21
+
22
+ #endif