Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deliver dragonwell security provider v2 #12

Open
wants to merge 35 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
1e3b1aa
Use Tongsuo to provide cryptographic primitives and TLS
dongbeiouba Nov 7, 2022
aa61669
Merge pull request #1 from dongbeiouba/feature/tls13_sm
dongbeiouba Dec 9, 2022
6aea376
return SM2 type when support ShangMi cipher suites
dongbeiouba Dec 29, 2022
2a04295
Merge pull request #3 from dongbeiouba/feature/cipher_get_name
dongbeiouba Dec 30, 2022
ae1f27e
the ShangMi cipher suites supports tls1.3 communication
lukang-zlh Jan 3, 2023
91eb085
Merge pull request #4 from lukang-zlh/2023010301_tls_sm_1
lukang-zlh Jan 4, 2023
5fd9750
refactor get public Key method.
alizhengxj Jan 11, 2023
c983108
Merge pull request #7 from alizhengxj/baseInit
lukang-zlh Jan 11, 2023
46737ec
expoort tongsuo-java-sdk's provider as net.tongsuo
Jan 5, 2023
ca28f4a
Merge pull request #6 from superajun-wsj/export-net-tongsuo
dongbeiouba Jan 17, 2023
50f1b10
Prepare for 1.0.0
dongbeiouba Jan 17, 2023
a4ccfcd
Merge pull request #9 from dongbeiouba/build/100
dongbeiouba Jan 18, 2023
edf5e59
Add SM3 (Digest&HMac) support
Sere-Fu Feb 7, 2023
3946700
Merge pull request #14 from Sere-Fu/add_sm3_support
Sere-Fu Feb 14, 2023
3279a2b
Fix EvpCipher.getOutputSizeForFinal
Sere-Fu Feb 10, 2023
8f0f105
Merge pull request #16 from Sere-Fu/fix_buf_len
Sere-Fu Feb 15, 2023
e507bb9
Add SM4 (CBC/CTR/ECB/CFB/OFB) support
Sere-Fu Feb 9, 2023
44cde41
Merge pull request #18 from Sere-Fu/add_sm4
Sere-Fu Feb 21, 2023
9cf79fd
Add SM2(Signature&Cipher) Support
Sere-Fu Feb 20, 2023
fdae206
Merge pull request #19 from Sere-Fu/sm2_no_id
dongbeiouba Feb 28, 2023
df4e982
support tlcp
Jan 11, 2023
9f6a492
Merge pull request #12 from superajun-wsj/ntls-support
dongbeiouba Mar 1, 2023
21489ab
Add Aead(GCM/CCM) Support For SM4
Sere-Fu Mar 1, 2023
94d6805
Add JCE example code
Sere-Fu Mar 9, 2023
3743d12
Merge pull request #23 from Sere-Fu/add_aead
Sere-Fu Mar 9, 2023
24fdf7e
Add test case for sni and alpn
Mar 6, 2023
c8688b0
update tlcp test case
Mar 15, 2023
d6f864f
Merge pull request #24 from superajun-wsj/tongsuo-alpn-sni-update
dongbeiouba Mar 21, 2023
f690dc1
Add Aead(GCM/CCM) Support For AES
Sere-Fu Mar 27, 2023
b0a793c
Merge pull request #25 from Sere-Fu/add_aes_aead
dongbeiouba Mar 30, 2023
2632ca7
修复证书过期
dongbeiouba Mar 31, 2023
0d99b71
Merge pull request #28 from dongbeiouba/fix/certs_expired
Sere-Fu Apr 3, 2023
149b669
Remove BC as an implementation dependency
Sere-Fu Apr 6, 2023
1bec328
Merge pull request #29 from Sere-Fu/remove_bc
Sere-Fu Apr 10, 2023
e9ea44a
prepare to deliver dragonwell security provider jar
Mar 1, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
258 changes: 22 additions & 236 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,43 +1,22 @@
name: Continuous integration

on:
workflow_dispatch:
push:
pull_request:
schedule:
# Run every day at midnight UTC
- cron: '0 0 * * *'

jobs:
boringssl_clone:
# This step ensures that all builders have the same version of BoringSSL
runs-on: ubuntu-latest

steps:
- name: Clone BoringSSL repo
run: |
git clone --depth 1 --filter=blob:none --no-checkout https://github.com/google/boringssl.git "${{ runner.temp }}/boringssl"
echo Using BoringSSL commit: $(cd "${{ runner.temp }}/boringssl"; git rev-parse HEAD)

- name: Archive BoringSSL source
uses: actions/upload-artifact@v1
with:
name: boringssl-source
path: ${{ runner.temp }}/boringssl

build:
needs: boringssl_clone

