示例#1
0
void
MDBImageManager::setCriteria(const MPlacerOrder& order, MCriteriaVector& cv)
{
  MCriteria c;
  
  MString patientID(order.patientID());

  if (patientID.size())
  {
    c.attribute = "patid";
    c.oper      = TBL_EQUAL;
    c.value     = order.patientID();
    cv.push_back(c);
  }

#if 0
  MString issuer(order.issuerOfPatientID());

  if (issuer.size())
  {
    c.attribute = "issuer";
    c.oper      = TBL_EQUAL;
    c.value     = order.issuerOfPatientID();
    cv.push_back(c);
  }
#endif

  c.attribute = "plaordnum";
  c.oper      = TBL_EQUAL;
  c.value     = order.placerOrderNumber();
  cv.push_back(c);

}
XERCES_CPP_NAMESPACE::DOMDocument* spep::StartupProcessorImpl::buildRequest( const std::wstring &samlID )
{
	_localLogger.debug() << "Going to build SPEP startup request.";
	
	saml2::assertion::NameIDType issuer( this->_spepIdentifier );
	
	middleware::ESOEProtocolSchema::ValidateInitializationRequestType validateInitializationRequest;
	validateInitializationRequest.ID( samlID );
	validateInitializationRequest.Version( saml2::versions::SAML_20 );
	validateInitializationRequest.IssueInstant( xml_schema::date_time() );
	validateInitializationRequest.Issuer( issuer );
	validateInitializationRequest.nodeId( UnicodeStringConversion::toWString( boost::lexical_cast<std::string>( this->_nodeID ) ) );
	validateInitializationRequest.authzCacheIndex( this->_authzCacheIndex );
	
	validateInitializationRequest.compileDate( UnicodeStringConversion::toWString( std::string(__DATE__) ) );
	validateInitializationRequest.compileSystem( UnicodeStringConversion::toWString( std::string( COMPILE_SYSTEM ) ) );
	validateInitializationRequest.sw_version( UnicodeStringConversion::toWString( COMPILE_VERSION ) );
	validateInitializationRequest.environment( ENVIRONMENT );
	for( std::vector<std::wstring>::iterator iter = this->_ipAddresses.begin(); iter != this->_ipAddresses.end(); ++iter )
	{
		validateInitializationRequest.ipAddress().push_back( *iter );
	}
	
	std::vector<std::string> idList;
	idList.push_back( UnicodeStringConversion::toString(samlID) );
	
	DOMDocument *requestDocument = this->_validateInitializationRequestMarshaller->generateDOMDocument( &validateInitializationRequest );
	requestDocument = this->_validateInitializationRequestMarshaller->validate( requestDocument );
	this->_validateInitializationRequestMarshaller->sign( requestDocument, idList );
	
	return requestDocument;
}
示例#3
0
void
MDBImageManager::setCriteria(const MVisit& visit, MCriteriaVector& cv)
{
  MCriteria c;
  
  c.attribute = "patid";
  c.oper      = TBL_EQUAL;
  c.value     = visit.patientID();
  cv.push_back(c);

#if 0
  MString issuer(visit.issuerOfPatientID());

  if (issuer.size())
  {
    c.attribute = "issuer";
    c.oper      = TBL_EQUAL;
    c.value     = visit.issuerOfPatientID();
    cv.push_back(c);
  }
#endif

  c.attribute = "visnum";
  c.oper      = TBL_EQUAL;
  c.value     = visit.visitNumber();
  cv.push_back(c);
}
示例#4
0
QVariant Certificate::detailResult(Certificate::Details detail) const
{
   switch(detail) {
      case Details::EXPIRATION_DATE                : return expirationDate                ();
      case Details::ACTIVATION_DATE                : return activationDate                ();
      case Details::REQUIRE_PRIVATE_KEY_PASSWORD   : return requirePrivateKeyPassword     ();
      case Details::PUBLIC_SIGNATURE               : return publicSignature               ();
      case Details::VERSION_NUMBER                 : return versionNumber                 ();
      case Details::SERIAL_NUMBER                  : return serialNumber                  ();
      case Details::ISSUER                         : return issuer                        ();
      case Details::SUBJECT_KEY_ALGORITHM          : return subjectKeyAlgorithm           ();
      case Details::CN                             : return cn                            ();
      case Details::N                              : return n                             ();
      case Details::O                              : return o                             ();
      case Details::SIGNATURE_ALGORITHM            : return signatureAlgorithm            ();
      case Details::MD5_FINGERPRINT                : return md5Fingerprint                ();
      case Details::SHA1_FINGERPRINT               : return sha1Fingerprint               ();
      case Details::PUBLIC_KEY_ID                  : return publicKeyId                   ();
      case Details::ISSUER_DN                      : return issuerDn                      ();
      case Details::NEXT_EXPECTED_UPDATE_DATE      : return nextExpectedUpdateDate        ();
      case Details::OUTGOING_SERVER                : return outgoingServer                ();

      case Details::COUNT__:
         Q_ASSERT(false);
   };
   return QVariant();
}
示例#5
0
void UserTrustItem::makeCertIndex(Certificate *cert, CssmOwnedData &encodedIndex)
{
	CertField issuer(cert, CSSMOID_X509V1IssuerName);
	CertField serial(cert, CSSMOID_X509V1SerialNumber);
	IssuerAndSN index;
	index.issuer = issuer.data();
	index.serial = serial.data();
	if (SecNssEncodeItemOdata(&index, issuerAndSNTemplate, encodedIndex))
		CssmError::throwMe(CSSMERR_CSP_MEMORY_ERROR);
}
示例#6
0
void
MDBImageManager::setCriteria(const MFillerOrder& order, MCriteriaVector& cv)
{
  MCriteria c;
  
  MString patientID(order.patientID());

  if (patientID.size())
  {
    c.attribute = "patid";
    c.oper      = TBL_EQUAL;
    c.value     = order.patientID();
    cv.push_back(c);
  }

#if 0
  MString issuer(order.issuerOfPatientID());

  if (issuer.size())
  {
    c.attribute = "issuer";
    c.oper      = TBL_EQUAL;
    c.value     = order.issuerOfPatientID();
    cv.push_back(c);
  }
#endif

  MString poNum(order.placerOrderNumber());

  if (poNum.size())
  {
    c.attribute = "plaordnum";
    c.oper      = TBL_EQUAL;
    c.value     = order.placerOrderNumber();
    cv.push_back(c);
  }

  c.attribute = "filordnum";
  c.oper      = TBL_EQUAL;
  c.value     = order.fillerOrderNumber();
  cv.push_back(c);

//  may include accession number also
/*
  MString accNum(order.accessionNumber());

  if (accNum.size())
  {
    c.attribute = "accnum";
    c.oper      = TBL_EQUAL;
    c.value     = order.accessionNumber();
    cv.push_back(c);
  }  */
}
XERCES_CPP_NAMESPACE::DOMDocument* spep::AttributeProcessor::buildAttributeQuery( spep::PrincipalSession &principalSession, const std::wstring &samlID )
{
	std::vector<std::string> identifierList;
	
	// Subject is ESOE session identifier.
	saml2::assertion::SubjectType subject;
	saml2::assertion::NameIDType subjectNameID( principalSession.getESOESessionID() );
	subject.NameID( subjectNameID );
	
	// Set the issuer to be "this" SPEP
	saml2::assertion::NameIDType issuer( this->_metadata->getSPEPIdentifier() );
	
	saml2::protocol::AttributeQueryType attributeQuery;
	// Use the ID given to us, because that's what will be expected in the InReponseTo field of the response.
	attributeQuery.ID( samlID );
	identifierList.push_back( UnicodeStringConversion::toString( samlID ) );
	attributeQuery.Version( saml2::versions::SAML_20 );
	// Set to the current time.
	attributeQuery.IssueInstant( xml_schema::date_time() );
	attributeQuery.Subject( subject );
	attributeQuery.Issuer( issuer );
	
	try
	{
		std::string samlIDString( UnicodeStringConversion::toString( samlID ) );
		_localLogger.debug() << "Marshalling attribute query document with SAML ID: " << samlIDString;
		
		// Marshal the request.
		DOMDocument *requestDocument = this->_attributeQueryMarshaller->generateDOMDocument( &attributeQuery );
		requestDocument = this->_attributeQueryMarshaller->validate( requestDocument );
		this->_attributeQueryMarshaller->sign( requestDocument, identifierList );
		
		_localLogger.debug() << "Marshalled attribute query document successfully. SAML ID: " << samlIDString;
		
		return requestDocument;
	}
	catch ( saml2::MarshallerException &ex )
	{
		_localLogger.error() << "Failed to marshal attribute query document. Exception was: " << ex.getMessage() << ". Cause was: " << ex.getCause();
		throw AttributeException( "Unable to marshal attribute query document." );
	}
}
      void go() override
         {
         Botan::X509_Certificate subject(get_arg("subject"));
         Botan::X509_Certificate issuer(get_arg("issuer"));
         std::chrono::milliseconds timeout(get_arg_sz("timeout"));

         Botan::Certificate_Store_In_Memory cas;
         cas.add_certificate(issuer);
         Botan::OCSP::Response resp = Botan::OCSP::online_check(issuer, subject, &cas, timeout);

         auto status = resp.status_for(issuer, subject, std::chrono::system_clock::now());

         if(status == Botan::Certificate_Status_Code::OCSP_RESPONSE_GOOD)
            {
            output() << "OCSP check OK\n";
            }
         else
            {
            output() << "OCSP check failed " << Botan::Path_Validation_Result::status_string(status) << "\n";
            }
         }
