ruby-c2pa 0.1.0
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.
- checksums.yaml +7 -0
- data/LICENSE +21 -0
- data/README.md +217 -0
- data/Rakefile +18 -0
- data/ext/c2pa_native/Cargo.toml +19 -0
- data/ext/c2pa_native/extconf.rb +4 -0
- data/ext/c2pa_native/src/lib.rs +118 -0
- data/ext/c2pa_native/target/release/build/oid-registry-c350c75504c969dc/out/oid_db.rs +540 -0
- data/ext/c2pa_native/target/release/build/pix-f303ab89d734032b/out/gamma_lut.rs +68 -0
- data/ext/c2pa_native/target/release/build/serde-2e9abb4d9d73cae4/out/private.rs +6 -0
- data/ext/c2pa_native/target/release/build/serde-f471616b462b0caf/out/private.rs +6 -0
- data/ext/c2pa_native/target/release/build/serde_core-2b94e9134dc44065/out/private.rs +5 -0
- data/ext/c2pa_native/target/release/build/serde_core-3dc945fa0ab21dd5/out/private.rs +5 -0
- data/ext/c2pa_native/target/release/build/thiserror-a1f4c63469c326b9/out/private.rs +5 -0
- data/ext/c2pa_native/target/release/build/typenum-4eb7d34b9fb695ef/out/tests.rs +20563 -0
- data/ext/c2pa_native/target/release/build/typenum-b8de96984639a942/out/tests.rs +20563 -0
- data/lib/c2pa/error.rb +6 -0
- data/lib/c2pa/version.rb +3 -0
- data/lib/c2pa.rb +59 -0
- data/ruby-c2pa.gemspec +25 -0
- metadata +118 -0
data/lib/c2pa/error.rb
ADDED
data/lib/c2pa/version.rb
ADDED
data/lib/c2pa.rb
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
require "json"
|
|
2
|
+
require_relative "c2pa/version"
|
|
3
|
+
require_relative "c2pa/error"
|
|
4
|
+
require "c2pa/c2pa_native"
|
|
5
|
+
|
|
6
|
+
module C2PA
|
|
7
|
+
# Sign a file with a C2PA manifest.
|
|
8
|
+
#
|
|
9
|
+
# @param file [String] path to the input file
|
|
10
|
+
# @param certificate [String] path to a PEM-encoded X.509 certificate (chain)
|
|
11
|
+
# @param key [String] path to a PEM-encoded private key
|
|
12
|
+
# @param output [String] path for the signed output; defaults to in-place
|
|
13
|
+
# @param algorithm [String] signing algorithm (default: "es256")
|
|
14
|
+
# @param manifest [Hash] manifest definition; omit for a minimal default
|
|
15
|
+
# @return [String] the output path
|
|
16
|
+
#
|
|
17
|
+
# @example In-place signing
|
|
18
|
+
# C2PA.sign(file: "photo.jpg", certificate: "cert.pem", key: "key.pem")
|
|
19
|
+
#
|
|
20
|
+
# @example With explicit output and manifest
|
|
21
|
+
# C2PA.sign(
|
|
22
|
+
# file: "photo.jpg",
|
|
23
|
+
# output: "photo_signed.jpg",
|
|
24
|
+
# certificate: "cert.pem",
|
|
25
|
+
# key: "key.pem",
|
|
26
|
+
# algorithm: "ps256",
|
|
27
|
+
# manifest: { title: "My Photo", assertions: [] }
|
|
28
|
+
# )
|
|
29
|
+
def self.sign(file:, certificate:, key:, output: nil, algorithm: "es256", manifest: nil)
|
|
30
|
+
destination = output || file
|
|
31
|
+
manifest_json = manifest ? JSON.generate(manifest) : nil
|
|
32
|
+
|
|
33
|
+
Native.sign_file(file, destination, certificate, key, algorithm, manifest_json)
|
|
34
|
+
rescue RuntimeError => e
|
|
35
|
+
raise SigningError, e.message
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Read the C2PA manifest embedded in a signed file.
|
|
39
|
+
#
|
|
40
|
+
# @param file [String] path to the signed file
|
|
41
|
+
# @return [Hash] parsed manifest JSON
|
|
42
|
+
# @raise [C2PA::ReadError] if the file has no valid manifest
|
|
43
|
+
#
|
|
44
|
+
# @example
|
|
45
|
+
# manifest = C2PA.read(file: "photo_signed.jpg")
|
|
46
|
+
# puts manifest["title"]
|
|
47
|
+
def self.read(file:)
|
|
48
|
+
JSON.parse(Native.read_file(file))
|
|
49
|
+
rescue RuntimeError => e
|
|
50
|
+
raise ReadError, e.message
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Return the version of the underlying c2pa-rs SDK.
|
|
54
|
+
#
|
|
55
|
+
# @return [String]
|
|
56
|
+
def self.sdk_version
|
|
57
|
+
Native.sdk_version
|
|
58
|
+
end
|
|
59
|
+
end
|
data/ruby-c2pa.gemspec
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require_relative "lib/c2pa/version"
|
|
2
|
+
|
|
3
|
+
Gem::Specification.new do |spec|
|
|
4
|
+
spec.name = "ruby-c2pa"
|
|
5
|
+
spec.version = C2PA::VERSION
|
|
6
|
+
spec.authors = [`git config user.name`.strip]
|
|
7
|
+
spec.email = [`git config user.email`.strip]
|
|
8
|
+
spec.summary = "Ruby bindings for the c2pa content authenticity library"
|
|
9
|
+
spec.description = "Embed and verify C2PA content provenance and authenticity credentials in images, video, and audio files. Ruby bindings for the official Rust c2pa-rs library."
|
|
10
|
+
spec.license = "MIT"
|
|
11
|
+
spec.homepage = "https://github.com/carlosrodriguez/ruby-c2pa"
|
|
12
|
+
spec.metadata["source_code_uri"] = spec.homepage
|
|
13
|
+
|
|
14
|
+
spec.files = Dir["lib/**/*.rb", "ext/**/*.{rs,toml,rb}", "Rakefile", "*.gemspec", "LICENSE", "README.md"]
|
|
15
|
+
spec.require_paths = ["lib"]
|
|
16
|
+
spec.extensions = ["ext/c2pa_native/extconf.rb"]
|
|
17
|
+
|
|
18
|
+
spec.required_ruby_version = ">= 3.0"
|
|
19
|
+
|
|
20
|
+
spec.add_dependency "rb_sys", "~> 0.9"
|
|
21
|
+
|
|
22
|
+
spec.add_development_dependency "rake-compiler", "~> 1.2"
|
|
23
|
+
spec.add_development_dependency "minitest", "~> 5.0"
|
|
24
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
|
25
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: ruby-c2pa
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Carlos Rodriguez
|
|
8
|
+
bindir: bin
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: rb_sys
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - "~>"
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '0.9'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - "~>"
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '0.9'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: rake-compiler
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - "~>"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '1.2'
|
|
33
|
+
type: :development
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '1.2'
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: minitest
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '5.0'
|
|
47
|
+
type: :development
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - "~>"
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '5.0'
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: rake
|
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - "~>"
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '13.0'
|
|
61
|
+
type: :development
|
|
62
|
+
prerelease: false
|
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - "~>"
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '13.0'
|
|
68
|
+
description: Embed and verify C2PA content provenance and authenticity credentials
|
|
69
|
+
in images, video, and audio files. Ruby bindings for the official Rust c2pa-rs library.
|
|
70
|
+
email:
|
|
71
|
+
- carlos@eddorre.com
|
|
72
|
+
executables: []
|
|
73
|
+
extensions:
|
|
74
|
+
- ext/c2pa_native/extconf.rb
|
|
75
|
+
extra_rdoc_files: []
|
|
76
|
+
files:
|
|
77
|
+
- LICENSE
|
|
78
|
+
- README.md
|
|
79
|
+
- Rakefile
|
|
80
|
+
- ext/c2pa_native/Cargo.toml
|
|
81
|
+
- ext/c2pa_native/extconf.rb
|
|
82
|
+
- ext/c2pa_native/src/lib.rs
|
|
83
|
+
- ext/c2pa_native/target/release/build/oid-registry-c350c75504c969dc/out/oid_db.rs
|
|
84
|
+
- ext/c2pa_native/target/release/build/pix-f303ab89d734032b/out/gamma_lut.rs
|
|
85
|
+
- ext/c2pa_native/target/release/build/serde-2e9abb4d9d73cae4/out/private.rs
|
|
86
|
+
- ext/c2pa_native/target/release/build/serde-f471616b462b0caf/out/private.rs
|
|
87
|
+
- ext/c2pa_native/target/release/build/serde_core-2b94e9134dc44065/out/private.rs
|
|
88
|
+
- ext/c2pa_native/target/release/build/serde_core-3dc945fa0ab21dd5/out/private.rs
|
|
89
|
+
- ext/c2pa_native/target/release/build/thiserror-a1f4c63469c326b9/out/private.rs
|
|
90
|
+
- ext/c2pa_native/target/release/build/typenum-4eb7d34b9fb695ef/out/tests.rs
|
|
91
|
+
- ext/c2pa_native/target/release/build/typenum-b8de96984639a942/out/tests.rs
|
|
92
|
+
- lib/c2pa.rb
|
|
93
|
+
- lib/c2pa/error.rb
|
|
94
|
+
- lib/c2pa/version.rb
|
|
95
|
+
- ruby-c2pa.gemspec
|
|
96
|
+
homepage: https://github.com/carlosrodriguez/ruby-c2pa
|
|
97
|
+
licenses:
|
|
98
|
+
- MIT
|
|
99
|
+
metadata:
|
|
100
|
+
source_code_uri: https://github.com/carlosrodriguez/ruby-c2pa
|
|
101
|
+
rdoc_options: []
|
|
102
|
+
require_paths:
|
|
103
|
+
- lib
|
|
104
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
105
|
+
requirements:
|
|
106
|
+
- - ">="
|
|
107
|
+
- !ruby/object:Gem::Version
|
|
108
|
+
version: '3.0'
|
|
109
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
110
|
+
requirements:
|
|
111
|
+
- - ">="
|
|
112
|
+
- !ruby/object:Gem::Version
|
|
113
|
+
version: '0'
|
|
114
|
+
requirements: []
|
|
115
|
+
rubygems_version: 4.0.3
|
|
116
|
+
specification_version: 4
|
|
117
|
+
summary: Ruby bindings for the c2pa content authenticity library
|
|
118
|
+
test_files: []
|