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

Return MLS public keys as part of getting a 1:1 conversation #4224

Merged
merged 34 commits into from
Sep 9, 2024

Conversation

stefanwire
Copy link
Contributor

@stefanwire stefanwire commented Sep 3, 2024

Checklist

  • Add a new entry in an appropriate subdirectory of changelog.d
  • Read and follow the PR guidelines

akshaymankar and others added 10 commits August 28, 2024 13:36
Also add a test where local client is removed and the proposal is sent to remote
clients
Pending: keys for dynamic backends when running in K8s
… group instead of the conversation

This encodes the assumption that the creator's backend always owns the
conversation.

For one2one conversations, this would break, however we should use a different
function to do this setup as the keys are supposed to be returned in
getMLSOne2OneConversation endpoint from version 6 onwards.
Also add a test to ensure that proposals for removing clients can be
verified.
@zebot zebot added the ok-to-test Approved for running tests in CI, overrides not-ok-to-test if both labels exist label Sep 3, 2024
akshaymankar and others added 6 commits September 5, 2024 12:34
These were likely generated after refactoring so we actually did break the
API (in a small way). This is verified by seeing the results from q1-2024
release, APIs <= V5 return `epoch_timestamp` as `null` instead of omitting it.
@akshaymankar akshaymankar changed the title one2one removal keys Return MLS Public Keys as part of getting a 1:1 conversation Sep 9, 2024
@akshaymankar akshaymankar changed the title Return MLS Public Keys as part of getting a 1:1 conversation Return MLS public keys as part of getting a 1:1 conversation Sep 9, 2024
@akshaymankar akshaymankar marked this pull request as ready for review September 9, 2024 12:46
@akshaymankar akshaymankar merged commit dfab9a9 into develop Sep 9, 2024
10 checks passed
@akshaymankar akshaymankar deleted the one2one-removal-keys branch September 9, 2024 13:18
stefanwire added a commit that referenced this pull request Sep 12, 2024
* Routes.Public.Galley.Conversation: Remove version overlap in endpionts for getting one2one conversation

* integration: Verify remove propsals from the backend in group convos

Also add a test where local client is removed and the proposal is sent to remote
clients

* integration-tests: Use separate mls private keys for each env

Pending: keys for dynamic backends when running in K8s

* integration: resetClientGroup: Use MLS public keys for creator of the group instead of the conversation

This encodes the assumption that the creator's backend always owns the
conversation.

For one2one conversations, this would break, however we should use a different
function to do this setup as the keys are supposed to be returned in
getMLSOne2OneConversation endpoint from version 6 onwards.

* integration: Add tests for how the new API is supposed to work

Also add a test to ensure that proposals for removing clients can be
verified.

* wire-api{,-federation}: Add new APIs for returning MLS public keys for 1:1 convs

* galley: Implement new APIs for returning MLS public keys when getting 1:1 convs

* integration: Adjust one2one conv tests to use the new API

* galley.integration.yaml: fix path of the backend's public keys

* add golden tests

* charts/integration: Add mls private keys for dynamic backends

* integration: Fix API versions to be used for fed-v0 and v1 envs

They were hardcoded to use the dev API version, which is incorrect

* BackendNotificationPusherSpec: Fix API version test

Make it so it doesn't fail for adding new API versions

* hack/bin/gen-certs.sh: Also gen certs for federation-v1

* integration: Describe how one2one conversations should work when talking to older backends

* integration/SetupHelpers: Slightly nicer way to detect backend API version

* wire-api: Add epoch_timestamp to serialization of conv Protocol

It is necessary in older API versions, got removed as a bug.

* federation-api-galley: Use Protocol from client API V5 when returning 'RemoteConversation'

Federation API V1 expects JSON serialization similar to Client API V5.

* galley-integration: Delete test which is already covered by new integration tests

It required changes due to change in federation API

* galley: Only allow getting remote MLS 1:1 convs if the remote supports federation API v2

* galley: Do not return 1:1 conversations in federation API V1

* galley: Add query param for public key format to "get-one-to-one-mls-conversation"

* wire-api: Fix golden test JSONs

