Implement FPM policy validation algorithm
@mcy がすでに取り組んでいます。
2020年9月17日 から。
評価
この issue はまだ評価されていません。
説明
Pesudocode for the algorithm:
fn verify_policy(
fpm: Fpm,
flash: &impl Flash,
hash_builder: &impl ha256::Builder
) -> Result<FirmwareVersion> {
for fw in fpm.fw_versions {
let version = flash.read(fw.version_addr, fw.version_len);
if version != fw.version {
continue
}
let mut sha = hash_builder.new();
for (ptr, len) in fw.signed_regions {
// Note: this is grossly exaggerated. There is an expectation that
// data will be fed into the hashing engine in small packets (O(1K),
// for example.
sha.write(flash.read(ptr, len));
}
if fw.signed_region_hash != sha.finish() {
return Err("hash mismatch");
}
let unused_regions = regions_except(flash, [fw.signed_regions,
fw.write_regions]);
for (ptr, len) in unused_regions {
for byte in flash.read(ptr, len) {
return Err("bad byte in blank region");
}
}
return fw
}
return Err("failed to find an acceptable version")
}
- 主要言語
- Rust
- スター
- 17
- フォーク
- 11
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
lowRISC/manticore のほかの issue
-
難易度 5/5 1週間以上 初心者へのやさしさ 30/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 45/100
-
難易度 3/5 1〜2日 初心者へのやさしさ 42/100
-
Run _all_ tests under Miri.再び着手できるかも @xaep が 1873 日前に担当しましたが、オープン中のプルリクエストはありません。 オープンgood first issue
-
Use pre-baked manifests for testing `manifest:;Container`再び着手できるかも @mcy が 2072 日前に担当しましたが、オープン中のプルリクエストはありません。 オープン
lowRISC/manticore の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
joshstevens19/rindexer#483 ·
メンテナーはふだん 1 日以内に返信
-
VX_PRINT_DROPS prints each drop point twice on the default code generator, the second time at line 0オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
CommunityToolkit/Aspire#2231 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100