xmpp: Add a test for SCRAM-SHA-256
This commit is contained in:
parent
d8ce793d81
commit
e94e48bad6
@ -207,9 +207,9 @@ Future<void> entrypoint() async {
|
|||||||
StreamManagementNegotiator(),
|
StreamManagementNegotiator(),
|
||||||
CSINegotiator(),
|
CSINegotiator(),
|
||||||
RosterFeatureNegotiator(),
|
RosterFeatureNegotiator(),
|
||||||
// TODO(Unknown): These two may not work
|
// TODO(Unknown): This one may not work
|
||||||
//SaslScramNegotiator(10, '', '', ScramHashType.sha512),
|
//SaslScramNegotiator(10, '', '', ScramHashType.sha512),
|
||||||
//SaslScramNegotiator(9, '', '', ScramHashType.sha256),
|
SaslScramNegotiator(9, '', '', ScramHashType.sha256),
|
||||||
SaslScramNegotiator(8, '', '', ScramHashType.sha1),
|
SaslScramNegotiator(8, '', '', ScramHashType.sha1),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
@ -18,7 +18,22 @@ final scramSha1StreamFeatures = XMLNode(
|
|||||||
children: [
|
children: [
|
||||||
XMLNode(
|
XMLNode(
|
||||||
tag: 'mechanism',
|
tag: 'mechanism',
|
||||||
text: 'SCRAM-SHA1',
|
text: 'SCRAM-SHA-1',
|
||||||
|
)
|
||||||
|
],
|
||||||
|
)
|
||||||
|
],
|
||||||
|
);
|
||||||
|
final scramSha256StreamFeatures = XMLNode(
|
||||||
|
tag: 'stream:features',
|
||||||
|
children: [
|
||||||
|
XMLNode.xmlns(
|
||||||
|
tag: 'mechanisms',
|
||||||
|
xmlns: saslXmlns,
|
||||||
|
children: [
|
||||||
|
XMLNode(
|
||||||
|
tag: 'mechanism',
|
||||||
|
text: 'SCRAM-SHA-256',
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
@ -38,6 +53,8 @@ void main() {
|
|||||||
getManagerNullStub,
|
getManagerNullStub,
|
||||||
() => JID.fromString('user@server'),
|
() => JID.fromString('user@server'),
|
||||||
() => fakeSocket,
|
() => fakeSocket,
|
||||||
|
() => false,
|
||||||
|
(_) {},
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -89,6 +106,29 @@ void main() {
|
|||||||
expect(await negotiator.calculateChallengeResponse('cj1meWtvK2QybGJiRmdPTlJ2OXFreGRhd0wzcmZjTkhZSlkxWlZ2V1ZzN2oscz1RU1hDUitRNnNlazhiZjkyLGk9NDA5Ng=='), 'c=biws,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,p=v0X8v3Bz2T0CJGbJQyF0X+HI4Ts=');
|
expect(await negotiator.calculateChallengeResponse('cj1meWtvK2QybGJiRmdPTlJ2OXFreGRhd0wzcmZjTkhZSlkxWlZ2V1ZzN2oscz1RU1hDUitRNnNlazhiZjkyLGk9NDA5Ng=='), 'c=biws,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,p=v0X8v3Bz2T0CJGbJQyF0X+HI4Ts=');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Test SASL SCRAM-SHA-256', () async {
|
||||||
|
final negotiator = SaslScramNegotiator(0, 'n=user,r=rOprNGfwEbeRWgbNEkqO', 'rOprNGfwEbeRWgbNEkqO', ScramHashType.sha256);
|
||||||
|
negotiator.register(
|
||||||
|
NegotiatorAttributes(
|
||||||
|
(XMLNode _, {String? redact}) {},
|
||||||
|
() => ConnectionSettings(jid: JID.fromString('user@server'), password: 'pencil', useDirectTLS: true, allowPlainAuth: true),
|
||||||
|
(_) async {},
|
||||||
|
getNegotiatorNullStub,
|
||||||
|
getManagerNullStub,
|
||||||
|
() => JID.fromString('user@server'),
|
||||||
|
() => fakeSocket,
|
||||||
|
() => false,
|
||||||
|
(_) {},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
await negotiator.negotiate(scramSha256StreamFeatures);
|
||||||
|
await negotiator.negotiate(XMLNode.fromString("<challenge xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>cj1yT3ByTkdmd0ViZVJXZ2JORWtxTyVodllEcFdVYTJSYVRDQWZ1eEZJbGopaE5sRiRrMCxzPVcyMlphSjBTTlk3c29Fc1VFamI2Z1E9PSxpPTQwOTYK</challenge>"));
|
||||||
|
await negotiator.negotiate(XMLNode.fromString("<success xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>dj02cnJpVFJCaTIzV3BSUi93dHVwK21NaFVaVW4vZEI1bkxUSlJzamw5NUc0PQo=</success>"));
|
||||||
|
|
||||||
|
expect(negotiator.state, NegotiatorState.error);
|
||||||
|
});
|
||||||
|
|
||||||
test('Test a positive server signature check', () async {
|
test('Test a positive server signature check', () async {
|
||||||
final negotiator = SaslScramNegotiator(0, 'n=user,r=fyko+d2lbbFgONRv9qkxdawL', 'fyko+d2lbbFgONRv9qkxdawL', ScramHashType.sha1);
|
final negotiator = SaslScramNegotiator(0, 'n=user,r=fyko+d2lbbFgONRv9qkxdawL', 'fyko+d2lbbFgONRv9qkxdawL', ScramHashType.sha1);
|
||||||
negotiator.register(
|
negotiator.register(
|
||||||
@ -100,6 +140,8 @@ void main() {
|
|||||||
getManagerNullStub,
|
getManagerNullStub,
|
||||||
() => JID.fromString('user@server'),
|
() => JID.fromString('user@server'),
|
||||||
() => fakeSocket,
|
() => fakeSocket,
|
||||||
|
() => false,
|
||||||
|
(_) {},
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -121,6 +163,8 @@ void main() {
|
|||||||
getManagerNullStub,
|
getManagerNullStub,
|
||||||
() => JID.fromString('user@server'),
|
() => JID.fromString('user@server'),
|
||||||
() => fakeSocket,
|
() => fakeSocket,
|
||||||
|
() => false,
|
||||||
|
(_) {},
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -142,6 +186,8 @@ void main() {
|
|||||||
getManagerNullStub,
|
getManagerNullStub,
|
||||||
() => JID.fromString('user@server'),
|
() => JID.fromString('user@server'),
|
||||||
() => fakeSocket,
|
() => fakeSocket,
|
||||||
|
() => false,
|
||||||
|
(_) {},
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user