protocoltest.c
上传用户:lyxiangda
上传日期:2007-01-12
资源大小:3042k
文件大小:8k
源码类别:

CA认证

开发平台:

WINDOWS

  1. /* 
  2.  * The contents of this file are subject to the Mozilla Public
  3.  * License Version 1.1 (the "License"); you may not use this file
  4.  * except in compliance with the License. You may obtain a copy of
  5.  * the License at http://www.mozilla.org/MPL/
  6.  * 
  7.  * Software distributed under the License is distributed on an "AS
  8.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  9.  * implied. See the License for the specific language governing
  10.  * rights and limitations under the License.
  11.  * 
  12.  * The Original Code is the Netscape security libraries.
  13.  * 
  14.  * The Initial Developer of the Original Code is Netscape
  15.  * Communications Corporation.  Portions created by Netscape are 
  16.  * Copyright (C) 1994-2000 Netscape Communications Corporation.  All
  17.  * Rights Reserved.
  18.  * 
  19.  * Contributor(s):
  20.  * 
  21.  * Alternatively, the contents of this file may be used under the
  22.  * terms of the GNU General Public License Version 2 or later (the
  23.  * "GPL"), in which case the provisions of the GPL are applicable 
  24.  * instead of those above.  If you wish to allow use of your 
  25.  * version of this file only under the terms of the GPL and not to
  26.  * allow others to use your version of this file under the MPL,
  27.  * indicate your decision by deleting the provisions above and
  28.  * replace them with the notice and other provisions required by
  29.  * the GPL.  If you do not delete the provisions above, a recipient
  30.  * may use your version of this file under either the MPL or the
  31.  * GPL.
  32.  */
  33. #include "protocolf.h"
  34. #include <stdio.h>
  35.   
  36.  
  37. int main() 
  38. {
  39.   void * blob, * recvd;
  40.   int blobSize;
  41.   SSMPRUint32 version, flags, port, connID, keySize, secretKeySize;
  42.   SSMPRUint32 sessionID, httpPort;
  43.   SSMPRInt32 result;
  44.   char *profile, * nonce, * hostIP, * hostName, * cipher, * CA;
  45.   SSMPRStatus rv;
  46.   
  47.   
  48.   /*
  49.    * Test functions to pack and parse HelloRequest message 
  50.    */
  51.   version = 3;
  52.   profile = (char *)SSMPORT_ZAlloc(strlen("profile"));
  53.   sprintf(profile, "profile");
  54.   printf("HelloRequest, packing version #%d, profile %sn", 
  55.  version, profile);
  56.   blobSize = SSM_PackHelloRequest(&blob, version, profile);
  57.   if (!blobSize)
  58.     printf("Error in PackHelloRequest: %dn", SSMPR_GetError());
  59.   SSMPORT_Free(profile);
  60.   version = 0;
  61.   recvd = (void *)SSMPORT_ZAlloc(blobSize);
  62.   if (!recvd) printf("Can't allocate %d bytes of memory!n", blobSize);
  63.   memcpy(recvd, blob, blobSize);
  64.   SSMPORT_Free(blob);
  65.   rv = SSM_ParseHelloRequest(recvd, &version, &profile);
  66.   if (rv != SSMPR_SUCCESS) 
  67.     printf("Error in ParseHelloRequest: %dn", SSMPR_GetError());
  68.   printf("HelloRequest, parsing version #%d, profile %sn", 
  69.  version, profile);
  70.   /* 
  71.    * Test functions to parse and pack HelloReply message
  72.    */
  73.   version = 5;
  74.   result = 2;
  75.   sessionID = 34567;
  76.   httpPort = 87654;
  77.   nonce = (char *)SSMPORT_ZAlloc(strlen("some secret nonce"));
  78.   sprintf(nonce, "some secret nonce");
  79.   printf("HelloReply, packing result %d, sessionID %d, version #%d, httpPort %d,n nonce %sn", 
  80.  result, sessionID, version, httpPort, nonce);
  81.   blobSize = SSM_PackHelloReply(&blob, result, sessionID, version, httpPort, 
  82. nonce);
  83.   if (!blobSize) 
  84.     printf("Error in PackHelloReply: %dn", SSMPR_GetError());
  85.   memset(nonce, 0, strlen(nonce));
  86.   SSMPORT_Free(nonce);
  87.   version = result = sessionID = httpPort = 0;
  88.   recvd = (void *)SSMPORT_ZAlloc(blobSize);
  89.   if (!recvd) printf("Can't allocate %d bytes of memory!n", blobSize);
  90.   memcpy(recvd, blob, blobSize);
  91.   SSMPORT_Free(blob);
  92.   rv = SSM_ParseHelloReply(recvd, &result, &sessionID, &version, &httpPort, 
  93.    &nonce);
  94.   if (rv != SSMPR_SUCCESS) 
  95.     printf("Error in ParseHelloReply: %dn", SSMPR_GetError());
  96.   printf("HelloReply, parsing result %d, sessionID %d, version #%d, httpPort %d, n nonce %sn", 
  97.  result, sessionID, version, httpPort, nonce);
  98.   
  99.   /*
  100.    * Test functions to parse and pack SSLDataConnectionRequest message
  101.    */
  102.   flags = 0x00044000;
  103.   port = 34567;
  104.   hostIP = (char *)SSMPORT_ZAlloc(strlen("somehostIP"));
  105.   sprintf(hostIP, "somehostIP");
  106.   hostName = (char *)SSMPORT_ZAlloc(strlen("somehostName"));
  107.   sprintf(hostName, "somehostName");
  108.   printf("SSLDataConnRequest, packing flags %x, port %d, hostIP %s, hostName %sn", 
  109.  flags, port, hostIP, hostName);
  110.   blobSize = SSM_PackSSLDataConnectionRequest(&blob, flags, port, hostIP, 
  111.   hostName);
  112.   if (!blobSize) 
  113.     printf("Error in PackSSLDataConnectionRequest: %dn", SSMPR_GetError());
  114.   SSMPORT_Free(hostIP);
  115.   SSMPORT_Free(hostName);
  116.   flags = port = 0;
  117.   
  118.   recvd = (void *)SSMPORT_ZAlloc(blobSize);
  119.   if (!recvd) printf("Can't allocate %d bytes of memory!n", blobSize);
  120.   memcpy(recvd, blob, blobSize);
  121.   SSMPORT_Free(blob);  
  122.   
  123.   rv = SSM_ParseSSLDataConnectionRequest(recvd, &flags, &port, &hostIP, 
  124.  &hostName);
  125.   if (rv != SSMPR_SUCCESS) 
  126.     printf("Error in ParseSSLDataConnectionRequest: %dn", SSMPR_GetError());
  127.   printf(
  128. "SSLDataConnRequest, parsing flags %x, port %d, hostIP %s, hostName %sn", 
  129.  flags, port, hostIP, hostName);
  130.   SSMPORT_Free(hostIP);
  131.   SSMPORT_Free(hostName);
  132.   
  133.   
  134.   /*
  135.    * Test functions to parse and pack SSLDataConnectionReply message 
  136.    */
  137.   result = 2;
  138.   connID = 713259;
  139.   port = 57402;
  140.   printf("SSLDataConnReply, packing result %d, connectionID %d, port %dn",
  141.  result, connID, port);
  142.   blobSize = SSM_PackSSLDataConnectionReply(&blob, result, connID, port);
  143.   if (!blobSize) 
  144.     printf("Error in PackSSLDataConnReply: %dn", SSMPR_GetError());
  145.   result = connID = port = 0;
  146.   recvd = (void *)SSMPORT_ZAlloc(blobSize);
  147.   if (!recvd) printf("Can't allocate %d bytes of memory!n", blobSize);
  148.   memcpy(recvd, blob, blobSize);
  149.   SSMPORT_Free(blob);
  150.   rv = SSM_ParseSSLDataConnectionReply(recvd, &result, &connID, &port);
  151.   if (rv != SSMPR_SUCCESS) 
  152.     printf("Error in ParseSSLDataConnectionReply: %dn", SSMPR_GetError());
  153.   printf("SSLDataConnReply, parsing result %d, connectionID %d, port %dn", 
  154.  result, connID, port);
  155.   
  156.   
  157.   /* 
  158.    * Test functions to parse and pack SecurityStatusRequest message
  159.    */
  160.   connID = 45375;
  161.   printf("SecurityStatusRequest, packing connection ID %dn", connID);
  162.   blobSize = SSM_PackSecurityStatusRequest(&blob, connID);
  163.   if (!blobSize)  
  164.     printf("Error in PackSecurityStatusRequest: %dn", SSMPR_GetError());
  165.   connID = 0;
  166.   recvd = (void *)SSMPORT_ZAlloc(blobSize);
  167.   if (!recvd) printf("Can't allocate %d bytes of memory!n", blobSize);
  168.   memcpy(recvd, blob, blobSize);
  169.   SSMPORT_Free(blob);
  170.   rv = SSM_ParseSecurityStatusRequest(recvd, &connID);
  171.   if (rv != SSMPR_SUCCESS) 
  172.     printf("Error in ParseSecurityStatusRequest: %dn", SSMPR_GetError());
  173.   printf("SecurityStatusRequest, parsing connection ID %dn", connID);
  174.   
  175.   /* 
  176.    * Test functions to parse and pack SecurityStatusReply message 
  177.    */
  178.   result = 2;
  179.   keySize = 256;
  180.   secretKeySize = 511;
  181.   cipher = (char *)SSMPORT_ZAlloc(strlen("My Cipher"));
  182.   sprintf(cipher, "My Cipher");
  183.   CA = (char *)SSMPORT_ZAlloc(strlen("My CA issuer"));
  184.   sprintf(CA, "My CA issuer");
  185.   printf("SecurityStatusReply, packing result %d, keysize %d, secretKeySize %d, cipher %s, CA %sn", result, keySize, secretKeySize, cipher, CA);
  186.   blobSize = SSM_PackSecurityStatusReply(&blob, result, keySize, secretKeySize, cipher, CA);
  187.   if (!blobSize) 
  188.     printf("Error in PackSecurityStatusReply: %dn", SSMPR_GetError());
  189.   result = keySize = secretKeySize = 0;
  190.   SSMPORT_Free(cipher);
  191.   SSMPORT_Free(CA);
  192.   recvd = (void *)SSMPORT_ZAlloc(blobSize);
  193.   if (!recvd) printf("Can't allocate %d bytes of memory!n", blobSize);
  194.   memcpy(recvd, blob, blobSize);
  195.   SSMPORT_Free(blob);
  196.   rv = SSM_ParseSecurityStatusReply(recvd, &result, &keySize, &secretKeySize, 
  197.     &cipher, &CA);
  198.   if (rv != SSMPR_SUCCESS) 
  199.     printf("Error in ParseSecurityStatusReply: %dn", SSMPR_GetError());
  200.   printf("SecurityStatusReply, parsing result %d, keysize %d, secretKeySize %d, cipher %s, CA %sn", result, keySize, secretKeySize, cipher, CA);
  201. }