diff --git a/.github/workflows/mvn-publish.yml b/.github/workflows/mvn-publish.yml index 5b2c638..8fbdfb5 100644 --- a/.github/workflows/mvn-publish.yml +++ b/.github/workflows/mvn-publish.yml @@ -11,40 +11,12 @@ on: jobs: publish: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - uses: actions/cache@v2 - with: - key: ${{ hashFiles('pom.xml') }} - path: ~/.m2/repository - - name: Prepare version - id: maven-version - run: | - mvn_version=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) - git_ref=${GITHUB_REF##*/} - pr_number=${{ github.event.number }} - if [[ $git_ref =~ v[0-9]+\.[0-9]+\.[0-9]+$ ]] ; then - if [[ v$mvn_version != $git_ref ]] ; then - echo Maven version $mvn_version does not match tag $git_ref - exit 1 - fi - elif [[ $pr_number != "" && $mvn_version =~ -SNAPSHOT$ ]] ; then - pattern="s/(.+)-SNAPSHOT/\1-"$pr_number"-SNAPSHOT/g" - mvn_version=$(echo $mvn_version | sed -E $pattern) - mvn versions:set -DnewVersion=$mvn_version -DgenerateBackupPoms=false -q -DforceStdout - elif [[ ! $mvn_version =~ -SNAPSHOT$ ]] ; then - echo Refusing to publish non-snapshot version $mvn_version - echo '::set-output name=skip-publish::true' - fi - - uses: samuelmeuli/action-maven-publish@v1.4.0 - if: - ${{ steps.maven-version.outputs.skip-publish != 'true' }} - with: - gpg_private_key: ${{ secrets.OSSRH_GPG_KEY_ASCII }} - gpg_passphrase: ${{ secrets.OSSRH_GPG_PASSPHRASE }} - nexus_username: ${{ secrets.OSSRH_USERNAME }} - nexus_password: ${{ secrets.OSSRH_PASSWORD }} + uses: wavesplatform/protobuf-schemas/.github/workflows/mvn-publish.yml@5b4331ab892b44ad1fdd71862654421482dcd49c + with: + github-ref-name: ${{ github.ref_name }} + github-event-number: ${{ github.event.number }} + secrets: + OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }} + OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} + OSSRH_GPG_KEY: ${{ secrets.OSSRH_GPG_KEY }} + OSSRH_GPG_PASSPHRASE: ${{ secrets.OSSRH_GPG_PASSPHRASE }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index ef836d0..bbe0135 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -10,31 +10,13 @@ on: jobs: run_tests: - runs-on: ubuntu-latest - steps: - - name: Checkout the repository - uses: actions/checkout@v2 - with: - fetch-depth: 1 - - - name: Set up JDK 8 - uses: actions/setup-java@v1 - with: - java-version: 8 - - - name: Cache Maven packages - uses: actions/cache@v2 - with: - path: ~/.m2 - key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} - restore-keys: ${{ runner.os }}-m2 - - - name: Run tests - run: mvn -B test -Dmaven.test.failure.ignore=true - - - name: Publish test report - uses: scacap/action-surefire-report@v1 + - uses: actions/checkout@v5 + - uses: actions/setup-java@v5 with: - github_token: ${{ secrets.GITHUB_TOKEN }} + java-version: 11 + distribution: temurin + cache: maven + - run: mvn -B test -Dmaven.test.failure.ignore=true + - uses: scacap/action-surefire-report@v1 diff --git a/pom.xml b/pom.xml index 5a2bc62..0edcffe 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.wavesplatform waves-crypto - 2.0.5 + 2.0.6-SNAPSHOT Waves Crypto for Java Tools to work with cryptographic primitives used in the Waves blockchain @@ -46,29 +46,48 @@ - org.sonatype.plugins - nexus-staging-maven-plugin - 1.6.8 + org.apache.maven.plugins + maven-enforcer-plugin + 3.6.1 + + + enforce-maven + + enforce + + + + + 3.6.3 + + + + + + + + org.sonatype.central + central-publishing-maven-plugin + 0.9.0 true - ossrh - https://oss.sonatype.org/ - true + true + published org.apache.maven.plugins maven-compiler-plugin - 3.8.1 + 3.14.1 - 8 - 8 + 11 + 11 org.apache.maven.plugins maven-source-plugin - 3.1.0 + 3.3.1 attach-sources @@ -81,7 +100,7 @@ org.apache.maven.plugins maven-gpg-plugin - 1.6 + 3.2.8 sign-artifacts @@ -91,23 +110,16 @@ - - - - --pinentry-mode - loopback - - org.apache.maven.plugins maven-surefire-plugin - 2.22.2 + 3.5.4 org.apache.maven.plugins maven-jar-plugin - 3.1.2 + 3.4.2 @@ -126,17 +138,22 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.1.1 + 3.12.0 attach-javadocs jar + + 11 + none + - 8 + 11 + none @@ -144,26 +161,36 @@ - ossrh - https://oss.sonatype.org/content/repositories/snapshots + central + https://central.sonatype.com/repository/maven-snapshots/ + + + - ossrh - https://oss.sonatype.org/service/local/staging/deploy/maven2/ + Central Portal Snapshots + central-portal-snapshots + https://central.sonatype.com/repository/maven-snapshots/ + + false + + + true + - + org.bouncycastle bcpkix-jdk18on - 1.77 + 1.82 org.bouncycastle bcprov-jdk18on - 1.77 + 1.82 com.wavesplatform @@ -184,6 +211,11 @@ 3.20.2 test + + com.wavesplatform + blst-java + 0.3.15-SNAPSHOT + diff --git a/src/main/java/com/wavesplatform/crypto/BlsUtils.java b/src/main/java/com/wavesplatform/crypto/BlsUtils.java new file mode 100644 index 0000000..c0dbfb3 --- /dev/null +++ b/src/main/java/com/wavesplatform/crypto/BlsUtils.java @@ -0,0 +1,34 @@ +package com.wavesplatform.crypto; + +import supranational.blst.*; + +public class BlsUtils { + private static final String DST = "BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_NUL_"; + + public static SecretKey mkBlsSecretKey(byte[] seed) { + SecretKey sk = new SecretKey(); + sk.keygen(seed); + return sk; + } + + public static byte[] mkBlsPublicKey(SecretKey sk) { + return new P1(sk).compress(); + } + + public static byte[] sign(SecretKey sk, byte[] message) { + return new P2() + .hash_to(message, DST) + .sign_with(sk) + .compress(); + } + + public static boolean verify(byte[] sigBytes, byte[] message, byte[] pkBytes) { + P2_Affine sig = new P2_Affine(sigBytes); + P1_Affine pk = new P1_Affine(pkBytes); + + Pairing ctx = new Pairing(true, DST); + ctx.aggregate(pk, sig, message); + ctx.commit(); + return ctx.finalverify(); + } +} \ No newline at end of file diff --git a/src/main/java/com/wavesplatform/crypto/base/Base16.java b/src/main/java/com/wavesplatform/crypto/base/Base16.java index e4ba848..f15d41a 100644 --- a/src/main/java/com/wavesplatform/crypto/base/Base16.java +++ b/src/main/java/com/wavesplatform/crypto/base/Base16.java @@ -2,7 +2,6 @@ /** * Base16 is used to represent byte arrays as a readable string. - * * Not used in Waves blockchain, but can be used in Ride smart contracts. */ public abstract class Base16 { diff --git a/src/main/java/com/wavesplatform/crypto/rsa/RsaKeyPair.java b/src/main/java/com/wavesplatform/crypto/rsa/RsaKeyPair.java index e91f1da..c4a77af 100644 --- a/src/main/java/com/wavesplatform/crypto/rsa/RsaKeyPair.java +++ b/src/main/java/com/wavesplatform/crypto/rsa/RsaKeyPair.java @@ -13,7 +13,6 @@ /** * Pair of RSA private and public keys to encrypt/decrypt or signing data. - * * RSA signatures are supported in Ride language. */ @SuppressWarnings("WeakerAccess") diff --git a/src/main/java/com/wavesplatform/crypto/rsa/RsaPublicKey.java b/src/main/java/com/wavesplatform/crypto/rsa/RsaPublicKey.java index 26a1fee..bedff90 100644 --- a/src/main/java/com/wavesplatform/crypto/rsa/RsaPublicKey.java +++ b/src/main/java/com/wavesplatform/crypto/rsa/RsaPublicKey.java @@ -11,7 +11,6 @@ /** * RSA public key to encrypt data or verify that data is actually signed by the private key of the public key. - * * RSA signatures are supported in Ride language. */ @SuppressWarnings("WeakerAccess")