From 361c4eb9353abb532370ef88182ce4868bf81da6 Mon Sep 17 00:00:00 2001 From: Joy Wang <108701016+joyqvq@users.noreply.github.com> Date: Mon, 12 Sep 2022 09:25:52 -0400 Subject: [PATCH] crypto: Add decompress_to_pubkey native function, Move example contract and tests for ecrecover to address --- ...tests__empty_genesis_snapshot_matches.snap | 2 +- ...rical_transaction_cost__good_snapshot.snap | 2 +- crates/sui-framework/sources/crypto.move | 6 ++ crates/sui-framework/src/natives/crypto.rs | 57 ++++++++++-- crates/sui-framework/src/natives/mod.rs | 5 ++ crates/sui-framework/tests/crypto_tests.move | 88 ++++++++++++++++++- .../examples/math/sources/ecdsa.move | 44 +++++++++- 7 files changed, 191 insertions(+), 13 deletions(-) diff --git a/crates/sui-config/tests/snapshots/snapshot_tests__empty_genesis_snapshot_matches.snap b/crates/sui-config/tests/snapshots/snapshot_tests__empty_genesis_snapshot_matches.snap index 26e9f6b192bf0..70b28ecd18d77 100644 --- a/crates/sui-config/tests/snapshots/snapshot_tests__empty_genesis_snapshot_matches.snap +++ b/crates/sui-config/tests/snapshots/snapshot_tests__empty_genesis_snapshot_matches.snap @@ -2,5 +2,5 @@ source: crates/sui-config/tests/snapshot_tests.rs expression: genesis --- -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BQcIAAcIBwMDBwgGAQUDCgIFCgICAQEDAQEDAQIBCgIBCAgBCAMBBgsCAQkABAsCAQgDBQsEAQgFBwgGAwcIBwMHCAYCCgIKAgEGCQACBwoJAAoJAAQKAgoCCgIKAgdnZW5lc2lzCnN1aV9zeXN0ZW0NdmFsaWRhdG9yX3NldAl2YWxpZGF0b3IFYXNjaWkDYmNzBm9wdGlvbgZ2ZWN0b3IHYmFsYW5jZQZjcnlwdG8PZXBvY2hfdGltZV9sb2NrBXN0YWtlA3N1aQp0eF9jb250ZXh0CVZhbGlkYXRvchFWYWxpZGF0b3JNZXRhZGF0YRphZGp1c3Rfc3Rha2VfYW5kX2dhc19wcmljZQ9kZWxlZ2F0ZV9hbW91bnQPZGVsZWdhdG9yX2NvdW50B2Rlc3Ryb3kJZ2FzX3ByaWNlDGlzX2R1cGxpY2F0ZQhtZXRhZGF0YQdCYWxhbmNlA1NVSQZPcHRpb24NRXBvY2hUaW1lTG9jawlUeENvbnRleHQDbmV3FHBlbmRpbmdfc3Rha2VfYW1vdW50EHBlbmRpbmdfd2l0aGRyYXcWcmVxdWVzdF9hZGRfZGVsZWdhdGlvbhFyZXF1ZXN0X2FkZF9zdGFrZRlyZXF1ZXN0X3JlbW92ZV9kZWxlZ2F0aW9uFXJlcXVlc3Rfc2V0X2dhc19wcmljZQVTdGFrZRZyZXF1ZXN0X3dpdGhkcmF3X3N0YWtlDHN0YWtlX2Ftb3VudAtzdWlfYWRkcmVzcxp2ZXJpZnlfcHJvb2Zfb2ZfcG9zc2Vzc2lvbgpkZWxlZ2F0aW9uDXBlbmRpbmdfc3Rha2UScGVuZGluZ19kZWxlZ2F0aW9uG3BlbmRpbmdfZGVsZWdhdGlvbl93aXRoZHJhdxdwZW5kaW5nX2RlbGVnYXRvcl9jb3VudCBwZW5kaW5nX2RlbGVnYXRvcl93aXRoZHJhd19jb3VudAxwdWJrZXlfYnl0ZXMUbmV0d29ya19wdWJrZXlfYnl0ZXMTcHJvb2Zfb2ZfcG9zc2Vzc2lvbgRuYW1lC25ldF9hZGRyZXNzEG5leHRfZXBvY2hfc3Rha2UVbmV4dF9lcG9jaF9kZWxlZ2F0aW9uFG5leHRfZXBvY2hfZ2FzX3ByaWNlBlN0cmluZwZzdHJpbmcFdmFsdWUGY3JlYXRlDndpdGhkcmF3X3N0YWtlCHRv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Bm9wdGlvbgdiYWxhbmNlBGNvaW4PZXBvY2hfdGltZV9sb2NrC2xvY2tlZF9jb2luBm9iamVjdANzdWkIdHJhbnNmZXIKdHhfY29udGV4dApEZWxlZ2F0aW9uBGJ1cm4QY2FuX2NsYWltX3Jld2FyZAdCYWxhbmNlA1NVSQlUeENvbnRleHQMY2xhaW1fcmV3YXJkBENvaW4GY3JlYXRlCkxvY2tlZENvaW4XY3JlYXRlX2Zyb21fbG9ja2VkX2NvaW4PZGVsZWdhdGVfYW1vdW50CWlzX2FjdGl2ZRFzd2l0Y2hfZGVsZWdhdGlvbgp1bmRlbGVnYXRlCXZhbGlkYXRvcgJpZANVSUQRYWN0aXZlX2RlbGVnYXRpb24GT3B0aW9uDGVuZGluZ19lcG9jaBtuZXh0X3Jld2FyZF91bmNsYWltZWRfZXBvY2gXY29pbl9sb2NrZWRfdW50aWxfZXBvY2gNRXBvY2hUaW1lTG9jaxF2YWxpZGF0b3JfYWRkcmVzcwZkZWxldGUMZGVzdHJveV9ub25lBmJvcnJvdwZzZW5kZXIMZnJvbV9iYWxhbmNlBXZhbHVlA25ldwxpbnRvX2JhbGFuY2UEc29tZQRub25lB2lzX3NvbWUHaXNfbm9uZQVlcG9jaAdleHRyYWN0EG5ld19mcm9tX2JhbGFuY2UAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAABAAIHGwgGHQsHAQsBAQgCHwsHAQMWAyADIQsHAQgIIwUAAQQADCAOABEGIAMGBgAAAAAAAAAAJwsAEwABDAIMBgEMAwwBDAULBREKCwE4AAsCOAEOAzgCFAwECwYLBCEDHwYAAAAAAAAAACcCAQEAABMpCwIKABAAFCIDBwUKCAwDBRAKABABFAoBJAwDCwMDEwUXCwABCQIKABEGIAMcBSULABACOAIUDAQLBAsBJAILAAEIAgIDAAALEgoCLhENDAMLAQsCOAMLAzgECgAQARQGAQAAAAAAAAAWCwAPARUCAwMAABoVDgI4BQwECgMREQsCOAY4BzgICwQLADgJCwESAAwFCwULAy4RDTgKAgQDAAAfGQ4COAsMBQsCOAwMBwwECgMREQsEOAc4CAsFCwALBzgNCwESAAwGCwYLAy4RDTgKAgUBAAABBAsAEAMUAgYBAAADEAoA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BggDAgcIBAMDBwgDCwgBCAcHCAIDAwgACA0BCggFAQgNAQgMAQgAAQkAAgMDAQYLCQEJAAMHCA0FAwQDBQsJAQgHBwgCAQYLCgEJAAQDBQsKAQgHBwgCAQsJAQkAAQgOAQsPAQkABAcIDQsIAQgHCw8BCA4HCAICCwgBCAcIDgELCgEJAAILCAEJAAgOAgMIBQoFCgIKAgoCCgIKAgsIAQgHCw8BCA4DBwgCAQgFAgcIDQgFAwcIAwMHCAICBwgNBwgCAgcIDQYIAgMHCA0DBwgCAgMFAwcIAwUHCAIFBwgNBwgLAwMHCAICBggNBQdnZW5lc2lzCnN1aV9zeXN0ZW0Gb3B0aW9uB2JhbGFuY2UEY29pbgpkZWxlZ2F0aW9uE2Vwb2NoX3Jld2FyZF9yZWNvcmQPZXBvY2hfdGltZV9sb2NrC2xvY2tlZF9jb2luBm9iamVjdAVzdGFrZQNzdWkIdHJhbnNmZXIKdHhfY29udGV4dAl2YWxpZGF0b3INdmFsaWRhdG9yX3NldA5TdWlTeXN0ZW1TdGF0ZRBTeXN0ZW1QYXJhbWV0ZXJzCVR4Q29udGV4dA1hZHZhbmNlX2Vwb2NoCkRlbGVnYXRpb24RRXBvY2hSZXdhcmRSZWNvcmQXY2xhaW1fZGVsZWdhdGlvbl9yZXdhcmQJVmFsaWRhdG9yBlN1cHBseQNTVUkHQmFsYW5jZQZjcmVhdGUFZXBvY2gEQ29pbhZyZXF1ZXN0X2FkZF9kZWxlZ2F0aW9uCkxvY2tlZENvaW4ncmVxdWVzdF9hZGRfZGVsZWdhdGlvbl93aXRoX2xvY2tlZF9jb2luEXJlcXVlc3RfYWRkX3N0YWtlInJlcXVlc3RfYWRkX3N0YWtlX3dpdGhfbG9ja2VkX2NvaW4VcmVxdWVzdF9hZGRfdmFsaWRhdG9yGXJlcXVlc3RfcmVtb3ZlX2RlbGVnYXRpb24YcmVxdWVzdF9yZW1vdmVfdmFsaWRhdG9yFXJlcXVlc3Rfc2V0X2dhc19wcmljZRlyZXF1ZXN0X3N3aXRjaF9kZWxlZ2F0aW9uBVN0YWtlFnJlcXVlc3Rfd2l0aGRyYXdfc3Rha2UZdmFsaWRhdG9yX2RlbGVnYXRlX2Ftb3VudBl2YWxpZGF0b3JfZGVsZWdhdG9yX2NvdW50AmlkA1VJRAp2YWxpZGF0b3JzDFZhbGlkYXRvclNldApzdWlfc3VwcGx5DHN0b3JhZ2VfZnVuZApwYXJhbWV0ZXJzEWRlbGVnYXRpb25fcmV3YXJkE3JlZmVyZW5jZV9nYXNfcHJpY2UTbWluX3ZhbGlkYXRvcl9zdGFrZR1tYXhfdmFsaWRhdG9yX2NhbmRpZGF0ZV9jb3VudBFzdG9yYWdlX2dhc19wcmljZQZzZW5kZXIPaW5jcmVhc2Vfc3VwcGx5FnRvdGFsX2RlbGVnYXRpb25fc3Rha2UVdG90YWxfdmFsaWRhdG9yX3N0YWtlBXZhbHVlBXNwbGl0BGpvaW4UY3JlYXRlX2Vwb2NoX3JlY29yZHMaZGVyaXZlX3JlZmVyZW5jZV9nYXNfcHJpY2UQY2FuX2NsYWltX3Jld2FyZA9kZWxlZ2F0ZV9hbW91bnQMY2xhaW1fcmV3YXJkA25ldxBzdWlfc3lzdGVtX3N0YXRlBHplcm8Mc2hhcmVfb2JqZWN0F2NyZWF0ZV9mcm9tX2xvY2tlZF9jb2luDGludG9fYmFsYW5jZQ1FcG9jaFRpbWVMb2NrBk9wdGlvbgRub25lBHNvbWUabmV4dF9lcG9jaF92YWxpZGF0b3JfY291bnQKdW5kZWxlZ2F0ZRFzd2l0Y2hfZGVsZWdhdGlvbgAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAEFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIILAgMHAMuCA0wCwYBCAcxCwgBCAcyCAEzCwgBCAc0AwECAzUDNgM3AwABBAARagoELhEQBwAhAwwLAAELBAEGAAAAAAAAAAAnCgAPAAsCOAAMCgoADwAKAzgADAUKABABERIMBgoAEAEREwwMCgAQAjgBDAkKBgsMFgsJFgwLCwYKAxgKCxoMCA0FCwg4AgwHCgAPAgsKOAMBCgAPAwsHOAMBCgAQAQoAEAQUCwMLCwoEERcKABAEFAYBAAAAAAAAABYKAA8EFQsBCgAQBBQhA1kLAAELBAEGAAAAAAAAAAAnCgAPAQ0FCwQRGAoAEAERGQoADwUVCwAPAgsFOAMBAgEBBAAdLgoCLhEaDAcKAi4RGwwKCgELBwsKDAYMBQwECwQuCwULBhEcAx4LAAELAgELAQELAwEGAAAAAAAAAAAnCwIKAS4RHREeDAkLAA8DCwk4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BAMHCAEDCwYBAwMFAwsGAQMCBgoJAAYJAAUHCAEHCAgDAwcIBAgHCgMDBwoDAwMDAwMKc3VpX3N5c3RlbQ12YWxpZGF0b3Jfc2V0Bm9wdGlvbgZ2ZWN0b3IHYmFsYW5jZRNlcG9jaF9yZXdhcmRfcmVjb3JkD2Vwb2NoX3RpbWVfbG9jaw5wcmlvcml0eV9xdWV1ZQVzdGFrZQNzdWkKdHhfY29udGV4dAl2YWxpZGF0b3IMVmFsaWRhdG9yU2V0CVZhbGlkYXRvchphZGp1c3Rfc3Rha2VfYW5kX2dhc19wcmljZQdCYWxhbmNlA1NVSQlUeENvbnRleHQNYWR2YW5jZV9lcG9jaBpjYWxjdWxhdGVfcXVvcnVtX3RocmVzaG9sZCpjYWxjdWxhdGVfdG90YWxfc3Rha2VfYW5kX3F1b3J1bV90aHJlc2hvbGQbY29tcHV0ZV9yZXdhcmRfZGlzdHJpYnV0aW9uHGNvbnRhaW5zX2R1cGxpY2F0ZV92YWxpZGF0b3IUY3JlYXRlX2Vwb2NoX3JlY29yZHMRVmFsaWRhdG9yTWV0YWRhdGEcZGVyaXZlX25leHRfZXBvY2hfdmFsaWRhdG9ycxpkZXJpdmVfcmVmZXJlbmNlX2dhc19wcmljZRFkaXN0cmlidXRlX3Jld2FyZAZPcHRpb24OZmluZF92YWxpZGF0b3IRZ2V0X3ZhbGlkYXRvcl9tdXQRZ2V0X3ZhbGlkYXRvcl9yZWYTaXNfYWN0aXZlX3ZhbGlkYXRvcgNuZXcabmV4dF9lcG9jaF92YWxpZGF0b3JfY291bnQYcHJvY2Vzc19wZW5kaW5nX3JlbW92YWxzGnByb2Nlc3NfcGVuZGluZ192YWxpZGF0b3JzFnJlcXVlc3RfYWRkX2RlbGVnYXRpb24NRXBvY2hUaW1lTG9jaxFyZXF1ZXN0X2FkZF9zdGFrZRVyZXF1ZXN0X2FkZF92YWxpZGF0b3IZcmVxdWVzdF9yZW1vdmVfZGVsZWdhdGlvbhhyZXF1ZXN0X3JlbW92ZV92YWxpZGF0b3IVcmVxdWVzdF9zZXRfZ2FzX3ByaWNlBVN0YWtlFnJlcXVlc3Rfd2l0aGRyYXdfc3Rha2URc29ydF9yZW1vdmFsX2xpc3QWdG90YWxfZGVsZWdhdGlvbl9zdGFrZRV0b3RhbF92YWxpZGF0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IBQMHCAYCBwgAAwQHCAALAgEIAwsEAQgFBwgGBQcIAAcIBwMDBwgGAQUDCgIFCgICAQEDAQEDAQIBCgIBCAgBCAMBBgsCAQkABAsCAQgDBQsEAQgFBwgGAwcIBwMHCAYCCgIKAgEGCQACBwoJAAoJAAQKAgoCCgIKAgdnZW5lc2lzCnN1aV9zeXN0ZW0NdmFsaWRhdG9yX3NldAl2YWxpZGF0b3IFYXNjaWkDYmNzBm9wdGlvbgZ2ZWN0b3IHYmFsYW5jZQZjcnlwdG8PZXBvY2hfdGltZV9sb2NrBXN0YWtlA3N1aQp0eF9jb250ZXh0CVZhbGlkYXRvchFWYWxpZGF0b3JNZXRhZGF0YRphZGp1c3Rfc3Rha2VfYW5kX2dhc19wcmljZQ9kZWxlZ2F0ZV9hbW91bnQPZGVsZWdhdG9yX2NvdW50B2Rlc3Ryb3kJZ2FzX3ByaWNlDGlzX2R1cGxpY2F0ZQhtZXRhZGF0YQdCYWxhbmNlA1NVSQZPcHRpb24NRXBvY2hUaW1lTG9jawlUeENvbnRleHQDbmV3FHBlbmRpbmdfc3Rha2VfYW1vdW50EHBlbmRpbmdfd2l0aGRyYXcWcmVxdWVzdF9hZGRfZGVsZWdhdGlvbhFyZXF1ZXN0X2FkZF9zdGFrZRlyZXF1ZXN0X3JlbW92ZV9kZWxlZ2F0aW9uFXJlcXVlc3Rfc2V0X2dhc19wcmljZQVTdGFrZRZyZXF1ZXN0X3dpdGhkcmF3X3N0YWtlDHN0YWtlX2Ftb3VudAtzdWlfYWRkcmVzcxp2ZXJpZnlfcHJvb2Zfb2ZfcG9zc2Vzc2lvbgpkZWxlZ2F0aW9uDXBlbmRpbmdfc3Rha2UScGVuZGluZ19kZWxlZ2F0aW9uG3BlbmRpbmdfZGVsZWdhdGlvbl93aXRoZHJhdxdwZW5kaW5nX2RlbGVnYXRvcl9jb3VudCBwZW5kaW5nX2RlbGVnYXRvcl93aXRoZHJhd19jb3VudAxwdWJrZXlfYnl0ZXMUbmV0d29ya19wdWJrZXlfYnl0ZXMTcHJvb2Zfb2ZfcG9zc2Vzc2lvbgRuYW1lC25ldF9hZGRyZXNzEG5leHRfZXBvY2hfc3Rha2UVbmV4dF9lcG9jaF9kZWxlZ2F0aW9uFG5leHRfZXBvY2hfZ2FzX3ByaWNlBlN0cmluZwZzdHJpbmcFdmF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ICAUHCAMKc3VpX3N5c3RlbQpkZWxlZ2F0aW9uBm9wdGlvbgdiYWxhbmNlBGNvaW4PZXBvY2hfdGltZV9sb2NrC2xvY2tlZF9jb2luBm9iamVjdANzdWkIdHJhbnNmZXIKdHhfY29udGV4dApEZWxlZ2F0aW9uBGJ1cm4QY2FuX2NsYWltX3Jld2FyZAdCYWxhbmNlA1NVSQlUeENvbnRleHQMY2xhaW1fcmV3YXJkBENvaW4GY3JlYXRlCkxvY2tlZENvaW4XY3JlYXRlX2Zyb21fbG9ja2VkX2NvaW4PZGVsZWdhdGVfYW1vdW50CWlzX2FjdGl2ZRFzd2l0Y2hfZGVsZWdhdGlvbgp1bmRlbGVnYXRlCXZhbGlkYXRvcgJpZANVSUQRYWN0aXZlX2RlbGVnYXRpb24GT3B0aW9uDGVuZGluZ19lcG9jaBtuZXh0X3Jld2FyZF91bmNsYWltZWRfZXBvY2gXY29pbl9sb2NrZWRfdW50aWxfZXBvY2gNRXBvY2hUaW1lTG9jaxF2YWxpZGF0b3JfYWRkcmVzcwZkZWxldGUMZGVzdHJveV9ub25lBmJvcnJvdwZzZW5kZXIMZnJvbV9iYWxhbmNlBXZhbHVlA25ldwxpbnRvX2JhbGFuY2UEc29tZQRub25lB2lzX3NvbWUHaXNfbm9uZQVlcG9jaAdleHRyYWN0EG5ld19mcm9tX2JhbGFuY2UAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAABAAIHGwgGHQsHAQsBAQgCHwsHAQMWAyADIQsHAQgIIwUAAQQADCAOABEGIAMGBgAAAAAAAAAAJwsAEwABDAIMBgEMAwwBDAULBREKCwE4AAsCOAEOAzgCFAwECwYLBCEDHwYAAAAAAAAAACcCAQEAABMpCwIKABAAFCIDBwUKCAwDBRAKABABFAoBJAwDCwMDEwUXCwABCQIKABEGIAMcBSULABACOAIUDAQLBAsBJAILAAEIAgIDAAALEgoCLhENDAMLAQsCOAMLAzgECgAQARQGAQAAAAAAAAAWCwAPARUCAwMAABoVDgI4BQwECgMREQsCOAY4BzgICwQLADgJCwESAAwFCwULAy4RDTgKAgQDAAAfGQ4COAsMBQsCOAwMBwwECgMREQsEOAc4CAsFCwALBzgNCwESAAwGCwY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CBwcIAwMFAwsIAQgHAwUBBggEAwYIAwMFAQEBBggDAgcIBAMDBwgDCwgBCAcHCAIDAwgACA0BCggFAQgNAQgMAQgAAQkAAgMDAQYLCQEJAAMHCA0FAwQDBQsJAQgHBwgCAQYLCgEJAAQDBQsKAQgHBwgCAQsJAQkAAQgOAQsPAQkABAcIDQsIAQgHCw8BCA4HCAICCwgBCAcIDgELCgEJAAILCAEJAAgOAgMIBQoFCgIKAgoCCgIKAgsIAQgHCw8BCA4DBwgCAQgFAgcIDQgFAwcIAwMHCAICBwgNBwgCAgcIDQYIAgMHCA0DBwgCAgMFAwcIAwUHCAIFBwgNBwgLAwMHCAICBggNBQdnZW5lc2lzCnN1aV9zeXN0ZW0Gb3B0aW9uB2JhbGFuY2UEY29pbgpkZWxlZ2F0aW9uE2Vwb2NoX3Jld2FyZF9yZWNvcmQPZXBvY2hfdGltZV9sb2NrC2xvY2tlZF9jb2luBm9iamVjdAVzdGFrZQNzdWkIdHJhbnNmZXIKdHhfY29udGV4dAl2YWxpZGF0b3INdmFsaWRhdG9yX3NldA5TdWlTeXN0ZW1TdGF0ZRBTeXN0ZW1QYXJhbWV0ZXJzCVR4Q29udGV4dA1hZHZhbmNlX2Vwb2NoCkRlbGVnYXRpb24RRXBvY2hSZXdhcmRSZWNvcmQXY2xhaW1fZGVsZWdhdGlvbl9yZXdhcmQJVmFsaWRhdG9yBlN1cHBseQNTVUkHQmFsYW5jZQZjcmVhdGUFZXBvY2gEQ29pbhZyZXF1ZXN0X2FkZF9kZWxlZ2F0aW9uCkxvY2tlZENvaW4ncmVxdWVzdF9hZGRfZGVsZWdhdGlvbl93aXRoX2xvY2tlZF9jb2luEXJlcXVlc3RfYWRkX3N0YWtlInJlcXVlc3RfYWRkX3N0YWtlX3dpdGhfbG9ja2VkX2NvaW4VcmVxdWVzdF9hZGRfdmFsaWRhdG9yGXJlcXVlc3RfcmVtb3ZlX2RlbGVnYXRpb24YcmVxdWVzdF9yZW1vdmVfdmFsaWRhdG9yFXJlcXVlc3Rfc2V0X2dhc19wcmljZRlyZXF1ZXN0X3N3aXRjaF9kZWxlZ2F0aW9uBVN0YWtlFnJlcXVlc3Rfd2l0aGRyYXdfc3Rha2UZdmFsaWRhdG9yX2RlbGVnYXRlX2Ftb3VudBl2YWxpZGF0b3JfZGVsZWdhdG9yX2NvdW50AmlkA1VJRAp2YWxpZGF0b3JzDFZhbGlkYXRvclNldApzdWlfc3VwcGx5DHN0b3JhZ2VfZnVuZApwYXJhbWV0ZXJzEWRlbGVnYXRpb25fcmV3YXJkE3JlZmVyZW5jZV9nYXNfcHJpY2UTbWluX3ZhbGlkYXRvcl9zdGFrZR1tYXhfdmFsaWRhdG9yX2NhbmRpZGF0ZV9jb3VudBFzdG9yYWdlX2dhc19wcmljZQZzZW5kZXIPaW5jcmVhc2Vfc3VwcGx5FnRvdGFsX2RlbGVnYXRpb25fc3Rha2UVdG90YWxfdmFsaWRhdG9yX3N0YWtlBXZhbHVlBXNwbGl0BGpvaW4UY3JlYXRlX2Vwb2NoX3JlY29yZHMaZGVyaXZlX3JlZmVyZW5jZV9nYXNfcHJpY2UQY2FuX2NsYWltX3Jld2FyZA9kZWxlZ2F0ZV9hbW91bnQMY2xhaW1fcmV3YXJkA25ldxBzdWlfc3lzdGVtX3N0YXRlBHplcm8Mc2hhcmVfb2JqZWN0F2NyZWF0ZV9mcm9tX2xvY2tlZF9jb2luDGludG9fYmFsYW5jZQ1FcG9jaFRpbWVMb2NrBk9wdGlvbgRub25lBHNvbWUabmV4dF9lcG9jaF92YWxpZGF0b3JfY291bnQKdW5kZWxlZ2F0ZRFzd2l0Y2hfZGVsZWdhdGlvbgAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAEFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIILAgMHAMuCA0wCwYBCAcxCwgBCAcyCAEzCwgBCAc0AwECAzUDNgM3AwABBAARagoELhEQBwAhAwwLAAELBAEGAAAAAAAAAAAnCgAPAAsCOAAMCgoADwAKAzgADAUKABABERIMBgoAEAEREwwMCgAQAjgBDAkKBgsMFgsJFgwLCwYKAxgKCxoMCA0FCwg4AgwHCgAPAgsKOAMBCgAPAwsHOAMBCgAQAQoAEAQUCwMLCwoEERcKABAEFAYBAAAAAAAAABYKAA8EFQsBCgAQBBQhA1kLAAELBAEGAAAAAAAAAAAnCgAPAQ0FCwQRGAoAEAERGQoADwUVCwAPAgsFOAMBAgEBBAAdLgoCLhEaDAcKAi4RGwwKCgELBwsKDAYMBQwECwQuCwULBhEcAx4LAAELAgELAQELAwEGAAAAAAAAAAAnCwIKAS4RHREeDAkLAA8DCwk4AgwICwELCAsDER8CAgMAACQWCwARIAwIDggRGQwGESEGAAAAAAAAAAALCAsBCwILBAsDCwUSATgECwYSAAwHCwc4BQIDAQAAAQQLABAEFAIEAQQAKhQOATgGDAQKAA8BCgILBBElCwAQBBQGAQAAAAAAAAAWDAULBQsCCwELAxEmAgUBBAAqFA4BOAcMBAoADwEKAgsEESULABAEFAYBAAAAAAAAABYMBQsFCwILAQsDESgCBgEEAAEICwAPAQsBOAg4CQsCESsCBwEEADQMCwE4CgwEDAMLAA8BCwMLBDgLCwIRKwIIAQQANzMKABABES4KABAGEAcUIwMPCwABCwgBBgAAAAAAAAAAJw4GOAYMCQsJCgAQBhAIFCYDHwsAAQsIAQYAAAAAAAAAACcKCC4REAsBCwILAwsECwULBjgIOAkLBwsIES8MCgsADwELChEwAgkBBAABEAoADwEKAS4RMQoBLhEdETILAQsAEAQUCwIRMwIKAQQAPAoLAA8BCwEMAwwCCwILAy4RNAILAQQAAQYLAA8BCwELAhE1AgwBBAA/FwoBLhExDAUKAS4RHQwECgAPAQsFCgQRMgsADwEKAgsEESULAQsCCwMRNgINAQQAAQsKAA8BCwELAgsAEAYQCBQLAxE3Ag4BAAABBQsAEAELARE4Ag8BAAABBQsAEAELARE5AgADAAIABAAGAAEABwAFAQEBAAAAAAp0eF9jb250ZXh0kQOhHOsLBQAAAAsBAAQCBAQDCCMFKxcHQmwIrgEoBtYBFArqAQwM9gFgDdYCCA/eAgIAAQECAAMCAAAEAAEAAAUCAwAABgIDAAAHBAEAAAgCAQAACQIFAAELBQEAAgoCAwEFAQYIAAEDAQcIAAEGDAACBQMGb2JqZWN0CnR4X2NvbnRleHQGc2lnbmVyCVR4Q29udGV4dAlkZXJpdmVfaWQFZXBvY2gLaWRzX2NyZWF0ZWQKbmV3X29iamVjdAZzZW5kZXIHc2lnbmVyXwd0eF9oYXNoCmFkZHJlc3Nfb2YAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAABAwgAAAAAAAAAAAMIIAAAAAAAAAAAAgQCDAoKAgUDBgMAAAIAAQEAAAYECwAQABQCAgAAAAYECwAQARQCAwMAAAcSCgAQARQMAgoAEAIUCgIRAAwBCwIGAQAAAAAAAAAWCwAPARULAQIEAQAABgQLABADEQYCBQEAAAYDCwAQAwIAAgADAAEAAAAAAAtsb2NrZWRfY29pbosGoRzrCwUAAAANAQAOAg4eAyxPBHsMBYcBjwEHlgKFAgibBBQKrwQPC74EAgzABIYBDcYFAg7IBQIPygUEAAIAAwAEAAUABgAHAAgACQwBAAEBCgQBAAEDCwQAAg0MAQABBg4CAAQUBAAADAABAQAADwIDAQAAEAQDAQAAEQUDAQAAEgYHAQAEFgoDAAIMDAsBAAMXDQ4ABBcPCgAFBxADAQgDGBIDAAIZEwwBAAYaFBUAARIWBwEABgkCCQkACwkJDA0JAQsAAQkAAgsBAQkACAIECwMBCQAFAwcIBAAECwEBCQAIAgUHCAQCCwABCQAHCAQBBgsAAQkAAQMDCwEBCQAIBQgCAQkAAQgFAQsBAQkAAQsDAQkAAgMHCAQBCAIBBwgEAgkABQQLAQEJAAsDAQkACAUIAgIIAgcIBAILAQEJAAcIBAEGCAQBBQEGCwEBCQAKZGVsZWdhdGlvbgpzdWlfc3lzdGVtC2xvY2tlZF9jb2luB2JhbGFuY2UEY29pbg9lcG9jaF90aW1lX2xvY2sGb2JqZWN0CHRyYW5zZmVyCnR4X2NvbnRleHQKTG9ja2VkQ29pbgdCYWxhbmNlDUVwb2NoVGltZUxvY2sMaW50b19iYWxhbmNlBENvaW4JVHhDb250ZXh0CWxvY2tfY29pbhBuZXdfZnJvbV9iYWxhbmNlC3VubG9ja19jb2luBXZhbHVlAmlkA1VJRBJsb2NrZWRfdW50aWxfZXBvY2gGZGVsZXRlA25ldwdkZXN0cm95DGZyb21fYmFsYW5jZQZzZW5kZXIAAAAAAAAAAAAAAAAAAAAAAAAAAgACAxMIBQMLAQEJABUIAgAJAAMAAAgKCwA6AAwDDAEMAgsCEQULAQsDAgEBBAALCwsAOAAMBAsECwIKAxEHCwELAzgBAgIBAAAACgsDEQgLAAsBOQAMBAsECwI4AgIDAQQAERQLADoADAUMAgwECwQRBQsFCgERCgsCCgE4AwwDCwMLAS4RDDgEAgQBAAADBAsANwA4BQIAAQAJAAAAAQANdmFsaWRhdG9yX3NldPMioRzrCwUAAAALAQAWAhY0A0qzAgT9AhwFmQOLBAekB9wJCIARKAqoERgMwBHsEA2sIg4PuiICAAEBAgEDAAQABQAGAAcACAAJAAoACwAMBAAKDQQAAw8EAQABCBACAAkRAgAKGAcAARwHAQAABSYEAAcsCAAGQQYBAgAGQgYBAgAADgABAAASAgEAABMDBAAAFAMFAAAVBgcAABYICQAAFwoBAAAZCwwAABoLDQAAGw4BAAAdDxAAAB4REgAAHw8TAAAgFAkAACEVFgAAIgsNAAAjFwEAACQYAQAAJRkBAAAnGgEAACgbAQAAKRkBAAAqHAEAACsdAQAALR4BAAAuHwEAAC8LDQAAMAsNAAAxFA0AADIUDQAAMxQNAAoOEgEAAzkkDQEACjoTDQAKOxMNAAo8KQkACj0TDQAKPhMqAAQ/KwEACkATLgAKQxMNAAZEMTIBAgYhMzQBAgZFNTEBAgNGNzgBAAFHAToBAAonOwEAAUg8OgEAAUk+CQEAAUo/PAEAAktDCQEAAkxEPAEACk0hAQAKJUUBAAlORyoACilFAQACT0oJAQAKK0UBAAotSwEAICMpDSoNKw0sIy05Lw0tDTANMQ0yDTMhMiE4DQEHCggBAAMHCAAHCwIBCAMHCAQBBgoIAQECAwMDAwMGCggBAwMBCgMCBgoIAQYIAQEBBQYIAAMDAwcIBAEGCAABCggFAQMEBwoIAQYKAwcLAgEIAwcIBAIGCggBBQELBgEDAgcKCAEFAQcIAQEGCAECBggABQEKCAEBCAACBwoIAQcKAwIHCggBBwoIAQMHCAAFAwQHCAALAgEIAwsGAQgHBwgEAgcIAAgBAgcIAAYIBAMHCAADBwgEBQcIAAcICAMDBwgEAQcKAwMDAwcIAQEIAQQDAwoDAwEIAwEGCwIBCQACAwMGAwMDAwYIAQMGAwMKAwQEBggBAwMDBggBAgYIAQYIAQEFBgMDAwMFBwgECAMDBggFBggFAwMDCggFAQgFAQYIBQsKCwkBAwMDAwsKAQMDAwMDBggBBgoIAQELCQEDAgMJAAELCQEJAAEKCwkBCQABCwoBCQABBwsKAQkABQMDCwIBCAMDBwgBAgcLAgEJAAMBCwIBCQABCAcBCwYBCQAEBwgBCwIBCAMLBgEIBwcIBAEJAAQHCggBBQMLBgEDAQYLBgEJAAEHCwYBCQACAwsGAQMEAwMDCAACAwgBAQYKCQACBwoJAAMCBwgBAwIHCAEFAQYIBAMHCAEDCwYBAwMFAwsGAQMCBgoJAAYJAAUHCAEHCAgDAwcIBAgHCgMDBwoDAwMDAwMKc3VpX3N5c3RlbQ12YWxpZGF0b3Jfc2V0Bm9wdGlvbgZ2ZWN0b3IHYmFsYW5jZRNlcG9jaF9yZXdhcmRfcmVjb3JkD2Vwb2NoX3RpbWVfbG9jaw5wcmlvcml0eV9xdWV1ZQVzdGFrZQNzdWkKdHhfY29udGV4dAl2YWxpZGF0b3IMVmFsaWRhdG9yU2V0CVZhbGlkYXRvchphZGp1c3Rfc3Rha2VfYW5kX2dhc19wcmljZQdCYWxhbmNlA1NVSQlUeENvbnRleHQNYWR2YW5jZV9lcG9jaBpjYWxjdWxhdGVfcXVvcnVtX3RocmVzaG9sZCpjYWxjdWxhdGVfdG90YWxfc3Rha2VfYW5kX3F1b3J1bV90aHJlc2hvbGQbY29tcHV0ZV9yZXdhcmRfZGlzdHJpYnV0aW9uHGNvbnRhaW5zX2R1cGxpY2F0ZV92YWxpZGF0b3IUY3JlYXRlX2Vwb2NoX3JlY29yZHMRVmFsaWRhdG9yTWV0YWRhdGEcZGVyaXZlX25leHRfZXBvY2hfdmFsaWRhdG9ycxpkZXJpdmVfcmVmZXJlbmNlX2dhc19wcmljZRFkaXN0cmlidXRlX3Jld2FyZAZPcHRpb24OZmluZF92YWxpZGF0b3IRZ2V0X3ZhbGlkYXRvcl9tdXQRZ2V0X3ZhbGlkYXRvcl9yZWYTaXNfYWN0aXZlX3ZhbGlkYXRvcgNuZXcabmV4dF9lcG9jaF92YWxpZGF0b3JfY291bnQYcHJvY2Vzc19wZW5kaW5nX3JlbW92YWxzGnByb2Nlc3NfcGVuZGluZ192YWxpZGF0b3JzFnJlcXVlc3RfYWRkX2RlbGVnYXRpb24NRXBvY2hUaW1lTG9jaxFyZXF1ZXN0X2FkZF9zdGFrZRVyZXF1ZXN0X2FkZF92YWxpZGF0b3IZcmVxdWVzdF9yZW1vdmVfZGVsZWdhdGlvbhhyZXF1ZXN0X3JlbW92ZV92YWxpZGF0b3IVcmVxdWVzdF9zZXRfZ2FzX3ByaWNlBVN0YWtlFnJlcXVlc3Rfd2l0aGRyYXdfc3Rha2URc29ydF9yZW1vdmFsX2xpc3QWdG90YWxfZGV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 diff --git a/crates/sui-cost/tests/snapshots/empirical_transaction_cost__good_snapshot.snap b/crates/sui-cost/tests/snapshots/empirical_transaction_cost__good_snapshot.snap index de65ea2da5d13..db9ea3188a3d2 100644 --- a/crates/sui-cost/tests/snapshots/empirical_transaction_cost__good_snapshot.snap +++ b/crates/sui-cost/tests/snapshots/empirical_transaction_cost__good_snapshot.snap @@ -29,7 +29,7 @@ expression: common_costs "storage_rebate": 15 }, "SplitCoin": { - "computation_cost": 575, + "computation_cost": 576, "storage_cost": 80, "storage_rebate": 0 }, diff --git a/crates/sui-framework/sources/crypto.move b/crates/sui-framework/sources/crypto.move index 4908755516cf8..64efc53978cb3 100644 --- a/crates/sui-framework/sources/crypto.move +++ b/crates/sui-framework/sources/crypto.move @@ -18,6 +18,12 @@ module sui::crypto { /// applied to Secp256k1 signatures. public native fun ecrecover(signature: vector, hashed_msg: vector): vector; + /// @param pubkey: A 33-bytes compressed public key, a prefix either 0x02 or 0x03 and a 256-bit integer. + /// + /// If the compressed public key is valid, return the 65-bytes uncompressed public key, + /// otherwise throw error. + public native fun decompress_pubkey(pubkey: vector): vector; + /// @param data: arbitrary bytes data to hash /// Hash the input bytes using keccak256 and returns 32 bytes. public native fun keccak256(data: vector): vector; diff --git a/crates/sui-framework/src/natives/crypto.rs b/crates/sui-framework/src/natives/crypto.rs index bd70f395b0f11..0a302e77e074d 100644 --- a/crates/sui-framework/src/natives/crypto.rs +++ b/crates/sui-framework/src/natives/crypto.rs @@ -1,5 +1,6 @@ // Copyright (c) 2022, Mysten Labs, Inc. // SPDX-License-Identifier: Apache-2.0 +use crate::{legacy_emit_cost, legacy_empty_cost}; use curve25519_dalek_ng::scalar::Scalar; use fastcrypto::{ bls12381::{BLS12381PublicKey, BLS12381Signature}, @@ -16,8 +17,7 @@ use move_vm_types::{ }; use smallvec::smallvec; use std::collections::VecDeque; - -use crate::{legacy_emit_cost, legacy_empty_cost}; +use sui_types::error::SuiError; pub const FAIL_TO_RECOVER_PUBKEY: u64 = 0; pub const INVALID_SIGNATURE: u64 = 1; @@ -25,6 +25,7 @@ pub const INVALID_BULLETPROOF: u64 = 2; pub const INVALID_RISTRETTO_GROUP_ELEMENT: u64 = 3; pub const INVALID_RISTRETTO_SCALAR: u64 = 4; pub const BULLETPROOFS_VERIFICATION_FAILED: u64 = 5; +pub const INVALID_PUBKEY: u64 = 6; pub const BP_DOMAIN: &[u8] = b"mizu"; @@ -41,15 +42,53 @@ pub fn ecrecover( let signature = pop_arg!(args, Vec); // TODO: implement native gas cost estimation https://github.com/MystenLabs/sui/issues/3593 let cost = legacy_empty_cost(); + match recover_pubkey(signature, hashed_msg) { + Ok(pubkey) => Ok(NativeResult::ok( + cost, + smallvec![Value::vector_u8(pubkey.as_bytes().to_vec())], + )), + Err(SuiError::InvalidSignature { error: _ }) => { + Ok(NativeResult::err(cost, INVALID_SIGNATURE)) + } + Err(_) => Ok(NativeResult::err(cost, FAIL_TO_RECOVER_PUBKEY)), + } +} + +fn recover_pubkey(signature: Vec, hashed_msg: Vec) -> Result { match ::from_bytes(&signature) { Ok(signature) => match signature.recover(&hashed_msg) { - Ok(pubkey) => Ok(NativeResult::ok( - cost, - smallvec![Value::vector_u8(pubkey.as_bytes().to_vec())], - )), - Err(_) => Ok(NativeResult::err(cost, FAIL_TO_RECOVER_PUBKEY)), + Ok(pubkey) => Ok(pubkey), + Err(e) => Err(SuiError::KeyConversionError(e.to_string())), }, - Err(_) => Ok(NativeResult::err(cost, INVALID_SIGNATURE)), + Err(e) => Err(SuiError::InvalidSignature { + error: e.to_string(), + }), + } +} + +/// Convert a compressed 33-bytes Secp256k1 pubkey to an 65-bytes uncompressed one. +pub fn decompress_pubkey( + _context: &mut NativeContext, + ty_args: Vec, + mut args: VecDeque, +) -> PartialVMResult { + debug_assert!(ty_args.is_empty()); + debug_assert!(args.len() == 1); + + let pubkey = pop_arg!(args, Vec); + + // TODO: implement native gas cost estimation https://github.com/MystenLabs/sui/issues/3593 + let cost = legacy_empty_cost(); + + match Secp256k1PublicKey::from_bytes(&pubkey) { + Ok(pubkey) => { + let uncompressed = &pubkey.pubkey.serialize_uncompressed(); + Ok(NativeResult::ok( + cost, + smallvec![Value::vector_u8(uncompressed.to_vec())], + )) + } + Err(_) => Ok(NativeResult::err(cost, INVALID_PUBKEY)), } } @@ -68,7 +107,7 @@ pub fn keccak256( Ok(NativeResult::ok( cost, smallvec![Value::vector_u8( - ::digest(msg) + ::digest(&msg) .as_slice() .to_vec() )], diff --git a/crates/sui-framework/src/natives/mod.rs b/crates/sui-framework/src/natives/mod.rs index 99864444da762..740281b4699c7 100644 --- a/crates/sui-framework/src/natives/mod.rs +++ b/crates/sui-framework/src/natives/mod.rs @@ -26,6 +26,11 @@ pub fn all_natives( ) -> NativeFunctionTable { let sui_natives: &[(&str, &str, NativeFunction)] = &[ ("crypto", "ecrecover", make_native!(crypto::ecrecover)), + ( + "crypto", + "decompress_pubkey", + make_native!(crypto::decompress_pubkey), + ), ("crypto", "keccak256", make_native!(crypto::keccak256)), ( "crypto", diff --git a/crates/sui-framework/tests/crypto_tests.move b/crates/sui-framework/tests/crypto_tests.move index afbc2b434df70..7384926603db0 100644 --- a/crates/sui-framework/tests/crypto_tests.move +++ b/crates/sui-framework/tests/crypto_tests.move @@ -5,6 +5,8 @@ module sui::crypto_tests { use sui::crypto; use sui::elliptic_curve as ec; + use std::vector; + #[test] fun test_ecrecover_pubkey() { // test case generated against https://docs.rs/secp256k1/latest/secp256k1/ @@ -16,6 +18,20 @@ module sui::crypto_tests { assert!(pubkey == pubkey_bytes, 0); } + #[test] + fun test_ecrecover_pubkey_2() { + // Test case from go-ethereum: https://github.com/ethereum/go-ethereum/blob/master/crypto/signature_test.go#L37 + // hashed_msg: 0xce0677bb30baa8cf067c88db9811f4333d131bf8bcf12fe7065d211dce971008 + // sig: 0x90f27b8b488db00b00606796d2987f6a5f59ae62ea05effe84fef5b8b0e549984a691139ad57a3f0b906637673aa2f63d1f55cb1a69199d4009eea23ceaddc9301 + // pubkey: 0x02e32df42865e97135acfb65f3bae71bdc86f4d49150ad6a440b6f15878109880a + let hashed_msg = vector[206, 6, 119, 187, 48, 186, 168, 207, 6, 124, 136, 219, 152, 17, 244, 51, 61, 19, 27, 248, 188, 241, 47, 231, 6, 93, 33, 29, 206, 151, 16, 8]; + let sig = vector[144, 242, 123, 139, 72, 141, 176, 11, 0, 96, 103, 150, 210, 152, 127, 106, 95, 89, 174, 98, 234, 5, 239, 254, 132, 254, 245, 184, 176, 229, 73, 152, 74, 105, 17, 57, 173, 87, 163, 240, 185, 6, 99, 118, 115, 170, 47, 99, 209, 245, 92, 177, 166, 145, 153, 212, 0, 158, 234, 35, 206, 173, 220, 147, 1]; + let pubkey_bytes = vector[2, 227, 45, 244, 40, 101, 233, 113, 53, 172, 251, 101, 243, 186, 231, 27, 220, 134, 244, 212, 145, 80, 173, 106, 68, 11, 111, 21, 135, 129, 9, 136, 10]; + + let pubkey = crypto::ecrecover(sig, hashed_msg); + assert!(pubkey == pubkey_bytes, 0); + } + #[test] #[expected_failure(abort_code = 0)] fun test_ecrecover_pubkey_fail_to_recover() { @@ -240,4 +256,74 @@ module sui::crypto_tests { let verify = crypto::secp256k1_verify(sig, pk, msg); assert!(verify == false, 0) } -} + + #[test] + fun test_ecrecover_eth_address() { + // Due to the lack of conversion tool in Move, here we convert hex to vector in python3: [x for x in bytearray.fromhex(hex_string[2:])] + // Test case from https://web3js.readthedocs.io/en/v1.7.5/web3-eth-accounts.html#recover + // signature: 0xb91467e570a6466aa9e9876cbcd013baba02900b8979d43fe208a4a4f339f5fd6007e74cd82e037b800186422fc2da167c747ef045e5d18a5f5d4300f8e1a0291c + // hashed_msg: 0x1da44b586eb0729ff70a73c326926f6ed5a25f5b056e7f47fbc6e58d86871655 + // address: 0x2c7536e3605d9c16a7a3d7b1898e529396a65c23 + let sig = vector[185, 20, 103, 229, 112, 166, 70, 106, 169, 233, 135, 108, 188, 208, 19, 186, 186, 2, 144, 11, 137, 121, 212, 63, 226, 8, 164, 164, 243, 57, 245, 253, 96, 7, 231, 76, 216, 46, 3, 123, 128, 1, 134, 66, 47, 194, 218, 22, 124, 116, 126, 240, 69, 229, 209, 138, 95, 93, 67, 0, 248, 225, 160, 41, 28]; + let hashed_msg = vector[29, 164, 75, 88, 110, 176, 114, 159, 247, 10, 115, 195, 38, 146, 111, 110, 213, 162, 95, 91, 5, 110, 127, 71, 251, 198, 229, 141, 134, 135, 22, 85]; + let addr1 = vector[44, 117, 54, 227, 96, 93, 156, 22, 167, 163, 215, 177, 137, 142, 82, 147, 150, 166, 92, 35]; + let addr = ecrecover_eth_address(sig, hashed_msg); + assert!(addr == addr1, 0); + + // Test case from https://etherscan.io/verifySig/9754 + // sig: 0xcb614cba67d6a37b9cb90d21635d81ed035b8ccb99f0befe05495b819111119b17ecf0c0cb4bcc781de387206f6dfcd9f1b99e1b54b44c376412d8f5c919b1981b + // hashed_msg: 0x1da44b586eb0729ff70a73c326926f6ed5a25f5b056e7f47fbc6e58d86871655 + // addr: 0x4cbf668fca6f10d01f161122534044436b80702e + let sig = vector[203, 97, 76, 186, 103, 214, 163, 123, 156, 185, 13, 33, 99, 93, 129, 237, 3, 91, 140, 203, 153, 240, 190, 254, 5, 73, 91, 129, 145, 17, 17, 155, 23, 236, 240, 192, 203, 75, 204, 120, 29, 227, 135, 32, 111, 109, 252, 217, 241, 185, 158, 27, 84, 180, 76, 55, 100, 18, 216, 245, 201, 25, 177, 152, 27]; + let hashed_msg = vector[29, 164, 75, 88, 110, 176, 114, 159, 247, 10, 115, 195, 38, 146, 111, 110, 213, 162, 95, 91, 5, 110, 127, 71, 251, 198, 229, 141, 134, 135, 22, 85]; + let addr1 = vector[76, 191, 102, 143, 202, 111, 16, 208, 31, 22, 17, 34, 83, 64, 68, 67, 107, 128, 112, 46]; + let addr = ecrecover_eth_address(sig, hashed_msg); + assert!(addr == addr1, 0); + + // Test case from https://goerli.etherscan.io/tx/0x18f72457b356f367db214de9dda07f5d253ebfeb5c426b0d9d5b346b4ba8d021 + // sig: 0x8e809da5ca76e6371ba8dcaa748fc2973f0d9862f76ed08f55b869f5e73591dd24a7367f1ee9e6e3723d13bb0a7092fafb8851f7eecd4a8d34c977013e1551482e + // hashed_msg: 0x529283629f75203330f0acf68bdbc4e879047fe75da8071c079c495bbb9fb78a + // addr: 0x4cbf668fca6f10d01f161122534044436b80702e + let sig = vector[142, 128, 157, 165, 202, 118, 230, 55, 27, 168, 220, 170, 116, 143, 194, 151, 63, 13, 152, 98, 247, 110, 208, 143, 85, 184, 105, 245, 231, 53, 145, 221, 36, 167, 54, 127, 30, 233, 230, 227, 114, 61, 19, 187, 10, 112, 146, 250, 251, 136, 81, 247, 238, 205, 74, 141, 52, 201, 119, 1, 62, 21, 81, 72, 46]; + let hashed_msg = vector[82, 146, 131, 98, 159, 117, 32, 51, 48, 240, 172, 246, 139, 219, 196, 232, 121, 4, 127, 231, 93, 168, 7, 28, 7, 156, 73, 91, 187, 159, 183, 138]; + let addr1 = vector[76, 191, 102, 143, 202, 111, 16, 208, 31, 22, 17, 34, 83, 64, 68, 67, 107, 128, 112, 46]; + let addr = ecrecover_eth_address(sig, hashed_msg); + assert!(addr == addr1, 0); + } + + // Helper Move function to recover signature directly to an ETH address. + fun ecrecover_eth_address(sig: vector, hashed_msg: vector): vector { + // Normalize the last byte of the signature to be 0 or 1. + let v = vector::borrow_mut(&mut sig, 64); + if (*v == 27) { + *v = 0; + } else if (*v == 28) { + *v = 1; + } else if (*v > 35) { + *v = (*v - 1) % 2; + }; + + let pubkey = crypto::ecrecover(sig, hashed_msg); + let uncompressed = crypto::decompress_pubkey(pubkey); + + // Take the last 64 bytes of the uncompressed pubkey. + let uncompressed_64 = vector::empty(); + let i = 1; + while (i < 65) { + let value = vector::borrow(&uncompressed, i); + vector::push_back(&mut uncompressed_64, *value); + i = i + 1; + }; + + // Take the last 20 bytes of the hash of the 64-bytes uncompressed pubkey. + let hashed = crypto::keccak256(uncompressed_64); + let addr = vector::empty(); + let i = 12; + while (i < 32) { + let value = vector::borrow(&hashed, i); + vector::push_back(&mut addr, *value); + i = i + 1; + }; + addr + } +} \ No newline at end of file diff --git a/sui_programmability/examples/math/sources/ecdsa.move b/sui_programmability/examples/math/sources/ecdsa.move index 873114013937b..1114fdc547bbd 100644 --- a/sui_programmability/examples/math/sources/ecdsa.move +++ b/sui_programmability/examples/math/sources/ecdsa.move @@ -11,7 +11,7 @@ module math::ecdsa { use sui::object::{Self, UID}; use sui::tx_context::TxContext; use sui::transfer; - + use std::vector; /// Event on whether the signature is verified struct VerifiedEvent has copy, drop { is_verified: bool, @@ -41,6 +41,48 @@ module math::ecdsa { transfer::transfer(pubkey, recipient) } + public entry fun ecrecover_to_eth_address(signature: vector, hashed_msg: vector, recipient: address, ctx: &mut TxContext) { + // Normalize the last byte of the signature to be 0 or 1. + let v = vector::borrow_mut(&mut signature, 64); + if (*v == 27) { + *v = 0; + } else if (*v == 28) { + *v = 1; + } else if (*v > 35) { + *v = (*v - 1) % 2; + }; + + let pubkey = crypto::ecrecover(signature, hashed_msg); + let uncompressed = crypto::decompress_pubkey(pubkey); + + // Take the last 64 bytes of the uncompressed pubkey. + let uncompressed_64 = vector::empty(); + let i = 1; + while (i < 65) { + let value = vector::borrow(&uncompressed, i); + vector::push_back(&mut uncompressed_64, *value); + i = i + 1; + }; + + // Take the last 20 bytes of the hash of the 64-bytes uncompressed pubkey. + let hashed = crypto::keccak256(uncompressed_64); + let addr = vector::empty(); + let i = 12; + while (i < 32) { + let value = vector::borrow(&hashed, i); + vector::push_back(&mut addr, *value); + i = i + 1; + }; + + let addr_object = Output { + id: object::new(ctx), + value: addr, + }; + + // Transfer an output data object holding the address to the recipient. + transfer::transfer(addr_object, recipient) + } + public entry fun secp256k1_verify(signature: vector, public_key: vector, hashed_msg: vector) { event::emit(VerifiedEvent {is_verified: crypto::secp256k1_verify(signature, public_key, hashed_msg)}); }