|
11 | 11 | - [v3: Get PNBA Code](#v3-get-pnba-code) |
12 | 12 | - [v3: Exchange PNBA Code and Store Token](#v3-exchange-pnba-code-and-store-token) |
13 | 13 | - [v3: Revoke and Delete PNBA Token](#v3-revoke-and-delete-pnba-token) |
| 14 | + - [v3: Sync Keys](#v3-sync-keys) |
14 | 15 | - [Version 2 API](#version-2-api) |
15 | 16 | - [v2: Get OAuth2 Authorization URL](#v2-get-oauth2-authorization-url) |
16 | 17 | - [v2: Exchange OAuth2 Code and Store Token](#v2-exchange-oauth2-code-and-store-token) |
@@ -392,6 +393,52 @@ grpcurl -plaintext \ |
392 | 393 |
|
393 | 394 | --- |
394 | 395 |
|
| 396 | +### v3: Sync Keys |
| 397 | + |
| 398 | +Syncs the client and server ephemeral key pools for a token. It rotates the client's key pool with a new set of 256 client ephemeral public keys, and the server generates a new pool of 256 server ephemeral keys. |
| 399 | + |
| 400 | +**Request:** `SyncKeysRequest` |
| 401 | + |
| 402 | +| Field | Type | Required | Description | |
| 403 | +| :--- | :--- | :--- | :--- | |
| 404 | +| token_id | bytes | Yes | Unique identifier for the stored token | |
| 405 | +| key_id | uint32 | Yes | The current key index used for encrypting the token | |
| 406 | +| client_ephemeral_public_keys | list[PublicKey] | Yes | Exactly 256 new ephemeral public keys generated by the client | |
| 407 | + |
| 408 | +**Response:** `SyncKeysResponse` |
| 409 | + |
| 410 | +| Field | Type | Description | |
| 411 | +| :--- | :--- | :--- | |
| 412 | +| success | bool | Operation success | |
| 413 | +| message | string | Response message | |
| 414 | +| server_ephemeral_public_keys | list[PublicKey] | Exactly 256 ephemeral public keys generated by the server | |
| 415 | + |
| 416 | +**Example:** |
| 417 | + |
| 418 | +```bash |
| 419 | +grpcurl -plaintext \ |
| 420 | + -H 'x-payload-bin: <encrypted_payload_binary>' \ |
| 421 | + -H 'x-public-key-bin: <client_pk_binary>' \ |
| 422 | + -H 'x-key-id: <key_id>' \ |
| 423 | + -H 'x-nonce-bin: <nonce_binary>' \ |
| 424 | + -H 'x-timestamp: <timestamp>' \ |
| 425 | + -d @ \ |
| 426 | + -proto protos/v3/publisher.proto \ |
| 427 | + <your_host>:<your_port> publisher.v3.Publisher/SyncKeys <<EOF |
| 428 | +{ |
| 429 | + "token_id": "<token_id_binary>", |
| 430 | + "key_id": 123, |
| 431 | + "client_ephemeral_public_keys": [ |
| 432 | + {"key_id": 0, "public_key": "..."}, |
| 433 | + ... 254 more keys ... |
| 434 | + {"key_id": 255, "public_key": "..."} |
| 435 | + ] |
| 436 | +} |
| 437 | +EOF |
| 438 | +``` |
| 439 | + |
| 440 | +--- |
| 441 | + |
395 | 442 | ## Version 2 API |
396 | 443 |
|
397 | 444 | **Package:** `publisher.v2` |
|
0 commit comments