Disclaimer: Der Post ist 100 Jahre alt, aber wo ich ihn nun gerade in den Entwürfen finde…:
The Legion of the Bouncy Castle bietet mit bc-fips FIPS 140-2-zertifizierte Security Provider an, und zu der umfangreichen Dokumentation gibt es ein paar Good-to-knows:
- der Provider muss per
Security.addProvider(new BouncyCastleFipsProvider());hinzugefügt werden; perSecurity.insertProviderAt(new BouncyCastleFipsProvider(), 1)(die Position ist 1-based) gibt es eine RuntimeException: “Could not merge Java truststore with system truststore” - im o.g. PDF liest man häufig
EC.generateKeyPair(), die Methode gibt es so nicht. Stattdessen gibt es einegenerateKeyPair()unter Beispiel 31 im selben PDF:
|
1 2 3 4 5 |
public static KeyPair generateKeyPair() throws GeneralSecurityException { KeyPairGenerator keyPair = KeyPairGenerator.getInstance("EC", "BCFIPS"); keyPair.initialize(384); return keyPair.generateKeyPair(); } |
- Speziell unter Linux kann das Hochfahren der App sehr lange dauern, der Grund scheint
/dev/randomzu sein; einapt install havegedhilft - Die Beispiele basieren auf EC(DSA), es geht aber auch RSA. Dazu nehme man (ansonsten analog):
|
1 2 3 4 5 6 7 8 9 |
// key pair: KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "BCFIPS"); generator.initialize(2048); return generator.generateKeyPair(); // content signer: new JcaContentSignerBuilder("SHA256WithRSA") .setProvider("BCFIPS") .build(privateKey); |
- PS: Bei einem uninitialized KeyStore hilft vermutlich ein
keyStore.load(null, null);(Danke, Nils!)
HTH