⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 protocoltest.c

📁 安全开发库。含客户端建立ssl连接、签名、证书验证、证书发布和撤销等。编译用到nss
💻 C
字号:
/*  * The contents of this file are subject to the Mozilla Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/MPL/ *  * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. *  * The Original Code is the Netscape security libraries. *  * The Initial Developer of the Original Code is Netscape * Communications Corporation.  Portions created by Netscape are  * Copyright (C) 1994-2000 Netscape Communications Corporation.  All * Rights Reserved. *  * Contributor(s): *  * Alternatively, the contents of this file may be used under the * terms of the GNU General Public License Version 2 or later (the * "GPL"), in which case the provisions of the GPL are applicable  * instead of those above.  If you wish to allow use of your  * version of this file only under the terms of the GPL and not to * allow others to use your version of this file under the MPL, * indicate your decision by deleting the provisions above and * replace them with the notice and other provisions required by * the GPL.  If you do not delete the provisions above, a recipient * may use your version of this file under either the MPL or the * GPL. */#include "protocolf.h"#include <stdio.h>   int main() {  void * blob, * recvd;  int blobSize;  SSMPRUint32 version, flags, port, connID, keySize, secretKeySize;  SSMPRUint32 sessionID, httpPort;  SSMPRInt32 result;  char *profile, * nonce, * hostIP, * hostName, * cipher, * CA;  SSMPRStatus rv;      /*   * Test functions to pack and parse HelloRequest message    */  version = 3;  profile = (char *)SSMPORT_ZAlloc(strlen("profile"));  sprintf(profile, "profile");  printf("HelloRequest, packing version #%d, profile %s\n", 	 version, profile);  blobSize = SSM_PackHelloRequest(&blob, version, profile);  if (!blobSize)    printf("Error in PackHelloRequest: %d\n", SSMPR_GetError());  SSMPORT_Free(profile);  version = 0;  recvd = (void *)SSMPORT_ZAlloc(blobSize);  if (!recvd) printf("Can't allocate %d bytes of memory!\n", blobSize);  memcpy(recvd, blob, blobSize);  SSMPORT_Free(blob);  rv = SSM_ParseHelloRequest(recvd, &version, &profile);  if (rv != SSMPR_SUCCESS)     printf("Error in ParseHelloRequest: %d\n", SSMPR_GetError());  printf("HelloRequest, parsing version #%d, profile %s\n", 	 version, profile);  /*    * Test functions to parse and pack HelloReply message   */  version = 5;  result = 2;  sessionID = 34567;  httpPort = 87654;  nonce = (char *)SSMPORT_ZAlloc(strlen("some secret nonce"));  sprintf(nonce, "some secret nonce");  printf("HelloReply, packing result %d, sessionID %d, version #%d, httpPort %d,\n nonce %s\n", 	 result, sessionID, version, httpPort, nonce);  blobSize = SSM_PackHelloReply(&blob, result, sessionID, version, httpPort, 				nonce);  if (!blobSize)     printf("Error in PackHelloReply: %d\n", SSMPR_GetError());  memset(nonce, 0, strlen(nonce));  SSMPORT_Free(nonce);  version = result = sessionID = httpPort = 0;  recvd = (void *)SSMPORT_ZAlloc(blobSize);  if (!recvd) printf("Can't allocate %d bytes of memory!\n", blobSize);  memcpy(recvd, blob, blobSize);  SSMPORT_Free(blob);  rv = SSM_ParseHelloReply(recvd, &result, &sessionID, &version, &httpPort, 			   &nonce);  if (rv != SSMPR_SUCCESS)     printf("Error in ParseHelloReply: %d\n", SSMPR_GetError());  printf("HelloReply, parsing result %d, sessionID %d, version #%d, httpPort %d, \n nonce %s\n", 	 result, sessionID, version, httpPort, nonce);    /*   * Test functions to parse and pack SSLDataConnectionRequest message   */  flags = 0x00044000;  port = 34567;  hostIP = (char *)SSMPORT_ZAlloc(strlen("somehostIP"));  sprintf(hostIP, "somehostIP");  hostName = (char *)SSMPORT_ZAlloc(strlen("somehostName"));  sprintf(hostName, "somehostName");  printf("SSLDataConnRequest, packing flags %x, port %d, hostIP %s, hostName %s\n", 	 flags, port, hostIP, hostName);  blobSize = SSM_PackSSLDataConnectionRequest(&blob, flags, port, hostIP, 					  hostName);  if (!blobSize)     printf("Error in PackSSLDataConnectionRequest: %d\n", SSMPR_GetError());  SSMPORT_Free(hostIP);  SSMPORT_Free(hostName);  flags = port = 0;    recvd = (void *)SSMPORT_ZAlloc(blobSize);  if (!recvd) printf("Can't allocate %d bytes of memory!\n", blobSize);  memcpy(recvd, blob, blobSize);  SSMPORT_Free(blob);      rv = SSM_ParseSSLDataConnectionRequest(recvd, &flags, &port, &hostIP, 					 &hostName);  if (rv != SSMPR_SUCCESS)     printf("Error in ParseSSLDataConnectionRequest: %d\n", SSMPR_GetError());  printf("SSLDataConnRequest, parsing flags %x, port %d, hostIP %s, hostName %s\n", 	 flags, port, hostIP, hostName);  SSMPORT_Free(hostIP);  SSMPORT_Free(hostName);      /*   * Test functions to parse and pack SSLDataConnectionReply message    */  result = 2;  connID = 713259;  port = 57402;  printf("SSLDataConnReply, packing result %d, connectionID %d, port %d\n",	 result, connID, port);  blobSize = SSM_PackSSLDataConnectionReply(&blob, result, connID, port);  if (!blobSize)     printf("Error in PackSSLDataConnReply: %d\n", SSMPR_GetError());  result = connID = port = 0;  recvd = (void *)SSMPORT_ZAlloc(blobSize);  if (!recvd) printf("Can't allocate %d bytes of memory!\n", blobSize);  memcpy(recvd, blob, blobSize);  SSMPORT_Free(blob);  rv = SSM_ParseSSLDataConnectionReply(recvd, &result, &connID, &port);  if (rv != SSMPR_SUCCESS)     printf("Error in ParseSSLDataConnectionReply: %d\n", SSMPR_GetError());  printf("SSLDataConnReply, parsing result %d, connectionID %d, port %d\n", 	 result, connID, port);      /*    * Test functions to parse and pack SecurityStatusRequest message   */  connID = 45375;  printf("SecurityStatusRequest, packing connection ID %d\n", connID);  blobSize = SSM_PackSecurityStatusRequest(&blob, connID);  if (!blobSize)      printf("Error in PackSecurityStatusRequest: %d\n", SSMPR_GetError());  connID = 0;  recvd = (void *)SSMPORT_ZAlloc(blobSize);  if (!recvd) printf("Can't allocate %d bytes of memory!\n", blobSize);  memcpy(recvd, blob, blobSize);  SSMPORT_Free(blob);  rv = SSM_ParseSecurityStatusRequest(recvd, &connID);  if (rv != SSMPR_SUCCESS)     printf("Error in ParseSecurityStatusRequest: %d\n", SSMPR_GetError());  printf("SecurityStatusRequest, parsing connection ID %d\n", connID);    /*    * Test functions to parse and pack SecurityStatusReply message    */  result = 2;  keySize = 256;  secretKeySize = 511;  cipher = (char *)SSMPORT_ZAlloc(strlen("My Cipher"));  sprintf(cipher, "My Cipher");  CA = (char *)SSMPORT_ZAlloc(strlen("My CA issuer"));  sprintf(CA, "My CA issuer");  printf("SecurityStatusReply, packing result %d, keysize %d, secretKeySize %d, cipher %s, CA %s\n", result, keySize, secretKeySize, cipher, CA);  blobSize = SSM_PackSecurityStatusReply(&blob, result, keySize, secretKeySize, cipher, CA);  if (!blobSize)     printf("Error in PackSecurityStatusReply: %d\n", SSMPR_GetError());  result = keySize = secretKeySize = 0;  SSMPORT_Free(cipher);  SSMPORT_Free(CA);  recvd = (void *)SSMPORT_ZAlloc(blobSize);  if (!recvd) printf("Can't allocate %d bytes of memory!\n", blobSize);  memcpy(recvd, blob, blobSize);  SSMPORT_Free(blob);  rv = SSM_ParseSecurityStatusReply(recvd, &result, &keySize, &secretKeySize, 				    &cipher, &CA);  if (rv != SSMPR_SUCCESS)     printf("Error in ParseSecurityStatusReply: %d\n", SSMPR_GetError());  printf("SecurityStatusReply, parsing result %d, keysize %d, secretKeySize %d, cipher %s, CA %s\n", result, keySize, secretKeySize, cipher, CA);}     

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -