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

📄 cmtpasswd.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. *//************************************************************************ * Code to handle password requests from the the PSM module. *  ************************************************************************ */#include "cmtcmn.h"#include "cmtutils.h"#include "messages.h"void CMT_SetAppFreeCallback(PCMT_CONTROL control, 			    applicationFreeCallback_fn f){  control->userFuncs.userFree = f;}    void CMT_ServicePasswordRequest(PCMT_CONTROL cm_control, CMTItem * requestData){   CMTItem response = {0, NULL, 0};  char * passwd = NULL, * prompt = NULL;  PasswordRequest request;  PasswordReply reply;  void * clientContext;  /********************************************   *  What we trying to do here:    *  1) Throw up a dialog box and request a password.   *  2) Create a message and send it to the PSM module.   ********************************************   */    /* Decode the request */  if (CMT_DecodeMessage(PasswordRequestTemplate, &request, requestData) != CMTSuccess) {      goto loser;  }  /* Copy the client context to a pointer */  clientContext = CMT_CopyItemToPtr(request.clientContext);  reply.passwd =     cm_control->userFuncs.promptCallback(cm_control->userFuncs.promptArg, 					 request.prompt, clientContext, 1);  reply.tokenID = request.tokenKey;  if (!reply.passwd) {      /* the user cancelled the prompt or other errors occurred */      reply.result = -1;  }  else {      /* note that this includes an empty string (zero length password) */      reply.result = 0;  }  /* Encode the reply */  if (CMT_EncodeMessage(PasswordReplyTemplate, &response, &reply) != CMTSuccess) {      goto loser;  }  /* Set the message response type */  response.type = SSM_EVENT_MESSAGE | SSM_AUTH_EVENT;  CMT_TransmitMessage(cm_control, &response);  goto done;loser:  /* something has gone wrong */done:  /*clean up anyway */  /* We can't just free up memory allocated by the host     application because the versions of free may not match up.     When you run the plug-in with an optimized older browser,     you'll see tons of Asserts (why they still have asserts in an     optimized build is a different question, but without them      I wouldn't have figured out this problem) about a pointer not     being a valid heap pointer and eventually crash.  This was      the offending free line.     So we need to call a function within the browser that      calls the free linked in with it.  js_free is     such a function.  But this is extremely ugly.   */  if (reply.passwd)     cm_control->userFuncs.userFree(reply.passwd);  if (request.prompt)     free(request.prompt);  return;}

⌨️ 快捷键说明

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