mirror of
https://github.com/vacp2p/status-linea-besu.git
synced 2026-01-09 23:38:08 -05:00
Reduce EVM module dependencies (#5285)
Refactor crypto, datatypes, and plugin-api to reduce plugin APIs in the EVM. Split crypto into crypto services and crypto algorithms Reverse the dependency between datatyps and plugin-api. Remove plugin Hash and Address types (use datatypes) Move PublicKey and Quantity into datatypes. Lots of changes to imports and build files, and some fromPlugin calls removed. Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com> Signed-off-by: Danno Ferrin <danno.ferrin@shemnon.com> Co-authored-by: Justin Florentine <justin+github@florentine.us>
This commit is contained in:
48
crypto/algorithms/build.gradle
Normal file
48
crypto/algorithms/build.gradle
Normal file
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright Hyperledger Besu Contributors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
|
||||
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations under the License.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
apply plugin: 'java-library'
|
||||
|
||||
jar {
|
||||
archiveBaseName = 'besu-crypto'
|
||||
manifest {
|
||||
attributes(
|
||||
'Specification-Title': archiveBaseName,
|
||||
'Specification-Version': project.version,
|
||||
'Implementation-Title': archiveBaseName,
|
||||
'Implementation-Version': calculateVersion(),
|
||||
'Automatic-Module-Name': 'org.hyperledger.besu.internal.crypto'
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
api 'org.bouncycastle:bcprov-jdk15on'
|
||||
api 'org.slf4j:slf4j-api'
|
||||
|
||||
implementation 'net.java.dev.jna:jna'
|
||||
implementation 'org.apache.tuweni:tuweni-bytes'
|
||||
implementation 'org.apache.tuweni:tuweni-units'
|
||||
implementation 'org.hyperledger.besu:secp256k1'
|
||||
implementation 'org.hyperledger.besu:secp256r1'
|
||||
implementation 'org.hyperledger.besu:blake2bf'
|
||||
implementation 'com.google.guava:guava'
|
||||
|
||||
testImplementation 'junit:junit'
|
||||
testImplementation 'org.assertj:assertj-core'
|
||||
testImplementation 'org.junit.jupiter:junit-jupiter'
|
||||
|
||||
testRuntimeOnly 'org.junit.vintage:junit-vintage-engine'
|
||||
}
|
||||
@@ -13,40 +13,4 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
apply plugin: 'java-library'
|
||||
|
||||
jar {
|
||||
archiveBaseName = 'besu-crypto'
|
||||
manifest {
|
||||
attributes(
|
||||
'Specification-Title': archiveBaseName,
|
||||
'Specification-Version': project.version,
|
||||
'Implementation-Title': archiveBaseName,
|
||||
'Implementation-Version': calculateVersion(),
|
||||
'Automatic-Module-Name': 'org.hyperledger.besu.internal.crypto'
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
api project(':plugin-api')
|
||||
|
||||
api 'org.bouncycastle:bcprov-jdk15on'
|
||||
api 'org.slf4j:slf4j-api'
|
||||
|
||||
implementation 'net.java.dev.jna:jna'
|
||||
implementation 'org.apache.tuweni:tuweni-bytes'
|
||||
implementation 'org.apache.tuweni:tuweni-units'
|
||||
implementation 'org.hyperledger.besu:secp256k1'
|
||||
implementation 'org.hyperledger.besu:secp256r1'
|
||||
implementation 'org.hyperledger.besu:blake2bf'
|
||||
implementation 'com.google.guava:guava'
|
||||
|
||||
testImplementation 'junit:junit'
|
||||
testImplementation 'org.assertj:assertj-core'
|
||||
testImplementation 'org.junit.jupiter:junit-jupiter'
|
||||
|
||||
testRuntimeOnly 'org.junit.vintage:junit-vintage-engine'
|
||||
}
|
||||
|
||||
artifacts { testSupportArtifacts testSupportJar }
|
||||
jar { enabled = false }
|
||||
|
||||
42
crypto/services/build.gradle
Normal file
42
crypto/services/build.gradle
Normal file
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright Hyperledger Besu Contributors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
|
||||
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations under the License.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
apply plugin: 'java-library'
|
||||
|
||||
jar {
|
||||
archiveBaseName = 'besu-crypto-services'
|
||||
manifest {
|
||||
attributes(
|
||||
'Specification-Title': archiveBaseName,
|
||||
'Specification-Version': project.version,
|
||||
'Implementation-Title': archiveBaseName,
|
||||
'Implementation-Version': calculateVersion(),
|
||||
'Automatic-Module-Name': 'org.hyperledger.besu.internal.crypto'
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
api project(':crypto:algorithms')
|
||||
api project(':plugin-api')
|
||||
|
||||
testImplementation 'junit:junit'
|
||||
testImplementation 'org.assertj:assertj-core'
|
||||
testImplementation 'org.junit.jupiter:junit-jupiter'
|
||||
|
||||
testRuntimeOnly 'org.junit.vintage:junit-vintage-engine'
|
||||
}
|
||||
|
||||
artifacts { testSupportArtifacts testSupportJar }
|
||||
@@ -12,10 +12,14 @@
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package org.hyperledger.besu.crypto;
|
||||
|
||||
import static org.hyperledger.besu.crypto.ECPointUtil.fromBouncyCastleECPoint;
|
||||
package org.hyperledger.besu.cryptoservices;
|
||||
|
||||
import org.hyperledger.besu.crypto.ECPointUtil;
|
||||
import org.hyperledger.besu.crypto.KeyPair;
|
||||
import org.hyperledger.besu.crypto.SECPPublicKey;
|
||||
import org.hyperledger.besu.crypto.SECPSignature;
|
||||
import org.hyperledger.besu.crypto.SignatureAlgorithm;
|
||||
import org.hyperledger.besu.crypto.SignatureAlgorithmFactory;
|
||||
import org.hyperledger.besu.plugin.services.securitymodule.SecurityModule;
|
||||
import org.hyperledger.besu.plugin.services.securitymodule.SecurityModuleException;
|
||||
import org.hyperledger.besu.plugin.services.securitymodule.data.PublicKey;
|
||||
@@ -49,7 +53,7 @@ public class KeyPairSecurityModule implements SecurityModule {
|
||||
private PublicKey convertPublicKey(final SECPPublicKey publicKey) {
|
||||
try {
|
||||
return new PublicKeyImpl(
|
||||
fromBouncyCastleECPoint(signatureAlgorithm.publicKeyAsEcPoint(publicKey)));
|
||||
ECPointUtil.fromBouncyCastleECPoint(signatureAlgorithm.publicKeyAsEcPoint(publicKey)));
|
||||
} catch (final Exception e) {
|
||||
throw new SecurityModuleException(
|
||||
"Unexpected error while converting ECPoint: " + e.getMessage(), e);
|
||||
@@ -12,8 +12,13 @@
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package org.hyperledger.besu.crypto;
|
||||
package org.hyperledger.besu.cryptoservices;
|
||||
|
||||
import org.hyperledger.besu.crypto.ECPointUtil;
|
||||
import org.hyperledger.besu.crypto.SECPPublicKey;
|
||||
import org.hyperledger.besu.crypto.SECPSignature;
|
||||
import org.hyperledger.besu.crypto.SignatureAlgorithm;
|
||||
import org.hyperledger.besu.crypto.SignatureAlgorithmFactory;
|
||||
import org.hyperledger.besu.plugin.services.securitymodule.SecurityModule;
|
||||
import org.hyperledger.besu.plugin.services.securitymodule.data.Signature;
|
||||
|
||||
@@ -12,7 +12,11 @@
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package org.hyperledger.besu.crypto;
|
||||
package org.hyperledger.besu.cryptoservices;
|
||||
|
||||
import org.hyperledger.besu.crypto.KeyPair;
|
||||
import org.hyperledger.besu.crypto.SignatureAlgorithm;
|
||||
import org.hyperledger.besu.crypto.SignatureAlgorithmFactory;
|
||||
|
||||
import org.apache.tuweni.bytes.Bytes32;
|
||||
|
||||
@@ -12,7 +12,13 @@
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package org.hyperledger.besu.crypto;
|
||||
package org.hyperledger.besu.cryptoservices;
|
||||
|
||||
import org.hyperledger.besu.crypto.ECPointUtil;
|
||||
import org.hyperledger.besu.crypto.KeyPair;
|
||||
import org.hyperledger.besu.crypto.KeyPairUtil;
|
||||
import org.hyperledger.besu.crypto.SECPPublicKey;
|
||||
import org.hyperledger.besu.crypto.SignatureAlgorithmFactory;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@@ -12,7 +12,11 @@
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package org.hyperledger.besu.crypto;
|
||||
package org.hyperledger.besu.cryptoservices;
|
||||
|
||||
import org.hyperledger.besu.crypto.KeyPair;
|
||||
import org.hyperledger.besu.crypto.SignatureAlgorithm;
|
||||
import org.hyperledger.besu.crypto.SignatureAlgorithmFactory;
|
||||
|
||||
import org.apache.tuweni.bytes.Bytes;
|
||||
import org.apache.tuweni.bytes.Bytes32;
|
||||
Reference in New Issue
Block a user