Skip to content
This repository has been archived by the owner on Feb 12, 2022. It is now read-only.

Commit

Permalink
Big Bang
Browse files Browse the repository at this point in the history
  • Loading branch information
moxie0 committed May 30, 2014
0 parents commit 380688d
Show file tree
Hide file tree
Showing 4 changed files with 78 additions and 0 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
.gradle
.idea
build
*.iml
local.properties
8 changes: 8 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apply plugin: 'groovy'

dependencies {
compile gradleApi()
compile localGroovy()
}


64 changes: 64 additions & 0 deletions src/main/groovy/org/whispersystems/witness/WitnessPlugin.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package org.whispersystems.witness

import org.gradle.api.InvalidUserDataException
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.artifacts.ResolvedArtifact

import java.security.MessageDigest

class WitnessPluginExtension {
List verify
}

class WitnessPlugin implements Plugin<Project> {

static String calculateSha256(file) {
MessageDigest md = MessageDigest.getInstance("SHA-256");
file.eachByte 4096, {bytes, size ->
md.update(bytes, 0, size);
}
return md.digest().collect {String.format "%02x", it}.join();
}

void apply(Project project) {
project.extensions.create("dependencyVerification", WitnessPluginExtension)
project.afterEvaluate {
project.dependencyVerification.verify.each {
assertion ->
List parts = assertion.tokenize(":")
String group = parts.get(0)
String name = parts.get(1)
String hash = parts.get(2)

ResolvedArtifact dependency = project.configurations.compile.resolvedConfiguration.resolvedArtifacts.find {
return it.name.equals(name) && it.resolvedDependency.moduleGroup.equals(group)
}

println "Verifying " + group + ":" + name

if (dependency == null) {
throw new InvalidUserDataException("No dependency for integrity assertion found: " + group + ":" + name)
}

if (!hash.equals(calculateSha256(dependency.file))) {
throw new InvalidUserDataException("Checksum failed for " + assertion)
}
}
}

project.task('calculateChecksums') << {
println "dependencyVerification {"
println " verify = ["

project.configurations.compile.resolvedConfiguration.resolvedArtifacts.each {
dep ->
println " '" + dep.resolvedDependency.moduleGroup+ ":" + dep.name + ":" + calculateSha256(dep.file) + "',"
}

println " ]"
println "}"
}
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
implementation-class=org.whispersystems.witness.WitnessPlugin

0 comments on commit 380688d

Please sign in to comment.