A user account is required in order to edit this wiki, but we've had to disable public user registrations due to spam.

To request an account, ask an autoconfirmed user on Chat (such as one of these permanent autoconfirmed members).

Crypto: Difference between revisions

From WHATWG Wiki
Jump to navigation Jump to search
(Make this read like a spec, update to modern IDL syntax, and fix header levels)
m (even more like a proper spec)
Line 9: Line 9:
A <b id=concept-cryptographically-random-values title=concept-cryptographically-random-values>cryptographically random value</b> is a value generated from a cryptographically strong pseudo-random number generator seeded with truly random values.  In practice, implementations should generate cryptographically random values using well-established cryptographic pseudo-random number generators, such as RC4, seeded with high-quality entropy, such as from an operating-system entropy source (e.g., ''/dev/urandom'').  This document provides no lower-bound on the information theoretic entropy present in cryptographically random values, but implementations should make a best effort to provide as much entropy as practicable.
A <b id=concept-cryptographically-random-values title=concept-cryptographically-random-values>cryptographically random value</b> is a value generated from a cryptographically strong pseudo-random number generator seeded with truly random values.  In practice, implementations should generate cryptographically random values using well-established cryptographic pseudo-random number generators, such as RC4, seeded with high-quality entropy, such as from an operating-system entropy source (e.g., ''/dev/urandom'').  This document provides no lower-bound on the information theoretic entropy present in cryptographically random values, but implementations should make a best effort to provide as much entropy as practicable.


==Interface==
==Interface <code title>Crypto</code>==


<pre>
<pre>interface Crypto {
interface Crypto {
   void getRandomValues(in ArrayBufferView array);
   void getRandomValues(in ArrayBufferView array);
};
};
Line 18: Line 17:
partial interface Window {
partial interface Window {
   readonly attribute Crypto crypto;
   readonly attribute Crypto crypto;
};
};</pre>
</pre>
 
==Methods==
 
===getRandomValues===


The <b id=dom-Crypto-getRandomValues title=dom-Crypto-getRandomValues><code>getRandomValues(<var>array</var>)</code></b> must run the following steps:
The <b id=dom-Crypto-getRandomValues title=dom-Crypto-getRandomValues><code>getRandomValues(<var>array</var>)</code></b> must run the following steps:

Revision as of 16:43, 18 August 2011

Overview

This document describes a proposal for the window.crypto API.

Definitions

Cryptographically Random Values

A cryptographically random value is a value generated from a cryptographically strong pseudo-random number generator seeded with truly random values. In practice, implementations should generate cryptographically random values using well-established cryptographic pseudo-random number generators, such as RC4, seeded with high-quality entropy, such as from an operating-system entropy source (e.g., /dev/urandom). This document provides no lower-bound on the information theoretic entropy present in cryptographically random values, but implementations should make a best effort to provide as much entropy as practicable.

Interface Crypto

interface Crypto {
  void getRandomValues(in ArrayBufferView array);
};

partial interface Window {
  readonly attribute Crypto crypto;
};

The getRandomValues(array) must run the following steps:

  1. array is an ArrayBufferView. If array is not of an integer type (i.e., Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, or Uint32Array), throw a TYPE_MISMATCH_ERR and abort these steps.
  2. Overwrite all elements of array with cryptographically random values of the appropriate type.