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

entity Root
  type Root

entity CA1
  type Intermediate
  issuer Root 

entity NoKU
  type EE
  issuer CA1

entity DigSig
  type EE
  issuer CA1
    ku digitalSignature

entity NonRep
  type EE
  issuer CA1
    ku nonRepudiation

entity DigSigNonRepAndExtra
  type EE
  issuer CA1
    ku digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment,keyAgreement

entity NoMatch
  type EE
  issuer CA1
    ku keyEncipherment,dataEncipherment,keyAgreement

db All

import Root::C,,
import CA1:Root:

verify NoKU:CA1
  usage 12
  result pass

verify DigSig:CA1
  usage 12
  result pass

verify NonRep:CA1
  usage 12
  result pass

verify DigSigNonRepAndExtra:CA1
  usage 12
  result pass

verify NoMatch:CA1
  usage 12
  result fail
