- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / api / cast_channel / cast_channel.proto
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 syntax = "proto2";
6
7 option optimize_for = LITE_RUNTIME;
8
9 package extensions.api.cast_channel;
10
11 message CastMessage {
12   // Always pass a version of the protocol for future compatibility
13   // requirements.
14   enum ProtocolVersion {
15     CASTV2_1_0 = 0;
16   }
17   required ProtocolVersion protocol_version = 1;
18
19   // source and destination ids identify the origin and destination of the
20   // message.  They are used to route messages between endpoints that share a
21   // device-to-device channel.
22   //
23   // For messages between applications:
24   //   - The sender application id is a unique identifier generated on behalf of
25   //     the sender application.
26   //   - The receiver id is always the the session id for the application.
27   //
28   // For messages to or from the sender or receiver platform, the special ids
29   // 'sender-0' and 'receiver-0' can be used.
30   // 
31   // For messages intended for all endpoints using a given channel, the
32   // wildcard destination_id '*' can be used.
33   required string source_id = 2;
34   required string destination_id = 3;
35
36   // This is the core multiplexing key.  All messages are sent on a namespace
37   // and endpoints sharing a channel listen on one or more namespaces.  The
38   // namespace defines the protocol and semantics of the message.
39   required string namespace = 4;
40
41   // Encoding and payload info follows.
42
43   // What type of data do we have in this message.
44   enum PayloadType {
45     STRING = 0;
46     BINARY = 1;
47   }
48   required PayloadType payload_type = 5;
49
50   // Depending on payload_type, exactly one of the following optional fields
51   // will always be set.
52   optional string payload_utf8 = 6;
53   optional bytes payload_binary = 7;
54 }
55
56 // Messages for authentication protocol between a sender and a receiver.
57 message AuthChallenge {
58 }
59
60 message AuthResponse {
61   required bytes signature = 1;
62   required bytes client_auth_certificate = 2;
63 }
64
65 message AuthError {
66   enum ErrorType {
67     INTERNAL_ERROR = 0;
68     NO_TLS = 1;  // The underlying connection is not TLS
69   }
70   required ErrorType error_type = 1;
71 }
72
73 message DeviceAuthMessage {
74   // Request fields
75   optional AuthChallenge challenge = 1;
76   // Response fields
77   optional AuthResponse response = 2;
78   optional AuthError error = 3;
79 }