build-with-tongsuo-831:
strategy:
fail-fast: false
fail-fast: true
matrix:
platform: [ubuntu-latest, macos-latest, windows-latest]
platform: [ubuntu-latest]
include:
- platform: ubuntu-latest
tools_url: https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
- platform: macos-latest
tools_url: https://dl.google.com/android/repository/sdk-tools-darwin-4333796.zip
- platform: windows-latest
tools_url: https://dl.google.com/android/repository/sdk-tools-windows-4333796.zip

runs-on: ${{ matrix.platform }}

Expand All @@ -55,10 +34,23 @@ jobs:
- name: Set runner-specific environment variables
shell: bash
run: |
echo "ANDROID_HOME=${{ runner.temp }}/android-sdk" >> $GITHUB_ENV
echo "BORINGSSL_HOME=${{ runner.temp }}/boringssl" >> $GITHUB_ENV
echo "SDKMANAGER=${{ runner.temp }}/android-sdk/tools/bin/sdkmanager" >> $GITHUB_ENV
echo "M2_REPO=${{ runner.temp }}/m2" >> $GITHUB_ENV
echo "ANDROID_HOME=${RUNNER_TEMP}/android-sdk" >> $GITHUB_ENV
echo "TONGSUO_HOME=${RUNNER_TEMP}/install" >> $GITHUB_ENV
echo "SDKMANAGER=${RUNNER_TEMP}/android-sdk/tools/bin/sdkmanager" >> $GITHUB_ENV

- name: checkout Tongsuo 8.3.1
uses: actions/checkout@v2
with:
repository: Tongsuo-Project/Tongsuo
ref: 8.3-stable
path: Tongsuo831

- name: Build Tongsuo831 on Linux
working-directory: ./Tongsuo831
run: |
./config --prefix=$TONGSUO_HOME enable-weak-ssl-ciphers enable-ntls
make -s -j4
make install

- uses: actions/checkout@v2

Expand All @@ -78,75 +70,6 @@ jobs:
openjdk-8-jdk-headless \
openjdk-11-jre-headless

- name: Setup macOS environment
if: runner.os == 'macOS'
run: |
brew update || echo update failed
brew install ninja || echo update failed

- name: install Go
uses: actions/setup-go@v1
with:
go-version: '1.13.2'

- name: Setup Windows environment
if: runner.os == 'Windows'
run: |
choco install nasm -y
choco install ninja -y

- name: Fetch BoringSSL source
uses: actions/download-artifact@v1
with:
name: boringssl-source
path: ${{ runner.temp }}/boringssl

- name: Checkout BoringSSL master branch
shell: bash
run: |
cd "$BORINGSSL_HOME"
git checkout --progress --force -B master

- name: Build BoringSSL 64-bit Linux and MacOS
if: runner.os != 'Windows'
env:
# For compatibility, but 10.15 target requires 16-byte stack alignment.
MACOSX_DEPLOYMENT_TARGET: 10.11
run: |
mkdir -p "$BORINGSSL_HOME/build64"
pushd "$BORINGSSL_HOME/build64"
cmake -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE -DCMAKE_BUILD_TYPE=Release -GNinja ..
ninja
popd

- name: Build BoringSSL 32-bit Linux
if: runner.os == 'Linux'
run: |
mkdir -p "$BORINGSSL_HOME/build32"
pushd "$BORINGSSL_HOME/build32"
cmake -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE -DCMAKE_BUILD_TYPE=Release -DCMAKE_ASM_FLAGS="-m32 -msse2" -DCMAKE_CXX_FLAGS="-m32 -msse2" -DCMAKE_C_FLAGS="-m32 -msse2" -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=x86 -GNinja ..
ninja
popd

- name: Build BoringSSL 64 and 32-bit Windows
if: runner.os == 'Windows'
run: |
cd $Env:BORINGSSL_HOME

& $Env:GITHUB_WORKSPACE\.github\workflows\vsenv.ps1 -arch x86 -hostArch x64
mkdir build32
cd build32
cmake -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS_RELEASE=/MT -DCMAKE_CXX_FLAGS_RELEASE=/MT -GNinja ..
ninja
cd ..

& $Env:GITHUB_WORKSPACE\.github\workflows\vsenv.ps1 -arch x64 -hostArch x64
mkdir build64
cd build64
cmake -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS_RELEASE=/MT -DCMAKE_CXX_FLAGS_RELEASE=/MT -GNinja ..
ninja
cd ..

- name: Setup Android environment
shell: bash
if: runner.os == 'Linux'
Expand Down Expand Up @@ -176,144 +99,7 @@ jobs:
shell: bash
run: ./gradlew check -PcheckErrorQueue

