c2pa-python 0.5.3__tar.gz → 0.6.0__tar.gz

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 (38) hide show
  1. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/.github/workflows/build.yml +0 -1
  2. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/Cargo.lock +229 -97
  3. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/Cargo.toml +3 -1
  4. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/PKG-INFO +3 -1
  5. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/README.md +2 -0
  6. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/c2pa/__init__.py +2 -2
  7. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/c2pa/c2pa_api/c2pa_api.py +32 -3
  8. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/src/c2pa.udl +3 -0
  9. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/src/callback_signer.rs +50 -4
  10. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/src/lib.rs +3 -3
  11. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/.gitignore +0 -0
  12. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/.vscode/settings.json +0 -0
  13. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/CODE_OF_CONDUCT.md +0 -0
  14. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/CONTRIBUTING.md +0 -0
  15. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/LICENSE-APACHE +0 -0
  16. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/LICENSE-MIT +0 -0
  17. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/SECURITY.md +0 -0
  18. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/build.rs +0 -0
  19. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/c2pa/c2pa_api/__init__.py +0 -0
  20. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/pyproject.toml +0 -0
  21. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/requirements.txt +0 -0
  22. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/src/error.rs +0 -0
  23. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/src/json_api.rs +0 -0
  24. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/src/signer_info.rs +0 -0
  25. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/src/streams.rs +0 -0
  26. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/src/test_stream.rs +0 -0
  27. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/tests/benchmark.py +0 -0
  28. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/tests/fixtures/A.jpg +0 -0
  29. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/tests/fixtures/A_thumbnail.jpg +0 -0
  30. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/tests/fixtures/C.jpg +0 -0
  31. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/tests/fixtures/cloud.jpg +0 -0
  32. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/tests/fixtures/es256_certs.pem +0 -0
  33. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/tests/fixtures/es256_private.key +0 -0
  34. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/tests/fixtures/ps256.pem +0 -0
  35. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/tests/fixtures/ps256.pub +0 -0
  36. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/tests/test_api.py +0 -0
  37. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/tests/test_unit_tests.py +0 -0
  38. {c2pa_python-0.5.3 → c2pa_python-0.6.0}/tests/training.py +0 -0
@@ -55,7 +55,6 @@ jobs:
55
55
  # If we're running on debian-based system.
56
56
  apt update -y && apt-get install -y libssl-dev openssl pkg-config
57
57
  fi
58
-
59
58
  - name: Upload wheels
60
59
  uses: actions/upload-artifact@v3
61
60
  with:
@@ -23,6 +23,15 @@ version = "2.0.0"
23
23
  source = "registry+https://github.com/rust-lang/crates.io-index"
24
24
  checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
25
25
 
26
+ [[package]]
27
+ name = "aho-corasick"
28
+ version = "1.1.3"
29
+ source = "registry+https://github.com/rust-lang/crates.io-index"
30
+ checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
31
+ dependencies = [
32
+ "memchr",
33
+ ]
34
+
26
35
  [[package]]
27
36
  name = "android-tzdata"
28
37
  version = "0.1.1"
@@ -38,11 +47,60 @@ dependencies = [
38
47
  "libc",
39
48
  ]
40
49
 
50
+ [[package]]
51
+ name = "anstream"
52
+ version = "0.6.15"
53
+ source = "registry+https://github.com/rust-lang/crates.io-index"
54
+ checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526"
55
+ dependencies = [
56
+ "anstyle",
57
+ "anstyle-parse",
58
+ "anstyle-query",
59
+ "anstyle-wincon",
60
+ "colorchoice",
61
+ "is_terminal_polyfill",
62
+ "utf8parse",
63
+ ]
64
+
65
+ [[package]]
66
+ name = "anstyle"
67
+ version = "1.0.8"
68
+ source = "registry+https://github.com/rust-lang/crates.io-index"
69
+ checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1"
70
+
71
+ [[package]]
72
+ name = "anstyle-parse"
73
+ version = "0.2.5"
74
+ source = "registry+https://github.com/rust-lang/crates.io-index"
75
+ checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb"
76
+ dependencies = [
77
+ "utf8parse",
78
+ ]
79
+
80
+ [[package]]
81
+ name = "anstyle-query"
82
+ version = "1.1.1"
83
+ source = "registry+https://github.com/rust-lang/crates.io-index"
84
+ checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a"
85
+ dependencies = [
86
+ "windows-sys 0.52.0",
87
+ ]
88
+
89
+ [[package]]
90
+ name = "anstyle-wincon"
91
+ version = "3.0.4"
92
+ source = "registry+https://github.com/rust-lang/crates.io-index"
93
+ checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8"
94
+ dependencies = [
95
+ "anstyle",
96
+ "windows-sys 0.52.0",
97
+ ]
98
+
41
99
  [[package]]
42
100
  name = "anyhow"
43
- version = "1.0.89"
101
+ version = "1.0.91"
44
102
  source = "registry+https://github.com/rust-lang/crates.io-index"
45
- checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6"
103
+ checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8"
46
104
 
47
105
  [[package]]
48
106
  name = "arrayref"
@@ -85,7 +143,7 @@ dependencies = [
85
143
  "proc-macro2",
86
144
  "quote",
87
145
  "serde",
88
- "syn 2.0.79",
146
+ "syn 2.0.85",
89
147
  ]
