-
Notifications
You must be signed in to change notification settings - Fork 123
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix unit tests to work with FIPS certified Bouncy Castle (#132)
*Issue #, if available:* #99 *Description of changes:* These changes allow for the unit tests to pass when the FIPS validated Bouncy Castle provider is explicitly set. By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. # Check any applicable: - [ ] Were any files moved? Moving files changes their URL, which breaks all hyperlinks to the files.
- Loading branch information
1 parent
713bcd2
commit 3ef8958
Showing
3 changed files
with
55 additions
and
29 deletions.
There are no files selected for viewing
27 changes: 0 additions & 27 deletions
27
src/main/java/com/amazonaws/encryptionsdk/internal/RandomBytesGenerator.java
This file was deleted.
Oops, something went wrong.
48 changes: 48 additions & 0 deletions
48
src/test/java/com/amazonaws/encryptionsdk/internal/RandomBytesGenerator.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
/* | ||
* Copyright 2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except | ||
* in compliance with the License. A copy of the License is located at | ||
* | ||
* http://aws.amazon.com/apache2.0 | ||
* | ||
* or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the | ||
* specific language governing permissions and limitations under the License. | ||
*/ | ||
|
||
package com.amazonaws.encryptionsdk.internal; | ||
|
||
import java.security.SecureRandom; | ||
|
||
public class RandomBytesGenerator { | ||
private static final SecureRandom RND = new SecureRandom(); | ||
|
||
/* Some Providers (such as the FIPS certified Bouncy Castle) enforce a | ||
* maximum number of bytes that may be requested from SecureRandom. If | ||
* the requested len is larger than this value, the Secure Random will | ||
* be called multiple times to achieve the requested total length. */ | ||
private static final int MAX_BYTES = 1 << 15; | ||
|
||
/** | ||
* Generates a byte array of random data of the given length. | ||
* | ||
* @param len The length of the byte array. | ||
* @return The byte array. | ||
*/ | ||
public static byte[] generate(final int len) { | ||
final byte[] result = new byte[len]; | ||
int bytesGenerated = 0; | ||
|
||
while (bytesGenerated < len) { | ||
final int requestSize = Math.min(MAX_BYTES, len - bytesGenerated); | ||
final byte[] request = new byte[requestSize]; | ||
RND.nextBytes(request); | ||
System.arraycopy(request, 0, result, bytesGenerated, requestSize); | ||
bytesGenerated += requestSize; | ||
} | ||
|
||
return result; | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters