ibm-information-center/dist/eclipse/plugins/i5OS.ic.apis_5.4.0.1/qc3addprngseed.htm

183 lines
5.3 KiB
HTML
Raw Permalink Normal View History

2024-04-02 14:02:31 +00:00
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Copyright" content="Copyright (c) 2006 by IBM Corporation">
<!-- Begin Header Records -->
<!-- All rights reserved. Licensed Materials Property of IBM -->
<!-- US Government Users Restricted Rights -->
<!-- Use, duplication or disclosure restricted by -->
<!-- GSA ADP Schedule Contract with IBM Corp. -->
<!-- Created by Beth Hagemeister for V5R1 -->
<!-- Change history: -->
<!-- 010629 File cleanup -->
<!-- 030127 V5R3 hag: Add OPM entry -->
<!-- Miscellaneous API -->
<!-- end header records -->
<title>Add Seed for Pseudorandom Number Generator (Qc3AddPRNGSeed) API</title>
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
</head>
<body>
<a name="Top_Of_Page"></a>
<!-- Java sync-link -->
<script type="text/javascript" language="Javascript" src="../rzahg/synch.js">
</script>
<h2>Add Seed for Pseudorandom Number Generator (QC3ADDSD, Qc3AddPRNGSeed) API</h2>
<div class="box" style="width: 80%;">
<br>
&nbsp;&nbsp;Required Parameter Group:<br>
<!-- iddvc RMBR -->
<br>
<table width="100%">
<tr>
<td align="center" valign="top" width="10%">1</td>
<td align="left" valign="top" width="50%">Seed data</td>
<td align="left" valign="top" width="20%">Input</td>
<td align="left" valign="top" width="20%">Char(*)</td>
</tr>
<tr>
<td align="center" valign="top">2</td>
<td align="left" valign="top">Seed data length</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Binary(4)</td>
</tr>
<tr>
<td align="center" valign="top">3</td>
<td align="left" valign="top">Error Code</td>
<td align="left" valign="top">I/O</td>
<td align="left" valign="top">Char(*)</td>
</tr>
</table>
<br>
&nbsp;&nbsp;Service Program Name: QC3PRNG<br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Default Public Authority: *USE<br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Threadsafe: Yes<br>
<!-- iddvc RMBR -->
<br>
</div>
<br>
<p>The Add Seed for Pseudorandom Number Generator (OPM, QC3ADDSD; ILE, Qc3AddPRNGSeed) API allows
the user to add seed into the server's pseudorandom number generator system
seed digest.</p>
<p>The pseudorandom number generator is composed of two parts: pseudorandom
number generation and seed management. Pseudorandom number generation is
performed using the FIPS 186-1 algorithm. (See the Generate Pseudorandom
Numbers (Qc3GenPRNs) API.) Cryptographically-secure pseudorandom numbers rely
on good seed. The FIPS 186-1 key and seed values are obtained from the system
seed digest. The server automatically generates seed using data collected from
system information or by using the random number generator function on a
cryptographic coprocessor, such as a 4758, if one is available.
System-generated seed can never be truly unpredictable. If a cryptographic
coprocessor is not available, you can use this API to add your own random seed
to the system seed digest. This should be done as soon as possible any time the
Licensed Internal Code is installed.</p>
<br>
<h3>Authorities and Locks</h3>
<p>All object (*ALLOBJ) special authority is needed to use this API.</p>
<dl>
<dt><em>User Profile Authority</em></dt>
<dd>*ALLOBJ</dd>
</dl>
<br>
<h3>Required Parameter Group</h3>
<dl>
<dt><strong>Seed data</strong></dt>
<dd>INPUT; CHAR(*)
<p>The input seed data for the system seed digest.</p>
<p>It is important that the seed data be unpredictable and have as much entropy
as possible. Entropy is the minimum number of bits needed to represent the
information contained in some data. For seeding purposes, entropy is a measure
of the amount of uncertainty or unpredictability of the seed. The system seed
digest holds a maximum of 160 bits of entropy. You should add at least that
much entropy to refresh the system seed digest totally. Possible sources of
seed data are coin flipping, keystroke or mouse timings, or a noise source such
as the one available on the 4758 Cryptographic Coprocessor.</p>
</dd>
<dt><strong>Seed data length</strong></dt>
<dd>INPUT; BINARY(4)
<p>The length of the seed data, in bytes. If this length is 0, no seed data is
added.</p>
</dd>
<dt><strong>Error code</strong></dt>
<dd>I/O; CHAR(*)
<p>The structure in which to return error information. For the format of the
structure, see <a href="../apiref/error.htm#hdrerrcod">Error Code Parameter</a>.</p>
</dd>
</dl>
<br>
<h3>Error Messages</h3>
<table width="100%" cellpadding="5">
<tr>
<th align="left" valign="top">Message ID</th>
<th align="left" valign="top">Error Message Text</th>
</tr>
<tr>
<td width="15%" valign="top">CPF222E E</td>
<td width="85%" valign="top">*ALLOBJ special authority is required.</td>
</tr>
<tr>
<td valign="top">CPF3C17 E</td>
<td valign="top">Error occurred with input data parameter.</td>
</tr>
<tr>
<td valign="top">CPF3CF1 E</td>
<td valign="top">Error code parameter not valid.</td>
</tr>
</table>
<br>
<br>
<hr>
API introduced: V5R1
<hr>
<center>
<table cellpadding="2" cellspacing="2">
<tr align="center">
<td valign="middle" align="center"><a href="#top">Top</a> | <a href=
"misc1.htm">Miscellaneous APIs</a> | <a href="aplist.htm">APIs by
category</a></td>
</tr>
</table>
</center>
</body>
</html>