Извлеките закрытый ключ и сертификат из файла kpcs7 (.p7b)

У меня есть P7B-файл. Как извлечь ключ и сертификат? Я попробовал openssl, но я не в состоянии получить точную команду/параметры.

Спасибо!

-121--1440180- Как сделать перечисление в xml У меня есть несколько типов запросов - которые действительно являются перечислениями. Но в моем коде эти типы запросов являются перечислением: enum RequestType {RequestRegister, RequestUnregister и т.д. }; Моя нынешняя попытка...

У меня есть несколько типов запросов - которые действительно являются перечислениями.

Но в моем коде эти типы запросов являются перечислением:

enum RequestType {
  RequestRegister,
  RequestUnregister,
  etc
};

Ниже приведена моя текущая попытка создания файла wsdl. Но он использует строковый тип. На сервере мне нужно извлечь перечисление/int из xml. Поиск в строке выглядит как неправильный дизайн.

Как создать файл wsdl, чтобы типы запросов были перечислениями?

<?xml version="1.0" encoding="UTF-8"?>
<definitions name="CubaCTI"
targetNamespace="http://www.iteloffice.com/wsdl/cubacti.wsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.iteloffice.com/wsdl/cubacti.wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<message name="MonitorStartRequest">
 <part name="user_name" type="xsd:string" />
 <part name="password" type="xsd:string" />
 <part name="dn" type="xsd:string"/>
</message>
<message name="MonitorStartResponse">
 <part name="errorcode" type="xsd:short"/>
 <part name="errormessage" type="xsd:string"/>
</message>

<message name="MonitorStopRequest">
 <part name="user_name" type="xsd:string" />
 <part name="password" type="xsd:string" />
 <part name="dn" type="xsd:string"/>
</message>
<message name="MonitorStopResponse">
 <part name="errorcode" type="xsd:short"/>
 <part name="errormessage" type="xsd:string"/>
</message>

<message name="MakeCallRequest">
 <part name="user_name" type="xsd:string" />
 <part name="password" type="xsd:string" />
 <part name="dn" type="xsd:string"/>
 <part name="destination" type="xsd:string"/>
 <part name="userdata" type="xsd:string"/>
</message>
<message name="MakeCallResponse">
 <part name="errorcode" type="xsd:short"/>
 <part name="errormessage" type="xsd:string"/>
</message>

<message name="ClearConnectionRequest">
 <part name="user_name" type="xsd:string" />
 <part name="password" type="xsd:string" />
 <part name="dn" type="xsd:string"/>
 <part name="destinationconnectionid" type="xsd:string"/>
</message>
<message name="ClearConnectionResponse">
 <part name="errorcode" type="xsd:short"/>
 <part name="errormessage" type="xsd:string"/>
</message>

<portType name="CubaCTIRequests">
  <operation name="MonitorStart">
     <input message="tns:MonitorStartRequest"/>
     <output message="tns:MonitorStartResponse"/>
  </operation>
  <operation name="MonitorStop">
     <input message="tns:MonitorStopRequest"/>
     <output message="tns:MonitorStopResponse"/>
  </operation>
  <operation name="MakeCall">
     <input message="tns:MakeCallRequest"/>
     <output message="tns:MakeCallResponse"/>
  </operation>
  <operation name="ClearConnection">
     <input message="tns:ClearConnectionRequest"/>
     <output message="tns:ClearConnectionResponse"/>
  </operation>

</portType>

<binding type="tns:CubaCTIRequests" name="cubactibinding">
 <soap:binding style="document"
       transport="http://schemas.xmlsoap.org/soap/http" />

 <operation name="MonitorStart">
   <soap:operation soapAction="MonitorStart"/>
   <input>
      <soap:body use="literal"/>
   </input>
   <output>
      <soap:body use="literal"/>
   </output>
 </operation>

 <operation name="MonitorStop">
   <soap:operation soapAction="MonitorStop"/>
   <input>
      <soap:body
           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
           namespace="http://www.iteloffice.com/cubctirequests"
           use="encoded"/>
   </input>
   <output>
      <soap:body
           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
           namespace="http://www.iteloffice.com/cubctirequests"
           use="literal"/>
   </output>
 </operation>

 <operation name="MakeCall">
   <soap:operation soapAction="MakeCall"/>
   <input>
      <soap:body use="literal"/>
   </input>
   <output>
      <soap:body use="literal"/>
   </output>
 </operation>

 <operation name="ClearConnection">
   <soap:operation soapAction="ClearConnection"/>
   <input>
      <soap:body use="literal"/>
   </input>
   <output>
      <soap:body use="literal"/>
   </output>
 </operation>


</binding>


<service name="CubaCTI_Service">
  <documentation>WSDL File for Cuba CTI services</documentation>
   <port binding="tns:cubactibinding" name="CubaCTIRequestsBinding">
     <soap:address 
        location="http://angusnotebook:8080"/>
   </port>
 </service>
</definitions>

Дополнительное примечание.

Я "вынужден" использовать xml, поскольку клиент может отправлять только xml-сообщения (нет контроля над этим). Но я составляю xml, который использует клиент. Сервер, которым я управляю, записывается на языке C++, и я использую libxml для извлечения "частей" xml-файла. В идеале элемент должен быть int или enum. Потому что я хочу сделать это:

//извлечь элемент из xml - в перечисление или int RequestType rqtype = getRequestType ();

switch(rqtype) {
 case RequestMakeCall:
  //do whatever 

В приведенном выше случае RequestType является перечислением. Невыгодно извлекать строковое значение, а затем выполнять поиск связанного значения перечисления.

Во всех примерах перечислений используются строки, что кажется странным.

5
задан Angus Comber 10 September 2011 в 11:01
поделиться