@@ -209,12 +209,12 @@ func (ledger *LedgerFilecoin) sign(bip44Path []uint32, transaction []byte, curve
209
209
return nil , err
210
210
}
211
211
212
- chunks , err := prepareChunks (pathBytes , transaction )
212
+ chunks , err := ledger_go . PrepareChunks (pathBytes , transaction )
213
213
if err != nil {
214
214
return nil , err
215
215
}
216
216
217
- return ledger . processChunks ( chunks , INSSign )
217
+ return ledger_go . ProcessChunks ( ledger . api , chunks , CLA , INSSign , apduP2Default , handleExchangeError )
218
218
}
219
219
220
220
// SignPersonalMessageFVM signs a personal message for FVM (Filecoin Virtual Machine)
@@ -241,12 +241,12 @@ func (ledger *LedgerFilecoin) signPersonalMessage(bip44Path []uint32, message []
241
241
binary .BigEndian .PutUint32 (fullMessage [0 :messageLengthPrefixSize ], messageLen )
242
242
copy (fullMessage [messageLengthPrefixSize :], message )
243
243
244
- chunks , err := prepareChunks (pathBytes , fullMessage )
244
+ chunks , err := ledger_go . PrepareChunks (pathBytes , fullMessage )
245
245
if err != nil {
246
246
return nil , err
247
247
}
248
248
249
- return ledger . processChunks ( chunks , INSSignPersonalMsg )
249
+ return ledger_go . ProcessChunks ( ledger . api , chunks , CLA , INSSignPersonalMsg , apduP2Default , handleExchangeError )
250
250
}
251
251
252
252
// retrieveAddressPubKey returns the pubkey and address
@@ -274,12 +274,12 @@ func (ledger *LedgerFilecoin) signRawBytes(bip44Path []uint32, message []byte) (
274
274
copy (fullMessage , varintLen )
275
275
copy (fullMessage [len (varintLen ):], message )
276
276
277
- chunks , err := prepareChunks (pathBytes , fullMessage )
277
+ chunks , err := ledger_go . PrepareChunks (pathBytes , fullMessage )
278
278
if err != nil {
279
279
return nil , err
280
280
}
281
281
282
- return ledger . processChunks ( chunks , INSSignRawBytes )
282
+ return ledger_go . ProcessChunks ( ledger . api , chunks , CLA , INSSignRawBytes , apduP2Default , handleExchangeError )
283
283
}
284
284
285
285
func parseSignatureResponse (signatureBytes []byte ) (* SignatureAnswer , error ) {
@@ -295,34 +295,7 @@ func parseSignatureResponse(signatureBytes []byte) (*SignatureAnswer, error) {
295
295
}, nil
296
296
}
297
297
298
- func (ledger * LedgerFilecoin ) processChunks (chunks [][]byte , instruction byte ) ([]byte , error ) {
299
- var finalResponse []byte
300
-
301
- for chunkIndex , chunk := range chunks {
302
- payloadLen := byte (len (chunk ))
303
- payloadDesc := PayloadChunkAdd
304
-
305
- if chunkIndex == 0 {
306
- payloadDesc = PayloadChunkInit
307
- } else if chunkIndex == len (chunks )- 1 {
308
- payloadDesc = PayloadChunkLast
309
- }
310
-
311
- header := []byte {CLA , instruction , byte (payloadDesc ), apduP2Default , payloadLen }
312
- message := append (header , chunk ... )
313
-
314
- response , err := ledger .api .Exchange (message )
315
- if err != nil {
316
- return nil , handleExchangeError (err , response )
317
- }
318
-
319
- finalResponse = response
320
- }
321
-
322
- return finalResponse , nil
323
- }
324
-
325
- func handleExchangeError (err error , response []byte ) error {
298
+ func handleExchangeError (err error , response []byte , instruction byte ) error {
326
299
errorMsg := err .Error ()
327
300
switch {
328
301
case errorMsg == "[APDU_CODE_BAD_KEY_HANDLE] The parameters in the data field are incorrect" :
0 commit comments