commit c017f933d2e6747839ada386c189dabbae96134e
parent ec8095b6d7eec2db6c1be80649fd2fa15536843f
Author: Gavin Peacock <gpeacock@adobe.com>
Date: Wed, 1 May 2024 15:18:34 -0700
Move signer to first parameter on Builder.sign (#457)
Diffstat:
7 files changed, 24 insertions(+), 17 deletions(-)
diff --git a/make_test_images/src/make_test_images.rs b/make_test_images/src/make_test_images.rs
@@ -430,7 +430,7 @@ impl MakeTestImages {
let mut dest = fs::File::create(&dst_path)?;
builder
- .sign(format, &mut temp, &mut dest, signer.as_ref())
+ .sign(signer.as_ref(), format, &mut temp, &mut dest)
.context("signing")?;
Ok(dst_path)
@@ -503,7 +503,7 @@ impl MakeTestImages {
let mut dest = fs::File::create(&dst_path)?;
let signer = self.config.get_signer()?;
builder
- .sign(format, &mut source, &mut dest, signer.as_ref())
+ .sign(signer.as_ref(), format, &mut source, &mut dest)
.context("signing")?;
Ok(dst_path)
diff --git a/sdk/examples/v2api.rs b/sdk/examples/v2api.rs
@@ -128,7 +128,7 @@ fn main() -> Result<()> {
let mut builder = Builder::from_archive(&mut zipped)?;
// sign the ManifestStoreBuilder and write it to the output stream
let mut dest = Cursor::new(Vec::new());
- builder.sign(format, &mut source, &mut dest, &signer)?;
+ builder.sign(&signer, format, &mut source, &mut dest)?;
// read and validate the signed manifest store
dest.rewind()?;
diff --git a/sdk/src/builder.rs b/sdk/src/builder.rs
@@ -179,10 +179,10 @@ impl AssertionDefinition {
///
/// // embed a manifest using the signer
/// builder.sign(
+/// signer.as_ref(),
/// "image/jpeg",
/// &mut std::fs::File::open(&source)?,
/// &mut std::fs::File::create(&dest)?,
-/// signer.as_ref(),
/// )?;
/// # Ok(())
/// # }
@@ -695,17 +695,17 @@ impl Builder {
/// * If the manifest cannot be signed.
#[async_generic(async_signature(
&mut self,
+ signer: &dyn AsyncSigner,
format: &str,
source: &mut R,
dest: &mut W,
- signer: &dyn AsyncSigner
))]
pub fn sign<R, W>(
&mut self,
+ signer: &dyn Signer,
format: &str,
source: &mut R,
dest: &mut W,
- signer: &dyn Signer,
) -> Result<Vec<u8>>
where
R: Read + Seek + Send,
@@ -743,7 +743,7 @@ impl Builder {
/// * The bytes of c2pa_manifest that was created.
/// # Errors
/// * If the manifest cannot be signed.
- pub fn sign_file<S, D>(&mut self, source: S, dest: D, signer: &dyn Signer) -> Result<Vec<u8>>
+ pub fn sign_file<S, D>(&mut self, signer: &dyn Signer, source: S, dest: D) -> Result<Vec<u8>>
where
S: AsRef<std::path::Path>,
D: AsRef<std::path::Path>,
@@ -772,7 +772,7 @@ impl Builder {
};
let mut dest = std::fs::File::create(dest)?;
- self.sign(&format, &mut source, &mut dest, signer)
+ self.sign(signer, &format, &mut source, &mut dest)
}
}
@@ -965,7 +965,7 @@ mod tests {
// sign and write to the output stream
let signer = temp_signer();
builder
- .sign(format, &mut source, &mut dest, signer.as_ref())
+ .sign(signer.as_ref(), format, &mut source, &mut dest)
.unwrap();
// read and validate the signed manifest store
@@ -996,7 +996,7 @@ mod tests {
// sign and write to the output stream
let signer = temp_signer();
- builder.sign_file(source, &dest, signer.as_ref()).unwrap();
+ builder.sign_file(signer.as_ref(), source, &dest).unwrap();
// read and validate the signed manifest store
let manifest_store = Reader::from_file(&dest).expect("from_bytes");
@@ -1048,7 +1048,7 @@ mod tests {
// sign and write to the output stream
let signer = temp_signer();
builder
- .sign(format, &mut source, &mut dest, signer.as_ref())
+ .sign(signer.as_ref(), format, &mut source, &mut dest)
.unwrap();
// read and validate the signed manifest store
@@ -1096,7 +1096,7 @@ mod tests {
// sign the ManifestStoreBuilder and write it to the output stream
let signer = crate::utils::test::temp_async_remote_signer();
builder
- .sign_async(format, &mut source, &mut dest, signer.as_ref())
+ .sign_async(signer.as_ref(), format, &mut source, &mut dest)
.await
.unwrap();
@@ -1130,7 +1130,7 @@ mod tests {
// sign the ManifestStoreBuilder and write it to the output stream
let signer = temp_signer();
let manifest_data = builder
- .sign("image/jpeg", &mut source, &mut dest, signer.as_ref())
+ .sign(signer.as_ref(), "image/jpeg", &mut source, &mut dest)
.unwrap();
// check to make sure we have a remote url and no manifest data
diff --git a/sdk/src/lib.rs b/sdk/src/lib.rs
@@ -84,9 +84,9 @@
//! // embed a manifest using the signer
//! std::fs::remove_file("../target/tmp/lib_sign.jpg"); // ensure the file does not exist
//! builder.sign_file(
+//! &*signer,
//! "tests/fixtures/C.jpg",
//! "../target/tmp/lib_sign.jpg",
-//! &*signer,
//! )?;
//! # Ok(())
//! # }
diff --git a/sdk/src/resource_store.rs b/sdk/src/resource_store.rs
@@ -429,10 +429,10 @@ mod tests {
let mut output_image = Cursor::new(Vec::new());
builder
.sign(
+ &*signer,
"image/jpeg",
&mut Cursor::new(image),
&mut output_image,
- &*signer,
)
.expect("sign");
diff --git a/sdk/tests/test_builder.rs b/sdk/tests/test_builder.rs
@@ -28,7 +28,14 @@ fn test_builder_ca_jpg() -> Result<()> {
let mut source = Cursor::new(TEST_IMAGE);
let mut dest = Cursor::new(Vec::new());
- builder.sign(format, &mut source, &mut dest, &test_signer())?;
+
+ builder.sign(&test_signer(), format, &mut source, &mut dest)?;
+
+ // dest.set_position(0);
+ // let path = common::known_good_path("CA_test.json");
+ // let reader = c2pa::Reader::from_stream(format, &mut dest)?;
+ // std::fs::write(path, reader.json())?;
+
dest.set_position(0);
compare_stream_to_known_good(&mut dest, format, "CA_test.json")
}
diff --git a/sdk/tests/v2_api_integration.rs b/sdk/tests/v2_api_integration.rs
@@ -107,7 +107,7 @@ mod integration_v2 {
let mut builder = Builder::from_archive(&mut zipped)?;
// sign the ManifestStoreBuilder and write it to the output stream
let mut dest = Cursor::new(Vec::new());
- builder.sign(format, &mut source, &mut dest, &signer)?;
+ builder.sign(&signer, format, &mut source, &mut dest)?;
// read and validate the signed manifest store
dest.rewind()?;