Skip to content

Commit e735253

Browse files
committed
Create a new ServerFeature for parsec.
1 parent 5c4d169 commit e735253

File tree

8 files changed

+34
-14
lines changed

8 files changed

+34
-14
lines changed

.ci/config/config.compression.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"SocketPath": "./../../../../.ci/run/mysql/mysqld.sock",
55
"PasswordlessUser": "no_password",
66
"SecondaryDatabase": "testdb2",
7-
"UnsupportedFeatures": "Ed25519,QueryAttributes,Redirection,StreamingResults,Tls11,TlsFingerprintValidation,UnixDomainSocket,ZeroDateTime",
7+
"UnsupportedFeatures": "Ed25519,QueryAttributes,ParsecAuthentication,Redirection,StreamingResults,Tls11,TlsFingerprintValidation,UnixDomainSocket,ZeroDateTime",
88
"MySqlBulkLoaderLocalCsvFile": "../../../../tests/TestData/LoadData_UTF8_BOM_Unix.CSV",
99
"MySqlBulkLoaderLocalTsvFile": "../../../../tests/TestData/LoadData_UTF8_BOM_Unix.TSV"
1010
}

.ci/config/config.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"SocketPath": "./../../../../.ci/run/mysql/mysqld.sock",
55
"PasswordlessUser": "no_password",
66
"SecondaryDatabase": "testdb2",
7-
"UnsupportedFeatures": "Ed25519,QueryAttributes,Redirection,StreamingResults,Tls11,TlsFingerprintValidation,UnixDomainSocket,ZeroDateTime",
7+
"UnsupportedFeatures": "Ed25519,QueryAttributes,ParsecAuthentication,Redirection,StreamingResults,Tls11,TlsFingerprintValidation,UnixDomainSocket,ZeroDateTime",
88
"MySqlBulkLoaderLocalCsvFile": "../../../../tests/TestData/LoadData_UTF8_BOM_Unix.CSV",
99
"MySqlBulkLoaderLocalTsvFile": "../../../../tests/TestData/LoadData_UTF8_BOM_Unix.TSV"
1010
}

.ci/docker-run.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,12 @@ for i in `seq 1 120`; do
7979
if [ $? -ne 0 ]; then exit $?; fi
8080
fi
8181

82+
if [[ $OMIT_FEATURES != *"ParsecAuthentication"* ]]; then
83+
echo "Installing auth_parsec component"
84+
docker exec mysql bash -c "$MYSQL -uroot -ptest < /etc/mysql/conf.d/init_parsec.sql"
85+
if [ $? -ne 0 ]; then exit $?; fi
86+
fi
87+
8288
if [[ $OMIT_FEATURES != *"QueryAttributes"* ]]; then
8389
echo "Installing query_attributes component"
8490
docker exec mysql $MYSQL -uroot -ptest -e "INSTALL COMPONENT 'file://component_query_attributes';"

.ci/server/init_parsec.sql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
INSTALL SONAME 'auth_parsec';
2+
CREATE USER 'parsec-user'@'%' IDENTIFIED via parsec using PASSWORD('P@rs3c-Pa55');
3+
GRANT ALL PRIVILEGES ON *.* TO 'parsec-user'@'%';

azure-pipelines.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ jobs:
5151
arguments: 'tests\IntegrationTests\IntegrationTests.csproj -c MySqlData'
5252
testRunTitle: 'MySql.Data integration tests'
5353
env:
54-
DATA__UNSUPPORTEDFEATURES: 'Ed25519,QueryAttributes,StreamingResults,TlsFingerprintValidation,UnixDomainSocket'
54+
DATA__UNSUPPORTEDFEATURES: 'Ed25519,QueryAttributes,ParsecAuthentication,StreamingResults,TlsFingerprintValidation,UnixDomainSocket'
5555
DATA__CONNECTIONSTRING: 'server=localhost;port=3306;user id=root;password=test;database=mysqltest;ssl mode=none;DefaultCommandTimeout=3600'
5656
DATA__CERTIFICATESPATH: '$(Build.Repository.LocalPath)\.ci\server\certs\'
5757
DATA__MYSQLBULKLOADERLOCALCSVFILE: '$(Build.Repository.LocalPath)\tests\TestData\LoadData_UTF8_BOM_Unix.CSV'
@@ -120,7 +120,7 @@ jobs:
120120
arguments: '-c Release --no-restore -p:TestTfmsInParallel=false'
121121
testRunTitle: ${{ format('{0}, $(Agent.OS), {1}, {2}', 'mysql:8.0', 'net481/net9.0', 'No SSL') }}
122122
env:
123-
DATA__UNSUPPORTEDFEATURES: 'Ed25519,QueryAttributes,Redirection,StreamingResults,Tls11,TlsFingerprintValidation,UnixDomainSocket'
123+
DATA__UNSUPPORTEDFEATURES: 'Ed25519,QueryAttributes,ParsecAuthentication,Redirection,StreamingResults,Tls11,TlsFingerprintValidation,UnixDomainSocket'
124124
DATA__CONNECTIONSTRING: 'server=localhost;port=3306;user id=mysqltest;password=test;database=mysqltest;ssl mode=none;DefaultCommandTimeout=3600;AllowPublicKeyRetrieval=True;UseCompression=True'
125125