These were likely generated after refactoring so we actually did break the
API (in a small way). This is verified by seeing the results from q1-2024
release, APIs <= V5 return `epoch_timestamp` as `null` instead of omitting it.

* MLSOne2OneConversation: Add dynamic param to swagger name

* galley: Log warning when getting One2One conv and remote doesn't have MLS enabled

* wire-api-federation: Fix wrongly generated golden test

* integration/testSupportedProtocols: Don't run for federation-v0

Client API v4 doesn't support this endpoint

* galley: Move JWK key format to client APIv7

---------

Co-authored-by: Akshay Mankar <akshay@wire.com>
stefanwire added a commit that referenced this pull request Sep 12, 2024
…on (#4224)" (#4237)

* Routes.Public.Galley.Conversation: Remove version overlap in endpionts for getting one2one conversation

* integration: Verify remove propsals from the backend in group convos

Also add a test where local client is removed and the proposal is sent to remote
clients

* integration-tests: Use separate mls private keys for each env

Pending: keys for dynamic backends when running in K8s

* integration: resetClientGroup: Use MLS public keys for creator of the group instead of the conversation

This encodes the assumption that the creator's backend always owns the
conversation.

For one2one conversations, this would break, however we should use a different
function to do this setup as the keys are supposed to be returned in
getMLSOne2OneConversation endpoint from version 6 onwards.

* integration: Add tests for how the new API is supposed to work

Also add a test to ensure that proposals for removing clients can be
verified.

* wire-api{,-federation}: Add new APIs for returning MLS public keys for 1:1 convs

* galley: Implement new APIs for returning MLS public keys when getting 1:1 convs

* integration: Adjust one2one conv tests to use the new API

* galley.integration.yaml: fix path of the backend's public keys

* add golden tests

* charts/integration: Add mls private keys for dynamic backends

* integration: Fix API versions to be used for fed-v0 and v1 envs

They were hardcoded to use the dev API version, which is incorrect

* BackendNotificationPusherSpec: Fix API version test

Make it so it doesn't fail for adding new API versions

* hack/bin/gen-certs.sh: Also gen certs for federation-v1

* integration: Describe how one2one conversations should work when talking to older backends

* integration/SetupHelpers: Slightly nicer way to detect backend API version

* wire-api: Add epoch_timestamp to serialization of conv Protocol

It is necessary in older API versions, got removed as a bug.

* federation-api-galley: Use Protocol from client API V5 when returning 'RemoteConversation'

Federation API V1 expects JSON serialization similar to Client API V5.

* galley-integration: Delete test which is already covered by new integration tests

It required changes due to change in federation API

* galley: Only allow getting remote MLS 1:1 convs if the remote supports federation API v2

* galley: Do not return 1:1 conversations in federation API V1

* galley: Add query param for public key format to "get-one-to-one-mls-conversation"

* wire-api: Fix golden test JSONs

These were likely generated after refactoring so we actually did break the
API (in a small way). This is verified by seeing the results from q1-2024
release, APIs <= V5 return `epoch_timestamp` as `null` instead of omitting it.

* MLSOne2OneConversation: Add dynamic param to swagger name

* galley: Log warning when getting One2One conv and remote doesn't have MLS enabled

* wire-api-federation: Fix wrongly generated golden test

* integration/testSupportedProtocols: Don't run for federation-v0

Client API v4 doesn't support this endpoint

* galley: Move JWK key format to client APIv7

---------

Co-authored-by: Akshay Mankar <akshay@wire.com>
stefanwire added a commit that referenced this pull request Sep 12, 2024
…on (#4224)" (#4237)

* Routes.Public.Galley.Conversation: Remove version overlap in endpionts for getting one2one conversation

* integration: Verify remove propsals from the backend in group convos

Also add a test where local client is removed and the proposal is sent to remote
clients

* integration-tests: Use separate mls private keys for each env

Pending: keys for dynamic backends when running in K8s

* integration: resetClientGroup: Use MLS public keys for creator of the group instead of the conversation

This encodes the assumption that the creator's backend always owns the
conversation.

For one2one conversations, this would break, however we should use a different
function to do this setup as the keys are supposed to be returned in
getMLSOne2OneConversation endpoint from version 6 onwards.

* integration: Add tests for how the new API is supposed to work

Also add a test to ensure that proposals for removing clients can be
verified.

* wire-api{,-federation}: Add new APIs for returning MLS public keys for 1:1 convs

* galley: Implement new APIs for returning MLS public keys when getting 1:1 convs

* integration: Adjust one2one conv tests to use the new API

* galley.integration.yaml: fix path of the backend's public keys

* add golden tests

* charts/integration: Add mls private keys for dynamic backends

* integration: Fix API versions to be used for fed-v0 and v1 envs

They were hardcoded to use the dev API version, which is incorrect

* BackendNotificationPusherSpec: Fix API version test

Make it so it doesn't fail for adding new API versions

* hack/bin/gen-certs.sh: Also gen certs for federation-v1

* integration: Describe how one2one conversations should work when talking to older backends

* integration/SetupHelpers: Slightly nicer way to detect backend API version

* wire-api: Add epoch_timestamp to serialization of conv Protocol

It is necessary in older API versions, got removed as a bug.

* federation-api-galley: Use Protocol from client API V5 when returning 'RemoteConversation'

Federation API V1 expects JSON serialization similar to Client API V5.

* galley-integration: Delete test which is already covered by new integration tests

It required changes due to change in federation API

* galley: Only allow getting remote MLS 1:1 convs if the remote supports federation API v2

* galley: Do not return 1:1 conversations in federation API V1

* galley: Add query param for public key format to "get-one-to-one-mls-conversation"

* wire-api: Fix golden test JSONs

These were likely generated after refactoring so we actually did break the
API (in a small way). This is verified by seeing the results from q1-2024
release, APIs <= V5 return `epoch_timestamp` as `null` instead of omitting it.

* MLSOne2OneConversation: Add dynamic param to swagger name

* galley: Log warning when getting One2One conv and remote doesn't have MLS enabled

* wire-api-federation: Fix wrongly generated golden test

* integration/testSupportedProtocols: Don't run for federation-v0

Client API v4 doesn't support this endpoint

* galley: Move JWK key format to client APIv7

---------

Co-authored-by: Akshay Mankar <akshay@wire.com>
stefanwire added a commit that referenced this pull request Sep 12, 2024
…on (#4224)" (#4237)

* Routes.Public.Galley.Conversation: Remove version overlap in endpionts for getting one2one conversation

* integration: Verify remove propsals from the backend in group convos

Also add a test where local client is removed and the proposal is sent to remote
clients

* integration-tests: Use separate mls private keys for each env

Pending: keys for dynamic backends when running in K8s

* integration: resetClientGroup: Use MLS public keys for creator of the group instead of the conversation

This encodes the assumption that the creator's backend always owns the
conversation.

For one2one conversations, this would break, however we should use a different
function to do this setup as the keys are supposed to be returned in
getMLSOne2OneConversation endpoint from version 6 onwards.

* integration: Add tests for how the new API is supposed to work

Also add a test to ensure that proposals for removing clients can be
verified.

* wire-api{,-federation}: Add new APIs for returning MLS public keys for 1:1 convs

* galley: Implement new APIs for returning MLS public keys when getting 1:1 convs

* integration: Adjust one2one conv tests to use the new API

* galley.integration.yaml: fix path of the backend's public keys

* add golden tests

* charts/integration: Add mls private keys for dynamic backends

* integration: Fix API versions to be used for fed-v0 and v1 envs

They were hardcoded to use the dev API version, which is incorrect

* BackendNotificationPusherSpec: Fix API version test

Make it so it doesn't fail for adding new API versions

* hack/bin/gen-certs.sh: Also gen certs for federation-v1

* integration: Describe how one2one conversations should work when talking to older backends

* integration/SetupHelpers: Slightly nicer way to detect backend API version

* wire-api: Add epoch_timestamp to serialization of conv Protocol

It is necessary in older API versions, got removed as a bug.

* federation-api-galley: Use Protocol from client API V5 when returning 'RemoteConversation'

Federation API V1 expects JSON serialization similar to Client API V5.

* galley-integration: Delete test which is already covered by new integration tests

It required changes due to change in federation API

* galley: Only allow getting remote MLS 1:1 convs if the remote supports federation API v2

* galley: Do not return 1:1 conversations in federation API V1

* galley: Add query param for public key format to "get-one-to-one-mls-conversation"

* wire-api: Fix golden test JSONs

These were likely generated after refactoring so we actually did break the
API (in a small way). This is verified by seeing the results from q1-2024
release, APIs <= V5 return `epoch_timestamp` as `null` instead of omitting it.

* MLSOne2OneConversation: Add dynamic param to swagger name

* galley: Log warning when getting One2One conv and remote doesn't have MLS enabled

* wire-api-federation: Fix wrongly generated golden test

* integration/testSupportedProtocols: Don't run for federation-v0

Client API v4 doesn't support this endpoint

* galley: Move JWK key format to client APIv7

---------

Co-authored-by: Akshay Mankar <akshay@wire.com>
stefanwire added a commit that referenced this pull request Sep 12, 2024
…on (#4224)" (#4237)

* Routes.Public.Galley.Conversation: Remove version overlap in endpionts for getting one2one conversation

* integration: Verify remove propsals from the backend in group convos

Also add a test where local client is removed and the proposal is sent to remote
clients

* integration-tests: Use separate mls private keys for each env

Pending: keys for dynamic backends when running in K8s

* integration: resetClientGroup: Use MLS public keys for creator of the group instead of the conversation

This encodes the assumption that the creator's backend always owns the
conversation.

For one2one conversations, this would break, however we should use a different
function to do this setup as the keys are supposed to be returned in
getMLSOne2OneConversation endpoint from version 6 onwards.

* integration: Add tests for how the new API is supposed to work

Also add a test to ensure that proposals for removing clients can be
verified.

* wire-api{,-federation}: Add new APIs for returning MLS public keys for 1:1 convs

* galley: Implement new APIs for returning MLS public keys when getting 1:1 convs

* integration: Adjust one2one conv tests to use the new API

* galley.integration.yaml: fix path of the backend's public keys

* add golden tests

* charts/integration: Add mls private keys for dynamic backends

* integration: Fix API versions to be used for fed-v0 and v1 envs

They were hardcoded to use the dev API version, which is incorrect

* BackendNotificationPusherSpec: Fix API version test

Make it so it doesn't fail for adding new API versions

* hack/bin/gen-certs.sh: Also gen certs for federation-v1

* integration: Describe how one2one conversations should work when talking to older backends

* integration/SetupHelpers: Slightly nicer way to detect backend API version

* wire-api: Add epoch_timestamp to serialization of conv Protocol

It is necessary in older API versions, got removed as a bug.

* federation-api-galley: Use Protocol from client API V5 when returning 'RemoteConversation'

Federation API V1 expects JSON serialization similar to Client API V5.

* galley-integration: Delete test which is already covered by new integration tests

It required changes due to change in federation API

* galley: Only allow getting remote MLS 1:1 convs if the remote supports federation API v2

* galley: Do not return 1:1 conversations in federation API V1

* galley: Add query param for public key format to "get-one-to-one-mls-conversation"

* wire-api: Fix golden test JSONs

These were likely generated after refactoring so we actually did break the
API (in a small way). This is verified by seeing the results from q1-2024
release, APIs <= V5 return `epoch_timestamp` as `null` instead of omitting it.

* MLSOne2OneConversation: Add dynamic param to swagger name

* galley: Log warning when getting One2One conv and remote doesn't have MLS enabled

* wire-api-federation: Fix wrongly generated golden test

* integration/testSupportedProtocols: Don't run for federation-v0

Client API v4 doesn't support this endpoint

* galley: Move JWK key format to client APIv7

---------

Co-authored-by: Akshay Mankar <akshay@wire.com>
@echoes-hq echoes-hq bot added the echoes: unplanned Any work item that isn’t part of the product or technical roadmap. label Sep 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
echoes: unplanned Any work item that isn’t part of the product or technical roadmap. ok-to-test Approved for running tests in CI, overrides not-ok-to-test if both labels exist
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants