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")