Document CI API availability and historical mincrypt layouts
This commit is contained in:
1 parent
7aa23f50be
commit
cb23a31adb
12 files changed
+743
-40
No files matched your search
@@ -1,21 +1,69 @@
|
||||
# CI APIs
|
||||
# CI API availability observations
|
||||
|
||||
These historical availability notes are unverified. The analyzed ci.dll
|
||||
10.0.26100.8328 x64 still exports the digest-based APIs listed below. Exact
|
||||
first-available builds and ABI changes need matching old binaries. See
|
||||
[the current contracts and remaining work](docs/mincrypt-contracts.md).
|
||||
See the [CI API compatibility matrix](docs/ci-api-compatibility.md) for the
|
||||
per-API tables covering all ten VM, ISO and modern x64 samples, with exact
|
||||
versions, file hashes and machine-readable results. The six-sample notes below
|
||||
describe the original VM corpus and its subsequent ISO follow-up.
|
||||
|
||||
## Available starting with 1511
|
||||
These are export-table observations from six extracted x64 `ci.dll` files, not
|
||||
claims about every servicing revision or a proof of the original introduction
|
||||
build. The companion CodeIntegrity-RE `corpus-index.json` records identities,
|
||||
extraction aliases, manifest checks, and metadata. VM directory names are labels;
|
||||
versions below come from the PE version resources. No target was executed.
|
||||
|
||||
- CiCheckSignedFile
|
||||
- CiFindPageHashesInCatalog
|
||||
- CiFindPageHashesInSignedFile
|
||||
- CiFreePolicyInfo
|
||||
- CiGetPEInformation
|
||||
- CiInitialize
|
||||
- CiValidateFileObject
|
||||
- CiVerifyHashInCatalog
|
||||
## Named exports common to all six samples
|
||||
|
||||
## Added in 1709
|
||||
- `CiCheckSignedFile`
|
||||
- `CiFindPageHashesInCatalog`
|
||||
- `CiFindPageHashesInSignedFile`
|
||||
- `CiFreePolicyInfo`
|
||||
- `CiGetPEInformation`
|
||||
- `CiInitialize`
|
||||
- `CiValidateFileObject`
|
||||
- `CiVerifyHashInCatalog`
|
||||
|
||||
- CiSetTrustedOriginClaimId
|
||||
`CiValidateFileObject` is already present in sampled Windows 10 **1507**
|
||||
`10.0.10240.16463`. The old “starting with 1511” list was therefore too narrow.
|
||||
Export presence does not establish a complete compatible parameter/structure
|
||||
contract; consult the per-build static analysis before using it.
|
||||
|
||||
## Additional names and absent names
|
||||
|
||||
`CiSetTrustedOriginClaimId` is present in sampled `10.0.15063.0` (**1703**) and
|
||||
in the sampled 1709/1803 files. It is absent from the sampled 1507,1511,1607
|
||||
export tables. This corrects the old “added in 1709” note, without claiming the
|
||||
first Windows build on which the API ever existed.
|
||||
|
||||
`CiGetCertPublisherName` is absent from **all six** sampled 1507–1803 export
|
||||
tables. The ISO follow-up also finds it absent in x64 `10.0.19041.1`, present
|
||||
in x64 `10.0.19041.1865` and `10.0.22000.318`, and the original investigation
|
||||
finds it present in `10.0.26100.8328`. This brackets Windows 10 servicing
|
||||
observations without identifying the first update adding the export. The
|
||||
CodeIntegrity-RE `iso-corpus-index.json` records the exact files and hashes.
|
||||
A header declaration,
|
||||
import-library symbol, or `NTDDI_VERSION >= NTDDI_WIN10` alone does not make an
|
||||
unconditional static import loadable on the older samples. Callers supporting
|
||||
those samples must avoid that import or use optional resolution with an
|
||||
explicit unavailable/fallback path. `CiSetTrustedOriginClaimId` likewise cannot
|
||||
be assumed available on every Windows 10 build; it is a CI-global setter.
|
||||
|
||||
## Exact sampled files
|
||||
|
||||
- Windows 10 1507: `10.0.10240.16463` x64, SHA-256
|
||||
`e83d900f4675c6e6ffc3fb7dcd3074610876a1398e495796769988df810fd3bc`.
|
||||
- Windows 10 1511: `10.0.10586.0` x64, SHA-256
|
||||
`f949bfa614addea6174b28c3818c56b327c9290fd41bd91dfc545414b3df6783`.
|
||||
- Windows 10 1607: `10.0.14393.2189` x64, SHA-256
|
||||
`ef0c02ecbd0818e84be9f61421f919825f96a3c59199460cab08548eee2881df`.
|
||||
- Windows 10 1703: `10.0.15063.0` x64, SHA-256
|
||||
`3705aaf408f05326e028621380aa5c96a1f3583a2de8a139b188da4b82577863`.
|
||||
- Windows 10 1709: `10.0.16299.125` x64, SHA-256
|
||||
`1db7ae5a08bd2361fc7fcdd373fb980e8d680035e67b02e5967095db0443effd`.
|
||||
- Windows 10 1803: `10.0.17134.1130` x64, SHA-256
|
||||
`8ce3b8fe38c23b699f30b045383640019a429d3a9d513285c655bffe03a796d9`.
|
||||
|
||||
Matching Microsoft public PDB GUIDs/ages were verified in
|
||||
`historical/ci-<build>-symbols.json` in CodeIntegrity-RE. Public names help map
|
||||
functions; they are not a full typed SDK. The default Domito declarations remain
|
||||
conservative. See [current contracts and limits](docs/mincrypt-contracts.md) and
|
||||
[implementation status](docs/implementation-status.md) for ABI and runtime work.
|
||||
Reference in new issue
Block a user