126126
- job: windows_integration_tests_2
@@ -158,7 +158,7 @@ jobs:
158158
arguments: '-c Release --no-restore -p:TestTfmsInParallel=false'
159159
testRunTitle: ${{ format('{0}, $(Agent.OS), {1}, {2}', 'mysql:8.0', 'net8.0', 'No SSL') }}
160160
env:
161-
DATA__UNSUPPORTEDFEATURES: 'Ed25519,QueryAttributes,Redirection,StreamingResults,Tls11,TlsFingerprintValidation,UnixDomainSocket'
161+
DATA__UNSUPPORTEDFEATURES: 'Ed25519,QueryAttributes,ParsecAuthentication,Redirection,StreamingResults,Tls11,TlsFingerprintValidation,UnixDomainSocket'
162162
DATA__CONNECTIONSTRING: 'server=localhost;port=3306;user id=mysqltest;password=test;database=mysqltest;ssl mode=none;DefaultCommandTimeout=3600;AllowPublicKeyRetrieval=True'
163163

164164
- job: linux_integration_tests
@@ -171,27 +171,27 @@ jobs:
171171
'MySQL 8.0':
172172
image: 'mysql:8.0'
173173
connectionStringExtra: 'AllowPublicKeyRetrieval=True'
174-
unsupportedFeatures: 'Ed25519,Redirection,StreamingResults,Tls11,TlsFingerprintValidation,ZeroDateTime'
174+
unsupportedFeatures: 'Ed25519,ParsecAuthentication,Redirection,StreamingResults,Tls11,TlsFingerprintValidation,ZeroDateTime'
175175
'MySQL 8.4':
176176
image: 'mysql:8.4'
177177
connectionStringExtra: 'AllowPublicKeyRetrieval=True'
178-
unsupportedFeatures: 'Ed25519,Redirection,StreamingResults,Tls11,TlsFingerprintValidation,ZeroDateTime'
178+
unsupportedFeatures: 'Ed25519,ParsecAuthentication,Redirection,StreamingResults,Tls11,TlsFingerprintValidation,ZeroDateTime'
179179
'MySQL 9.2':
180180
image: 'mysql:9.2'
181181
connectionStringExtra: 'AllowPublicKeyRetrieval=True'
182-
unsupportedFeatures: 'Ed25519,Redirection,StreamingResults,Tls11,TlsFingerprintValidation,ZeroDateTime'
182+
unsupportedFeatures: 'Ed25519,ParsecAuthentication,Redirection,StreamingResults,Tls11,TlsFingerprintValidation,ZeroDateTime'
183183
'MariaDB 10.6':
184184
image: 'mariadb:10.6'
185185
connectionStringExtra: ''
186-
unsupportedFeatures: 'CachingSha2Password,CancelSleepSuccessfully,Json,RoundDateTime,QueryAttributes,Redirection,Sha256Password,Tls11,TlsFingerprintValidation,UuidToBin'
186+
unsupportedFeatures: 'CachingSha2Password,CancelSleepSuccessfully,Json,RoundDateTime,QueryAttributes,ParsecAuthentication,Redirection,Sha256Password,Tls11,TlsFingerprintValidation,UuidToBin'
187187
'MariaDB 10.11':
188188
image: 'mariadb:10.11'
189189
connectionStringExtra: ''
190-
unsupportedFeatures: 'CachingSha2Password,CancelSleepSuccessfully,Json,RoundDateTime,QueryAttributes,Redirection,Sha256Password,Tls11,TlsFingerprintValidation,UuidToBin'
190+
unsupportedFeatures: 'CachingSha2Password,CancelSleepSuccessfully,Json,RoundDateTime,QueryAttributes,ParsecAuthentication,Redirection,Sha256Password,Tls11,TlsFingerprintValidation,UuidToBin'
191191
'MariaDB 11.4':
192192
image: 'mariadb:11.4'
193193
connectionStringExtra: ''
194-
unsupportedFeatures: 'CachingSha2Password,CancelSleepSuccessfully,Json,RoundDateTime,QueryAttributes,Sha256Password,Tls11,UuidToBin,Redirection'
194+
unsupportedFeatures: 'CachingSha2Password,CancelSleepSuccessfully,Json,RoundDateTime,QueryAttributes,ParsecAuthentication,Sha256Password,Tls11,UuidToBin,Redirection'
195195
steps:
196196
- template: '.ci/integration-tests-steps.yml'
197197
parameters:
Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
## About
22

3-
This package implements the `client_ed25519` [authentication plugin for MariaDB](https://mariadb.com/kb/en/authentication-plugin-ed25519/).
3+
This package implements the following authentication plugins for MariaDB:
4+
5+
* [`client_ed25519`](https://mariadb.com/kb/en/authentication-plugin-ed25519/).
6+
* [PARSEC](https://mariadb.com/kb/en/authentication-plugin-parsec/)
47

58
## How to Use
69

7-
Call `Ed25519AuthenticationPlugin.Install()` from your application startup code to enable it.
10+
Call either the following methods from your application startup code to enable the corresponding authentication plugin:
11+
12+
* `Ed25519AuthenticationPlugin.Install()`
13+
* `ParsecAuthenticationPlugin.Install()`

tests/IntegrationTests/ConnectAsync.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ public async Task MultiAuthentication()
449449
await connection.OpenAsync();
450450
}
451451

452-
[Fact]
452+
[SkippableFact(ServerFeatures.ParsecAuthentication)]
453453
public async Task Parsec()
454454
{
455455
MySqlConnector.Authentication.Ed25519.ParsecAuthenticationPlugin.Install();

tests/IntegrationTests/ServerFeatures.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,9 @@ public enum ServerFeatures
4545
/// Server provides hash of TLS certificate in first OK packet.
4646
/// </summary>
4747
TlsFingerprintValidation = 0x100_0000,
48+
49+
/// <summary>
50+
/// Server supports the 'parsec' authentication plugin.
51+
/// </summary>
52+
ParsecAuthentication = 0x200_0000,
4853
}

0 commit comments

Comments
 (0)