# 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 Extension

entity Root
  type Root

entity CA1
  type Intermediate
  issuer Root 
    policy OID.1.0

entity CA2
  type Intermediate
  issuer CA1
    policy OID.1.0

entity User
  type EE
  issuer CA2
    policy OID.1.0

db All

verify User:CA2
  cert CA2:CA1
  cert CA1:Root
  cert Root:
  trust Root:
  policy OID.1.0
  result pass

verify User:CA2
  cert CA2:CA1
  cert CA1:Root
  cert Root:
  trust Root:
  policy OID.2.0
  result fail

verify User:CA2
  cert CA2:CA1
  cert CA1:Root
  trust CA1:Root
  policy OID.1.0
  result pass

verify User:CA2
  cert CA2:CA1
  cert CA1:Root
  trust CA1:Root
  policy OID.2.0
  result fail

verify User:CA2
  cert CA2:CA1
  trust CA2:CA1
  policy OID.1.0
  result pass

verify User:CA2
  cert CA2:CA1
  trust CA2:CA1
  policy OID.2.0
  result fail

import Root::
import CA1:Root:
import CA2:CA1:

verify User:CA2
  trust Root
  policy OID.1.0
  result pass

verify User:CA2
  trust Root
  policy OID.2.0
  result fail

verify User:CA2
  trust CA1
  policy OID.1.0
  result pass

verify User:CA2
  trust CA1
  policy OID.2.0
  result fail

verify User:CA2
  trust CA2
  policy OID.1.0
  result pass

verify User:CA2
  trust CA2
  policy OID.2.0
  result fail

