/**
  * @param Container $pimple A container instance
  */
 public function register(Container $pimple)
 {
     $pimple[ServiceContainer::NAME_ID_VALIDATOR] = function () {
         return new NameIdValidator();
     };
     $pimple[ServiceContainer::ASSERTION_TIME_VALIDATOR] = function () {
         return new AssertionTimeValidator();
     };
     $pimple[ServiceContainer::ASSERTION_VALIDATOR] = function (Container $c) {
         $nameIdValidator = $c[ServiceContainer::NAME_ID_VALIDATOR];
         return new AssertionValidator($nameIdValidator, new SubjectValidator($nameIdValidator), new StatementValidator());
     };
     $pimple[ServiceContainer::ENDPOINT_RESOLVER] = function () {
         return new CompositeEndpointResolver(array(new BindingEndpointResolver(), new DescriptorTypeEndpointResolver(), new ServiceTypeEndpointResolver(), new IndexEndpointResolver(), new LocationEndpointResolver()));
     };
     $pimple[ServiceContainer::BINDING_FACTORY] = function () {
         return new BindingFactory($this->systemContainer->getEventDispatcher());
     };
     $pimple[ServiceContainer::CREDENTIAL_RESOLVER] = function () {
         $factory = new CredentialResolverFactory($this->credentialContainer->getCredentialStore());
         return $factory->build();
     };
     $pimple[ServiceContainer::SIGNATURE_RESOLVER] = function (Container $c) {
         $credentialResolver = $c[ServiceContainer::CREDENTIAL_RESOLVER];
         return new OwnSignatureResolver($credentialResolver);
     };
     $pimple[ServiceContainer::SIGNATURE_VALIDATOR] = function (Container $c) {
         $credentialResolver = $c[ServiceContainer::CREDENTIAL_RESOLVER];
         return new SignatureValidator($credentialResolver);
     };
     $pimple[ServiceContainer::LOGOUT_SESSION_RESOLVER] = function () {
         return new LogoutSessionResolver($this->storeContainer->getSsoStateStore());
     };
     $pimple[ServiceContainer::SESSION_PROCESSOR] = function () {
         return new SessionProcessor($this->storeContainer->getSsoStateStore(), $this->systemContainer->getTimeProvider());
     };
 }
 /**
  * @return \LightSaml\Resolver\Credential\CredentialResolverInterface
  */
 private function getResolver()
 {
     $provider = new FixedEntityDescriptorStore();
     $provider->add(EntityDescriptor::load(__DIR__ . '/../../../../../../resources/sample/EntityDescriptor/idp2-ed.xml'));
     $provider->add(EntityDescriptor::load(__DIR__ . '/../../../../../../resources/sample/EntityDescriptor/idp-ed.xml'));
     $provider->add(EntityDescriptor::load(__DIR__ . '/../../../../../../resources/sample/EntityDescriptor/ed01-formatted-certificate.xml'));
     $provider->add(EntityDescriptor::load(__DIR__ . '/../../../../../../resources/sample/EntityDescriptor/sp-ed2.xml'));
     $metadataStore = new MetadataCredentialStore($provider);
     $certificate = new X509Certificate();
     $certificate->loadFromFile(__DIR__ . '/../../../../../../resources/sample/Certificate/saml.crt');
     $credential = new X509Credential($certificate, KeyHelper::createPrivateKey(__DIR__ . '/../../../../../../resources/sample/Certificate/saml.pem', '', true));
     $credential->setUsageType(UsageType::ENCRYPTION)->setEntityId('https://mt.evo.loc/sp');
     $staticStore = new StaticCredentialStore();
     $staticStore->add($credential);
     $compositeStore = new CompositeCredentialStore();
     $compositeStore->add($metadataStore)->add($staticStore);
     $resolverFactory = new CredentialResolverFactory($compositeStore);
     $resolver = $resolverFactory->build();
     return $resolver;
 }