# SecureRandomSpi

public abstract class **SecureRandomSpi** extends [Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html)  
implements [Serializable](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/Serializable.html) This class defines the *Service Provider Interface* (**SPI** )
for the `SecureRandom` class.
All the abstract methods in this class must be implemented by each
service provider who wishes to supply the implementation
of a cryptographically strong pseudo-random number generator.

##### See Also

- `https://developers.google.com/j2objc/javadoc/jre/reference/java/security/SecureRandom.html`

### Public Constructor Summary

|---|---|
|   | [SecureRandomSpi](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/SecureRandomSpi.html#SecureRandomSpi())() |

### Protected Method Summary

|---|---|
| abstract byte\[\] | [engineGenerateSeed](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/SecureRandomSpi.html#engineGenerateSeed(int))(int numBytes) Returns the given number of seed bytes. |
| abstract void | [engineNextBytes](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/SecureRandomSpi.html#engineNextBytes(byte[]))(byte\[\] bytes) Generates a user-specified number of random bytes. |
| abstract void | [engineSetSeed](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/SecureRandomSpi.html#engineSetSeed(byte[]))(byte\[\] seed) Reseeds this random object. |

### Inherited Method Summary

From class [java.lang.Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html)

|---|---|
| [Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) | [clone](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#clone())() Creates and returns a copy of this `Object`. |
| boolean | [equals](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#equals(java.lang.Object))([Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) obj) Compares this instance with the specified object and indicates if they are equal. |
| void | [finalize](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#finalize())() Invoked when the garbage collector has detected that this instance is no longer reachable. |
| final [Class](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Class.html)\<?\> | [getClass](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#getClass())() Returns the unique instance of `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Class.html` that represents this object's class. |
| int | [hashCode](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#hashCode())() Returns an integer hash code for this object. |
| final void | [notify](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#notify())() Causes a thread which is waiting on this object's monitor (by means of calling one of the `wait()` methods) to be woken up. |
| final void | [notifyAll](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#notifyAll())() Causes all threads which are waiting on this object's monitor (by means of calling one of the `wait()` methods) to be woken up. |
| [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [toString](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#toString())() Returns a string containing a concise, human-readable description of this object. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait(long,%20int))(long timeout, int nanos) Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object or until the specified timeout expires. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait(long))(long timeout) Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object or until the specified timeout expires. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait())() Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object. |

## Public Constructors

#### public
**SecureRandomSpi**
()

<br />

## Protected Methods

#### protected abstract byte\[\]
**engineGenerateSeed**
(int numBytes)

Returns the given number of seed bytes. This call may be used to
seed other random number generators.

##### Parameters

| numBytes | the number of seed bytes to generate. |
|---|---|

##### Returns

- the seed bytes.

#### protected abstract void
**engineNextBytes**
(byte\[\] bytes)

Generates a user-specified number of random bytes.

If a call to `engineSetSeed` had not occurred previously,
the first call to this method forces this SecureRandom implementation
to seed itself. This self-seeding will not occur if
`engineSetSeed` was previously called.

##### Parameters

| bytes | the array to be filled in with random bytes. |
|---|---|

#### protected abstract void
**engineSetSeed**
(byte\[\] seed)

Reseeds this random object. The given seed supplements, rather than
replaces, the existing seed. Thus, repeated calls are guaranteed
never to reduce randomness.

##### Parameters

| seed | the seed. |
|---|---|