90
148
 
91
149
  [[package]]
@@ -150,7 +208,7 @@ checksum = "ddf3728566eefa873833159754f5732fb0951d3649e6e5b891cc70d56dd41673"
150
208
  dependencies = [
151
209
  "proc-macro2",
152
210
  "quote",
153
- "syn 2.0.79",
211
+ "syn 2.0.85",
154
212
  ]
155
213
 
156
214
  [[package]]
@@ -161,7 +219,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
161
219
  dependencies = [
162
220
  "proc-macro2",
163
221
  "quote",
164
- "syn 2.0.79",
222
+ "syn 2.0.85",
165
223
  ]
166
224
 
167
225
  [[package]]
@@ -172,7 +230,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd"
172
230
  dependencies = [
173
231
  "proc-macro2",
174
232
  "quote",
175
- "syn 2.0.79",
233
+ "syn 2.0.85",
176
234
  ]
177
235
 
178
236
  [[package]]
@@ -355,9 +413,9 @@ dependencies = [
355
413
 
356
414
  [[package]]
357
415
  name = "bytes"
358
- version = "1.7.2"
416
+ version = "1.8.0"
359
417
  source = "registry+https://github.com/rust-lang/crates.io-index"
360
- checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3"
418
+ checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da"
361
419
 
362
420
  [[package]]
363
421
  name = "c2pa"
@@ -436,9 +494,11 @@ dependencies = [
436
494
 
437
495
  [[package]]
438
496
  name = "c2pa-python"
439
- version = "0.5.3"
497
+ version = "0.6.0"
440
498
  dependencies = [
441
499
  "c2pa",
500
+ "env_logger",
501
+ "log",
442
502
  "openssl-src",
443
503
  "pem 3.0.4",
444
504
  "serde",
@@ -482,9 +542,9 @@ dependencies = [
482
542
 
483
543
  [[package]]
484
544
  name = "cc"
485
- version = "1.1.28"
545
+ version = "1.1.31"
486
546
  source = "registry+https://github.com/rust-lang/crates.io-index"
487
- checksum = "2e80e3b6a3ab07840e1cae9b0666a63970dc28e8ed5ffbcdacbfc760c281bfc1"
547
+ checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f"
488
548
  dependencies = [
489
549
  "shlex",
490
550
  ]
@@ -537,14 +597,19 @@ dependencies = [
537
597
  "half 2.4.1",
538
598
  ]
539
599
 
600
+ [[package]]
601
+ name = "colorchoice"
602
+ version = "1.0.2"
603
+ source = "registry+https://github.com/rust-lang/crates.io-index"
604
+ checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0"
605
+
540
606
  [[package]]
541
607
  name = "config"
542
- version = "0.14.0"
608
+ version = "0.14.1"
543
609
  source = "registry+https://github.com/rust-lang/crates.io-index"
544
- checksum = "7328b20597b53c2454f0b1919720c25c7339051c02b72b7e05409e00b14132be"
610
+ checksum = "68578f196d2a33ff61b27fae256c3164f65e36382648e30666dde05b8cc9dfdf"
545
611
  dependencies = [
546
612
  "json5",
547
- "lazy_static",
548
613
  "nom",
549
614
  "pathdiff",
550
615
  "ron",
@@ -711,7 +776,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
711
776
  dependencies = [
712
777
  "proc-macro2",
713
778
  "quote",
714
- "syn 2.0.79",
779
+ "syn 2.0.85",
715
780
  ]
716
781
 
717
782
  [[package]]
@@ -741,7 +806,7 @@ dependencies = [
741
806
  "proc-macro2",
742
807
  "quote",
743
808
  "strsim",
744
- "syn 2.0.79",
809
+ "syn 2.0.85",
745
810
  ]
746
811
 
747
812
  [[package]]
@@ -752,7 +817,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
752
817
  dependencies = [
753
818
  "darling_core",
754
819
  "quote",
755
- "syn 2.0.79",
820
+ "syn 2.0.85",
756
821
  ]
757
822
 
758
823
  [[package]]
@@ -853,7 +918,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
853
918
  dependencies = [
854
919
  "proc-macro2",
855
920
  "quote",
856
- "syn 2.0.79",
921
+ "syn 2.0.85",
857
922
  ]
858
923
 
859
924
  [[package]]
@@ -903,13 +968,36 @@ checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
903
968
 
904
969
  [[package]]
905
970
  name = "encoding_rs"
906
- version = "0.8.34"
971
+ version = "0.8.35"
907
972
  source = "registry+https://github.com/rust-lang/crates.io-index"
908
- checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59"
973
+ checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
909
974
  dependencies = [
910
975
  "cfg-if",
911
976
  ]
912
977
 
978
+ [[package]]
979
+ name = "env_filter"
980
+ version = "0.1.2"
981
+ source = "registry+https://github.com/rust-lang/crates.io-index"
982
+ checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab"
983
+ dependencies = [
984
+ "log",
985
+ "regex",
986
+ ]
987
+
988
+ [[package]]
989
+ name = "env_logger"
990
+ version = "0.11.5"
991
+ source = "registry+https://github.com/rust-lang/crates.io-index"
992
+ checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d"
993
+ dependencies = [
994
+ "anstream",
995
+ "anstyle",
996
+ "env_filter",
997
+ "humantime",
998
+ "log",
999
+ ]
1000
+
913
1001
  [[package]]
914
1002
  name = "equivalent"
915
1003
  version = "1.0.1"
@@ -1078,9 +1166,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
1078
1166
 
1079
1167
  [[package]]
1080
1168
  name = "hashbrown"
1081
- version = "0.13.2"
1169
+ version = "0.14.5"
1082
1170
  source = "registry+https://github.com/rust-lang/crates.io-index"
1083
- checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
1171
+ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
1084
1172
 
1085
1173
  [[package]]
1086
1174
  name = "hashbrown"
@@ -1100,6 +1188,12 @@ version = "0.4.3"
1100
1188
  source = "registry+https://github.com/rust-lang/crates.io-index"
1101
1189
  checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
1102
1190
 
1191
+ [[package]]
1192
+ name = "humantime"
1193
+ version = "2.1.0"
1194
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1195
+ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
1196
+
1103
1197
  [[package]]
1104
1198
  name = "iana-time-zone"
1105
1199
  version = "0.1.61"
@@ -1195,6 +1289,12 @@ dependencies = [
1195
1289
  "web-sys",
1196
1290
  ]
1197
1291
 
1292
+ [[package]]
1293
+ name = "is_terminal_polyfill"
1294
+ version = "1.70.1"
1295
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1296
+ checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
1297
+
1198
1298
  [[package]]
1199
1299
  name = "itertools"
1200
1300
  version = "0.10.5"
@@ -1218,9 +1318,9 @@ checksum = "326647c83ea8fb213e58a272f11d4569611277d8730f9905a59fba9d30b12c05"
1218
1318
 
1219
1319
  [[package]]
1220
1320
  name = "js-sys"
1221
- version = "0.3.71"
1321
+ version = "0.3.72"
1222
1322
  source = "registry+https://github.com/rust-lang/crates.io-index"
1223
- checksum = "0cb94a0ffd3f3ee755c20f7d8752f45cac88605a4dcf808abcff72873296ec7b"
1323
+ checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9"
1224
1324
  dependencies = [
1225
1325
  "wasm-bindgen",
1226
1326
  ]
@@ -1282,9 +1382,9 @@ dependencies = [
1282
1382
 
1283
1383
  [[package]]
1284
1384
  name = "libc"
1285
- version = "0.2.159"
1385
+ version = "0.2.161"
1286
1386
  source = "registry+https://github.com/rust-lang/crates.io-index"
1287
- checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5"
1387
+ checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1"
1288
1388
 
1289
1389
  [[package]]
1290
1390
  name = "libm"
@@ -1539,9 +1639,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381"
1539
1639
 
1540
1640
  [[package]]
1541
1641
  name = "openssl"
1542
- version = "0.10.66"
1642
+ version = "0.10.68"
1543
1643
  source = "registry+https://github.com/rust-lang/crates.io-index"
1544
- checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1"
1644
+ checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5"
1545
1645
  dependencies = [
1546
1646
  "bitflags",
1547
1647
  "cfg-if",
@@ -1560,7 +1660,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
1560
1660
  dependencies = [
1561
1661
  "proc-macro2",
1562
1662
  "quote",
1563
- "syn 2.0.79",
1663
+ "syn 2.0.85",
1564
1664
  ]
1565
1665
 
1566
1666
  [[package]]
@@ -1574,9 +1674,9 @@ dependencies = [
1574
1674
 
1575
1675
  [[package]]
1576
1676
  name = "openssl-sys"
1577
- version = "0.9.103"
1677
+ version = "0.9.104"
1578
1678
  source = "registry+https://github.com/rust-lang/crates.io-index"
1579
- checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6"
1679
+ checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741"
1580
1680
  dependencies = [
1581
1681
  "cc",
1582
1682
  "libc",
@@ -1587,12 +1687,12 @@ dependencies = [
1587
1687
 
1588
1688
  [[package]]
1589
1689
  name = "ordered-multimap"
1590
- version = "0.6.0"
1690
+ version = "0.7.3"
1591
1691
  source = "registry+https://github.com/rust-lang/crates.io-index"
1592
- checksum = "4ed8acf08e98e744e5384c8bc63ceb0364e68a6854187221c18df61c4797690e"
1692
+ checksum = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79"
1593
1693
  dependencies = [
1594
1694
  "dlv-list",
1595
- "hashbrown 0.13.2",
1695
+ "hashbrown 0.14.5",
1596
1696
  ]
1597
1697
 
1598
1698
  [[package]]
@@ -1603,9 +1703,9 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
1603
1703
 
1604
1704
  [[package]]
1605
1705
  name = "pathdiff"
1606
- version = "0.2.1"
1706
+ version = "0.2.2"
1607
1707
  source = "registry+https://github.com/rust-lang/crates.io-index"
1608
- checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd"
1708
+ checksum = "d61c5ce1153ab5b689d0c074c4e7fc613e942dfb7dd9eea5ab202d2ad91fe361"
1609
1709
 
1610
1710
  [[package]]
1611
1711
  name = "pem"
@@ -1644,9 +1744,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
1644
1744
 
1645
1745
  [[package]]
1646
1746
  name = "pest"
1647
- version = "2.7.13"
1747
+ version = "2.7.14"
1648
1748
  source = "registry+https://github.com/rust-lang/crates.io-index"
1649
- checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9"
1749
+ checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442"
1650
1750
  dependencies = [
1651
1751
  "memchr",
1652
1752
  "thiserror",
@@ -1655,9 +1755,9 @@ dependencies = [
1655
1755
 
1656
1756
  [[package]]
1657
1757
  name = "pest_derive"
1658
- version = "2.7.13"
1758
+ version = "2.7.14"
1659
1759
  source = "registry+https://github.com/rust-lang/crates.io-index"
1660
- checksum = "4d3a6e3394ec80feb3b6393c725571754c6188490265c61aaf260810d6b95aa0"
1760
+ checksum = "d214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd"
1661
1761
  dependencies = [
1662
1762
  "pest",
1663
1763
  "pest_generator",
@@ -1665,22 +1765,22 @@ dependencies = [
1665
1765
 
1666
1766
  [[package]]
1667
1767
  name = "pest_generator"
1668
- version = "2.7.13"
1768
+ version = "2.7.14"
1669
1769
  source = "registry+https://github.com/rust-lang/crates.io-index"
1670
- checksum = "94429506bde1ca69d1b5601962c73f4172ab4726571a59ea95931218cb0e930e"
1770
+ checksum = "eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e"
1671
1771
  dependencies = [
1672
1772
  "pest",
1673
1773
  "pest_meta",
1674
1774
  "proc-macro2",
1675
1775
  "quote",
1676
- "syn 2.0.79",
1776
+ "syn 2.0.85",
1677
1777
  ]
1678
1778
 
1679
1779
  [[package]]
1680
1780
  name = "pest_meta"
1681
- version = "2.7.13"
1781
+ version = "2.7.14"
1682
1782
  source = "registry+https://github.com/rust-lang/crates.io-index"
1683
- checksum = "ac8a071862e93690b6e34e9a5fb8e33ff3734473ac0245b27232222c4906a33f"
1783
+ checksum = "b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d"
1684
1784
  dependencies = [
1685
1785
  "once_cell",
1686
1786
  "pest",
@@ -1689,9 +1789,9 @@ dependencies = [
1689
1789
 
1690
1790
  [[package]]
1691
1791
  name = "pix"
1692
- version = "0.13.3"
1792
+ version = "0.13.4"
1693
1793
  source = "registry+https://github.com/rust-lang/crates.io-index"
1694
- checksum = "5de5067af0cd27add969cdb4ef2eecc955f59235f3b7a75a3c6ac9562cfb6b81"
1794
+ checksum = "b6574ffbea793ab0c9a9b09ae99831f1513fdd7732b12aca4c7182c46dc3bc9f"
1695
1795
 
1696
1796
  [[package]]
1697
1797
  name = "pkcs1"
@@ -1754,9 +1854,9 @@ dependencies = [
1754
1854
 
1755
1855
  [[package]]
1756
1856
  name = "proc-macro2"
1757
- version = "1.0.87"
1857
+ version = "1.0.89"
1758
1858
  source = "registry+https://github.com/rust-lang/crates.io-index"
1759
- checksum = "b3e4daa0dcf6feba26f985457cdf104d4b4256fc5a09547140f3631bb076b19a"
1859
+ checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e"
1760
1860
  dependencies = [
1761
1861
  "unicode-ident",
1762
1862
  ]
@@ -1902,6 +2002,35 @@ dependencies = [
1902
2002
  "crossbeam-utils",
1903
2003
  ]
1904
2004
 
2005
+ [[package]]
2006
+ name = "regex"
2007
+ version = "1.11.1"
2008
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2009
+ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
2010
+ dependencies = [
2011
+ "aho-corasick",
2012
+ "memchr",
2013
+ "regex-automata",
2014
+ "regex-syntax",
2015
+ ]
2016
+
2017
+ [[package]]
2018
+ name = "regex-automata"
2019
+ version = "0.4.8"
2020
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2021
+ checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3"
2022
+ dependencies = [
2023
+ "aho-corasick",
2024
+ "memchr",
2025
+ "regex-syntax",
2026
+ ]
2027
+
2028
+ [[package]]
2029
+ name = "regex-syntax"
2030
+ version = "0.8.5"
2031
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2032
+ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
2033
+
1905
2034
  [[package]]
1906
2035
  name = "riff"
1907
2036
  version = "2.0.0"
@@ -1973,9 +2102,9 @@ dependencies = [
1973
2102
 
1974
2103
  [[package]]
1975
2104
  name = "rust-ini"
1976
- version = "0.19.0"
2105
+ version = "0.20.0"
1977
2106
  source = "registry+https://github.com/rust-lang/crates.io-index"
1978
- checksum = "7e2a3bcec1f113553ef1c88aae6c020a369d03d55b58de9869a0908930385091"
2107
+ checksum = "3e0698206bcb8882bf2a9ecb4c1e7785db57ff052297085a6efd4fe42302068a"
1979
2108
  dependencies = [
1980
2109
  "cfg-if",
1981
2110
  "ordered-multimap",
@@ -2020,9 +2149,9 @@ dependencies = [
2020
2149
 
2021
2150
  [[package]]
2022
2151
  name = "rustls"
2023
- version = "0.23.14"
2152
+ version = "0.23.15"
2024
2153
  source = "registry+https://github.com/rust-lang/crates.io-index"
2025
- checksum = "415d9944693cb90382053259f89fbb077ea730ad7273047ec63b19bc9b160ba8"
2154
+ checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993"
2026
2155
  dependencies = [
2027
2156
  "log",
2028
2157
  "once_cell",
@@ -2035,9 +2164,9 @@ dependencies = [
2035
2164
 
2036
2165
  [[package]]
2037
2166
  name = "rustls-pki-types"
2038
- version = "1.9.0"
2167
+ version = "1.10.0"
2039
2168
  source = "registry+https://github.com/rust-lang/crates.io-index"
2040
- checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55"
2169
+ checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b"
2041
2170
 
2042
2171
  [[package]]
2043
2172
  name = "rustls-webpki"
@@ -2073,7 +2202,7 @@ checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae"
2073
2202
  dependencies = [
2074
2203
  "proc-macro2",
2075
2204
  "quote",
2076
- "syn 2.0.79",
2205
+ "syn 2.0.85",
2077
2206
  ]
2078
2207
 
2079
2208
  [[package]]
@@ -2087,9 +2216,9 @@ dependencies = [
2087
2216
 
2088
2217
  [[package]]
2089
2218
  name = "serde"
2090
- version = "1.0.210"
2219
+ version = "1.0.213"
2091
2220
  source = "registry+https://github.com/rust-lang/crates.io-index"
2092
- checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a"
2221
+ checksum = "3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1"
2093
2222
  dependencies = [
2094
2223
  "serde_derive",
2095
2224
  ]
@@ -2135,20 +2264,20 @@ dependencies = [
2135
2264
 
2136
2265
  [[package]]
2137
2266
  name = "serde_derive"
2138
- version = "1.0.210"
2267
+ version = "1.0.213"
2139
2268
  source = "registry+https://github.com/rust-lang/crates.io-index"
2140
- checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f"
2269
+ checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5"
2141
2270
  dependencies = [
2142
2271
  "proc-macro2",
2143
2272
  "quote",
2144
- "syn 2.0.79",
2273
+ "syn 2.0.85",
2145
2274
  ]
2146
2275
 
2147
2276
  [[package]]
2148
2277
  name = "serde_json"
2149
- version = "1.0.128"
2278
+ version = "1.0.132"
2150
2279
  source = "registry+https://github.com/rust-lang/crates.io-index"
2151
- checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8"
2280
+ checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03"
2152
2281
  dependencies = [
2153
2282
  "indexmap 2.6.0",
2154
2283
  "itoa",
@@ -2193,7 +2322,7 @@ dependencies = [
2193
2322
  "darling",
2194
2323
  "proc-macro2",
2195
2324
  "quote",
2196
- "syn 2.0.79",
2325
+ "syn 2.0.85",
2197
2326
  ]
2198
2327
 
2199
2328
  [[package]]
@@ -2364,9 +2493,9 @@ dependencies = [
2364
2493
 
2365
2494
  [[package]]
2366
2495
  name = "syn"
2367
- version = "2.0.79"
2496
+ version = "2.0.85"
2368
2497
  source = "registry+https://github.com/rust-lang/crates.io-index"
2369
- checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590"
2498
+ checksum = "5023162dfcd14ef8f32034d8bcd4cc5ddc61ef7a247c024a33e24e1f24d21b56"
2370
2499
  dependencies = [
2371
2500
  "proc-macro2",
2372
2501
  "quote",
@@ -2406,22 +2535,22 @@ dependencies = [
2406
2535
 
2407
2536
  [[package]]
2408
2537
  name = "thiserror"
2409
- version = "1.0.64"
2538
+ version = "1.0.65"
2410
2539
  source = "registry+https://github.com/rust-lang/crates.io-index"
2411
- checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84"
2540
+ checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5"
2412
2541
  dependencies = [
2413
2542
  "thiserror-impl",
2414
2543
  ]
2415
2544
 
2416
2545
  [[package]]
2417
2546
  name = "thiserror-impl"
2418
- version = "1.0.64"
2547
+ version = "1.0.65"
2419
2548
  source = "registry+https://github.com/rust-lang/crates.io-index"
2420
- checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3"
2549
+ checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602"
2421
2550
  dependencies = [
2422
2551
  "proc-macro2",
2423
2552
  "quote",
2424
- "syn 2.0.79",
2553
+ "syn 2.0.85",
2425
2554
  ]
2426
2555
 
2427
2556
  [[package]]
@@ -2557,12 +2686,9 @@ checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971"
2557
2686
 
2558
2687
  [[package]]
2559
2688
  name = "unicase"
2560
- version = "2.7.0"
2689
+ version = "2.8.0"
2561
2690
  source = "registry+https://github.com/rust-lang/crates.io-index"
2562
- checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89"
2563
- dependencies = [
2564
- "version_check",
2565
- ]
2691
+ checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df"
2566
2692
 
2567
2693
  [[package]]
2568
2694
  name = "unicode-bidi"
@@ -2645,7 +2771,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2645
2771
  checksum = "d1b354a9bd654cc6547d461ccd60a10eb6c7473178f12d8ff91cf4340ae947e8"
2646
2772
  dependencies = [
2647
2773
  "quote",
2648
- "syn 2.0.79",
2774
+ "syn 2.0.85",
2649
2775
  ]
2650
2776
 
2651
2777
  [[package]]
@@ -2677,7 +2803,7 @@ dependencies = [
2677
2803
  "proc-macro2",
2678
2804
  "quote",
2679
2805
  "serde",
2680
- "syn 2.0.79",
2806
+ "syn 2.0.85",
2681
2807
  "toml 0.5.11",
2682
2808
  "uniffi_build",
2683
2809
  "uniffi_meta",
@@ -2756,11 +2882,17 @@ dependencies = [
2756
2882
  "percent-encoding",
2757
2883
  ]
2758
2884
 
2885
+ [[package]]
2886
+ name = "utf8parse"
2887
+ version = "0.2.2"
2888
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2889
+ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
2890
+
2759
2891
  [[package]]
2760
2892
  name = "uuid"
2761
- version = "1.10.0"
2893
+ version = "1.11.0"
2762
2894
  source = "registry+https://github.com/rust-lang/crates.io-index"
2763
- checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314"
2895
+ checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a"
2764
2896
  dependencies = [
2765
2897
  "getrandom",
2766
2898
  "serde",
@@ -2787,9 +2919,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
2787
2919
 
2788
2920
  [[package]]
2789
2921
  name = "wasm-bindgen"
2790
- version = "0.2.94"
2922
+ version = "0.2.95"
2791
2923
  source = "registry+https://github.com/rust-lang/crates.io-index"
2792
- checksum = "ef073ced962d62984fb38a36e5fdc1a2b23c9e0e1fa0689bb97afa4202ef6887"
2924
+ checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e"
2793
2925
  dependencies = [
2794
2926
  "cfg-if",
2795
2927
  "once_cell",
@@ -2798,24 +2930,24 @@ dependencies = [
2798
2930
 
2799
2931
  [[package]]
2800
2932
  name = "wasm-bindgen-backend"
2801
- version = "0.2.94"
2933
+ version = "0.2.95"
2802
2934
  source = "registry+https://github.com/rust-lang/crates.io-index"
2803
- checksum = "c4bfab14ef75323f4eb75fa52ee0a3fb59611977fd3240da19b2cf36ff85030e"
2935
+ checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358"
2804
2936
  dependencies = [
2805
2937
  "bumpalo",
2806
2938
  "log",
2807
2939
  "once_cell",
2808
2940
  "proc-macro2",
2809
2941
  "quote",
2810
- "syn 2.0.79",
2942
+ "syn 2.0.85",
2811
2943
  "wasm-bindgen-shared",
2812
2944
  ]
2813
2945
 
2814
2946
  [[package]]
2815
2947
  name = "wasm-bindgen-futures"
2816
- version = "0.4.44"
2948
+ version = "0.4.45"
2817
2949
  source = "registry+https://github.com/rust-lang/crates.io-index"
2818
- checksum = "65471f79c1022ffa5291d33520cbbb53b7687b01c2f8e83b57d102eed7ed479d"
2950
+ checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b"
2819
2951
  dependencies = [
2820
2952
  "cfg-if",
2821
2953
  "js-sys",
@@ -2825,9 +2957,9 @@ dependencies = [
2825
2957
 
2826
2958
  [[package]]
2827
2959
  name = "wasm-bindgen-macro"
2828
- version = "0.2.94"
2960
+ version = "0.2.95"
2829
2961
  source = "registry+https://github.com/rust-lang/crates.io-index"
2830
- checksum = "a7bec9830f60924d9ceb3ef99d55c155be8afa76954edffbb5936ff4509474e7"
2962
+ checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56"
2831
2963
  dependencies = [
2832
2964
  "quote",
2833
2965
  "wasm-bindgen-macro-support",
@@ -2835,28 +2967,28 @@ dependencies = [
2835
2967
 
2836
2968
  [[package]]
2837
2969
  name = "wasm-bindgen-macro-support"
2838
- version = "0.2.94"
2970
+ version = "0.2.95"
2839
2971
  source = "registry+https://github.com/rust-lang/crates.io-index"
2840
- checksum = "4c74f6e152a76a2ad448e223b0fc0b6b5747649c3d769cc6bf45737bf97d0ed6"
2972
+ checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68"
2841
2973
  dependencies = [
2842
2974
  "proc-macro2",
2843
2975
  "quote",
2844
- "syn 2.0.79",
2976
+ "syn 2.0.85",
2845
2977
  "wasm-bindgen-backend",
2846
2978
  "wasm-bindgen-shared",
2847
2979
  ]
2848
2980
 
2849
2981
  [[package]]
2850
2982
  name = "wasm-bindgen-shared"
2851
- version = "0.2.94"
2983
+ version = "0.2.95"
2852
2984
  source = "registry+https://github.com/rust-lang/crates.io-index"
2853
- checksum = "a42f6c679374623f295a8623adfe63d9284091245c3504bde47c17a3ce2777d9"
2985
+ checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d"
2854
2986
 
2855
2987
  [[package]]
2856
2988
  name = "web-sys"
2857
- version = "0.3.71"
2989
+ version = "0.3.72"
2858
2990
  source = "registry+https://github.com/rust-lang/crates.io-index"
2859
- checksum = "44188d185b5bdcae1052d08bcbcf9091a5524038d4572cc4f4f2bb9d5554ddd9"
2991
+ checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112"
2860
2992
  dependencies = [
2861
2993
  "js-sys",
2862
2994
  "wasm-bindgen",
@@ -3070,7 +3202,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
3070
3202
  dependencies = [
3071
3203
  "proc-macro2",
3072
3204
  "quote",
3073
- "syn 2.0.79",
3205
+ "syn 2.0.85",
3074
3206
  ]
3075
3207
 
3076
3208
  [[package]]
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "c2pa-python"
3
- version = "0.5.3"
3
+ version = "0.6.0"
4
4
  edition = "2021"
5
5
  authors = ["Gavin Peacock <gpeacock@adobe.com"]
6
6
 
@@ -19,6 +19,8 @@ serde_json = "1.0"
19
19
  thiserror = "1.0.49"
20
20
  uniffi = "0.24.1"
21
21
  openssl-src = "=300.3.1" # Required for openssl-sys
22
+ log = "0.4.21"
23
+ env_logger = "0.11.3"
22
24
 
23
25
  [build-dependencies]
24
26
  uniffi = { version = "0.24.1", features = ["build"] }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: c2pa-python
3
- Version: 0.5.3
3
+ Version: 0.6.0
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Programming Language :: Rust
6
6
  Classifier: Programming Language :: Python :: Implementation :: CPython
@@ -355,6 +355,8 @@ pip install -U pytest
355
355
  python3 -m build --wheel
356
356
  ```
357
357
 
358
+ Note: To peek at the Python code (uniffi generated and non-generated), run `maturin develop` and look in the c2pa folder.
359
+
358
360
  ### ManyLinux build
359
361
 
360
362
  Build using [manylinux](https://github.com/pypa/manylinux) by using a Docker image as follows:
@@ -333,6 +333,8 @@ pip install -U pytest
333
333
  python3 -m build --wheel
334
334
  ```
335
335
 
336
+ Note: To peek at the Python code (uniffi generated and non-generated), run `maturin develop` and look in the c2pa folder.
337
+
336
338
  ### ManyLinux build
337
339
 
338
340
  Build using [manylinux](https://github.com/pypa/manylinux) by using a Docker image as follows:
@@ -11,7 +11,7 @@
11
11
  # specific language governing permissions and limitations under
12
12
  # each license.
13
13
 
14
- from .c2pa_api import Reader, Builder, create_signer, sign_ps256
14
+ from .c2pa_api import Reader, Builder, create_signer, create_remote_signer, sign_ps256
15
15
  from .c2pa import Error, SigningAlg, sdk_version, version
16
16
 
17
- __all__ = ['Reader', 'Builder', 'create_signer', 'sign_ps256', 'Error', 'SigningAlg', 'sdk_version', 'version']
17
+ __all__ = ['Reader', 'Builder', 'create_signer', 'sign_ps256', 'Error', 'SigningAlg', 'sdk_version', 'version', 'create_remote_signer']
@@ -23,7 +23,6 @@ SOURCE_PATH = os.path.join(
23
23
  sys.path.append(SOURCE_PATH)
24
24
 
25
25
  import c2pa.c2pa as api
26
- #from c2pa import Error, SigningAlg, version, sdk_version
27
26
 
28
27
  # This module provides a simple Python API for the C2PA library.
29
28
 
@@ -134,7 +133,6 @@ class Builder(api.Builder):
134
133
  return super().sign_file(signer, sourcePath, outputPath)
135
134
 
136
135
 
137
-
138
136
  # Implements a C2paStream given a stream handle
139
137
  # This is used to pass a file handle to the c2pa library
140
138
  # It is used by the Reader and Builder classes internally
@@ -166,6 +164,7 @@ class C2paStream(api.Stream):
166
164
  def open_file(path: str, mode: str) -> api.Stream:
167
165
  return C2paStream(open(path, mode))
168
166
 
167
+
169
168
  # Internal class to implement signer callbacks
170
169
  # We need this because the callback expects a class with a sign method
171
170
  class SignerCallback(api.SignerCallback):
@@ -193,7 +192,37 @@ class SignerCallback(api.SignerCallback):
193
192
  def create_signer(callback, alg, certs, timestamp_url=None):
194
193
  return api.CallbackSigner(SignerCallback(callback), alg, certs, timestamp_url)
195
194
 
196
-
195
+ # Because we "share" SigningAlg enum in-between bindings,
196
+ # seems we need to manually coerce the enum types,
197
+ # like unffi itself does too
198
+ def convert_to_alg(alg):
199
+ match str(alg):
200
+ case "SigningAlg.ES256":
201
+ return api.SigningAlg.ES256
202
+ case "SigningAlg.ES384":
203
+ return api.SigningAlg.ES384
204
+ case "SigningAlg.ES512":
205
+ return api.SigningAlg.ES512
206
+ case "SigningAlg.PS256":
207
+ return api.SigningAlg.PS256
208
+ case "SigningAlg.PS384":
209
+ return api.SigningAlg.PS384
210
+ case "SigningAlg.PS512":
211
+ return api.SigningAlg.PS512
212
+ case "SigningAlg.ED25519":
213
+ return api.SigningAlg.ED25519
214
+ case _:
215
+ raise ValueError("Unsupported signing algorithm: " + str(alg))
216
+
217
+ # Creates a special case signer that uses direct COSE handling
218
+ # The callback signer should also define the signing algorithm to use
219
+ # And a way to find out the needed reserve size
220
+ def create_remote_signer(callback):
221
+ return api.CallbackSigner.new_from_signer(
222
+ callback,
223
+ convert_to_alg(callback.alg()),
224
+ callback.reserve_size()
225
+ )
197
226
 
198
227
  # Example of using openssl in an os shell to sign data using Ps256
199
228
  # Note: the openssl command line tool must be installed for this to work
@@ -74,6 +74,9 @@ callback interface SignerCallback {
74
74
 
75
75
  interface CallbackSigner {
76
76
  constructor(SignerCallback callback, SigningAlg alg, bytes certs, string? ta_url);
77
+
78
+ [Name=new_from_signer]
79
+ constructor(SignerCallback callback, SigningAlg alg, u32 reserve_size);
77
80
  };
78
81
 
79
82
  interface Builder {
@@ -10,7 +10,8 @@
10
10
  // specific language governing permissions and limitations under
11
11
  // each license.
12
12
 
13
- use c2pa::SigningAlg;
13
+ use c2pa::{SigningAlg, Signer};
14
+ use log::debug;
14
15
 
15
16
  use crate::Result;
16
17
 
@@ -24,7 +25,36 @@ pub trait SignerCallback: Send + Sync {
24
25
  ///
25
26
  /// Uniffi callbacks are only supported as a method in a structure, so this is a workaround
26
27
  pub struct CallbackSigner {
27
- signer: c2pa::CallbackSigner,
28
+ signer: Box<dyn Signer + Sync + Send>,
29
+ }
30
+
31
+ pub struct RemoteSigner {
32
+ signer_callback : Box<dyn SignerCallback>,
33
+ alg: SigningAlg,
34
+ reserve_size: u32,
35
+ }
36
+
37
+ impl c2pa::Signer for RemoteSigner {
38
+ fn alg(&self) -> SigningAlg {
39
+ self.alg
40
+ }
41
+
42
+ fn certs(&self) -> c2pa::Result<Vec<Vec<u8>>> {
43
+ Ok(Vec::new())
44
+ }
45
+
46
+ // signer will return a COSE structure
47
+ fn direct_cose_handling(&self) -> bool {
48
+ true
49
+ }
50
+
51
+ fn sign(&self, data: &[u8]) -> c2pa::Result<Vec<u8>> {
52
+ self.signer_callback.sign(data.to_vec()).map_err(|e| c2pa::Error::BadParam(e.to_string()))
53
+ }
54
+
55
+ fn reserve_size(&self) -> usize {
56
+ self.reserve_size as usize // TODO: Find better conversion for usize
57
+ }
28
58
  }
29
59
 
30
60
  impl CallbackSigner {
@@ -45,11 +75,27 @@ impl CallbackSigner {
45
75
  if let Some(url) = ta_url {
46
76
  signer = signer.set_tsa_url(url);
47
77
  }
48
- Self { signer }
78
+
79
+ Self { signer: Box::new(signer) }
80
+ }
81
+
82
+ pub fn new_from_signer(
83
+ callback: Box<dyn SignerCallback>,
84
+ alg: SigningAlg,
85
+ reserve_size: u32,
86
+ ) -> Self {
87
+ debug!("c2pa-python: CallbackSigner -> new_from_signer");
88
+ let signer = RemoteSigner {
89
+ signer_callback: callback,
90
+ alg,
91
+ reserve_size
92
+ };
93
+
94
+ Self { signer: Box::new(signer) }
49
95
  }
50
96
 
51
97
  /// The python Builder wrapper sign function calls this
52
- pub fn signer(&self) -> &c2pa::CallbackSigner {
98
+ pub fn signer(&self) -> &Box<dyn c2pa::Signer + Sync + Send> {
53
99
  &self.signer
54
100
  }
55
101
  }
@@ -134,7 +134,7 @@ impl Builder {
134
134
  Ok(())
135
135
  }
136
136
 
137
- /// Set to true to disable embedding a manifest
137
+ /// Set to true to disable embedding a manifest
138
138
  pub fn set_no_embed(&self) -> Result<()> {
139
139
  if let Ok(mut builder) = self.builder.try_write() {
140
140
  builder.set_no_embed(true);
@@ -214,7 +214,7 @@ impl Builder {
214
214
  let mut dest = StreamAdapter::from(dest);
215
215
  if let Ok(mut builder) = self.builder.try_write() {
216
216
  let signer = (*signer).signer();
217
- Ok(builder.sign(signer, format, &mut source, &mut dest)?)
217
+ Ok(builder.sign(signer.as_ref(), format, &mut source, &mut dest)?)
218
218
  } else {
219
219
  Err(Error::RwLock)
220
220
  }
@@ -224,7 +224,7 @@ impl Builder {
224
224
  pub fn sign_file(&self, signer: &CallbackSigner, source: &str, dest: &str) -> Result<Vec<u8>> {
225
225
  if let Ok(mut builder) = self.builder.try_write() {
226
226
  let signer = (*signer).signer();
227
- Ok(builder.sign_file(signer, source, dest)?)
227
+ Ok(builder.sign_file(signer.as_ref(), source, dest)?)
228
228
  } else {
229
229
  Err(Error::RwLock)
230
230
  }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes