-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRNSapling.m
More file actions
213 lines (179 loc) · 10.5 KB
/
RNSapling.m
File metadata and controls
213 lines (179 loc) · 10.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
//
// RNSapling.m
// react-native-sapling
//
#import "RNSapling.h"
#if __has_include(<React/RCTBridgeModule.h>)
#import <React/RCTBridgeModule.h>
#elif __has_include("RCTBridgeModule.h")
#import "RCTBridgeModule.h"
#else
#import "React/RCTBridgeModule.h"
#endif
// Generated Swift header for RNSaplingBridge (name depends on pod/module)
#if __has_include(<react_native_sapling/react_native_sapling-Swift.h>)
#import <react_native_sapling/react_native_sapling-Swift.h>
#elif __has_include("react_native_sapling-Swift.h")
#import "react_native_sapling-Swift.h"
#elif __has_include("RNSapling-Swift.h")
#import "RNSapling-Swift.h"
#else
#import "react-native_sapling-Swift.h"
#endif
@implementation RNSapling
RCT_EXPORT_MODULE(RNSapling)
static void invokeCallback(RCTResponseSenderBlock callback, NSString *error, id result) {
if (error) {
callback(@[ error, [NSNull null] ]);
} else {
callback(@[ [NSNull null], result ?: [NSNull null] ]);
}
}
RCT_EXPORT_METHOD(getProofAuthorizingKey:(NSString *)spendingKeyB64 callback:(RCTResponseSenderBlock)callback) {
[RNSaplingBridge getProofAuthorizingKey:spendingKeyB64 completion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
RCT_EXPORT_METHOD(verifyCommitment:(NSString *)commitmentB64 addressB64:(NSString *)addressB64 value:(nonnull NSNumber *)value rcmB64:(NSString *)rcmB64 callback:(RCTResponseSenderBlock)callback) {
[RNSaplingBridge verifyCommitment:commitmentB64 addressB64:addressB64 value:value rcmB64:rcmB64 completion:^(NSString *result, NSString *error) {
if (error) {
callback(@[ error, [NSNull null] ]);
} else {
callback(@[ [NSNull null], @([result isEqualToString:@"1"]) ]);
}
}];
}
RCT_EXPORT_METHOD(initParameters:(NSString *)spendParametersB64 outputParametersB64:(NSString *)outputParametersB64 callback:(RCTResponseSenderBlock)callback) {
[RNSaplingBridge initParameters:spendParametersB64 outputB64:outputParametersB64 completion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
RCT_EXPORT_METHOD(keyAgreement:(NSString *)pB64 skB64:(NSString *)skB64 callback:(RCTResponseSenderBlock)callback) {
[RNSaplingBridge keyAgreement:pB64 skB64:skB64 completion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
RCT_EXPORT_METHOD(merkleHash:(nonnull NSNumber *)depth lhsB64:(NSString *)lhsB64 rhsB64:(NSString *)rhsB64 callback:(RCTResponseSenderBlock)callback) {
[RNSaplingBridge merkleHash:depth lhsB64:lhsB64 rhsB64:rhsB64 completion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
RCT_EXPORT_METHOD(computeNullifier:(NSString *)viewingKeyB64 addressB64:(NSString *)addressB64 value:(nonnull NSNumber *)value rcmB64:(NSString *)rcmB64 position:(nonnull NSNumber *)position callback:(RCTResponseSenderBlock)callback) {
[RNSaplingBridge computeNullifier:viewingKeyB64 addressB64:addressB64 value:value rcmB64:rcmB64 position:position completion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
RCT_EXPORT_METHOD(prepareOutputDescription:(NSString *)contextIdStr viewingKeyB64:(NSString *)viewingKeyB64 addressB64:(NSString *)addressB64 rcmB64:(NSString *)rcmB64 value:(nonnull NSNumber *)value callback:(RCTResponseSenderBlock)callback) {
NSNumber *contextId = @([contextIdStr integerValue]);
[RNSaplingBridge prepareOutputDescription:contextId viewingKeyB64:viewingKeyB64 addressB64:addressB64 rcmB64:rcmB64 value:value completion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
RCT_EXPORT_METHOD(preparePartialOutputDescription:(NSString *)contextIdStr addressB64:(NSString *)addressB64 rcmB64:(NSString *)rcmB64 eskB64:(NSString *)eskB64 value:(nonnull NSNumber *)value callback:(RCTResponseSenderBlock)callback) {
NSNumber *contextId = @([contextIdStr integerValue]);
[RNSaplingBridge preparePartialOutputDescription:contextId addressB64:addressB64 rcmB64:rcmB64 eskB64:eskB64 value:value completion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
RCT_EXPORT_METHOD(deriveEpkFromEsk:(NSString *)diversifierB64 eskB64:(NSString *)eskB64 callback:(RCTResponseSenderBlock)callback) {
[RNSaplingBridge deriveEpkFromEsk:diversifierB64 eskB64:eskB64 completion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
RCT_EXPORT_METHOD(getPaymentAddress:(NSString *)viewingKeyB64 indexB64:(NSString *)indexB64 callback:(RCTResponseSenderBlock)callback) {
[RNSaplingBridge getPaymentAddress:viewingKeyB64 indexB64:indexB64 completion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
RCT_EXPORT_METHOD(getNextPaymentAddress:(NSString *)viewingKeyB64 indexB64:(NSString *)indexB64 callback:(RCTResponseSenderBlock)callback) {
[RNSaplingBridge getNextPaymentAddress:viewingKeyB64 indexB64:indexB64 completion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
RCT_EXPORT_METHOD(getRawPaymentAddress:(NSString *)incomingViewingKeyB64 diversifierB64:(NSString *)diversifierB64 callback:(RCTResponseSenderBlock)callback) {
[RNSaplingBridge getRawPaymentAddress:incomingViewingKeyB64 diversifierB64:diversifierB64 completion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
RCT_EXPORT_METHOD(getDiversifierFromRawPaymentAddress:(NSString *)addressB64 callback:(RCTResponseSenderBlock)callback) {
[RNSaplingBridge getDiversifierFromRawPaymentAddress:addressB64 completion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
RCT_EXPORT_METHOD(getPkdFromRawPaymentAddress:(NSString *)addressB64 callback:(RCTResponseSenderBlock)callback) {
[RNSaplingBridge getPkdFromRawPaymentAddress:addressB64 completion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
RCT_EXPORT_METHOD(initProvingContext:(RCTResponseSenderBlock)callback) {
[RNSaplingBridge initProvingContextWithCompletion:^(NSNumber *result, NSString *error) {
if (error) {
callback(@[ error, [NSNull null] ]);
} else {
callback(@[ [NSNull null], [result stringValue] ]);
}
}];
}
RCT_EXPORT_METHOD(dropProvingContext:(NSString *)contextIdStr callback:(RCTResponseSenderBlock)callback) {
NSNumber *contextId = @([contextIdStr integerValue]);
[RNSaplingBridge dropProvingContext:contextId completion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
RCT_EXPORT_METHOD(randR:(RCTResponseSenderBlock)callback) {
[RNSaplingBridge randRWithCompletion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
RCT_EXPORT_METHOD(createBindingSignature:(NSString *)contextIdStr balance:(nonnull NSNumber *)balance sighashB64:(NSString *)sighashB64 callback:(RCTResponseSenderBlock)callback) {
NSNumber *contextId = @([contextIdStr integerValue]);
[RNSaplingBridge createBindingSignature:contextId balance:balance sighashB64:sighashB64 completion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
RCT_EXPORT_METHOD(prepareSpendDescriptionWithSpendingKey:(NSString *)contextIdStr spendingKeyB64:(NSString *)spendingKeyB64 addressB64:(NSString *)addressB64 rcmB64:(NSString *)rcmB64 arB64:(NSString *)arB64 value:(nonnull NSNumber *)value anchorB64:(NSString *)anchorB64 merklePathB64:(NSString *)merklePathB64 callback:(RCTResponseSenderBlock)callback) {
NSNumber *contextId = @([contextIdStr integerValue]);
[RNSaplingBridge prepareSpendDescriptionWithSpendingKey:contextId spendingKeyB64:spendingKeyB64 addressB64:addressB64 rcmB64:rcmB64 arB64:arB64 value:value anchorB64:anchorB64 merklePathB64:merklePathB64 completion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
RCT_EXPORT_METHOD(prepareSpendDescriptionWithAuthorizingKey:(NSString *)contextIdStr authorizingKeyB64:(NSString *)authorizingKeyB64 addressB64:(NSString *)addressB64 rcmB64:(NSString *)rcmB64 arB64:(NSString *)arB64 value:(nonnull NSNumber *)value anchorB64:(NSString *)anchorB64 merklePathB64:(NSString *)merklePathB64 callback:(RCTResponseSenderBlock)callback) {
NSNumber *contextId = @([contextIdStr integerValue]);
[RNSaplingBridge prepareSpendDescriptionWithAuthorizingKey:contextId authorizingKeyB64:authorizingKeyB64 addressB64:addressB64 rcmB64:rcmB64 arB64:arB64 value:value anchorB64:anchorB64 merklePathB64:merklePathB64 completion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
RCT_EXPORT_METHOD(signSpendDescription:(NSString *)spendDescriptionB64 spendingKeyB64:(NSString *)spendingKeyB64 arB64:(NSString *)arB64 sighashB64:(NSString *)sighashB64 callback:(RCTResponseSenderBlock)callback) {
[RNSaplingBridge signSpendDescription:spendDescriptionB64 spendingKeyB64:spendingKeyB64 arB64:arB64 sighashB64:sighashB64 completion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
RCT_EXPORT_METHOD(getExtendedSpendingKey:(NSString *)seedB64 derivationPath:(NSString *)derivationPath callback:(RCTResponseSenderBlock)callback) {
[RNSaplingBridge getExtendedSpendingKey:seedB64 derivationPath:derivationPath completion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
RCT_EXPORT_METHOD(getExtendedFullViewingKey:(NSString *)seedB64 derivationPath:(NSString *)derivationPath callback:(RCTResponseSenderBlock)callback) {
[RNSaplingBridge getExtendedFullViewingKey:seedB64 derivationPath:derivationPath completion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
RCT_EXPORT_METHOD(getExtendedFullViewingKeyFromSpendingKey:(NSString *)spendingKeyB64 callback:(RCTResponseSenderBlock)callback) {
[RNSaplingBridge getExtendedFullViewingKeyFromSpendingKey:spendingKeyB64 completion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
RCT_EXPORT_METHOD(getOutgoingViewingKey:(NSString *)viewingKeyB64 callback:(RCTResponseSenderBlock)callback) {
[RNSaplingBridge getOutgoingViewingKey:viewingKeyB64 completion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
RCT_EXPORT_METHOD(getIncomingViewingKey:(NSString *)viewingKeyB64 callback:(RCTResponseSenderBlock)callback) {
[RNSaplingBridge getIncomingViewingKey:viewingKeyB64 completion:^(NSString *result, NSString *error) {
invokeCallback(callback, error, result);
}];
}
+ (BOOL)requiresMainQueueSetup {
return NO;
}
@end