diff --git a/api/crypto/framedecryptorinterface.h b/api/crypto/framedecryptorinterface.h index a3ff19aa3c..1c49b511f7 100644 --- a/api/crypto/framedecryptorinterface.h +++ b/api/crypto/framedecryptorinterface.h @@ -25,8 +25,7 @@ namespace webrtc { // without it. You may assume that this interface will have the same lifetime // as the RTPReceiver it is attached to. It must only be attached to one // RTPReceiver. -// Note: -// This interface is not ready for production use. +// Note: This interface is not ready for production use. class FrameDecryptorInterface : public rtc::RefCountInterface { public: ~FrameDecryptorInterface() override {} @@ -35,16 +34,20 @@ class FrameDecryptorInterface : public rtc::RefCountInterface { // be allocated to the size returned from GetOutputSize. You may assume that // the frames are in order if SRTP is enabled. The stream is not provided here // and it is up to the implementor to transport this information to the - // receiver if they care about it. - // TODO(benwright) integrate error codes - virtual bool Decrypt(cricket::MediaType media_type, - rtc::ArrayView encrypted_frame, - rtc::ArrayView frame) = 0; + // receiver if they care about it. You must set bytes_written to how many + // bytes you wrote to in the frame buffer. 0 must be returned if successful + // all other numbers can be selected by the implementer to represent error + // codes. + virtual int Decrypt(cricket::MediaType media_type, + rtc::ArrayView encrypted_frame, + rtc::ArrayView frame, + size_t* bytes_written) = 0; // Returns the total required length in bytes for the output of the - // decryption. - virtual size_t GetOutputSize(cricket::MediaType media_type, - size_t encrypted_frame_size) = 0; + // decryption. This can be larger than the actual number of bytes you need but + // must never be smaller as it informs the size of the frame buffer. + virtual size_t GetMaxPlaintextByteSize(cricket::MediaType media_type, + size_t encrypted_frame_size) = 0; }; } // namespace webrtc diff --git a/api/crypto/frameencryptorinterface.h b/api/crypto/frameencryptorinterface.h index 369d6b8150..a99549c572 100644 --- a/api/crypto/frameencryptorinterface.h +++ b/api/crypto/frameencryptorinterface.h @@ -24,25 +24,29 @@ namespace webrtc { // addition to the standard SRTP mechanism and is not intended to be used // without it. Implementations of this interface will have the same lifetime as // the RTPSenders it is attached to. -// This interface is not ready for production use. +// Note: This interface is not ready for production use. class FrameEncryptorInterface : public rtc::RefCountInterface { public: ~FrameEncryptorInterface() override {} // Attempts to encrypt the provided frame. You may assume the encrypted_frame - // will match the size returned by GetOutputSize for a give frame. You may - // assume that the frames will arrive in order if SRTP is enabled. The ssrc - // will simply identify which stream the frame is travelling on. - // TODO(benwright) integrate error codes. - virtual bool Encrypt(cricket::MediaType media_type, - uint32_t ssrc, - rtc::ArrayView frame, - rtc::ArrayView encrypted_frame) = 0; + // will match the size returned by GetMaxCiphertextByteSize for a give frame. + // You may assume that the frames will arrive in order if SRTP is enabled. + // The ssrc will simply identify which stream the frame is travelling on. You + // must set bytes_written to the number of bytes you wrote in the + // encrypted_frame. 0 must be returned if successful all other numbers can be + // selected by the implementer to represent error codes. + virtual int Encrypt(cricket::MediaType media_type, + uint32_t ssrc, + rtc::ArrayView frame, + rtc::ArrayView encrypted_frame, + size_t* bytes_written) = 0; // Returns the total required length in bytes for the output of the - // encryption. - virtual size_t GetOutputSize(cricket::MediaType media_type, - size_t frame_size) = 0; + // encryption. This can be larger than the actual number of bytes you need but + // must never be smaller as it informs the size of the encrypted_frame buffer. + virtual size_t GetMaxCiphertextByteSize(cricket::MediaType media_type, + size_t frame_size) = 0; }; } // namespace webrtc