示例#9
0
void
MDBImageManager::setCriteria(const MPatient& patient, MCriteriaVector& cv)
{
  MCriteria c;
  
  c.attribute = "patid";
  c.oper      = TBL_EQUAL;
  c.value     = patient.patientID();
  cv.push_back(c);

#if 0
  MString issuer(patient.issuerOfPatientID());

  if (issuer.size())
  {
    c.attribute = "issuer";
    c.oper      = TBL_EQUAL;
    c.value     = patient.issuerOfPatientID();
    cv.push_back(c);
  }
#endif
}
// -----------------------------------------------------------------------------
// CSTSCredentialManager::AddCredentialL
// Adds a certificate or certificate URI to certificate store
// -----------------------------------------------------------------------------
//
TBool CSTSCredentialManager::AddCredentialL(
    TInt/*const TDesC&*/ aCertDisplayName,
    TInt/*const TDesC&*/ aPkiPath)
{

    if (iState != EReady)
    {
        User::Leave(KErrNotReady);
    }

    iWritableCertStoreIndex = CheckWriteCertStoreSEIDL(NULL, NULL);

    const TDesC8* path = reinterpret_cast< const TDesC8* >(aPkiPath);

    TASN1DecGeneric genericDecoder(*path);

    genericDecoder.InitL();

    TPtrC8 certificates = genericDecoder.GetContentDER();

    TInt certificatesLength = certificates.Length();
    TInt pos = 0;

    iSubject.Set(certificates.Right(certificatesLength));

    TPtrC8 issuer(iSubject);

    // go through the certificate chain, leaving the last certificate as subject
    // and second last as issuer
    while (pos < certificatesLength)
    {
        issuer.Set(iSubject);
        TASN1DecGeneric
        certDecoder(certificates.Right(certificatesLength - pos));
        certDecoder.InitL();
        TInt certLength = certDecoder.LengthDER();

        TPtrC8 singleCert(certificates.Mid(pos, certLength));
        iSubject.Set(singleCert);
        pos+=certLength;
    }

    CX509Certificate* cert =
        CX509Certificate::NewLC(iSubject);

    CX509Certificate* issuerCert =
        CX509Certificate::NewLC(issuer);

    iSubjectKeyId = cert->KeyIdentifierL();
    iIssuerKeyId = issuerCert->KeyIdentifierL();

    iCertDisplayName = reinterpret_cast<TDesC*>(aCertDisplayName);

    // now we have to check that this certificate does not exist in the
    // database yet
    CCertAttributeFilter* filter = CCertAttributeFilter::NewLC();
    filter->SetFormat(EX509Certificate);
    filter->SetSubjectKeyId(iSubjectKeyId);
    filter->SetIssuerKeyId(iIssuerKeyId);

    RMPointerArray< CCTCertInfo >* certInfoArray =
        new(ELeave) RMPointerArray< CCTCertInfo >();
    if (iCertInfoArray)
    {
        iCertInfoArray->Close();
        delete iCertInfoArray;
    }
    iCertInfoArray = certInfoArray;

    iState = EAddListing;
    iStore->WritableCertStore(iWritableCertStoreIndex)
    .List(*iCertInfoArray, *filter,
          iStatus);
    WaitForCompletionL();

    CleanupStack::PopAndDestroy(3); // filter, cert, issuerCert

    iCertInfoArray->Close();
    delete iCertInfoArray;
    iCertInfoArray = NULL;


    return ETrue;
}