Support signing payload with 4096 bits RSA keys

The 32 bytes sha256 hash was padded to 256 bytes before payload signing
and verification. During the padding, we appended a hard coded header
according to RFC3447 spec.

As we want to support signing with 4096 bits keys, the format of the
padding doesn't change but the length needs adjustion. Now callers will
pass in the RSA size in bytes in the padding function. And the
verification function will now take the raw 32 bytes sha256 hash instead
of the padded value.

The new key for unittest is generated by:
openssl genrsa -out unittest_key_RSA4096.pem 4096

Bug: 129163830
Test: unit tests pass, create and install an update signed by 4096 bits key.
Change-Id: I8e0d02ddb1472e22976c0f170e8bf2b8b094c7d4
10 files changed
tree: 08047606804777795fcadd27cd8f6aec4af7f45c
  1. binder_bindings/
  2. client_library/
  3. common/
  4. dbus_bindings/
  5. fuzz/
  6. init/
  7. payload_consumer/
  8. payload_generator/
  9. sample_images/
  10. scripts/
  11. update_engine/
  12. update_manager/
  13. update_payload_key/
  14. .clang-format
  15. .gitignore
  16. Android.bp
  17. binder_service_android.cc
  18. binder_service_android.h
  19. binder_service_brillo.cc
  20. binder_service_brillo.h
  21. boot_control_android.cc
  22. boot_control_android.h
  23. boot_control_android_unittest.cc
  24. boot_control_chromeos.cc
  25. boot_control_chromeos.h
  26. boot_control_chromeos_unittest.cc
  27. certificate_checker.cc
  28. certificate_checker.h
  29. certificate_checker_unittest.cc
  30. chrome_browser_proxy_resolver.cc
  31. chrome_browser_proxy_resolver.h
  32. COMMIT-QUEUE.ini
  33. common_service.cc
  34. common_service.h
  35. common_service_unittest.cc
  36. connection_manager.cc
  37. connection_manager.h
  38. connection_manager_android.cc
  39. connection_manager_android.h
  40. connection_manager_interface.h
  41. connection_manager_unittest.cc
  42. connection_utils.cc
  43. connection_utils.h
  44. CPPLINT.cfg
  45. daemon.cc
  46. daemon.h
  47. daemon_state_android.cc
  48. daemon_state_android.h
  49. daemon_state_interface.h
  50. dbus_connection.cc
  51. dbus_connection.h
  52. dbus_service.cc
  53. dbus_service.h
  54. dbus_test_utils.h
  55. dlcservice_chromeos.cc
  56. dlcservice_chromeos.h
  57. dynamic_partition_control_android.cc
  58. dynamic_partition_control_android.h
  59. dynamic_partition_control_interface.h
  60. fake_file_writer.h
  61. fake_p2p_manager.h
  62. fake_p2p_manager_configuration.h
  63. fake_shill_proxy.cc
  64. fake_shill_proxy.h
  65. fake_system_state.cc
  66. fake_system_state.h
  67. generate_pc_file.sh
  68. hardware_android.cc
  69. hardware_android.h
  70. hardware_chromeos.cc
  71. hardware_chromeos.h
  72. hardware_chromeos_unittest.cc
  73. image_properties.h
  74. image_properties_android.cc
  75. image_properties_android_unittest.cc
  76. image_properties_chromeos.cc
  77. image_properties_chromeos_unittest.cc
  78. libcurl_http_fetcher.cc
  79. libcurl_http_fetcher.h
  80. libupdate_engine-client-test.pc.in
  81. libupdate_engine-client.pc.in
  82. local_coverage_rate
  83. main.cc
  84. metrics_constants.h
  85. metrics_reporter_android.cc
  86. metrics_reporter_android.h
  87. metrics_reporter_interface.h
  88. metrics_reporter_omaha.cc
  89. metrics_reporter_omaha.h
  90. metrics_reporter_omaha_unittest.cc
  91. metrics_reporter_stub.cc
  92. metrics_reporter_stub.h
  93. metrics_utils.cc
  94. metrics_utils.h
  95. metrics_utils_unittest.cc
  96. mock_boot_control_hal.h
  97. mock_certificate_checker.h
  98. mock_connection_manager.h
  99. mock_dynamic_partition_control.h
  100. mock_file_writer.h
  101. mock_metrics_reporter.h
  102. mock_omaha_request_params.h
  103. mock_p2p_manager.h
  104. mock_payload_state.h
  105. mock_power_manager.h
  106. mock_service_observer.h
  107. mock_update_attempter.h
  108. MODULE_LICENSE_APACHE2
  109. network_selector.h
  110. network_selector_android.cc
  111. network_selector_android.h
  112. network_selector_interface.h
  113. network_selector_stub.cc
  114. network_selector_stub.h
  115. NOTICE
  116. omaha_request_action.cc
  117. omaha_request_action.h
  118. omaha_request_action_fuzzer.cc
  119. omaha_request_action_unittest.cc
  120. omaha_request_params.cc
  121. omaha_request_params.h
  122. omaha_request_params_unittest.cc
  123. omaha_response.h
  124. omaha_response_handler_action.cc
  125. omaha_response_handler_action.h
  126. omaha_response_handler_action_unittest.cc
  127. omaha_utils.cc
  128. omaha_utils.h
  129. omaha_utils_unittest.cc
  130. OWNERS
  131. p2p_manager.cc
  132. p2p_manager.h
  133. p2p_manager_unittest.cc
  134. parcelable_update_engine_status.cc
  135. parcelable_update_engine_status.h
  136. parcelable_update_engine_status_unittest.cc
  137. payload_state.cc
  138. payload_state.h
  139. payload_state_interface.h
  140. payload_state_unittest.cc
  141. power_manager_android.cc
  142. power_manager_android.h
  143. power_manager_chromeos.cc
  144. power_manager_chromeos.h
  145. power_manager_interface.h
  146. PRESUBMIT.cfg
  147. PREUPLOAD.cfg
  148. pylintrc
  149. real_system_state.cc
  150. real_system_state.h
  151. run_unittests
  152. sample_omaha_v3_response.xml
  153. service_delegate_android_interface.h
  154. service_observer_interface.h
  155. shill_proxy.cc
  156. shill_proxy.h
  157. shill_proxy_interface.h
  158. sideload_main.cc
  159. system_state.h
  160. tar_bunzip2.gypi
  161. test_http_server.cc
  162. test_subprocess.cc
  163. testrunner.cc
  164. unittest_key.pem
  165. unittest_key2.pem
  166. unittest_key_RSA4096.pem
  167. update_attempter.cc
  168. update_attempter.h
  169. update_attempter_android.cc
  170. update_attempter_android.h
  171. update_attempter_android_unittest.cc
  172. update_attempter_unittest.cc
  173. update_boot_flags_action.cc
  174. update_boot_flags_action.h
  175. update_boot_flags_action_unittest.cc
  176. update_engine-client.gyp
  177. update_engine.conf
  178. update_engine.gyp
  179. update_engine.rc
  180. update_engine_client.cc
  181. update_engine_client_android.cc
  182. update_metadata.proto
  183. update_status_utils.cc
  184. update_status_utils.h
  185. UpdateEngine.conf