Skip to content

Commit

Permalink
initial in-progress support for new simple-c2pa library
Browse files Browse the repository at this point in the history
  • Loading branch information
n8fr8 committed Dec 5, 2023
1 parent d2c893a commit 5f991da
Show file tree
Hide file tree
Showing 11 changed files with 104 additions and 16 deletions.
18 changes: 10 additions & 8 deletions .idea/assetWizardSettings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions .idea/jarRepositories.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion android-libproofcam/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -61,5 +61,7 @@ dependencies {
}

//new C2PA content authenticity support
implementation("org.proofmode:proofmode-c2pa:0.5")
//implementation("org.proofmode:proofmode-c2pa:0.5")
implementation ("info.guardianproject:simple_c2pa:0.0.5")
implementation ("net.java.dev.jna:jna:5.13.0@aar")
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
package org.witness.proofmode.camera.c2pa

import android.content.Context
import android.content.pm.PackageManager
import android.database.Cursor
import android.net.Uri
import android.provider.MediaStore
import org.proofmode.c2pa.C2paJNI

import java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream
import java.io.IOException

import info.guardianproject.simple_c2pa.*

class C2paUtils {

Expand Down Expand Up @@ -132,6 +134,52 @@ class C2paUtils {
var certPath = File(mContext.filesDir, C2PA_CERT_PATH)
var certKey = File(mContext.filesDir, C2PA_KEY_PATH)

var emailAddress = identityId
var pgpFingerprint = identityId

val rootKey = createPrivateKey();
var certType = CertificateType.OfflineRoot("ProofMode Root $identityId", 365U)
var certOptions = CertificateOptions(rootKey, certType, null, null, null)

var rootCert = createCertificate(certOptions)

var userKey = createPrivateKey()
var userCerttype = CertificateType.ContentCredentials("ProofMode User $identityId", 365U * 5U)
var userCertOptions = CertificateOptions(
userKey,
userCerttype,
rootCert,
emailAddress,
pgpFingerprint
)

var userCert = createCertificate(userCertOptions)

val appLabel = getAppName(mContext)
val appVersion = getAppVersionName(mContext)
var appIconUri = "https://proofmode.org/images/avatar.jpg"

var appInfo = ApplicationInfo(appLabel,appVersion,appIconUri)
var mediaFile = FileData(fileImageIn.absolutePath, null, fileImageIn.name)
var contentCreds = ContentCredentials(userCert,mediaFile, appInfo)

if (isDirectCapture)
contentCreds.addCreatedAssertion()
else
contentCreds.addPlacedAssertion()

if (!allowMachineLearning)
contentCreds.addRestrictedAiTrainingAssertions()
else
contentCreds.addPermissiveAiTrainingAssertions()

contentCreds.addEmailAssertion(emailAddress,emailAddress)
contentCreds.addPgpAssertion(pgpFingerprint, emailAddress)
contentCreds.addWebsiteAssertion(identityUri)

contentCreds.embedManifest(fileImageOut.absolutePath)

/**
if (!certPath.exists() || !certKey.exists())
C2paJNI.generateCredentials(
certPath.absolutePath,
Expand All @@ -148,7 +196,7 @@ class C2paUtils {
isDirectCapture,
allowMachineLearning,
fileImageOut.absolutePath
)
)**/

}

Expand All @@ -159,5 +207,27 @@ class C2paUtils {
certPath.delete()
certKey.delete()
}

fun getAppVersionName(context: Context): String {
var appVersionName = ""
try {
appVersionName =
context.packageManager.getPackageInfo(context.packageName, 0).versionName
} catch (e: PackageManager.NameNotFoundException) {
e.printStackTrace()
}
return appVersionName
}

fun getAppName(context: Context): String {
var appVersionName = ""
try {
appVersionName =
context.packageManager.getPackageInfo(context.packageName, 0).applicationInfo.name
} catch (e: PackageManager.NameNotFoundException) {
e.printStackTrace()
}
return appVersionName
}
}
}
4 changes: 3 additions & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,9 @@ dependencies {
androidTestImplementation 'androidx.test.espresso:espresso-core:' + rootProject.espressoVersion;

//new C2PA content authenticity support
implementation "org.proofmode:proofmode-c2pa:0.5"
implementation "info.guardianproject:simple_c2pa:0.0.5"
implementation "net.java.dev.jna:jna:5.13.0@aar"


//for upload to proofcheck
implementation 'com.squareup.okio:okio:2.10.0'
Expand Down
Binary file modified app/src/main/ic_launcher-playstore.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 1 addition & 2 deletions app/src/main/java/org/witness/proofmode/ProofModeApp.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import org.acra.config.mailSender
import org.acra.data.StringFormat
import org.acra.ktx.initAcra
import org.bouncycastle.openpgp.PGPException
import org.proofmode.c2pa.C2paJNI
import org.witness.proofmode.ProofModeConstants.PREFS_KEY_PASSPHRASE
import org.witness.proofmode.ProofModeConstants.PREFS_KEY_PASSPHRASE_DEFAULT
import org.witness.proofmode.crypto.pgp.PgpUtils
Expand Down Expand Up @@ -120,7 +119,7 @@ class ProofModeApp : MultiDexApplication() {
}
}

C2paJNI.init(this)
// C2paJNI.init(this)

}

Expand Down
3 changes: 2 additions & 1 deletion app/src/main/java/org/witness/proofmode/SettingsActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import com.google.android.gms.common.AccountPicker.AccountChooserOptions
import org.witness.proofmode.PermissionActivity
import org.witness.proofmode.PermissionActivity.Companion.hasPermissions
import org.witness.proofmode.ProofMode.PREF_CREDENTIALS_PRIMARY
import org.witness.proofmode.ProofMode.PREF_OPTION_AI_DEFAULT
import org.witness.proofmode.crypto.pgp.PgpUtils
import org.witness.proofmode.databinding.ActivitySettingsBinding
import org.witness.proofmode.util.GPSTracker
Expand Down Expand Up @@ -118,7 +119,7 @@ class SettingsActivity : AppCompatActivity() {
.commit()

if (!isChecked)
mPrefs.edit().putBoolean(ProofMode.PREF_OPTION_AI, false)
mPrefs.edit().putBoolean(ProofMode.PREF_OPTION_AI, PREF_OPTION_AI_DEFAULT)
.commit()

switchAI.isEnabled = isChecked
Expand Down
Binary file added art/proofmode-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions art/proofmode-logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 5 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,11 @@ allprojects {
google()
maven { url "https://raw.githubusercontent.com/guardianproject/gpmaven/master" }
maven { url 'https://jitpack.io' }
// maven {url 'https://zendesk.jfrog.io/zendesk/oss-releases-local'}
maven {
url 'https://gitlab.com/api/v4/projects/52243488/packages/maven'
}

// maven {url 'https://zendesk.jfrog.io/zendesk/oss-releases-local'}
}
project.ext {
// these are common variables used in */build.gradle
Expand Down

0 comments on commit 5f991da

Please sign in to comment.