1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.util.rsa;
35
36 import java.security.GeneralSecurityException;
37 import java.security.KeyFactory;
38 import java.security.KeyPair;
39 import java.security.KeyPairGenerator;
40 import java.security.PrivateKey;
41 import java.security.PublicKey;
42 import java.security.spec.PKCS8EncodedKeySpec;
43 import java.security.spec.X509EncodedKeySpec;
44 import java.util.Base64;
45
46 import fr.paris.lutece.portal.service.datastore.DatastoreService;
47
48 public class RSAKeyEnvironmentProvider implements IRSAKeyProvider
49 {
50
51 private static final String ENV_VAR_PUBLIC_KEY = "lutece_rsa_public_key";
52 private static final String ENV_VAR_PRIVATE_KEY = "lutece_rsa_private_key";
53 private static final String MESSAGE_NOT_FOUND = "RSA Key env vars not found";
54
55 @Override
56 public PublicKey getPublicKey( ) throws GeneralSecurityException
57 {
58 if ( System.getenv( ENV_VAR_PUBLIC_KEY ) != null )
59 {
60 X509EncodedKeySpec keySpecPublic = new X509EncodedKeySpec(
61 Base64.getDecoder( ).decode( System.getenv( ENV_VAR_PUBLIC_KEY ).getBytes( ) ) );
62
63 KeyFactory keyFactory = KeyFactory.getInstance( "RSA" );
64
65 return keyFactory.generatePublic( keySpecPublic );
66 }
67 else
68 {
69 throw new GeneralSecurityException( MESSAGE_NOT_FOUND );
70 }
71 }
72
73 @Override
74 public PrivateKey getPrivateKey ( ) throws GeneralSecurityException
75 {
76 if ( System.getenv( ENV_VAR_PRIVATE_KEY ) != null )
77 {
78 PKCS8EncodedKeySpec keySpecPrivate = new PKCS8EncodedKeySpec(
79 Base64.getDecoder( ).decode( System.getenv( ENV_VAR_PRIVATE_KEY ).getBytes( ) ) );
80
81 KeyFactory keyFactory = KeyFactory.getInstance( "RSA" );
82
83 return keyFactory.generatePrivate( keySpecPrivate );
84 }
85 else
86 {
87 throw new GeneralSecurityException( MESSAGE_NOT_FOUND );
88 }
89 }
90
91 }