#produce("password")
<!doctype html>
<html>
  <head>
      <meta charset="utf-8" />
      <title></title>
   </head>
  <body>

       <script type="text/javascript" src="$pmrpcUrl"></script>

       <script type="text/javascript">

         function reply() {
           pmrpc.call({
             destination : "publish",
             publicProcedureName : "reply",
             params : ["OK", {"password" : document.myform.password.value}],
             onSuccess : function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Data submitted</h1>';},
             onFailure: function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Data submission failed</h1>';}
           });
	       return true;
         }
         
         function cancel() {
           pmrpc.call({
             destination : "publish",
             publicProcedureName : "reply",
             params : ["Cancelled", {}],
             onSuccess : function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancelled</h1>';},
             onFailure: function() {document.getElementsByTagName('body')[0].innerHTML='<h1>Cancellation failed</h1>';}
           });
	       return true;
         }

       </script>
  
  <h2>Credential Manager request</h2>
    <p>The Credential Manager needs to copy certificates from the Java truststore.</p>
    <p>Please enter the truststore password</p>
    <form name="myform" onSubmit="reply(); return false;">
      <label>Password<input type="password" name="password"/></label><br />
      <input type="button" value="Cancel" onClick = "cancel()"/>
      <input type="button" value="Submit" onClick = "reply()"/>
    </form> 
  </body>
</html>

