protocoltest.c
上传用户:lyxiangda
上传日期:2007-01-12
资源大小:3042k
文件大小:8k
- /*
- * 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 %sn",
- version, profile);
- blobSize = SSM_PackHelloRequest(&blob, version, profile);
- if (!blobSize)
- printf("Error in PackHelloRequest: %dn", 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: %dn", SSMPR_GetError());
- printf("HelloRequest, parsing version #%d, profile %sn",
- 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 %sn",
- result, sessionID, version, httpPort, nonce);
- blobSize = SSM_PackHelloReply(&blob, result, sessionID, version, httpPort,
- nonce);
- if (!blobSize)
- printf("Error in PackHelloReply: %dn", 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: %dn", SSMPR_GetError());
- printf("HelloReply, parsing result %d, sessionID %d, version #%d, httpPort %d, n nonce %sn",
- 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 %sn",
- flags, port, hostIP, hostName);
- blobSize = SSM_PackSSLDataConnectionRequest(&blob, flags, port, hostIP,
- hostName);
- if (!blobSize)
- printf("Error in PackSSLDataConnectionRequest: %dn", 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: %dn", SSMPR_GetError());
- printf(
- "SSLDataConnRequest, parsing flags %x, port %d, hostIP %s, hostName %sn",
- 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 %dn",
- result, connID, port);
- blobSize = SSM_PackSSLDataConnectionReply(&blob, result, connID, port);
- if (!blobSize)
- printf("Error in PackSSLDataConnReply: %dn", 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: %dn", SSMPR_GetError());
- printf("SSLDataConnReply, parsing result %d, connectionID %d, port %dn",
- result, connID, port);
-
-
- /*
- * Test functions to parse and pack SecurityStatusRequest message
- */
- connID = 45375;
- printf("SecurityStatusRequest, packing connection ID %dn", connID);
- blobSize = SSM_PackSecurityStatusRequest(&blob, connID);
- if (!blobSize)
- printf("Error in PackSecurityStatusRequest: %dn", 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: %dn", SSMPR_GetError());
- printf("SecurityStatusRequest, parsing connection ID %dn", 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 %sn", result, keySize, secretKeySize, cipher, CA);
- blobSize = SSM_PackSecurityStatusReply(&blob, result, keySize, secretKeySize, cipher, CA);
- if (!blobSize)
- printf("Error in PackSecurityStatusReply: %dn", 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: %dn", SSMPR_GetError());
- printf("SecurityStatusReply, parsing result %d, keysize %d, secretKeySize %d, cipher %s, CA %sn", result, keySize, secretKeySize, cipher, CA);
- }