# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

scenario BridgeWithHalfAIA

entity Army
  type Root

entity Navy
  type Root

entity Bridge
  type Bridge
  issuer Army
  issuer Navy

entity CA1
  type Intermediate
  issuer Bridge
    aia Bridge

entity EE1
  type EE
  issuer CA1

entity CA2
  type Intermediate
  issuer Bridge
    aia Bridge:Navy

entity EE2
  type EE
  issuer CA2

testdb EE1

verify EE1:CA1
  cert CA1:Bridge
  trust Army:
  result fail

verify EE1:CA1
  cert CA1:Bridge
  trust Army:
  fetch
# should pass, bug 435314
# temporary result - test fails only with dbm cert db
  result dbm:fail all:pass

verify EE1:CA1
  cert CA1:Bridge
  trust Navy:
  fetch
  result pass

verify EE1:CA1
  cert CA1:Bridge
  cert Bridge:Army
  trust Navy:
  fetch
  result pass

verify EE2:CA2
  cert Bridge:Army
  trust Army:
  fetch
  result fail

verify EE2:CA2
  cert CA2:Bridge
  cert Bridge:Army
  trust Army:
  fetch
  result pass

verify EE2:CA2
  cert CA2:Bridge
  trust Navy:
  fetch
  result pass

verify EE2:CA2
  cert CA2:Bridge
  cert Bridge:Army
  trust Navy:
  fetch
  result pass

