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

entity Root
  type Root

entity nonEVCA
  type Intermediate
  issuer Root 

entity EVCA
  type Intermediate
  issuer Root 
    policy OID.1.0

entity otherEVCA
  type Intermediate
  issuer Root 
    policy OID.2.0

entity validEV
  type EE
  issuer EVCA
    policy OID.1.0

entity invalidEV
  type EE
  issuer nonEVCA
    policy OID.1.0

entity wrongEVOID
  type EE
  issuer otherEVCA
    policy OID.1.0

db All

verify validEV:EVCA
  cert EVCA:Root
  cert Root:
  trust Root:
  policy OID.1.0
  result pass

verify invalidEV:nonEVCA
  cert nonEVCA:Root
  cert Root:
  trust Root:
  policy OID.1.0
  result fail

verify wrongEVOID:otherEVCA
  cert otherEVCA:Root
  cert Root:
  trust Root:
  policy OID.1.0
  result fail

import Root::C,C,C

verify validEV:EVCA
  cert EVCA:Root
  policy OID.1.0
  result pass

verify invalidEV:nonEVCA
  cert nonEVCA:Root
  policy OID.1.0
  result fail

verify wrongEVOID:otherEVCA
  cert otherEVCA:Root
  policy OID.1.0
  result fail

