1
0
Fork 0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

1352 lines
37 KiB

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="generator" content="JsDoc Toolkit" />
<title>jsrsasign 4.8.7 JavaScript API Reference - KJUR.crypto.Signature</title>
<style type="text/css">
/* default.css */
body
{
font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
width: 800px;
}
.header
{
clear: both;
background-color: #ccc;
padding: 8px;
}
h1
{
font-size: 150%;
font-weight: bold;
padding: 0;
margin: 1em 0 0 .3em;
}
hr
{
border: none 0;
border-top: 1px solid #7F8FB1;
height: 1px;
}
pre.code
{
display: block;
padding: 8px;
border: 1px dashed #ccc;
}
#index
{
margin-top: 24px;
float: left;
width: 160px;
position: absolute;
left: 8px;
background-color: #F3F3F3;
padding: 8px;
}
#content
{
margin-left: 190px;
width: 600px;
}
.classList
{
list-style-type: none;
padding: 0;
margin: 0 0 0 8px;
font-family: arial, sans-serif;
font-size: 1em;
overflow: auto;
}
.classList li
{
padding: 0;
margin: 0 0 8px 0;
}
.summaryTable { width: 100%; }
h1.classTitle
{
font-size:170%;
line-height:130%;
}
h2 { font-size: 110%; }
caption, div.sectionTitle
{
background-color: #7F8FB1;
color: #fff;
font-size:130%;
text-align: left;
padding: 2px 6px 2px 6px;
border: 1px #7F8FB1 solid;
}
div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }
.summaryTable td
{
vertical-align: top;
padding: 4px;
border-bottom: 1px #7F8FB1 solid;
border-right: 1px #7F8FB1 solid;
}
/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
border-left: 1px #7F8FB1 solid;
width: 140px;
text-align: right;
}
td.attributes, .fixedFont
{
line-height: 15px;
color: #002EBE;
font-family: "Courier New",Courier,monospace;
font-size: 13px;
}
.summaryTable td.nameDescription
{
text-align: left;
font-size: 13px;
line-height: 15px;
}
.summaryTable td.nameDescription, .description
{
line-height: 15px;
padding: 4px;
padding-left: 4px;
}
.summaryTable { margin-bottom: 8px; }
ul.inheritsList
{
list-style: square;
margin-left: 20px;
padding-left: 0;
}
.detailList {
margin-left: 20px;
line-height: 15px;
}
.detailList dt { margin-left: 20px; }
.detailList .heading
{
font-weight: bold;
padding-bottom: 6px;
margin-left: 0;
}
.light, td.attributes, .light a:link, .light a:visited
{
color: #777;
font-style: italic;
}
.fineprint
{
text-align: right;
font-size: 10px;
}
</style>
</head>
<body>
<!-- ============================== header ================================= -->
<!-- begin static/header.html -->
<div id="header" style="background: #7F8FB1; color: white; margin: -10px">
&nbsp; <b><a href="http://kjur.github.com/jsrsasign/" style="color: white">jsrsasign</a></b> JavaScript API Reference
</div>
<!-- end static/header.html -->
<!-- ============================== classes index ============================ -->
<div id="index">
<!-- begin publish.classesIndex -->
<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
<li><i><a href="../symbols/global__.html">global__</a></i></li>
<li><a href="../symbols/ASN1HEX.html">ASN1HEX</a></li>
<li><a href="../symbols/Base64x.html">Base64x</a></li>
<li><a href="../symbols/KEYUTIL.html">KEYUTIL</a></li>
<li><a href="../symbols/KJUR.html">KJUR</a></li>
<li><a href="../symbols/KJUR.asn1.html">KJUR.asn1</a></li>
<li><a href="../symbols/KJUR.asn1.ASN1Object.html">KJUR.asn1.ASN1Object</a></li>
<li><a href="../symbols/KJUR.asn1.ASN1Util.html">KJUR.asn1.ASN1Util</a></li>
<li><a href="../symbols/KJUR.asn1.cades.html">KJUR.asn1.cades</a></li>
<li><a href="../symbols/KJUR.asn1.cades.CAdESUtil.html">KJUR.asn1.cades.CAdESUtil</a></li>
<li><a href="../symbols/KJUR.asn1.cades.CompleteCertificateRefs.html">KJUR.asn1.cades.CompleteCertificateRefs</a></li>
<li><a href="../symbols/KJUR.asn1.cades.OtherCertID.html">KJUR.asn1.cades.OtherCertID</a></li>
<li><a href="../symbols/KJUR.asn1.cades.OtherHash.html">KJUR.asn1.cades.OtherHash</a></li>
<li><a href="../symbols/KJUR.asn1.cades.OtherHashAlgAndValue.html">KJUR.asn1.cades.OtherHashAlgAndValue</a></li>
<li><a href="../symbols/KJUR.asn1.cades.SignaturePolicyIdentifier.html">KJUR.asn1.cades.SignaturePolicyIdentifier</a></li>
<li><a href="../symbols/KJUR.asn1.cades.SignatureTimeStamp.html">KJUR.asn1.cades.SignatureTimeStamp</a></li>
<li><a href="../symbols/KJUR.asn1.cms.html">KJUR.asn1.cms</a></li>
<li><a href="../symbols/KJUR.asn1.cms.Attribute.html">KJUR.asn1.cms.Attribute</a></li>
<li><a href="../symbols/KJUR.asn1.cms.AttributeList.html">KJUR.asn1.cms.AttributeList</a></li>
<li><a href="../symbols/KJUR.asn1.cms.CMSUtil.html">KJUR.asn1.cms.CMSUtil</a></li>
<li><a href="../symbols/KJUR.asn1.cms.ContentInfo.html">KJUR.asn1.cms.ContentInfo</a></li>
<li><a href="../symbols/KJUR.asn1.cms.ContentType.html">KJUR.asn1.cms.ContentType</a></li>
<li><a href="../symbols/KJUR.asn1.cms.EncapsulatedContentInfo.html">KJUR.asn1.cms.EncapsulatedContentInfo</a></li>
<li><a href="../symbols/KJUR.asn1.cms.IssuerAndSerialNumber.html">KJUR.asn1.cms.IssuerAndSerialNumber</a></li>
<li><a href="../symbols/KJUR.asn1.cms.MessageDigest.html">KJUR.asn1.cms.MessageDigest</a></li>
<li><a href="../symbols/KJUR.asn1.cms.SignedData.html">KJUR.asn1.cms.SignedData</a></li>
<li><a href="../symbols/KJUR.asn1.cms.SignerInfo.html">KJUR.asn1.cms.SignerInfo</a></li>
<li><a href="../symbols/KJUR.asn1.cms.SigningCertificate.html">KJUR.asn1.cms.SigningCertificate</a></li>
<li><a href="../symbols/KJUR.asn1.cms.SigningCertificateV2.html">KJUR.asn1.cms.SigningCertificateV2</a></li>
<li><a href="../symbols/KJUR.asn1.cms.SigningTime.html">KJUR.asn1.cms.SigningTime</a></li>
<li><a href="../symbols/KJUR.asn1.csr.html">KJUR.asn1.csr</a></li>
<li><a href="../symbols/KJUR.asn1.csr.CertificationRequest.html">KJUR.asn1.csr.CertificationRequest</a></li>
<li><a href="../symbols/KJUR.asn1.csr.CertificationRequestInfo.html">KJUR.asn1.csr.CertificationRequestInfo</a></li>
<li><a href="../symbols/KJUR.asn1.csr.CSRUtil.html">KJUR.asn1.csr.CSRUtil</a></li>
<li><a href="../symbols/KJUR.asn1.DERAbstractString.html">KJUR.asn1.DERAbstractString</a></li>
<li><a href="../symbols/KJUR.asn1.DERAbstractStructured.html">KJUR.asn1.DERAbstractStructured</a></li>
<li><a href="../symbols/KJUR.asn1.DERAbstractTime.html">KJUR.asn1.DERAbstractTime</a></li>
<li><a href="../symbols/KJUR.asn1.DERBitString.html">KJUR.asn1.DERBitString</a></li>
<li><a href="../symbols/KJUR.asn1.DERBoolean.html">KJUR.asn1.DERBoolean</a></li>
<li><a href="../symbols/KJUR.asn1.DEREnumerated.html">KJUR.asn1.DEREnumerated</a></li>
<li><a href="../symbols/KJUR.asn1.DERGeneralizedTime.html">KJUR.asn1.DERGeneralizedTime</a></li>
<li><a href="../symbols/KJUR.asn1.DERIA5String.html">KJUR.asn1.DERIA5String</a></li>
<li><a href="../symbols/KJUR.asn1.DERInteger.html">KJUR.asn1.DERInteger</a></li>
<li><a href="../symbols/KJUR.asn1.DERNull.html">KJUR.asn1.DERNull</a></li>
<li><a href="../symbols/KJUR.asn1.DERNumericString.html">KJUR.asn1.DERNumericString</a></li>
<li><a href="../symbols/KJUR.asn1.DERObjectIdentifier.html">KJUR.asn1.DERObjectIdentifier</a></li>
<li><a href="../symbols/KJUR.asn1.DEROctetString.html">KJUR.asn1.DEROctetString</a></li>
<li><a href="../symbols/KJUR.asn1.DERPrintableString.html">KJUR.asn1.DERPrintableString</a></li>
<li><a href="../symbols/KJUR.asn1.DERSequence.html">KJUR.asn1.DERSequence</a></li>
<li><a href="../symbols/KJUR.asn1.DERSet.html">KJUR.asn1.DERSet</a></li>
<li><a href="../symbols/KJUR.asn1.DERTaggedObject.html">KJUR.asn1.DERTaggedObject</a></li>
<li><a href="../symbols/KJUR.asn1.DERTeletexString.html">KJUR.asn1.DERTeletexString</a></li>
<li><a href="../symbols/KJUR.asn1.DERUTCTime.html">KJUR.asn1.DERUTCTime</a></li>
<li><a href="../symbols/KJUR.asn1.DERUTF8String.html">KJUR.asn1.DERUTF8String</a></li>
<li><a href="../symbols/KJUR.asn1.tsp.html">KJUR.asn1.tsp</a></li>
<li><a href="../symbols/KJUR.asn1.tsp.AbstractTSAAdapter.html">KJUR.asn1.tsp.AbstractTSAAdapter</a></li>
<li><a href="../symbols/KJUR.asn1.tsp.Accuracy.html">KJUR.asn1.tsp.Accuracy</a></li>
<li><a href="../symbols/KJUR.asn1.tsp.FixedTSAAdapter.html">KJUR.asn1.tsp.FixedTSAAdapter</a></li>
<li><a href="../symbols/KJUR.asn1.tsp.MessageImprint.html">KJUR.asn1.tsp.MessageImprint</a></li>
<li><a href="../symbols/KJUR.asn1.tsp.PKIFailureInfo.html">KJUR.asn1.tsp.PKIFailureInfo</a></li>
<li><a href="../symbols/KJUR.asn1.tsp.PKIFreeText.html">KJUR.asn1.tsp.PKIFreeText</a></li>
<li><a href="../symbols/KJUR.asn1.tsp.PKIStatus.html">KJUR.asn1.tsp.PKIStatus</a></li>
<li><a href="../symbols/KJUR.asn1.tsp.PKIStatusInfo.html">KJUR.asn1.tsp.PKIStatusInfo</a></li>
<li><a href="../symbols/KJUR.asn1.tsp.SimpleTSAAdapter.html">KJUR.asn1.tsp.SimpleTSAAdapter</a></li>
<li><a href="../symbols/KJUR.asn1.tsp.TimeStampReq.html">KJUR.asn1.tsp.TimeStampReq</a></li>
<li><a href="../symbols/KJUR.asn1.tsp.TimeStampResp.html">KJUR.asn1.tsp.TimeStampResp</a></li>
<li><a href="../symbols/KJUR.asn1.tsp.TSPUtil.html">KJUR.asn1.tsp.TSPUtil</a></li>
<li><a href="../symbols/KJUR.asn1.tsp.TSTInfo.html">KJUR.asn1.tsp.TSTInfo</a></li>
<li><a href="../symbols/KJUR.asn1.x509.html">KJUR.asn1.x509</a></li>
<li><a href="../symbols/KJUR.asn1.x509.AlgorithmIdentifier.html">KJUR.asn1.x509.AlgorithmIdentifier</a></li>
<li><a href="../symbols/KJUR.asn1.x509.AttributeTypeAndValue.html">KJUR.asn1.x509.AttributeTypeAndValue</a></li>
<li><a href="../symbols/KJUR.asn1.x509.AuthorityKeyIdentifier.html">KJUR.asn1.x509.AuthorityKeyIdentifier</a></li>
<li><a href="../symbols/KJUR.asn1.x509.BasicConstraints.html">KJUR.asn1.x509.BasicConstraints</a></li>
<li><a href="../symbols/KJUR.asn1.x509.Certificate.html">KJUR.asn1.x509.Certificate</a></li>
<li><a href="../symbols/KJUR.asn1.x509.CRL.html">KJUR.asn1.x509.CRL</a></li>
<li><a href="../symbols/KJUR.asn1.x509.CRLDistributionPoints.html">KJUR.asn1.x509.CRLDistributionPoints</a></li>
<li><a href="../symbols/KJUR.asn1.x509.CRLEntry.html">KJUR.asn1.x509.CRLEntry</a></li>
<li><a href="../symbols/KJUR.asn1.x509.DistributionPoint.html">KJUR.asn1.x509.DistributionPoint</a></li>
<li><a href="../symbols/KJUR.asn1.x509.DistributionPointName.html">KJUR.asn1.x509.DistributionPointName</a></li>
<li><a href="../symbols/KJUR.asn1.x509.Extension.html">KJUR.asn1.x509.Extension</a></li>
<li><a href="../symbols/KJUR.asn1.x509.ExtKeyUsage.html">KJUR.asn1.x509.ExtKeyUsage</a></li>
<li><a href="../symbols/KJUR.asn1.x509.GeneralName.html">KJUR.asn1.x509.GeneralName</a></li>
<li><a href="../symbols/KJUR.asn1.x509.GeneralNames.html">KJUR.asn1.x509.GeneralNames</a></li>
<li><a href="../symbols/KJUR.asn1.x509.KeyUsage.html">KJUR.asn1.x509.KeyUsage</a></li>
<li><a href="../symbols/KJUR.asn1.x509.OID.html">KJUR.asn1.x509.OID</a></li>
<li><a href="../symbols/KJUR.asn1.x509.RDN.html">KJUR.asn1.x509.RDN</a></li>
<li><a href="../symbols/KJUR.asn1.x509.SubjectPublicKeyInfo.html">KJUR.asn1.x509.SubjectPublicKeyInfo</a></li>
<li><a href="../symbols/KJUR.asn1.x509.TBSCertificate.html">KJUR.asn1.x509.TBSCertificate</a></li>
<li><a href="../symbols/KJUR.asn1.x509.TBSCertList.html">KJUR.asn1.x509.TBSCertList</a></li>
<li><a href="../symbols/KJUR.asn1.x509.Time.html">KJUR.asn1.x509.Time</a></li>
<li><a href="../symbols/KJUR.asn1.x509.X500Name.html">KJUR.asn1.x509.X500Name</a></li>
<li><a href="../symbols/KJUR.asn1.x509.X509Util.html">KJUR.asn1.x509.X509Util</a></li>
<li><a href="../symbols/KJUR.crypto.html">KJUR.crypto</a></li>
<li><a href="../symbols/KJUR.crypto.DSA.html">KJUR.crypto.DSA</a></li>
<li><a href="../symbols/KJUR.crypto.ECDSA.html">KJUR.crypto.ECDSA</a></li>
<li><a href="../symbols/KJUR.crypto.ECParameterDB.html">KJUR.crypto.ECParameterDB</a></li>
<li><a href="../symbols/KJUR.crypto.Mac.html">KJUR.crypto.Mac</a></li>
<li><a href="../symbols/KJUR.crypto.MessageDigest.html">KJUR.crypto.MessageDigest</a></li>
<li><a href="../symbols/KJUR.crypto.OID.html">KJUR.crypto.OID</a></li>
<li><a href="../symbols/KJUR.crypto.Signature.html">KJUR.crypto.Signature</a></li>
<li><a href="../symbols/KJUR.crypto.Util.html">KJUR.crypto.Util</a></li>
<li><a href="../symbols/KJUR.jws.html">KJUR.jws</a></li>
<li><a href="../symbols/KJUR.jws.IntDate.html">KJUR.jws.IntDate</a></li>
<li><a href="../symbols/KJUR.jws.JWS.html">KJUR.jws.JWS</a></li>
<li><a href="../symbols/KJUR.jws.JWSJS.html">KJUR.jws.JWSJS</a></li>
<li><a href="../symbols/PKCS5PKEY.html">PKCS5PKEY</a></li>
<li><a href="../symbols/RSAKey.html">RSAKey</a></li>
<li><a href="../symbols/X509.html">X509</a></li>
</ul>
<hr />
<!-- end publish.classesIndex -->
</div>
<div id="content">
<!-- ============================== class title ============================ -->
<h1 class="classTitle">
Class KJUR.crypto.Signature
</h1>
<!-- ============================== class summary ========================== -->
<p class="description">
Signature class which is very similar to java.security.Signature class
<br /><i>Defined in: </i> <a href="../symbols/src/crypto-1.1.js.html">crypto-1.1.js</a>.
</p>
<!-- ============================== constructor summary ==================== -->
<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class KJUR.crypto.Signature.">
<caption>Class Summary</caption>
<thead>
<tr>
<th scope="col">Constructor Attributes</th>
<th scope="col">Constructor Name and Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="attributes">&nbsp;</td>
<td class="nameDescription" >
<div class="fixedFont">
<b><a href="../symbols/KJUR.crypto.Signature.html#constructor">KJUR.crypto.Signature</a></b>(params)
</div>
<div class="description">Signature class which is very similar to java.security.Signature class
<br/>
As for params of constructor's argument, it can be specify following attributes:
<ul>
<li>alg - signature algorithm name (ex.</div>
</td>
</tr>
</tbody>
</table>
<!-- ============================== properties summary ===================== -->
<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class KJUR.crypto.Signature.">
<caption>Field Summary</caption>
<thead>
<tr>
<th scope="col">Field Attributes</th>
<th scope="col">Field Name and Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="attributes">&nbsp;</td>
<td class="nameDescription">
<div class="fixedFont">
<b><a href="../symbols/KJUR.crypto.Signature.html#state">state</a></b>
</div>
<div class="description">Current state of this signature object whether 'SIGN', 'VERIFY' or null</div>
</td>
</tr>
</tbody>
</table>
<!-- ============================== methods summary ======================== -->
<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class KJUR.crypto.Signature.">
<caption>Method Summary</caption>
<thead>
<tr>
<th scope="col">Method Attributes</th>
<th scope="col">Method Name and Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="attributes">&lt;static&gt; &nbsp;</td>
<td class="nameDescription">
<div class="fixedFont">KJUR.crypto.Signature.<b><a href="../symbols/KJUR.crypto.Signature.html#.init">init</a></b>(key, pass)
</div>
<div class="description">Initialize this object for signing or verifying depends on key
This method is very useful initialize method for Signature class since
you just specify key then this method will automatically initialize it
using <a href="../symbols/KEYUTIL.html#.getKey">KEYUTIL.getKey</a> method.</div>
</td>
</tr>
<tr>
<td class="attributes">&lt;static&gt; &nbsp;</td>
<td class="nameDescription">
<div class="fixedFont">KJUR.crypto.Signature.<b><a href="../symbols/KJUR.crypto.Signature.html#.initSign">initSign</a></b>(param)
</div>
<div class="description">Initialize this object for signing
Private key information will be provided as 'param' parameter and the value will be
following:
<ul>
<li><a href="../symbols/RSAKey.html">RSAKey</a> object for RSA signing</li>
<li>associative array for ECDSA signing
(ex.</div>
</td>
</tr>
<tr>
<td class="attributes">&lt;static&gt; &nbsp;</td>
<td class="nameDescription">
<div class="fixedFont">KJUR.crypto.Signature.<b><a href="../symbols/KJUR.crypto.Signature.html#.initVerifyByCertificatePEM">initVerifyByCertificatePEM</a></b>(certPEM)
</div>
<div class="description">Initialize this object for verifying with a certficate
</div>
</td>
</tr>
<tr>
<td class="attributes">&lt;static&gt; &nbsp;</td>
<td class="nameDescription">
<div class="fixedFont">KJUR.crypto.Signature.<b><a href="../symbols/KJUR.crypto.Signature.html#.initVerifyByPublicKey">initVerifyByPublicKey</a></b>(param)
</div>
<div class="description">Initialize this object for verifying with a public key
Public key information will be provided as 'param' parameter and the value will be
following:
<ul>
<li><a href="../symbols/RSAKey.html">RSAKey</a> object for RSA verification</li>
<li>associative array for ECDSA verification
(ex.</div>
</td>
</tr>
<tr>
<td class="attributes">&lt;static&gt; &nbsp;</td>
<td class="nameDescription">
<div class="fixedFont">KJUR.crypto.Signature.<b><a href="../symbols/KJUR.crypto.Signature.html#.setAlgAndProvider">setAlgAndProvider</a></b>(alg, prov)
</div>
<div class="description">set signature algorithm and provider
</div>
</td>
</tr>
<tr>
<td class="attributes">&lt;static&gt; &nbsp;</td>
<td class="nameDescription">
<div class="fixedFont">KJUR.crypto.Signature.<b><a href="../symbols/KJUR.crypto.Signature.html#.sign">sign</a></b>()
</div>
<div class="description">Returns the signature bytes of all data updates as a hexadecimal string
</div>
</td>
</tr>
<tr>
<td class="attributes">&lt;static&gt; &nbsp;</td>
<td class="nameDescription">
<div class="fixedFont">KJUR.crypto.Signature.<b><a href="../symbols/KJUR.crypto.Signature.html#.signHex">signHex</a></b>(hex)
</div>
<div class="description">performs final update on the sign using hexadecimal string, then returns the signature bytes of all data updates as a hexadecimal string
</div>
</td>
</tr>
<tr>
<td class="attributes">&lt;static&gt; &nbsp;</td>
<td class="nameDescription">
<div class="fixedFont">KJUR.crypto.Signature.<b><a href="../symbols/KJUR.crypto.Signature.html#.signString">signString</a></b>(str)
</div>
<div class="description">performs final update on the sign using string, then returns the signature bytes of all data updates as a hexadecimal string
</div>
</td>
</tr>
<tr>
<td class="attributes">&lt;static&gt; &nbsp;</td>
<td class="nameDescription">
<div class="fixedFont">KJUR.crypto.Signature.<b><a href="../symbols/KJUR.crypto.Signature.html#.updateHex">updateHex</a></b>(hex)
</div>
<div class="description">Updates the data to be signed or verified by a hexadecimal string
</div>
</td>
</tr>
<tr>
<td class="attributes">&lt;static&gt; &nbsp;</td>
<td class="nameDescription">
<div class="fixedFont">KJUR.crypto.Signature.<b><a href="../symbols/KJUR.crypto.Signature.html#.updateString">updateString</a></b>(str)
</div>
<div class="description">Updates the data to be signed or verified by a string
</div>
</td>
</tr>
<tr>
<td class="attributes">&lt;static&gt; &nbsp;</td>
<td class="nameDescription">
<div class="fixedFont">KJUR.crypto.Signature.<b><a href="../symbols/KJUR.crypto.Signature.html#.verify">verify</a></b>(str)
</div>
<div class="description">verifies the passed-in signature.</div>
</td>
</tr>
</tbody>
</table>
<!-- ============================== events summary ======================== -->
<!-- ============================== constructor details ==================== -->
<div class="details"><a name="constructor"> </a>
<div class="sectionTitle">
Class Detail
</div>
<div class="fixedFont">
<b>KJUR.crypto.Signature</b>(params)
</div>
<div class="description">
Signature class which is very similar to java.security.Signature class
<br/>
As for params of constructor's argument, it can be specify following attributes:
<ul>
<li>alg - signature algorithm name (ex. {MD5,SHA1,SHA224,SHA256,SHA384,SHA512,RIPEMD160}with{RSA,ECDSA,DSA})</li>
<li>provider - currently 'cryptojs/jsrsa' only</li>
</ul>
<h4>SUPPORTED ALGORITHMS AND PROVIDERS</h4>
This Signature class supports following signature algorithm and provider names:
<ul>
<li>MD5withRSA - cryptojs/jsrsa</li>
<li>SHA1withRSA - cryptojs/jsrsa</li>
<li>SHA224withRSA - cryptojs/jsrsa</li>
<li>SHA256withRSA - cryptojs/jsrsa</li>
<li>SHA384withRSA - cryptojs/jsrsa</li>
<li>SHA512withRSA - cryptojs/jsrsa</li>
<li>RIPEMD160withRSA - cryptojs/jsrsa</li>
<li>MD5withECDSA - cryptojs/jsrsa</li>
<li>SHA1withECDSA - cryptojs/jsrsa</li>
<li>SHA224withECDSA - cryptojs/jsrsa</li>
<li>SHA256withECDSA - cryptojs/jsrsa</li>
<li>SHA384withECDSA - cryptojs/jsrsa</li>
<li>SHA512withECDSA - cryptojs/jsrsa</li>
<li>RIPEMD160withECDSA - cryptojs/jsrsa</li>
<li>MD5withRSAandMGF1 - cryptojs/jsrsa</li>
<li>SHA1withRSAandMGF1 - cryptojs/jsrsa</li>
<li>SHA224withRSAandMGF1 - cryptojs/jsrsa</li>
<li>SHA256withRSAandMGF1 - cryptojs/jsrsa</li>
<li>SHA384withRSAandMGF1 - cryptojs/jsrsa</li>
<li>SHA512withRSAandMGF1 - cryptojs/jsrsa</li>
<li>RIPEMD160withRSAandMGF1 - cryptojs/jsrsa</li>
<li>SHA1withDSA - cryptojs/jsrsa</li>
<li>SHA224withDSA - cryptojs/jsrsa</li>
<li>SHA256withDSA - cryptojs/jsrsa</li>
</ul>
Here are supported elliptic cryptographic curve names and their aliases for ECDSA:
<ul>
<li>secp256k1</li>
<li>secp256r1, NIST P-256, P-256, prime256v1</li>
<li>secp384r1, NIST P-384, P-384</li>
</ul>
NOTE1: DSA signing algorithm is also supported since crypto 1.1.5.
<h4>EXAMPLES</h4>
</div>
<pre class="code">// RSA signature generation
var sig = new KJUR.crypto.Signature({"alg": "SHA1withRSA"});
sig.init(prvKeyPEM);
sig.updateString('aaa');
var hSigVal = sig.sign();
// DSA signature validation
var sig2 = new KJUR.crypto.Signature({"alg": "SHA1withDSA"});
sig2.init(certPEM);
sig.updateString('aaa');
var isValid = sig2.verify(hSigVal);
// ECDSA signing
var sig = new KJUR.crypto.Signature({'alg':'SHA1withECDSA'});
sig.init(prvKeyPEM);
sig.updateString('aaa');
var sigValueHex = sig.sign();
// ECDSA verifying
var sig2 = new KJUR.crypto.Signature({'alg':'SHA1withECDSA'});
sig.init(certPEM);
sig.updateString('aaa');
var isValid = sig.verify(sigValueHex);</pre>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{Array}</span> <b>params</b>
</dt>
<dd>parameters for constructor</dd>
</dl>
</div>
<!-- ============================== field details ========================== -->
<div class="sectionTitle">
Field Detail
</div>
<a name="state"> </a>
<div class="fixedFont">
<span class="light">{String}</span>
<b>state</b>
</div>
<div class="description">
Current state of this signature object whether 'SIGN', 'VERIFY' or null
</div>
<!-- ============================== method details ========================= -->
<div class="sectionTitle">
Method Detail
</div>
<a name=".init"> </a>
<div class="fixedFont">&lt;static&gt;
<span class="light">KJUR.crypto.Signature.</span><b>init</b>(key, pass)
</div>
<div class="description">
Initialize this object for signing or verifying depends on key
This method is very useful initialize method for Signature class since
you just specify key then this method will automatically initialize it
using <a href="../symbols/KEYUTIL.html#.getKey">KEYUTIL.getKey</a> method.
As for 'key', following argument type are supported:
<h5>signing</h5>
<ul>
<li>PEM formatted PKCS#8 encrypted RSA/ECDSA private key concluding "BEGIN ENCRYPTED PRIVATE KEY"</li>
<li>PEM formatted PKCS#5 encrypted RSA/DSA private key concluding "BEGIN RSA/DSA PRIVATE KEY" and ",ENCRYPTED"</li>
<li>PEM formatted PKCS#8 plain RSA/ECDSA private key concluding "BEGIN PRIVATE KEY"</li>
<li>PEM formatted PKCS#5 plain RSA/DSA private key concluding "BEGIN RSA/DSA PRIVATE KEY" without ",ENCRYPTED"</li>
<li>RSAKey object of private key</li>
<li>KJUR.crypto.ECDSA object of private key</li>
<li>KJUR.crypto.DSA object of private key</li>
</ul>
<h5>verification</h5>
<ul>
<li>PEM formatted PKCS#8 RSA/EC/DSA public key concluding "BEGIN PUBLIC KEY"</li>
<li>PEM formatted X.509 certificate with RSA/EC/DSA public key concluding
"BEGIN CERTIFICATE", "BEGIN X509 CERTIFICATE" or "BEGIN TRUSTED CERTIFICATE".</li>
<li>RSAKey object of public key</li>
<li>KJUR.crypto.ECDSA object of public key</li>
<li>KJUR.crypto.DSA object of public key</li>
</ul>
</div>
<pre class="code">sig.init(sCertPEM)</pre>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{Object}</span> <b>key</b>
</dt>
<dd>specifying public or private key as plain/encrypted PKCS#5/8 PEM file, certificate PEM or <a href="../symbols/RSAKey.html">RSAKey</a>, <a href="../symbols/KJUR.crypto.DSA.html">KJUR.crypto.DSA</a> or <a href="../symbols/KJUR.crypto.ECDSA.html">KJUR.crypto.ECDSA</a> object</dd>
<dt>
<span class="light fixedFont">{String}</span> <b>pass</b>
</dt>
<dd>(OPTION) passcode for encrypted private key</dd>
</dl>
<dl class="detailList">
<dt class="heading">Since:</dt>
<dd>crypto 1.1.3</dd>
</dl>
</dl>
<hr />
<a name=".initSign"> </a>
<div class="fixedFont">&lt;static&gt;
<span class="light">KJUR.crypto.Signature.</span><b>initSign</b>(param)
</div>
<div class="description">
Initialize this object for signing
Private key information will be provided as 'param' parameter and the value will be
following:
<ul>
<li><a href="../symbols/RSAKey.html">RSAKey</a> object for RSA signing</li>
<li>associative array for ECDSA signing
(ex. <code>{'ecprvhex': '1d3f..', 'eccurvename': 'secp256r1'}</code>)</li>
</ul>
</div>
<pre class="code">sig.initSign(prvKey)</pre>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{Object}</span> <b>param</b>
</dt>
<dd>RSAKey object of public key or associative array for ECDSA</dd>
</dl>
<dl class="detailList">
<dt class="heading">Deprecated:</dt>
<dt>
from crypto 1.1.5. please use init() method instead.
</dt>
</dl>
<hr />
<a name=".initVerifyByCertificatePEM"> </a>
<div class="fixedFont">&lt;static&gt;
<span class="light">KJUR.crypto.Signature.</span><b>initVerifyByCertificatePEM</b>(certPEM)
</div>
<div class="description">
Initialize this object for verifying with a certficate
</div>
<pre class="code">sig.initVerifyByCertificatePEM(certPEM)</pre>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{String}</span> <b>certPEM</b>
</dt>
<dd>PEM formatted string of certificate</dd>
</dl>
<dl class="detailList">
<dt class="heading">Deprecated:</dt>
<dt>
from crypto 1.1.5. please use init() method instead.
</dt>
</dl>
<dl class="detailList">
<dt class="heading">Since:</dt>
<dd>1.0.2</dd>
</dl>
</dl>
<hr />
<a name=".initVerifyByPublicKey"> </a>
<div class="fixedFont">&lt;static&gt;
<span class="light">KJUR.crypto.Signature.</span><b>initVerifyByPublicKey</b>(param)
</div>
<div class="description">
Initialize this object for verifying with a public key
Public key information will be provided as 'param' parameter and the value will be
following:
<ul>
<li><a href="../symbols/RSAKey.html">RSAKey</a> object for RSA verification</li>
<li>associative array for ECDSA verification
(ex. <code>{'ecpubhex': '041f..', 'eccurvename': 'secp256r1'}</code>)
</li>
</ul>
</div>
<pre class="code">sig.initVerifyByPublicKey(rsaPrvKey)</pre>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{Object}</span> <b>param</b>
</dt>
<dd>RSAKey object of public key or associative array for ECDSA</dd>
</dl>
<dl class="detailList">
<dt class="heading">Deprecated:</dt>
<dt>
from crypto 1.1.5. please use init() method instead.
</dt>
</dl>
<dl class="detailList">
<dt class="heading">Since:</dt>
<dd>1.0.2</dd>
</dl>
</dl>
<hr />
<a name=".setAlgAndProvider"> </a>
<div class="fixedFont">&lt;static&gt;
<span class="light">KJUR.crypto.Signature.</span><b>setAlgAndProvider</b>(alg, prov)
</div>
<div class="description">
set signature algorithm and provider
</div>
<pre class="code">md.setAlgAndProvider('SHA1withRSA', 'cryptojs/jsrsa');</pre>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{String}</span> <b>alg</b>
</dt>
<dd>signature algorithm name</dd>
<dt>
<span class="light fixedFont">{String}</span> <b>prov</b>
</dt>
<dd>provider name</dd>
</dl>
<hr />
<a name=".sign"> </a>
<div class="fixedFont">&lt;static&gt;
<span class="light">KJUR.crypto.Signature.</span><b>sign</b>()
</div>
<div class="description">
Returns the signature bytes of all data updates as a hexadecimal string
</div>
<pre class="code">var hSigValue = sig.sign()</pre>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dd>the signature bytes as a hexadecimal string</dd>
</dl>
<hr />
<a name=".signHex"> </a>
<div class="fixedFont">&lt;static&gt;
<span class="light">KJUR.crypto.Signature.</span><b>signHex</b>(hex)
</div>
<div class="description">
performs final update on the sign using hexadecimal string, then returns the signature bytes of all data updates as a hexadecimal string
</div>
<pre class="code">var hSigValue = sig.signHex('1fdc33')</pre>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{String}</span> <b>hex</b>
</dt>
<dd>hexadecimal string to final update</dd>
</dl>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dd>the signature bytes of a hexadecimal string</dd>
</dl>
<hr />
<a name=".signString"> </a>
<div class="fixedFont">&lt;static&gt;
<span class="light">KJUR.crypto.Signature.</span><b>signString</b>(str)
</div>
<div class="description">
performs final update on the sign using string, then returns the signature bytes of all data updates as a hexadecimal string
</div>
<pre class="code">var hSigValue = sig.signString('aaa')</pre>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{String}</span> <b>str</b>
</dt>
<dd>string to final update</dd>
</dl>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dd>the signature bytes of a hexadecimal string</dd>
</dl>
<hr />
<a name=".updateHex"> </a>
<div class="fixedFont">&lt;static&gt;
<span class="light">KJUR.crypto.Signature.</span><b>updateHex</b>(hex)
</div>
<div class="description">
Updates the data to be signed or verified by a hexadecimal string
</div>
<pre class="code">sig.updateHex('1f2f3f')</pre>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{String}</span> <b>hex</b>
</dt>
<dd>hexadecimal string to use for the update</dd>
</dl>
<hr />
<a name=".updateString"> </a>
<div class="fixedFont">&lt;static&gt;
<span class="light">KJUR.crypto.Signature.</span><b>updateString</b>(str)
</div>
<div class="description">
Updates the data to be signed or verified by a string
</div>
<pre class="code">sig.updateString('aaa')</pre>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{String}</span> <b>str</b>
</dt>
<dd>string to use for the update</dd>
</dl>
<hr />
<a name=".verify"> </a>
<div class="fixedFont">&lt;static&gt;
<span class="light">{Boolean}</span>
<span class="light">KJUR.crypto.Signature.</span><b>verify</b>(str)
</div>
<div class="description">
verifies the passed-in signature.
</div>
<pre class="code">var isValid = sig.verify('1fbcefdca4823a7(snip)')</pre>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{String}</span> <b>str</b>
</dt>
<dd>string to final update</dd>
</dl>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dd><span class="light fixedFont">{Boolean}</span> true if the signature was verified, otherwise false</dd>
</dl>
<!-- ============================== event details ========================= -->
<hr />
</div>
<!-- ============================== footer ================================= -->
<div class="fineprint" style="clear:both">
&copy; 2012-2015 Kenji Urushima, All rights reserved<br/>
Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0
</div>
</body>
</html>