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.

417 lines
12 KiB

8 years ago
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1">
  6. <meta name="theme-color" content="#375EAB">
  7. <title>dsa - The Go Programming Language</title>
  8. <link type="text/css" rel="stylesheet" href="../../../lib/godoc/style.css">
  9. <link rel="stylesheet" href="../../../lib/godoc/jquery.treeview.css">
  10. <script type="text/javascript">window.initFuncs = [];</script>
  11. </head>
  12. <body>
  13. <div id='lowframe' style="position: fixed; bottom: 0; left: 0; height: 0; width: 100%; border-top: thin solid grey; background-color: white; overflow: auto;">
  14. ...
  15. </div><!-- #lowframe -->
  16. <div id="topbar" class="wide"><div class="container">
  17. <div class="top-heading" id="heading-wide"><a href="http://localhost:6060/">The Go Programming Language</a></div>
  18. <div class="top-heading" id="heading-narrow"><a href="http://localhost:6060/">Go</a></div>
  19. <a href="index.html#" id="menu-button"><span id="menu-button-arrow">&#9661;</span></a>
  20. <form method="GET" action="http://localhost:6060/search">
  21. <div id="menu">
  22. <a href="http://localhost:6060/doc/">Documents</a>
  23. <a href="http://localhost:6060/pkg/">Packages</a>
  24. <a href="http://localhost:6060/project/">The Project</a>
  25. <a href="http://localhost:6060/help/">Help</a>
  26. <a href="http://localhost:6060/blog/">Blog</a>
  27. <input type="text" id="search" name="q" class="inactive" value="Search" placeholder="Search">
  28. </div>
  29. </form>
  30. </div></div>
  31. <div id="page" class="wide">
  32. <div class="container">
  33. <h1>Package dsa</h1>
  34. <div id="nav"></div>
  35. <!--
  36. Copyright 2009 The Go Authors. All rights reserved.
  37. Use of this source code is governed by a BSD-style
  38. license that can be found in the LICENSE file.
  39. -->
  40. <!--
  41. Note: Static (i.e., not template-generated) href and id
  42. attributes start with "pkg-" to make it impossible for
  43. them to conflict with generated attributes (some of which
  44. correspond to Go identifiers).
  45. -->
  46. <script type='text/javascript'>
  47. document.ANALYSIS_DATA = null;
  48. document.CALLGRAPH = null;
  49. </script>
  50. <div id="short-nav">
  51. <dl>
  52. <dd><code>import "crypto/dsa"</code></dd>
  53. </dl>
  54. <dl>
  55. <dd><a href="index.html#pkg-overview" class="overviewLink">Overview</a></dd>
  56. <dd><a href="index.html#pkg-index" class="indexLink">Index</a></dd>
  57. </dl>
  58. </div>
  59. <!-- The package's Name is printed as title by the top-level template -->
  60. <div id="pkg-overview" class="toggleVisible">
  61. <div class="collapsed">
  62. <h2 class="toggleButton" title="Click to show Overview section">Overview ▹</h2>
  63. </div>
  64. <div class="expanded">
  65. <h2 class="toggleButton" title="Click to hide Overview section">Overview ▾</h2>
  66. <p>
  67. Package dsa implements the Digital Signature Algorithm, as defined in FIPS 186-3.
  68. </p>
  69. </div>
  70. </div>
  71. <div id="pkg-index" class="toggleVisible">
  72. <div class="collapsed">
  73. <h2 class="toggleButton" title="Click to show Index section">Index ▹</h2>
  74. </div>
  75. <div class="expanded">
  76. <h2 class="toggleButton" title="Click to hide Index section">Index ▾</h2>
  77. <!-- Table of contents for API; must be named manual-nav to turn off auto nav. -->
  78. <div id="manual-nav">
  79. <dl>
  80. <dd><a href="index.html#pkg-variables">Variables</a></dd>
  81. <dd><a href="index.html#GenerateKey">func GenerateKey(priv *PrivateKey, rand io.Reader) error</a></dd>
  82. <dd><a href="index.html#GenerateParameters">func GenerateParameters(params *Parameters, rand io.Reader, sizes ParameterSizes) (err error)</a></dd>
  83. <dd><a href="index.html#Sign">func Sign(rand io.Reader, priv *PrivateKey, hash []byte) (r, s *big.Int, err error)</a></dd>
  84. <dd><a href="index.html#Verify">func Verify(pub *PublicKey, hash []byte, r, s *big.Int) bool</a></dd>
  85. <dd><a href="index.html#ParameterSizes">type ParameterSizes</a></dd>
  86. <dd><a href="index.html#Parameters">type Parameters</a></dd>
  87. <dd><a href="index.html#PrivateKey">type PrivateKey</a></dd>
  88. <dd><a href="index.html#PublicKey">type PublicKey</a></dd>
  89. </dl>
  90. </div><!-- #manual-nav -->
  91. <h4>Package files</h4>
  92. <p>
  93. <span style="font-size:90%">
  94. <a href="http://localhost:6060/src/crypto/dsa/dsa.go">dsa.go</a>
  95. </span>
  96. </p>
  97. </div><!-- .expanded -->
  98. </div><!-- #pkg-index -->
  99. <div id="pkg-callgraph" class="toggle" style="display: none">
  100. <div class="collapsed">
  101. <h2 class="toggleButton" title="Click to show Internal Call Graph section">Internal call graph ▹</h2>
  102. </div> <!-- .expanded -->
  103. <div class="expanded">
  104. <h2 class="toggleButton" title="Click to hide Internal Call Graph section">Internal call graph ▾</h2>
  105. <p>
  106. In the call graph viewer below, each node
  107. is a function belonging to this package
  108. and its children are the functions it
  109. calls&mdash;perhaps dynamically.
  110. </p>
  111. <p>
  112. The root nodes are the entry points of the
  113. package: functions that may be called from
  114. outside the package.
  115. There may be non-exported or anonymous
  116. functions among them if they are called
  117. dynamically from another package.
  118. </p>
  119. <p>
  120. Click a node to visit that function's source code.
  121. From there you can visit its callers by
  122. clicking its declaring <code>func</code>
  123. token.
  124. </p>
  125. <p>
  126. Functions may be omitted if they were
  127. determined to be unreachable in the
  128. particular programs or tests that were
  129. analyzed.
  130. </p>
  131. <!-- Zero means show all package entry points. -->
  132. <ul style="margin-left: 0.5in" id="callgraph-0" class="treeview"></ul>
  133. </div>
  134. </div> <!-- #pkg-callgraph -->
  135. <h2 id="pkg-variables">Variables</h2>
  136. <pre>var <span id="ErrInvalidPublicKey">ErrInvalidPublicKey</span> = <a href="../../errors/index.html">errors</a>.<a href="../../errors/index.html#New">New</a>(&#34;crypto/dsa: invalid public key&#34;)</pre>
  137. <p>
  138. ErrInvalidPublicKey results when a public key is not usable by this code.
  139. FIPS is quite strict about the format of DSA keys, but other code may be
  140. less so. Thus, when using keys which may have been generated by other code,
  141. this error must be handled.
  142. </p>
  143. <h2 id="GenerateKey">func <a href="http://localhost:6060/src/crypto/dsa/dsa.go?s=3306:3362#L141">GenerateKey</a></h2>
  144. <pre>func GenerateKey(priv *<a href="index.html#PrivateKey">PrivateKey</a>, rand <a href="../../io/index.html">io</a>.<a href="../../io/index.html#Reader">Reader</a>) <a href="../../builtin/index.html#error">error</a></pre>
  145. <p>
  146. GenerateKey generates a public&amp;private key pair. The Parameters of the
  147. PrivateKey must already be valid (see GenerateParameters).
  148. </p>
  149. <h2 id="GenerateParameters">func <a href="http://localhost:6060/src/crypto/dsa/dsa.go?s=1576:1669#L45">GenerateParameters</a></h2>
  150. <pre>func GenerateParameters(params *<a href="index.html#Parameters">Parameters</a>, rand <a href="../../io/index.html">io</a>.<a href="../../io/index.html#Reader">Reader</a>, sizes <a href="index.html#ParameterSizes">ParameterSizes</a>) (err <a href="../../builtin/index.html#error">error</a>)</pre>
  151. <p>
  152. GenerateParameters puts a random, valid set of DSA parameters into params.
  153. This function can take many seconds, even on fast machines.
  154. </p>
  155. <h2 id="Sign">func <a href="http://localhost:6060/src/crypto/dsa/dsa.go?s=4644:4727#L184">Sign</a></h2>
  156. <pre>func Sign(rand <a href="../../io/index.html">io</a>.<a href="../../io/index.html#Reader">Reader</a>, priv *<a href="index.html#PrivateKey">PrivateKey</a>, hash []<a href="../../builtin/index.html#byte">byte</a>) (r, s *<a href="../../math/big/index.html">big</a>.<a href="../../math/big/index.html#Int">Int</a>, err <a href="../../builtin/index.html#error">error</a>)</pre>
  157. <p>
  158. Sign signs an arbitrary length hash (which should be the result of hashing a
  159. larger message) using the private key, priv. It returns the signature as a
  160. pair of integers. The security of the private key depends on the entropy of
  161. rand.
  162. </p>
  163. <p>
  164. Note that FIPS 186-3 section 4.6 specifies that the hash should be truncated
  165. to the byte-length of the subgroup. This function does not perform that
  166. truncation itself.
  167. </p>
  168. <h2 id="Verify">func <a href="http://localhost:6060/src/crypto/dsa/dsa.go?s=5673:5733#L239">Verify</a></h2>
  169. <pre>func Verify(pub *<a href="index.html#PublicKey">PublicKey</a>, hash []<a href="../../builtin/index.html#byte">byte</a>, r, s *<a href="../../math/big/index.html">big</a>.<a href="../../math/big/index.html#Int">Int</a>) <a href="../../builtin/index.html#bool">bool</a></pre>
  170. <p>
  171. Verify verifies the signature in r, s of hash using the public key, pub. It
  172. reports whether the signature is valid.
  173. </p>
  174. <p>
  175. Note that FIPS 186-3 section 4.6 specifies that the hash should be truncated
  176. to the byte-length of the subgroup. This function does not perform that
  177. truncation itself.
  178. </p>
  179. <h2 id="ParameterSizes">type <a href="http://localhost:6060/src/crypto/dsa/dsa.go?s=1161:1184#L30">ParameterSizes</a></h2>
  180. <pre>type ParameterSizes <a href="../../builtin/index.html#int">int</a></pre>
  181. <p>
  182. ParameterSizes is a enumeration of the acceptable bit lengths of the primes
  183. in a set of DSA parameters. See FIPS 186-3, section 4.2.
  184. </p>
  185. <pre>const (
  186. <span id="L1024N160">L1024N160</span> <a href="index.html#ParameterSizes">ParameterSizes</a> = <a href="../../builtin/index.html#iota">iota</a>
  187. <span id="L2048N224">L2048N224</span>
  188. <span id="L2048N256">L2048N256</span>
  189. <span id="L3072N256">L3072N256</span>
  190. )</pre>
  191. <h2 id="Parameters">type <a href="http://localhost:6060/src/crypto/dsa/dsa.go?s=453:497#L6">Parameters</a></h2>
  192. <pre>type Parameters struct {
  193. P, Q, G *<a href="../../math/big/index.html">big</a>.<a href="../../math/big/index.html#Int">Int</a>
  194. }</pre>
  195. <p>
  196. Parameters represents the domain parameters for a key. These parameters can
  197. be shared across many keys. The bit length of Q must be a multiple of 8.
  198. </p>
  199. <h2 id="PrivateKey">type <a href="http://localhost:6060/src/crypto/dsa/dsa.go?s=636:685#L17">PrivateKey</a></h2>
  200. <pre>type PrivateKey struct {
  201. <a href="index.html#PublicKey">PublicKey</a>
  202. X *<a href="../../math/big/index.html">big</a>.<a href="../../math/big/index.html#Int">Int</a>
  203. }</pre>
  204. <p>
  205. PrivateKey represents a DSA private key.
  206. </p>
  207. <h2 id="PublicKey">type <a href="http://localhost:6060/src/crypto/dsa/dsa.go?s=541:590#L11">PublicKey</a></h2>
  208. <pre>type PublicKey struct {
  209. <a href="index.html#Parameters">Parameters</a>
  210. Y *<a href="../../math/big/index.html">big</a>.<a href="../../math/big/index.html#Int">Int</a>
  211. }</pre>
  212. <p>
  213. PublicKey represents a DSA public key.
  214. </p>
  215. <div id="footer">
  216. Build version go1.6.<br>
  217. Except as <a href="https://developers.google.com/site-policies#restrictions">noted</a>,
  218. the content of this page is licensed under the
  219. Creative Commons Attribution 3.0 License,
  220. and code is licensed under a <a href="http://localhost:6060/LICENSE">BSD license</a>.<br>
  221. <a href="http://localhost:6060/doc/tos.html">Terms of Service</a> |
  222. <a href="http://www.google.com/intl/en/policies/privacy/">Privacy Policy</a>
  223. </div>
  224. </div><!-- .container -->
  225. </div><!-- #page -->
  226. <!-- TODO(adonovan): load these from <head> using "defer" attribute? -->
  227. <script type="text/javascript" src="../../../lib/godoc/jquery.js"></script>
  228. <script type="text/javascript" src="../../../lib/godoc/jquery.treeview.js"></script>
  229. <script type="text/javascript" src="../../../lib/godoc/jquery.treeview.edit.js"></script>
  230. <script type="text/javascript" src="../../../lib/godoc/godocs.js"></script>
  231. </body>
  232. </html>