- name: Publish to local Maven repo
shell: bash
run: ./gradlew publishToMavenLocal -Dmaven.repo.local="$M2_REPO"

- name: Upload Maven respository
uses: actions/upload-artifact@v1
with:
name: m2repo-${{ runner.os }}
path: ${{ runner.temp }}/m2

- name: Build test JAR with dependencies
if: runner.os == 'Linux'
shell: bash
run: ./gradlew :conscrypt-openjdk:testJar -PcheckErrorQueue

- name: Upload test JAR with dependencies
if: runner.os == 'Linux'
uses: actions/upload-artifact@v2
with:
name: testjar
path: openjdk/build/libs/conscrypt-openjdk-*-tests.jar
if-no-files-found: error

uberjar:
needs: build

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2

- name: Set runner-specific environment variables
shell: bash
run: |
echo "M2_REPO=${{ runner.temp }}/m2" >> $GITHUB_ENV
echo "BORINGSSL_HOME=${{ runner.temp }}/boringssl" >> $GITHUB_ENV

- name: Fetch BoringSSL source
uses: actions/download-artifact@v1
with:
name: boringssl-source
path: ${{ runner.temp }}/boringssl

- name: Make fake BoringSSL directories
shell: bash
run: |
# TODO: remove this when the check is only performed when building.
# BoringSSL is not needed during the UberJAR build, but the
# assertion to check happens regardless of whether the project
# needs it.
mkdir -p "${{ runner.temp }}/boringssl/build64"
mkdir -p "${{ runner.temp }}/boringssl/include"

- name: Download Maven repository for Linux
uses: actions/download-artifact@v1
with:
name: m2repo-Linux
path: ${{ runner.temp }}/m2

- name: Download Maven repository for MacOS
uses: actions/download-artifact@v1
with:
name: m2repo-macOS
path: ${{ runner.temp }}/m2

- name: Download Maven repository for Windows
uses: actions/download-artifact@v1
with:
name: m2repo-Windows
path: ${{ runner.temp }}/m2

- name: Build UberJAR with Gradle
shell: bash
run: |
./gradlew :conscrypt-openjdk-uber:build -Dorg.conscrypt.openjdk.buildUberJar=true -Dmaven.repo.local="$M2_REPO"

- name: Publish UberJAR to Maven Local
shell: bash
run: |
./gradlew :conscrypt-openjdk-uber:publishToMavenLocal -Dorg.conscrypt.openjdk.buildUberJar=true -Dmaven.repo.local="$M2_REPO"

- name: Upload Maven respository
uses: actions/upload-artifact@v1
with:
name: m2repo-uber
path: ${{ runner.temp }}/m2

openjdk-test:
needs: uberjar

strategy:
fail-fast: false
matrix:
platform: [ubuntu-latest, macos-latest, windows-latest]
java: [8, 9, 11]
include:
- java: 8
suite_class: "org.conscrypt.Conscrypt(OpenJdk)?Suite"
- java: 9
suite_class: "org.conscrypt.Conscrypt(OpenJdk)?Suite"
- java: 11
suite_class: "org.conscrypt.Conscrypt(OpenJdk)?Suite"

runs-on: ${{ matrix.platform }}

steps:
- name: Set up Java
uses: actions/setup-java@v1
with:
java-version: ${{ matrix.java }}

- name: Download UberJAR
uses: actions/download-artifact@v2
with:
name: m2repo-uber
path: m2

- name: Download Test JAR with Dependencies
uses: actions/download-artifact@v2
with:
name: testjar
path: testjar

- name: Download JUnit runner
shell: bash
run: mvn org.apache.maven.plugins:maven-dependency-plugin:3.1.2:copy -Dartifact=org.junit.platform:junit-platform-console-standalone:1.6.2 -DoutputDirectory=. -Dmdep.stripVersion=true

- name: Run JUnit tests
shell: bash
run: |
DIR="$(find m2/org/conscrypt/conscrypt-openjdk-uber -maxdepth 1 -mindepth 1 -type d -print)"
VERSION="${DIR##*/}"
TESTJAR="$(find testjar -name '*-tests.jar')"
java -jar junit-platform-console-standalone.jar -cp "$DIR/conscrypt-openjdk-uber-$VERSION.jar:$TESTJAR" -n='${{ matrix.suite_class }}' --scan-classpath --reports-dir=results --fail-if-no-tests

- name: Archive test results
if: ${{ always() }}
uses: actions/upload-artifact@v2
with:
name: test-results-${{ matrix.platform }}-${{ matrix.java }}
path: results
run: ./gradlew :tongsuo-openjdk:testJar -PcheckErrorQueue
Loading