Signed-off-by: Jacob Trimble <modmaker@google.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>tags/n4.0
| @@ -15,6 +15,9 @@ libavutil: 2017-10-21 | |||||
| API changes, most recent first: | API changes, most recent first: | ||||
| 2018-xx-xx - xxxxxxx - lavu 56.9.100 - aes_ctr.h | |||||
| Add method to set the 16-byte IV. | |||||
| 2018-01-xx - xxxxxxx - lavf 58.5.100 - avformat.h | 2018-01-xx - xxxxxxx - lavf 58.5.100 - avformat.h | ||||
| Explicitly make avformat_network_init() and avformat_network_deinit() optional. | Explicitly make avformat_network_init() and avformat_network_deinit() optional. | ||||
| If these are not called, network initialization and deinitialization is | If these are not called, network initialization and deinitialization is | ||||
| @@ -45,6 +45,12 @@ void av_aes_ctr_set_iv(struct AVAESCTR *a, const uint8_t* iv) | |||||
| a->block_offset = 0; | a->block_offset = 0; | ||||
| } | } | ||||
| void av_aes_ctr_set_full_iv(struct AVAESCTR *a, const uint8_t* iv) | |||||
| { | |||||
| memcpy(a->counter, iv, sizeof(a->counter)); | |||||
| a->block_offset = 0; | |||||
| } | |||||
| const uint8_t* av_aes_ctr_get_iv(struct AVAESCTR *a) | const uint8_t* av_aes_ctr_get_iv(struct AVAESCTR *a) | ||||
| { | { | ||||
| return a->counter; | return a->counter; | ||||
| @@ -67,10 +67,15 @@ const uint8_t* av_aes_ctr_get_iv(struct AVAESCTR *a); | |||||
| void av_aes_ctr_set_random_iv(struct AVAESCTR *a); | void av_aes_ctr_set_random_iv(struct AVAESCTR *a); | ||||
| /** | /** | ||||
| * Forcefully change the iv | |||||
| * Forcefully change the 8-byte iv | |||||
| */ | */ | ||||
| void av_aes_ctr_set_iv(struct AVAESCTR *a, const uint8_t* iv); | void av_aes_ctr_set_iv(struct AVAESCTR *a, const uint8_t* iv); | ||||
| /** | |||||
| * Forcefully change the "full" 16-byte iv, including the counter | |||||
| */ | |||||
| void av_aes_ctr_set_full_iv(struct AVAESCTR *a, const uint8_t* iv); | |||||
| /** | /** | ||||
| * Increment the top 64 bit of the iv (performed after each frame) | * Increment the top 64 bit of the iv (performed after each frame) | ||||
| */ | */ | ||||
| @@ -45,7 +45,7 @@ int main (void) | |||||
| av_aes_ctr_set_random_iv(ae); | av_aes_ctr_set_random_iv(ae); | ||||
| iv = av_aes_ctr_get_iv(ae); | iv = av_aes_ctr_get_iv(ae); | ||||
| av_aes_ctr_set_iv(ad, iv); | |||||
| av_aes_ctr_set_full_iv(ad, iv); | |||||
| av_aes_ctr_crypt(ae, tmp, plain, sizeof(tmp)); | av_aes_ctr_crypt(ae, tmp, plain, sizeof(tmp)); | ||||
| av_aes_ctr_crypt(ad, tmp, tmp, sizeof(tmp)); | av_aes_ctr_crypt(ad, tmp, tmp, sizeof(tmp)); | ||||