Index: ppapi/api/private/pp_decrypt_config.idl |
diff --git a/ppapi/api/private/pp_decrypt_config.idl b/ppapi/api/private/pp_decrypt_config.idl |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9fdb0d5246bf829f41fe6c25b2fa7b15439e3c85 |
--- /dev/null |
+++ b/ppapi/api/private/pp_decrypt_config.idl |
@@ -0,0 +1,107 @@ |
+/* Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+ |
+/** |
+ * The data structure that can be used to associate the decrypted data with a |
dmichael (off chromium)
2012/08/16 17:36:33
This comment is worded strangely. We usually use c
xhwang
2012/08/16 20:10:39
Done.
|
+ * decrypt request and/or an input buffer. |
+ */ |
+[assert_size(24)] |
+struct PP_DecryptTrackingInfo { |
+ /** |
+ * Client-specified identifier for the associated decrypt request. By using |
+ * this value client can associate the decrypted data with a decryption |
dmichael (off chromium)
2012/08/16 17:36:33
"value client" -> "value, the client"
xhwang
2012/08/16 20:10:39
Done.
|
+ * request. |
+ */ |
+ uint64_t request_id; |
+ |
+ /** |
+ * Timestamp in milliseconds of the associated buffer. By using this value |
+ * client can associate the decrypted (and decoded) data with an input buffer. |
ddorwin
2012/08/16 04:31:52
Why isn't the above member enough for association?
xhwang
2012/08/16 20:10:39
Added more explanation: "This is needed as the dec
|
+ */ |
+ int64_t timestamp; |
dmichael (off chromium)
2012/08/16 17:36:33
We usually use PP_Time (which really just typedefs
xhwang
2012/08/16 20:10:39
This timestamp is really only for tracking and in
|
+ |
+ /** |
+ * Duration in milliseconds of the associated buffer. |
+ */ |
+ int64_t duration; |
ddorwin
2012/08/16 04:31:52
Pending scherkus's response in the other CL.
dmichael (off chromium)
2012/08/16 17:36:33
64 bits seems really huge for milliseconds... are
xhwang
2012/08/16 20:10:39
duration is removed as per offline discussion w/ s
|
+}; |
+ |
+/** |
+ * The data structure for decryption subsample entry. |
+ * |
+ * An input buffer can be split into several continuous subsamples. |
+ * A <code>PP_DecryptSubsampleEntry</code> specifies the number of clear and |
+ * cipher bytes in each subsample. For example, the following buffer has three |
+ * subsamples: |
+ * |
+ * |<----- subsample1 ----->|<----- subsample2 ----->|<----- subsample3 ----->| |
+ * | clear1 | cipher1 | clear2 | cipher2 | clear3 | cipher3 | |
+ * |
+ * For decryption, all of the cipher bytes in a buffer should be concatenated |
dmichael (off chromium)
2012/08/16 17:36:33
Do you really have to concatenate the "cipher byte
xhwang
2012/08/16 20:10:39
Done.
|
+ * (in the subsample order) into a single logical stream. The clear bytes should |
+ * not be considered as part of decryption. |
+ * |
+ * Stream to decrypt: | cipher1 | cipher2 | cipher3 | |
+ * Decrypted stream: | decrypted1| decrypted2 | decrypted3 | |
+ * |
+ * After decryption, the decrypted bytes should be copied over the position |
+ * of the corresponding cipher bytes in the original buffer to form the output |
+ * buffer. Following the above example, the decrypted buffer should be: |
+ * |
+ * |<----- subsample1 ----->|<----- subsample2 ----->|<----- subsample3 ----->| |
+ * | clear1 | decrypted1| clear2 | decrypted2 | clear3 | decrypted3 | |
+ */ |
+[assert_size(8)] |
+struct PP_DecryptSubsampleEntry { |
dmichael (off chromium)
2012/08/16 17:36:33
Maybe a different name, since this isn't really a
xhwang
2012/08/16 20:10:39
Done.
|
+ /** |
+ * Size in bytes of clear data in a subsample entry. |
+ */ |
+ uint32_t clear_bytes; |
+ |
+ /** |
+ * Size in bytes of encrypted data in a subsample entry. |
+ */ |
+ uint32_t cipher_bytes; |
+}; |
+ |
+/** |
+ * The data structure that contains all information needed to decrypt a buffer. |
ddorwin
2012/08/16 04:31:52
Is "The data structure that" wording common in PPA
dmichael (off chromium)
2012/08/16 17:36:33
Not common. We'd usually say "PP_DecryptConfig con
xhwang
2012/08/16 20:10:39
Done.
|
+ */ |
+[assert_size(368)] |
+struct PP_DecryptConfig { |
+ /** |
+ * Information needed by the client to track the buffer to be decrypted. |
+ */ |
+ PP_DecryptTrackingInfo tracking_info; |
ddorwin
2012/08/16 04:31:52
Not really decryption configuration. Can we use a
xhwang
2012/08/16 20:10:39
Added comment about this.
|
+ |
+ /** |
+ * Size of data to be discarded before applying the decryption (in bytes). |
+ */ |
+ uint32_t data_offset; |
+ |
+ /** |
+ * Key ID of the buffer to be decrypted. |
+ */ |
+ uint8_t[68] key_id; |
xhwang
2012/08/16 03:14:41
As per dmichael@:
1, 8-byte data need to be on 8-b
ddorwin
2012/08/16 04:31:52
I still don't understand the reason for 68 here. M
dmichael (off chromium)
2012/08/16 17:36:33
Well, it's not *our* rule :-). The compiler will a
xhwang
2012/08/16 20:10:39
There's no easy way to define and use a constant i
|
+ uint32_t key_id_size; |
+ |
+ /** |
+ * Initialization vector of the buffer to be decrypted. |
+ */ |
+ uint8_t[64] iv; |
+ uint32_t iv_size; |
+ |
+ /** |
+ * Checksum of the buffer to be decrypted. |
+ */ |
+ uint8_t[64] checksum; |
+ uint32_t checksum_size; |
+ |
+ /** |
+ * Subsamples of the buffer to be decrypted. |
ddorwin
2012/08/16 04:31:52
Subsample information/map of...
xhwang
2012/08/16 20:10:39
Done.
|
+ */ |
+ PP_DecryptSubsampleEntry[16] subsamples; |
ddorwin
2012/08/16 04:31:52
Strange to always have 1 KB of data appended. May
xhwang
2012/08/16 20:10:39
It's 16*8=128bytes, so I suppose it's fine here. W
|
+ uint32_t num_subsamples; |
+}; |
dmichael (off chromium)
2012/08/16 17:36:33
This is pretty big... you *could* consider making
xhwang
2012/08/16 20:10:39
That's a good suggestion. It may change in size an
|