From 29cbf08314dd7db21263343241234ef0d1a51bcf Mon Sep 17 00:00:00 2001 From: John Thompson Date: Sat, 7 May 2016 12:49:09 -0400 Subject: [PATCH 01/18] Add Property Source Example --- .../external/props/PropertySourceTest.java | 30 ++++++++++++ .../test/jms/FakeJmsBroker.java | 44 +++++++++++++++++ ...ExternalPropsPropertySourceTestConfig.java | 48 +++++++++++++++++++ src/test/resources/testing.properties | 4 ++ 4 files changed, 126 insertions(+) create mode 100644 src/test/java/guru/springframework/test/external/props/PropertySourceTest.java create mode 100644 src/test/java/guru/springframework/test/jms/FakeJmsBroker.java create mode 100644 src/test/java/guru/test/config/external/props/ExternalPropsPropertySourceTestConfig.java create mode 100644 src/test/resources/testing.properties diff --git a/src/test/java/guru/springframework/test/external/props/PropertySourceTest.java b/src/test/java/guru/springframework/test/external/props/PropertySourceTest.java new file mode 100644 index 00000000..2787613a --- /dev/null +++ b/src/test/java/guru/springframework/test/external/props/PropertySourceTest.java @@ -0,0 +1,30 @@ +package guru.springframework.test.external.props; + +import guru.springframework.test.jms.FakeJmsBroker; +import guru.test.config.external.props.ExternalPropsPropertySourceTestConfig; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.junit.Assert.assertEquals; + +/** + * Created by jt on 5/7/16. + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = ExternalPropsPropertySourceTestConfig.class) +public class PropertySourceTest { + + @Autowired + FakeJmsBroker fakeJmsBroker; + + @Test + public void testPropsSet() throws Exception { + assertEquals("10.10.10.123", fakeJmsBroker.getUrl()); + assertEquals(3330, fakeJmsBroker.getPort().intValue()); + assertEquals("Ron", fakeJmsBroker.getUser()); + assertEquals("Burgundy", fakeJmsBroker.getPassword()); + } +} diff --git a/src/test/java/guru/springframework/test/jms/FakeJmsBroker.java b/src/test/java/guru/springframework/test/jms/FakeJmsBroker.java new file mode 100644 index 00000000..7631d87f --- /dev/null +++ b/src/test/java/guru/springframework/test/jms/FakeJmsBroker.java @@ -0,0 +1,44 @@ +package guru.springframework.test.jms; + +/** + * Created by jt on 5/7/16. + */ +public class FakeJmsBroker { + + private String url; + private Integer port; + private String user; + private String password; + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public Integer getPort() { + return port; + } + + public void setPort(Integer port) { + this.port = port; + } + + public String getUser() { + return user; + } + + public void setUser(String user) { + this.user = user; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } +} diff --git a/src/test/java/guru/test/config/external/props/ExternalPropsPropertySourceTestConfig.java b/src/test/java/guru/test/config/external/props/ExternalPropsPropertySourceTestConfig.java new file mode 100644 index 00000000..023108f0 --- /dev/null +++ b/src/test/java/guru/test/config/external/props/ExternalPropsPropertySourceTestConfig.java @@ -0,0 +1,48 @@ +package guru.test.config.external.props; + +import guru.springframework.test.jms.FakeJmsBroker; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; + +/** + * + * since Spring 3.1 + * Created by jt on 5/7/16. + */ +@Configuration +@PropertySource("classpath:testing.properties") +public class ExternalPropsPropertySourceTestConfig { + + @Value("${guru.jms.server}") + String jmsServer; + + @Value("${guru.jms.port}") + String jmsPort; + + @Value("${guru.jms.user}") + String jmsUser; + + @Value("${guru.jms.password}") + String jmsPassword; + + + @Bean + public static PropertySourcesPlaceholderConfigurer properties() { + PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer + = new PropertySourcesPlaceholderConfigurer(); + return propertySourcesPlaceholderConfigurer; + } + + @Bean + public FakeJmsBroker fakeJmsBroker(){ + FakeJmsBroker fakeJmsBroker = new FakeJmsBroker(); + fakeJmsBroker.setUrl(jmsServer); + // fakeJmsBroker.setPort(jmsPort); + fakeJmsBroker.setUser(jmsUser); + fakeJmsBroker.setPassword(jmsPassword); + return fakeJmsBroker; + } +} diff --git a/src/test/resources/testing.properties b/src/test/resources/testing.properties new file mode 100644 index 00000000..0975f028 --- /dev/null +++ b/src/test/resources/testing.properties @@ -0,0 +1,4 @@ +guru.jms.server=10.10.10.123 +guru.jms.port=3330 +guru.jms.user=Ron +guru.jms.password=Burgundy \ No newline at end of file From fed3b2a92b7c4c4fcba5131aa212b1325c558549 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Sat, 7 May 2016 12:49:47 -0400 Subject: [PATCH 02/18] fixed type --- .../external/props/ExternalPropsPropertySourceTestConfig.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/guru/test/config/external/props/ExternalPropsPropertySourceTestConfig.java b/src/test/java/guru/test/config/external/props/ExternalPropsPropertySourceTestConfig.java index 023108f0..bd548d48 100644 --- a/src/test/java/guru/test/config/external/props/ExternalPropsPropertySourceTestConfig.java +++ b/src/test/java/guru/test/config/external/props/ExternalPropsPropertySourceTestConfig.java @@ -20,7 +20,7 @@ public class ExternalPropsPropertySourceTestConfig { String jmsServer; @Value("${guru.jms.port}") - String jmsPort; + Integer jmsPort; @Value("${guru.jms.user}") String jmsUser; @@ -40,7 +40,7 @@ public static PropertySourcesPlaceholderConfigurer properties() { public FakeJmsBroker fakeJmsBroker(){ FakeJmsBroker fakeJmsBroker = new FakeJmsBroker(); fakeJmsBroker.setUrl(jmsServer); - // fakeJmsBroker.setPort(jmsPort); + fakeJmsBroker.setPort(jmsPort); fakeJmsBroker.setUser(jmsUser); fakeJmsBroker.setPassword(jmsPassword); return fakeJmsBroker; From 5b8797a9da3fcf23b1c0e5b37da4c1ba4a77733c Mon Sep 17 00:00:00 2001 From: John Thompson Date: Sat, 7 May 2016 13:29:22 -0400 Subject: [PATCH 03/18] added env example --- .../external/props/PropertySourceEnvTest.java | 31 +++++++++++++++++++ .../props/ExternalPropsEnvironment.java | 29 +++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 src/test/java/guru/springframework/test/external/props/PropertySourceEnvTest.java create mode 100644 src/test/java/guru/test/config/external/props/ExternalPropsEnvironment.java diff --git a/src/test/java/guru/springframework/test/external/props/PropertySourceEnvTest.java b/src/test/java/guru/springframework/test/external/props/PropertySourceEnvTest.java new file mode 100644 index 00000000..0bd867f9 --- /dev/null +++ b/src/test/java/guru/springframework/test/external/props/PropertySourceEnvTest.java @@ -0,0 +1,31 @@ +package guru.springframework.test.external.props; + +import guru.springframework.test.jms.FakeJmsBroker; +import guru.test.config.external.props.ExternalPropsEnvironment; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.junit.Assert.assertEquals; + +/** + * Created by jt on 5/7/16. + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = ExternalPropsEnvironment.class) +public class PropertySourceEnvTest { + + @Autowired + FakeJmsBroker fakeJmsBroker; + + @Test + public void testPropsSet() throws Exception { + assertEquals("10.10.10.123", fakeJmsBroker.getUrl()); + assertEquals(3330, fakeJmsBroker.getPort().intValue()); + assertEquals("Ron", fakeJmsBroker.getUser()); + assertEquals("Burgundy", fakeJmsBroker.getPassword()); + } + +} diff --git a/src/test/java/guru/test/config/external/props/ExternalPropsEnvironment.java b/src/test/java/guru/test/config/external/props/ExternalPropsEnvironment.java new file mode 100644 index 00000000..9efe643e --- /dev/null +++ b/src/test/java/guru/test/config/external/props/ExternalPropsEnvironment.java @@ -0,0 +1,29 @@ +package guru.test.config.external.props; + +import guru.springframework.test.jms.FakeJmsBroker; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; + +/** + * Created by jt on 5/7/16. + */ +@Configuration +@PropertySource("classpath:testing.properties") +public class ExternalPropsEnvironment { + + @Autowired + Environment env; //also from Spring 3.1 + + @Bean + public FakeJmsBroker fakeJmsBrokerEnv(){ + FakeJmsBroker fakeJmsBroker = new FakeJmsBroker(); + fakeJmsBroker.setUrl(env.getProperty("guru.jms.server")); + fakeJmsBroker.setPort(env.getRequiredProperty("guru.jms.port", Integer.class)); + fakeJmsBroker.setUser(env.getProperty("guru.jms.user")); + fakeJmsBroker.setPassword(env.getProperty("guru.jms.password")); + return fakeJmsBroker; + } +} From d9cbbeb23eee36f54b7c74c21be5f5cfd1565bd7 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Sat, 7 May 2016 15:01:13 -0400 Subject: [PATCH 04/18] added multi file example --- .../props/PropertySourceMultiFileS4Test.java | 30 +++++++++++++++++ .../props/PropertySourceMultiFileTest.java | 30 +++++++++++++++++ .../props/ExternalPropsMultiFile.java | 29 ++++++++++++++++ .../props/ExternalPropsMultiFileS4.java | 33 +++++++++++++++++++ .../resources/encrypted-testing.properties | 1 + 5 files changed, 123 insertions(+) create mode 100644 src/test/java/guru/springframework/test/external/props/PropertySourceMultiFileS4Test.java create mode 100644 src/test/java/guru/springframework/test/external/props/PropertySourceMultiFileTest.java create mode 100644 src/test/java/guru/test/config/external/props/ExternalPropsMultiFile.java create mode 100644 src/test/java/guru/test/config/external/props/ExternalPropsMultiFileS4.java create mode 100644 src/test/resources/encrypted-testing.properties diff --git a/src/test/java/guru/springframework/test/external/props/PropertySourceMultiFileS4Test.java b/src/test/java/guru/springframework/test/external/props/PropertySourceMultiFileS4Test.java new file mode 100644 index 00000000..50fb2d74 --- /dev/null +++ b/src/test/java/guru/springframework/test/external/props/PropertySourceMultiFileS4Test.java @@ -0,0 +1,30 @@ +package guru.springframework.test.external.props; + +import guru.springframework.test.jms.FakeJmsBroker; +import guru.test.config.external.props.ExternalPropsMultiFileS4; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.junit.Assert.assertEquals; + +/** + * Created by jt on 5/7/16. + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = ExternalPropsMultiFileS4.class) +public class PropertySourceMultiFileS4Test { + + @Autowired + FakeJmsBroker fakeJmsBroker; + + @Test + public void testPropsSet() throws Exception { + assertEquals("10.10.10.123", fakeJmsBroker.getUrl()); + assertEquals(3330, fakeJmsBroker.getPort().intValue()); + assertEquals("Ron", fakeJmsBroker.getUser()); + assertEquals("&%$)(*&#^!@!@#$", fakeJmsBroker.getPassword()); + } +} diff --git a/src/test/java/guru/springframework/test/external/props/PropertySourceMultiFileTest.java b/src/test/java/guru/springframework/test/external/props/PropertySourceMultiFileTest.java new file mode 100644 index 00000000..df0b64c9 --- /dev/null +++ b/src/test/java/guru/springframework/test/external/props/PropertySourceMultiFileTest.java @@ -0,0 +1,30 @@ +package guru.springframework.test.external.props; + +import guru.springframework.test.jms.FakeJmsBroker; +import guru.test.config.external.props.ExternalPropsMultiFile; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.junit.Assert.assertEquals; + +/** + * Created by jt on 5/7/16. + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = ExternalPropsMultiFile.class) +public class PropertySourceMultiFileTest { + + @Autowired + FakeJmsBroker fakeJmsBroker; + + @Test + public void testPropsSet() throws Exception { + assertEquals("10.10.10.123", fakeJmsBroker.getUrl()); + assertEquals(3330, fakeJmsBroker.getPort().intValue()); + assertEquals("Ron", fakeJmsBroker.getUser()); + assertEquals("&%$)(*&#^!@!@#$", fakeJmsBroker.getPassword()); + } +} diff --git a/src/test/java/guru/test/config/external/props/ExternalPropsMultiFile.java b/src/test/java/guru/test/config/external/props/ExternalPropsMultiFile.java new file mode 100644 index 00000000..89dce1aa --- /dev/null +++ b/src/test/java/guru/test/config/external/props/ExternalPropsMultiFile.java @@ -0,0 +1,29 @@ +package guru.test.config.external.props; + +import guru.springframework.test.jms.FakeJmsBroker; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; + +/** + * Created by jt on 5/7/16. + */ +@Configuration +@PropertySource({"classpath:testing.properties", "classpath:encrypted-testing.properties"}) +public class ExternalPropsMultiFile { + + @Autowired + Environment env; + + @Bean + public FakeJmsBroker fakeJmsBrokerMulti(){ + FakeJmsBroker fakeJmsBroker = new FakeJmsBroker(); + fakeJmsBroker.setUrl(env.getProperty("guru.jms.server")); + fakeJmsBroker.setPort(env.getRequiredProperty("guru.jms.port", Integer.class)); + fakeJmsBroker.setUser(env.getProperty("guru.jms.user")); + fakeJmsBroker.setPassword(env.getProperty("guru.jms.encrypted.password")); + return fakeJmsBroker; + } +} diff --git a/src/test/java/guru/test/config/external/props/ExternalPropsMultiFileS4.java b/src/test/java/guru/test/config/external/props/ExternalPropsMultiFileS4.java new file mode 100644 index 00000000..81024ff3 --- /dev/null +++ b/src/test/java/guru/test/config/external/props/ExternalPropsMultiFileS4.java @@ -0,0 +1,33 @@ +package guru.test.config.external.props; + +import guru.springframework.test.jms.FakeJmsBroker; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.context.annotation.PropertySources; +import org.springframework.core.env.Environment; + +/** + * Created by jt on 5/7/16. + */ +@Configuration +@PropertySources({ + @PropertySource("classpath:testing.properties"), + @PropertySource("classpath:encrypted-testing.properties") +}) +public class ExternalPropsMultiFileS4 { + + @Autowired + Environment env; + + @Bean + public FakeJmsBroker fakeJmsBrokerMultiS4(){ + FakeJmsBroker fakeJmsBroker = new FakeJmsBroker(); + fakeJmsBroker.setUrl(env.getProperty("guru.jms.server")); + fakeJmsBroker.setPort(env.getRequiredProperty("guru.jms.port", Integer.class)); + fakeJmsBroker.setUser(env.getProperty("guru.jms.user")); + fakeJmsBroker.setPassword(env.getProperty("guru.jms.encrypted.password")); + return fakeJmsBroker; + } +} diff --git a/src/test/resources/encrypted-testing.properties b/src/test/resources/encrypted-testing.properties new file mode 100644 index 00000000..bbf3ff72 --- /dev/null +++ b/src/test/resources/encrypted-testing.properties @@ -0,0 +1 @@ +guru.jms.encrypted.password=&%$)(*&#^!@!@#$ \ No newline at end of file From e0c1fafb1591a8b60d68fdf822f3d965c07e6c56 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Mon, 16 May 2016 12:33:31 -0400 Subject: [PATCH 05/18] Sprring Boot Properties --- src/main/resources/application.properties | 6 +++- .../test/config/SpringBootJavaConfig.java | 34 +++++++++++++++++++ .../props/SpringBootPropertiesTest.java | 34 +++++++++++++++++++ 3 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 src/test/java/guru/springframework/test/config/SpringBootJavaConfig.java create mode 100644 src/test/java/guru/springframework/test/external/props/SpringBootPropertiesTest.java diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e6f67126..b9a151db 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,2 +1,6 @@ spring.activemq.in-memory=true -spring.activemq.pooled=false \ No newline at end of file +spring.activemq.pooled=false +guru.jms.server=10.10.10.123 +guru.jms.port=3330 +guru.jms.user=Ron +guru.jms.password=Burgundy \ No newline at end of file diff --git a/src/test/java/guru/springframework/test/config/SpringBootJavaConfig.java b/src/test/java/guru/springframework/test/config/SpringBootJavaConfig.java new file mode 100644 index 00000000..8765e18f --- /dev/null +++ b/src/test/java/guru/springframework/test/config/SpringBootJavaConfig.java @@ -0,0 +1,34 @@ +package guru.springframework.test.config; + +import guru.springframework.test.jms.FakeJmsBroker; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * Created by jt on 5/7/16. + */ +@Configuration +public class SpringBootJavaConfig { + @Value("${guru.jms.server}") + String jmsServer; + + @Value("${guru.jms.port}") + Integer jmsPort; + + @Value("${guru.jms.user}") + String jmsUser; + + @Value("${guru.jms.password}") + String jmsPassword; + + @Bean + public FakeJmsBroker fakeJmsBroker(){ + FakeJmsBroker fakeJmsBroker = new FakeJmsBroker(); + fakeJmsBroker.setUrl(jmsServer); + fakeJmsBroker.setPort(jmsPort); + fakeJmsBroker.setUser(jmsUser); + fakeJmsBroker.setPassword(jmsPassword); + return fakeJmsBroker; + } +} diff --git a/src/test/java/guru/springframework/test/external/props/SpringBootPropertiesTest.java b/src/test/java/guru/springframework/test/external/props/SpringBootPropertiesTest.java new file mode 100644 index 00000000..0b1ead73 --- /dev/null +++ b/src/test/java/guru/springframework/test/external/props/SpringBootPropertiesTest.java @@ -0,0 +1,34 @@ +package guru.springframework.test.external.props; + +import guru.springframework.SpringCoreDevOpsApplication; +import guru.springframework.test.jms.FakeJmsBroker; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.boot.test.WebIntegrationTest; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.junit.Assert.assertEquals; + +/** + * Created by jt on 5/7/16. + */ +@RunWith(SpringJUnit4ClassRunner.class) +@SpringApplicationConfiguration(SpringCoreDevOpsApplication.class) +@WebIntegrationTest +@TestPropertySource("/application.properties") +public class SpringBootPropertiesTest { + @Autowired + FakeJmsBroker fakeJmsBroker; + + @Test + public void testPropsSet() throws Exception { + assertEquals("10.10.10.123", fakeJmsBroker.getUrl()); + assertEquals(3330, fakeJmsBroker.getPort().intValue()); + assertEquals("Ron", fakeJmsBroker.getUser()); + assertEquals("Burgundy", fakeJmsBroker.getPassword()); + } + +} From ed001ff520169e09da8a1291a66b2d1f14615baf Mon Sep 17 00:00:00 2001 From: John Thompson Date: Sat, 21 May 2016 14:22:07 -0400 Subject: [PATCH 06/18] configuring Spring Profiles --- .../springframework/test/ds/DevDataSource.java | 16 ++++++++++++++++ .../springframework/test/ds/FakeDataSource.java | 9 +++++++++ .../springframework/test/ds/ProdDataSource.java | 16 ++++++++++++++++ .../springframework/test/ds/QADataSource.java | 17 +++++++++++++++++ 4 files changed, 58 insertions(+) create mode 100644 src/test/java/guru/springframework/test/ds/DevDataSource.java create mode 100644 src/test/java/guru/springframework/test/ds/FakeDataSource.java create mode 100644 src/test/java/guru/springframework/test/ds/ProdDataSource.java create mode 100644 src/test/java/guru/springframework/test/ds/QADataSource.java diff --git a/src/test/java/guru/springframework/test/ds/DevDataSource.java b/src/test/java/guru/springframework/test/ds/DevDataSource.java new file mode 100644 index 00000000..1d9c30a9 --- /dev/null +++ b/src/test/java/guru/springframework/test/ds/DevDataSource.java @@ -0,0 +1,16 @@ +package guru.springframework.test.ds; + +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Component; + +/** + * Created by jt on 5/21/16. + */ +@Component +@Profile("dev") +public class DevDataSource implements FakeDataSource { + @Override + public String getConnectionInfo() { + return "I'm the Development DataSource"; + } +} diff --git a/src/test/java/guru/springframework/test/ds/FakeDataSource.java b/src/test/java/guru/springframework/test/ds/FakeDataSource.java new file mode 100644 index 00000000..38c28d08 --- /dev/null +++ b/src/test/java/guru/springframework/test/ds/FakeDataSource.java @@ -0,0 +1,9 @@ +package guru.springframework.test.ds; + +/** + * Created by jt on 5/21/16. + */ +public interface FakeDataSource { + + String getConnectionInfo(); +} diff --git a/src/test/java/guru/springframework/test/ds/ProdDataSource.java b/src/test/java/guru/springframework/test/ds/ProdDataSource.java new file mode 100644 index 00000000..49fbd52a --- /dev/null +++ b/src/test/java/guru/springframework/test/ds/ProdDataSource.java @@ -0,0 +1,16 @@ +package guru.springframework.test.ds; + +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Component; + +/** + * Created by jt on 5/21/16. + */ +@Component +@Profile("prod") +public class ProdDataSource implements FakeDataSource { + @Override + public String getConnectionInfo() { + return "I'm the Production Datasource"; + } +} diff --git a/src/test/java/guru/springframework/test/ds/QADataSource.java b/src/test/java/guru/springframework/test/ds/QADataSource.java new file mode 100644 index 00000000..aeb017c9 --- /dev/null +++ b/src/test/java/guru/springframework/test/ds/QADataSource.java @@ -0,0 +1,17 @@ +package guru.springframework.test.ds; + +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Component; + +/** + * Created by jt on 5/21/16. + */ +@Component +@Profile("qa") +public class QADataSource implements FakeDataSource { + + @Override + public String getConnectionInfo() { + return "I'm the QA Datasource"; + } +} From 83699f30ccd037af4d52c54796fdf59b2b382148 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Sat, 21 May 2016 14:49:26 -0400 Subject: [PATCH 07/18] Testing Active Profiles --- .../test/config/DataSourceConfig.java | 12 +++++++ .../test/ds/DevDataSource.java | 2 +- .../test/dstest/DataSourceTest.java | 34 +++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 src/test/java/guru/springframework/test/config/DataSourceConfig.java create mode 100644 src/test/java/guru/springframework/test/dstest/DataSourceTest.java diff --git a/src/test/java/guru/springframework/test/config/DataSourceConfig.java b/src/test/java/guru/springframework/test/config/DataSourceConfig.java new file mode 100644 index 00000000..f36104f7 --- /dev/null +++ b/src/test/java/guru/springframework/test/config/DataSourceConfig.java @@ -0,0 +1,12 @@ +package guru.springframework.test.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +/** + * Created by jt on 5/21/16. + */ +@Configuration +@ComponentScan("guru.springframework.test.ds") +public class DataSourceConfig { +} diff --git a/src/test/java/guru/springframework/test/ds/DevDataSource.java b/src/test/java/guru/springframework/test/ds/DevDataSource.java index 1d9c30a9..a30f00d1 100644 --- a/src/test/java/guru/springframework/test/ds/DevDataSource.java +++ b/src/test/java/guru/springframework/test/ds/DevDataSource.java @@ -7,7 +7,7 @@ * Created by jt on 5/21/16. */ @Component -@Profile("dev") +@Profile({"dev", "default"}) public class DevDataSource implements FakeDataSource { @Override public String getConnectionInfo() { diff --git a/src/test/java/guru/springframework/test/dstest/DataSourceTest.java b/src/test/java/guru/springframework/test/dstest/DataSourceTest.java new file mode 100644 index 00000000..4cc60f41 --- /dev/null +++ b/src/test/java/guru/springframework/test/dstest/DataSourceTest.java @@ -0,0 +1,34 @@ +package guru.springframework.test.dstest; + +/** + * Created by jt on 5/21/16. + */ + +import guru.springframework.test.config.DataSourceConfig; +import guru.springframework.test.ds.FakeDataSource; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@SpringApplicationConfiguration(DataSourceConfig.class) +@ActiveProfiles("guru") +public class DataSourceTest { + + private FakeDataSource fakeDataSource; + + @Autowired + public void setFakeDataSource(FakeDataSource fakeDataSource) { + this.fakeDataSource = fakeDataSource; + } + + @Test + public void TestDataSource() throws Exception { + + System.out.println(fakeDataSource.getConnectionInfo()); + + } +} From 3d15e5d2e2d66fe2f72f9fcb743a037def665dbc Mon Sep 17 00:00:00 2001 From: John Thompson Date: Sat, 21 May 2016 15:28:23 -0400 Subject: [PATCH 08/18] Profiles at Runtime --- .../profilesysout/DefaultProfileSysOut.java | 20 +++++++++++++++++++ .../profilesysout/DevProfileSysOut.java | 20 +++++++++++++++++++ .../profilesysout/ProdProfileSysOut.java | 19 ++++++++++++++++++ .../profilesysout/QAProfileSysOut.java | 20 +++++++++++++++++++ src/main/resources/application.properties | 4 +++- 5 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 src/main/java/guru/springframework/bootstrap/profilesysout/DefaultProfileSysOut.java create mode 100644 src/main/java/guru/springframework/bootstrap/profilesysout/DevProfileSysOut.java create mode 100644 src/main/java/guru/springframework/bootstrap/profilesysout/ProdProfileSysOut.java create mode 100644 src/main/java/guru/springframework/bootstrap/profilesysout/QAProfileSysOut.java diff --git a/src/main/java/guru/springframework/bootstrap/profilesysout/DefaultProfileSysOut.java b/src/main/java/guru/springframework/bootstrap/profilesysout/DefaultProfileSysOut.java new file mode 100644 index 00000000..90377caa --- /dev/null +++ b/src/main/java/guru/springframework/bootstrap/profilesysout/DefaultProfileSysOut.java @@ -0,0 +1,20 @@ +package guru.springframework.bootstrap.profilesysout; + +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Component; + +/** + * Created by jt on 5/21/16. + */ +@Component +@Profile("default") +public class DefaultProfileSysOut { + + public DefaultProfileSysOut() { + System.out.println("##################################"); + System.out.println("##################################"); + System.out.println("## DEFAULT ##"); + System.out.println("##################################"); + System.out.println("##################################"); + } +} diff --git a/src/main/java/guru/springframework/bootstrap/profilesysout/DevProfileSysOut.java b/src/main/java/guru/springframework/bootstrap/profilesysout/DevProfileSysOut.java new file mode 100644 index 00000000..89f245dd --- /dev/null +++ b/src/main/java/guru/springframework/bootstrap/profilesysout/DevProfileSysOut.java @@ -0,0 +1,20 @@ +package guru.springframework.bootstrap.profilesysout; + +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Component; + +/** + * Created by jt on 5/21/16. + */ +@Component +@Profile("dev") +public class DevProfileSysOut { + + public DevProfileSysOut() { + System.out.println("##################################"); + System.out.println("##################################"); + System.out.println("## DEV ##"); + System.out.println("##################################"); + System.out.println("##################################"); + } +} diff --git a/src/main/java/guru/springframework/bootstrap/profilesysout/ProdProfileSysOut.java b/src/main/java/guru/springframework/bootstrap/profilesysout/ProdProfileSysOut.java new file mode 100644 index 00000000..08011a18 --- /dev/null +++ b/src/main/java/guru/springframework/bootstrap/profilesysout/ProdProfileSysOut.java @@ -0,0 +1,19 @@ +package guru.springframework.bootstrap.profilesysout; + +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Component; + +/** + * Created by jt on 5/21/16. + */ +@Component +@Profile("prod") +public class ProdProfileSysOut { + public ProdProfileSysOut() { + System.out.println("##################################"); + System.out.println("##################################"); + System.out.println("## PROD ##"); + System.out.println("##################################"); + System.out.println("##################################"); + } +} diff --git a/src/main/java/guru/springframework/bootstrap/profilesysout/QAProfileSysOut.java b/src/main/java/guru/springframework/bootstrap/profilesysout/QAProfileSysOut.java new file mode 100644 index 00000000..bb49711a --- /dev/null +++ b/src/main/java/guru/springframework/bootstrap/profilesysout/QAProfileSysOut.java @@ -0,0 +1,20 @@ +package guru.springframework.bootstrap.profilesysout; + +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Component; + +/** + * Created by jt on 5/21/16. + */ +@Component +@Profile("qa") +public class QAProfileSysOut { + + public QAProfileSysOut() { + System.out.println("##################################"); + System.out.println("##################################"); + System.out.println("## QA ##"); + System.out.println("##################################"); + System.out.println("##################################"); + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index b9a151db..099aaabb 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -3,4 +3,6 @@ spring.activemq.pooled=false guru.jms.server=10.10.10.123 guru.jms.port=3330 guru.jms.user=Ron -guru.jms.password=Burgundy \ No newline at end of file +guru.jms.password=Burgundy + +spring.profiles.active=dev \ No newline at end of file From e77338a3f15131db5908191e5b37c0c094992452 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Sat, 21 May 2016 15:54:12 -0400 Subject: [PATCH 09/18] Profiles at Runtime --- .../bootstrap/profilesysout/DefaultProfileSysOut.java | 6 +++++- src/main/resources/application-default.properties | 1 + src/main/resources/application.properties | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/application-default.properties diff --git a/src/main/java/guru/springframework/bootstrap/profilesysout/DefaultProfileSysOut.java b/src/main/java/guru/springframework/bootstrap/profilesysout/DefaultProfileSysOut.java index 90377caa..171d59b5 100644 --- a/src/main/java/guru/springframework/bootstrap/profilesysout/DefaultProfileSysOut.java +++ b/src/main/java/guru/springframework/bootstrap/profilesysout/DefaultProfileSysOut.java @@ -1,5 +1,7 @@ package guru.springframework.bootstrap.profilesysout; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; @@ -10,10 +12,12 @@ @Profile("default") public class DefaultProfileSysOut { - public DefaultProfileSysOut() { + @Autowired + public DefaultProfileSysOut(@Value("${guru.springframework.profile.message}") String msg) { System.out.println("##################################"); System.out.println("##################################"); System.out.println("## DEFAULT ##"); + System.out.println(msg); System.out.println("##################################"); System.out.println("##################################"); } diff --git a/src/main/resources/application-default.properties b/src/main/resources/application-default.properties new file mode 100644 index 00000000..2d9b3732 --- /dev/null +++ b/src/main/resources/application-default.properties @@ -0,0 +1 @@ +guru.springframework.profile.message=This is a default profile \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 099aaabb..050b80e5 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -5,4 +5,4 @@ guru.jms.port=3330 guru.jms.user=Ron guru.jms.password=Burgundy -spring.profiles.active=dev \ No newline at end of file +#spring.profiles.active=dev From 6b6b26b5ea46f015fe58436608d5ed8416eacd93 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Sat, 21 May 2016 16:26:52 -0400 Subject: [PATCH 10/18] Code Assignment complete --- .../profilesysout/DevProfileSysOut.java | 6 +++++- .../profilesysout/NonProfileBean.java | 18 ++++++++++++++++++ .../profilesysout/ProdProfileSysOut.java | 7 ++++++- .../profilesysout/QAProfileSysOut.java | 6 +++++- src/main/resources/application-dev.properties | 1 + src/main/resources/application-prod.properties | 1 + src/main/resources/application-qa.properties | 1 + src/main/resources/application.properties | 2 +- 8 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 src/main/java/guru/springframework/bootstrap/profilesysout/NonProfileBean.java create mode 100644 src/main/resources/application-dev.properties create mode 100644 src/main/resources/application-prod.properties create mode 100644 src/main/resources/application-qa.properties diff --git a/src/main/java/guru/springframework/bootstrap/profilesysout/DevProfileSysOut.java b/src/main/java/guru/springframework/bootstrap/profilesysout/DevProfileSysOut.java index 89f245dd..652f4ea0 100644 --- a/src/main/java/guru/springframework/bootstrap/profilesysout/DevProfileSysOut.java +++ b/src/main/java/guru/springframework/bootstrap/profilesysout/DevProfileSysOut.java @@ -1,5 +1,7 @@ package guru.springframework.bootstrap.profilesysout; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; @@ -10,10 +12,12 @@ @Profile("dev") public class DevProfileSysOut { - public DevProfileSysOut() { + @Autowired + public DevProfileSysOut(@Value("${guru.springframework.profile.message}") String msg) { System.out.println("##################################"); System.out.println("##################################"); System.out.println("## DEV ##"); + System.out.println(msg); System.out.println("##################################"); System.out.println("##################################"); } diff --git a/src/main/java/guru/springframework/bootstrap/profilesysout/NonProfileBean.java b/src/main/java/guru/springframework/bootstrap/profilesysout/NonProfileBean.java new file mode 100644 index 00000000..2dccdb04 --- /dev/null +++ b/src/main/java/guru/springframework/bootstrap/profilesysout/NonProfileBean.java @@ -0,0 +1,18 @@ +package guru.springframework.bootstrap.profilesysout; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +/** + * Created by jt on 5/21/16. + */ +@Component +public class NonProfileBean { + + @Autowired + public NonProfileBean(@Value("${guru.springframework.profile.message}") String msg) { + System.out.println("**********" + msg + "************"); + + } +} diff --git a/src/main/java/guru/springframework/bootstrap/profilesysout/ProdProfileSysOut.java b/src/main/java/guru/springframework/bootstrap/profilesysout/ProdProfileSysOut.java index 08011a18..9f7980c8 100644 --- a/src/main/java/guru/springframework/bootstrap/profilesysout/ProdProfileSysOut.java +++ b/src/main/java/guru/springframework/bootstrap/profilesysout/ProdProfileSysOut.java @@ -1,5 +1,7 @@ package guru.springframework.bootstrap.profilesysout; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; @@ -9,10 +11,13 @@ @Component @Profile("prod") public class ProdProfileSysOut { - public ProdProfileSysOut() { + + @Autowired + public ProdProfileSysOut(@Value("${guru.springframework.profile.message}") String msg) { System.out.println("##################################"); System.out.println("##################################"); System.out.println("## PROD ##"); + System.out.println(msg); System.out.println("##################################"); System.out.println("##################################"); } diff --git a/src/main/java/guru/springframework/bootstrap/profilesysout/QAProfileSysOut.java b/src/main/java/guru/springframework/bootstrap/profilesysout/QAProfileSysOut.java index bb49711a..5e05122a 100644 --- a/src/main/java/guru/springframework/bootstrap/profilesysout/QAProfileSysOut.java +++ b/src/main/java/guru/springframework/bootstrap/profilesysout/QAProfileSysOut.java @@ -1,5 +1,7 @@ package guru.springframework.bootstrap.profilesysout; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; @@ -10,10 +12,12 @@ @Profile("qa") public class QAProfileSysOut { - public QAProfileSysOut() { + @Autowired + public QAProfileSysOut(@Value("${guru.springframework.profile.message}") String msg) { System.out.println("##################################"); System.out.println("##################################"); System.out.println("## QA ##"); + System.out.println(msg); System.out.println("##################################"); System.out.println("##################################"); } diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties new file mode 100644 index 00000000..535b3e6b --- /dev/null +++ b/src/main/resources/application-dev.properties @@ -0,0 +1 @@ +guru.springframework.profile.message=This is my DEV profile \ No newline at end of file diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties new file mode 100644 index 00000000..329b2205 --- /dev/null +++ b/src/main/resources/application-prod.properties @@ -0,0 +1 @@ +guru.springframework.profile.message=This is my production profile \ No newline at end of file diff --git a/src/main/resources/application-qa.properties b/src/main/resources/application-qa.properties new file mode 100644 index 00000000..ad408667 --- /dev/null +++ b/src/main/resources/application-qa.properties @@ -0,0 +1 @@ +guru.springframework.profile.message=This is my QA Profile \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 050b80e5..e69b3533 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -5,4 +5,4 @@ guru.jms.port=3330 guru.jms.user=Ron guru.jms.password=Burgundy -#spring.profiles.active=dev +spring.profiles.active=dev From 598570b7f12af3d7d40533eeb8ddbe6240346c08 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Sat, 21 May 2016 16:54:37 -0400 Subject: [PATCH 11/18] added YAML example --- src/main/resources/application-dev.properties | 1 - src/main/resources/application-dev.yaml | 4 ++++ 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/application-dev.yaml diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties index 535b3e6b..e69de29b 100644 --- a/src/main/resources/application-dev.properties +++ b/src/main/resources/application-dev.properties @@ -1 +0,0 @@ -guru.springframework.profile.message=This is my DEV profile \ No newline at end of file diff --git a/src/main/resources/application-dev.yaml b/src/main/resources/application-dev.yaml new file mode 100644 index 00000000..d90fe99d --- /dev/null +++ b/src/main/resources/application-dev.yaml @@ -0,0 +1,4 @@ +guru: + springframework: + profile: + message: This is my DEV profile \ No newline at end of file From 886a431f875543c79539ee21a33add19e39348e9 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Thu, 26 May 2016 18:59:00 -0400 Subject: [PATCH 12/18] added YAML example --- pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pom.xml b/pom.xml index 193876b0..ef6166de 100644 --- a/pom.xml +++ b/pom.xml @@ -52,6 +52,8 @@ h2 runtime + + mysql mysql-connector-java From 6da54eb876bc1554e659ee303508a69857baf50d Mon Sep 17 00:00:00 2001 From: John Thompson Date: Thu, 26 May 2016 19:44:59 -0400 Subject: [PATCH 13/18] added mysql settings --- src/main/resources/application-qa.properties | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/resources/application-qa.properties b/src/main/resources/application-qa.properties index ad408667..b31c8a21 100644 --- a/src/main/resources/application-qa.properties +++ b/src/main/resources/application-qa.properties @@ -1 +1,7 @@ -guru.springframework.profile.message=This is my QA Profile \ No newline at end of file +guru.springframework.profile.message=This is my QA Profile + +spring.datasource.url=jdbc:mysql://localhost:3306/springguru +spring.datasource.username=root +spring.datasource.password= + +spring.jpa.hibernate.ddl-auto=update \ No newline at end of file From 9a5a1043f97e314c47ecc2ffa634448e8df951e8 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Fri, 27 May 2016 18:15:08 -0400 Subject: [PATCH 14/18] added mysql settings --- .../bootstrap/DevOpsBootstrap.java | 281 +++++++++--------- 1 file changed, 143 insertions(+), 138 deletions(-) diff --git a/src/main/java/guru/springframework/bootstrap/DevOpsBootstrap.java b/src/main/java/guru/springframework/bootstrap/DevOpsBootstrap.java index 4f15484d..2d966870 100644 --- a/src/main/java/guru/springframework/bootstrap/DevOpsBootstrap.java +++ b/src/main/java/guru/springframework/bootstrap/DevOpsBootstrap.java @@ -6,6 +6,7 @@ import guru.springframework.repositories.AuthorRepository; import guru.springframework.repositories.ProductCategoryRepository; import guru.springframework.repositories.ProductRepository; +import org.apache.commons.collections4.IteratorUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; @@ -40,143 +41,147 @@ public void setProductRepository(ProductRepository productRepository) { @Override public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) { - Author jt = new Author(); - jt.setFirstName("John"); - jt.setLastName("Thompson"); - jt.setId(1); - jt.setImage("instructor_jt.jpg"); - - jt = authorRepository.save(jt); - - ProductCategory springIntroCat = new ProductCategory(); - springIntroCat.setId(1); - springIntroCat.setCategory("Spring Introduction"); - - springIntroCat = productCategoryRepository.save(springIntroCat); - - ProductCategory springCoreCat = new ProductCategory(); - springCoreCat.setId(2); - springCoreCat.setCategory("Spring Core"); - - springCoreCat = productCategoryRepository.save(springCoreCat); - - ProductCategory springBootCat = new ProductCategory(); - springBootCat.setId(3); - springBootCat.setCategory("Spring Boot"); - - springBootCat = productCategoryRepository.save(springBootCat); - - ProductCategory thymeleafCat = new ProductCategory(); - thymeleafCat.setId(4); - thymeleafCat.setCategory("Thymeleaf"); - - thymeleafCat = productCategoryRepository.save(thymeleafCat); - - ProductCategory geapCat = new ProductCategory(); - geapCat.setId(5); - geapCat.setCategory("G.E.A.P"); - - geapCat = productCategoryRepository.save(geapCat); - - Product springIntro = new Product(); - springIntro.setId(1); - springIntro.setCourseName("Introduction to Spring"); - springIntro.setCourseSubtitle("Start Learning Spring!"); - springIntro.setAuthor(jt); - springIntro.setCourseDescription("Why would you want to learn about the Spring Framework? Simple, Spring is the most widely used framework in the enterprise today. Major companies all over the world are hiring programmers who know the Spring Framework.\n" + - "\n" + - "My Introduction Spring Framework Tutorial is designed to give you an introduction to the Spring Framework. This course is written for beginners. Ideally before taking the course, you should already have a foundation with the Java programming language. You don't need to be an expert in Java, but you should the basics of Object Oriented Programming with Java.\n" + - "\n" + - "You will learn what Dependency Injection is, and how Spring uses Inversion of Control to leverage Dependency Injection. Next in my course, I will walk you step by step through building your very first Spring Framework application. I'll show you hot to use the Spring Initializer and Spring Boot to jumpstart your Spring Framework project. Ideally, you can follow along and create your own Spring project. I know it can be frustrating to follow along in a course and run into errors. So don't worry, I have the complete source code examples in Git for you to checkout and use."); - springIntro.setPrice(new BigDecimal("0")); - springIntro.setImageUrl("SpringIntroThumb.png"); - springIntro.getProductCategories().add(springIntroCat); - springIntro.getProductCategories().add(springBootCat); - - springIntro = productRepository.save(springIntro); - - Product springCoreUltimate = new Product(); - springCoreUltimate.setId(2); - springCoreUltimate.setCourseName("Spring Core Ultimate"); - springCoreUltimate.setCourseSubtitle("Ultimate Bundle of Spring Core!"); - springCoreUltimate.setAuthor(jt); - springCoreUltimate.setCourseDescription("Why would you want to learn about the Spring Framework? Simple, Spring is the most widely used framework in the enterprise today. Major companies all over the world are hiring programmers who know the Spring Framework.\n" + - "\n" + - "My Introduction Spring Framework Tutorial is designed to give you an introduction to the Spring Framework. This course is written for beginners. Ideally before taking the course, you should already have a foundation with the Java programming language. You don't need to be an expert in Java, but you should the basics of Object Oriented Programming with Java.\n" + - "\n" + - "You will learn what Dependency Injection is, and how Spring uses Inversion of Control to leverage Dependency Injection. Next in my course, I will walk you step by step through building your very first Spring Framework application. I'll show you hot to use the Spring Initializer and Spring Boot to jumpstart your Spring Framework project. Ideally, you can follow along and create your own Spring project. I know it can be frustrating to follow along in a course and run into errors. So don't worry, I have the complete source code examples in Git for you to checkout and use."); - springCoreUltimate.setPrice(new BigDecimal("199")); - springCoreUltimate.setImageUrl("SpringCoreUltimateThumb.png"); - springCoreUltimate.getProductCategories().add(springCoreCat); - springCoreUltimate.getProductCategories().add(springBootCat); - - springCoreUltimate = productRepository.save(springCoreUltimate); - - Product thymeleaf = new Product(); - thymeleaf.setId(3); - thymeleaf.setCourseName("Thymeleaf"); - thymeleaf.setCourseSubtitle("Thymeleaf and Spring!"); - thymeleaf.setAuthor(jt); - thymeleaf.setCourseDescription("Why would you want to learn about the Spring Framework? Simple, Spring is the most widely used framework in the enterprise today. Major companies all over the world are hiring programmers who know the Spring Framework.\n" + - "\n" + - "My Introduction Spring Framework Tutorial is designed to give you an introduction to the Spring Framework. This course is written for beginners. Ideally before taking the course, you should already have a foundation with the Java programming language. You don't need to be an expert in Java, but you should the basics of Object Oriented Programming with Java.\n" + - "\n" + - "You will learn what Dependency Injection is, and how Spring uses Inversion of Control to leverage Dependency Injection. Next in my course, I will walk you step by step through building your very first Spring Framework application. I'll show you hot to use the Spring Initializer and Spring Boot to jumpstart your Spring Framework project. Ideally, you can follow along and create your own Spring project. I know it can be frustrating to follow along in a course and run into errors. So don't worry, I have the complete source code examples in Git for you to checkout and use."); - thymeleaf.setPrice(new BigDecimal("199")); - thymeleaf.setImageUrl("ThymeleafThumb.png"); - thymeleaf.getProductCategories().add(thymeleafCat); - - thymeleaf = productRepository.save(thymeleaf); - - Product springCore = new Product(); - springCore.setId(4); - springCore.setCourseName("Spring Core"); - springCore.setCourseSubtitle("Spring Core - mastering Spring!"); - springCore.setAuthor(jt); - springCore.setCourseDescription("Why would you want to learn about the Spring Framework? Simple, Spring is the most widely used framework in the enterprise today. Major companies all over the world are hiring programmers who know the Spring Framework.\n" + - "\n" + - "My Introduction Spring Framework Tutorial is designed to give you an introduction to the Spring Framework. This course is written for beginners. Ideally before taking the course, you should already have a foundation with the Java programming language. You don't need to be an expert in Java, but you should the basics of Object Oriented Programming with Java.\n" + - "\n" + - "You will learn what Dependency Injection is, and how Spring uses Inversion of Control to leverage Dependency Injection. Next in my course, I will walk you step by step through building your very first Spring Framework application. I'll show you hot to use the Spring Initializer and Spring Boot to jumpstart your Spring Framework project. Ideally, you can follow along and create your own Spring project. I know it can be frustrating to follow along in a course and run into errors. So don't worry, I have the complete source code examples in Git for you to checkout and use."); - springCore.setPrice(new BigDecimal("199")); - springCore.setImageUrl("SpringCoreThumb.png"); - springCore.getProductCategories().add(springCoreCat); - springCore.getProductCategories().add(springBootCat); - - springCore = productRepository.save(springCore); - - Product springCoreAdv = new Product(); - springCoreAdv.setId(5); - springCoreAdv.setCourseName("Spring Core Advanced"); - springCoreAdv.setCourseSubtitle("Advanced Spring Core!"); - springCoreAdv.setAuthor(jt); - springCoreAdv.setCourseDescription("Why would you want to learn about the Spring Framework? Simple, Spring is the most widely used framework in the enterprise today. Major companies all over the world are hiring programmers who know the Spring Framework.\n" + - "\n" + - "My Introduction Spring Framework Tutorial is designed to give you an introduction to the Spring Framework. This course is written for beginners. Ideally before taking the course, you should already have a foundation with the Java programming language. You don't need to be an expert in Java, but you should the basics of Object Oriented Programming with Java.\n" + - "\n" + - "You will learn what Dependency Injection is, and how Spring uses Inversion of Control to leverage Dependency Injection. Next in my course, I will walk you step by step through building your very first Spring Framework application. I'll show you hot to use the Spring Initializer and Spring Boot to jumpstart your Spring Framework project. Ideally, you can follow along and create your own Spring project. I know it can be frustrating to follow along in a course and run into errors. So don't worry, I have the complete source code examples in Git for you to checkout and use."); - springCoreAdv.setPrice(new BigDecimal("199")); - springCoreAdv.setImageUrl("SpringCoreAdvancedThumb.png"); - springCoreAdv.getProductCategories().add(springCoreCat); - springCoreAdv.getProductCategories().add(springBootCat); - - springCoreAdv = productRepository.save(springCoreAdv); - - Product springCoreDevOps = new Product(); - springCoreDevOps.setId(6); - springCoreDevOps.setCourseName("Spring Core Dev-Ops"); - springCoreDevOps.setCourseSubtitle("Deploying Spring in the Enterprise and the cloud!"); - springCoreDevOps.setAuthor(jt); - springCoreDevOps.setCourseDescription("Why would you want to learn about the Spring Framework? Simple, Spring is the most widely used framework in the enterprise today. Major companies all over the world are hiring programmers who know the Spring Framework.\n" + - "\n" + - "My Introduction Spring Framework Tutorial is designed to give you an introduction to the Spring Framework. This course is written for beginners. Ideally before taking the course, you should already have a foundation with the Java programming language. You don't need to be an expert in Java, but you should the basics of Object Oriented Programming with Java.\n" + - "\n" + - "You will learn what Dependency Injection is, and how Spring uses Inversion of Control to leverage Dependency Injection. Next in my course, I will walk you step by step through building your very first Spring Framework application. I'll show you hot to use the Spring Initializer and Spring Boot to jumpstart your Spring Framework project. Ideally, you can follow along and create your own Spring project. I know it can be frustrating to follow along in a course and run into errors. So don't worry, I have the complete source code examples in Git for you to checkout and use."); - springCoreDevOps.setPrice(new BigDecimal("199")); - springCoreDevOps.setImageUrl("SpringCoreDevOpsThumb.png"); - springCoreDevOps.getProductCategories().add(springCoreCat); - springCoreDevOps.getProductCategories().add(springBootCat); - - springCoreDevOps = productRepository.save(springCoreDevOps); + + if(IteratorUtils.toList(authorRepository.findAll().iterator()).size() == 0) { + + Author jt = new Author(); + jt.setFirstName("John"); + jt.setLastName("Thompson"); + jt.setId(1); + jt.setImage("instructor_jt.jpg"); + + jt = authorRepository.save(jt); + + ProductCategory springIntroCat = new ProductCategory(); + springIntroCat.setId(1); + springIntroCat.setCategory("Spring Introduction"); + + springIntroCat = productCategoryRepository.save(springIntroCat); + + ProductCategory springCoreCat = new ProductCategory(); + springCoreCat.setId(2); + springCoreCat.setCategory("Spring Core"); + + springCoreCat = productCategoryRepository.save(springCoreCat); + + ProductCategory springBootCat = new ProductCategory(); + springBootCat.setId(3); + springBootCat.setCategory("Spring Boot"); + + springBootCat = productCategoryRepository.save(springBootCat); + + ProductCategory thymeleafCat = new ProductCategory(); + thymeleafCat.setId(4); + thymeleafCat.setCategory("Thymeleaf"); + + thymeleafCat = productCategoryRepository.save(thymeleafCat); + + ProductCategory geapCat = new ProductCategory(); + geapCat.setId(5); + geapCat.setCategory("G.E.A.P"); + + geapCat = productCategoryRepository.save(geapCat); + + Product springIntro = new Product(); + springIntro.setId(1); + springIntro.setCourseName("Introduction to Spring"); + springIntro.setCourseSubtitle("Start Learning Spring!"); + springIntro.setAuthor(jt); + springIntro.setCourseDescription("Why would you want to learn about the Spring Framework? Simple, Spring is the most widely used framework in the enterprise today. Major companies all over the world are hiring programmers who know the Spring Framework.\n" + + "\n" + + "My Introduction Spring Framework Tutorial is designed to give you an introduction to the Spring Framework. This course is written for beginners. Ideally before taking the course, you should already have a foundation with the Java programming language. You don't need to be an expert in Java, but you should the basics of Object Oriented Programming with Java.\n" + + "\n" + + "You will learn what Dependency Injection is, and how Spring uses Inversion of Control to leverage Dependency Injection. Next in my course, I will walk you step by step through building your very first Spring Framework application. I'll show you hot to use the Spring Initializer and Spring Boot to jumpstart your Spring Framework project. Ideally, you can follow along and create your own Spring project. I know it can be frustrating to follow along in a course and run into errors. So don't worry, I have the complete source code examples in Git for you to checkout and use."); + springIntro.setPrice(new BigDecimal("0")); + springIntro.setImageUrl("SpringIntroThumb.png"); + springIntro.getProductCategories().add(springIntroCat); + springIntro.getProductCategories().add(springBootCat); + + springIntro = productRepository.save(springIntro); + + Product springCoreUltimate = new Product(); + springCoreUltimate.setId(2); + springCoreUltimate.setCourseName("Spring Core Ultimate"); + springCoreUltimate.setCourseSubtitle("Ultimate Bundle of Spring Core!"); + springCoreUltimate.setAuthor(jt); + springCoreUltimate.setCourseDescription("Why would you want to learn about the Spring Framework? Simple, Spring is the most widely used framework in the enterprise today. Major companies all over the world are hiring programmers who know the Spring Framework.\n" + + "\n" + + "My Introduction Spring Framework Tutorial is designed to give you an introduction to the Spring Framework. This course is written for beginners. Ideally before taking the course, you should already have a foundation with the Java programming language. You don't need to be an expert in Java, but you should the basics of Object Oriented Programming with Java.\n" + + "\n" + + "You will learn what Dependency Injection is, and how Spring uses Inversion of Control to leverage Dependency Injection. Next in my course, I will walk you step by step through building your very first Spring Framework application. I'll show you hot to use the Spring Initializer and Spring Boot to jumpstart your Spring Framework project. Ideally, you can follow along and create your own Spring project. I know it can be frustrating to follow along in a course and run into errors. So don't worry, I have the complete source code examples in Git for you to checkout and use."); + springCoreUltimate.setPrice(new BigDecimal("199")); + springCoreUltimate.setImageUrl("SpringCoreUltimateThumb.png"); + springCoreUltimate.getProductCategories().add(springCoreCat); + springCoreUltimate.getProductCategories().add(springBootCat); + + springCoreUltimate = productRepository.save(springCoreUltimate); + + Product thymeleaf = new Product(); + thymeleaf.setId(3); + thymeleaf.setCourseName("Thymeleaf"); + thymeleaf.setCourseSubtitle("Thymeleaf and Spring!"); + thymeleaf.setAuthor(jt); + thymeleaf.setCourseDescription("Why would you want to learn about the Spring Framework? Simple, Spring is the most widely used framework in the enterprise today. Major companies all over the world are hiring programmers who know the Spring Framework.\n" + + "\n" + + "My Introduction Spring Framework Tutorial is designed to give you an introduction to the Spring Framework. This course is written for beginners. Ideally before taking the course, you should already have a foundation with the Java programming language. You don't need to be an expert in Java, but you should the basics of Object Oriented Programming with Java.\n" + + "\n" + + "You will learn what Dependency Injection is, and how Spring uses Inversion of Control to leverage Dependency Injection. Next in my course, I will walk you step by step through building your very first Spring Framework application. I'll show you hot to use the Spring Initializer and Spring Boot to jumpstart your Spring Framework project. Ideally, you can follow along and create your own Spring project. I know it can be frustrating to follow along in a course and run into errors. So don't worry, I have the complete source code examples in Git for you to checkout and use."); + thymeleaf.setPrice(new BigDecimal("199")); + thymeleaf.setImageUrl("ThymeleafThumb.png"); + thymeleaf.getProductCategories().add(thymeleafCat); + + thymeleaf = productRepository.save(thymeleaf); + + Product springCore = new Product(); + springCore.setId(4); + springCore.setCourseName("Spring Core"); + springCore.setCourseSubtitle("Spring Core - mastering Spring!"); + springCore.setAuthor(jt); + springCore.setCourseDescription("Why would you want to learn about the Spring Framework? Simple, Spring is the most widely used framework in the enterprise today. Major companies all over the world are hiring programmers who know the Spring Framework.\n" + + "\n" + + "My Introduction Spring Framework Tutorial is designed to give you an introduction to the Spring Framework. This course is written for beginners. Ideally before taking the course, you should already have a foundation with the Java programming language. You don't need to be an expert in Java, but you should the basics of Object Oriented Programming with Java.\n" + + "\n" + + "You will learn what Dependency Injection is, and how Spring uses Inversion of Control to leverage Dependency Injection. Next in my course, I will walk you step by step through building your very first Spring Framework application. I'll show you hot to use the Spring Initializer and Spring Boot to jumpstart your Spring Framework project. Ideally, you can follow along and create your own Spring project. I know it can be frustrating to follow along in a course and run into errors. So don't worry, I have the complete source code examples in Git for you to checkout and use."); + springCore.setPrice(new BigDecimal("199")); + springCore.setImageUrl("SpringCoreThumb.png"); + springCore.getProductCategories().add(springCoreCat); + springCore.getProductCategories().add(springBootCat); + + springCore = productRepository.save(springCore); + + Product springCoreAdv = new Product(); + springCoreAdv.setId(5); + springCoreAdv.setCourseName("Spring Core Advanced"); + springCoreAdv.setCourseSubtitle("Advanced Spring Core!"); + springCoreAdv.setAuthor(jt); + springCoreAdv.setCourseDescription("Why would you want to learn about the Spring Framework? Simple, Spring is the most widely used framework in the enterprise today. Major companies all over the world are hiring programmers who know the Spring Framework.\n" + + "\n" + + "My Introduction Spring Framework Tutorial is designed to give you an introduction to the Spring Framework. This course is written for beginners. Ideally before taking the course, you should already have a foundation with the Java programming language. You don't need to be an expert in Java, but you should the basics of Object Oriented Programming with Java.\n" + + "\n" + + "You will learn what Dependency Injection is, and how Spring uses Inversion of Control to leverage Dependency Injection. Next in my course, I will walk you step by step through building your very first Spring Framework application. I'll show you hot to use the Spring Initializer and Spring Boot to jumpstart your Spring Framework project. Ideally, you can follow along and create your own Spring project. I know it can be frustrating to follow along in a course and run into errors. So don't worry, I have the complete source code examples in Git for you to checkout and use."); + springCoreAdv.setPrice(new BigDecimal("199")); + springCoreAdv.setImageUrl("SpringCoreAdvancedThumb.png"); + springCoreAdv.getProductCategories().add(springCoreCat); + springCoreAdv.getProductCategories().add(springBootCat); + + springCoreAdv = productRepository.save(springCoreAdv); + + Product springCoreDevOps = new Product(); + springCoreDevOps.setId(6); + springCoreDevOps.setCourseName("Spring Core Dev-Ops"); + springCoreDevOps.setCourseSubtitle("Deploying Spring in the Enterprise and the cloud!"); + springCoreDevOps.setAuthor(jt); + springCoreDevOps.setCourseDescription("Why would you want to learn about the Spring Framework? Simple, Spring is the most widely used framework in the enterprise today. Major companies all over the world are hiring programmers who know the Spring Framework.\n" + + "\n" + + "My Introduction Spring Framework Tutorial is designed to give you an introduction to the Spring Framework. This course is written for beginners. Ideally before taking the course, you should already have a foundation with the Java programming language. You don't need to be an expert in Java, but you should the basics of Object Oriented Programming with Java.\n" + + "\n" + + "You will learn what Dependency Injection is, and how Spring uses Inversion of Control to leverage Dependency Injection. Next in my course, I will walk you step by step through building your very first Spring Framework application. I'll show you hot to use the Spring Initializer and Spring Boot to jumpstart your Spring Framework project. Ideally, you can follow along and create your own Spring project. I know it can be frustrating to follow along in a course and run into errors. So don't worry, I have the complete source code examples in Git for you to checkout and use."); + springCoreDevOps.setPrice(new BigDecimal("199")); + springCoreDevOps.setImageUrl("SpringCoreDevOpsThumb.png"); + springCoreDevOps.getProductCategories().add(springCoreCat); + springCoreDevOps.getProductCategories().add(springBootCat); + + springCoreDevOps = productRepository.save(springCoreDevOps); + } } } From 91f4d3d68198a817924091e1e58371fe9c803092 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Fri, 27 May 2016 18:41:50 -0400 Subject: [PATCH 15/18] added mysql service account --- src/main/SQL/mysql-service-account.sql | 6 ++++++ src/main/resources/application-qa.properties | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 src/main/SQL/mysql-service-account.sql diff --git a/src/main/SQL/mysql-service-account.sql b/src/main/SQL/mysql-service-account.sql new file mode 100644 index 00000000..7c3c2373 --- /dev/null +++ b/src/main/SQL/mysql-service-account.sql @@ -0,0 +1,6 @@ +CREATE USER 'springframework'@'localhost' IDENTIFIED BY 'guru'; + +GRANT SELECT ON springguru.* to 'springframework'@'localhost'; +GRANT INSERT ON springguru.* to 'springframework'@'localhost'; +GRANT DELETE ON springguru.* to 'springframework'@'localhost'; +GRANT UPDATE ON springguru.* to 'springframework'@'localhost'; \ No newline at end of file diff --git a/src/main/resources/application-qa.properties b/src/main/resources/application-qa.properties index b31c8a21..262ef60d 100644 --- a/src/main/resources/application-qa.properties +++ b/src/main/resources/application-qa.properties @@ -1,7 +1,7 @@ guru.springframework.profile.message=This is my QA Profile spring.datasource.url=jdbc:mysql://localhost:3306/springguru -spring.datasource.username=root -spring.datasource.password= +spring.datasource.username=springframework +spring.datasource.password=guru spring.jpa.hibernate.ddl-auto=update \ No newline at end of file From c19b20d9c8a163fa3d4ce4d1bbbf7bc0ec4b82d0 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Fri, 27 May 2016 19:46:22 -0400 Subject: [PATCH 16/18] added encrypted properties --- pom.xml | 6 + src/main/resources/application-qa.properties | 9 +- utils/jasypt-1.9.2/LICENSE.txt | 202 ++ utils/jasypt-1.9.2/NOTICE.txt | 90 + utils/jasypt-1.9.2/README.txt | 14 + .../allclasses-frame.html | 38 + .../allclasses-noframe.html | 38 + .../jasypt-acegisecurity/constant-values.html | 147 + .../jasypt-acegisecurity/deprecated-list.html | 169 + .../jasypt-acegisecurity/help-doc.html | 224 ++ .../jasypt-acegisecurity/index-all.html | 233 ++ .../apidocs/jasypt-acegisecurity/index.html | 40 + .../acegisecurity/PBEPasswordEncoder.html | 468 +++ .../jasypt/acegisecurity/PasswordEncoder.html | 457 +++ .../class-use/PBEPasswordEncoder.html | 145 + .../class-use/PasswordEncoder.html | 145 + .../jasypt/acegisecurity/package-frame.html | 35 + .../jasypt/acegisecurity/package-summary.html | 170 + .../jasypt/acegisecurity/package-tree.html | 156 + .../org/jasypt/acegisecurity/package-use.html | 145 + .../spring/security/PBEPasswordEncoder.html | 472 +++ .../spring/security/PasswordEncoder.html | 461 +++ .../class-use/PBEPasswordEncoder.html | 145 + .../security/class-use/PasswordEncoder.html | 145 + .../jasypt/spring/security/package-frame.html | 35 + .../spring/security/package-summary.html | 162 + .../jasypt/spring/security/package-tree.html | 156 + .../jasypt/spring/security/package-use.html | 145 + .../jasypt-acegisecurity/overview-frame.html | 45 + .../overview-summary.html | 161 + .../jasypt-acegisecurity/overview-tree.html | 157 + .../apidocs/jasypt-acegisecurity/package-list | 2 + .../resources/inherit.gif | Bin 0 -> 57 bytes .../jasypt-acegisecurity/stylesheet.css | 29 + .../jasypt-hibernate3/allclasses-frame.html | 130 + .../jasypt-hibernate3/allclasses-noframe.html | 130 + .../jasypt-hibernate3/constant-values.html | 313 ++ .../jasypt-hibernate3/deprecated-list.html | 307 ++ .../apidocs/jasypt-hibernate3/help-doc.html | 224 ++ .../apidocs/jasypt-hibernate3/index-all.html | 1454 +++++++++ .../apidocs/jasypt-hibernate3/index.html | 40 + ...cryptedPasswordC3P0ConnectionProvider.html | 330 ++ ...sswordDriverManagerConnectionProvider.html | 328 ++ .../connectionprovider/ParameterNaming.html | 252 ++ ...cryptedPasswordC3P0ConnectionProvider.html | 145 + ...sswordDriverManagerConnectionProvider.html | 145 + .../class-use/ParameterNaming.html | 145 + .../connectionprovider/package-frame.html | 37 + .../connectionprovider/package-summary.html | 166 + .../connectionprovider/package-tree.html | 160 + .../connectionprovider/package-use.html | 145 + .../HibernatePBEBigDecimalEncryptor.html | 613 ++++ .../HibernatePBEBigIntegerEncryptor.html | 612 ++++ .../encryptor/HibernatePBEByteEncryptor.html | 612 ++++ .../HibernatePBEEncryptorRegistry.html | 494 +++ .../HibernatePBEStringEncryptor.html | 689 ++++ .../HibernatePBEBigDecimalEncryptor.html | 145 + .../HibernatePBEBigIntegerEncryptor.html | 145 + .../class-use/HibernatePBEByteEncryptor.html | 145 + .../HibernatePBEEncryptorRegistry.html | 181 + .../HibernatePBEStringEncryptor.html | 145 + .../hibernate/encryptor/package-frame.html | 41 + .../hibernate/encryptor/package-summary.html | 174 + .../hibernate/encryptor/package-tree.html | 154 + .../hibernate/encryptor/package-use.html | 172 + .../type/AbstractEncryptedAsStringType.html | 670 ++++ .../type/EncryptedBigDecimalAsStringType.html | 391 +++ .../type/EncryptedBigDecimalType.html | 645 ++++ .../type/EncryptedBigIntegerAsStringType.html | 391 +++ .../type/EncryptedBigIntegerType.html | 622 ++++ .../hibernate/type/EncryptedBinaryType.html | 622 ++++ .../type/EncryptedBooleanAsStringType.html | 391 +++ .../type/EncryptedByteAsStringType.html | 391 +++ .../type/EncryptedCalendarAsStringType.html | 446 +++ .../type/EncryptedDateAsStringType.html | 417 +++ .../type/EncryptedDoubleAsStringType.html | 391 +++ .../type/EncryptedFloatAsStringType.html | 391 +++ .../type/EncryptedIntegerAsStringType.html | 391 +++ .../type/EncryptedLongAsStringType.html | 391 +++ .../type/EncryptedShortAsStringType.html | 391 +++ .../hibernate/type/EncryptedStringType.html | 391 +++ .../hibernate/type/ParameterNaming.html | 444 +++ .../AbstractEncryptedAsStringType.html | 281 ++ .../EncryptedBigDecimalAsStringType.html | 145 + .../class-use/EncryptedBigDecimalType.html | 145 + .../EncryptedBigIntegerAsStringType.html | 145 + .../class-use/EncryptedBigIntegerType.html | 145 + .../type/class-use/EncryptedBinaryType.html | 145 + .../EncryptedBooleanAsStringType.html | 145 + .../class-use/EncryptedByteAsStringType.html | 145 + .../EncryptedCalendarAsStringType.html | 145 + .../class-use/EncryptedDateAsStringType.html | 145 + .../EncryptedDoubleAsStringType.html | 145 + .../class-use/EncryptedFloatAsStringType.html | 145 + .../EncryptedIntegerAsStringType.html | 145 + .../class-use/EncryptedLongAsStringType.html | 145 + .../class-use/EncryptedShortAsStringType.html | 145 + .../type/class-use/EncryptedStringType.html | 145 + .../type/class-use/ParameterNaming.html | 145 + .../jasypt/hibernate/type/package-frame.html | 65 + .../hibernate/type/package-summary.html | 222 ++ .../jasypt/hibernate/type/package-tree.html | 160 + .../jasypt/hibernate/type/package-use.html | 172 + ...cryptedPasswordC3P0ConnectionProvider.html | 328 ++ ...sswordDriverManagerConnectionProvider.html | 326 ++ .../connectionprovider/ParameterNaming.html | 250 ++ ...cryptedPasswordC3P0ConnectionProvider.html | 145 + ...sswordDriverManagerConnectionProvider.html | 145 + .../class-use/ParameterNaming.html | 145 + .../connectionprovider/package-frame.html | 37 + .../connectionprovider/package-summary.html | 174 + .../connectionprovider/package-tree.html | 160 + .../connectionprovider/package-use.html | 145 + .../HibernatePBEBigDecimalEncryptor.html | 611 ++++ .../HibernatePBEBigIntegerEncryptor.html | 610 ++++ .../encryptor/HibernatePBEByteEncryptor.html | 610 ++++ .../HibernatePBEEncryptorRegistry.html | 491 +++ .../HibernatePBEStringEncryptor.html | 686 ++++ .../HibernatePBEBigDecimalEncryptor.html | 145 + .../HibernatePBEBigIntegerEncryptor.html | 145 + .../class-use/HibernatePBEByteEncryptor.html | 145 + .../HibernatePBEEncryptorRegistry.html | 181 + .../HibernatePBEStringEncryptor.html | 145 + .../hibernate3/encryptor/package-frame.html | 41 + .../hibernate3/encryptor/package-summary.html | 184 ++ .../hibernate3/encryptor/package-tree.html | 154 + .../hibernate3/encryptor/package-use.html | 173 + .../type/AbstractEncryptedAsStringType.html | 668 ++++ .../type/EncryptedBigDecimalAsStringType.html | 389 +++ .../type/EncryptedBigDecimalType.html | 643 ++++ .../type/EncryptedBigIntegerAsStringType.html | 389 +++ .../type/EncryptedBigIntegerType.html | 620 ++++ .../hibernate3/type/EncryptedBinaryType.html | 620 ++++ .../type/EncryptedBooleanAsStringType.html | 389 +++ .../type/EncryptedByteAsStringType.html | 389 +++ .../type/EncryptedCalendarAsStringType.html | 444 +++ .../type/EncryptedDateAsStringType.html | 415 +++ .../type/EncryptedDoubleAsStringType.html | 389 +++ .../type/EncryptedFloatAsStringType.html | 389 +++ .../type/EncryptedIntegerAsStringType.html | 389 +++ .../type/EncryptedLongAsStringType.html | 389 +++ .../type/EncryptedShortAsStringType.html | 389 +++ .../hibernate3/type/EncryptedStringType.html | 388 +++ .../hibernate3/type/ParameterNaming.html | 442 +++ .../AbstractEncryptedAsStringType.html | 304 ++ .../EncryptedBigDecimalAsStringType.html | 145 + .../class-use/EncryptedBigDecimalType.html | 145 + .../EncryptedBigIntegerAsStringType.html | 145 + .../class-use/EncryptedBigIntegerType.html | 145 + .../type/class-use/EncryptedBinaryType.html | 145 + .../EncryptedBooleanAsStringType.html | 145 + .../class-use/EncryptedByteAsStringType.html | 145 + .../EncryptedCalendarAsStringType.html | 145 + .../class-use/EncryptedDateAsStringType.html | 145 + .../EncryptedDoubleAsStringType.html | 145 + .../class-use/EncryptedFloatAsStringType.html | 145 + .../EncryptedIntegerAsStringType.html | 145 + .../class-use/EncryptedLongAsStringType.html | 145 + .../class-use/EncryptedShortAsStringType.html | 145 + .../type/class-use/EncryptedStringType.html | 145 + .../type/class-use/ParameterNaming.html | 145 + .../jasypt/hibernate3/type/package-frame.html | 65 + .../hibernate3/type/package-summary.html | 266 ++ .../jasypt/hibernate3/type/package-tree.html | 160 + .../jasypt/hibernate3/type/package-use.html | 172 + .../jasypt-hibernate3/overview-frame.html | 53 + .../jasypt-hibernate3/overview-summary.html | 177 + .../jasypt-hibernate3/overview-tree.html | 171 + .../apidocs/jasypt-hibernate3/package-list | 6 + .../jasypt-hibernate3/resources/inherit.gif | Bin 0 -> 57 bytes .../apidocs/jasypt-hibernate3/stylesheet.css | 29 + .../jasypt-hibernate4/allclasses-frame.html | 80 + .../jasypt-hibernate4/allclasses-noframe.html | 80 + .../jasypt-hibernate4/constant-values.html | 235 ++ .../jasypt-hibernate4/deprecated-list.html | 147 + .../apidocs/jasypt-hibernate4/help-doc.html | 224 ++ .../apidocs/jasypt-hibernate4/index-all.html | 847 +++++ .../apidocs/jasypt-hibernate4/index.html | 40 + ...cryptedPasswordC3P0ConnectionProvider.html | 324 ++ ...sswordDriverManagerConnectionProvider.html | 322 ++ .../connectionprovider/ParameterNaming.html | 249 ++ ...cryptedPasswordC3P0ConnectionProvider.html | 145 + ...sswordDriverManagerConnectionProvider.html | 145 + .../class-use/ParameterNaming.html | 145 + .../connectionprovider/package-frame.html | 37 + .../connectionprovider/package-summary.html | 174 + .../connectionprovider/package-tree.html | 160 + .../connectionprovider/package-use.html | 145 + .../HibernatePBEBigDecimalEncryptor.html | 610 ++++ .../HibernatePBEBigIntegerEncryptor.html | 609 ++++ .../encryptor/HibernatePBEByteEncryptor.html | 609 ++++ .../HibernatePBEEncryptorRegistry.html | 490 +++ .../HibernatePBEStringEncryptor.html | 685 ++++ .../HibernatePBEBigDecimalEncryptor.html | 145 + .../HibernatePBEBigIntegerEncryptor.html | 145 + .../class-use/HibernatePBEByteEncryptor.html | 145 + .../HibernatePBEEncryptorRegistry.html | 181 + .../HibernatePBEStringEncryptor.html | 145 + .../hibernate4/encryptor/package-frame.html | 41 + .../hibernate4/encryptor/package-summary.html | 184 ++ .../hibernate4/encryptor/package-tree.html | 154 + .../hibernate4/encryptor/package-use.html | 173 + .../type/AbstractEncryptedAsStringType.html | 671 ++++ .../type/EncryptedBigDecimalAsStringType.html | 388 +++ .../type/EncryptedBigDecimalType.html | 646 ++++ .../type/EncryptedBigIntegerAsStringType.html | 388 +++ .../type/EncryptedBigIntegerType.html | 623 ++++ .../hibernate4/type/EncryptedBinaryType.html | 623 ++++ .../type/EncryptedBooleanAsStringType.html | 388 +++ .../type/EncryptedByteAsStringType.html | 388 +++ .../type/EncryptedCalendarAsStringType.html | 443 +++ .../type/EncryptedDateAsStringType.html | 414 +++ .../type/EncryptedDoubleAsStringType.html | 388 +++ .../type/EncryptedFloatAsStringType.html | 388 +++ .../type/EncryptedIntegerAsStringType.html | 388 +++ .../type/EncryptedLongAsStringType.html | 388 +++ .../type/EncryptedShortAsStringType.html | 388 +++ .../hibernate4/type/EncryptedStringType.html | 387 +++ .../hibernate4/type/ParameterNaming.html | 441 +++ .../AbstractEncryptedAsStringType.html | 304 ++ .../EncryptedBigDecimalAsStringType.html | 145 + .../class-use/EncryptedBigDecimalType.html | 145 + .../EncryptedBigIntegerAsStringType.html | 145 + .../class-use/EncryptedBigIntegerType.html | 145 + .../type/class-use/EncryptedBinaryType.html | 145 + .../EncryptedBooleanAsStringType.html | 145 + .../class-use/EncryptedByteAsStringType.html | 145 + .../EncryptedCalendarAsStringType.html | 145 + .../class-use/EncryptedDateAsStringType.html | 145 + .../EncryptedDoubleAsStringType.html | 145 + .../class-use/EncryptedFloatAsStringType.html | 145 + .../EncryptedIntegerAsStringType.html | 145 + .../class-use/EncryptedLongAsStringType.html | 145 + .../class-use/EncryptedShortAsStringType.html | 145 + .../type/class-use/EncryptedStringType.html | 145 + .../type/class-use/ParameterNaming.html | 145 + .../jasypt/hibernate4/type/package-frame.html | 65 + .../hibernate4/type/package-summary.html | 266 ++ .../jasypt/hibernate4/type/package-tree.html | 160 + .../jasypt/hibernate4/type/package-use.html | 172 + .../jasypt-hibernate4/overview-frame.html | 47 + .../jasypt-hibernate4/overview-summary.html | 165 + .../jasypt-hibernate4/overview-tree.html | 165 + .../apidocs/jasypt-hibernate4/package-list | 3 + .../jasypt-hibernate4/resources/inherit.gif | Bin 0 -> 57 bytes .../jasypt-hibernate4/serialized-form.html | 181 + .../apidocs/jasypt-hibernate4/stylesheet.css | 29 + .../jasypt-spring2/allclasses-frame.html | 46 + .../jasypt-spring2/allclasses-noframe.html | 46 + .../jasypt-spring2/constant-values.html | 147 + .../jasypt-spring2/deprecated-list.html | 181 + .../apidocs/jasypt-spring2/help-doc.html | 224 ++ .../apidocs/jasypt-spring2/index-all.html | 312 ++ .../apidocs/jasypt-spring2/index.html | 40 + ...tablePreferencesPlaceholderConfigurer.html | 397 +++ ...EncryptablePropertyOverrideConfigurer.html | 390 +++ ...ryptablePropertyPlaceholderConfigurer.html | 412 +++ ...tContextPropertyPlaceholderConfigurer.html | 421 +++ ...tablePreferencesPlaceholderConfigurer.html | 145 + ...EncryptablePropertyOverrideConfigurer.html | 145 + ...ryptablePropertyPlaceholderConfigurer.html | 145 + ...tContextPropertyPlaceholderConfigurer.html | 145 + .../spring/properties/package-frame.html | 39 + .../spring/properties/package-summary.html | 170 + .../spring/properties/package-tree.html | 170 + .../jasypt/spring/properties/package-use.html | 145 + ...tablePreferencesPlaceholderConfigurer.html | 444 +++ ...EncryptablePropertyOverrideConfigurer.html | 387 +++ ...ryptablePropertyPlaceholderConfigurer.html | 409 +++ ...tContextPropertyPlaceholderConfigurer.html | 418 +++ ...tablePreferencesPlaceholderConfigurer.html | 145 + ...EncryptablePropertyOverrideConfigurer.html | 145 + ...ryptablePropertyPlaceholderConfigurer.html | 145 + ...tContextPropertyPlaceholderConfigurer.html | 145 + .../spring2/properties/package-frame.html | 39 + .../spring2/properties/package-summary.html | 190 ++ .../spring2/properties/package-tree.html | 170 + .../spring2/properties/package-use.html | 145 + .../jasypt-spring2/overview-frame.html | 45 + .../jasypt-spring2/overview-summary.html | 161 + .../apidocs/jasypt-spring2/overview-tree.html | 169 + .../apidocs/jasypt-spring2/package-list | 2 + .../jasypt-spring2/resources/inherit.gif | Bin 0 -> 57 bytes .../apidocs/jasypt-spring2/stylesheet.css | 29 + .../jasypt-spring3/allclasses-frame.html | 54 + .../jasypt-spring3/allclasses-noframe.html | 54 + .../jasypt-spring3/constant-values.html | 147 + .../jasypt-spring3/deprecated-list.html | 181 + .../apidocs/jasypt-spring3/help-doc.html | 224 ++ .../apidocs/jasypt-spring3/index-all.html | 479 +++ .../apidocs/jasypt-spring3/index.html | 40 + ...tablePreferencesPlaceholderConfigurer.html | 397 +++ ...EncryptablePropertyOverrideConfigurer.html | 390 +++ ...ryptablePropertyPlaceholderConfigurer.html | 412 +++ ...tContextPropertyPlaceholderConfigurer.html | 421 +++ ...tablePreferencesPlaceholderConfigurer.html | 145 + ...EncryptablePropertyOverrideConfigurer.html | 145 + ...ryptablePropertyPlaceholderConfigurer.html | 145 + ...tContextPropertyPlaceholderConfigurer.html | 145 + .../spring/properties/package-frame.html | 39 + .../spring/properties/package-summary.html | 170 + .../spring/properties/package-tree.html | 170 + .../jasypt/spring/properties/package-use.html | 145 + ...tablePreferencesPlaceholderConfigurer.html | 444 +++ ...EncryptablePropertyOverrideConfigurer.html | 387 +++ ...ryptablePropertyPlaceholderConfigurer.html | 409 +++ ...tContextPropertyPlaceholderConfigurer.html | 418 +++ ...tablePreferencesPlaceholderConfigurer.html | 145 + ...EncryptablePropertyOverrideConfigurer.html | 145 + ...ryptablePropertyPlaceholderConfigurer.html | 145 + ...tContextPropertyPlaceholderConfigurer.html | 145 + .../spring3/properties/package-frame.html | 39 + .../spring3/properties/package-summary.html | 190 ++ .../spring3/properties/package-tree.html | 170 + .../spring3/properties/package-use.html | 145 + .../xml/encryption/DigesterFactoryBean.html | 696 ++++ .../EncryptablePropertiesFactoryBean.html | 416 +++ .../EncryptionNamespaceHandler.html | 336 ++ .../xml/encryption/EncryptorFactoryBean.html | 564 ++++ .../class-use/DigesterFactoryBean.html | 145 + .../EncryptablePropertiesFactoryBean.html | 145 + .../class-use/EncryptionNamespaceHandler.html | 145 + .../class-use/EncryptorFactoryBean.html | 145 + .../spring3/xml/encryption/package-frame.html | 39 + .../xml/encryption/package-summary.html | 177 + .../spring3/xml/encryption/package-tree.html | 162 + .../spring3/xml/encryption/package-use.html | 145 + .../jasypt-spring3/overview-frame.html | 47 + .../jasypt-spring3/overview-summary.html | 165 + .../apidocs/jasypt-spring3/overview-tree.html | 175 + .../apidocs/jasypt-spring3/package-list | 3 + .../jasypt-spring3/resources/inherit.gif | Bin 0 -> 57 bytes .../apidocs/jasypt-spring3/stylesheet.css | 29 + .../jasypt-spring31/allclasses-frame.html | 50 + .../jasypt-spring31/allclasses-noframe.html | 50 + .../jasypt-spring31/constant-values.html | 147 + .../jasypt-spring31/deprecated-list.html | 147 + .../apidocs/jasypt-spring31/help-doc.html | 224 ++ .../apidocs/jasypt-spring31/index-all.html | 447 +++ .../apidocs/jasypt-spring31/index.html | 40 + ...tablePreferencesPlaceholderConfigurer.html | 463 +++ .../EncryptablePropertiesPropertySource.html | 346 ++ ...EncryptablePropertyOverrideConfigurer.html | 387 +++ ...ryptablePropertyPlaceholderConfigurer.html | 428 +++ ...ePropertySourcesPlaceholderConfigurer.html | 438 +++ ...tContextPropertyPlaceholderConfigurer.html | 437 +++ ...tablePreferencesPlaceholderConfigurer.html | 145 + .../EncryptablePropertiesPropertySource.html | 145 + ...EncryptablePropertyOverrideConfigurer.html | 145 + ...ryptablePropertyPlaceholderConfigurer.html | 145 + ...ePropertySourcesPlaceholderConfigurer.html | 145 + ...tContextPropertyPlaceholderConfigurer.html | 145 + .../spring31/properties/package-frame.html | 43 + .../spring31/properties/package-summary.html | 198 ++ .../spring31/properties/package-tree.html | 183 ++ .../spring31/properties/package-use.html | 145 + .../xml/encryption/DigesterFactoryBean.html | 696 ++++ .../EncryptablePropertiesFactoryBean.html | 416 +++ .../EncryptionNamespaceHandler.html | 336 ++ .../xml/encryption/EncryptorFactoryBean.html | 564 ++++ .../class-use/DigesterFactoryBean.html | 145 + .../EncryptablePropertiesFactoryBean.html | 145 + .../class-use/EncryptionNamespaceHandler.html | 145 + .../class-use/EncryptorFactoryBean.html | 145 + .../xml/encryption/package-frame.html | 39 + .../xml/encryption/package-summary.html | 177 + .../spring31/xml/encryption/package-tree.html | 162 + .../spring31/xml/encryption/package-use.html | 145 + .../jasypt-spring31/overview-frame.html | 45 + .../jasypt-spring31/overview-summary.html | 161 + .../jasypt-spring31/overview-tree.html | 188 ++ .../apidocs/jasypt-spring31/package-list | 2 + .../jasypt-spring31/resources/inherit.gif | Bin 0 -> 57 bytes .../apidocs/jasypt-spring31/stylesheet.css | 29 + .../allclasses-frame.html | 38 + .../allclasses-noframe.html | 38 + .../constant-values.html | 147 + .../deprecated-list.html | 169 + .../jasypt-springsecurity2/help-doc.html | 224 ++ .../jasypt-springsecurity2/index-all.html | 233 ++ .../apidocs/jasypt-springsecurity2/index.html | 40 + .../spring/security2/PBEPasswordEncoder.html | 471 +++ .../spring/security2/PasswordEncoder.html | 460 +++ .../class-use/PBEPasswordEncoder.html | 145 + .../security2/class-use/PasswordEncoder.html | 145 + .../spring/security2/package-frame.html | 35 + .../spring/security2/package-summary.html | 162 + .../jasypt/spring/security2/package-tree.html | 156 + .../jasypt/spring/security2/package-use.html | 145 + .../encoding/PBEPasswordEncoder.html | 468 +++ .../providers/encoding/PasswordEncoder.html | 457 +++ .../class-use/PBEPasswordEncoder.html | 145 + .../encoding/class-use/PasswordEncoder.html | 145 + .../providers/encoding/package-frame.html | 35 + .../providers/encoding/package-summary.html | 170 + .../providers/encoding/package-tree.html | 156 + .../providers/encoding/package-use.html | 145 + .../overview-frame.html | 45 + .../overview-summary.html | 161 + .../jasypt-springsecurity2/overview-tree.html | 157 + .../jasypt-springsecurity2/package-list | 2 + .../resources/inherit.gif | Bin 0 -> 57 bytes .../jasypt-springsecurity2/stylesheet.css | 29 + .../allclasses-frame.html | 42 + .../allclasses-noframe.html | 42 + .../constant-values.html | 147 + .../deprecated-list.html | 175 + .../jasypt-springsecurity3/help-doc.html | 224 ++ .../jasypt-springsecurity3/index-all.html | 268 ++ .../apidocs/jasypt-springsecurity3/index.html | 40 + .../spring/security3/PBEPasswordEncoder.html | 471 +++ .../spring/security3/PasswordEncoder.html | 460 +++ .../TokenBasedRememberMeServices.html | 358 ++ .../class-use/PBEPasswordEncoder.html | 145 + .../security3/class-use/PasswordEncoder.html | 145 + .../TokenBasedRememberMeServices.html | 145 + .../spring/security3/package-frame.html | 37 + .../spring/security3/package-summary.html | 166 + .../jasypt/spring/security3/package-tree.html | 159 + .../jasypt/spring/security3/package-use.html | 145 + .../encoding/PBEPasswordEncoder.html | 468 +++ .../encoding/PasswordEncoder.html | 457 +++ .../class-use/PBEPasswordEncoder.html | 145 + .../encoding/class-use/PasswordEncoder.html | 145 + .../encoding/package-frame.html | 35 + .../encoding/package-summary.html | 170 + .../authentication/encoding/package-tree.html | 156 + .../authentication/encoding/package-use.html | 145 + .../TokenBasedRememberMeServices.html | 355 ++ .../TokenBasedRememberMeServices.html | 145 + .../rememberme/package-frame.html | 33 + .../rememberme/package-summary.html | 163 + .../rememberme/package-tree.html | 157 + .../rememberme/package-use.html | 145 + .../overview-frame.html | 47 + .../overview-summary.html | 165 + .../jasypt-springsecurity3/overview-tree.html | 160 + .../jasypt-springsecurity3/package-list | 3 + .../resources/inherit.gif | Bin 0 -> 57 bytes .../jasypt-springsecurity3/stylesheet.css | 29 + .../jasypt-wicket13/allclasses-frame.html | 38 + .../jasypt-wicket13/allclasses-noframe.html | 38 + .../jasypt-wicket13/constant-values.html | 147 + .../jasypt-wicket13/deprecated-list.html | 171 + .../apidocs/jasypt-wicket13/help-doc.html | 224 ++ .../apidocs/jasypt-wicket13/index-all.html | 230 ++ .../apidocs/jasypt-wicket13/index.html | 40 + .../org/jasypt/wicket/JasyptCrypt.html | 353 ++ .../org/jasypt/wicket/JasyptCryptFactory.html | 310 ++ .../jasypt/wicket/class-use/JasyptCrypt.html | 145 + .../wicket/class-use/JasyptCryptFactory.html | 145 + .../org/jasypt/wicket/package-frame.html | 35 + .../org/jasypt/wicket/package-summary.html | 162 + .../org/jasypt/wicket/package-tree.html | 156 + .../org/jasypt/wicket/package-use.html | 145 + .../org/jasypt/wicket13/JasyptCrypt.html | 349 ++ .../jasypt/wicket13/JasyptCryptFactory.html | 306 ++ .../wicket13/class-use/JasyptCrypt.html | 145 + .../class-use/JasyptCryptFactory.html | 145 + .../org/jasypt/wicket13/package-frame.html | 35 + .../org/jasypt/wicket13/package-summary.html | 166 + .../org/jasypt/wicket13/package-tree.html | 156 + .../org/jasypt/wicket13/package-use.html | 145 + .../jasypt-wicket13/overview-frame.html | 45 + .../jasypt-wicket13/overview-summary.html | 161 + .../jasypt-wicket13/overview-tree.html | 157 + .../apidocs/jasypt-wicket13/package-list | 2 + .../jasypt-wicket13/resources/inherit.gif | Bin 0 -> 57 bytes .../apidocs/jasypt-wicket13/stylesheet.css | 29 + .../jasypt-wicket15/allclasses-frame.html | 34 + .../jasypt-wicket15/allclasses-noframe.html | 34 + .../jasypt-wicket15/constant-values.html | 145 + .../jasypt-wicket15/deprecated-list.html | 145 + .../apidocs/jasypt-wicket15/help-doc.html | 216 ++ .../apidocs/jasypt-wicket15/index-all.html | 197 ++ .../apidocs/jasypt-wicket15/index.html | 37 + .../org/jasypt/wicket15/JasyptCrypt.html | 347 ++ .../jasypt/wicket15/JasyptCryptFactory.html | 304 ++ .../wicket15/class-use/JasyptCrypt.html | 143 + .../class-use/JasyptCryptFactory.html | 143 + .../org/jasypt/wicket15/package-frame.html | 35 + .../org/jasypt/wicket15/package-summary.html | 164 + .../org/jasypt/wicket15/package-tree.html | 151 + .../org/jasypt/wicket15/package-use.html | 143 + .../jasypt-wicket15/overview-tree.html | 153 + .../apidocs/jasypt-wicket15/package-list | 1 + .../jasypt-wicket15/resources/inherit.gif | Bin 0 -> 57 bytes .../apidocs/jasypt-wicket15/stylesheet.css | 29 + .../apidocs/jasypt/allclasses-frame.html | 212 ++ .../apidocs/jasypt/allclasses-noframe.html | 212 ++ .../apidocs/jasypt/constant-values.html | 349 ++ .../apidocs/jasypt/deprecated-list.html | 173 + .../jasypt-1.9.2/apidocs/jasypt/help-doc.html | 224 ++ .../apidocs/jasypt/index-all.html | 2899 +++++++++++++++++ utils/jasypt-1.9.2/apidocs/jasypt/index.html | 40 + .../org/jasypt/commons/CommonUtils.html | 567 ++++ .../jasypt/commons/class-use/CommonUtils.html | 145 + .../org/jasypt/commons/package-frame.html | 33 + .../org/jasypt/commons/package-summary.html | 159 + .../org/jasypt/commons/package-tree.html | 154 + .../org/jasypt/commons/package-use.html | 145 + .../org/jasypt/digest/ByteDigester.html | 261 ++ .../org/jasypt/digest/PooledByteDigester.html | 941 ++++++ .../jasypt/digest/PooledStringDigester.html | 1098 +++++++ .../jasypt/digest/StandardByteDigester.html | 1112 +++++++ .../jasypt/digest/StandardStringDigester.html | 1346 ++++++++ .../org/jasypt/digest/StringDigester.html | 261 ++ .../jasypt/digest/class-use/ByteDigester.html | 193 ++ .../digest/class-use/PooledByteDigester.html | 145 + .../class-use/PooledStringDigester.html | 145 + .../class-use/StandardByteDigester.html | 145 + .../class-use/StandardStringDigester.html | 145 + .../digest/class-use/StringDigester.html | 193 ++ .../jasypt/digest/config/DigesterConfig.html | 613 ++++ .../config/EnvironmentDigesterConfig.html | 1971 +++++++++++ .../EnvironmentStringDigesterConfig.html | 1107 +++++++ .../digest/config/SimpleDigesterConfig.html | 1302 ++++++++ .../config/SimpleStringDigesterConfig.html | 655 ++++ .../digest/config/StringDigesterConfig.html | 386 +++ .../config/class-use/DigesterConfig.html | 323 ++ .../class-use/EnvironmentDigesterConfig.html | 183 ++ .../EnvironmentStringDigesterConfig.html | 145 + .../class-use/SimpleDigesterConfig.html | 202 ++ .../class-use/SimpleStringDigesterConfig.html | 145 + .../class-use/StringDigesterConfig.html | 192 ++ .../jasypt/digest/config/package-frame.html | 52 + .../jasypt/digest/config/package-summary.html | 202 ++ .../jasypt/digest/config/package-tree.html | 168 + .../org/jasypt/digest/config/package-use.html | 250 ++ .../org/jasypt/digest/package-frame.html | 52 + .../org/jasypt/digest/package-summary.html | 200 ++ .../org/jasypt/digest/package-tree.html | 163 + .../jasypt/org/jasypt/digest/package-use.html | 181 + .../encryption/BigDecimalEncryptor.html | 259 ++ .../encryption/BigIntegerEncryptor.html | 259 ++ .../org/jasypt/encryption/ByteEncryptor.html | 251 ++ .../jasypt/encryption/StringEncryptor.html | 251 ++ .../class-use/BigDecimalEncryptor.html | 223 ++ .../class-use/BigIntegerEncryptor.html | 223 ++ .../encryption/class-use/ByteEncryptor.html | 223 ++ .../encryption/class-use/StringEncryptor.html | 288 ++ .../org/jasypt/encryption/package-frame.html | 39 + .../jasypt/encryption/package-summary.html | 178 + .../org/jasypt/encryption/package-tree.html | 152 + .../org/jasypt/encryption/package-use.html | 218 ++ .../pbe/CleanablePasswordBased.html | 249 ++ ...EBigDecimalCleanablePasswordEncryptor.html | 238 ++ .../pbe/PBEBigDecimalEncryptor.html | 230 ++ ...EBigIntegerCleanablePasswordEncryptor.html | 237 ++ .../pbe/PBEBigIntegerEncryptor.html | 229 ++ .../PBEByteCleanablePasswordEncryptor.html | 230 ++ .../encryption/pbe/PBEByteEncryptor.html | 222 ++ .../PBEStringCleanablePasswordEncryptor.html | 229 ++ .../encryption/pbe/PBEStringEncryptor.html | 222 ++ .../jasypt/encryption/pbe/PasswordBased.html | 230 ++ .../pbe/PooledPBEBigDecimalEncryptor.html | 805 +++++ .../pbe/PooledPBEBigIntegerEncryptor.html | 805 +++++ .../pbe/PooledPBEByteEncryptor.html | 797 +++++ .../pbe/PooledPBEStringEncryptor.html | 841 +++++ .../pbe/StandardPBEBigDecimalEncryptor.html | 855 +++++ .../pbe/StandardPBEBigIntegerEncryptor.html | 850 +++++ .../pbe/StandardPBEByteEncryptor.html | 918 ++++++ .../pbe/StandardPBEStringEncryptor.html | 926 ++++++ .../pbe/class-use/CleanablePasswordBased.html | 309 ++ ...EBigDecimalCleanablePasswordEncryptor.html | 193 ++ .../pbe/class-use/PBEBigDecimalEncryptor.html | 213 ++ ...EBigIntegerCleanablePasswordEncryptor.html | 193 ++ .../pbe/class-use/PBEBigIntegerEncryptor.html | 213 ++ .../PBEByteCleanablePasswordEncryptor.html | 193 ++ .../pbe/class-use/PBEByteEncryptor.html | 213 ++ .../PBEStringCleanablePasswordEncryptor.html | 193 ++ .../pbe/class-use/PBEStringEncryptor.html | 213 ++ .../pbe/class-use/PasswordBased.html | 360 ++ .../PooledPBEBigDecimalEncryptor.html | 145 + .../PooledPBEBigIntegerEncryptor.html | 145 + .../pbe/class-use/PooledPBEByteEncryptor.html | 145 + .../class-use/PooledPBEStringEncryptor.html | 145 + .../StandardPBEBigDecimalEncryptor.html | 145 + .../StandardPBEBigIntegerEncryptor.html | 145 + .../class-use/StandardPBEByteEncryptor.html | 145 + .../class-use/StandardPBEStringEncryptor.html | 145 + .../pbe/config/EnvironmentPBEConfig.html | 1461 +++++++++ .../config/EnvironmentStringPBEConfig.html | 475 +++ .../config/PBECleanablePasswordConfig.html | 266 ++ .../encryption/pbe/config/PBEConfig.html | 468 +++ .../pbe/config/SimplePBEConfig.html | 1065 ++++++ .../pbe/config/SimpleStringPBEConfig.html | 354 ++ .../pbe/config/StringPBEConfig.html | 266 ++ .../encryption/pbe/config/WebPBEConfig.html | 427 +++ .../pbe/config/WebStringPBEConfig.html | 373 +++ .../class-use/EnvironmentPBEConfig.html | 183 ++ .../class-use/EnvironmentStringPBEConfig.html | 145 + .../class-use/PBECleanablePasswordConfig.html | 233 ++ .../pbe/config/class-use/PBEConfig.html | 352 ++ .../pbe/config/class-use/SimplePBEConfig.html | 224 ++ .../class-use/SimpleStringPBEConfig.html | 145 + .../pbe/config/class-use/StringPBEConfig.html | 203 ++ .../pbe/config/class-use/WebPBEConfig.html | 213 ++ .../config/class-use/WebStringPBEConfig.html | 145 + .../encryption/pbe/config/package-frame.html | 58 + .../pbe/config/package-summary.html | 221 ++ .../encryption/pbe/config/package-tree.html | 171 + .../encryption/pbe/config/package-use.html | 262 ++ .../jasypt/encryption/pbe/package-frame.html | 76 + .../encryption/pbe/package-summary.html | 280 ++ .../jasypt/encryption/pbe/package-tree.html | 215 ++ .../jasypt/encryption/pbe/package-use.html | 253 ++ .../AlreadyInitializedException.html | 251 ++ .../EncryptionInitializationException.html | 295 ++ ...cryptionOperationNotPossibleException.html | 286 ++ .../PasswordAlreadyCleanedException.html | 252 ++ .../AlreadyInitializedException.html | 145 + .../EncryptionInitializationException.html | 145 + ...cryptionOperationNotPossibleException.html | 209 ++ .../PasswordAlreadyCleanedException.html | 145 + .../org/jasypt/exceptions/package-frame.html | 39 + .../jasypt/exceptions/package-summary.html | 176 + .../org/jasypt/exceptions/package-tree.html | 161 + .../org/jasypt/exceptions/package-use.html | 173 + .../jasypt/intf/cli/AlgorithmRegistryCLI.html | 241 ++ .../cli/JasyptPBEStringDecryptionCLI.html | 241 ++ .../cli/JasyptPBEStringEncryptionCLI.html | 241 ++ .../intf/cli/JasyptStringDigestCLI.html | 241 ++ .../cli/class-use/AlgorithmRegistryCLI.html | 145 + .../JasyptPBEStringDecryptionCLI.html | 145 + .../JasyptPBEStringEncryptionCLI.html | 145 + .../cli/class-use/JasyptStringDigestCLI.html | 145 + .../org/jasypt/intf/cli/package-frame.html | 39 + .../org/jasypt/intf/cli/package-summary.html | 174 + .../org/jasypt/intf/cli/package-tree.html | 154 + .../org/jasypt/intf/cli/package-use.html | 145 + .../intf/service/JasyptStatelessService.html | 505 +++ .../class-use/JasyptStatelessService.html | 145 + .../jasypt/intf/service/package-frame.html | 33 + .../jasypt/intf/service/package-summary.html | 162 + .../org/jasypt/intf/service/package-tree.html | 154 + .../org/jasypt/intf/service/package-use.html | 145 + .../org/jasypt/normalization/Normalizer.html | 281 ++ .../normalization/class-use/Normalizer.html | 145 + .../jasypt/normalization/package-frame.html | 33 + .../jasypt/normalization/package-summary.html | 159 + .../jasypt/normalization/package-tree.html | 154 + .../org/jasypt/normalization/package-use.html | 145 + .../properties/EncryptableProperties.html | 506 +++ .../PropertyValueEncryptionUtils.html | 329 ++ .../class-use/EncryptableProperties.html | 145 + .../PropertyValueEncryptionUtils.html | 145 + .../org/jasypt/properties/package-frame.html | 35 + .../jasypt/properties/package-summary.html | 168 + .../org/jasypt/properties/package-tree.html | 161 + .../org/jasypt/properties/package-use.html | 145 + .../jasypt/registry/AlgorithmRegistry.html | 279 ++ .../registry/class-use/AlgorithmRegistry.html | 145 + .../org/jasypt/registry/package-frame.html | 33 + .../org/jasypt/registry/package-summary.html | 160 + .../org/jasypt/registry/package-tree.html | 154 + .../org/jasypt/registry/package-use.html | 145 + .../salt/ByteArrayFixedSaltGenerator.html | 315 ++ .../salt/FixedByteArraySaltGenerator.html | 342 ++ .../org/jasypt/salt/FixedSaltGenerator.html | 211 ++ .../jasypt/salt/FixedStringSaltGenerator.html | 367 +++ .../org/jasypt/salt/RandomSaltGenerator.html | 377 +++ .../jasypt/org/jasypt/salt/SaltGenerator.html | 277 ++ .../jasypt/salt/StringFixedSaltGenerator.html | 338 ++ .../org/jasypt/salt/ZeroSaltGenerator.html | 310 ++ .../ByteArrayFixedSaltGenerator.html | 145 + .../FixedByteArraySaltGenerator.html | 145 + .../salt/class-use/FixedSaltGenerator.html | 193 ++ .../class-use/FixedStringSaltGenerator.html | 145 + .../salt/class-use/RandomSaltGenerator.html | 145 + .../jasypt/salt/class-use/SaltGenerator.html | 531 +++ .../class-use/StringFixedSaltGenerator.html | 145 + .../salt/class-use/ZeroSaltGenerator.html | 145 + .../jasypt/org/jasypt/salt/package-frame.html | 56 + .../org/jasypt/salt/package-summary.html | 213 ++ .../jasypt/org/jasypt/salt/package-tree.html | 167 + .../jasypt/org/jasypt/salt/package-use.html | 265 ++ .../util/binary/BasicBinaryEncryptor.html | 371 +++ .../jasypt/util/binary/BinaryEncryptor.html | 245 ++ .../util/binary/StrongBinaryEncryptor.html | 371 +++ .../class-use/BasicBinaryEncryptor.html | 145 + .../binary/class-use/BinaryEncryptor.html | 193 ++ .../class-use/StrongBinaryEncryptor.html | 145 + .../org/jasypt/util/binary/package-frame.html | 46 + .../jasypt/util/binary/package-summary.html | 181 + .../org/jasypt/util/binary/package-tree.html | 161 + .../org/jasypt/util/binary/package-use.html | 172 + .../org/jasypt/util/digest/Digester.html | 545 ++++ .../util/digest/class-use/Digester.html | 145 + .../org/jasypt/util/digest/package-frame.html | 33 + .../jasypt/util/digest/package-summary.html | 160 + .../org/jasypt/util/digest/package-tree.html | 154 + .../org/jasypt/util/digest/package-use.html | 145 + .../numeric/BasicDecimalNumberEncryptor.html | 371 +++ .../numeric/BasicIntegerNumberEncryptor.html | 371 +++ .../util/numeric/DecimalNumberEncryptor.html | 245 ++ .../util/numeric/IntegerNumberEncryptor.html | 245 ++ .../numeric/StrongDecimalNumberEncryptor.html | 371 +++ .../numeric/StrongIntegerNumberEncryptor.html | 371 +++ .../BasicDecimalNumberEncryptor.html | 145 + .../BasicIntegerNumberEncryptor.html | 145 + .../class-use/DecimalNumberEncryptor.html | 193 ++ .../class-use/IntegerNumberEncryptor.html | 193 ++ .../StrongDecimalNumberEncryptor.html | 145 + .../StrongIntegerNumberEncryptor.html | 145 + .../jasypt/util/numeric/package-frame.html | 52 + .../jasypt/util/numeric/package-summary.html | 198 ++ .../org/jasypt/util/numeric/package-tree.html | 163 + .../org/jasypt/util/numeric/package-use.html | 179 + .../util/password/BasicPasswordEncryptor.html | 326 ++ .../ConfigurablePasswordEncryptor.html | 571 ++++ .../util/password/PasswordEncryptor.html | 251 ++ .../password/StrongPasswordEncryptor.html | 327 ++ .../class-use/BasicPasswordEncryptor.html | 145 + .../ConfigurablePasswordEncryptor.html | 145 + .../password/class-use/PasswordEncryptor.html | 266 ++ .../class-use/StrongPasswordEncryptor.html | 145 + .../jasypt/util/password/package-frame.html | 48 + .../jasypt/util/password/package-summary.html | 185 ++ .../jasypt/util/password/package-tree.html | 162 + .../org/jasypt/util/password/package-use.html | 192 ++ .../rfc2307/RFC2307MD5PasswordEncryptor.html | 353 ++ .../rfc2307/RFC2307SHAPasswordEncryptor.html | 353 ++ .../rfc2307/RFC2307SMD5PasswordEncryptor.html | 393 +++ .../rfc2307/RFC2307SSHAPasswordEncryptor.html | 393 +++ .../RFC2307MD5PasswordEncryptor.html | 145 + .../RFC2307SHAPasswordEncryptor.html | 145 + .../RFC2307SMD5PasswordEncryptor.html | 145 + .../RFC2307SSHAPasswordEncryptor.html | 145 + .../util/password/rfc2307/package-frame.html | 39 + .../password/rfc2307/package-summary.html | 182 ++ .../util/password/rfc2307/package-tree.html | 158 + .../util/password/rfc2307/package-use.html | 145 + .../jasypt/util/text/BasicTextEncryptor.html | 370 +++ .../jasypt/util/text/StrongTextEncryptor.html | 376 +++ .../org/jasypt/util/text/TextEncryptor.html | 245 ++ .../text/class-use/BasicTextEncryptor.html | 145 + .../text/class-use/StrongTextEncryptor.html | 145 + .../util/text/class-use/TextEncryptor.html | 256 ++ .../org/jasypt/util/text/package-frame.html | 46 + .../org/jasypt/util/text/package-summary.html | 179 + .../org/jasypt/util/text/package-tree.html | 161 + .../org/jasypt/util/text/package-use.html | 192 ++ .../web/pbeconfig/WebPBEConfigFilter.html | 344 ++ .../web/pbeconfig/WebPBEConfigRegistry.html | 310 ++ .../web/pbeconfig/WebPBEConfigServlet.html | 367 +++ .../WebPBEInitializationContextListener.html | 355 ++ .../web/pbeconfig/WebPBEInitializer.html | 272 ++ .../class-use/WebPBEConfigFilter.html | 145 + .../class-use/WebPBEConfigRegistry.html | 181 + .../class-use/WebPBEConfigServlet.html | 145 + .../WebPBEInitializationContextListener.html | 145 + .../class-use/WebPBEInitializer.html | 145 + .../jasypt/web/pbeconfig/package-frame.html | 50 + .../jasypt/web/pbeconfig/package-summary.html | 196 ++ .../jasypt/web/pbeconfig/package-tree.html | 167 + .../org/jasypt/web/pbeconfig/package-use.html | 172 + .../apidocs/jasypt/overview-frame.html | 81 + .../apidocs/jasypt/overview-summary.html | 233 ++ .../apidocs/jasypt/overview-tree.html | 292 ++ .../jasypt-1.9.2/apidocs/jasypt/package-list | 20 + .../apidocs/jasypt/resources/inherit.gif | Bin 0 -> 57 bytes .../apidocs/jasypt/serialized-form.html | 305 ++ .../apidocs/jasypt/stylesheet.css | 29 + utils/jasypt-1.9.2/bin/decrypt.bat | 19 + utils/jasypt-1.9.2/bin/decrypt.sh | 32 + utils/jasypt-1.9.2/bin/digest.bat | 19 + utils/jasypt-1.9.2/bin/digest.sh | 32 + utils/jasypt-1.9.2/bin/encrypt.bat | 19 + utils/jasypt-1.9.2/bin/encrypt.sh | 32 + utils/jasypt-1.9.2/bin/listAlgorithms.bat | 19 + utils/jasypt-1.9.2/bin/listAlgorithms.sh | 32 + utils/jasypt-1.9.2/lib/icu4j-3.4.4.jar | Bin 0 -> 3233439 bytes .../jasypt-1.9.2/lib/jasypt-1.9.2-javadoc.jar | Bin 0 -> 660679 bytes utils/jasypt-1.9.2/lib/jasypt-1.9.2-lite.jar | Bin 0 -> 66359 bytes .../jasypt-1.9.2/lib/jasypt-1.9.2-sources.jar | Bin 0 -> 221181 bytes utils/jasypt-1.9.2/lib/jasypt-1.9.2.jar | Bin 0 -> 129265 bytes .../jasypt-acegisecurity-1.9.2-javadoc.jar | Bin 0 -> 49531 bytes .../jasypt-acegisecurity-1.9.2-sources.jar | Bin 0 -> 17153 bytes .../lib/jasypt-acegisecurity-1.9.2.jar | Bin 0 -> 14512 bytes .../lib/jasypt-hibernate3-1.9.2-javadoc.jar | Bin 0 -> 336524 bytes .../lib/jasypt-hibernate3-1.9.2-sources.jar | Bin 0 -> 115109 bytes .../lib/jasypt-hibernate3-1.9.2.jar | Bin 0 -> 82588 bytes .../lib/jasypt-hibernate4-1.9.2-javadoc.jar | Bin 0 -> 178359 bytes .../lib/jasypt-hibernate4-1.9.2-sources.jar | Bin 0 -> 60128 bytes .../lib/jasypt-hibernate4-1.9.2.jar | Bin 0 -> 46145 bytes .../lib/jasypt-spring2-1.9.2-javadoc.jar | Bin 0 -> 70425 bytes .../lib/jasypt-spring2-1.9.2-sources.jar | Bin 0 -> 20058 bytes .../jasypt-1.9.2/lib/jasypt-spring2-1.9.2.jar | Bin 0 -> 17359 bytes .../lib/jasypt-spring3-1.9.2-javadoc.jar | Bin 0 -> 100484 bytes .../lib/jasypt-spring3-1.9.2-sources.jar | Bin 0 -> 49164 bytes .../jasypt-1.9.2/lib/jasypt-spring3-1.9.2.jar | Bin 0 -> 49097 bytes .../lib/jasypt-spring31-1.9.2-javadoc.jar | Bin 0 -> 82664 bytes .../lib/jasypt-spring31-1.9.2-sources.jar | Bin 0 -> 46076 bytes .../lib/jasypt-spring31-1.9.2.jar | Bin 0 -> 48057 bytes .../jasypt-springsecurity2-1.9.2-javadoc.jar | Bin 0 -> 50527 bytes .../jasypt-springsecurity2-1.9.2-sources.jar | Bin 0 -> 17520 bytes .../lib/jasypt-springsecurity2-1.9.2.jar | Bin 0 -> 14986 bytes .../jasypt-springsecurity3-1.9.2-javadoc.jar | Bin 0 -> 68051 bytes .../jasypt-springsecurity3-1.9.2-sources.jar | Bin 0 -> 22142 bytes .../lib/jasypt-springsecurity3-1.9.2.jar | Bin 0 -> 20318 bytes .../lib/jasypt-wicket13-1.9.2-javadoc.jar | Bin 0 -> 44561 bytes .../lib/jasypt-wicket13-1.9.2-sources.jar | Bin 0 -> 12505 bytes .../lib/jasypt-wicket13-1.9.2.jar | Bin 0 -> 13739 bytes .../lib/jasypt-wicket15-1.9.2-javadoc.jar | Bin 0 -> 27131 bytes .../lib/jasypt-wicket15-1.9.2-sources.jar | Bin 0 -> 9371 bytes .../lib/jasypt-wicket15-1.9.2.jar | Bin 0 -> 11174 bytes 807 files changed, 180815 insertions(+), 3 deletions(-) create mode 100644 utils/jasypt-1.9.2/LICENSE.txt create mode 100644 utils/jasypt-1.9.2/NOTICE.txt create mode 100644 utils/jasypt-1.9.2/README.txt create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/allclasses-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/allclasses-noframe.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/constant-values.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/deprecated-list.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/help-doc.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/index-all.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/index.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/PBEPasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/PasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/class-use/PBEPasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/class-use/PasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/PBEPasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/PasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/class-use/PBEPasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/class-use/PasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/overview-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/overview-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/overview-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/package-list create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/resources/inherit.gif create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/stylesheet.css create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/allclasses-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/allclasses-noframe.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/constant-values.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/deprecated-list.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/help-doc.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/index-all.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/index.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/EncryptedPasswordC3P0ConnectionProvider.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/EncryptedPasswordDriverManagerConnectionProvider.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/ParameterNaming.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/class-use/EncryptedPasswordC3P0ConnectionProvider.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/class-use/EncryptedPasswordDriverManagerConnectionProvider.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/class-use/ParameterNaming.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/HibernatePBEBigDecimalEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/HibernatePBEBigIntegerEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/HibernatePBEByteEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/HibernatePBEEncryptorRegistry.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/HibernatePBEStringEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/class-use/HibernatePBEBigDecimalEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/class-use/HibernatePBEBigIntegerEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/class-use/HibernatePBEByteEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/class-use/HibernatePBEEncryptorRegistry.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/class-use/HibernatePBEStringEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/AbstractEncryptedAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBigDecimalAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBigDecimalType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBigIntegerAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBigIntegerType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBinaryType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBooleanAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedByteAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedCalendarAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedDateAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedDoubleAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedFloatAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedIntegerAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedLongAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedShortAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/ParameterNaming.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/AbstractEncryptedAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBigDecimalAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBigDecimalType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBigIntegerAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBigIntegerType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBinaryType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBooleanAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedByteAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedCalendarAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedDateAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedDoubleAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedFloatAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedIntegerAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedLongAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedShortAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/ParameterNaming.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/EncryptedPasswordC3P0ConnectionProvider.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/EncryptedPasswordDriverManagerConnectionProvider.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/ParameterNaming.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/class-use/EncryptedPasswordC3P0ConnectionProvider.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/class-use/EncryptedPasswordDriverManagerConnectionProvider.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/class-use/ParameterNaming.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/HibernatePBEBigDecimalEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/HibernatePBEBigIntegerEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/HibernatePBEByteEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/HibernatePBEEncryptorRegistry.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/HibernatePBEStringEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/class-use/HibernatePBEBigDecimalEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/class-use/HibernatePBEBigIntegerEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/class-use/HibernatePBEByteEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/class-use/HibernatePBEEncryptorRegistry.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/class-use/HibernatePBEStringEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/AbstractEncryptedAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBigDecimalAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBigDecimalType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBigIntegerAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBigIntegerType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBinaryType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBooleanAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedByteAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedCalendarAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedDateAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedDoubleAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedFloatAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedIntegerAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedLongAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedShortAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/ParameterNaming.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/AbstractEncryptedAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBigDecimalAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBigDecimalType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBigIntegerAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBigIntegerType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBinaryType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBooleanAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedByteAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedCalendarAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedDateAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedDoubleAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedFloatAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedIntegerAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedLongAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedShortAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/ParameterNaming.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/overview-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/overview-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/overview-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/package-list create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/resources/inherit.gif create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/stylesheet.css create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/allclasses-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/allclasses-noframe.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/constant-values.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/deprecated-list.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/help-doc.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/index-all.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/index.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/EncryptedPasswordC3P0ConnectionProvider.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/EncryptedPasswordDriverManagerConnectionProvider.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/ParameterNaming.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/class-use/EncryptedPasswordC3P0ConnectionProvider.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/class-use/EncryptedPasswordDriverManagerConnectionProvider.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/class-use/ParameterNaming.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/HibernatePBEBigDecimalEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/HibernatePBEBigIntegerEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/HibernatePBEByteEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/HibernatePBEEncryptorRegistry.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/HibernatePBEStringEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/class-use/HibernatePBEBigDecimalEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/class-use/HibernatePBEBigIntegerEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/class-use/HibernatePBEByteEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/class-use/HibernatePBEEncryptorRegistry.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/class-use/HibernatePBEStringEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/AbstractEncryptedAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBigDecimalAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBigDecimalType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBigIntegerAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBigIntegerType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBinaryType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBooleanAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedByteAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedCalendarAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedDateAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedDoubleAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedFloatAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedIntegerAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedLongAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedShortAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/ParameterNaming.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/AbstractEncryptedAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBigDecimalAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBigDecimalType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBigIntegerAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBigIntegerType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBinaryType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBooleanAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedByteAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedCalendarAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedDateAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedDoubleAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedFloatAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedIntegerAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedLongAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedShortAsStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedStringType.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/ParameterNaming.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/overview-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/overview-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/overview-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/package-list create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/resources/inherit.gif create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/serialized-form.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/stylesheet.css create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/allclasses-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/allclasses-noframe.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/constant-values.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/deprecated-list.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/help-doc.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/index-all.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/index.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/EncryptablePreferencesPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/EncryptablePropertyOverrideConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/EncryptablePropertyPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/EncryptableServletContextPropertyPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/class-use/EncryptablePreferencesPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/class-use/EncryptablePropertyOverrideConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/class-use/EncryptablePropertyPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/class-use/EncryptableServletContextPropertyPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/EncryptablePreferencesPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/EncryptablePropertyOverrideConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/EncryptablePropertyPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/EncryptableServletContextPropertyPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/class-use/EncryptablePreferencesPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/class-use/EncryptablePropertyOverrideConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/class-use/EncryptablePropertyPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/class-use/EncryptableServletContextPropertyPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/overview-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/overview-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/overview-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/package-list create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/resources/inherit.gif create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring2/stylesheet.css create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/allclasses-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/allclasses-noframe.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/constant-values.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/deprecated-list.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/help-doc.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/index-all.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/index.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/EncryptablePreferencesPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/EncryptablePropertyOverrideConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/EncryptablePropertyPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/EncryptableServletContextPropertyPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/class-use/EncryptablePreferencesPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/class-use/EncryptablePropertyOverrideConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/class-use/EncryptablePropertyPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/class-use/EncryptableServletContextPropertyPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/EncryptablePreferencesPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/EncryptablePropertyOverrideConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/EncryptablePropertyPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/EncryptableServletContextPropertyPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/class-use/EncryptablePreferencesPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/class-use/EncryptablePropertyOverrideConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/class-use/EncryptablePropertyPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/class-use/EncryptableServletContextPropertyPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/DigesterFactoryBean.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/EncryptablePropertiesFactoryBean.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/EncryptionNamespaceHandler.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/EncryptorFactoryBean.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/class-use/DigesterFactoryBean.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/class-use/EncryptablePropertiesFactoryBean.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/class-use/EncryptionNamespaceHandler.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/class-use/EncryptorFactoryBean.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/overview-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/overview-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/overview-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/package-list create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/resources/inherit.gif create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring3/stylesheet.css create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/allclasses-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/allclasses-noframe.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/constant-values.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/deprecated-list.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/help-doc.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/index-all.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/index.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptablePreferencesPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptablePropertiesPropertySource.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptablePropertyOverrideConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptablePropertyPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptablePropertySourcesPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptableServletContextPropertyPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptablePreferencesPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptablePropertiesPropertySource.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptablePropertyOverrideConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptablePropertyPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptablePropertySourcesPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptableServletContextPropertyPlaceholderConfigurer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/DigesterFactoryBean.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/EncryptablePropertiesFactoryBean.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/EncryptionNamespaceHandler.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/EncryptorFactoryBean.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/class-use/DigesterFactoryBean.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/class-use/EncryptablePropertiesFactoryBean.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/class-use/EncryptionNamespaceHandler.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/class-use/EncryptorFactoryBean.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/overview-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/overview-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/overview-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/package-list create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/resources/inherit.gif create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-spring31/stylesheet.css create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/allclasses-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/allclasses-noframe.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/constant-values.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/deprecated-list.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/help-doc.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/index-all.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/index.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/PBEPasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/PasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/class-use/PBEPasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/class-use/PasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/PBEPasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/PasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/class-use/PBEPasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/class-use/PasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/overview-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/overview-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/overview-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/package-list create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/resources/inherit.gif create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/stylesheet.css create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/allclasses-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/allclasses-noframe.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/constant-values.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/deprecated-list.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/help-doc.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/index-all.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/index.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/PBEPasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/PasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/TokenBasedRememberMeServices.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/class-use/PBEPasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/class-use/PasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/class-use/TokenBasedRememberMeServices.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/PBEPasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/PasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/class-use/PBEPasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/class-use/PasswordEncoder.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/TokenBasedRememberMeServices.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/class-use/TokenBasedRememberMeServices.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/overview-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/overview-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/overview-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/package-list create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/resources/inherit.gif create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/stylesheet.css create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/allclasses-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/allclasses-noframe.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/constant-values.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/deprecated-list.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/help-doc.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/index-all.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/index.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/JasyptCrypt.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/JasyptCryptFactory.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/class-use/JasyptCrypt.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/class-use/JasyptCryptFactory.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/JasyptCrypt.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/JasyptCryptFactory.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/class-use/JasyptCrypt.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/class-use/JasyptCryptFactory.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/overview-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/overview-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/overview-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/package-list create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/resources/inherit.gif create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket13/stylesheet.css create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket15/allclasses-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket15/allclasses-noframe.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket15/constant-values.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket15/deprecated-list.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket15/help-doc.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket15/index-all.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket15/index.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/JasyptCrypt.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/JasyptCryptFactory.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/class-use/JasyptCrypt.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/class-use/JasyptCryptFactory.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket15/overview-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket15/package-list create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket15/resources/inherit.gif create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt-wicket15/stylesheet.css create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/allclasses-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/allclasses-noframe.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/constant-values.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/deprecated-list.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/help-doc.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/index-all.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/index.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/CommonUtils.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/class-use/CommonUtils.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/ByteDigester.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/PooledByteDigester.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/PooledStringDigester.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/StandardByteDigester.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/StandardStringDigester.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/StringDigester.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/ByteDigester.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/PooledByteDigester.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/PooledStringDigester.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/StandardByteDigester.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/StandardStringDigester.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/StringDigester.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/DigesterConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/EnvironmentDigesterConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/EnvironmentStringDigesterConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/SimpleDigesterConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/SimpleStringDigesterConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/StringDigesterConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/DigesterConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/EnvironmentDigesterConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/EnvironmentStringDigesterConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/SimpleDigesterConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/SimpleStringDigesterConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/StringDigesterConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/BigDecimalEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/BigIntegerEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/ByteEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/StringEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/class-use/BigDecimalEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/class-use/BigIntegerEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/class-use/ByteEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/class-use/StringEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/CleanablePasswordBased.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEBigDecimalCleanablePasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEBigDecimalEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEBigIntegerCleanablePasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEBigIntegerEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEByteCleanablePasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEByteEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEStringCleanablePasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEStringEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PasswordBased.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PooledPBEBigDecimalEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PooledPBEBigIntegerEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PooledPBEByteEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PooledPBEStringEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/StandardPBEBigDecimalEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/StandardPBEBigIntegerEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/StandardPBEByteEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/StandardPBEStringEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/CleanablePasswordBased.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEBigDecimalCleanablePasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEBigDecimalEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEBigIntegerCleanablePasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEBigIntegerEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEByteCleanablePasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEByteEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEStringCleanablePasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEStringEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PasswordBased.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PooledPBEBigDecimalEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PooledPBEBigIntegerEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PooledPBEByteEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PooledPBEStringEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/StandardPBEBigDecimalEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/StandardPBEBigIntegerEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/StandardPBEByteEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/StandardPBEStringEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/EnvironmentPBEConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/EnvironmentStringPBEConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/PBECleanablePasswordConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/PBEConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/SimplePBEConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/SimpleStringPBEConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/StringPBEConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/WebPBEConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/WebStringPBEConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/EnvironmentPBEConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/EnvironmentStringPBEConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/PBECleanablePasswordConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/PBEConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/SimplePBEConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/SimpleStringPBEConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/StringPBEConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/WebPBEConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/WebStringPBEConfig.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/AlreadyInitializedException.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/EncryptionInitializationException.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/EncryptionOperationNotPossibleException.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/PasswordAlreadyCleanedException.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/class-use/AlreadyInitializedException.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/class-use/EncryptionInitializationException.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/class-use/EncryptionOperationNotPossibleException.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/class-use/PasswordAlreadyCleanedException.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/AlgorithmRegistryCLI.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/JasyptPBEStringDecryptionCLI.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/JasyptPBEStringEncryptionCLI.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/JasyptStringDigestCLI.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/class-use/AlgorithmRegistryCLI.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/class-use/JasyptPBEStringDecryptionCLI.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/class-use/JasyptPBEStringEncryptionCLI.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/class-use/JasyptStringDigestCLI.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/JasyptStatelessService.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/class-use/JasyptStatelessService.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/Normalizer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/class-use/Normalizer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/EncryptableProperties.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/PropertyValueEncryptionUtils.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/class-use/EncryptableProperties.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/class-use/PropertyValueEncryptionUtils.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/AlgorithmRegistry.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/class-use/AlgorithmRegistry.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/ByteArrayFixedSaltGenerator.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/FixedByteArraySaltGenerator.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/FixedSaltGenerator.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/FixedStringSaltGenerator.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/RandomSaltGenerator.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/SaltGenerator.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/StringFixedSaltGenerator.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/ZeroSaltGenerator.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/ByteArrayFixedSaltGenerator.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/FixedByteArraySaltGenerator.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/FixedSaltGenerator.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/FixedStringSaltGenerator.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/RandomSaltGenerator.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/SaltGenerator.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/StringFixedSaltGenerator.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/ZeroSaltGenerator.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/BasicBinaryEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/BinaryEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/StrongBinaryEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/class-use/BasicBinaryEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/class-use/BinaryEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/class-use/StrongBinaryEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/Digester.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/class-use/Digester.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/BasicDecimalNumberEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/BasicIntegerNumberEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/DecimalNumberEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/IntegerNumberEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/StrongDecimalNumberEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/StrongIntegerNumberEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/BasicDecimalNumberEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/BasicIntegerNumberEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/DecimalNumberEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/IntegerNumberEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/StrongDecimalNumberEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/StrongIntegerNumberEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/BasicPasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/ConfigurablePasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/PasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/StrongPasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/class-use/BasicPasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/class-use/ConfigurablePasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/class-use/PasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/class-use/StrongPasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/RFC2307MD5PasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/RFC2307SHAPasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/RFC2307SMD5PasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/RFC2307SSHAPasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/class-use/RFC2307MD5PasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/class-use/RFC2307SHAPasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/class-use/RFC2307SMD5PasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/class-use/RFC2307SSHAPasswordEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/BasicTextEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/StrongTextEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/TextEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/class-use/BasicTextEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/class-use/StrongTextEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/class-use/TextEncryptor.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/WebPBEConfigFilter.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/WebPBEConfigRegistry.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/WebPBEConfigServlet.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/WebPBEInitializationContextListener.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/WebPBEInitializer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/class-use/WebPBEConfigFilter.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/class-use/WebPBEConfigRegistry.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/class-use/WebPBEConfigServlet.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/class-use/WebPBEInitializationContextListener.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/class-use/WebPBEInitializer.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/package-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/package-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/package-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/package-use.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/overview-frame.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/overview-summary.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/overview-tree.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/package-list create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/resources/inherit.gif create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/serialized-form.html create mode 100644 utils/jasypt-1.9.2/apidocs/jasypt/stylesheet.css create mode 100644 utils/jasypt-1.9.2/bin/decrypt.bat create mode 100644 utils/jasypt-1.9.2/bin/decrypt.sh create mode 100644 utils/jasypt-1.9.2/bin/digest.bat create mode 100644 utils/jasypt-1.9.2/bin/digest.sh create mode 100644 utils/jasypt-1.9.2/bin/encrypt.bat create mode 100755 utils/jasypt-1.9.2/bin/encrypt.sh create mode 100644 utils/jasypt-1.9.2/bin/listAlgorithms.bat create mode 100644 utils/jasypt-1.9.2/bin/listAlgorithms.sh create mode 100644 utils/jasypt-1.9.2/lib/icu4j-3.4.4.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-1.9.2-javadoc.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-1.9.2-lite.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-1.9.2-sources.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-1.9.2.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-acegisecurity-1.9.2-javadoc.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-acegisecurity-1.9.2-sources.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-acegisecurity-1.9.2.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-hibernate3-1.9.2-javadoc.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-hibernate3-1.9.2-sources.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-hibernate3-1.9.2.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-hibernate4-1.9.2-javadoc.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-hibernate4-1.9.2-sources.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-hibernate4-1.9.2.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-spring2-1.9.2-javadoc.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-spring2-1.9.2-sources.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-spring2-1.9.2.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-spring3-1.9.2-javadoc.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-spring3-1.9.2-sources.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-spring3-1.9.2.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-spring31-1.9.2-javadoc.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-spring31-1.9.2-sources.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-spring31-1.9.2.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-springsecurity2-1.9.2-javadoc.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-springsecurity2-1.9.2-sources.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-springsecurity2-1.9.2.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-springsecurity3-1.9.2-javadoc.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-springsecurity3-1.9.2-sources.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-springsecurity3-1.9.2.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-wicket13-1.9.2-javadoc.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-wicket13-1.9.2-sources.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-wicket13-1.9.2.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-wicket15-1.9.2-javadoc.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-wicket15-1.9.2-sources.jar create mode 100644 utils/jasypt-1.9.2/lib/jasypt-wicket15-1.9.2.jar diff --git a/pom.xml b/pom.xml index ef6166de..d5c92a59 100644 --- a/pom.xml +++ b/pom.xml @@ -60,6 +60,12 @@ runtime + + com.github.ulisesbocchio + jasypt-spring-boot-starter + 1.6 + + org.springframework diff --git a/src/main/resources/application-qa.properties b/src/main/resources/application-qa.properties index 262ef60d..66f9dc27 100644 --- a/src/main/resources/application-qa.properties +++ b/src/main/resources/application-qa.properties @@ -1,7 +1,10 @@ guru.springframework.profile.message=This is my QA Profile spring.datasource.url=jdbc:mysql://localhost:3306/springguru -spring.datasource.username=springframework -spring.datasource.password=guru -spring.jpa.hibernate.ddl-auto=update \ No newline at end of file +spring.jpa.hibernate.ddl-auto=update + +jasypt.encryptor.password=password + +spring.datasource.username=ENC(CdGBqXnwaPYaC8CdW88gK8/XiAX+rtvU) +spring.datasource.password=ENC(dP8dBsQ+C/LOK1resD3iqg==) \ No newline at end of file diff --git a/utils/jasypt-1.9.2/LICENSE.txt b/utils/jasypt-1.9.2/LICENSE.txt new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/utils/jasypt-1.9.2/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License 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. diff --git a/utils/jasypt-1.9.2/NOTICE.txt b/utils/jasypt-1.9.2/NOTICE.txt new file mode 100644 index 00000000..d10ea85a --- /dev/null +++ b/utils/jasypt-1.9.2/NOTICE.txt @@ -0,0 +1,90 @@ + + Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License 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. + + +--------------------------------- + + + +This distribution includes cryptographic software. The country in +which you currently reside may have restrictions on the import, +possession, use, and/or re-export to another country, of +encryption software. BEFORE using any encryption software, please +check your country's laws, regulations and policies concerning the +import, possession, or use, and re-export of encryption software, to +see if this is permitted. See http://www.wassenaar.org/ for more +information. + +The U.S. Government Department of Commerce, Bureau of Industry and +Security (BIS), has classified this software as Export Commodity +Control Number (ECCN) 5D002.C.1, which includes information security +software using or performing cryptographic functions with asymmetric +algorithms. The form and manner of this distribution makes it +eligible for export under the License Exception ENC Technology +Software Unrestricted (TSU) exception (see the BIS Export +Administration Regulations, Section 740.13) for both object code and +source code. + +The following provides more details on the cryptographic software +used (note that this software is not included in the distribution): + + * The PBE Encryption facilities require the Java Cryptography + extensions: http://java.sun.com/javase/technologies/security/. + +--------------------------------- + +Distributions of this software may include software developed by +The Apache Software Foundation (http://www.apache.org/). + +--------------------------------- + + +ICU License - ICU 1.8.1 and later + +COPYRIGHT AND PERMISSION NOTICE + +Copyright (c) 1995-2006 International Business Machines +Corporation and others + +All rights reserved. + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, +distribute, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, +provided that the above copyright notice(s) and this +permission notice appear in all copies of the Software and +that both the above copyright notice(s) and this +permission notice appear in supporting documentation. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO +EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN +THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE +USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright +holder shall not be used in advertising or otherwise to +promote the sale, use or other dealings in this Software +without prior written authorization of the copyright holder. diff --git a/utils/jasypt-1.9.2/README.txt b/utils/jasypt-1.9.2/README.txt new file mode 100644 index 00000000..6eedda76 --- /dev/null +++ b/utils/jasypt-1.9.2/README.txt @@ -0,0 +1,14 @@ + + JASYPT: Java Simplified Encryption + ---------------------------------- + + Jasypt (Java Simplified Encryption) is a java library which allows the + developer to add basic encryption capabilities to his/her projects with + minimum effort, and without the need of having deep knowledge on how + cryptography works. + + To learn more and download latest version: + + http://www.jasypt.org + + \ No newline at end of file diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/allclasses-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/allclasses-frame.html new file mode 100644 index 00000000..96fc9067 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/allclasses-frame.html @@ -0,0 +1,38 @@ + + + + + + + +All Classes (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +All Classes +
+ + + + + +
PasswordEncoder +
+PasswordEncoder +
+PBEPasswordEncoder +
+PBEPasswordEncoder +
+
+ + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/allclasses-noframe.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/allclasses-noframe.html new file mode 100644 index 00000000..f0a66fc2 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/allclasses-noframe.html @@ -0,0 +1,38 @@ + + + + + + + +All Classes (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +All Classes +
+ + + + + +
PasswordEncoder +
+PasswordEncoder +
+PBEPasswordEncoder +
+PBEPasswordEncoder +
+
+ + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/constant-values.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/constant-values.html new file mode 100644 index 00000000..a2a8c188 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/constant-values.html @@ -0,0 +1,147 @@ + + + + + + + +Constant Field Values (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Constant Field Values

+
+
+Contents
    +
+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/deprecated-list.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/deprecated-list.html new file mode 100644 index 00000000..32185b1c --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/deprecated-list.html @@ -0,0 +1,169 @@ + + + + + + + +Deprecated List (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Deprecated API

+
+
+Contents + + + + + + + + + + + + +
+Deprecated Classes
org.jasypt.spring.security.PasswordEncoder +
+          Renamed as org.jasypt.acegisecurity.PasswordEncoder. + Class will be removed from this package in 1.11. 
org.jasypt.spring.security.PBEPasswordEncoder +
+          Renamed as org.jasypt.acegisecurity.PBEPasswordEncoder. + Class will be removed from this package in 1.11. 
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/help-doc.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/help-doc.html new file mode 100644 index 00000000..32e9c4e2 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/help-doc.html @@ -0,0 +1,224 @@ + + + + + + + +API Help (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+How This API Document Is Organized

+
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.

+Overview

+
+ +

+The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

+

+Package

+
+ +

+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:

    +
  • Interfaces (italic)
  • Classes
  • Enums
  • Exceptions
  • Errors
  • Annotation Types
+
+

+Class/Interface

+
+ +

+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
  • Class inheritance diagram
  • Direct Subclasses
  • All Known Subinterfaces
  • All Known Implementing Classes
  • Class/interface declaration
  • Class/interface description +

    +

  • Nested Class Summary
  • Field Summary
  • Constructor Summary
  • Method Summary +

    +

  • Field Detail
  • Constructor Detail
  • Method Detail
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+ +

+Annotation Type

+
+ +

+Each annotation type has its own separate page with the following sections:

    +
  • Annotation Type declaration
  • Annotation Type description
  • Required Element Summary
  • Optional Element Summary
  • Element Detail
+
+ +

+Enum

+
+ +

+Each enum has its own separate page with the following sections:

    +
  • Enum declaration
  • Enum description
  • Enum Constant Summary
  • Enum Constant Detail
+
+

+Use

+
+Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.
+

+Tree (Class Hierarchy)

+
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.
    +
  • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
  • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
+
+

+Deprecated API

+
+The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+

+Index

+
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+

+Prev/Next

+These links take you to the next or previous class, interface, package, or related page.

+Frames/No Frames

+These links show and hide the HTML frames. All pages are available with or without frames. +

+

+Serialized Form

+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description. +

+

+Constant Field Values

+The Constant Field Values page lists the static final fields and their values. +

+ + +This help file applies to API documentation generated using the standard doclet. + +
+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/index-all.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/index-all.html new file mode 100644 index 00000000..73803b53 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/index-all.html @@ -0,0 +1,233 @@ + + + + + + + +Index (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +E I O P S
+

+E

+
+
encodePassword(String, Object) - +Method in class org.jasypt.acegisecurity.PasswordEncoder +
Encodes a password. +
encodePassword(String, Object) - +Method in class org.jasypt.acegisecurity.PBEPasswordEncoder +
Encodes a password. +
encodePassword(String, Object) - +Method in class org.jasypt.spring.security.PasswordEncoder +
Deprecated. Encodes a password. +
encodePassword(String, Object) - +Method in class org.jasypt.spring.security.PBEPasswordEncoder +
Deprecated. Encodes a password. +
+
+

+I

+
+
isPasswordValid(String, String, Object) - +Method in class org.jasypt.acegisecurity.PasswordEncoder +
Checks a password's validity. +
isPasswordValid(String, String, Object) - +Method in class org.jasypt.acegisecurity.PBEPasswordEncoder +
Checks a password's validity. +
isPasswordValid(String, String, Object) - +Method in class org.jasypt.spring.security.PasswordEncoder +
Deprecated. Checks a password's validity. +
isPasswordValid(String, String, Object) - +Method in class org.jasypt.spring.security.PBEPasswordEncoder +
Deprecated. Checks a password's validity. +
+
+

+O

+
+
org.jasypt.acegisecurity - package org.jasypt.acegisecurity
 
org.jasypt.spring.security - package org.jasypt.spring.security
 
+
+

+P

+
+
PasswordEncoder - Class in org.jasypt.acegisecurity
+ This class implements the Spring Security (ACEGI) + org.acegisecurity.providers.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption.
PasswordEncoder() - +Constructor for class org.jasypt.acegisecurity.PasswordEncoder +
Creates a new instance of PasswordEncoder +
PasswordEncoder - Class in org.jasypt.spring.security
Deprecated. Renamed as org.jasypt.acegisecurity.PasswordEncoder. + Class will be removed from this package in 1.11.
PasswordEncoder() - +Constructor for class org.jasypt.spring.security.PasswordEncoder +
Deprecated. Creates a new instance of PasswordEncoder +
PBEPasswordEncoder - Class in org.jasypt.acegisecurity
+ This class implements the Spring Security (ACEGI) + org.acegisecurity.providers.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption.
PBEPasswordEncoder() - +Constructor for class org.jasypt.acegisecurity.PBEPasswordEncoder +
Creates a new instance of PBEPasswordEncoder +
PBEPasswordEncoder - Class in org.jasypt.spring.security
Deprecated. Renamed as org.jasypt.acegisecurity.PBEPasswordEncoder. + Class will be removed from this package in 1.11.
PBEPasswordEncoder() - +Constructor for class org.jasypt.spring.security.PBEPasswordEncoder +
Deprecated. Creates a new instance of PBEPasswordEncoder +
+
+

+S

+
+
setPasswordEncryptor(PasswordEncryptor) - +Method in class org.jasypt.acegisecurity.PasswordEncoder +
Sets a password encryptor to be used. +
setPasswordEncryptor(PasswordEncryptor) - +Method in class org.jasypt.spring.security.PasswordEncoder +
Deprecated. Sets a password encryptor to be used. +
setPbeStringEncryptor(PBEStringEncryptor) - +Method in class org.jasypt.acegisecurity.PBEPasswordEncoder +
Sets a string digester to be used. +
setPbeStringEncryptor(PBEStringEncryptor) - +Method in class org.jasypt.spring.security.PBEPasswordEncoder +
Deprecated. Sets a string digester to be used. +
setStringDigester(StringDigester) - +Method in class org.jasypt.acegisecurity.PasswordEncoder +
Sets a string digester to be used. +
setStringDigester(StringDigester) - +Method in class org.jasypt.spring.security.PasswordEncoder +
Deprecated. Sets a string digester to be used. +
setTextEncryptor(TextEncryptor) - +Method in class org.jasypt.acegisecurity.PBEPasswordEncoder +
Sets a text encryptor to be used. +
setTextEncryptor(TextEncryptor) - +Method in class org.jasypt.spring.security.PBEPasswordEncoder +
Deprecated. Sets a text encryptor to be used. +
+
+E I O P S + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/index.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/index.html new file mode 100644 index 00000000..48aed355 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/index.html @@ -0,0 +1,40 @@ + + + + + + + +JASYPT: Java Simplified Encryption 1.9.2 API + + + + + + + + + + + +<H2> +Frame Alert</H2> + +<P> +This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. +<BR> +Link to<A HREF="overview-summary.html">Non-frame version.</A> + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/PBEPasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/PBEPasswordEncoder.html new file mode 100644 index 00000000..d9d38a23 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/PBEPasswordEncoder.html @@ -0,0 +1,468 @@ + + + + + + + +PBEPasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.acegisecurity +
+Class PBEPasswordEncoder

+
+Object
+  extended by org.jasypt.acegisecurity.PBEPasswordEncoder
+
+
+
All Implemented Interfaces:
org.acegisecurity.providers.encoding.PasswordEncoder
+
+
+
+
public final class PBEPasswordEncoder
extends Object
implements org.acegisecurity.providers.encoding.PasswordEncoder
+ + +

+

+ This class implements the Spring Security (ACEGI) + org.acegisecurity.providers.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption. +

+

+ Important: This class allows bi-directional password-based encryption + of user passwords + in ACEGI using Jasypt. But please note that passwords should not be + encrypted in a bi-directional way, but instead as uni-directional + digests (hashes). Encrypting passwords in a way they can be decrypted + can be a severe security issue, and should only be considered in legacy + or complex inter-application integration scenarios. +

+

+ Objects of this class will internally hold either an object of type + org.jasypt.util.text.TextEncryptor or an object of type + org.jasypt.encryption.pbe.PBEStringEncryptor (only one of them), + which should be set by respectively calling + setTextEncryptor(TextEncryptor) or + setPbeStringEncryptor(PBEStringEncryptor) + after creation. If neither a TextEncryptor nor + a PBEStringEncryptor are set, a new + org.jasypt.util.text.BasicTextEncryptor object is + created and internally used. +

+

+ Important: This implementation ignores any salt provided through + the interface methods, as the internal Jasypt + TextEncryptor or PBEStringEncryptor objects normally use a + random one. This means that salt can be safely passed as + null. +

+

+ Usage with a TextEncryptor +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the TextEncryptor in several places,     --> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptTextEncryptor" class="org.jasypt.util.text.StrongTextEncryptor" >
+    <property name="password" value="myPassword" />
+  </bean>
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the TextEncryptor instance so that it can be used from       -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security.PBEPasswordEncoder">
+    <property name="textEncryptor">
+      <ref bean="jasyptTextEncryptor" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ Usage with a PBEStringEncryptor +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the PBEStringEncryptor in several places,--> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptPBEStringEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor" >
+    <property name="algorithm" value="PBEWithMD5AndTripleDES" />
+    <property name="password" value="myPassword" />
+  </bean>
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the PBEStringEncryptor instance so that it can be used from  -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security.PBEPasswordEncoder">
+    <property name="pbeStringEncryptor">
+      <ref bean="jasyptPBEStringEncryptor" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ This class is thread-safe +

+

+ +

+

+
Since:
+
1.9.0 (existed as org.jasypt.spring.security.PBEPasswordEncoder since 1.4)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
PBEPasswordEncoder() + +
+          Creates a new instance of PBEPasswordEncoder
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringencodePassword(String rawPass, + Object salt) + +
+          Encodes a password.
+ booleanisPasswordValid(String encPass, + String rawPass, + Object salt) + +
+          Checks a password's validity.
+ voidsetPbeStringEncryptor(org.jasypt.encryption.pbe.PBEStringEncryptor pbeStringEncryptor) + +
+          Sets a string digester to be used.
+ voidsetTextEncryptor(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+          Sets a text encryptor to be used.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+PBEPasswordEncoder

+
+public PBEPasswordEncoder()
+
+
Creates a new instance of PBEPasswordEncoder +

+

+ + + + + + + + +
+Method Detail
+ +

+setTextEncryptor

+
+public void setTextEncryptor(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+
Sets a text encryptor to be used. Only one of + setTextEncryptor or setPBEStringEncryptor should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
textEncryptor - the text encryptor instance to be used.
+
+
+
+ +

+setPbeStringEncryptor

+
+public void setPbeStringEncryptor(org.jasypt.encryption.pbe.PBEStringEncryptor pbeStringEncryptor)
+
+
Sets a string digester to be used. Only one of + setTextEncryptor or setPBEStringEncryptor should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
pbeStringEncryptor - the PBE string encryptor instance to be used.
+
+
+
+ +

+encodePassword

+
+public String encodePassword(String rawPass,
+                             Object salt)
+
+
Encodes a password. This implementation completely ignores salt, + as jasypt's TextEncryptor and PBEStringEncryptor + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
encodePassword in interface org.acegisecurity.providers.encoding.PasswordEncoder
+
+
+
Parameters:
rawPass - The password to be encoded.
salt - The salt, which will be ignored. It can be null.
+
+
+
+ +

+isPasswordValid

+
+public boolean isPasswordValid(String encPass,
+                               String rawPass,
+                               Object salt)
+
+
Checks a password's validity. This implementation completely ignores + salt, as jasypt's TextEncryptor and PBEStringEncryptor + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
isPasswordValid in interface org.acegisecurity.providers.encoding.PasswordEncoder
+
+
+
Parameters:
encPass - The encrypted password against which to check.
rawPass - The password to be checked.
salt - The salt, which will be ignored. It can be null.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/PasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/PasswordEncoder.html new file mode 100644 index 00000000..2fe75a9d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/PasswordEncoder.html @@ -0,0 +1,457 @@ + + + + + + + +PasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.acegisecurity +
+Class PasswordEncoder

+
+Object
+  extended by org.jasypt.acegisecurity.PasswordEncoder
+
+
+
All Implemented Interfaces:
org.acegisecurity.providers.encoding.PasswordEncoder
+
+
+
+
public final class PasswordEncoder
extends Object
implements org.acegisecurity.providers.encoding.PasswordEncoder
+ + +

+

+ This class implements the Spring Security (ACEGI) + org.acegisecurity.providers.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption. +

+

+ Objects of this class will internally hold either an object of type + org.jasypt.util.password.PasswordEncryptor or an object of type + org.jasypt.digest.StringDigester (only one of them), + which should be set by respectively calling + setPasswordEncryptor(PasswordEncryptor) or + setStringDigester(StringDigester) + after creation. If neither a PasswordEncryptor nor + a StringDigester are set, a new + org.jasypt.util.password.BasicPasswordEncryptor object is + created and internally used. +

+

+ Important: This implementation ignores any salt provided through + the interface methods, as the internal Jasypt + PasswordEncryptor or StringDigester objects normally use a + random one. This means that salt can be safely passed as + null. +

+

+ Usage with a PasswordEncryptor +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the PasswordEncryptor in several places, --> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptPasswordEncryptor" class="org.jasypt.util.password.StrongPasswordEncryptor" />
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the PasswordEncryptor instance so that it can be used from   -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security.PasswordEncoder">
+    <property name="passwordEncryptor">
+      <ref bean="jasyptPasswordEncryptor" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ Usage with a StringDigester +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the StringDigester in several places,    --> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptStringDigester" class="org.jasypt.digest.StandardStringDigester" >
+    <property name="algorithm" value="SHA-1" />
+    <property name="iterations" value="100000" />
+  </bean>
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the StringDigester instance so that it can be used from      -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security.PasswordEncoder">
+    <property name="stringDigester">
+      <ref bean="jasyptStringDigester" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ This class is thread-safe +

+

+ +

+

+
Since:
+
1.9.0 (existed as org.jasypt.spring.security.PasswordEncoder since 1.4)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
PasswordEncoder() + +
+          Creates a new instance of PasswordEncoder
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringencodePassword(String rawPass, + Object salt) + +
+          Encodes a password.
+ booleanisPasswordValid(String encPass, + String rawPass, + Object salt) + +
+          Checks a password's validity.
+ voidsetPasswordEncryptor(org.jasypt.util.password.PasswordEncryptor passwordEncryptor) + +
+          Sets a password encryptor to be used.
+ voidsetStringDigester(org.jasypt.digest.StringDigester stringDigester) + +
+          Sets a string digester to be used.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+PasswordEncoder

+
+public PasswordEncoder()
+
+
Creates a new instance of PasswordEncoder +

+

+ + + + + + + + +
+Method Detail
+ +

+setPasswordEncryptor

+
+public void setPasswordEncryptor(org.jasypt.util.password.PasswordEncryptor passwordEncryptor)
+
+
Sets a password encryptor to be used. Only one of + setPasswordEncryptor or setStringDigester should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
passwordEncryptor - the password encryptor instance to be used.
+
+
+
+ +

+setStringDigester

+
+public void setStringDigester(org.jasypt.digest.StringDigester stringDigester)
+
+
Sets a string digester to be used. Only one of + setPasswordEncryptor or setStringDigester should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
stringDigester - the string digester instance to be used.
+
+
+
+ +

+encodePassword

+
+public String encodePassword(String rawPass,
+                             Object salt)
+
+
Encodes a password. This implementation completely ignores salt, + as jasypt's PasswordEncryptor and StringDigester + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
encodePassword in interface org.acegisecurity.providers.encoding.PasswordEncoder
+
+
+
Parameters:
rawPass - The password to be encoded.
salt - The salt, which will be ignored. It can be null.
+
+
+
+ +

+isPasswordValid

+
+public boolean isPasswordValid(String encPass,
+                               String rawPass,
+                               Object salt)
+
+
Checks a password's validity. This implementation completely ignores + salt, as jasypt's PasswordEncryptor and StringDigester + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
isPasswordValid in interface org.acegisecurity.providers.encoding.PasswordEncoder
+
+
+
Parameters:
encPass - The encrypted password (digest) against which to check.
rawPass - The password to be checked.
salt - The salt, which will be ignored. It can be null.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/class-use/PBEPasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/class-use/PBEPasswordEncoder.html new file mode 100644 index 00000000..4a524bae --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/class-use/PBEPasswordEncoder.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.acegisecurity.PBEPasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.acegisecurity.PBEPasswordEncoder

+
+No usage of org.jasypt.acegisecurity.PBEPasswordEncoder +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/class-use/PasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/class-use/PasswordEncoder.html new file mode 100644 index 00000000..8ed24e21 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/class-use/PasswordEncoder.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.acegisecurity.PasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.acegisecurity.PasswordEncoder

+
+No usage of org.jasypt.acegisecurity.PasswordEncoder +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/package-frame.html new file mode 100644 index 00000000..10d7dab0 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/package-frame.html @@ -0,0 +1,35 @@ + + + + + + + +org.jasypt.acegisecurity (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.acegisecurity + + + + +
+Classes  + +
+PasswordEncoder +
+PBEPasswordEncoder
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/package-summary.html new file mode 100644 index 00000000..508fa333 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/package-summary.html @@ -0,0 +1,170 @@ + + + + + + + +org.jasypt.acegisecurity (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.acegisecurity +

+ + + + + + + + + + + + + +
+Class Summary
PasswordEncoder + This class implements the Spring Security (ACEGI) + org.acegisecurity.providers.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption.
PBEPasswordEncoder + This class implements the Spring Security (ACEGI) + org.acegisecurity.providers.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/package-tree.html new file mode 100644 index 00000000..cbb949eb --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/package-tree.html @@ -0,0 +1,156 @@ + + + + + + + +org.jasypt.acegisecurity Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.acegisecurity +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.jasypt.acegisecurity.PasswordEncoder (implements org.acegisecurity.providers.encoding.PasswordEncoder) +
    • org.jasypt.acegisecurity.PBEPasswordEncoder (implements org.acegisecurity.providers.encoding.PasswordEncoder) +
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/package-use.html new file mode 100644 index 00000000..0bf8e374 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/acegisecurity/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.acegisecurity (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.acegisecurity

+
+No usage of org.jasypt.acegisecurity +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/PBEPasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/PBEPasswordEncoder.html new file mode 100644 index 00000000..cbe8f9b5 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/PBEPasswordEncoder.html @@ -0,0 +1,472 @@ + + + + + + + +PBEPasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring.security +
+Class PBEPasswordEncoder

+
+Object
+  extended by org.jasypt.spring.security.PBEPasswordEncoder
+
+
+
All Implemented Interfaces:
org.acegisecurity.providers.encoding.PasswordEncoder
+
+
+Deprecated. Renamed as org.jasypt.acegisecurity.PBEPasswordEncoder. + Class will be removed from this package in 1.11. +

+

+
public final class PBEPasswordEncoder
extends Object
implements org.acegisecurity.providers.encoding.PasswordEncoder
+ + +

+

+ This class implements the Spring Security (ACEGI) + org.acegisecurity.providers.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption. +

+

+ Important: This class allows bi-directional password-based encryption + of user passwords + in ACEGI using Jasypt. But please note that passwords should not be + encrypted in a bi-directional way, but instead as uni-directional + digests (hashes). Encrypting passwords in a way they can be decrypted + can be a severe security issue, and should only be considered in legacy + or complex inter-application integration scenarios. +

+

+ Objects of this class will internally hold either an object of type + org.jasypt.util.text.TextEncryptor or an object of type + org.jasypt.encryption.pbe.PBEStringEncryptor (only one of them), + which should be set by respectively calling + setTextEncryptor(TextEncryptor) or + setPbeStringEncryptor(PBEStringEncryptor) + after creation. If neither a TextEncryptor nor + a PBEStringEncryptor are set, a new + org.jasypt.util.text.BasicTextEncryptor object is + created and internally used. +

+

+ Important: This implementation ignores any salt provided through + the interface methods, as the internal Jasypt + TextEncryptor or PBEStringEncryptor objects normally use a + random one. This means that salt can be safely passed as + null. +

+

+ Usage with a TextEncryptor +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the TextEncryptor in several places,     --> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptTextEncryptor" class="org.jasypt.util.text.StrongTextEncryptor" >
+    <property name="password" value="myPassword" />
+  </bean>
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the TextEncryptor instance so that it can be used from       -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security.PBEPasswordEncoder">
+    <property name="textEncryptor">
+      <ref bean="jasyptTextEncryptor" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ Usage with a PBEStringEncryptor +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the PBEStringEncryptor in several places,--> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptPBEStringEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor" >
+    <property name="algorithm" value="PBEWithMD5AndTripleDES" />
+    <property name="password" value="myPassword" />
+  </bean>
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the PBEStringEncryptor instance so that it can be used from  -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security.PBEPasswordEncoder">
+    <property name="pbeStringEncryptor">
+      <ref bean="jasyptPBEStringEncryptor" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ This class is thread-safe +

+

+ +

+

+
Since:
+
1.4 (existed since 1.2 as + org.jasypt.springsecurity.PasswordEncoder)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
PBEPasswordEncoder() + +
+          Deprecated. Creates a new instance of PBEPasswordEncoder
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringencodePassword(String rawPass, + Object salt) + +
+          Deprecated. Encodes a password.
+ booleanisPasswordValid(String encPass, + String rawPass, + Object salt) + +
+          Deprecated. Checks a password's validity.
+ voidsetPbeStringEncryptor(org.jasypt.encryption.pbe.PBEStringEncryptor pbeStringEncryptor) + +
+          Deprecated. Sets a string digester to be used.
+ voidsetTextEncryptor(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+          Deprecated. Sets a text encryptor to be used.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+PBEPasswordEncoder

+
+public PBEPasswordEncoder()
+
+
Deprecated. 
Creates a new instance of PBEPasswordEncoder +

+

+ + + + + + + + +
+Method Detail
+ +

+setTextEncryptor

+
+public void setTextEncryptor(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+
Deprecated. 
Sets a text encryptor to be used. Only one of + setTextEncryptor or setPBEStringEncryptor should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
textEncryptor - the text encryptor instance to be used.
+
+
+
+ +

+setPbeStringEncryptor

+
+public void setPbeStringEncryptor(org.jasypt.encryption.pbe.PBEStringEncryptor pbeStringEncryptor)
+
+
Deprecated. 
Sets a string digester to be used. Only one of + setTextEncryptor or setPBEStringEncryptor should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
pbeStringEncryptor - the PBE string encryptor instance to be used.
+
+
+
+ +

+encodePassword

+
+public String encodePassword(String rawPass,
+                             Object salt)
+
+
Deprecated. 
Encodes a password. This implementation completely ignores salt, + as jasypt's TextEncryptor and PBEStringEncryptor + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
encodePassword in interface org.acegisecurity.providers.encoding.PasswordEncoder
+
+
+
Parameters:
rawPass - The password to be encoded.
salt - The salt, which will be ignored. It can be null.
+
+
+
+ +

+isPasswordValid

+
+public boolean isPasswordValid(String encPass,
+                               String rawPass,
+                               Object salt)
+
+
Deprecated. 
Checks a password's validity. This implementation completely ignores + salt, as jasypt's TextEncryptor and PBEStringEncryptor + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
isPasswordValid in interface org.acegisecurity.providers.encoding.PasswordEncoder
+
+
+
Parameters:
encPass - The encrypted password against which to check.
rawPass - The password to be checked.
salt - The salt, which will be ignored. It can be null.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/PasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/PasswordEncoder.html new file mode 100644 index 00000000..459f2c7d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/PasswordEncoder.html @@ -0,0 +1,461 @@ + + + + + + + +PasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring.security +
+Class PasswordEncoder

+
+Object
+  extended by org.jasypt.spring.security.PasswordEncoder
+
+
+
All Implemented Interfaces:
org.acegisecurity.providers.encoding.PasswordEncoder
+
+
+Deprecated. Renamed as org.jasypt.acegisecurity.PasswordEncoder. + Class will be removed from this package in 1.11. +

+

+
public final class PasswordEncoder
extends Object
implements org.acegisecurity.providers.encoding.PasswordEncoder
+ + +

+

+ This class implements the Spring Security (ACEGI) + org.acegisecurity.providers.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption. +

+

+ Objects of this class will internally hold either an object of type + org.jasypt.util.password.PasswordEncryptor or an object of type + org.jasypt.digest.StringDigester (only one of them), + which should be set by respectively calling + setPasswordEncryptor(PasswordEncryptor) or + setStringDigester(StringDigester) + after creation. If neither a PasswordEncryptor nor + a StringDigester are set, a new + org.jasypt.util.password.BasicPasswordEncryptor object is + created and internally used. +

+

+ Important: This implementation ignores any salt provided through + the interface methods, as the internal Jasypt + PasswordEncryptor or StringDigester objects normally use a + random one. This means that salt can be safely passed as + null. +

+

+ Usage with a PasswordEncryptor +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the PasswordEncryptor in several places, --> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptPasswordEncryptor" class="org.jasypt.util.password.StrongPasswordEncryptor" />
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the PasswordEncryptor instance so that it can be used from   -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security.PasswordEncoder">
+    <property name="passwordEncryptor">
+      <ref bean="jasyptPasswordEncryptor" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ Usage with a StringDigester +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the StringDigester in several places,    --> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptStringDigester" class="org.jasypt.digest.StandardStringDigester" >
+    <property name="algorithm" value="SHA-1" />
+    <property name="iterations" value="100000" />
+  </bean>
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the StringDigester instance so that it can be used from      -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security.PasswordEncoder">
+    <property name="stringDigester">
+      <ref bean="jasyptStringDigester" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ This class is thread-safe +

+

+ +

+

+
Since:
+
1.4 (existed since 1.2 as + org.jasypt.springsecurity.PasswordEncoder)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
PasswordEncoder() + +
+          Deprecated. Creates a new instance of PasswordEncoder
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringencodePassword(String rawPass, + Object salt) + +
+          Deprecated. Encodes a password.
+ booleanisPasswordValid(String encPass, + String rawPass, + Object salt) + +
+          Deprecated. Checks a password's validity.
+ voidsetPasswordEncryptor(org.jasypt.util.password.PasswordEncryptor passwordEncryptor) + +
+          Deprecated. Sets a password encryptor to be used.
+ voidsetStringDigester(org.jasypt.digest.StringDigester stringDigester) + +
+          Deprecated. Sets a string digester to be used.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+PasswordEncoder

+
+public PasswordEncoder()
+
+
Deprecated. 
Creates a new instance of PasswordEncoder +

+

+ + + + + + + + +
+Method Detail
+ +

+setPasswordEncryptor

+
+public void setPasswordEncryptor(org.jasypt.util.password.PasswordEncryptor passwordEncryptor)
+
+
Deprecated. 
Sets a password encryptor to be used. Only one of + setPasswordEncryptor or setStringDigester should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
passwordEncryptor - the password encryptor instance to be used.
+
+
+
+ +

+setStringDigester

+
+public void setStringDigester(org.jasypt.digest.StringDigester stringDigester)
+
+
Deprecated. 
Sets a string digester to be used. Only one of + setPasswordEncryptor or setStringDigester should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
stringDigester - the string digester instance to be used.
+
+
+
+ +

+encodePassword

+
+public String encodePassword(String rawPass,
+                             Object salt)
+
+
Deprecated. 
Encodes a password. This implementation completely ignores salt, + as jasypt's PasswordEncryptor and StringDigester + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
encodePassword in interface org.acegisecurity.providers.encoding.PasswordEncoder
+
+
+
Parameters:
rawPass - The password to be encoded.
salt - The salt, which will be ignored. It can be null.
+
+
+
+ +

+isPasswordValid

+
+public boolean isPasswordValid(String encPass,
+                               String rawPass,
+                               Object salt)
+
+
Deprecated. 
Checks a password's validity. This implementation completely ignores + salt, as jasypt's PasswordEncryptor and StringDigester + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
isPasswordValid in interface org.acegisecurity.providers.encoding.PasswordEncoder
+
+
+
Parameters:
encPass - The encrypted password (digest) against which to check.
rawPass - The password to be checked.
salt - The salt, which will be ignored. It can be null.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/class-use/PBEPasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/class-use/PBEPasswordEncoder.html new file mode 100644 index 00000000..9368a8f3 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/class-use/PBEPasswordEncoder.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring.security.PBEPasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring.security.PBEPasswordEncoder

+
+No usage of org.jasypt.spring.security.PBEPasswordEncoder +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/class-use/PasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/class-use/PasswordEncoder.html new file mode 100644 index 00000000..68b6f786 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/class-use/PasswordEncoder.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring.security.PasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring.security.PasswordEncoder

+
+No usage of org.jasypt.spring.security.PasswordEncoder +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/package-frame.html new file mode 100644 index 00000000..bfcdc7b9 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/package-frame.html @@ -0,0 +1,35 @@ + + + + + + + +org.jasypt.spring.security (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.spring.security + + + + +
+Classes  + +
+PasswordEncoder +
+PBEPasswordEncoder
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/package-summary.html new file mode 100644 index 00000000..f0f61eb6 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/package-summary.html @@ -0,0 +1,162 @@ + + + + + + + +org.jasypt.spring.security (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.spring.security +

+ + + + + + + + + + + + + +
+Class Summary
PasswordEncoderDeprecated. Renamed as org.jasypt.acegisecurity.PasswordEncoder.
PBEPasswordEncoderDeprecated. Renamed as org.jasypt.acegisecurity.PBEPasswordEncoder.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/package-tree.html new file mode 100644 index 00000000..88dd4139 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/package-tree.html @@ -0,0 +1,156 @@ + + + + + + + +org.jasypt.spring.security Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.spring.security +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.jasypt.spring.security.PasswordEncoder (implements org.acegisecurity.providers.encoding.PasswordEncoder) +
    • org.jasypt.spring.security.PBEPasswordEncoder (implements org.acegisecurity.providers.encoding.PasswordEncoder) +
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/package-use.html new file mode 100644 index 00000000..47fb4b04 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/org/jasypt/spring/security/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.spring.security (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.spring.security

+
+No usage of org.jasypt.spring.security +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/overview-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/overview-frame.html new file mode 100644 index 00000000..aaf77095 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/overview-frame.html @@ -0,0 +1,45 @@ + + + + + + + +Overview List (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + + + + +
+
+ + + + + +
All Classes +

+ +Packages +
+org.jasypt.acegisecurity +
+org.jasypt.spring.security +
+

+ +

+  + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/overview-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/overview-summary.html new file mode 100644 index 00000000..845cf1cb --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/overview-summary.html @@ -0,0 +1,161 @@ + + + + + + + +Overview (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+JASYPT: Java Simplified Encryption 1.9.2 API +

+
+ + + + + + + + + + + + + +
+Packages
org.jasypt.acegisecurity 
org.jasypt.spring.security 
+ +


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/overview-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/overview-tree.html new file mode 100644 index 00000000..f0374858 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/overview-tree.html @@ -0,0 +1,157 @@ + + + + + + + +Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For All Packages

+
+
+
Package Hierarchies:
org.jasypt.acegisecurity, org.jasypt.spring.security
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.jasypt.acegisecurity.PasswordEncoder (implements org.acegisecurity.providers.encoding.PasswordEncoder) +
    • org.jasypt.spring.security.PasswordEncoder (implements org.acegisecurity.providers.encoding.PasswordEncoder) +
    • org.jasypt.acegisecurity.PBEPasswordEncoder (implements org.acegisecurity.providers.encoding.PasswordEncoder) +
    • org.jasypt.spring.security.PBEPasswordEncoder (implements org.acegisecurity.providers.encoding.PasswordEncoder) +
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/package-list b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/package-list new file mode 100644 index 00000000..1987ff2e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/package-list @@ -0,0 +1,2 @@ +org.jasypt.acegisecurity +org.jasypt.spring.security diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/resources/inherit.gif b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/resources/inherit.gif new file mode 100644 index 0000000000000000000000000000000000000000..c814867a13deb0ca7ea2156c6ca1d5a03372af7e GIT binary patch literal 57 zcmZ?wbhEHbIIT!9-C*e{wE9>Kx3D)-;0v)C; KYxQGgum%9JOA&7X literal 0 HcmV?d00001 diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/stylesheet.css b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/stylesheet.css new file mode 100644 index 00000000..6ea9e516 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-acegisecurity/stylesheet.css @@ -0,0 +1,29 @@ +/* Javadoc style sheet */ + +/* Define colors, fonts and other style attributes here to override the defaults */ + +/* Page background color */ +body { background-color: #FFFFFF; color:#000000 } + +/* Headings */ +h1 { font-size: 145% } + +/* Table colors */ +.TableHeadingColor { background: #CCCCFF; color:#000000 } /* Dark mauve */ +.TableSubHeadingColor { background: #EEEEFF; color:#000000 } /* Light mauve */ +.TableRowColor { background: #FFFFFF; color:#000000 } /* White */ + +/* Font used in left-hand frame lists */ +.FrameTitleFont { font-size: 100%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameHeadingFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameItemFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } + +/* Navigation bar fonts and colors */ +.NavBarCell1 { background-color:#EEEEFF; color:#000000} /* Light mauve */ +.NavBarCell1Rev { background-color:#00008B; color:#FFFFFF} /* Dark Blue */ +.NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;color:#000000;} +.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;color:#FFFFFF;} + +.NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} +.NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/allclasses-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/allclasses-frame.html new file mode 100644 index 00000000..ebef38d4 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/allclasses-frame.html @@ -0,0 +1,130 @@ + + + + + + + +All Classes (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +All Classes +
+ + + + + +
AbstractEncryptedAsStringType +
+AbstractEncryptedAsStringType +
+EncryptedBigDecimalAsStringType +
+EncryptedBigDecimalAsStringType +
+EncryptedBigDecimalType +
+EncryptedBigDecimalType +
+EncryptedBigIntegerAsStringType +
+EncryptedBigIntegerAsStringType +
+EncryptedBigIntegerType +
+EncryptedBigIntegerType +
+EncryptedBinaryType +
+EncryptedBinaryType +
+EncryptedBooleanAsStringType +
+EncryptedBooleanAsStringType +
+EncryptedByteAsStringType +
+EncryptedByteAsStringType +
+EncryptedCalendarAsStringType +
+EncryptedCalendarAsStringType +
+EncryptedDateAsStringType +
+EncryptedDateAsStringType +
+EncryptedDoubleAsStringType +
+EncryptedDoubleAsStringType +
+EncryptedFloatAsStringType +
+EncryptedFloatAsStringType +
+EncryptedIntegerAsStringType +
+EncryptedIntegerAsStringType +
+EncryptedLongAsStringType +
+EncryptedLongAsStringType +
+EncryptedPasswordC3P0ConnectionProvider +
+EncryptedPasswordC3P0ConnectionProvider +
+EncryptedPasswordDriverManagerConnectionProvider +
+EncryptedPasswordDriverManagerConnectionProvider +
+EncryptedShortAsStringType +
+EncryptedShortAsStringType +
+EncryptedStringType +
+EncryptedStringType +
+HibernatePBEBigDecimalEncryptor +
+HibernatePBEBigDecimalEncryptor +
+HibernatePBEBigIntegerEncryptor +
+HibernatePBEBigIntegerEncryptor +
+HibernatePBEByteEncryptor +
+HibernatePBEByteEncryptor +
+HibernatePBEEncryptorRegistry +
+HibernatePBEEncryptorRegistry +
+HibernatePBEStringEncryptor +
+HibernatePBEStringEncryptor +
+ParameterNaming +
+ParameterNaming +
+ParameterNaming +
+ParameterNaming +
+
+ + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/allclasses-noframe.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/allclasses-noframe.html new file mode 100644 index 00000000..85673950 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/allclasses-noframe.html @@ -0,0 +1,130 @@ + + + + + + + +All Classes (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +All Classes +
+ + + + + +
AbstractEncryptedAsStringType +
+AbstractEncryptedAsStringType +
+EncryptedBigDecimalAsStringType +
+EncryptedBigDecimalAsStringType +
+EncryptedBigDecimalType +
+EncryptedBigDecimalType +
+EncryptedBigIntegerAsStringType +
+EncryptedBigIntegerAsStringType +
+EncryptedBigIntegerType +
+EncryptedBigIntegerType +
+EncryptedBinaryType +
+EncryptedBinaryType +
+EncryptedBooleanAsStringType +
+EncryptedBooleanAsStringType +
+EncryptedByteAsStringType +
+EncryptedByteAsStringType +
+EncryptedCalendarAsStringType +
+EncryptedCalendarAsStringType +
+EncryptedDateAsStringType +
+EncryptedDateAsStringType +
+EncryptedDoubleAsStringType +
+EncryptedDoubleAsStringType +
+EncryptedFloatAsStringType +
+EncryptedFloatAsStringType +
+EncryptedIntegerAsStringType +
+EncryptedIntegerAsStringType +
+EncryptedLongAsStringType +
+EncryptedLongAsStringType +
+EncryptedPasswordC3P0ConnectionProvider +
+EncryptedPasswordC3P0ConnectionProvider +
+EncryptedPasswordDriverManagerConnectionProvider +
+EncryptedPasswordDriverManagerConnectionProvider +
+EncryptedShortAsStringType +
+EncryptedShortAsStringType +
+EncryptedStringType +
+EncryptedStringType +
+HibernatePBEBigDecimalEncryptor +
+HibernatePBEBigDecimalEncryptor +
+HibernatePBEBigIntegerEncryptor +
+HibernatePBEBigIntegerEncryptor +
+HibernatePBEByteEncryptor +
+HibernatePBEByteEncryptor +
+HibernatePBEEncryptorRegistry +
+HibernatePBEEncryptorRegistry +
+HibernatePBEStringEncryptor +
+HibernatePBEStringEncryptor +
+ParameterNaming +
+ParameterNaming +
+ParameterNaming +
+ParameterNaming +
+
+ + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/constant-values.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/constant-values.html new file mode 100644 index 00000000..eb4baccc --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/constant-values.html @@ -0,0 +1,313 @@ + + + + + + + +Constant Field Values (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Constant Field Values

+
+
+Contents + + + + + + +
+org.jasypt.*
+ +

+ + + + + + + + + + + + +
org.jasypt.hibernate.connectionprovider.ParameterNaming
+public static final StringENCRYPTOR_REGISTERED_NAME"hibernate.connection.encryptor_registered_name"
+ +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
org.jasypt.hibernate.type.ParameterNaming
+public static final StringALGORITHM"algorithm"
+public static final StringDECIMAL_SCALE"decimalScale"
+public static final StringENCRYPTOR_NAME"encryptorRegisteredName"
+public static final StringKEY_OBTENTION_ITERATIONS"keyObtentionIterations"
+public static final StringPASSWORD"password"
+public static final StringPROVIDER_NAME"providerName"
+public static final StringSTORE_TIME_ZONE"storeTimeZone"
+public static final StringSTRING_OUTPUT_TYPE"stringOutputType"
+ +

+ +

+ + + + + + + + + + + + +
org.jasypt.hibernate3.connectionprovider.ParameterNaming
+public static final StringENCRYPTOR_REGISTERED_NAME"hibernate.connection.encryptor_registered_name"
+ +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
org.jasypt.hibernate3.type.ParameterNaming
+public static final StringALGORITHM"algorithm"
+public static final StringDECIMAL_SCALE"decimalScale"
+public static final StringENCRYPTOR_NAME"encryptorRegisteredName"
+public static final StringKEY_OBTENTION_ITERATIONS"keyObtentionIterations"
+public static final StringPASSWORD"password"
+public static final StringPROVIDER_NAME"providerName"
+public static final StringSTORE_TIME_ZONE"storeTimeZone"
+public static final StringSTRING_OUTPUT_TYPE"stringOutputType"
+ +

+ +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/deprecated-list.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/deprecated-list.html new file mode 100644 index 00000000..3f6d60f0 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/deprecated-list.html @@ -0,0 +1,307 @@ + + + + + + + +Deprecated List (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Deprecated API

+
+
+Contents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Deprecated Classes
org.jasypt.hibernate.type.AbstractEncryptedAsStringType +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.type.EncryptedBigDecimalAsStringType +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.type.EncryptedBigDecimalType +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.type.EncryptedBigIntegerAsStringType +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.type.EncryptedBigIntegerType +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.type.EncryptedBinaryType +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.type.EncryptedBooleanAsStringType +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.type.EncryptedByteAsStringType +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.type.EncryptedCalendarAsStringType +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.type.EncryptedDateAsStringType +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.type.EncryptedDoubleAsStringType +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.type.EncryptedFloatAsStringType +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.type.EncryptedIntegerAsStringType +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.type.EncryptedLongAsStringType +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.connectionprovider.EncryptedPasswordC3P0ConnectionProvider +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.type.EncryptedShortAsStringType +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.type.EncryptedStringType +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.type.ParameterNaming +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
org.jasypt.hibernate.connectionprovider.ParameterNaming +
+          Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. 
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/help-doc.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/help-doc.html new file mode 100644 index 00000000..5c72682f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/help-doc.html @@ -0,0 +1,224 @@ + + + + + + + +API Help (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+How This API Document Is Organized

+
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.

+Overview

+
+ +

+The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

+

+Package

+
+ +

+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:

    +
  • Interfaces (italic)
  • Classes
  • Enums
  • Exceptions
  • Errors
  • Annotation Types
+
+

+Class/Interface

+
+ +

+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
  • Class inheritance diagram
  • Direct Subclasses
  • All Known Subinterfaces
  • All Known Implementing Classes
  • Class/interface declaration
  • Class/interface description +

    +

  • Nested Class Summary
  • Field Summary
  • Constructor Summary
  • Method Summary +

    +

  • Field Detail
  • Constructor Detail
  • Method Detail
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+ +

+Annotation Type

+
+ +

+Each annotation type has its own separate page with the following sections:

    +
  • Annotation Type declaration
  • Annotation Type description
  • Required Element Summary
  • Optional Element Summary
  • Element Detail
+
+ +

+Enum

+
+ +

+Each enum has its own separate page with the following sections:

    +
  • Enum declaration
  • Enum description
  • Enum Constant Summary
  • Enum Constant Detail
+
+

+Use

+
+Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.
+

+Tree (Class Hierarchy)

+
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.
    +
  • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
  • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
+
+

+Deprecated API

+
+The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+

+Index

+
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+

+Prev/Next

+These links take you to the next or previous class, interface, package, or related page.

+Frames/No Frames

+These links show and hide the HTML frames. All pages are available with or without frames. +

+

+Serialized Form

+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description. +

+

+Constant Field Values

+The Constant Field Values page lists the static final fields and their values. +

+ + +This help file applies to API documentation generated using the standard doclet. + +
+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/index-all.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/index-all.html new file mode 100644 index 00000000..1bf9a84d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/index-all.html @@ -0,0 +1,1454 @@ + + + + + + + +Index (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G H I K N O P R S
+

+A

+
+
AbstractEncryptedAsStringType - Class in org.jasypt.hibernate.type
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
AbstractEncryptedAsStringType() - +Constructor for class org.jasypt.hibernate.type.AbstractEncryptedAsStringType +
Deprecated.   +
AbstractEncryptedAsStringType - Class in org.jasypt.hibernate3.type
Base class for Hibernate UserTypes to store + values as encrypted strings.
AbstractEncryptedAsStringType() - +Constructor for class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType +
  +
ALGORITHM - +Static variable in class org.jasypt.hibernate.type.ParameterNaming +
Deprecated.  + The encryption algorithm. +
ALGORITHM - +Static variable in class org.jasypt.hibernate3.type.ParameterNaming +
+ The encryption algorithm. +
assemble(Serializable, Object) - +Method in class org.jasypt.hibernate.type.AbstractEncryptedAsStringType +
Deprecated.   +
assemble(Serializable, Object) - +Method in class org.jasypt.hibernate.type.EncryptedBigDecimalType +
Deprecated.   +
assemble(Serializable, Object) - +Method in class org.jasypt.hibernate.type.EncryptedBigIntegerType +
Deprecated.   +
assemble(Serializable, Object) - +Method in class org.jasypt.hibernate.type.EncryptedBinaryType +
Deprecated.   +
assemble(Serializable, Object) - +Method in class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType +
  +
assemble(Serializable, Object) - +Method in class org.jasypt.hibernate3.type.EncryptedBigDecimalType +
  +
assemble(Serializable, Object) - +Method in class org.jasypt.hibernate3.type.EncryptedBigIntegerType +
  +
assemble(Serializable, Object) - +Method in class org.jasypt.hibernate3.type.EncryptedBinaryType +
  +
+
+

+C

+
+
checkInitialization() - +Method in class org.jasypt.hibernate.type.AbstractEncryptedAsStringType +
Deprecated.   +
checkInitialization() - +Method in class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType +
  +
configure(Properties) - +Method in class org.jasypt.hibernate.connectionprovider.EncryptedPasswordC3P0ConnectionProvider +
Deprecated.   +
configure(Properties) - +Method in class org.jasypt.hibernate.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider +
Deprecated.   +
configure(Properties) - +Method in class org.jasypt.hibernate3.connectionprovider.EncryptedPasswordC3P0ConnectionProvider +
  +
configure(Properties) - +Method in class org.jasypt.hibernate3.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate.type.AbstractEncryptedAsStringType +
Deprecated. Converts given String to its Object form. +
convertToObject(String) - +Method in class org.jasypt.hibernate.type.EncryptedBigDecimalAsStringType +
Deprecated.   +
convertToObject(String) - +Method in class org.jasypt.hibernate.type.EncryptedBigIntegerAsStringType +
Deprecated.   +
convertToObject(String) - +Method in class org.jasypt.hibernate.type.EncryptedBooleanAsStringType +
Deprecated.   +
convertToObject(String) - +Method in class org.jasypt.hibernate.type.EncryptedByteAsStringType +
Deprecated.   +
convertToObject(String) - +Method in class org.jasypt.hibernate.type.EncryptedCalendarAsStringType +
Deprecated.   +
convertToObject(String) - +Method in class org.jasypt.hibernate.type.EncryptedDateAsStringType +
Deprecated.   +
convertToObject(String) - +Method in class org.jasypt.hibernate.type.EncryptedDoubleAsStringType +
Deprecated.   +
convertToObject(String) - +Method in class org.jasypt.hibernate.type.EncryptedFloatAsStringType +
Deprecated.   +
convertToObject(String) - +Method in class org.jasypt.hibernate.type.EncryptedIntegerAsStringType +
Deprecated.   +
convertToObject(String) - +Method in class org.jasypt.hibernate.type.EncryptedLongAsStringType +
Deprecated.   +
convertToObject(String) - +Method in class org.jasypt.hibernate.type.EncryptedShortAsStringType +
Deprecated.   +
convertToObject(String) - +Method in class org.jasypt.hibernate.type.EncryptedStringType +
Deprecated.   +
convertToObject(String) - +Method in class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType +
Converts given String to its Object form. +
convertToObject(String) - +Method in class org.jasypt.hibernate3.type.EncryptedBigDecimalAsStringType +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate3.type.EncryptedBigIntegerAsStringType +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate3.type.EncryptedBooleanAsStringType +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate3.type.EncryptedByteAsStringType +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate3.type.EncryptedCalendarAsStringType +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate3.type.EncryptedDateAsStringType +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate3.type.EncryptedDoubleAsStringType +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate3.type.EncryptedFloatAsStringType +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate3.type.EncryptedIntegerAsStringType +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate3.type.EncryptedLongAsStringType +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate3.type.EncryptedShortAsStringType +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate3.type.EncryptedStringType +
  +
convertToString(Object) - +Method in class org.jasypt.hibernate.type.AbstractEncryptedAsStringType +
Deprecated. Converts given Object to its String form. +
convertToString(Object) - +Method in class org.jasypt.hibernate.type.EncryptedCalendarAsStringType +
Deprecated.   +
convertToString(Object) - +Method in class org.jasypt.hibernate.type.EncryptedDateAsStringType +
Deprecated.   +
convertToString(Object) - +Method in class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType +
Converts given Object to its String form. +
convertToString(Object) - +Method in class org.jasypt.hibernate3.type.EncryptedCalendarAsStringType +
  +
convertToString(Object) - +Method in class org.jasypt.hibernate3.type.EncryptedDateAsStringType +
  +
+
+

+D

+
+
DECIMAL_SCALE - +Static variable in class org.jasypt.hibernate.type.ParameterNaming +
Deprecated.  + The scale (numbers after the decimal point) to be used when storing + decimal numbers. +
DECIMAL_SCALE - +Static variable in class org.jasypt.hibernate3.type.ParameterNaming +
+ The scale (numbers after the decimal point) to be used when storing + decimal numbers. +
decrypt(BigDecimal) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor +
Deprecated. Decypts a message, delegating to wrapped encryptor +
decrypt(BigInteger) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor +
Deprecated. Decypts a message, delegating to wrapped encryptor +
decrypt(byte[]) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor +
Deprecated. Decypts a message, delegating to wrapped encryptor +
decrypt(String) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor +
Deprecated. Decypts a message, delegating to wrapped encryptor +
decrypt(BigDecimal) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigDecimalEncryptor +
Decypts a message, delegating to wrapped encryptor +
decrypt(BigInteger) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigIntegerEncryptor +
Decypts a message, delegating to wrapped encryptor +
decrypt(byte[]) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEByteEncryptor +
Decypts a message, delegating to wrapped encryptor +
decrypt(String) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEStringEncryptor +
Decypts a message, delegating to wrapped encryptor +
deepCopy(Object) - +Method in class org.jasypt.hibernate.type.AbstractEncryptedAsStringType +
Deprecated.   +
deepCopy(Object) - +Method in class org.jasypt.hibernate.type.EncryptedBigDecimalType +
Deprecated.   +
deepCopy(Object) - +Method in class org.jasypt.hibernate.type.EncryptedBigIntegerType +
Deprecated.   +
deepCopy(Object) - +Method in class org.jasypt.hibernate.type.EncryptedBinaryType +
Deprecated.   +
deepCopy(Object) - +Method in class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType +
  +
deepCopy(Object) - +Method in class org.jasypt.hibernate3.type.EncryptedBigDecimalType +
  +
deepCopy(Object) - +Method in class org.jasypt.hibernate3.type.EncryptedBigIntegerType +
  +
deepCopy(Object) - +Method in class org.jasypt.hibernate3.type.EncryptedBinaryType +
  +
disassemble(Object) - +Method in class org.jasypt.hibernate.type.AbstractEncryptedAsStringType +
Deprecated.   +
disassemble(Object) - +Method in class org.jasypt.hibernate.type.EncryptedBigDecimalType +
Deprecated.   +
disassemble(Object) - +Method in class org.jasypt.hibernate.type.EncryptedBigIntegerType +
Deprecated.   +
disassemble(Object) - +Method in class org.jasypt.hibernate.type.EncryptedBinaryType +
Deprecated.   +
disassemble(Object) - +Method in class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType +
  +
disassemble(Object) - +Method in class org.jasypt.hibernate3.type.EncryptedBigDecimalType +
  +
disassemble(Object) - +Method in class org.jasypt.hibernate3.type.EncryptedBigIntegerType +
  +
disassemble(Object) - +Method in class org.jasypt.hibernate3.type.EncryptedBinaryType +
  +
+
+

+E

+
+
encrypt(BigDecimal) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor +
Deprecated. Encrypts a message, delegating to wrapped encryptor. +
encrypt(BigInteger) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor +
Deprecated. Encrypts a message, delegating to wrapped encryptor. +
encrypt(byte[]) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor +
Deprecated. Encrypts a message, delegating to wrapped encryptor. +
encrypt(String) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor +
Deprecated. Encrypts a message, delegating to wrapped encryptor. +
encrypt(BigDecimal) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigDecimalEncryptor +
Encrypts a message, delegating to wrapped encryptor. +
encrypt(BigInteger) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigIntegerEncryptor +
Encrypts a message, delegating to wrapped encryptor. +
encrypt(byte[]) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEByteEncryptor +
Encrypts a message, delegating to wrapped encryptor. +
encrypt(String) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEStringEncryptor +
Encrypts a message, delegating to wrapped encryptor. +
EncryptedBigDecimalAsStringType - Class in org.jasypt.hibernate.type
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
EncryptedBigDecimalAsStringType() - +Constructor for class org.jasypt.hibernate.type.EncryptedBigDecimalAsStringType +
Deprecated.   +
EncryptedBigDecimalAsStringType - Class in org.jasypt.hibernate3.type
+ A Hibernate UserType implementation which allows + encryption of BigDecimal values into String (VARCHAR) database fields + during persistence of entities.
EncryptedBigDecimalAsStringType() - +Constructor for class org.jasypt.hibernate3.type.EncryptedBigDecimalAsStringType +
  +
EncryptedBigDecimalType - Class in org.jasypt.hibernate.type
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
EncryptedBigDecimalType() - +Constructor for class org.jasypt.hibernate.type.EncryptedBigDecimalType +
Deprecated.   +
EncryptedBigDecimalType - Class in org.jasypt.hibernate3.type
+ A Hibernate UserType implementation which allows transparent + encryption of BigDecimal values during persistence of entities.
EncryptedBigDecimalType() - +Constructor for class org.jasypt.hibernate3.type.EncryptedBigDecimalType +
  +
EncryptedBigIntegerAsStringType - Class in org.jasypt.hibernate.type
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
EncryptedBigIntegerAsStringType() - +Constructor for class org.jasypt.hibernate.type.EncryptedBigIntegerAsStringType +
Deprecated.   +
EncryptedBigIntegerAsStringType - Class in org.jasypt.hibernate3.type
+ A Hibernate UserType implementation which allows + encryption of BigInteger values into String (VARCHAR) database fields + during persistence of entities.
EncryptedBigIntegerAsStringType() - +Constructor for class org.jasypt.hibernate3.type.EncryptedBigIntegerAsStringType +
  +
EncryptedBigIntegerType - Class in org.jasypt.hibernate.type
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
EncryptedBigIntegerType() - +Constructor for class org.jasypt.hibernate.type.EncryptedBigIntegerType +
Deprecated.   +
EncryptedBigIntegerType - Class in org.jasypt.hibernate3.type
+ A Hibernate UserType implementation which allows transparent + encryption of BigInteger values during persistence of entities.
EncryptedBigIntegerType() - +Constructor for class org.jasypt.hibernate3.type.EncryptedBigIntegerType +
  +
EncryptedBinaryType - Class in org.jasypt.hibernate.type
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
EncryptedBinaryType() - +Constructor for class org.jasypt.hibernate.type.EncryptedBinaryType +
Deprecated.   +
EncryptedBinaryType - Class in org.jasypt.hibernate3.type
+ A Hibernate UserType implementation which allows transparent + encryption of byte[] values during persistence of entities.
EncryptedBinaryType() - +Constructor for class org.jasypt.hibernate3.type.EncryptedBinaryType +
  +
EncryptedBooleanAsStringType - Class in org.jasypt.hibernate.type
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
EncryptedBooleanAsStringType() - +Constructor for class org.jasypt.hibernate.type.EncryptedBooleanAsStringType +
Deprecated.   +
EncryptedBooleanAsStringType - Class in org.jasypt.hibernate3.type
+ A Hibernate UserType implementation which allows + encryption of Boolean values into String (VARCHAR) database fields + during persistence of entities.
EncryptedBooleanAsStringType() - +Constructor for class org.jasypt.hibernate3.type.EncryptedBooleanAsStringType +
  +
EncryptedByteAsStringType - Class in org.jasypt.hibernate.type
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
EncryptedByteAsStringType() - +Constructor for class org.jasypt.hibernate.type.EncryptedByteAsStringType +
Deprecated.   +
EncryptedByteAsStringType - Class in org.jasypt.hibernate3.type
+ A Hibernate UserType implementation which allows + encryption of Byte values into String (VARCHAR) database fields + during persistence of entities.
EncryptedByteAsStringType() - +Constructor for class org.jasypt.hibernate3.type.EncryptedByteAsStringType +
  +
EncryptedCalendarAsStringType - Class in org.jasypt.hibernate.type
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
EncryptedCalendarAsStringType() - +Constructor for class org.jasypt.hibernate.type.EncryptedCalendarAsStringType +
Deprecated.   +
EncryptedCalendarAsStringType - Class in org.jasypt.hibernate3.type
+ A Hibernate UserType implementation which allows + encryption of Calendar values into String (VARCHAR) database fields + during persistence of entities.
EncryptedCalendarAsStringType() - +Constructor for class org.jasypt.hibernate3.type.EncryptedCalendarAsStringType +
  +
EncryptedDateAsStringType - Class in org.jasypt.hibernate.type
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
EncryptedDateAsStringType() - +Constructor for class org.jasypt.hibernate.type.EncryptedDateAsStringType +
Deprecated.   +
EncryptedDateAsStringType - Class in org.jasypt.hibernate3.type
+ A Hibernate UserType implementation which allows + encryption of Date values into String (VARCHAR) database fields + during persistence of entities.
EncryptedDateAsStringType() - +Constructor for class org.jasypt.hibernate3.type.EncryptedDateAsStringType +
  +
EncryptedDoubleAsStringType - Class in org.jasypt.hibernate.type
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
EncryptedDoubleAsStringType() - +Constructor for class org.jasypt.hibernate.type.EncryptedDoubleAsStringType +
Deprecated.   +
EncryptedDoubleAsStringType - Class in org.jasypt.hibernate3.type
+ A Hibernate UserType implementation which allows + encryption of Double values into String (VARCHAR) database fields + during persistence of entities.
EncryptedDoubleAsStringType() - +Constructor for class org.jasypt.hibernate3.type.EncryptedDoubleAsStringType +
  +
EncryptedFloatAsStringType - Class in org.jasypt.hibernate.type
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
EncryptedFloatAsStringType() - +Constructor for class org.jasypt.hibernate.type.EncryptedFloatAsStringType +
Deprecated.   +
EncryptedFloatAsStringType - Class in org.jasypt.hibernate3.type
+ A Hibernate UserType implementation which allows + encryption of Float values into String (VARCHAR) database fields + during persistence of entities.
EncryptedFloatAsStringType() - +Constructor for class org.jasypt.hibernate3.type.EncryptedFloatAsStringType +
  +
EncryptedIntegerAsStringType - Class in org.jasypt.hibernate.type
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
EncryptedIntegerAsStringType() - +Constructor for class org.jasypt.hibernate.type.EncryptedIntegerAsStringType +
Deprecated.   +
EncryptedIntegerAsStringType - Class in org.jasypt.hibernate3.type
+ A Hibernate UserType implementation which allows + encryption of Integer values into String (VARCHAR) database fields + during persistence of entities.
EncryptedIntegerAsStringType() - +Constructor for class org.jasypt.hibernate3.type.EncryptedIntegerAsStringType +
  +
EncryptedLongAsStringType - Class in org.jasypt.hibernate.type
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
EncryptedLongAsStringType() - +Constructor for class org.jasypt.hibernate.type.EncryptedLongAsStringType +
Deprecated.   +
EncryptedLongAsStringType - Class in org.jasypt.hibernate3.type
+ A Hibernate UserType implementation which allows + encryption of Long values into String (VARCHAR) database fields + during persistence of entities.
EncryptedLongAsStringType() - +Constructor for class org.jasypt.hibernate3.type.EncryptedLongAsStringType +
  +
EncryptedPasswordC3P0ConnectionProvider - Class in org.jasypt.hibernate.connectionprovider
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
EncryptedPasswordC3P0ConnectionProvider() - +Constructor for class org.jasypt.hibernate.connectionprovider.EncryptedPasswordC3P0ConnectionProvider +
Deprecated.   +
EncryptedPasswordC3P0ConnectionProvider - Class in org.jasypt.hibernate3.connectionprovider
+ Extension of C3P0ConnectionProvider that allows the user + to write the datasource configuration parameters in an encrypted manner in the + hibernate.cfg.xml or hibernate.properties file
EncryptedPasswordC3P0ConnectionProvider() - +Constructor for class org.jasypt.hibernate3.connectionprovider.EncryptedPasswordC3P0ConnectionProvider +
  +
EncryptedPasswordDriverManagerConnectionProvider - Class in org.jasypt.hibernate.connectionprovider
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
EncryptedPasswordDriverManagerConnectionProvider() - +Constructor for class org.jasypt.hibernate.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider +
Deprecated.   +
EncryptedPasswordDriverManagerConnectionProvider - Class in org.jasypt.hibernate3.connectionprovider
+ Extension of DriverManagerConnectionProvider that allows the user + to write the datasource configuration parameters in an encrypted manner in the + hibernate.cfg.xml or hibernate.properties file
EncryptedPasswordDriverManagerConnectionProvider() - +Constructor for class org.jasypt.hibernate3.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider +
  +
EncryptedShortAsStringType - Class in org.jasypt.hibernate.type
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
EncryptedShortAsStringType() - +Constructor for class org.jasypt.hibernate.type.EncryptedShortAsStringType +
Deprecated.   +
EncryptedShortAsStringType - Class in org.jasypt.hibernate3.type
+ A Hibernate UserType implementation which allows + encryption of Short values into String (VARCHAR) database fields + during persistence of entities.
EncryptedShortAsStringType() - +Constructor for class org.jasypt.hibernate3.type.EncryptedShortAsStringType +
  +
EncryptedStringType - Class in org.jasypt.hibernate.type
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
EncryptedStringType() - +Constructor for class org.jasypt.hibernate.type.EncryptedStringType +
Deprecated.   +
EncryptedStringType - Class in org.jasypt.hibernate3.type
+ A Hibernate UserType implementation which allows transparent + encryption of String values during persistence of entities.
EncryptedStringType() - +Constructor for class org.jasypt.hibernate3.type.EncryptedStringType +
  +
encryptor - +Variable in class org.jasypt.hibernate.type.AbstractEncryptedAsStringType +
Deprecated.   +
encryptor - +Variable in class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType +
  +
ENCRYPTOR_NAME - +Static variable in class org.jasypt.hibernate.type.ParameterNaming +
Deprecated.  + The registered name of an encryptor previously registered at the + HibernatePBEEncryptorRegistry. +
ENCRYPTOR_NAME - +Static variable in class org.jasypt.hibernate3.type.ParameterNaming +
+ The registered name of an encryptor previously registered at the + HibernatePBEEncryptorRegistry. +
ENCRYPTOR_REGISTERED_NAME - +Static variable in class org.jasypt.hibernate.connectionprovider.ParameterNaming +
Deprecated. Property in hibernate.cfg.xml or + hibernate.properties which contains the registered name + (in HibernatePBEEncryptorRegistry) of the encryptor which + will be used to decrypt the datasource parameters. +
ENCRYPTOR_REGISTERED_NAME - +Static variable in class org.jasypt.hibernate3.connectionprovider.ParameterNaming +
Property in hibernate.cfg.xml or + hibernate.properties which contains the registered name + (in HibernatePBEEncryptorRegistry) of the encryptor which + will be used to decrypt the datasource parameters. +
equals(Object, Object) - +Method in class org.jasypt.hibernate.type.AbstractEncryptedAsStringType +
Deprecated.   +
equals(Object, Object) - +Method in class org.jasypt.hibernate.type.EncryptedBigDecimalType +
Deprecated.   +
equals(Object, Object) - +Method in class org.jasypt.hibernate.type.EncryptedBigIntegerType +
Deprecated.   +
equals(Object, Object) - +Method in class org.jasypt.hibernate.type.EncryptedBinaryType +
Deprecated.   +
equals(Object, Object) - +Method in class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType +
  +
equals(Object, Object) - +Method in class org.jasypt.hibernate3.type.EncryptedBigDecimalType +
  +
equals(Object, Object) - +Method in class org.jasypt.hibernate3.type.EncryptedBigIntegerType +
  +
equals(Object, Object) - +Method in class org.jasypt.hibernate3.type.EncryptedBinaryType +
  +
+
+

+G

+
+
getEncryptor() - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor +
Deprecated. Returns the encryptor which this object wraps. +
getEncryptor() - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor +
Deprecated. Returns the encryptor which this object wraps. +
getEncryptor() - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor +
Deprecated. Returns the encryptor which this object wraps. +
getEncryptor() - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor +
Deprecated. Returns the encryptor which this object wraps. +
getEncryptor() - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigDecimalEncryptor +
Returns the encryptor which this object wraps. +
getEncryptor() - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigIntegerEncryptor +
Returns the encryptor which this object wraps. +
getEncryptor() - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEByteEncryptor +
Returns the encryptor which this object wraps. +
getEncryptor() - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEStringEncryptor +
Returns the encryptor which this object wraps. +
getInstance() - +Static method in class org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry +
Deprecated. Returns the singleton instance of the registry. +
getInstance() - +Static method in class org.jasypt.hibernate3.encryptor.HibernatePBEEncryptorRegistry +
Returns the singleton instance of the registry. +
getPBEBigDecimalEncryptor(String) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry +
Deprecated. Returns the PBEBigDecimalEncryptor registered with the specified + name (if exists). +
getPBEBigDecimalEncryptor(String) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEEncryptorRegistry +
Returns the PBEBigDecimalEncryptor registered with the specified + name (if exists). +
getPBEBigIntegerEncryptor(String) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry +
Deprecated. Returns the PBEBigIntegerEncryptor registered with the specified + name (if exists). +
getPBEBigIntegerEncryptor(String) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEEncryptorRegistry +
Returns the PBEBigIntegerEncryptor registered with the specified + name (if exists). +
getPBEByteEncryptor(String) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry +
Deprecated. Returns the PBEByteEncryptor registered with the specified + name (if exists). +
getPBEByteEncryptor(String) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEEncryptorRegistry +
Returns the PBEByteEncryptor registered with the specified + name (if exists). +
getPBEStringEncryptor(String) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry +
Deprecated. Returns the PBEStringEncryptor registered with the specified + name (if exists). +
getPBEStringEncryptor(String) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEEncryptorRegistry +
Returns the PBEStringEncryptor registered with the specified + name (if exists). +
getRegisteredName() - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor +
Deprecated. Returns the name with which the wrapped encryptor is registered at + the registry. +
getRegisteredName() - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor +
Deprecated. Returns the name with which the wrapped encryptor is registered at + the registry. +
getRegisteredName() - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor +
Deprecated. Returns the name with which the wrapped encryptor is registered at + the registry. +
getRegisteredName() - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor +
Deprecated. Returns the name with which the wrapped encryptor is registered at + the registry. +
getRegisteredName() - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigDecimalEncryptor +
Returns the name with which the wrapped encryptor is registered at + the registry. +
getRegisteredName() - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigIntegerEncryptor +
Returns the name with which the wrapped encryptor is registered at + the registry. +
getRegisteredName() - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEByteEncryptor +
Returns the name with which the wrapped encryptor is registered at + the registry. +
getRegisteredName() - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEStringEncryptor +
Returns the name with which the wrapped encryptor is registered at + the registry. +
+
+

+H

+
+
hashCode(Object) - +Method in class org.jasypt.hibernate.type.AbstractEncryptedAsStringType +
Deprecated.   +
hashCode(Object) - +Method in class org.jasypt.hibernate.type.EncryptedBigDecimalType +
Deprecated.   +
hashCode(Object) - +Method in class org.jasypt.hibernate.type.EncryptedBigIntegerType +
Deprecated.   +
hashCode(Object) - +Method in class org.jasypt.hibernate.type.EncryptedBinaryType +
Deprecated.   +
hashCode(Object) - +Method in class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType +
  +
hashCode(Object) - +Method in class org.jasypt.hibernate3.type.EncryptedBigDecimalType +
  +
hashCode(Object) - +Method in class org.jasypt.hibernate3.type.EncryptedBigIntegerType +
  +
hashCode(Object) - +Method in class org.jasypt.hibernate3.type.EncryptedBinaryType +
  +
HibernatePBEBigDecimalEncryptor - Class in org.jasypt.hibernate.encryptor
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
HibernatePBEBigDecimalEncryptor() - +Constructor for class org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor +
Deprecated. Creates a new instance of HibernatePBEBigDecimalEncryptor It also + creates a StandardPBEBigDecimalEncryptor for internal use, which + can be overriden by calling setEncryptor(...). +
HibernatePBEBigDecimalEncryptor - Class in org.jasypt.hibernate3.encryptor
+ Placeholder class for PBEBigDecimalEncryptor objects which are + eligible for use from Hibernate.
HibernatePBEBigDecimalEncryptor() - +Constructor for class org.jasypt.hibernate3.encryptor.HibernatePBEBigDecimalEncryptor +
Creates a new instance of HibernatePBEBigDecimalEncryptor It also + creates a StandardPBEBigDecimalEncryptor for internal use, which + can be overriden by calling setEncryptor(...). +
HibernatePBEBigIntegerEncryptor - Class in org.jasypt.hibernate.encryptor
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
HibernatePBEBigIntegerEncryptor() - +Constructor for class org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor +
Deprecated. Creates a new instance of HibernatePBEBigIntegerEncryptor It also + creates a StandardPBEBigIntegerEncryptor for internal use, which + can be overriden by calling setEncryptor(...). +
HibernatePBEBigIntegerEncryptor - Class in org.jasypt.hibernate3.encryptor
+ Placeholder class for PBEBigIntegerEncryptor objects which are + eligible for use from Hibernate.
HibernatePBEBigIntegerEncryptor() - +Constructor for class org.jasypt.hibernate3.encryptor.HibernatePBEBigIntegerEncryptor +
Creates a new instance of HibernatePBEBigIntegerEncryptor It also + creates a StandardPBEBigIntegerEncryptor for internal use, which + can be overriden by calling setEncryptor(...). +
HibernatePBEByteEncryptor - Class in org.jasypt.hibernate.encryptor
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
HibernatePBEByteEncryptor() - +Constructor for class org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor +
Deprecated. Creates a new instance of HibernatePBEByteEncryptor It also + creates a StandardPBEByteEncryptor for internal use, which + can be overriden by calling setEncryptor(...). +
HibernatePBEByteEncryptor - Class in org.jasypt.hibernate3.encryptor
+ Placeholder class for PBEByteEncryptor objects which are + eligible for use from Hibernate.
HibernatePBEByteEncryptor() - +Constructor for class org.jasypt.hibernate3.encryptor.HibernatePBEByteEncryptor +
Creates a new instance of HibernatePBEByteEncryptor It also + creates a StandardPBEByteEncryptor for internal use, which + can be overriden by calling setEncryptor(...). +
HibernatePBEEncryptorRegistry - Class in org.jasypt.hibernate.encryptor
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
HibernatePBEEncryptorRegistry - Class in org.jasypt.hibernate3.encryptor
+ Registry for all the PBE*Encryptor which are eligible for + use from Hibernate.
HibernatePBEStringEncryptor - Class in org.jasypt.hibernate.encryptor
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
HibernatePBEStringEncryptor() - +Constructor for class org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor +
Deprecated. Creates a new instance of HibernatePBEStringEncryptor. +
HibernatePBEStringEncryptor - Class in org.jasypt.hibernate3.encryptor
+ Placeholder class for PBEStringEncryptor objects which are + eligible for use from Hibernate.
HibernatePBEStringEncryptor() - +Constructor for class org.jasypt.hibernate3.encryptor.HibernatePBEStringEncryptor +
Creates a new instance of HibernatePBEStringEncryptor. +
+
+

+I

+
+
isMutable() - +Method in class org.jasypt.hibernate.type.AbstractEncryptedAsStringType +
Deprecated.   +
isMutable() - +Method in class org.jasypt.hibernate.type.EncryptedBigDecimalType +
Deprecated.   +
isMutable() - +Method in class org.jasypt.hibernate.type.EncryptedBigIntegerType +
Deprecated.   +
isMutable() - +Method in class org.jasypt.hibernate.type.EncryptedBinaryType +
Deprecated.   +
isMutable() - +Method in class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType +
  +
isMutable() - +Method in class org.jasypt.hibernate3.type.EncryptedBigDecimalType +
  +
isMutable() - +Method in class org.jasypt.hibernate3.type.EncryptedBigIntegerType +
  +
isMutable() - +Method in class org.jasypt.hibernate3.type.EncryptedBinaryType +
  +
+
+

+K

+
+
KEY_OBTENTION_ITERATIONS - +Static variable in class org.jasypt.hibernate.type.ParameterNaming +
Deprecated.  + The number of hashing iterations to be applied for obtaining the + encryption key. +
KEY_OBTENTION_ITERATIONS - +Static variable in class org.jasypt.hibernate3.type.ParameterNaming +
+ The number of hashing iterations to be applied for obtaining the + encryption key. +
+
+

+N

+
+
nullSafeGet(ResultSet, String[], Object) - +Method in class org.jasypt.hibernate.type.AbstractEncryptedAsStringType +
Deprecated.   +
nullSafeGet(ResultSet, String[], Object) - +Method in class org.jasypt.hibernate.type.EncryptedBigDecimalType +
Deprecated.   +
nullSafeGet(ResultSet, String[], Object) - +Method in class org.jasypt.hibernate.type.EncryptedBigIntegerType +
Deprecated.   +
nullSafeGet(ResultSet, String[], Object) - +Method in class org.jasypt.hibernate.type.EncryptedBinaryType +
Deprecated.   +
nullSafeGet(ResultSet, String[], Object) - +Method in class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType +
  +
nullSafeGet(ResultSet, String[], Object) - +Method in class org.jasypt.hibernate3.type.EncryptedBigDecimalType +
  +
nullSafeGet(ResultSet, String[], Object) - +Method in class org.jasypt.hibernate3.type.EncryptedBigIntegerType +
  +
nullSafeGet(ResultSet, String[], Object) - +Method in class org.jasypt.hibernate3.type.EncryptedBinaryType +
  +
nullSafeSet(PreparedStatement, Object, int) - +Method in class org.jasypt.hibernate.type.AbstractEncryptedAsStringType +
Deprecated.   +
nullSafeSet(PreparedStatement, Object, int) - +Method in class org.jasypt.hibernate.type.EncryptedBigDecimalType +
Deprecated.   +
nullSafeSet(PreparedStatement, Object, int) - +Method in class org.jasypt.hibernate.type.EncryptedBigIntegerType +
Deprecated.   +
nullSafeSet(PreparedStatement, Object, int) - +Method in class org.jasypt.hibernate.type.EncryptedBinaryType +
Deprecated.   +
nullSafeSet(PreparedStatement, Object, int) - +Method in class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType +
  +
nullSafeSet(PreparedStatement, Object, int) - +Method in class org.jasypt.hibernate3.type.EncryptedBigDecimalType +
  +
nullSafeSet(PreparedStatement, Object, int) - +Method in class org.jasypt.hibernate3.type.EncryptedBigIntegerType +
  +
nullSafeSet(PreparedStatement, Object, int) - +Method in class org.jasypt.hibernate3.type.EncryptedBinaryType +
  +
+
+

+O

+
+
org.jasypt.hibernate.connectionprovider - package org.jasypt.hibernate.connectionprovider
 
org.jasypt.hibernate.encryptor - package org.jasypt.hibernate.encryptor
 
org.jasypt.hibernate.type - package org.jasypt.hibernate.type
 
org.jasypt.hibernate3.connectionprovider - package org.jasypt.hibernate3.connectionprovider
 
org.jasypt.hibernate3.encryptor - package org.jasypt.hibernate3.encryptor
 
org.jasypt.hibernate3.type - package org.jasypt.hibernate3.type
 
+
+

+P

+
+
ParameterNaming - Class in org.jasypt.hibernate.connectionprovider
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
ParameterNaming - Class in org.jasypt.hibernate.type
Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
ParameterNaming - Class in org.jasypt.hibernate3.connectionprovider
+ Constant names of the parameters that can be used by a jasypt's + Hibernate connection provider.
ParameterNaming - Class in org.jasypt.hibernate3.type
+ Constant names of the parameters that can be used by a jasypt type's + typedef declaration in a Hibernate mapping.
PASSWORD - +Static variable in class org.jasypt.hibernate.type.ParameterNaming +
Deprecated.  + The encryption password. +
PASSWORD - +Static variable in class org.jasypt.hibernate3.type.ParameterNaming +
+ The encryption password. +
PROVIDER_NAME - +Static variable in class org.jasypt.hibernate.type.ParameterNaming +
Deprecated.  + The name of the JCE security provider we want to get the algorithm from + (if it is no the default one. +
PROVIDER_NAME - +Static variable in class org.jasypt.hibernate3.type.ParameterNaming +
+ The name of the JCE security provider we want to get the algorithm from + (if it is no the default one. +
+
+

+R

+
+
registerPBEBigDecimalEncryptor(String, PBEBigDecimalEncryptor) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry +
Deprecated. Registers a PBEBigDecimalEncryptor object with the specified + name. +
registerPBEBigDecimalEncryptor(String, PBEBigDecimalEncryptor) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEEncryptorRegistry +
Registers a PBEBigDecimalEncryptor object with the specified + name. +
registerPBEBigIntegerEncryptor(String, PBEBigIntegerEncryptor) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry +
Deprecated. Registers a PBEBigIntegerEncryptor object with the specified + name. +
registerPBEBigIntegerEncryptor(String, PBEBigIntegerEncryptor) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEEncryptorRegistry +
Registers a PBEBigIntegerEncryptor object with the specified + name. +
registerPBEByteEncryptor(String, PBEByteEncryptor) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry +
Deprecated. Registers a PBEByteEncryptor object with the specified + name. +
registerPBEByteEncryptor(String, PBEByteEncryptor) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEEncryptorRegistry +
Registers a PBEByteEncryptor object with the specified + name. +
registerPBEStringEncryptor(String, PBEStringEncryptor) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry +
Deprecated. Registers a PBEStringEncryptor object with the specified + name. +
registerPBEStringEncryptor(String, PBEStringEncryptor) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEEncryptorRegistry +
Registers a PBEStringEncryptor object with the specified + name. +
replace(Object, Object, Object) - +Method in class org.jasypt.hibernate.type.AbstractEncryptedAsStringType +
Deprecated.   +
replace(Object, Object, Object) - +Method in class org.jasypt.hibernate.type.EncryptedBigDecimalType +
Deprecated.   +
replace(Object, Object, Object) - +Method in class org.jasypt.hibernate.type.EncryptedBigIntegerType +
Deprecated.   +
replace(Object, Object, Object) - +Method in class org.jasypt.hibernate.type.EncryptedBinaryType +
Deprecated.   +
replace(Object, Object, Object) - +Method in class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType +
  +
replace(Object, Object, Object) - +Method in class org.jasypt.hibernate3.type.EncryptedBigDecimalType +
  +
replace(Object, Object, Object) - +Method in class org.jasypt.hibernate3.type.EncryptedBigIntegerType +
  +
replace(Object, Object, Object) - +Method in class org.jasypt.hibernate3.type.EncryptedBinaryType +
  +
returnedClass() - +Method in class org.jasypt.hibernate.type.AbstractEncryptedAsStringType +
Deprecated.   +
returnedClass() - +Method in class org.jasypt.hibernate.type.EncryptedBigDecimalAsStringType +
Deprecated.   +
returnedClass() - +Method in class org.jasypt.hibernate.type.EncryptedBigDecimalType +
Deprecated.   +
returnedClass() - +Method in class org.jasypt.hibernate.type.EncryptedBigIntegerAsStringType +
Deprecated.   +
returnedClass() - +Method in class org.jasypt.hibernate.type.EncryptedBigIntegerType +
Deprecated.   +
returnedClass() - +Method in class org.jasypt.hibernate.type.EncryptedBinaryType +
Deprecated.   +
returnedClass() - +Method in class org.jasypt.hibernate.type.EncryptedBooleanAsStringType +
Deprecated.   +
returnedClass() - +Method in class org.jasypt.hibernate.type.EncryptedByteAsStringType +
Deprecated.   +
returnedClass() - +Method in class org.jasypt.hibernate.type.EncryptedCalendarAsStringType +
Deprecated.   +
returnedClass() - +Method in class org.jasypt.hibernate.type.EncryptedDateAsStringType +
Deprecated.   +
returnedClass() - +Method in class org.jasypt.hibernate.type.EncryptedDoubleAsStringType +
Deprecated.   +
returnedClass() - +Method in class org.jasypt.hibernate.type.EncryptedFloatAsStringType +
Deprecated.   +
returnedClass() - +Method in class org.jasypt.hibernate.type.EncryptedIntegerAsStringType +
Deprecated.   +
returnedClass() - +Method in class org.jasypt.hibernate.type.EncryptedLongAsStringType +
Deprecated.   +
returnedClass() - +Method in class org.jasypt.hibernate.type.EncryptedShortAsStringType +
Deprecated.   +
returnedClass() - +Method in class org.jasypt.hibernate.type.EncryptedStringType +
Deprecated.   +
returnedClass() - +Method in class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate3.type.EncryptedBigDecimalAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate3.type.EncryptedBigDecimalType +
  +
returnedClass() - +Method in class org.jasypt.hibernate3.type.EncryptedBigIntegerAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate3.type.EncryptedBigIntegerType +
  +
returnedClass() - +Method in class org.jasypt.hibernate3.type.EncryptedBinaryType +
  +
returnedClass() - +Method in class org.jasypt.hibernate3.type.EncryptedBooleanAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate3.type.EncryptedByteAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate3.type.EncryptedCalendarAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate3.type.EncryptedDateAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate3.type.EncryptedDoubleAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate3.type.EncryptedFloatAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate3.type.EncryptedIntegerAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate3.type.EncryptedLongAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate3.type.EncryptedShortAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate3.type.EncryptedStringType +
  +
+
+

+S

+
+
setAlgorithm(String) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor +
Deprecated. Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setAlgorithm(String) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor +
Deprecated. Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setAlgorithm(String) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor +
Deprecated. Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setAlgorithm(String) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor +
Deprecated. Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setAlgorithm(String) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigDecimalEncryptor +
Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setAlgorithm(String) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigIntegerEncryptor +
Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setAlgorithm(String) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEByteEncryptor +
Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setAlgorithm(String) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEStringEncryptor +
Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setConfig(PBEConfig) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor +
Deprecated. Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setConfig(PBEConfig) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor +
Deprecated. Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setConfig(PBEConfig) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor +
Deprecated. Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setConfig(PBEConfig) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor +
Deprecated. Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setConfig(PBEConfig) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigDecimalEncryptor +
Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setConfig(PBEConfig) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigIntegerEncryptor +
Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setConfig(PBEConfig) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEByteEncryptor +
Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setConfig(PBEConfig) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEStringEncryptor +
Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setEncryptor(PBEBigDecimalEncryptor) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor +
Deprecated. Sets the PBEBigDecimalEncryptor to be held (wrapped) by this + object. +
setEncryptor(PBEBigIntegerEncryptor) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor +
Deprecated. Sets the PBEBigIntegerEncryptor to be held (wrapped) by this + object. +
setEncryptor(PBEByteEncryptor) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor +
Deprecated. Sets the PBEByteEncryptor to be held (wrapped) by this + object. +
setEncryptor(PBEStringEncryptor) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor +
Deprecated. Sets the PBEStringEncryptor to be held (wrapped) by this + object. +
setEncryptor(PBEBigDecimalEncryptor) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigDecimalEncryptor +
Sets the PBEBigDecimalEncryptor to be held (wrapped) by this + object. +
setEncryptor(PBEBigIntegerEncryptor) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigIntegerEncryptor +
Sets the PBEBigIntegerEncryptor to be held (wrapped) by this + object. +
setEncryptor(PBEByteEncryptor) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEByteEncryptor +
Sets the PBEByteEncryptor to be held (wrapped) by this + object. +
setEncryptor(PBEStringEncryptor) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEStringEncryptor +
Sets the PBEStringEncryptor to be held (wrapped) by this + object. +
setKeyObtentionIterations(int) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor +
Deprecated. Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setKeyObtentionIterations(int) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor +
Deprecated. Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setKeyObtentionIterations(int) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor +
Deprecated. Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setKeyObtentionIterations(int) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor +
Deprecated. Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setKeyObtentionIterations(int) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigDecimalEncryptor +
Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setKeyObtentionIterations(int) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigIntegerEncryptor +
Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setKeyObtentionIterations(int) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEByteEncryptor +
Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setKeyObtentionIterations(int) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEStringEncryptor +
Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setParameterValues(Properties) - +Method in class org.jasypt.hibernate.type.AbstractEncryptedAsStringType +
Deprecated.   +
setParameterValues(Properties) - +Method in class org.jasypt.hibernate.type.EncryptedBigDecimalType +
Deprecated.   +
setParameterValues(Properties) - +Method in class org.jasypt.hibernate.type.EncryptedBigIntegerType +
Deprecated.   +
setParameterValues(Properties) - +Method in class org.jasypt.hibernate.type.EncryptedBinaryType +
Deprecated.   +
setParameterValues(Properties) - +Method in class org.jasypt.hibernate.type.EncryptedCalendarAsStringType +
Deprecated.   +
setParameterValues(Properties) - +Method in class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType +
  +
setParameterValues(Properties) - +Method in class org.jasypt.hibernate3.type.EncryptedBigDecimalType +
  +
setParameterValues(Properties) - +Method in class org.jasypt.hibernate3.type.EncryptedBigIntegerType +
  +
setParameterValues(Properties) - +Method in class org.jasypt.hibernate3.type.EncryptedBinaryType +
  +
setParameterValues(Properties) - +Method in class org.jasypt.hibernate3.type.EncryptedCalendarAsStringType +
  +
setPassword(String) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor +
Deprecated. Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setPassword(String) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor +
Deprecated. Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setPassword(String) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor +
Deprecated. Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setPassword(String) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor +
Deprecated. Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setPassword(String) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigDecimalEncryptor +
Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setPassword(String) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigIntegerEncryptor +
Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setPassword(String) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEByteEncryptor +
Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setPassword(String) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEStringEncryptor +
Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setPasswordCharArray(char[]) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor +
Deprecated. Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +
setPasswordCharArray(char[]) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor +
Deprecated. Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +
setPasswordCharArray(char[]) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor +
Deprecated. Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +
setPasswordCharArray(char[]) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor +
Deprecated. Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +
setPasswordCharArray(char[]) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigDecimalEncryptor +
Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +
setPasswordCharArray(char[]) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigIntegerEncryptor +
Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +
setPasswordCharArray(char[]) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEByteEncryptor +
Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +
setPasswordCharArray(char[]) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEStringEncryptor +
Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +
setProvider(Provider) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor +
Deprecated. Sets the JCE provider to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setProvider(Provider) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEStringEncryptor +
Sets the JCE provider to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setProviderName(String) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor +
Deprecated. Sets the name of the JCE provider to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setProviderName(String) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEStringEncryptor +
Sets the name of the JCE provider to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setRegisteredName(String) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor +
Deprecated. Sets the registered name of the encryptor and adds it to the registry. +
setRegisteredName(String) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor +
Deprecated. Sets the registered name of the encryptor and adds it to the registry. +
setRegisteredName(String) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor +
Deprecated. Sets the registered name of the encryptor and adds it to the registry. +
setRegisteredName(String) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor +
Deprecated. Sets the registered name of the encryptor and adds it to the registry. +
setRegisteredName(String) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigDecimalEncryptor +
Sets the registered name of the encryptor and adds it to the registry. +
setRegisteredName(String) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigIntegerEncryptor +
Sets the registered name of the encryptor and adds it to the registry. +
setRegisteredName(String) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEByteEncryptor +
Sets the registered name of the encryptor and adds it to the registry. +
setRegisteredName(String) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEStringEncryptor +
Sets the registered name of the encryptor and adds it to the registry. +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor +
Deprecated. Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor +
Deprecated. Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor +
Deprecated. Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor +
Deprecated. Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigDecimalEncryptor +
Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEBigIntegerEncryptor +
Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEByteEncryptor +
Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEStringEncryptor +
Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setStringOutputType(String) - +Method in class org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor +
Deprecated. Sets the type of String output ("base64" (default), "hexadecimal") to + be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setStringOutputType(String) - +Method in class org.jasypt.hibernate3.encryptor.HibernatePBEStringEncryptor +
Sets the type of String output ("base64" (default), "hexadecimal") to + be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
sqlTypes() - +Method in class org.jasypt.hibernate.type.AbstractEncryptedAsStringType +
Deprecated.   +
sqlTypes() - +Method in class org.jasypt.hibernate.type.EncryptedBigDecimalType +
Deprecated.   +
sqlTypes() - +Method in class org.jasypt.hibernate.type.EncryptedBigIntegerType +
Deprecated.   +
sqlTypes() - +Method in class org.jasypt.hibernate.type.EncryptedBinaryType +
Deprecated.   +
sqlTypes() - +Method in class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType +
  +
sqlTypes() - +Method in class org.jasypt.hibernate3.type.EncryptedBigDecimalType +
  +
sqlTypes() - +Method in class org.jasypt.hibernate3.type.EncryptedBigIntegerType +
  +
sqlTypes() - +Method in class org.jasypt.hibernate3.type.EncryptedBinaryType +
  +
STORE_TIME_ZONE - +Static variable in class org.jasypt.hibernate.type.ParameterNaming +
Deprecated.  + Whether the calendar time zone should be stored with the date or not. +
STORE_TIME_ZONE - +Static variable in class org.jasypt.hibernate3.type.ParameterNaming +
+ Whether the calendar time zone should be stored with the date or not. +
STRING_OUTPUT_TYPE - +Static variable in class org.jasypt.hibernate.type.ParameterNaming +
Deprecated.  + The type of String output ("base64" (default), "hexadecimal") to be + generated. +
STRING_OUTPUT_TYPE - +Static variable in class org.jasypt.hibernate3.type.ParameterNaming +
+ The type of String output ("base64" (default), "hexadecimal") to be + generated. +
+
+A C D E G H I K N O P R S + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/index.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/index.html new file mode 100644 index 00000000..2ac6f911 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/index.html @@ -0,0 +1,40 @@ + + + + + + + +JASYPT: Java Simplified Encryption 1.9.2 API + + + + + + + + + + + +<H2> +Frame Alert</H2> + +<P> +This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. +<BR> +Link to<A HREF="overview-summary.html">Non-frame version.</A> + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/EncryptedPasswordC3P0ConnectionProvider.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/EncryptedPasswordC3P0ConnectionProvider.html new file mode 100644 index 00000000..5c73091c --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/EncryptedPasswordC3P0ConnectionProvider.html @@ -0,0 +1,330 @@ + + + + + + + +EncryptedPasswordC3P0ConnectionProvider (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.connectionprovider +
+Class EncryptedPasswordC3P0ConnectionProvider

+
+Object
+  extended by org.hibernate.connection.C3P0ConnectionProvider
+      extended by org.jasypt.hibernate.connectionprovider.EncryptedPasswordC3P0ConnectionProvider
+
+
+
All Implemented Interfaces:
org.hibernate.connection.ConnectionProvider
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class EncryptedPasswordC3P0ConnectionProvider
extends org.hibernate.connection.C3P0ConnectionProvider
+ + +

+

+ Extension of C3P0ConnectionProvider that allows the user + to write the datasource configuration parameters in an encrypted manner in the + hibernate.cfg.xml or hibernate.properties file +

+

+ The encryptable parameters are: +

    +
  • connection.driver_class
  • +
  • connection.url
  • +
  • connection.username
  • +
  • connection.password
  • +
+

+

+ The name of the password encryptor (decryptor, in fact) will be set in + property hibernate.connection.encryptor_registered_name. + Its value must be the name of a PBEStringEncryptor object + previously registered within HibernatePBEEncryptorRegistry. +

+

+ An example hibernate.cfg.xml file: +

+

+

+  <hibernate-configuration>
+
+    <session-factory>
+
+      
+      <property name="connection.provider_class">org.jasypt.hibernate.connectionprovider.EncryptedPasswordC3P0ConnectionProvider</property>
+      <property name="connection.encryptor_registered_name">stringEncryptor</property>
+      <property name="connection.driver_class">org.postgresql.Driver</property>
+      <property name="connection.url">jdbc:postgresql://localhost/mydatabase</property>
+      <property name="connection.username">myuser</property>
+      <property name="connection.password">ENC(T6DAe34NasW==)</property>
+      <property name="c3p0.min_size">5</property>
+      <property name="c3p0.max_size">20</property>
+      <property name="c3p0.timeout">1800</property>
+      <property name="c3p0.max_statements">50</property>
+      ...
+      
+    </session-factory>
+    
+    ...
+    
+  </hibernate-configuration>
+ 
+

+

+ +

+

+
Since:
+
1.4
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
EncryptedPasswordC3P0ConnectionProvider() + +
+          Deprecated.  
+  + + + + + + + + + + + +
+Method Summary
+ voidconfigure(java.util.Properties props) + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class org.hibernate.connection.C3P0ConnectionProvider
close, closeConnection, getConnection
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedPasswordC3P0ConnectionProvider

+
+public EncryptedPasswordC3P0ConnectionProvider()
+
+
Deprecated. 
+ + + + + + + + +
+Method Detail
+ +

+configure

+
+public void configure(java.util.Properties props)
+
+
Deprecated. 
+
Specified by:
configure in interface org.hibernate.connection.ConnectionProvider
Overrides:
configure in class org.hibernate.connection.C3P0ConnectionProvider
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/EncryptedPasswordDriverManagerConnectionProvider.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/EncryptedPasswordDriverManagerConnectionProvider.html new file mode 100644 index 00000000..8693f3d0 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/EncryptedPasswordDriverManagerConnectionProvider.html @@ -0,0 +1,328 @@ + + + + + + + +EncryptedPasswordDriverManagerConnectionProvider (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.connectionprovider +
+Class EncryptedPasswordDriverManagerConnectionProvider

+
+Object
+  extended by org.hibernate.connection.DriverManagerConnectionProvider
+      extended by org.jasypt.hibernate.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider
+
+
+
All Implemented Interfaces:
org.hibernate.connection.ConnectionProvider
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class EncryptedPasswordDriverManagerConnectionProvider
extends org.hibernate.connection.DriverManagerConnectionProvider
+ + +

+

+ Extension of DriverManagerConnectionProvider that allows the user + to write the datasource configuration parameters in an encrypted manner in the + hibernate.cfg.xml or hibernate.properties file +

+

+ The encryptable parameters are: +

    +
  • connection.driver_class
  • +
  • connection.url
  • +
  • connection.username
  • +
  • connection.password
  • +
+

+

+ The name of the password encryptor (decryptor, in fact) will be set in + property hibernate.connection.encryptor_registered_name. + Its value must be the name of a PBEStringEncryptor object + previously registered within HibernatePBEEncryptorRegistry. +

+

+ An example hibernate.cfg.xml file: +

+

+

+  <hibernate-configuration>
+
+    <session-factory>
+
+      <!-- Database connection settings -->
+      <property name="connection.provider_class">org.jasypt.hibernate.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider</property>
+      <property name="connection.encryptor_registered_name">stringEncryptor</property>
+      <property name="connection.driver_class">org.postgresql.Driver</property>
+      <property name="connection.url">jdbc:postgresql://localhost/mydatabase</property>
+      <property name="connection.username">myuser</property>
+      <property name="connection.password">ENC(T6DAe34NasW==)</property>
+      <property name="connection.pool_size">5</property>
+      
+      ...
+      
+    </session-factory>
+    
+    ...
+    
+  </hibernate-configuration>
+ 
+

+

+ +

+

+
Since:
+
1.4
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
EncryptedPasswordDriverManagerConnectionProvider() + +
+          Deprecated.  
+  + + + + + + + + + + + +
+Method Summary
+ voidconfigure(java.util.Properties props) + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class org.hibernate.connection.DriverManagerConnectionProvider
close, closeConnection, finalize, getConnection
+ + + + + + + +
Methods inherited from class Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedPasswordDriverManagerConnectionProvider

+
+public EncryptedPasswordDriverManagerConnectionProvider()
+
+
Deprecated. 
+ + + + + + + + +
+Method Detail
+ +

+configure

+
+public void configure(java.util.Properties props)
+
+
Deprecated. 
+
Specified by:
configure in interface org.hibernate.connection.ConnectionProvider
Overrides:
configure in class org.hibernate.connection.DriverManagerConnectionProvider
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/ParameterNaming.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/ParameterNaming.html new file mode 100644 index 00000000..7592acbd --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/ParameterNaming.html @@ -0,0 +1,252 @@ + + + + + + + +ParameterNaming (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.connectionprovider +
+Class ParameterNaming

+
+Object
+  extended by org.jasypt.hibernate.connectionprovider.ParameterNaming
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class ParameterNaming
extends Object
+ + +

+

+ Constant names of the parameters that can be used by a jasypt's + Hibernate connection provider. +

+

+ +

+

+
Since:
+
1.4
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+static StringENCRYPTOR_REGISTERED_NAME + +
+          Deprecated. Property in hibernate.cfg.xml or + hibernate.properties which contains the registered name + (in HibernatePBEEncryptorRegistry) of the encryptor which + will be used to decrypt the datasource parameters.
+  + + + + + + + +
+Method Summary
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+ENCRYPTOR_REGISTERED_NAME

+
+public static final String ENCRYPTOR_REGISTERED_NAME
+
+
Deprecated. 
Property in hibernate.cfg.xml or + hibernate.properties which contains the registered name + (in HibernatePBEEncryptorRegistry) of the encryptor which + will be used to decrypt the datasource parameters. +

+

+
See Also:
Constant Field Values
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/class-use/EncryptedPasswordC3P0ConnectionProvider.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/class-use/EncryptedPasswordC3P0ConnectionProvider.html new file mode 100644 index 00000000..16679078 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/class-use/EncryptedPasswordC3P0ConnectionProvider.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.connectionprovider.EncryptedPasswordC3P0ConnectionProvider (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.connectionprovider.EncryptedPasswordC3P0ConnectionProvider

+
+No usage of org.jasypt.hibernate.connectionprovider.EncryptedPasswordC3P0ConnectionProvider +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/class-use/EncryptedPasswordDriverManagerConnectionProvider.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/class-use/EncryptedPasswordDriverManagerConnectionProvider.html new file mode 100644 index 00000000..67130896 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/class-use/EncryptedPasswordDriverManagerConnectionProvider.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider

+
+No usage of org.jasypt.hibernate.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/class-use/ParameterNaming.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/class-use/ParameterNaming.html new file mode 100644 index 00000000..e40d217a --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/class-use/ParameterNaming.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.connectionprovider.ParameterNaming (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.connectionprovider.ParameterNaming

+
+No usage of org.jasypt.hibernate.connectionprovider.ParameterNaming +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/package-frame.html new file mode 100644 index 00000000..8162eed1 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/package-frame.html @@ -0,0 +1,37 @@ + + + + + + + +org.jasypt.hibernate.connectionprovider (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.hibernate.connectionprovider + + + + +
+Classes  + +
+EncryptedPasswordC3P0ConnectionProvider +
+EncryptedPasswordDriverManagerConnectionProvider +
+ParameterNaming
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/package-summary.html new file mode 100644 index 00000000..3395bfef --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/package-summary.html @@ -0,0 +1,166 @@ + + + + + + + +org.jasypt.hibernate.connectionprovider (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.hibernate.connectionprovider +

+ + + + + + + + + + + + + + + + + +
+Class Summary
EncryptedPasswordC3P0ConnectionProviderDeprecated. Will be removed in 1.11.
EncryptedPasswordDriverManagerConnectionProviderDeprecated. Will be removed in 1.11.
ParameterNamingDeprecated. Will be removed in 1.11.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/package-tree.html new file mode 100644 index 00000000..269a07f3 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/package-tree.html @@ -0,0 +1,160 @@ + + + + + + + +org.jasypt.hibernate.connectionprovider Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.hibernate.connectionprovider +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/package-use.html new file mode 100644 index 00000000..2dad2df6 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/connectionprovider/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.hibernate.connectionprovider (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.hibernate.connectionprovider

+
+No usage of org.jasypt.hibernate.connectionprovider +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/HibernatePBEBigDecimalEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/HibernatePBEBigDecimalEncryptor.html new file mode 100644 index 00000000..573354cd --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/HibernatePBEBigDecimalEncryptor.html @@ -0,0 +1,613 @@ + + + + + + + +HibernatePBEBigDecimalEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.encryptor +
+Class HibernatePBEBigDecimalEncryptor

+
+Object
+  extended by org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class HibernatePBEBigDecimalEncryptor
extends Object
+ + +

+

+ Placeholder class for PBEBigDecimalEncryptor objects which are + eligible for use from Hibernate. +

+

+ This class acts as a wrapper on a PBEBigDecimalEncryptor, allowing + to be set a registered name (see setRegisteredName(String)) + and performing the needed registry operations against the + HibernatePBEEncryptorRegistry. +

+

+ It is not mandatory that a PBEBigDecimalEncryptor be explicitly set + with setEncryptor(PBEBigDecimalEncryptor). If not, a + StandardPBEBigDecimalEncryptor object will be created internally + and it will be configurable with the + setPassword(String)/setPasswordCharArray(char[]), + setAlgorithm(String), setKeyObtentionIterations(int), + setSaltGenerator(SaltGenerator) + and setConfig(PBEConfig) methods. +

+

+ This class is mainly intended for use from Spring Framework or some other + IoC container (if you are not using a container of this kind, please see + HibernatePBEEncryptorRegistry). The steps to be performed are + the following: +

    +
  1. Create an object of this class (declaring it).
  2. +
  3. Set its registeredName and, either its + wrapped encryptor or its password, + algorithm, keyObtentionIterations, + saltGenerator and config properties.
  4. +
  5. Declare a typedef in a Hibernate mapping giving its + encryptorRegisteredName parameter the same value specified + to this object in registeredName.
  6. +
+

+

+ This in a Spring config file would look like: +

+

+

 
+  ...
+  <-- Optional, as the hibernateEncryptor could be directly set an     -->
+  <-- algorithm and password.                                          -->
+  <bean id="bigDecimalEncryptor"
+    class="org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor">
+    <property name="algorithm">
+        <value>PBEWithMD5AndDES</value>
+    </property>
+    <property name="password">
+        <value>XXXXX</value>
+    </property>
+  </bean>
+  
+  <bean id="hibernateEncryptor"
+    class="org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor">
+    <property name="registeredName">
+        <value>myHibernateBigDecimalEncryptor</value>
+    </property>
+    <property name="encryptor">
+        <ref bean="bigDecimalEncryptor" />
+    </property>
+  </bean>
+  ...
+ 
+

+

+ And then in the Hibernate mapping file: +

+

+

+    <typedef name="encrypted" class="org.jasypt.hibernate.type.EncryptedBigDecimalType">
+      <param name="encryptorRegisteredName">myHibernateBigDecimalEncryptor</param>
+      <param name="decimalScale">2</param>
+    </typedef>
+ 
+

+

+ An important thing to note is that, when using HibernatePBEBigDecimalEncryptor + objects this way to wrap PBEBigDecimalEncryptors, it is not + necessary to deal with HibernatePBEEncryptorRegistry, + because HibernatePBEBigDecimalEncryptor objects get automatically registered + in the encryptor registry when their setRegisteredName(String) + method is called. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
HibernatePBEBigDecimalEncryptor() + +
+          Deprecated. Creates a new instance of HibernatePBEBigDecimalEncryptor It also + creates a StandardPBEBigDecimalEncryptor for internal use, which + can be overriden by calling setEncryptor(...).
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.math.BigDecimaldecrypt(java.math.BigDecimal encryptedMessage) + +
+          Deprecated. Decypts a message, delegating to wrapped encryptor
+ java.math.BigDecimalencrypt(java.math.BigDecimal message) + +
+          Deprecated. Encrypts a message, delegating to wrapped encryptor.
+ org.jasypt.encryption.pbe.PBEBigDecimalEncryptorgetEncryptor() + +
+          Deprecated. Returns the encryptor which this object wraps.
+ StringgetRegisteredName() + +
+          Deprecated. Returns the name with which the wrapped encryptor is registered at + the registry.
+ voidsetAlgorithm(String algorithm) + +
+          Deprecated. Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetConfig(org.jasypt.encryption.pbe.config.PBEConfig config) + +
+          Deprecated. Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetEncryptor(org.jasypt.encryption.pbe.PBEBigDecimalEncryptor encryptor) + +
+          Deprecated. Sets the PBEBigDecimalEncryptor to be held (wrapped) by this + object.
+ voidsetKeyObtentionIterations(int keyObtentionIterations) + +
+          Deprecated. Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetPassword(String password) + +
+          Deprecated. Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetPasswordCharArray(char[] password) + +
+          Deprecated. Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetRegisteredName(String registeredName) + +
+          Deprecated. Sets the registered name of the encryptor and adds it to the registry.
+ voidsetSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator) + +
+          Deprecated. Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+HibernatePBEBigDecimalEncryptor

+
+public HibernatePBEBigDecimalEncryptor()
+
+
Deprecated. 
Creates a new instance of HibernatePBEBigDecimalEncryptor It also + creates a StandardPBEBigDecimalEncryptor for internal use, which + can be overriden by calling setEncryptor(...). +

+

+ + + + + + + + +
+Method Detail
+ +

+getEncryptor

+
+public org.jasypt.encryption.pbe.PBEBigDecimalEncryptor getEncryptor()
+
+
Deprecated. 
Returns the encryptor which this object wraps. +

+

+ +
Returns:
the encryptor.
+
+
+
+ +

+setEncryptor

+
+public void setEncryptor(org.jasypt.encryption.pbe.PBEBigDecimalEncryptor encryptor)
+
+
Deprecated. 
Sets the PBEBigDecimalEncryptor to be held (wrapped) by this + object. This method is optional and can be only called once. +

+

+
Parameters:
encryptor - the encryptor.
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+
Deprecated. 
Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+
Deprecated. 
Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
Since:
+
1.8
+
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+
Deprecated. 
Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
algorithm - the algorithm to be set for the internal encryptor
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(int keyObtentionIterations)
+
+
Deprecated. 
Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
keyObtentionIterations - to be set for the internal encryptor
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator)
+
+
Deprecated. 
Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
saltGenerator - the salt generator to be set for the internal + encryptor.
+
+
+
+ +

+setConfig

+
+public void setConfig(org.jasypt.encryption.pbe.config.PBEConfig config)
+
+
Deprecated. 
Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
config - the PBEConfig to be set for the internal encryptor
+
+
+
+ +

+encrypt

+
+public java.math.BigDecimal encrypt(java.math.BigDecimal message)
+
+
Deprecated. 
Encrypts a message, delegating to wrapped encryptor. +

+

+
Parameters:
message - the message to be encrypted. +
Returns:
the encryption result.
+
+
+
+ +

+decrypt

+
+public java.math.BigDecimal decrypt(java.math.BigDecimal encryptedMessage)
+
+
Deprecated. 
Decypts a message, delegating to wrapped encryptor +

+

+
Parameters:
encryptedMessage - the message to be decrypted. +
Returns:
the result of decryption.
+
+
+
+ +

+setRegisteredName

+
+public void setRegisteredName(String registeredName)
+
+
Deprecated. 
Sets the registered name of the encryptor and adds it to the registry. +

+

+
Parameters:
registeredName - the name with which the encryptor will be + registered.
+
+
+
+ +

+getRegisteredName

+
+public String getRegisteredName()
+
+
Deprecated. 
Returns the name with which the wrapped encryptor is registered at + the registry. +

+

+ +
Returns:
the registered name.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/HibernatePBEBigIntegerEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/HibernatePBEBigIntegerEncryptor.html new file mode 100644 index 00000000..6965b815 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/HibernatePBEBigIntegerEncryptor.html @@ -0,0 +1,612 @@ + + + + + + + +HibernatePBEBigIntegerEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.encryptor +
+Class HibernatePBEBigIntegerEncryptor

+
+Object
+  extended by org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class HibernatePBEBigIntegerEncryptor
extends Object
+ + +

+

+ Placeholder class for PBEBigIntegerEncryptor objects which are + eligible for use from Hibernate. +

+

+ This class acts as a wrapper on a PBEBigIntegerEncryptor, allowing + to be set a registered name (see setRegisteredName(String)) + and performing the needed registry operations against the + HibernatePBEEncryptorRegistry. +

+

+ It is not mandatory that a PBEBigIntegerEncryptor be explicitly set + with setEncryptor(PBEBigIntegerEncryptor). If not, a + StandardPBEBigIntegerEncryptor object will be created internally + and it will be configurable with the + setPassword(String)/setPasswordCharArray(char[]), + setAlgorithm(String), setKeyObtentionIterations(int), + setSaltGenerator(SaltGenerator) + and setConfig(PBEConfig) methods. +

+

+ This class is mainly intended for use from Spring Framework or some other + IoC container (if you are not using a container of this kind, please see + HibernatePBEEncryptorRegistry). The steps to be performed are + the following: +

    +
  1. Create an object of this class (declaring it).
  2. +
  3. Set its registeredName and, either its + wrapped encryptor or its password, + algorithm, keyObtentionIterations, + saltGenerator and config properties.
  4. +
  5. Declare a typedef in a Hibernate mapping giving its + encryptorRegisteredName parameter the same value specified + to this object in registeredName.
  6. +
+

+

+ This in a Spring config file would look like: +

+

+

 
+  ...
+  <-- Optional, as the hibernateEncryptor could be directly set an     -->
+  <-- algorithm and password.                                          -->
+  <bean id="bigIntegerEncryptor"
+    class="org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor">
+    <property name="algorithm">
+        <value>PBEWithMD5AndDES</value>
+    </property>
+    <property name="password">
+        <value>XXXXX</value>
+    </property>
+  </bean>
+  
+  <bean id="hibernateEncryptor"
+    class="org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor">
+    <property name="registeredName">
+        <value>myHibernateBigIntegerEncryptor</value>
+    </property>
+    <property name="encryptor">
+        <ref bean="bigIntegerEncryptor" />
+    </property>
+  </bean>
+  ...
+ 
+

+

+ And then in the Hibernate mapping file: +

+

+

+    <typedef name="encrypted" class="org.jasypt.hibernate.type.EncryptedBigIntegerType">
+      <param name="encryptorRegisteredName">myHibernateBigIntegerEncryptor</param>
+    </typedef>
+ 
+

+

+ An important thing to note is that, when using HibernatePBEBigIntegerEncryptor + objects this way to wrap PBEBigIntegerEncryptors, it is not + necessary to deal with HibernatePBEEncryptorRegistry, + because HibernatePBEBigIntegerEncryptor objects get automatically registered + in the encryptor registry when their setRegisteredName(String) + method is called. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
HibernatePBEBigIntegerEncryptor() + +
+          Deprecated. Creates a new instance of HibernatePBEBigIntegerEncryptor It also + creates a StandardPBEBigIntegerEncryptor for internal use, which + can be overriden by calling setEncryptor(...).
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.math.BigIntegerdecrypt(java.math.BigInteger encryptedMessage) + +
+          Deprecated. Decypts a message, delegating to wrapped encryptor
+ java.math.BigIntegerencrypt(java.math.BigInteger message) + +
+          Deprecated. Encrypts a message, delegating to wrapped encryptor.
+ org.jasypt.encryption.pbe.PBEBigIntegerEncryptorgetEncryptor() + +
+          Deprecated. Returns the encryptor which this object wraps.
+ StringgetRegisteredName() + +
+          Deprecated. Returns the name with which the wrapped encryptor is registered at + the registry.
+ voidsetAlgorithm(String algorithm) + +
+          Deprecated. Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetConfig(org.jasypt.encryption.pbe.config.PBEConfig config) + +
+          Deprecated. Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetEncryptor(org.jasypt.encryption.pbe.PBEBigIntegerEncryptor encryptor) + +
+          Deprecated. Sets the PBEBigIntegerEncryptor to be held (wrapped) by this + object.
+ voidsetKeyObtentionIterations(int keyObtentionIterations) + +
+          Deprecated. Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetPassword(String password) + +
+          Deprecated. Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetPasswordCharArray(char[] password) + +
+          Deprecated. Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetRegisteredName(String registeredName) + +
+          Deprecated. Sets the registered name of the encryptor and adds it to the registry.
+ voidsetSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator) + +
+          Deprecated. Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+HibernatePBEBigIntegerEncryptor

+
+public HibernatePBEBigIntegerEncryptor()
+
+
Deprecated. 
Creates a new instance of HibernatePBEBigIntegerEncryptor It also + creates a StandardPBEBigIntegerEncryptor for internal use, which + can be overriden by calling setEncryptor(...). +

+

+ + + + + + + + +
+Method Detail
+ +

+getEncryptor

+
+public org.jasypt.encryption.pbe.PBEBigIntegerEncryptor getEncryptor()
+
+
Deprecated. 
Returns the encryptor which this object wraps. +

+

+ +
Returns:
the encryptor.
+
+
+
+ +

+setEncryptor

+
+public void setEncryptor(org.jasypt.encryption.pbe.PBEBigIntegerEncryptor encryptor)
+
+
Deprecated. 
Sets the PBEBigIntegerEncryptor to be held (wrapped) by this + object. This method is optional and can be only called once. +

+

+
Parameters:
encryptor - the encryptor.
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+
Deprecated. 
Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+
Deprecated. 
Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
Since:
+
1.8
+
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+
Deprecated. 
Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
algorithm - the algorithm to be set for the internal encryptor
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(int keyObtentionIterations)
+
+
Deprecated. 
Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
keyObtentionIterations - to be set for the internal encryptor
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator)
+
+
Deprecated. 
Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
saltGenerator - the salt generator to be set for the internal + encryptor.
+
+
+
+ +

+setConfig

+
+public void setConfig(org.jasypt.encryption.pbe.config.PBEConfig config)
+
+
Deprecated. 
Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
config - the PBEConfig to be set for the internal encryptor
+
+
+
+ +

+encrypt

+
+public java.math.BigInteger encrypt(java.math.BigInteger message)
+
+
Deprecated. 
Encrypts a message, delegating to wrapped encryptor. +

+

+
Parameters:
message - the message to be encrypted. +
Returns:
the encryption result.
+
+
+
+ +

+decrypt

+
+public java.math.BigInteger decrypt(java.math.BigInteger encryptedMessage)
+
+
Deprecated. 
Decypts a message, delegating to wrapped encryptor +

+

+
Parameters:
encryptedMessage - the message to be decrypted. +
Returns:
the result of decryption.
+
+
+
+ +

+setRegisteredName

+
+public void setRegisteredName(String registeredName)
+
+
Deprecated. 
Sets the registered name of the encryptor and adds it to the registry. +

+

+
Parameters:
registeredName - the name with which the encryptor will be + registered.
+
+
+
+ +

+getRegisteredName

+
+public String getRegisteredName()
+
+
Deprecated. 
Returns the name with which the wrapped encryptor is registered at + the registry. +

+

+ +
Returns:
the registered name.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/HibernatePBEByteEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/HibernatePBEByteEncryptor.html new file mode 100644 index 00000000..669982f0 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/HibernatePBEByteEncryptor.html @@ -0,0 +1,612 @@ + + + + + + + +HibernatePBEByteEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.encryptor +
+Class HibernatePBEByteEncryptor

+
+Object
+  extended by org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class HibernatePBEByteEncryptor
extends Object
+ + +

+

+ Placeholder class for PBEByteEncryptor objects which are + eligible for use from Hibernate. +

+

+ This class acts as a wrapper on a PBEByteEncryptor, allowing + to be set a registered name (see setRegisteredName(String)) + and performing the needed registry operations against the + HibernatePBEEncryptorRegistry. +

+

+ It is not mandatory that a PBEByteEncryptor be explicitly set + with setEncryptor(PBEByteEncryptor). If not, a + StandardPBEByteEncryptor object will be created internally + and it will be configurable with the + setPassword(String)/setPasswordCharArray(char[]), + setAlgorithm(String), setKeyObtentionIterations(int), + setSaltGenerator(SaltGenerator) + and setConfig(PBEConfig) methods. +

+

+ This class is mainly intended for use from Spring Framework or some other + IoC container (if you are not using a container of this kind, please see + HibernatePBEEncryptorRegistry). The steps to be performed are + the following: +

    +
  1. Create an object of this class (declaring it).
  2. +
  3. Set its registeredName and, either its + wrapped encryptor or its password, + algorithm, keyObtentionIterations, + saltGenerator and config properties.
  4. +
  5. Declare a typedef in a Hibernate mapping giving its + encryptorRegisteredName parameter the same value specified + to this object in registeredName.
  6. +
+

+

+ This in a Spring config file would look like: +

+

+

 
+  ...
+  <-- Optional, as the hibernateEncryptor could be directly set an     -->
+  <-- algorithm and password.                                          -->
+  <bean id="byteEncryptor"
+    class="org.jasypt.encryption.pbe.StandardPBEByteEncryptor">
+    <property name="algorithm">
+        <value>PBEWithMD5AndDES</value>
+    </property>
+    <property name="password">
+        <value>XXXXX</value>
+    </property>
+  </bean>
+  
+  <bean id="hibernateEncryptor"
+    class="org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor">
+    <property name="registeredName">
+        <value>myHibernateByteEncryptor</value>
+    </property>
+    <property name="encryptor">
+        <ref bean="byteEncryptor" />
+    </property>
+  </bean>
+  ...
+ 
+

+

+ And then in the Hibernate mapping file: +

+

+

+    <typedef name="encrypted" class="org.jasypt.hibernate.type.EncryptedBinaryType">
+      <param name="encryptorRegisteredName">myHibernateByteEncryptor</param>
+    </typedef>
+ 
+

+

+ An important thing to note is that, when using HibernatePBEByteEncryptor + objects this way to wrap PBEByteEncryptors, it is not + necessary to deal with HibernatePBEEncryptorRegistry, + because HibernatePBEByteEncryptor objects get automatically registered + in the encryptor registry when their setRegisteredName(String) + method is called. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
HibernatePBEByteEncryptor() + +
+          Deprecated. Creates a new instance of HibernatePBEByteEncryptor It also + creates a StandardPBEByteEncryptor for internal use, which + can be overriden by calling setEncryptor(...).
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ byte[]decrypt(byte[] encryptedMessage) + +
+          Deprecated. Decypts a message, delegating to wrapped encryptor
+ byte[]encrypt(byte[] message) + +
+          Deprecated. Encrypts a message, delegating to wrapped encryptor.
+ org.jasypt.encryption.pbe.PBEByteEncryptorgetEncryptor() + +
+          Deprecated. Returns the encryptor which this object wraps.
+ StringgetRegisteredName() + +
+          Deprecated. Returns the name with which the wrapped encryptor is registered at + the registry.
+ voidsetAlgorithm(String algorithm) + +
+          Deprecated. Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetConfig(org.jasypt.encryption.pbe.config.PBEConfig config) + +
+          Deprecated. Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetEncryptor(org.jasypt.encryption.pbe.PBEByteEncryptor encryptor) + +
+          Deprecated. Sets the PBEByteEncryptor to be held (wrapped) by this + object.
+ voidsetKeyObtentionIterations(int keyObtentionIterations) + +
+          Deprecated. Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetPassword(String password) + +
+          Deprecated. Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetPasswordCharArray(char[] password) + +
+          Deprecated. Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetRegisteredName(String registeredName) + +
+          Deprecated. Sets the registered name of the encryptor and adds it to the registry.
+ voidsetSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator) + +
+          Deprecated. Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+HibernatePBEByteEncryptor

+
+public HibernatePBEByteEncryptor()
+
+
Deprecated. 
Creates a new instance of HibernatePBEByteEncryptor It also + creates a StandardPBEByteEncryptor for internal use, which + can be overriden by calling setEncryptor(...). +

+

+ + + + + + + + +
+Method Detail
+ +

+getEncryptor

+
+public org.jasypt.encryption.pbe.PBEByteEncryptor getEncryptor()
+
+
Deprecated. 
Returns the encryptor which this object wraps. +

+

+ +
Returns:
the encryptor.
+
+
+
+ +

+setEncryptor

+
+public void setEncryptor(org.jasypt.encryption.pbe.PBEByteEncryptor encryptor)
+
+
Deprecated. 
Sets the PBEByteEncryptor to be held (wrapped) by this + object. This method is optional and can be only called once. +

+

+
Parameters:
encryptor - the encryptor.
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+
Deprecated. 
Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+
Deprecated. 
Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
Since:
+
1.8
+
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+
Deprecated. 
Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
algorithm - the algorithm to be set for the internal encryptor
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(int keyObtentionIterations)
+
+
Deprecated. 
Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
keyObtentionIterations - to be set for the internal encryptor
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator)
+
+
Deprecated. 
Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
saltGenerator - the salt generator to be set for the internal + encryptor.
+
+
+
+ +

+setConfig

+
+public void setConfig(org.jasypt.encryption.pbe.config.PBEConfig config)
+
+
Deprecated. 
Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
config - the PBEConfig to be set for the internal encryptor
+
+
+
+ +

+encrypt

+
+public byte[] encrypt(byte[] message)
+
+
Deprecated. 
Encrypts a message, delegating to wrapped encryptor. +

+

+
Parameters:
message - the message to be encrypted. +
Returns:
the encryption result.
+
+
+
+ +

+decrypt

+
+public byte[] decrypt(byte[] encryptedMessage)
+
+
Deprecated. 
Decypts a message, delegating to wrapped encryptor +

+

+
Parameters:
encryptedMessage - the message to be decrypted. +
Returns:
the result of decryption.
+
+
+
+ +

+setRegisteredName

+
+public void setRegisteredName(String registeredName)
+
+
Deprecated. 
Sets the registered name of the encryptor and adds it to the registry. +

+

+
Parameters:
registeredName - the name with which the encryptor will be + registered.
+
+
+
+ +

+getRegisteredName

+
+public String getRegisteredName()
+
+
Deprecated. 
Returns the name with which the wrapped encryptor is registered at + the registry. +

+

+ +
Returns:
the registered name.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/HibernatePBEEncryptorRegistry.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/HibernatePBEEncryptorRegistry.html new file mode 100644 index 00000000..8a5655c7 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/HibernatePBEEncryptorRegistry.html @@ -0,0 +1,494 @@ + + + + + + + +HibernatePBEEncryptorRegistry (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.encryptor +
+Class HibernatePBEEncryptorRegistry

+
+Object
+  extended by org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class HibernatePBEEncryptorRegistry
extends Object
+ + +

+

+ Registry for all the PBE*Encryptor which are eligible for + use from Hibernate. +

+

+ This class is intended to be directly used in applications where + an IoC container (like Spring Framework) is not present. If it is, + it is better to use the HibernatePBE*Encryptor classes + directly, instead. +

+

+ This registry is a singleton which maintains a registry + of PBE*Encryptor objects which can be used from Hibernate, + by using its registeredName to reference them from mappings. +

+

+ The steps would be: +

    +
  1. Obtain the registry instance (getInstance()).
  2. +
  3. Register the encryptor, giving it a registered name + (registerPBE*Encryptor(String, PBE*Encryptor).
  4. +
  5. Declare a typedef in a Hibernate mapping giving its + encryptorRegisteredName parameter the same value specified + when registering the encryptor.
  6. +
+

+

+ This is, first register the encryptor (example with a String encryptor): +

+

+

+  StandardPBEStringEncryptor myEncryptor = new StandardPBEStringEncryptor();
+  ...
+  HibernatePBEEncryptorRegistry registry =
+      HibernatePBEEncryptorRegistry.getInstance();
+  registry.registerPBEStringEncryptor("myHibernateEncryptor", myEncryptor);
+ 
+

+

+ And then, reference it from a Hibernate mapping file: +

+

+

+    <typedef name="encryptedString" class="org.jasypt.hibernate.type.EncryptedStringType">
+      <param name="encryptorRegisteredName">myHibernateEncryptor</param>
+    </typedef>
+ 
+

+

+ +

+

+
Since:
+
1.2 (class existed as + org.jasypt.hibernate.HibernatePBEEncryptorRegistry since 1.0)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+static HibernatePBEEncryptorRegistrygetInstance() + +
+          Deprecated. Returns the singleton instance of the registry.
+ org.jasypt.encryption.pbe.PBEBigDecimalEncryptorgetPBEBigDecimalEncryptor(String registeredName) + +
+          Deprecated. Returns the PBEBigDecimalEncryptor registered with the specified + name (if exists).
+ org.jasypt.encryption.pbe.PBEBigIntegerEncryptorgetPBEBigIntegerEncryptor(String registeredName) + +
+          Deprecated. Returns the PBEBigIntegerEncryptor registered with the specified + name (if exists).
+ org.jasypt.encryption.pbe.PBEByteEncryptorgetPBEByteEncryptor(String registeredName) + +
+          Deprecated. Returns the PBEByteEncryptor registered with the specified + name (if exists).
+ org.jasypt.encryption.pbe.PBEStringEncryptorgetPBEStringEncryptor(String registeredName) + +
+          Deprecated. Returns the PBEStringEncryptor registered with the specified + name (if exists).
+ voidregisterPBEBigDecimalEncryptor(String registeredName, + org.jasypt.encryption.pbe.PBEBigDecimalEncryptor encryptor) + +
+          Deprecated. Registers a PBEBigDecimalEncryptor object with the specified + name.
+ voidregisterPBEBigIntegerEncryptor(String registeredName, + org.jasypt.encryption.pbe.PBEBigIntegerEncryptor encryptor) + +
+          Deprecated. Registers a PBEBigIntegerEncryptor object with the specified + name.
+ voidregisterPBEByteEncryptor(String registeredName, + org.jasypt.encryption.pbe.PBEByteEncryptor encryptor) + +
+          Deprecated. Registers a PBEByteEncryptor object with the specified + name.
+ voidregisterPBEStringEncryptor(String registeredName, + org.jasypt.encryption.pbe.PBEStringEncryptor encryptor) + +
+          Deprecated. Registers a PBEStringEncryptor object with the specified + name.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Method Detail
+ +

+getInstance

+
+public static HibernatePBEEncryptorRegistry getInstance()
+
+
Deprecated. 
Returns the singleton instance of the registry. +

+

+ +
Returns:
the registry.
+
+
+
+ +

+registerPBEStringEncryptor

+
+public void registerPBEStringEncryptor(String registeredName,
+                                       org.jasypt.encryption.pbe.PBEStringEncryptor encryptor)
+
+
Deprecated. 
Registers a PBEStringEncryptor object with the specified + name. +

+

+
Parameters:
registeredName - the registered name.
encryptor - the encryptor to be registered.
+
+
+
+ +

+getPBEStringEncryptor

+
+public org.jasypt.encryption.pbe.PBEStringEncryptor getPBEStringEncryptor(String registeredName)
+
+
Deprecated. 
Returns the PBEStringEncryptor registered with the specified + name (if exists). +

+

+
Parameters:
registeredName - the name with which the desired encryptor was + registered. +
Returns:
the encryptor, or null if no encryptor has been registered with + that name.
+
+
+
+ +

+registerPBEBigIntegerEncryptor

+
+public void registerPBEBigIntegerEncryptor(String registeredName,
+                                           org.jasypt.encryption.pbe.PBEBigIntegerEncryptor encryptor)
+
+
Deprecated. 
Registers a PBEBigIntegerEncryptor object with the specified + name. +

+

+
Parameters:
registeredName - the registered name.
encryptor - the encryptor to be registered.
Since:
+
1.6
+
+
+
+
+ +

+getPBEBigIntegerEncryptor

+
+public org.jasypt.encryption.pbe.PBEBigIntegerEncryptor getPBEBigIntegerEncryptor(String registeredName)
+
+
Deprecated. 
Returns the PBEBigIntegerEncryptor registered with the specified + name (if exists). +

+

+
Parameters:
registeredName - the name with which the desired encryptor was + registered. +
Returns:
the encryptor, or null if no encryptor has been registered with + that name.
+
+
+
+ +

+registerPBEBigDecimalEncryptor

+
+public void registerPBEBigDecimalEncryptor(String registeredName,
+                                           org.jasypt.encryption.pbe.PBEBigDecimalEncryptor encryptor)
+
+
Deprecated. 
Registers a PBEBigDecimalEncryptor object with the specified + name. +

+

+
Parameters:
registeredName - the registered name.
encryptor - the encryptor to be registered.
Since:
+
1.6
+
+
+
+
+ +

+getPBEBigDecimalEncryptor

+
+public org.jasypt.encryption.pbe.PBEBigDecimalEncryptor getPBEBigDecimalEncryptor(String registeredName)
+
+
Deprecated. 
Returns the PBEBigDecimalEncryptor registered with the specified + name (if exists). +

+

+
Parameters:
registeredName - the name with which the desired encryptor was + registered. +
Returns:
the encryptor, or null if no encryptor has been registered with + that name.
+
+
+
+ +

+registerPBEByteEncryptor

+
+public void registerPBEByteEncryptor(String registeredName,
+                                     org.jasypt.encryption.pbe.PBEByteEncryptor encryptor)
+
+
Deprecated. 
Registers a PBEByteEncryptor object with the specified + name. +

+

+
Parameters:
registeredName - the registered name.
encryptor - the encryptor to be registered.
Since:
+
1.6
+
+
+
+
+ +

+getPBEByteEncryptor

+
+public org.jasypt.encryption.pbe.PBEByteEncryptor getPBEByteEncryptor(String registeredName)
+
+
Deprecated. 
Returns the PBEByteEncryptor registered with the specified + name (if exists). +

+

+
Parameters:
registeredName - the name with which the desired encryptor was + registered. +
Returns:
the encryptor, or null if no encryptor has been registered with + that name.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/HibernatePBEStringEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/HibernatePBEStringEncryptor.html new file mode 100644 index 00000000..dacad629 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/HibernatePBEStringEncryptor.html @@ -0,0 +1,689 @@ + + + + + + + +HibernatePBEStringEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.encryptor +
+Class HibernatePBEStringEncryptor

+
+Object
+  extended by org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class HibernatePBEStringEncryptor
extends Object
+ + +

+

+ Placeholder class for PBEStringEncryptor objects which are + eligible for use from Hibernate. +

+

+ This class acts as a wrapper on a PBEStringEncryptor, allowing + to be set a registered name (see setRegisteredName(String)) + and performing the needed registry operations against the + HibernatePBEEncryptorRegistry. +

+

+ It is not mandatory that a PBEStringEncryptor be explicitly set + with setEncryptor(PBEStringEncryptor). If not, a + StandardPBEStringEncryptor object will be created internally + and it will be configurable with the + setPassword(String)/setPasswordCharArray(char[]), + setAlgorithm(String), setKeyObtentionIterations(int), + setSaltGenerator(SaltGenerator), setProviderName(String), + setProvider(Provider), setStringOutputType(String) + and setConfig(PBEConfig) methods. +

+

+ This class is mainly intended for use from Spring Framework or some other + IoC container (if you are not using a container of this kind, please see + HibernatePBEEncryptorRegistry). The steps to be performed are + the following: +

    +
  1. Create an object of this class (declaring it).
  2. +
  3. Set its registeredName and, either its + wrapped encryptor or its password, + algorithm, keyObtentionIterations, + saltGenerator and config properties.
  4. +
  5. Declare a typedef in a Hibernate mapping giving its + encryptorRegisteredName parameter the same value specified + to this object in registeredName.
  6. +
+

+

+ This in a Spring config file would look like: +

+

+

+  ...
+  <-- Optional, as the hibernateEncryptor could be directly set an     -->
+  <-- algorithm and password.                                          -->
+  <bean id="stringEncryptor"
+    class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
+    <property name="algorithm">
+        <value>PBEWithMD5AndDES</value>
+    </property>
+    <property name="password">
+        <value>XXXXX</value>
+    </property>
+  </bean>
+  
+  <bean id="hibernateEncryptor"
+    class="org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor">
+    <property name="registeredName">
+        <value>myHibernateStringEncryptor</value>
+    </property>
+    <property name="encryptor">
+        <ref bean="stringEncryptor" />
+    </property>
+  </bean>
+  ...
+ 
+

+

+ And then in the Hibernate mapping file: +

+

+

+    <typedef name="encrypted" class="org.jasypt.hibernate.type.EncryptedStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+ 
+

+

+ An important thing to note is that, when using HibernatePBEStringEncryptor + objects this way to wrap PBEStringEncryptors, it is not + necessary to deal with HibernatePBEEncryptorRegistry, + because HibernatePBEStringEncryptor objects get automatically registered + in the encryptor registry when their setRegisteredName(String) + method is called. +

+

+ +

+

+
Since:
+
1.2 (substitutes org.jasypt.hibernate.HibernatePBEEncryptor which + existed since 1.0)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
HibernatePBEStringEncryptor() + +
+          Deprecated. Creates a new instance of HibernatePBEStringEncryptor.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Stringdecrypt(String encryptedMessage) + +
+          Deprecated. Decypts a message, delegating to wrapped encryptor
+ Stringencrypt(String message) + +
+          Deprecated. Encrypts a message, delegating to wrapped encryptor.
+ org.jasypt.encryption.pbe.PBEStringEncryptorgetEncryptor() + +
+          Deprecated. Returns the encryptor which this object wraps.
+ StringgetRegisteredName() + +
+          Deprecated. Returns the name with which the wrapped encryptor is registered at + the registry.
+ voidsetAlgorithm(String algorithm) + +
+          Deprecated. Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetConfig(org.jasypt.encryption.pbe.config.PBEConfig config) + +
+          Deprecated. Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetEncryptor(org.jasypt.encryption.pbe.PBEStringEncryptor encryptor) + +
+          Deprecated. Sets the PBEStringEncryptor to be held (wrapped) by this + object.
+ voidsetKeyObtentionIterations(int keyObtentionIterations) + +
+          Deprecated. Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetPassword(String password) + +
+          Deprecated. Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetPasswordCharArray(char[] password) + +
+          Deprecated. Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetProvider(java.security.Provider provider) + +
+          Deprecated. Sets the JCE provider to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetProviderName(String providerName) + +
+          Deprecated. Sets the name of the JCE provider to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetRegisteredName(String registeredName) + +
+          Deprecated. Sets the registered name of the encryptor and adds it to the registry.
+ voidsetSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator) + +
+          Deprecated. Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetStringOutputType(String stringOutputType) + +
+          Deprecated. Sets the type of String output ("base64" (default), "hexadecimal") to + be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+HibernatePBEStringEncryptor

+
+public HibernatePBEStringEncryptor()
+
+
Deprecated. 
Creates a new instance of HibernatePBEStringEncryptor. It also + creates a StandardPBEStringEncryptor for internal use, which + can be overriden by calling setEncryptor(...). +

+

+ + + + + + + + +
+Method Detail
+ +

+getEncryptor

+
+public org.jasypt.encryption.pbe.PBEStringEncryptor getEncryptor()
+
+
Deprecated. 
Returns the encryptor which this object wraps. +

+

+ +
Returns:
the encryptor.
+
+
+
+ +

+setEncryptor

+
+public void setEncryptor(org.jasypt.encryption.pbe.PBEStringEncryptor encryptor)
+
+
Deprecated. 
Sets the PBEStringEncryptor to be held (wrapped) by this + object. This method is optional and can be only called once. +

+

+
Parameters:
encryptor - the encryptor.
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+
Deprecated. 
Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+
Deprecated. 
Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
Since:
+
1.8
+
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+
Deprecated. 
Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
algorithm - the algorithm to be set for the internal encryptor
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(int keyObtentionIterations)
+
+
Deprecated. 
Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
keyObtentionIterations - to be set for the internal encryptor
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator)
+
+
Deprecated. 
Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
saltGenerator - the salt generator to be set for the internal + encryptor.
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+
Deprecated. 
Sets the name of the JCE provider to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
providerName - the name of the JCE provider (already registered)
Since:
+
1.3
+
+
+
+
+ +

+setProvider

+
+public void setProvider(java.security.Provider provider)
+
+
Deprecated. 
Sets the JCE provider to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
provider - the JCE provider to be used
Since:
+
1.3
+
+
+
+
+ +

+setStringOutputType

+
+public void setStringOutputType(String stringOutputType)
+
+
Deprecated. 
Sets the type of String output ("base64" (default), "hexadecimal") to + be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
stringOutputType - the type of String output
Since:
+
1.3
+
+
+
+
+ +

+setConfig

+
+public void setConfig(org.jasypt.encryption.pbe.config.PBEConfig config)
+
+
Deprecated. 
Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
config - the PBEConfig to be set for the internal encryptor
+
+
+
+ +

+encrypt

+
+public String encrypt(String message)
+
+
Deprecated. 
Encrypts a message, delegating to wrapped encryptor. +

+

+
Parameters:
message - the message to be encrypted. +
Returns:
the encryption result.
+
+
+
+ +

+decrypt

+
+public String decrypt(String encryptedMessage)
+
+
Deprecated. 
Decypts a message, delegating to wrapped encryptor +

+

+
Parameters:
encryptedMessage - the message to be decrypted. +
Returns:
the result of decryption.
+
+
+
+ +

+setRegisteredName

+
+public void setRegisteredName(String registeredName)
+
+
Deprecated. 
Sets the registered name of the encryptor and adds it to the registry. +

+

+
Parameters:
registeredName - the name with which the encryptor will be + registered.
+
+
+
+ +

+getRegisteredName

+
+public String getRegisteredName()
+
+
Deprecated. 
Returns the name with which the wrapped encryptor is registered at + the registry. +

+

+ +
Returns:
the registered name.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/class-use/HibernatePBEBigDecimalEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/class-use/HibernatePBEBigDecimalEncryptor.html new file mode 100644 index 00000000..8346086b --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/class-use/HibernatePBEBigDecimalEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor

+
+No usage of org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/class-use/HibernatePBEBigIntegerEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/class-use/HibernatePBEBigIntegerEncryptor.html new file mode 100644 index 00000000..b93d3e02 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/class-use/HibernatePBEBigIntegerEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor

+
+No usage of org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/class-use/HibernatePBEByteEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/class-use/HibernatePBEByteEncryptor.html new file mode 100644 index 00000000..5744d1a3 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/class-use/HibernatePBEByteEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor

+
+No usage of org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/class-use/HibernatePBEEncryptorRegistry.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/class-use/HibernatePBEEncryptorRegistry.html new file mode 100644 index 00000000..2d2b34cf --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/class-use/HibernatePBEEncryptorRegistry.html @@ -0,0 +1,181 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.encryptor.HibernatePBEEncryptorRegistry

+
+ + + + + + + + + +
+Packages that use HibernatePBEEncryptorRegistry
org.jasypt.hibernate.encryptor  
+  +

+ + + + + +
+Uses of HibernatePBEEncryptorRegistry in org.jasypt.hibernate.encryptor
+  +

+ + + + + + + + + +
Methods in org.jasypt.hibernate.encryptor that return HibernatePBEEncryptorRegistry
+static HibernatePBEEncryptorRegistryHibernatePBEEncryptorRegistry.getInstance() + +
+          Deprecated. Returns the singleton instance of the registry.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/class-use/HibernatePBEStringEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/class-use/HibernatePBEStringEncryptor.html new file mode 100644 index 00000000..36b5358d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/class-use/HibernatePBEStringEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor

+
+No usage of org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/package-frame.html new file mode 100644 index 00000000..2fff122b --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/package-frame.html @@ -0,0 +1,41 @@ + + + + + + + +org.jasypt.hibernate.encryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.hibernate.encryptor + + + + +
+Classes  + +
+HibernatePBEBigDecimalEncryptor +
+HibernatePBEBigIntegerEncryptor +
+HibernatePBEByteEncryptor +
+HibernatePBEEncryptorRegistry +
+HibernatePBEStringEncryptor
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/package-summary.html new file mode 100644 index 00000000..8f34a1cc --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/package-summary.html @@ -0,0 +1,174 @@ + + + + + + + +org.jasypt.hibernate.encryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.hibernate.encryptor +

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Class Summary
HibernatePBEBigDecimalEncryptorDeprecated. Will be removed in 1.11.
HibernatePBEBigIntegerEncryptorDeprecated. Will be removed in 1.11.
HibernatePBEByteEncryptorDeprecated. Will be removed in 1.11.
HibernatePBEEncryptorRegistryDeprecated. Will be removed in 1.11.
HibernatePBEStringEncryptorDeprecated. Will be removed in 1.11.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/package-tree.html new file mode 100644 index 00000000..87ec659c --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/package-tree.html @@ -0,0 +1,154 @@ + + + + + + + +org.jasypt.hibernate.encryptor Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.hibernate.encryptor +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/package-use.html new file mode 100644 index 00000000..ccaa2a2f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/encryptor/package-use.html @@ -0,0 +1,172 @@ + + + + + + + +Uses of Package org.jasypt.hibernate.encryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.hibernate.encryptor

+
+ + + + + + + + + +
+Packages that use org.jasypt.hibernate.encryptor
org.jasypt.hibernate.encryptor  
+  +

+ + + + + + + + +
+Classes in org.jasypt.hibernate.encryptor used by org.jasypt.hibernate.encryptor
HibernatePBEEncryptorRegistry + +
+          Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/AbstractEncryptedAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/AbstractEncryptedAsStringType.html new file mode 100644 index 00000000..65e7633e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/AbstractEncryptedAsStringType.html @@ -0,0 +1,670 @@ + + + + + + + +AbstractEncryptedAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.type +
+Class AbstractEncryptedAsStringType

+
+Object
+  extended by org.jasypt.hibernate.type.AbstractEncryptedAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
Direct Known Subclasses:
EncryptedBigDecimalAsStringType, EncryptedBigIntegerAsStringType, EncryptedBooleanAsStringType, EncryptedByteAsStringType, EncryptedCalendarAsStringType, EncryptedDateAsStringType, EncryptedDoubleAsStringType, EncryptedFloatAsStringType, EncryptedIntegerAsStringType, EncryptedLongAsStringType, EncryptedShortAsStringType, EncryptedStringType
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public abstract class AbstractEncryptedAsStringType
extends Object
implements org.hibernate.usertype.UserType, org.hibernate.usertype.ParameterizedType
+ + +

+Base class for Hibernate UserTypes to store + values as encrypted strings. +

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández, Iván García Sáinz-Aja
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+protected  org.jasypt.encryption.pbe.PBEStringEncryptorencryptor + +
+          Deprecated.  
+  + + + + + + + + + + +
+Constructor Summary
AbstractEncryptedAsStringType() + +
+          Deprecated.  
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Objectassemble(java.io.Serializable cached, + Object owner) + +
+          Deprecated.  
+protected  voidcheckInitialization() + +
+          Deprecated.  
+protected abstract  ObjectconvertToObject(String string) + +
+          Deprecated. Converts given String to its Object form.
+protected  StringconvertToString(Object object) + +
+          Deprecated. Converts given Object to its String form.
+ ObjectdeepCopy(Object value) + +
+          Deprecated.  
+ java.io.Serializabledisassemble(Object value) + +
+          Deprecated.  
+ booleanequals(Object x, + Object y) + +
+          Deprecated.  
+ inthashCode(Object x) + +
+          Deprecated.  
+ booleanisMutable() + +
+          Deprecated.  
+ ObjectnullSafeGet(java.sql.ResultSet rs, + String[] names, + Object owner) + +
+          Deprecated.  
+ voidnullSafeSet(java.sql.PreparedStatement st, + Object value, + int index) + +
+          Deprecated.  
+ Objectreplace(Object original, + Object target, + Object owner) + +
+          Deprecated.  
+abstract  ClassreturnedClass() + +
+          Deprecated.  
+ voidsetParameterValues(java.util.Properties parameters) + +
+          Deprecated.  
+ int[]sqlTypes() + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+encryptor

+
+protected org.jasypt.encryption.pbe.PBEStringEncryptor encryptor
+
+
Deprecated. 
+
+
+ + + + + + + + +
+Constructor Detail
+ +

+AbstractEncryptedAsStringType

+
+public AbstractEncryptedAsStringType()
+
+
Deprecated. 
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected abstract Object convertToObject(String string)
+
+
Deprecated. 
Converts given String to its Object form. +

+

+
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
+
+
+
+ +

+convertToString

+
+protected String convertToString(Object object)
+
+
Deprecated. 
Converts given Object to its String form. +

+

+
+
+
+
Parameters:
object - the object value +
Returns:
the string form of the passes Object
+
+
+
+ +

+sqlTypes

+
+public final int[] sqlTypes()
+
+
Deprecated. 
+
Specified by:
sqlTypes in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+returnedClass

+
+public abstract Class returnedClass()
+
+
Deprecated. 
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+equals

+
+public final boolean equals(Object x,
+                            Object y)
+                     throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
equals in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+deepCopy

+
+public final Object deepCopy(Object value)
+                      throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
deepCopy in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+assemble

+
+public final Object assemble(java.io.Serializable cached,
+                             Object owner)
+                      throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
assemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+disassemble

+
+public final java.io.Serializable disassemble(Object value)
+                                       throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
disassemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+isMutable

+
+public final boolean isMutable()
+
+
Deprecated. 
+
Specified by:
isMutable in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+hashCode

+
+public final int hashCode(Object x)
+                   throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
hashCode in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+replace

+
+public final Object replace(Object original,
+                            Object target,
+                            Object owner)
+                     throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
replace in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+nullSafeGet

+
+public final Object nullSafeGet(java.sql.ResultSet rs,
+                                String[] names,
+                                Object owner)
+                         throws org.hibernate.HibernateException,
+                                java.sql.SQLException
+
+
Deprecated. 
+
Specified by:
nullSafeGet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+nullSafeSet

+
+public final void nullSafeSet(java.sql.PreparedStatement st,
+                              Object value,
+                              int index)
+                       throws org.hibernate.HibernateException,
+                              java.sql.SQLException
+
+
Deprecated. 
+
Specified by:
nullSafeSet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+setParameterValues

+
+public void setParameterValues(java.util.Properties parameters)
+
+
Deprecated. 
+
Specified by:
setParameterValues in interface org.hibernate.usertype.ParameterizedType
+
+
+
+
+
+
+ +

+checkInitialization

+
+protected final void checkInitialization()
+
+
Deprecated. 
+
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBigDecimalAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBigDecimalAsStringType.html new file mode 100644 index 00000000..9feae812 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBigDecimalAsStringType.html @@ -0,0 +1,391 @@ + + + + + + + +EncryptedBigDecimalAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.type +
+Class EncryptedBigDecimalAsStringType

+
+Object
+  extended by org.jasypt.hibernate.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate.type.EncryptedBigDecimalAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class EncryptedBigDecimalAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of BigDecimal values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigDecimalAsString" class="org.jasypt.hibernate.type.EncryptedBigDecimalAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedBigDecimalAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigDecimalAsString" class="org.jasypt.hibernate.type.EncryptedBigDecimalAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedBigDecimalAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedBigDecimalAsStringType() + +
+          Deprecated.  
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Deprecated. Converts given String to its Object form.
+ ClassreturnedClass() + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedBigDecimalAsStringType

+
+public EncryptedBigDecimalAsStringType()
+
+
Deprecated. 
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Deprecated. 
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
Deprecated. 
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBigDecimalType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBigDecimalType.html new file mode 100644 index 00000000..2b748c51 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBigDecimalType.html @@ -0,0 +1,645 @@ + + + + + + + +EncryptedBigDecimalType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.type +
+Class EncryptedBigDecimalType

+
+Object
+  extended by org.jasypt.hibernate.type.EncryptedBigDecimalType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class EncryptedBigDecimalType
extends Object
implements org.hibernate.usertype.UserType, org.hibernate.usertype.ParameterizedType
+ + +

+

+ A Hibernate UserType implementation which allows transparent + encryption of BigDecimal values during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigDecimal" class="org.jasypt.hibernate.type.EncryptedBigDecimalType">
+      <param name="encryptorRegisteredName">myHibernateBigDecimalEncryptor</param>
+      <param name="decimalScale">2</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedBigDecimal" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEBigDecimalEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateBigDecimalEncryptor (see + HibernatePBEBigDecimalEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigDecimal" class="org.jasypt.hibernate.type.EncryptedBigDecimalType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+      <param name="decimalScale">2</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="address" column="ADDRESS" type="encryptedBigDecimal" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+

+ About the decimalScale parameter +

+ The decimalScale parameter is aimed at setting the scale with which + BigDecimal numbers will be set to and retrieved from the database. It is + an important parameter because many DBMSs return BigDecimal numbers with + a scale equal to the amount of decimal positions declared for the field + (e.g. if we store "18.23" (scale=2) in a DECIMAL(15,5) field, we can get a + "18.23000" (scale=5) back when we retrieve the number). This can affect + correct decryption of encrypted numbers, but specifying a + decimalScale parameter will solve this issue. +

+

+ So, if we set decimalScale to 3, and we store "18.23", this + Hibernate type will send "18.230" to the encryptor, which is the value that + we will get back from the database at retrieval time (a scale of "3" + will be set again on the value obtained from DB). If it is necessary, a + DOWN rounding operation is executed on the number. +

+
+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
EncryptedBigDecimalType() + +
+          Deprecated.  
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Objectassemble(java.io.Serializable cached, + Object owner) + +
+          Deprecated.  
+ ObjectdeepCopy(Object value) + +
+          Deprecated.  
+ java.io.Serializabledisassemble(Object value) + +
+          Deprecated.  
+ booleanequals(Object x, + Object y) + +
+          Deprecated.  
+ inthashCode(Object x) + +
+          Deprecated.  
+ booleanisMutable() + +
+          Deprecated.  
+ ObjectnullSafeGet(java.sql.ResultSet rs, + String[] names, + Object owner) + +
+          Deprecated.  
+ voidnullSafeSet(java.sql.PreparedStatement st, + Object value, + int index) + +
+          Deprecated.  
+ Objectreplace(Object original, + Object target, + Object owner) + +
+          Deprecated.  
+ ClassreturnedClass() + +
+          Deprecated.  
+ voidsetParameterValues(java.util.Properties parameters) + +
+          Deprecated.  
+ int[]sqlTypes() + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedBigDecimalType

+
+public EncryptedBigDecimalType()
+
+
Deprecated. 
+ + + + + + + + +
+Method Detail
+ +

+sqlTypes

+
+public int[] sqlTypes()
+
+
Deprecated. 
+
Specified by:
sqlTypes in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
Deprecated. 
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+equals

+
+public boolean equals(Object x,
+                      Object y)
+               throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
equals in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+deepCopy

+
+public Object deepCopy(Object value)
+                throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
deepCopy in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+assemble

+
+public Object assemble(java.io.Serializable cached,
+                       Object owner)
+                throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
assemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+disassemble

+
+public java.io.Serializable disassemble(Object value)
+                                 throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
disassemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+isMutable

+
+public boolean isMutable()
+
+
Deprecated. 
+
Specified by:
isMutable in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+hashCode

+
+public int hashCode(Object x)
+             throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
hashCode in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+replace

+
+public Object replace(Object original,
+                      Object target,
+                      Object owner)
+               throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
replace in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+nullSafeGet

+
+public Object nullSafeGet(java.sql.ResultSet rs,
+                          String[] names,
+                          Object owner)
+                   throws org.hibernate.HibernateException,
+                          java.sql.SQLException
+
+
Deprecated. 
+
Specified by:
nullSafeGet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+nullSafeSet

+
+public void nullSafeSet(java.sql.PreparedStatement st,
+                        Object value,
+                        int index)
+                 throws org.hibernate.HibernateException,
+                        java.sql.SQLException
+
+
Deprecated. 
+
Specified by:
nullSafeSet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+setParameterValues

+
+public void setParameterValues(java.util.Properties parameters)
+
+
Deprecated. 
+
Specified by:
setParameterValues in interface org.hibernate.usertype.ParameterizedType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBigIntegerAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBigIntegerAsStringType.html new file mode 100644 index 00000000..5e35e0ba --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBigIntegerAsStringType.html @@ -0,0 +1,391 @@ + + + + + + + +EncryptedBigIntegerAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.type +
+Class EncryptedBigIntegerAsStringType

+
+Object
+  extended by org.jasypt.hibernate.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate.type.EncryptedBigIntegerAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class EncryptedBigIntegerAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of BigInteger values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigIntegerAsString" class="org.jasypt.hibernate.type.EncryptedBigIntegerAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedBigIntegerAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigIntegerAsString" class="org.jasypt.hibernate.type.EncryptedBigIntegerAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedBigIntegerAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedBigIntegerAsStringType() + +
+          Deprecated.  
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Deprecated. Converts given String to its Object form.
+ ClassreturnedClass() + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedBigIntegerAsStringType

+
+public EncryptedBigIntegerAsStringType()
+
+
Deprecated. 
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Deprecated. 
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
Deprecated. 
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBigIntegerType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBigIntegerType.html new file mode 100644 index 00000000..02d0837e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBigIntegerType.html @@ -0,0 +1,622 @@ + + + + + + + +EncryptedBigIntegerType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.type +
+Class EncryptedBigIntegerType

+
+Object
+  extended by org.jasypt.hibernate.type.EncryptedBigIntegerType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class EncryptedBigIntegerType
extends Object
implements org.hibernate.usertype.UserType, org.hibernate.usertype.ParameterizedType
+ + +

+

+ A Hibernate UserType implementation which allows transparent + encryption of BigInteger values during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigInteger" class="org.jasypt.hibernate.type.EncryptedBigIntegerType">
+      <param name="encryptorRegisteredName">myHibernateBigIntegerEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedBigInteger" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEBigIntegerEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateBigIntegerEncryptor (see + HibernatePBEBigIntegerEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigInteger" class="org.jasypt.hibernate.type.EncryptedBigIntegerType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="address" column="ADDRESS" type="encryptedBigInteger" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
EncryptedBigIntegerType() + +
+          Deprecated.  
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Objectassemble(java.io.Serializable cached, + Object owner) + +
+          Deprecated.  
+ ObjectdeepCopy(Object value) + +
+          Deprecated.  
+ java.io.Serializabledisassemble(Object value) + +
+          Deprecated.  
+ booleanequals(Object x, + Object y) + +
+          Deprecated.  
+ inthashCode(Object x) + +
+          Deprecated.  
+ booleanisMutable() + +
+          Deprecated.  
+ ObjectnullSafeGet(java.sql.ResultSet rs, + String[] names, + Object owner) + +
+          Deprecated.  
+ voidnullSafeSet(java.sql.PreparedStatement st, + Object value, + int index) + +
+          Deprecated.  
+ Objectreplace(Object original, + Object target, + Object owner) + +
+          Deprecated.  
+ ClassreturnedClass() + +
+          Deprecated.  
+ voidsetParameterValues(java.util.Properties parameters) + +
+          Deprecated.  
+ int[]sqlTypes() + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedBigIntegerType

+
+public EncryptedBigIntegerType()
+
+
Deprecated. 
+ + + + + + + + +
+Method Detail
+ +

+sqlTypes

+
+public int[] sqlTypes()
+
+
Deprecated. 
+
Specified by:
sqlTypes in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
Deprecated. 
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+equals

+
+public boolean equals(Object x,
+                      Object y)
+               throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
equals in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+deepCopy

+
+public Object deepCopy(Object value)
+                throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
deepCopy in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+assemble

+
+public Object assemble(java.io.Serializable cached,
+                       Object owner)
+                throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
assemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+disassemble

+
+public java.io.Serializable disassemble(Object value)
+                                 throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
disassemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+isMutable

+
+public boolean isMutable()
+
+
Deprecated. 
+
Specified by:
isMutable in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+hashCode

+
+public int hashCode(Object x)
+             throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
hashCode in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+replace

+
+public Object replace(Object original,
+                      Object target,
+                      Object owner)
+               throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
replace in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+nullSafeGet

+
+public Object nullSafeGet(java.sql.ResultSet rs,
+                          String[] names,
+                          Object owner)
+                   throws org.hibernate.HibernateException,
+                          java.sql.SQLException
+
+
Deprecated. 
+
Specified by:
nullSafeGet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+nullSafeSet

+
+public void nullSafeSet(java.sql.PreparedStatement st,
+                        Object value,
+                        int index)
+                 throws org.hibernate.HibernateException,
+                        java.sql.SQLException
+
+
Deprecated. 
+
Specified by:
nullSafeSet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+setParameterValues

+
+public void setParameterValues(java.util.Properties parameters)
+
+
Deprecated. 
+
Specified by:
setParameterValues in interface org.hibernate.usertype.ParameterizedType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBinaryType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBinaryType.html new file mode 100644 index 00000000..cea6be2f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBinaryType.html @@ -0,0 +1,622 @@ + + + + + + + +EncryptedBinaryType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.type +
+Class EncryptedBinaryType

+
+Object
+  extended by org.jasypt.hibernate.type.EncryptedBinaryType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class EncryptedBinaryType
extends Object
implements org.hibernate.usertype.UserType, org.hibernate.usertype.ParameterizedType
+ + +

+

+ A Hibernate UserType implementation which allows transparent + encryption of byte[] values during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBinary" class="org.jasypt.hibernate.type.EncryptedBinaryType">
+      <param name="encryptorRegisteredName">myHibernateByteEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="resume" column="RESUME" type="encryptedBinary" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEByteEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateByteEncryptor (see + HibernatePBEByteEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBinary" class="org.jasypt.hibernate.type.EncryptedBinaryType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="resume" column="RESUME" type="encryptedBinary" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
EncryptedBinaryType() + +
+          Deprecated.  
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Objectassemble(java.io.Serializable cached, + Object owner) + +
+          Deprecated.  
+ ObjectdeepCopy(Object value) + +
+          Deprecated.  
+ java.io.Serializabledisassemble(Object value) + +
+          Deprecated.  
+ booleanequals(Object x, + Object y) + +
+          Deprecated.  
+ inthashCode(Object x) + +
+          Deprecated.  
+ booleanisMutable() + +
+          Deprecated.  
+ ObjectnullSafeGet(java.sql.ResultSet rs, + String[] names, + Object owner) + +
+          Deprecated.  
+ voidnullSafeSet(java.sql.PreparedStatement st, + Object value, + int index) + +
+          Deprecated.  
+ Objectreplace(Object original, + Object target, + Object owner) + +
+          Deprecated.  
+ ClassreturnedClass() + +
+          Deprecated.  
+ voidsetParameterValues(java.util.Properties parameters) + +
+          Deprecated.  
+ int[]sqlTypes() + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedBinaryType

+
+public EncryptedBinaryType()
+
+
Deprecated. 
+ + + + + + + + +
+Method Detail
+ +

+sqlTypes

+
+public int[] sqlTypes()
+
+
Deprecated. 
+
Specified by:
sqlTypes in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
Deprecated. 
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+equals

+
+public boolean equals(Object x,
+                      Object y)
+               throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
equals in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+deepCopy

+
+public Object deepCopy(Object value)
+                throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
deepCopy in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+assemble

+
+public Object assemble(java.io.Serializable cached,
+                       Object owner)
+                throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
assemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+disassemble

+
+public java.io.Serializable disassemble(Object value)
+                                 throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
disassemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+isMutable

+
+public boolean isMutable()
+
+
Deprecated. 
+
Specified by:
isMutable in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+hashCode

+
+public int hashCode(Object x)
+             throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
hashCode in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+replace

+
+public Object replace(Object original,
+                      Object target,
+                      Object owner)
+               throws org.hibernate.HibernateException
+
+
Deprecated. 
+
Specified by:
replace in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+nullSafeGet

+
+public Object nullSafeGet(java.sql.ResultSet rs,
+                          String[] names,
+                          Object owner)
+                   throws org.hibernate.HibernateException,
+                          java.sql.SQLException
+
+
Deprecated. 
+
Specified by:
nullSafeGet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+nullSafeSet

+
+public void nullSafeSet(java.sql.PreparedStatement st,
+                        Object value,
+                        int index)
+                 throws org.hibernate.HibernateException,
+                        java.sql.SQLException
+
+
Deprecated. 
+
Specified by:
nullSafeSet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+setParameterValues

+
+public void setParameterValues(java.util.Properties parameters)
+
+
Deprecated. 
+
Specified by:
setParameterValues in interface org.hibernate.usertype.ParameterizedType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBooleanAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBooleanAsStringType.html new file mode 100644 index 00000000..be6b8ede --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedBooleanAsStringType.html @@ -0,0 +1,391 @@ + + + + + + + +EncryptedBooleanAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.type +
+Class EncryptedBooleanAsStringType

+
+Object
+  extended by org.jasypt.hibernate.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate.type.EncryptedBooleanAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class EncryptedBooleanAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Boolean values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBooleanAsString" class="org.jasypt.hibernate.type.EncryptedBooleanAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="active" column="ACTIVE" type="encryptedBooleanAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBooleanAsString" class="org.jasypt.hibernate.type.EncryptedBooleanAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="active" column="ACTIVE" type="encryptedBooleanAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedBooleanAsStringType() + +
+          Deprecated.  
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Deprecated. Converts given String to its Object form.
+ ClassreturnedClass() + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedBooleanAsStringType

+
+public EncryptedBooleanAsStringType()
+
+
Deprecated. 
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Deprecated. 
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
Deprecated. 
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedByteAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedByteAsStringType.html new file mode 100644 index 00000000..f9cb9578 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedByteAsStringType.html @@ -0,0 +1,391 @@ + + + + + + + +EncryptedByteAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.type +
+Class EncryptedByteAsStringType

+
+Object
+  extended by org.jasypt.hibernate.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate.type.EncryptedByteAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class EncryptedByteAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Byte values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedByteAsString" class="org.jasypt.hibernate.type.EncryptedByteAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedByteAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedByteAsString" class="org.jasypt.hibernate.type.EncryptedByteAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedByteAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedByteAsStringType() + +
+          Deprecated.  
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Deprecated. Converts given String to its Object form.
+ ClassreturnedClass() + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedByteAsStringType

+
+public EncryptedByteAsStringType()
+
+
Deprecated. 
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Deprecated. 
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
Deprecated. 
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedCalendarAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedCalendarAsStringType.html new file mode 100644 index 00000000..4b871aea --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedCalendarAsStringType.html @@ -0,0 +1,446 @@ + + + + + + + +EncryptedCalendarAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.type +
+Class EncryptedCalendarAsStringType

+
+Object
+  extended by org.jasypt.hibernate.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate.type.EncryptedCalendarAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class EncryptedCalendarAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Calendar values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedCalendarAsString" class="org.jasypt.hibernate.type.EncryptedCalendarAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+      <param name="storeTimeZone">true</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="birth" column="BIRTH" type="encryptedCalendarAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ The boolean storeTimeZone parameter allows the Calendar to be + re-created with the same TimeZone that it was created. This is an + optional parameter, and its default value is FALSE. +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedCalendarAsString" class="org.jasypt.hibernate.type.EncryptedCalendarAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+      <param name="storeTimeZone">true</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="birth" column="BIRTH" type="encryptedCalendarAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedCalendarAsStringType() + +
+          Deprecated.  
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Deprecated. Converts given String to its Object form.
+protected  StringconvertToString(Object object) + +
+          Deprecated. Converts given Object to its String form.
+ ClassreturnedClass() + +
+          Deprecated.  
+ voidsetParameterValues(java.util.Properties parameters) + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
assemble, checkInitialization, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedCalendarAsStringType

+
+public EncryptedCalendarAsStringType()
+
+
Deprecated. 
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Deprecated. 
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+convertToString

+
+protected String convertToString(Object object)
+
+
Deprecated. 
Description copied from class: AbstractEncryptedAsStringType
+
Converts given Object to its String form. +

+

+
Overrides:
convertToString in class AbstractEncryptedAsStringType
+
+
+
Parameters:
object - the object value +
Returns:
the string form of the passes Object
See Also:
AbstractEncryptedAsStringType.convertToString(java.lang.Object)
+
+
+
+ +

+setParameterValues

+
+public void setParameterValues(java.util.Properties parameters)
+
+
Deprecated. 
+
Specified by:
setParameterValues in interface org.hibernate.usertype.ParameterizedType
Overrides:
setParameterValues in class AbstractEncryptedAsStringType
+
+
+
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
Deprecated. 
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedDateAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedDateAsStringType.html new file mode 100644 index 00000000..793b80d7 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedDateAsStringType.html @@ -0,0 +1,417 @@ + + + + + + + +EncryptedDateAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.type +
+Class EncryptedDateAsStringType

+
+Object
+  extended by org.jasypt.hibernate.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate.type.EncryptedDateAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class EncryptedDateAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Date values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedDateAsString" class="org.jasypt.hibernate.type.EncryptedDateAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="birth" column="BIRTH" type="encryptedDateAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedDateAsString" class="org.jasypt.hibernate.type.EncryptedDateAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="birth" column="BIRTH" type="encryptedDateAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedDateAsStringType() + +
+          Deprecated.  
+  + + + + + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Deprecated. Converts given String to its Object form.
+protected  StringconvertToString(Object object) + +
+          Deprecated. Converts given Object to its String form.
+ ClassreturnedClass() + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
assemble, checkInitialization, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedDateAsStringType

+
+public EncryptedDateAsStringType()
+
+
Deprecated. 
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Deprecated. 
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+convertToString

+
+protected String convertToString(Object object)
+
+
Deprecated. 
Description copied from class: AbstractEncryptedAsStringType
+
Converts given Object to its String form. +

+

+
Overrides:
convertToString in class AbstractEncryptedAsStringType
+
+
+
Parameters:
object - the object value +
Returns:
the string form of the passes Object
See Also:
AbstractEncryptedAsStringType.convertToString(java.lang.Object)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
Deprecated. 
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedDoubleAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedDoubleAsStringType.html new file mode 100644 index 00000000..db50cffd --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedDoubleAsStringType.html @@ -0,0 +1,391 @@ + + + + + + + +EncryptedDoubleAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.type +
+Class EncryptedDoubleAsStringType

+
+Object
+  extended by org.jasypt.hibernate.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate.type.EncryptedDoubleAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class EncryptedDoubleAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Double values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedDoubleAsString" class="org.jasypt.hibernate.type.EncryptedDoubleAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedDoubleAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedDoubleAsString" class="org.jasypt.hibernate.type.EncryptedDoubleAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedDoubleAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedDoubleAsStringType() + +
+          Deprecated.  
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Deprecated. Converts given String to its Object form.
+ ClassreturnedClass() + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedDoubleAsStringType

+
+public EncryptedDoubleAsStringType()
+
+
Deprecated. 
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Deprecated. 
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
Deprecated. 
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedFloatAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedFloatAsStringType.html new file mode 100644 index 00000000..171f41c4 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedFloatAsStringType.html @@ -0,0 +1,391 @@ + + + + + + + +EncryptedFloatAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.type +
+Class EncryptedFloatAsStringType

+
+Object
+  extended by org.jasypt.hibernate.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate.type.EncryptedFloatAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class EncryptedFloatAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Float values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedFloatAsString" class="org.jasypt.hibernate.type.EncryptedFloatAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedFloatAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedFloatAsString" class="org.jasypt.hibernate.type.EncryptedFloatAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedFloatAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedFloatAsStringType() + +
+          Deprecated.  
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Deprecated. Converts given String to its Object form.
+ ClassreturnedClass() + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedFloatAsStringType

+
+public EncryptedFloatAsStringType()
+
+
Deprecated. 
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Deprecated. 
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
Deprecated. 
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedIntegerAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedIntegerAsStringType.html new file mode 100644 index 00000000..86fd165c --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedIntegerAsStringType.html @@ -0,0 +1,391 @@ + + + + + + + +EncryptedIntegerAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.type +
+Class EncryptedIntegerAsStringType

+
+Object
+  extended by org.jasypt.hibernate.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate.type.EncryptedIntegerAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class EncryptedIntegerAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Integer values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedIntegerAsString" class="org.jasypt.hibernate.type.EncryptedIntegerAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedIntegerAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedIntegerAsString" class="org.jasypt.hibernate.type.EncryptedIntegerAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedIntegerAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedIntegerAsStringType() + +
+          Deprecated.  
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Deprecated. Converts given String to its Object form.
+ ClassreturnedClass() + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedIntegerAsStringType

+
+public EncryptedIntegerAsStringType()
+
+
Deprecated. 
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Deprecated. 
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
Deprecated. 
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedLongAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedLongAsStringType.html new file mode 100644 index 00000000..cb5333e4 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedLongAsStringType.html @@ -0,0 +1,391 @@ + + + + + + + +EncryptedLongAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.type +
+Class EncryptedLongAsStringType

+
+Object
+  extended by org.jasypt.hibernate.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate.type.EncryptedLongAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class EncryptedLongAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Long values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedLongAsString" class="org.jasypt.hibernate.type.EncryptedLongAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedLongAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedLongAsString" class="org.jasypt.hibernate.type.EncryptedLongAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedLongAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedLongAsStringType() + +
+          Deprecated.  
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Deprecated. Converts given String to its Object form.
+ ClassreturnedClass() + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedLongAsStringType

+
+public EncryptedLongAsStringType()
+
+
Deprecated. 
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Deprecated. 
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
Deprecated. 
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedShortAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedShortAsStringType.html new file mode 100644 index 00000000..4acd9711 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedShortAsStringType.html @@ -0,0 +1,391 @@ + + + + + + + +EncryptedShortAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.type +
+Class EncryptedShortAsStringType

+
+Object
+  extended by org.jasypt.hibernate.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate.type.EncryptedShortAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class EncryptedShortAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Short values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedShortAsString" class="org.jasypt.hibernate.type.EncryptedShortAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedShortAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedShortAsString" class="org.jasypt.hibernate.type.EncryptedShortAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedShortAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedShortAsStringType() + +
+          Deprecated.  
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Deprecated. Converts given String to its Object form.
+ ClassreturnedClass() + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedShortAsStringType

+
+public EncryptedShortAsStringType()
+
+
Deprecated. 
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Deprecated. 
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
Deprecated. 
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedStringType.html new file mode 100644 index 00000000..e379c408 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/EncryptedStringType.html @@ -0,0 +1,391 @@ + + + + + + + +EncryptedStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.type +
+Class EncryptedStringType

+
+Object
+  extended by org.jasypt.hibernate.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate.type.EncryptedStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class EncryptedStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows transparent + encryption of String values during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedString" class="org.jasypt.hibernate.type.EncryptedStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="address" column="ADDRESS" type="encryptedString" />
+      ...
+    </class>
+    ...
+  </hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedString" class="org.jasypt.hibernate.type.EncryptedStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="address" column="ADDRESS" type="encryptedString" />
+      ...
+    </class>
+    ...
+  </hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.2 (substitutes org.jasypt.hibernate.EncryptedTextType + which existed since 1.0)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedStringType() + +
+          Deprecated.  
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String stringValue) + +
+          Deprecated. Converts given String to its Object form.
+ ClassreturnedClass() + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedStringType

+
+public EncryptedStringType()
+
+
Deprecated. 
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String stringValue)
+
+
Deprecated. 
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
stringValue - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
Deprecated. 
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/ParameterNaming.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/ParameterNaming.html new file mode 100644 index 00000000..4ee10068 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/ParameterNaming.html @@ -0,0 +1,444 @@ + + + + + + + +ParameterNaming (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate.type +
+Class ParameterNaming

+
+Object
+  extended by org.jasypt.hibernate.type.ParameterNaming
+
+
+Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider. +

+

+
public final class ParameterNaming
extends Object
+ + +

+

+ Constant names of the parameters that can be used by a jasypt type's + typedef declaration in a Hibernate mapping. +

+

+ +

+

+
Since:
+
1.4 (was org.jasypt.hibernate.ParameterNaming since 1.0)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Summary
+static StringALGORITHM + +
+          Deprecated.  + The encryption algorithm.
+static StringDECIMAL_SCALE + +
+          Deprecated.  + The scale (numbers after the decimal point) to be used when storing + decimal numbers.
+static StringENCRYPTOR_NAME + +
+          Deprecated.  + The registered name of an encryptor previously registered at the + HibernatePBEEncryptorRegistry.
+static StringKEY_OBTENTION_ITERATIONS + +
+          Deprecated.  + The number of hashing iterations to be applied for obtaining the + encryption key.
+static StringPASSWORD + +
+          Deprecated.  + The encryption password.
+static StringPROVIDER_NAME + +
+          Deprecated.  + The name of the JCE security provider we want to get the algorithm from + (if it is no the default one.
+static StringSTORE_TIME_ZONE + +
+          Deprecated.  + Whether the calendar time zone should be stored with the date or not.
+static StringSTRING_OUTPUT_TYPE + +
+          Deprecated.  + The type of String output ("base64" (default), "hexadecimal") to be + generated.
+  + + + + + + + +
+Method Summary
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+ENCRYPTOR_NAME

+
+public static final String ENCRYPTOR_NAME
+
+
Deprecated. 

+ The registered name of an encryptor previously registered at the + HibernatePBEEncryptorRegistry. +

+

+ Value = encryptorRegisteredName +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+ALGORITHM

+
+public static final String ALGORITHM
+
+
Deprecated. 

+ The encryption algorithm. +

+

+ Value = algorithm +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+PROVIDER_NAME

+
+public static final String PROVIDER_NAME
+
+
Deprecated. 

+ The name of the JCE security provider we want to get the algorithm from + (if it is no the default one. +

+

+ Value = providerName +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+PASSWORD

+
+public static final String PASSWORD
+
+
Deprecated. 

+ The encryption password. +

+

+ Value = password +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+KEY_OBTENTION_ITERATIONS

+
+public static final String KEY_OBTENTION_ITERATIONS
+
+
Deprecated. 

+ The number of hashing iterations to be applied for obtaining the + encryption key. +

+

+ Value = keyObtentionIterations +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+STRING_OUTPUT_TYPE

+
+public static final String STRING_OUTPUT_TYPE
+
+
Deprecated. 

+ The type of String output ("base64" (default), "hexadecimal") to be + generated. +

+

+ Value = stringOutputType +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+DECIMAL_SCALE

+
+public static final String DECIMAL_SCALE
+
+
Deprecated. 

+ The scale (numbers after the decimal point) to be used when storing + decimal numbers. +

+

+ Value = decimalScale +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+STORE_TIME_ZONE

+
+public static final String STORE_TIME_ZONE
+
+
Deprecated. 

+ Whether the calendar time zone should be stored with the date or not. +

+

+ Value = storeTimeZone +

+

+

+
See Also:
Constant Field Values
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/AbstractEncryptedAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/AbstractEncryptedAsStringType.html new file mode 100644 index 00000000..37dce604 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/AbstractEncryptedAsStringType.html @@ -0,0 +1,281 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.type.AbstractEncryptedAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.type.AbstractEncryptedAsStringType

+
+ + + + + + + + + +
+Packages that use AbstractEncryptedAsStringType
org.jasypt.hibernate.type  
+  +

+ + + + + +
+Uses of AbstractEncryptedAsStringType in org.jasypt.hibernate.type
+  +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Subclasses of AbstractEncryptedAsStringType in org.jasypt.hibernate.type
+ classEncryptedBigDecimalAsStringType + +
+          Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
+ classEncryptedBigIntegerAsStringType + +
+          Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
+ classEncryptedBooleanAsStringType + +
+          Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
+ classEncryptedByteAsStringType + +
+          Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
+ classEncryptedCalendarAsStringType + +
+          Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
+ classEncryptedDateAsStringType + +
+          Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
+ classEncryptedDoubleAsStringType + +
+          Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
+ classEncryptedFloatAsStringType + +
+          Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
+ classEncryptedIntegerAsStringType + +
+          Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
+ classEncryptedLongAsStringType + +
+          Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
+ classEncryptedShortAsStringType + +
+          Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
+ classEncryptedStringType + +
+          Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBigDecimalAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBigDecimalAsStringType.html new file mode 100644 index 00000000..c3570f9c --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBigDecimalAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.type.EncryptedBigDecimalAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.type.EncryptedBigDecimalAsStringType

+
+No usage of org.jasypt.hibernate.type.EncryptedBigDecimalAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBigDecimalType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBigDecimalType.html new file mode 100644 index 00000000..b8b4a1f0 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBigDecimalType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.type.EncryptedBigDecimalType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.type.EncryptedBigDecimalType

+
+No usage of org.jasypt.hibernate.type.EncryptedBigDecimalType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBigIntegerAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBigIntegerAsStringType.html new file mode 100644 index 00000000..34eabfaf --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBigIntegerAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.type.EncryptedBigIntegerAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.type.EncryptedBigIntegerAsStringType

+
+No usage of org.jasypt.hibernate.type.EncryptedBigIntegerAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBigIntegerType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBigIntegerType.html new file mode 100644 index 00000000..aab9f17a --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBigIntegerType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.type.EncryptedBigIntegerType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.type.EncryptedBigIntegerType

+
+No usage of org.jasypt.hibernate.type.EncryptedBigIntegerType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBinaryType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBinaryType.html new file mode 100644 index 00000000..cdcd9198 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBinaryType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.type.EncryptedBinaryType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.type.EncryptedBinaryType

+
+No usage of org.jasypt.hibernate.type.EncryptedBinaryType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBooleanAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBooleanAsStringType.html new file mode 100644 index 00000000..eea3d07c --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedBooleanAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.type.EncryptedBooleanAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.type.EncryptedBooleanAsStringType

+
+No usage of org.jasypt.hibernate.type.EncryptedBooleanAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedByteAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedByteAsStringType.html new file mode 100644 index 00000000..ef8282a5 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedByteAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.type.EncryptedByteAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.type.EncryptedByteAsStringType

+
+No usage of org.jasypt.hibernate.type.EncryptedByteAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedCalendarAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedCalendarAsStringType.html new file mode 100644 index 00000000..1a060f98 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedCalendarAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.type.EncryptedCalendarAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.type.EncryptedCalendarAsStringType

+
+No usage of org.jasypt.hibernate.type.EncryptedCalendarAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedDateAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedDateAsStringType.html new file mode 100644 index 00000000..9431ec55 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedDateAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.type.EncryptedDateAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.type.EncryptedDateAsStringType

+
+No usage of org.jasypt.hibernate.type.EncryptedDateAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedDoubleAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedDoubleAsStringType.html new file mode 100644 index 00000000..f404a69d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedDoubleAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.type.EncryptedDoubleAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.type.EncryptedDoubleAsStringType

+
+No usage of org.jasypt.hibernate.type.EncryptedDoubleAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedFloatAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedFloatAsStringType.html new file mode 100644 index 00000000..9f6203b0 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedFloatAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.type.EncryptedFloatAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.type.EncryptedFloatAsStringType

+
+No usage of org.jasypt.hibernate.type.EncryptedFloatAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedIntegerAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedIntegerAsStringType.html new file mode 100644 index 00000000..6712836f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedIntegerAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.type.EncryptedIntegerAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.type.EncryptedIntegerAsStringType

+
+No usage of org.jasypt.hibernate.type.EncryptedIntegerAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedLongAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedLongAsStringType.html new file mode 100644 index 00000000..6802f019 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedLongAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.type.EncryptedLongAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.type.EncryptedLongAsStringType

+
+No usage of org.jasypt.hibernate.type.EncryptedLongAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedShortAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedShortAsStringType.html new file mode 100644 index 00000000..a3f0fa32 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedShortAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.type.EncryptedShortAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.type.EncryptedShortAsStringType

+
+No usage of org.jasypt.hibernate.type.EncryptedShortAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedStringType.html new file mode 100644 index 00000000..d7598c07 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/EncryptedStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.type.EncryptedStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.type.EncryptedStringType

+
+No usage of org.jasypt.hibernate.type.EncryptedStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/ParameterNaming.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/ParameterNaming.html new file mode 100644 index 00000000..5d12d672 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/class-use/ParameterNaming.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate.type.ParameterNaming (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate.type.ParameterNaming

+
+No usage of org.jasypt.hibernate.type.ParameterNaming +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/package-frame.html new file mode 100644 index 00000000..67417e73 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/package-frame.html @@ -0,0 +1,65 @@ + + + + + + + +org.jasypt.hibernate.type (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.hibernate.type + + + + +
+Classes  + +
+AbstractEncryptedAsStringType +
+EncryptedBigDecimalAsStringType +
+EncryptedBigDecimalType +
+EncryptedBigIntegerAsStringType +
+EncryptedBigIntegerType +
+EncryptedBinaryType +
+EncryptedBooleanAsStringType +
+EncryptedByteAsStringType +
+EncryptedCalendarAsStringType +
+EncryptedDateAsStringType +
+EncryptedDoubleAsStringType +
+EncryptedFloatAsStringType +
+EncryptedIntegerAsStringType +
+EncryptedLongAsStringType +
+EncryptedShortAsStringType +
+EncryptedStringType +
+ParameterNaming
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/package-summary.html new file mode 100644 index 00000000..0db50875 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/package-summary.html @@ -0,0 +1,222 @@ + + + + + + + +org.jasypt.hibernate.type (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.hibernate.type +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Class Summary
AbstractEncryptedAsStringTypeDeprecated. Will be removed in 1.11.
EncryptedBigDecimalAsStringTypeDeprecated. Will be removed in 1.11.
EncryptedBigDecimalTypeDeprecated. Will be removed in 1.11.
EncryptedBigIntegerAsStringTypeDeprecated. Will be removed in 1.11.
EncryptedBigIntegerTypeDeprecated. Will be removed in 1.11.
EncryptedBinaryTypeDeprecated. Will be removed in 1.11.
EncryptedBooleanAsStringTypeDeprecated. Will be removed in 1.11.
EncryptedByteAsStringTypeDeprecated. Will be removed in 1.11.
EncryptedCalendarAsStringTypeDeprecated. Will be removed in 1.11.
EncryptedDateAsStringTypeDeprecated. Will be removed in 1.11.
EncryptedDoubleAsStringTypeDeprecated. Will be removed in 1.11.
EncryptedFloatAsStringTypeDeprecated. Will be removed in 1.11.
EncryptedIntegerAsStringTypeDeprecated. Will be removed in 1.11.
EncryptedLongAsStringTypeDeprecated. Will be removed in 1.11.
EncryptedShortAsStringTypeDeprecated. Will be removed in 1.11.
EncryptedStringTypeDeprecated. Will be removed in 1.11.
ParameterNamingDeprecated. Will be removed in 1.11.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/package-tree.html new file mode 100644 index 00000000..a4d2141a --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/package-tree.html @@ -0,0 +1,160 @@ + + + + + + + +org.jasypt.hibernate.type Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.hibernate.type +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/package-use.html new file mode 100644 index 00000000..0017fa51 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate/type/package-use.html @@ -0,0 +1,172 @@ + + + + + + + +Uses of Package org.jasypt.hibernate.type (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.hibernate.type

+
+ + + + + + + + + +
+Packages that use org.jasypt.hibernate.type
org.jasypt.hibernate.type  
+  +

+ + + + + + + + +
+Classes in org.jasypt.hibernate.type used by org.jasypt.hibernate.type
AbstractEncryptedAsStringType + +
+          Deprecated. Will be removed in 1.11. Package org.jasypt.hibernate.connectionprovider + has been renamed as org.jasypt.hibernate3.connectionprovider.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/EncryptedPasswordC3P0ConnectionProvider.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/EncryptedPasswordC3P0ConnectionProvider.html new file mode 100644 index 00000000..228faeb3 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/EncryptedPasswordC3P0ConnectionProvider.html @@ -0,0 +1,328 @@ + + + + + + + +EncryptedPasswordC3P0ConnectionProvider (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.connectionprovider +
+Class EncryptedPasswordC3P0ConnectionProvider

+
+Object
+  extended by org.hibernate.connection.C3P0ConnectionProvider
+      extended by org.jasypt.hibernate3.connectionprovider.EncryptedPasswordC3P0ConnectionProvider
+
+
+
All Implemented Interfaces:
org.hibernate.connection.ConnectionProvider
+
+
+
+
public final class EncryptedPasswordC3P0ConnectionProvider
extends org.hibernate.connection.C3P0ConnectionProvider
+ + +

+

+ Extension of C3P0ConnectionProvider that allows the user + to write the datasource configuration parameters in an encrypted manner in the + hibernate.cfg.xml or hibernate.properties file +

+

+ The encryptable parameters are: +

    +
  • connection.driver_class
  • +
  • connection.url
  • +
  • connection.username
  • +
  • connection.password
  • +
+

+

+ The name of the password encryptor (decryptor, in fact) will be set in + property hibernate.connection.encryptor_registered_name. + Its value must be the name of a PBEStringEncryptor object + previously registered within HibernatePBEEncryptorRegistry. +

+

+ An example hibernate.cfg.xml file: +

+

+

+  <hibernate-configuration>
+
+    <session-factory>
+
+      
+      <property name="connection.provider_class">org.jasypt.hibernate.connectionprovider.EncryptedPasswordC3P0ConnectionProvider</property>
+      <property name="connection.encryptor_registered_name">stringEncryptor</property>
+      <property name="connection.driver_class">org.postgresql.Driver</property>
+      <property name="connection.url">jdbc:postgresql://localhost/mydatabase</property>
+      <property name="connection.username">myuser</property>
+      <property name="connection.password">ENC(T6DAe34NasW==)</property>
+      <property name="c3p0.min_size">5</property>
+      <property name="c3p0.max_size">20</property>
+      <property name="c3p0.timeout">1800</property>
+      <property name="c3p0.max_statements">50</property>
+      ...
+      
+    </session-factory>
+    
+    ...
+    
+  </hibernate-configuration>
+ 
+

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.connectionprovider since 1.4)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
EncryptedPasswordC3P0ConnectionProvider() + +
+           
+  + + + + + + + + + + + +
+Method Summary
+ voidconfigure(java.util.Properties props) + +
+           
+ + + + + + + +
Methods inherited from class org.hibernate.connection.C3P0ConnectionProvider
close, closeConnection, getConnection
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedPasswordC3P0ConnectionProvider

+
+public EncryptedPasswordC3P0ConnectionProvider()
+
+
+ + + + + + + + +
+Method Detail
+ +

+configure

+
+public void configure(java.util.Properties props)
+
+
+
Specified by:
configure in interface org.hibernate.connection.ConnectionProvider
Overrides:
configure in class org.hibernate.connection.C3P0ConnectionProvider
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/EncryptedPasswordDriverManagerConnectionProvider.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/EncryptedPasswordDriverManagerConnectionProvider.html new file mode 100644 index 00000000..056546c0 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/EncryptedPasswordDriverManagerConnectionProvider.html @@ -0,0 +1,326 @@ + + + + + + + +EncryptedPasswordDriverManagerConnectionProvider (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.connectionprovider +
+Class EncryptedPasswordDriverManagerConnectionProvider

+
+Object
+  extended by org.hibernate.connection.DriverManagerConnectionProvider
+      extended by org.jasypt.hibernate3.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider
+
+
+
All Implemented Interfaces:
org.hibernate.connection.ConnectionProvider
+
+
+
+
public final class EncryptedPasswordDriverManagerConnectionProvider
extends org.hibernate.connection.DriverManagerConnectionProvider
+ + +

+

+ Extension of DriverManagerConnectionProvider that allows the user + to write the datasource configuration parameters in an encrypted manner in the + hibernate.cfg.xml or hibernate.properties file +

+

+ The encryptable parameters are: +

    +
  • connection.driver_class
  • +
  • connection.url
  • +
  • connection.username
  • +
  • connection.password
  • +
+

+

+ The name of the password encryptor (decryptor, in fact) will be set in + property hibernate.connection.encryptor_registered_name. + Its value must be the name of a PBEStringEncryptor object + previously registered within HibernatePBEEncryptorRegistry. +

+

+ An example hibernate.cfg.xml file: +

+

+

+  <hibernate-configuration>
+
+    <session-factory>
+
+      <!-- Database connection settings -->
+      <property name="connection.provider_class">org.jasypt.hibernate.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider</property>
+      <property name="connection.encryptor_registered_name">stringEncryptor</property>
+      <property name="connection.driver_class">org.postgresql.Driver</property>
+      <property name="connection.url">jdbc:postgresql://localhost/mydatabase</property>
+      <property name="connection.username">myuser</property>
+      <property name="connection.password">ENC(T6DAe34NasW==)</property>
+      <property name="connection.pool_size">5</property>
+      
+      ...
+      
+    </session-factory>
+    
+    ...
+    
+  </hibernate-configuration>
+ 
+

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.connectionprovider since 1.4)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
EncryptedPasswordDriverManagerConnectionProvider() + +
+           
+  + + + + + + + + + + + +
+Method Summary
+ voidconfigure(java.util.Properties props) + +
+           
+ + + + + + + +
Methods inherited from class org.hibernate.connection.DriverManagerConnectionProvider
close, closeConnection, finalize, getConnection
+ + + + + + + +
Methods inherited from class Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedPasswordDriverManagerConnectionProvider

+
+public EncryptedPasswordDriverManagerConnectionProvider()
+
+
+ + + + + + + + +
+Method Detail
+ +

+configure

+
+public void configure(java.util.Properties props)
+
+
+
Specified by:
configure in interface org.hibernate.connection.ConnectionProvider
Overrides:
configure in class org.hibernate.connection.DriverManagerConnectionProvider
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/ParameterNaming.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/ParameterNaming.html new file mode 100644 index 00000000..82fc0251 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/ParameterNaming.html @@ -0,0 +1,250 @@ + + + + + + + +ParameterNaming (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.connectionprovider +
+Class ParameterNaming

+
+Object
+  extended by org.jasypt.hibernate3.connectionprovider.ParameterNaming
+
+
+
+
public final class ParameterNaming
extends Object
+ + +

+

+ Constant names of the parameters that can be used by a jasypt's + Hibernate connection provider. +

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.connectionprovider since 1.4)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+static StringENCRYPTOR_REGISTERED_NAME + +
+          Property in hibernate.cfg.xml or + hibernate.properties which contains the registered name + (in HibernatePBEEncryptorRegistry) of the encryptor which + will be used to decrypt the datasource parameters.
+  + + + + + + + +
+Method Summary
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+ENCRYPTOR_REGISTERED_NAME

+
+public static final String ENCRYPTOR_REGISTERED_NAME
+
+
Property in hibernate.cfg.xml or + hibernate.properties which contains the registered name + (in HibernatePBEEncryptorRegistry) of the encryptor which + will be used to decrypt the datasource parameters. +

+

+
See Also:
Constant Field Values
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/class-use/EncryptedPasswordC3P0ConnectionProvider.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/class-use/EncryptedPasswordC3P0ConnectionProvider.html new file mode 100644 index 00000000..11cebe87 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/class-use/EncryptedPasswordC3P0ConnectionProvider.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.connectionprovider.EncryptedPasswordC3P0ConnectionProvider (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.connectionprovider.EncryptedPasswordC3P0ConnectionProvider

+
+No usage of org.jasypt.hibernate3.connectionprovider.EncryptedPasswordC3P0ConnectionProvider +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/class-use/EncryptedPasswordDriverManagerConnectionProvider.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/class-use/EncryptedPasswordDriverManagerConnectionProvider.html new file mode 100644 index 00000000..8c00f83f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/class-use/EncryptedPasswordDriverManagerConnectionProvider.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider

+
+No usage of org.jasypt.hibernate3.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/class-use/ParameterNaming.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/class-use/ParameterNaming.html new file mode 100644 index 00000000..ef18ea79 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/class-use/ParameterNaming.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.connectionprovider.ParameterNaming (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.connectionprovider.ParameterNaming

+
+No usage of org.jasypt.hibernate3.connectionprovider.ParameterNaming +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/package-frame.html new file mode 100644 index 00000000..6e49b608 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/package-frame.html @@ -0,0 +1,37 @@ + + + + + + + +org.jasypt.hibernate3.connectionprovider (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.hibernate3.connectionprovider + + + + +
+Classes  + +
+EncryptedPasswordC3P0ConnectionProvider +
+EncryptedPasswordDriverManagerConnectionProvider +
+ParameterNaming
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/package-summary.html new file mode 100644 index 00000000..bf584a77 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/package-summary.html @@ -0,0 +1,174 @@ + + + + + + + +org.jasypt.hibernate3.connectionprovider (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.hibernate3.connectionprovider +

+ + + + + + + + + + + + + + + + + +
+Class Summary
EncryptedPasswordC3P0ConnectionProvider + Extension of C3P0ConnectionProvider that allows the user + to write the datasource configuration parameters in an encrypted manner in the + hibernate.cfg.xml or hibernate.properties file
EncryptedPasswordDriverManagerConnectionProvider + Extension of DriverManagerConnectionProvider that allows the user + to write the datasource configuration parameters in an encrypted manner in the + hibernate.cfg.xml or hibernate.properties file
ParameterNaming + Constant names of the parameters that can be used by a jasypt's + Hibernate connection provider.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/package-tree.html new file mode 100644 index 00000000..41d2fdea --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/package-tree.html @@ -0,0 +1,160 @@ + + + + + + + +org.jasypt.hibernate3.connectionprovider Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.hibernate3.connectionprovider +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/package-use.html new file mode 100644 index 00000000..77c7f696 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/connectionprovider/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.hibernate3.connectionprovider (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.hibernate3.connectionprovider

+
+No usage of org.jasypt.hibernate3.connectionprovider +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/HibernatePBEBigDecimalEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/HibernatePBEBigDecimalEncryptor.html new file mode 100644 index 00000000..810ec863 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/HibernatePBEBigDecimalEncryptor.html @@ -0,0 +1,611 @@ + + + + + + + +HibernatePBEBigDecimalEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.encryptor +
+Class HibernatePBEBigDecimalEncryptor

+
+Object
+  extended by org.jasypt.hibernate3.encryptor.HibernatePBEBigDecimalEncryptor
+
+
+
+
public final class HibernatePBEBigDecimalEncryptor
extends Object
+ + +

+

+ Placeholder class for PBEBigDecimalEncryptor objects which are + eligible for use from Hibernate. +

+

+ This class acts as a wrapper on a PBEBigDecimalEncryptor, allowing + to be set a registered name (see setRegisteredName(String)) + and performing the needed registry operations against the + HibernatePBEEncryptorRegistry. +

+

+ It is not mandatory that a PBEBigDecimalEncryptor be explicitly set + with setEncryptor(PBEBigDecimalEncryptor). If not, a + StandardPBEBigDecimalEncryptor object will be created internally + and it will be configurable with the + setPassword(String)/setPasswordCharArray(char[]), + setAlgorithm(String), setKeyObtentionIterations(int), + setSaltGenerator(SaltGenerator) + and setConfig(PBEConfig) methods. +

+

+ This class is mainly intended for use from Spring Framework or some other + IoC container (if you are not using a container of this kind, please see + HibernatePBEEncryptorRegistry). The steps to be performed are + the following: +

    +
  1. Create an object of this class (declaring it).
  2. +
  3. Set its registeredName and, either its + wrapped encryptor or its password, + algorithm, keyObtentionIterations, + saltGenerator and config properties.
  4. +
  5. Declare a typedef in a Hibernate mapping giving its + encryptorRegisteredName parameter the same value specified + to this object in registeredName.
  6. +
+

+

+ This in a Spring config file would look like: +

+

+

 
+  ...
+  <-- Optional, as the hibernateEncryptor could be directly set an     -->
+  <-- algorithm and password.                                          -->
+  <bean id="bigDecimalEncryptor"
+    class="org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor">
+    <property name="algorithm">
+        <value>PBEWithMD5AndDES</value>
+    </property>
+    <property name="password">
+        <value>XXXXX</value>
+    </property>
+  </bean>
+  
+  <bean id="hibernateEncryptor"
+    class="org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor">
+    <property name="registeredName">
+        <value>myHibernateBigDecimalEncryptor</value>
+    </property>
+    <property name="encryptor">
+        <ref bean="bigDecimalEncryptor" />
+    </property>
+  </bean>
+  ...
+ 
+

+

+ And then in the Hibernate mapping file: +

+

+

+    <typedef name="encrypted" class="org.jasypt.hibernate.type.EncryptedBigDecimalType">
+      <param name="encryptorRegisteredName">myHibernateBigDecimalEncryptor</param>
+      <param name="decimalScale">2</param>
+    </typedef>
+ 
+

+

+ An important thing to note is that, when using HibernatePBEBigDecimalEncryptor + objects this way to wrap PBEBigDecimalEncryptors, it is not + necessary to deal with HibernatePBEEncryptorRegistry, + because HibernatePBEBigDecimalEncryptor objects get automatically registered + in the encryptor registry when their setRegisteredName(String) + method is called. +

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.encryptor since 1.2)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
HibernatePBEBigDecimalEncryptor() + +
+          Creates a new instance of HibernatePBEBigDecimalEncryptor It also + creates a StandardPBEBigDecimalEncryptor for internal use, which + can be overriden by calling setEncryptor(...).
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.math.BigDecimaldecrypt(java.math.BigDecimal encryptedMessage) + +
+          Decypts a message, delegating to wrapped encryptor
+ java.math.BigDecimalencrypt(java.math.BigDecimal message) + +
+          Encrypts a message, delegating to wrapped encryptor.
+ org.jasypt.encryption.pbe.PBEBigDecimalEncryptorgetEncryptor() + +
+          Returns the encryptor which this object wraps.
+ StringgetRegisteredName() + +
+          Returns the name with which the wrapped encryptor is registered at + the registry.
+ voidsetAlgorithm(String algorithm) + +
+          Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetConfig(org.jasypt.encryption.pbe.config.PBEConfig config) + +
+          Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetEncryptor(org.jasypt.encryption.pbe.PBEBigDecimalEncryptor encryptor) + +
+          Sets the PBEBigDecimalEncryptor to be held (wrapped) by this + object.
+ voidsetKeyObtentionIterations(int keyObtentionIterations) + +
+          Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetPassword(String password) + +
+          Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetPasswordCharArray(char[] password) + +
+          Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetRegisteredName(String registeredName) + +
+          Sets the registered name of the encryptor and adds it to the registry.
+ voidsetSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator) + +
+          Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+HibernatePBEBigDecimalEncryptor

+
+public HibernatePBEBigDecimalEncryptor()
+
+
Creates a new instance of HibernatePBEBigDecimalEncryptor It also + creates a StandardPBEBigDecimalEncryptor for internal use, which + can be overriden by calling setEncryptor(...). +

+

+ + + + + + + + +
+Method Detail
+ +

+getEncryptor

+
+public org.jasypt.encryption.pbe.PBEBigDecimalEncryptor getEncryptor()
+
+
Returns the encryptor which this object wraps. +

+

+ +
Returns:
the encryptor.
+
+
+
+ +

+setEncryptor

+
+public void setEncryptor(org.jasypt.encryption.pbe.PBEBigDecimalEncryptor encryptor)
+
+
Sets the PBEBigDecimalEncryptor to be held (wrapped) by this + object. This method is optional and can be only called once. +

+

+
Parameters:
encryptor - the encryptor.
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+
Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+
Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
Since:
+
1.8
+
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+
Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
algorithm - the algorithm to be set for the internal encryptor
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(int keyObtentionIterations)
+
+
Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
keyObtentionIterations - to be set for the internal encryptor
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator)
+
+
Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
saltGenerator - the salt generator to be set for the internal + encryptor.
+
+
+
+ +

+setConfig

+
+public void setConfig(org.jasypt.encryption.pbe.config.PBEConfig config)
+
+
Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
config - the PBEConfig to be set for the internal encryptor
+
+
+
+ +

+encrypt

+
+public java.math.BigDecimal encrypt(java.math.BigDecimal message)
+
+
Encrypts a message, delegating to wrapped encryptor. +

+

+
Parameters:
message - the message to be encrypted. +
Returns:
the encryption result.
+
+
+
+ +

+decrypt

+
+public java.math.BigDecimal decrypt(java.math.BigDecimal encryptedMessage)
+
+
Decypts a message, delegating to wrapped encryptor +

+

+
Parameters:
encryptedMessage - the message to be decrypted. +
Returns:
the result of decryption.
+
+
+
+ +

+setRegisteredName

+
+public void setRegisteredName(String registeredName)
+
+
Sets the registered name of the encryptor and adds it to the registry. +

+

+
Parameters:
registeredName - the name with which the encryptor will be + registered.
+
+
+
+ +

+getRegisteredName

+
+public String getRegisteredName()
+
+
Returns the name with which the wrapped encryptor is registered at + the registry. +

+

+ +
Returns:
the registered name.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/HibernatePBEBigIntegerEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/HibernatePBEBigIntegerEncryptor.html new file mode 100644 index 00000000..0d156452 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/HibernatePBEBigIntegerEncryptor.html @@ -0,0 +1,610 @@ + + + + + + + +HibernatePBEBigIntegerEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.encryptor +
+Class HibernatePBEBigIntegerEncryptor

+
+Object
+  extended by org.jasypt.hibernate3.encryptor.HibernatePBEBigIntegerEncryptor
+
+
+
+
public final class HibernatePBEBigIntegerEncryptor
extends Object
+ + +

+

+ Placeholder class for PBEBigIntegerEncryptor objects which are + eligible for use from Hibernate. +

+

+ This class acts as a wrapper on a PBEBigIntegerEncryptor, allowing + to be set a registered name (see setRegisteredName(String)) + and performing the needed registry operations against the + HibernatePBEEncryptorRegistry. +

+

+ It is not mandatory that a PBEBigIntegerEncryptor be explicitly set + with setEncryptor(PBEBigIntegerEncryptor). If not, a + StandardPBEBigIntegerEncryptor object will be created internally + and it will be configurable with the + setPassword(String)/setPasswordCharArray(char[]), + setAlgorithm(String), setKeyObtentionIterations(int), + setSaltGenerator(SaltGenerator) + and setConfig(PBEConfig) methods. +

+

+ This class is mainly intended for use from Spring Framework or some other + IoC container (if you are not using a container of this kind, please see + HibernatePBEEncryptorRegistry). The steps to be performed are + the following: +

    +
  1. Create an object of this class (declaring it).
  2. +
  3. Set its registeredName and, either its + wrapped encryptor or its password, + algorithm, keyObtentionIterations, + saltGenerator and config properties.
  4. +
  5. Declare a typedef in a Hibernate mapping giving its + encryptorRegisteredName parameter the same value specified + to this object in registeredName.
  6. +
+

+

+ This in a Spring config file would look like: +

+

+

 
+  ...
+  <-- Optional, as the hibernateEncryptor could be directly set an     -->
+  <-- algorithm and password.                                          -->
+  <bean id="bigIntegerEncryptor"
+    class="org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor">
+    <property name="algorithm">
+        <value>PBEWithMD5AndDES</value>
+    </property>
+    <property name="password">
+        <value>XXXXX</value>
+    </property>
+  </bean>
+  
+  <bean id="hibernateEncryptor"
+    class="org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor">
+    <property name="registeredName">
+        <value>myHibernateBigIntegerEncryptor</value>
+    </property>
+    <property name="encryptor">
+        <ref bean="bigIntegerEncryptor" />
+    </property>
+  </bean>
+  ...
+ 
+

+

+ And then in the Hibernate mapping file: +

+

+

+    <typedef name="encrypted" class="org.jasypt.hibernate.type.EncryptedBigIntegerType">
+      <param name="encryptorRegisteredName">myHibernateBigIntegerEncryptor</param>
+    </typedef>
+ 
+

+

+ An important thing to note is that, when using HibernatePBEBigIntegerEncryptor + objects this way to wrap PBEBigIntegerEncryptors, it is not + necessary to deal with HibernatePBEEncryptorRegistry, + because HibernatePBEBigIntegerEncryptor objects get automatically registered + in the encryptor registry when their setRegisteredName(String) + method is called. +

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.encryptor since 1.2)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
HibernatePBEBigIntegerEncryptor() + +
+          Creates a new instance of HibernatePBEBigIntegerEncryptor It also + creates a StandardPBEBigIntegerEncryptor for internal use, which + can be overriden by calling setEncryptor(...).
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.math.BigIntegerdecrypt(java.math.BigInteger encryptedMessage) + +
+          Decypts a message, delegating to wrapped encryptor
+ java.math.BigIntegerencrypt(java.math.BigInteger message) + +
+          Encrypts a message, delegating to wrapped encryptor.
+ org.jasypt.encryption.pbe.PBEBigIntegerEncryptorgetEncryptor() + +
+          Returns the encryptor which this object wraps.
+ StringgetRegisteredName() + +
+          Returns the name with which the wrapped encryptor is registered at + the registry.
+ voidsetAlgorithm(String algorithm) + +
+          Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetConfig(org.jasypt.encryption.pbe.config.PBEConfig config) + +
+          Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetEncryptor(org.jasypt.encryption.pbe.PBEBigIntegerEncryptor encryptor) + +
+          Sets the PBEBigIntegerEncryptor to be held (wrapped) by this + object.
+ voidsetKeyObtentionIterations(int keyObtentionIterations) + +
+          Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetPassword(String password) + +
+          Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetPasswordCharArray(char[] password) + +
+          Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetRegisteredName(String registeredName) + +
+          Sets the registered name of the encryptor and adds it to the registry.
+ voidsetSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator) + +
+          Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+HibernatePBEBigIntegerEncryptor

+
+public HibernatePBEBigIntegerEncryptor()
+
+
Creates a new instance of HibernatePBEBigIntegerEncryptor It also + creates a StandardPBEBigIntegerEncryptor for internal use, which + can be overriden by calling setEncryptor(...). +

+

+ + + + + + + + +
+Method Detail
+ +

+getEncryptor

+
+public org.jasypt.encryption.pbe.PBEBigIntegerEncryptor getEncryptor()
+
+
Returns the encryptor which this object wraps. +

+

+ +
Returns:
the encryptor.
+
+
+
+ +

+setEncryptor

+
+public void setEncryptor(org.jasypt.encryption.pbe.PBEBigIntegerEncryptor encryptor)
+
+
Sets the PBEBigIntegerEncryptor to be held (wrapped) by this + object. This method is optional and can be only called once. +

+

+
Parameters:
encryptor - the encryptor.
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+
Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+
Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
Since:
+
1.8
+
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+
Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
algorithm - the algorithm to be set for the internal encryptor
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(int keyObtentionIterations)
+
+
Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
keyObtentionIterations - to be set for the internal encryptor
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator)
+
+
Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
saltGenerator - the salt generator to be set for the internal + encryptor.
+
+
+
+ +

+setConfig

+
+public void setConfig(org.jasypt.encryption.pbe.config.PBEConfig config)
+
+
Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
config - the PBEConfig to be set for the internal encryptor
+
+
+
+ +

+encrypt

+
+public java.math.BigInteger encrypt(java.math.BigInteger message)
+
+
Encrypts a message, delegating to wrapped encryptor. +

+

+
Parameters:
message - the message to be encrypted. +
Returns:
the encryption result.
+
+
+
+ +

+decrypt

+
+public java.math.BigInteger decrypt(java.math.BigInteger encryptedMessage)
+
+
Decypts a message, delegating to wrapped encryptor +

+

+
Parameters:
encryptedMessage - the message to be decrypted. +
Returns:
the result of decryption.
+
+
+
+ +

+setRegisteredName

+
+public void setRegisteredName(String registeredName)
+
+
Sets the registered name of the encryptor and adds it to the registry. +

+

+
Parameters:
registeredName - the name with which the encryptor will be + registered.
+
+
+
+ +

+getRegisteredName

+
+public String getRegisteredName()
+
+
Returns the name with which the wrapped encryptor is registered at + the registry. +

+

+ +
Returns:
the registered name.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/HibernatePBEByteEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/HibernatePBEByteEncryptor.html new file mode 100644 index 00000000..cab32125 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/HibernatePBEByteEncryptor.html @@ -0,0 +1,610 @@ + + + + + + + +HibernatePBEByteEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.encryptor +
+Class HibernatePBEByteEncryptor

+
+Object
+  extended by org.jasypt.hibernate3.encryptor.HibernatePBEByteEncryptor
+
+
+
+
public final class HibernatePBEByteEncryptor
extends Object
+ + +

+

+ Placeholder class for PBEByteEncryptor objects which are + eligible for use from Hibernate. +

+

+ This class acts as a wrapper on a PBEByteEncryptor, allowing + to be set a registered name (see setRegisteredName(String)) + and performing the needed registry operations against the + HibernatePBEEncryptorRegistry. +

+

+ It is not mandatory that a PBEByteEncryptor be explicitly set + with setEncryptor(PBEByteEncryptor). If not, a + StandardPBEByteEncryptor object will be created internally + and it will be configurable with the + setPassword(String)/setPasswordCharArray(char[]), + setAlgorithm(String), setKeyObtentionIterations(int), + setSaltGenerator(SaltGenerator) + and setConfig(PBEConfig) methods. +

+

+ This class is mainly intended for use from Spring Framework or some other + IoC container (if you are not using a container of this kind, please see + HibernatePBEEncryptorRegistry). The steps to be performed are + the following: +

    +
  1. Create an object of this class (declaring it).
  2. +
  3. Set its registeredName and, either its + wrapped encryptor or its password, + algorithm, keyObtentionIterations, + saltGenerator and config properties.
  4. +
  5. Declare a typedef in a Hibernate mapping giving its + encryptorRegisteredName parameter the same value specified + to this object in registeredName.
  6. +
+

+

+ This in a Spring config file would look like: +

+

+

 
+  ...
+  <-- Optional, as the hibernateEncryptor could be directly set an     -->
+  <-- algorithm and password.                                          -->
+  <bean id="byteEncryptor"
+    class="org.jasypt.encryption.pbe.StandardPBEByteEncryptor">
+    <property name="algorithm">
+        <value>PBEWithMD5AndDES</value>
+    </property>
+    <property name="password">
+        <value>XXXXX</value>
+    </property>
+  </bean>
+  
+  <bean id="hibernateEncryptor"
+    class="org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor">
+    <property name="registeredName">
+        <value>myHibernateByteEncryptor</value>
+    </property>
+    <property name="encryptor">
+        <ref bean="byteEncryptor" />
+    </property>
+  </bean>
+  ...
+ 
+

+

+ And then in the Hibernate mapping file: +

+

+

+    <typedef name="encrypted" class="org.jasypt.hibernate.type.EncryptedBinaryType">
+      <param name="encryptorRegisteredName">myHibernateByteEncryptor</param>
+    </typedef>
+ 
+

+

+ An important thing to note is that, when using HibernatePBEByteEncryptor + objects this way to wrap PBEByteEncryptors, it is not + necessary to deal with HibernatePBEEncryptorRegistry, + because HibernatePBEByteEncryptor objects get automatically registered + in the encryptor registry when their setRegisteredName(String) + method is called. +

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.encryptor since 1.2)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
HibernatePBEByteEncryptor() + +
+          Creates a new instance of HibernatePBEByteEncryptor It also + creates a StandardPBEByteEncryptor for internal use, which + can be overriden by calling setEncryptor(...).
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ byte[]decrypt(byte[] encryptedMessage) + +
+          Decypts a message, delegating to wrapped encryptor
+ byte[]encrypt(byte[] message) + +
+          Encrypts a message, delegating to wrapped encryptor.
+ org.jasypt.encryption.pbe.PBEByteEncryptorgetEncryptor() + +
+          Returns the encryptor which this object wraps.
+ StringgetRegisteredName() + +
+          Returns the name with which the wrapped encryptor is registered at + the registry.
+ voidsetAlgorithm(String algorithm) + +
+          Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetConfig(org.jasypt.encryption.pbe.config.PBEConfig config) + +
+          Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetEncryptor(org.jasypt.encryption.pbe.PBEByteEncryptor encryptor) + +
+          Sets the PBEByteEncryptor to be held (wrapped) by this + object.
+ voidsetKeyObtentionIterations(int keyObtentionIterations) + +
+          Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetPassword(String password) + +
+          Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetPasswordCharArray(char[] password) + +
+          Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetRegisteredName(String registeredName) + +
+          Sets the registered name of the encryptor and adds it to the registry.
+ voidsetSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator) + +
+          Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+HibernatePBEByteEncryptor

+
+public HibernatePBEByteEncryptor()
+
+
Creates a new instance of HibernatePBEByteEncryptor It also + creates a StandardPBEByteEncryptor for internal use, which + can be overriden by calling setEncryptor(...). +

+

+ + + + + + + + +
+Method Detail
+ +

+getEncryptor

+
+public org.jasypt.encryption.pbe.PBEByteEncryptor getEncryptor()
+
+
Returns the encryptor which this object wraps. +

+

+ +
Returns:
the encryptor.
+
+
+
+ +

+setEncryptor

+
+public void setEncryptor(org.jasypt.encryption.pbe.PBEByteEncryptor encryptor)
+
+
Sets the PBEByteEncryptor to be held (wrapped) by this + object. This method is optional and can be only called once. +

+

+
Parameters:
encryptor - the encryptor.
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+
Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+
Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
Since:
+
1.8
+
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+
Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
algorithm - the algorithm to be set for the internal encryptor
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(int keyObtentionIterations)
+
+
Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
keyObtentionIterations - to be set for the internal encryptor
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator)
+
+
Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
saltGenerator - the salt generator to be set for the internal + encryptor.
+
+
+
+ +

+setConfig

+
+public void setConfig(org.jasypt.encryption.pbe.config.PBEConfig config)
+
+
Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
config - the PBEConfig to be set for the internal encryptor
+
+
+
+ +

+encrypt

+
+public byte[] encrypt(byte[] message)
+
+
Encrypts a message, delegating to wrapped encryptor. +

+

+
Parameters:
message - the message to be encrypted. +
Returns:
the encryption result.
+
+
+
+ +

+decrypt

+
+public byte[] decrypt(byte[] encryptedMessage)
+
+
Decypts a message, delegating to wrapped encryptor +

+

+
Parameters:
encryptedMessage - the message to be decrypted. +
Returns:
the result of decryption.
+
+
+
+ +

+setRegisteredName

+
+public void setRegisteredName(String registeredName)
+
+
Sets the registered name of the encryptor and adds it to the registry. +

+

+
Parameters:
registeredName - the name with which the encryptor will be + registered.
+
+
+
+ +

+getRegisteredName

+
+public String getRegisteredName()
+
+
Returns the name with which the wrapped encryptor is registered at + the registry. +

+

+ +
Returns:
the registered name.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/HibernatePBEEncryptorRegistry.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/HibernatePBEEncryptorRegistry.html new file mode 100644 index 00000000..e21ab498 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/HibernatePBEEncryptorRegistry.html @@ -0,0 +1,491 @@ + + + + + + + +HibernatePBEEncryptorRegistry (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.encryptor +
+Class HibernatePBEEncryptorRegistry

+
+Object
+  extended by org.jasypt.hibernate3.encryptor.HibernatePBEEncryptorRegistry
+
+
+
+
public final class HibernatePBEEncryptorRegistry
extends Object
+ + +

+

+ Registry for all the PBE*Encryptor which are eligible for + use from Hibernate. +

+

+ This class is intended to be directly used in applications where + an IoC container (like Spring Framework) is not present. If it is, + it is better to use the HibernatePBE*Encryptor classes + directly, instead. +

+

+ This registry is a singleton which maintains a registry + of PBE*Encryptor objects which can be used from Hibernate, + by using its registeredName to reference them from mappings. +

+

+ The steps would be: +

    +
  1. Obtain the registry instance (getInstance()).
  2. +
  3. Register the encryptor, giving it a registered name + (registerPBE*Encryptor(String, PBE*Encryptor).
  4. +
  5. Declare a typedef in a Hibernate mapping giving its + encryptorRegisteredName parameter the same value specified + when registering the encryptor.
  6. +
+

+

+ This is, first register the encryptor (example with a String encryptor): +

+

+

+  StandardPBEStringEncryptor myEncryptor = new StandardPBEStringEncryptor();
+  ...
+  HibernatePBEEncryptorRegistry registry =
+      HibernatePBEEncryptorRegistry.getInstance();
+  registry.registerPBEStringEncryptor("myHibernateEncryptor", myEncryptor);
+ 
+

+

+ And then, reference it from a Hibernate mapping file: +

+

+

+    <typedef name="encryptedString" class="org.jasypt.hibernate.type.EncryptedStringType">
+      <param name="encryptorRegisteredName">myHibernateEncryptor</param>
+    </typedef>
+ 
+

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.encryptor since 1.2)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+static HibernatePBEEncryptorRegistrygetInstance() + +
+          Returns the singleton instance of the registry.
+ org.jasypt.encryption.pbe.PBEBigDecimalEncryptorgetPBEBigDecimalEncryptor(String registeredName) + +
+          Returns the PBEBigDecimalEncryptor registered with the specified + name (if exists).
+ org.jasypt.encryption.pbe.PBEBigIntegerEncryptorgetPBEBigIntegerEncryptor(String registeredName) + +
+          Returns the PBEBigIntegerEncryptor registered with the specified + name (if exists).
+ org.jasypt.encryption.pbe.PBEByteEncryptorgetPBEByteEncryptor(String registeredName) + +
+          Returns the PBEByteEncryptor registered with the specified + name (if exists).
+ org.jasypt.encryption.pbe.PBEStringEncryptorgetPBEStringEncryptor(String registeredName) + +
+          Returns the PBEStringEncryptor registered with the specified + name (if exists).
+ voidregisterPBEBigDecimalEncryptor(String registeredName, + org.jasypt.encryption.pbe.PBEBigDecimalEncryptor encryptor) + +
+          Registers a PBEBigDecimalEncryptor object with the specified + name.
+ voidregisterPBEBigIntegerEncryptor(String registeredName, + org.jasypt.encryption.pbe.PBEBigIntegerEncryptor encryptor) + +
+          Registers a PBEBigIntegerEncryptor object with the specified + name.
+ voidregisterPBEByteEncryptor(String registeredName, + org.jasypt.encryption.pbe.PBEByteEncryptor encryptor) + +
+          Registers a PBEByteEncryptor object with the specified + name.
+ voidregisterPBEStringEncryptor(String registeredName, + org.jasypt.encryption.pbe.PBEStringEncryptor encryptor) + +
+          Registers a PBEStringEncryptor object with the specified + name.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Method Detail
+ +

+getInstance

+
+public static HibernatePBEEncryptorRegistry getInstance()
+
+
Returns the singleton instance of the registry. +

+

+ +
Returns:
the registry.
+
+
+
+ +

+registerPBEStringEncryptor

+
+public void registerPBEStringEncryptor(String registeredName,
+                                       org.jasypt.encryption.pbe.PBEStringEncryptor encryptor)
+
+
Registers a PBEStringEncryptor object with the specified + name. +

+

+
Parameters:
registeredName - the registered name.
encryptor - the encryptor to be registered.
+
+
+
+ +

+getPBEStringEncryptor

+
+public org.jasypt.encryption.pbe.PBEStringEncryptor getPBEStringEncryptor(String registeredName)
+
+
Returns the PBEStringEncryptor registered with the specified + name (if exists). +

+

+
Parameters:
registeredName - the name with which the desired encryptor was + registered. +
Returns:
the encryptor, or null if no encryptor has been registered with + that name.
+
+
+
+ +

+registerPBEBigIntegerEncryptor

+
+public void registerPBEBigIntegerEncryptor(String registeredName,
+                                           org.jasypt.encryption.pbe.PBEBigIntegerEncryptor encryptor)
+
+
Registers a PBEBigIntegerEncryptor object with the specified + name. +

+

+
Parameters:
registeredName - the registered name.
encryptor - the encryptor to be registered.
Since:
+
1.6
+
+
+
+
+ +

+getPBEBigIntegerEncryptor

+
+public org.jasypt.encryption.pbe.PBEBigIntegerEncryptor getPBEBigIntegerEncryptor(String registeredName)
+
+
Returns the PBEBigIntegerEncryptor registered with the specified + name (if exists). +

+

+
Parameters:
registeredName - the name with which the desired encryptor was + registered. +
Returns:
the encryptor, or null if no encryptor has been registered with + that name.
+
+
+
+ +

+registerPBEBigDecimalEncryptor

+
+public void registerPBEBigDecimalEncryptor(String registeredName,
+                                           org.jasypt.encryption.pbe.PBEBigDecimalEncryptor encryptor)
+
+
Registers a PBEBigDecimalEncryptor object with the specified + name. +

+

+
Parameters:
registeredName - the registered name.
encryptor - the encryptor to be registered.
Since:
+
1.6
+
+
+
+
+ +

+getPBEBigDecimalEncryptor

+
+public org.jasypt.encryption.pbe.PBEBigDecimalEncryptor getPBEBigDecimalEncryptor(String registeredName)
+
+
Returns the PBEBigDecimalEncryptor registered with the specified + name (if exists). +

+

+
Parameters:
registeredName - the name with which the desired encryptor was + registered. +
Returns:
the encryptor, or null if no encryptor has been registered with + that name.
+
+
+
+ +

+registerPBEByteEncryptor

+
+public void registerPBEByteEncryptor(String registeredName,
+                                     org.jasypt.encryption.pbe.PBEByteEncryptor encryptor)
+
+
Registers a PBEByteEncryptor object with the specified + name. +

+

+
Parameters:
registeredName - the registered name.
encryptor - the encryptor to be registered.
Since:
+
1.6
+
+
+
+
+ +

+getPBEByteEncryptor

+
+public org.jasypt.encryption.pbe.PBEByteEncryptor getPBEByteEncryptor(String registeredName)
+
+
Returns the PBEByteEncryptor registered with the specified + name (if exists). +

+

+
Parameters:
registeredName - the name with which the desired encryptor was + registered. +
Returns:
the encryptor, or null if no encryptor has been registered with + that name.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/HibernatePBEStringEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/HibernatePBEStringEncryptor.html new file mode 100644 index 00000000..ac593237 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/HibernatePBEStringEncryptor.html @@ -0,0 +1,686 @@ + + + + + + + +HibernatePBEStringEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.encryptor +
+Class HibernatePBEStringEncryptor

+
+Object
+  extended by org.jasypt.hibernate3.encryptor.HibernatePBEStringEncryptor
+
+
+
+
public final class HibernatePBEStringEncryptor
extends Object
+ + +

+

+ Placeholder class for PBEStringEncryptor objects which are + eligible for use from Hibernate. +

+

+ This class acts as a wrapper on a PBEStringEncryptor, allowing + to be set a registered name (see setRegisteredName(String)) + and performing the needed registry operations against the + HibernatePBEEncryptorRegistry. +

+

+ It is not mandatory that a PBEStringEncryptor be explicitly set + with setEncryptor(PBEStringEncryptor). If not, a + StandardPBEStringEncryptor object will be created internally + and it will be configurable with the + setPassword(String)/setPasswordCharArray(char[]), + setAlgorithm(String), setKeyObtentionIterations(int), + setSaltGenerator(SaltGenerator), setProviderName(String), + setProvider(Provider), setStringOutputType(String) + and setConfig(PBEConfig) methods. +

+

+ This class is mainly intended for use from Spring Framework or some other + IoC container (if you are not using a container of this kind, please see + HibernatePBEEncryptorRegistry). The steps to be performed are + the following: +

    +
  1. Create an object of this class (declaring it).
  2. +
  3. Set its registeredName and, either its + wrapped encryptor or its password, + algorithm, keyObtentionIterations, + saltGenerator and config properties.
  4. +
  5. Declare a typedef in a Hibernate mapping giving its + encryptorRegisteredName parameter the same value specified + to this object in registeredName.
  6. +
+

+

+ This in a Spring config file would look like: +

+

+

+  ...
+  <-- Optional, as the hibernateEncryptor could be directly set an     -->
+  <-- algorithm and password.                                          -->
+  <bean id="stringEncryptor"
+    class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
+    <property name="algorithm">
+        <value>PBEWithMD5AndDES</value>
+    </property>
+    <property name="password">
+        <value>XXXXX</value>
+    </property>
+  </bean>
+  
+  <bean id="hibernateEncryptor"
+    class="org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor">
+    <property name="registeredName">
+        <value>myHibernateStringEncryptor</value>
+    </property>
+    <property name="encryptor">
+        <ref bean="stringEncryptor" />
+    </property>
+  </bean>
+  ...
+ 
+

+

+ And then in the Hibernate mapping file: +

+

+

+    <typedef name="encrypted" class="org.jasypt.hibernate.type.EncryptedStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+ 
+

+

+ An important thing to note is that, when using HibernatePBEStringEncryptor + objects this way to wrap PBEStringEncryptors, it is not + necessary to deal with HibernatePBEEncryptorRegistry, + because HibernatePBEStringEncryptor objects get automatically registered + in the encryptor registry when their setRegisteredName(String) + method is called. +

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.encryptor since 1.2)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
HibernatePBEStringEncryptor() + +
+          Creates a new instance of HibernatePBEStringEncryptor.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Stringdecrypt(String encryptedMessage) + +
+          Decypts a message, delegating to wrapped encryptor
+ Stringencrypt(String message) + +
+          Encrypts a message, delegating to wrapped encryptor.
+ org.jasypt.encryption.pbe.PBEStringEncryptorgetEncryptor() + +
+          Returns the encryptor which this object wraps.
+ StringgetRegisteredName() + +
+          Returns the name with which the wrapped encryptor is registered at + the registry.
+ voidsetAlgorithm(String algorithm) + +
+          Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetConfig(org.jasypt.encryption.pbe.config.PBEConfig config) + +
+          Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetEncryptor(org.jasypt.encryption.pbe.PBEStringEncryptor encryptor) + +
+          Sets the PBEStringEncryptor to be held (wrapped) by this + object.
+ voidsetKeyObtentionIterations(int keyObtentionIterations) + +
+          Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetPassword(String password) + +
+          Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetPasswordCharArray(char[] password) + +
+          Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetProvider(java.security.Provider provider) + +
+          Sets the JCE provider to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetProviderName(String providerName) + +
+          Sets the name of the JCE provider to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetRegisteredName(String registeredName) + +
+          Sets the registered name of the encryptor and adds it to the registry.
+ voidsetSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator) + +
+          Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetStringOutputType(String stringOutputType) + +
+          Sets the type of String output ("base64" (default), "hexadecimal") to + be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+HibernatePBEStringEncryptor

+
+public HibernatePBEStringEncryptor()
+
+
Creates a new instance of HibernatePBEStringEncryptor. It also + creates a StandardPBEStringEncryptor for internal use, which + can be overriden by calling setEncryptor(...). +

+

+ + + + + + + + +
+Method Detail
+ +

+getEncryptor

+
+public org.jasypt.encryption.pbe.PBEStringEncryptor getEncryptor()
+
+
Returns the encryptor which this object wraps. +

+

+ +
Returns:
the encryptor.
+
+
+
+ +

+setEncryptor

+
+public void setEncryptor(org.jasypt.encryption.pbe.PBEStringEncryptor encryptor)
+
+
Sets the PBEStringEncryptor to be held (wrapped) by this + object. This method is optional and can be only called once. +

+

+
Parameters:
encryptor - the encryptor.
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+
Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+
Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
Since:
+
1.8
+
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+
Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
algorithm - the algorithm to be set for the internal encryptor
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(int keyObtentionIterations)
+
+
Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
keyObtentionIterations - to be set for the internal encryptor
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator)
+
+
Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
saltGenerator - the salt generator to be set for the internal + encryptor.
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+
Sets the name of the JCE provider to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
providerName - the name of the JCE provider (already registered)
Since:
+
1.3
+
+
+
+
+ +

+setProvider

+
+public void setProvider(java.security.Provider provider)
+
+
Sets the JCE provider to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
provider - the JCE provider to be used
Since:
+
1.3
+
+
+
+
+ +

+setStringOutputType

+
+public void setStringOutputType(String stringOutputType)
+
+
Sets the type of String output ("base64" (default), "hexadecimal") to + be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
stringOutputType - the type of String output
Since:
+
1.3
+
+
+
+
+ +

+setConfig

+
+public void setConfig(org.jasypt.encryption.pbe.config.PBEConfig config)
+
+
Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
config - the PBEConfig to be set for the internal encryptor
+
+
+
+ +

+encrypt

+
+public String encrypt(String message)
+
+
Encrypts a message, delegating to wrapped encryptor. +

+

+
Parameters:
message - the message to be encrypted. +
Returns:
the encryption result.
+
+
+
+ +

+decrypt

+
+public String decrypt(String encryptedMessage)
+
+
Decypts a message, delegating to wrapped encryptor +

+

+
Parameters:
encryptedMessage - the message to be decrypted. +
Returns:
the result of decryption.
+
+
+
+ +

+setRegisteredName

+
+public void setRegisteredName(String registeredName)
+
+
Sets the registered name of the encryptor and adds it to the registry. +

+

+
Parameters:
registeredName - the name with which the encryptor will be + registered.
+
+
+
+ +

+getRegisteredName

+
+public String getRegisteredName()
+
+
Returns the name with which the wrapped encryptor is registered at + the registry. +

+

+ +
Returns:
the registered name.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/class-use/HibernatePBEBigDecimalEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/class-use/HibernatePBEBigDecimalEncryptor.html new file mode 100644 index 00000000..4bfb1548 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/class-use/HibernatePBEBigDecimalEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.encryptor.HibernatePBEBigDecimalEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.encryptor.HibernatePBEBigDecimalEncryptor

+
+No usage of org.jasypt.hibernate3.encryptor.HibernatePBEBigDecimalEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/class-use/HibernatePBEBigIntegerEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/class-use/HibernatePBEBigIntegerEncryptor.html new file mode 100644 index 00000000..6e5a37f0 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/class-use/HibernatePBEBigIntegerEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.encryptor.HibernatePBEBigIntegerEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.encryptor.HibernatePBEBigIntegerEncryptor

+
+No usage of org.jasypt.hibernate3.encryptor.HibernatePBEBigIntegerEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/class-use/HibernatePBEByteEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/class-use/HibernatePBEByteEncryptor.html new file mode 100644 index 00000000..7825bf7d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/class-use/HibernatePBEByteEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.encryptor.HibernatePBEByteEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.encryptor.HibernatePBEByteEncryptor

+
+No usage of org.jasypt.hibernate3.encryptor.HibernatePBEByteEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/class-use/HibernatePBEEncryptorRegistry.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/class-use/HibernatePBEEncryptorRegistry.html new file mode 100644 index 00000000..48c52c3b --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/class-use/HibernatePBEEncryptorRegistry.html @@ -0,0 +1,181 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.encryptor.HibernatePBEEncryptorRegistry (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.encryptor.HibernatePBEEncryptorRegistry

+
+ + + + + + + + + +
+Packages that use HibernatePBEEncryptorRegistry
org.jasypt.hibernate3.encryptor  
+  +

+ + + + + +
+Uses of HibernatePBEEncryptorRegistry in org.jasypt.hibernate3.encryptor
+  +

+ + + + + + + + + +
Methods in org.jasypt.hibernate3.encryptor that return HibernatePBEEncryptorRegistry
+static HibernatePBEEncryptorRegistryHibernatePBEEncryptorRegistry.getInstance() + +
+          Returns the singleton instance of the registry.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/class-use/HibernatePBEStringEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/class-use/HibernatePBEStringEncryptor.html new file mode 100644 index 00000000..1e3663fa --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/class-use/HibernatePBEStringEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.encryptor.HibernatePBEStringEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.encryptor.HibernatePBEStringEncryptor

+
+No usage of org.jasypt.hibernate3.encryptor.HibernatePBEStringEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/package-frame.html new file mode 100644 index 00000000..fe866d59 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/package-frame.html @@ -0,0 +1,41 @@ + + + + + + + +org.jasypt.hibernate3.encryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.hibernate3.encryptor + + + + +
+Classes  + +
+HibernatePBEBigDecimalEncryptor +
+HibernatePBEBigIntegerEncryptor +
+HibernatePBEByteEncryptor +
+HibernatePBEEncryptorRegistry +
+HibernatePBEStringEncryptor
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/package-summary.html new file mode 100644 index 00000000..888edfbb --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/package-summary.html @@ -0,0 +1,184 @@ + + + + + + + +org.jasypt.hibernate3.encryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.hibernate3.encryptor +

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Class Summary
HibernatePBEBigDecimalEncryptor + Placeholder class for PBEBigDecimalEncryptor objects which are + eligible for use from Hibernate.
HibernatePBEBigIntegerEncryptor + Placeholder class for PBEBigIntegerEncryptor objects which are + eligible for use from Hibernate.
HibernatePBEByteEncryptor + Placeholder class for PBEByteEncryptor objects which are + eligible for use from Hibernate.
HibernatePBEEncryptorRegistry + Registry for all the PBE*Encryptor which are eligible for + use from Hibernate.
HibernatePBEStringEncryptor + Placeholder class for PBEStringEncryptor objects which are + eligible for use from Hibernate.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/package-tree.html new file mode 100644 index 00000000..bac2e8d7 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/package-tree.html @@ -0,0 +1,154 @@ + + + + + + + +org.jasypt.hibernate3.encryptor Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.hibernate3.encryptor +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/package-use.html new file mode 100644 index 00000000..50038912 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/encryptor/package-use.html @@ -0,0 +1,173 @@ + + + + + + + +Uses of Package org.jasypt.hibernate3.encryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.hibernate3.encryptor

+
+ + + + + + + + + +
+Packages that use org.jasypt.hibernate3.encryptor
org.jasypt.hibernate3.encryptor  
+  +

+ + + + + + + + +
+Classes in org.jasypt.hibernate3.encryptor used by org.jasypt.hibernate3.encryptor
HibernatePBEEncryptorRegistry + +
+           + Registry for all the PBE*Encryptor which are eligible for + use from Hibernate.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/AbstractEncryptedAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/AbstractEncryptedAsStringType.html new file mode 100644 index 00000000..500c58db --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/AbstractEncryptedAsStringType.html @@ -0,0 +1,668 @@ + + + + + + + +AbstractEncryptedAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.type +
+Class AbstractEncryptedAsStringType

+
+Object
+  extended by org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
Direct Known Subclasses:
EncryptedBigDecimalAsStringType, EncryptedBigIntegerAsStringType, EncryptedBooleanAsStringType, EncryptedByteAsStringType, EncryptedCalendarAsStringType, EncryptedDateAsStringType, EncryptedDoubleAsStringType, EncryptedFloatAsStringType, EncryptedIntegerAsStringType, EncryptedLongAsStringType, EncryptedShortAsStringType, EncryptedStringType
+
+
+
+
public abstract class AbstractEncryptedAsStringType
extends Object
implements org.hibernate.usertype.UserType, org.hibernate.usertype.ParameterizedType
+ + +

+Base class for Hibernate UserTypes to store + values as encrypted strings. +

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.type since 1.2)
+
Author:
+
Daniel Fernández, Iván García Sáinz-Aja
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+protected  org.jasypt.encryption.pbe.PBEStringEncryptorencryptor + +
+           
+  + + + + + + + + + + +
+Constructor Summary
AbstractEncryptedAsStringType() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Objectassemble(java.io.Serializable cached, + Object owner) + +
+           
+protected  voidcheckInitialization() + +
+           
+protected abstract  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+protected  StringconvertToString(Object object) + +
+          Converts given Object to its String form.
+ ObjectdeepCopy(Object value) + +
+           
+ java.io.Serializabledisassemble(Object value) + +
+           
+ booleanequals(Object x, + Object y) + +
+           
+ inthashCode(Object x) + +
+           
+ booleanisMutable() + +
+           
+ ObjectnullSafeGet(java.sql.ResultSet rs, + String[] names, + Object owner) + +
+           
+ voidnullSafeSet(java.sql.PreparedStatement st, + Object value, + int index) + +
+           
+ Objectreplace(Object original, + Object target, + Object owner) + +
+           
+abstract  ClassreturnedClass() + +
+           
+ voidsetParameterValues(java.util.Properties parameters) + +
+           
+ int[]sqlTypes() + +
+           
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+encryptor

+
+protected org.jasypt.encryption.pbe.PBEStringEncryptor encryptor
+
+
+
+
+ + + + + + + + +
+Constructor Detail
+ +

+AbstractEncryptedAsStringType

+
+public AbstractEncryptedAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected abstract Object convertToObject(String string)
+
+
Converts given String to its Object form. +

+

+
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
+
+
+
+ +

+convertToString

+
+protected String convertToString(Object object)
+
+
Converts given Object to its String form. +

+

+
+
+
+
Parameters:
object - the object value +
Returns:
the string form of the passes Object
+
+
+
+ +

+sqlTypes

+
+public final int[] sqlTypes()
+
+
+
Specified by:
sqlTypes in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+returnedClass

+
+public abstract Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+equals

+
+public final boolean equals(Object x,
+                            Object y)
+                     throws org.hibernate.HibernateException
+
+
+
Specified by:
equals in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+deepCopy

+
+public final Object deepCopy(Object value)
+                      throws org.hibernate.HibernateException
+
+
+
Specified by:
deepCopy in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+assemble

+
+public final Object assemble(java.io.Serializable cached,
+                             Object owner)
+                      throws org.hibernate.HibernateException
+
+
+
Specified by:
assemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+disassemble

+
+public final java.io.Serializable disassemble(Object value)
+                                       throws org.hibernate.HibernateException
+
+
+
Specified by:
disassemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+isMutable

+
+public final boolean isMutable()
+
+
+
Specified by:
isMutable in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+hashCode

+
+public final int hashCode(Object x)
+                   throws org.hibernate.HibernateException
+
+
+
Specified by:
hashCode in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+replace

+
+public final Object replace(Object original,
+                            Object target,
+                            Object owner)
+                     throws org.hibernate.HibernateException
+
+
+
Specified by:
replace in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+nullSafeGet

+
+public final Object nullSafeGet(java.sql.ResultSet rs,
+                                String[] names,
+                                Object owner)
+                         throws org.hibernate.HibernateException,
+                                java.sql.SQLException
+
+
+
Specified by:
nullSafeGet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+nullSafeSet

+
+public final void nullSafeSet(java.sql.PreparedStatement st,
+                              Object value,
+                              int index)
+                       throws org.hibernate.HibernateException,
+                              java.sql.SQLException
+
+
+
Specified by:
nullSafeSet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+setParameterValues

+
+public void setParameterValues(java.util.Properties parameters)
+
+
+
Specified by:
setParameterValues in interface org.hibernate.usertype.ParameterizedType
+
+
+
+
+
+
+ +

+checkInitialization

+
+protected final void checkInitialization()
+
+
+
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBigDecimalAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBigDecimalAsStringType.html new file mode 100644 index 00000000..e46292b0 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBigDecimalAsStringType.html @@ -0,0 +1,389 @@ + + + + + + + +EncryptedBigDecimalAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.type +
+Class EncryptedBigDecimalAsStringType

+
+Object
+  extended by org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate3.type.EncryptedBigDecimalAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedBigDecimalAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of BigDecimal values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigDecimalAsString" class="org.jasypt.hibernate.type.EncryptedBigDecimalAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedBigDecimalAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigDecimalAsString" class="org.jasypt.hibernate.type.EncryptedBigDecimalAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedBigDecimalAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.type since 1.2)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedBigDecimalAsStringType() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+ ClassreturnedClass() + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedBigDecimalAsStringType

+
+public EncryptedBigDecimalAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBigDecimalType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBigDecimalType.html new file mode 100644 index 00000000..6e75fbf1 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBigDecimalType.html @@ -0,0 +1,643 @@ + + + + + + + +EncryptedBigDecimalType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.type +
+Class EncryptedBigDecimalType

+
+Object
+  extended by org.jasypt.hibernate3.type.EncryptedBigDecimalType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedBigDecimalType
extends Object
implements org.hibernate.usertype.UserType, org.hibernate.usertype.ParameterizedType
+ + +

+

+ A Hibernate UserType implementation which allows transparent + encryption of BigDecimal values during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigDecimal" class="org.jasypt.hibernate.type.EncryptedBigDecimalType">
+      <param name="encryptorRegisteredName">myHibernateBigDecimalEncryptor</param>
+      <param name="decimalScale">2</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedBigDecimal" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEBigDecimalEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateBigDecimalEncryptor (see + HibernatePBEBigDecimalEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigDecimal" class="org.jasypt.hibernate.type.EncryptedBigDecimalType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+      <param name="decimalScale">2</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="address" column="ADDRESS" type="encryptedBigDecimal" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+

+ About the decimalScale parameter +

+ The decimalScale parameter is aimed at setting the scale with which + BigDecimal numbers will be set to and retrieved from the database. It is + an important parameter because many DBMSs return BigDecimal numbers with + a scale equal to the amount of decimal positions declared for the field + (e.g. if we store "18.23" (scale=2) in a DECIMAL(15,5) field, we can get a + "18.23000" (scale=5) back when we retrieve the number). This can affect + correct decryption of encrypted numbers, but specifying a + decimalScale parameter will solve this issue. +

+

+ So, if we set decimalScale to 3, and we store "18.23", this + Hibernate type will send "18.230" to the encryptor, which is the value that + we will get back from the database at retrieval time (a scale of "3" + will be set again on the value obtained from DB). If it is necessary, a + DOWN rounding operation is executed on the number. +

+
+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.type since 1.2)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
EncryptedBigDecimalType() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Objectassemble(java.io.Serializable cached, + Object owner) + +
+           
+ ObjectdeepCopy(Object value) + +
+           
+ java.io.Serializabledisassemble(Object value) + +
+           
+ booleanequals(Object x, + Object y) + +
+           
+ inthashCode(Object x) + +
+           
+ booleanisMutable() + +
+           
+ ObjectnullSafeGet(java.sql.ResultSet rs, + String[] names, + Object owner) + +
+           
+ voidnullSafeSet(java.sql.PreparedStatement st, + Object value, + int index) + +
+           
+ Objectreplace(Object original, + Object target, + Object owner) + +
+           
+ ClassreturnedClass() + +
+           
+ voidsetParameterValues(java.util.Properties parameters) + +
+           
+ int[]sqlTypes() + +
+           
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedBigDecimalType

+
+public EncryptedBigDecimalType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+sqlTypes

+
+public int[] sqlTypes()
+
+
+
Specified by:
sqlTypes in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+equals

+
+public boolean equals(Object x,
+                      Object y)
+               throws org.hibernate.HibernateException
+
+
+
Specified by:
equals in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+deepCopy

+
+public Object deepCopy(Object value)
+                throws org.hibernate.HibernateException
+
+
+
Specified by:
deepCopy in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+assemble

+
+public Object assemble(java.io.Serializable cached,
+                       Object owner)
+                throws org.hibernate.HibernateException
+
+
+
Specified by:
assemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+disassemble

+
+public java.io.Serializable disassemble(Object value)
+                                 throws org.hibernate.HibernateException
+
+
+
Specified by:
disassemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+isMutable

+
+public boolean isMutable()
+
+
+
Specified by:
isMutable in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+hashCode

+
+public int hashCode(Object x)
+             throws org.hibernate.HibernateException
+
+
+
Specified by:
hashCode in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+replace

+
+public Object replace(Object original,
+                      Object target,
+                      Object owner)
+               throws org.hibernate.HibernateException
+
+
+
Specified by:
replace in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+nullSafeGet

+
+public Object nullSafeGet(java.sql.ResultSet rs,
+                          String[] names,
+                          Object owner)
+                   throws org.hibernate.HibernateException,
+                          java.sql.SQLException
+
+
+
Specified by:
nullSafeGet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+nullSafeSet

+
+public void nullSafeSet(java.sql.PreparedStatement st,
+                        Object value,
+                        int index)
+                 throws org.hibernate.HibernateException,
+                        java.sql.SQLException
+
+
+
Specified by:
nullSafeSet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+setParameterValues

+
+public void setParameterValues(java.util.Properties parameters)
+
+
+
Specified by:
setParameterValues in interface org.hibernate.usertype.ParameterizedType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBigIntegerAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBigIntegerAsStringType.html new file mode 100644 index 00000000..723d35f5 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBigIntegerAsStringType.html @@ -0,0 +1,389 @@ + + + + + + + +EncryptedBigIntegerAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.type +
+Class EncryptedBigIntegerAsStringType

+
+Object
+  extended by org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate3.type.EncryptedBigIntegerAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedBigIntegerAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of BigInteger values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigIntegerAsString" class="org.jasypt.hibernate.type.EncryptedBigIntegerAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedBigIntegerAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigIntegerAsString" class="org.jasypt.hibernate.type.EncryptedBigIntegerAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedBigIntegerAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.type since 1.2)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedBigIntegerAsStringType() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+ ClassreturnedClass() + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedBigIntegerAsStringType

+
+public EncryptedBigIntegerAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBigIntegerType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBigIntegerType.html new file mode 100644 index 00000000..0285fccd --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBigIntegerType.html @@ -0,0 +1,620 @@ + + + + + + + +EncryptedBigIntegerType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.type +
+Class EncryptedBigIntegerType

+
+Object
+  extended by org.jasypt.hibernate3.type.EncryptedBigIntegerType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedBigIntegerType
extends Object
implements org.hibernate.usertype.UserType, org.hibernate.usertype.ParameterizedType
+ + +

+

+ A Hibernate UserType implementation which allows transparent + encryption of BigInteger values during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigInteger" class="org.jasypt.hibernate.type.EncryptedBigIntegerType">
+      <param name="encryptorRegisteredName">myHibernateBigIntegerEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedBigInteger" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEBigIntegerEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateBigIntegerEncryptor (see + HibernatePBEBigIntegerEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigInteger" class="org.jasypt.hibernate.type.EncryptedBigIntegerType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="address" column="ADDRESS" type="encryptedBigInteger" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.type since 1.2)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
EncryptedBigIntegerType() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Objectassemble(java.io.Serializable cached, + Object owner) + +
+           
+ ObjectdeepCopy(Object value) + +
+           
+ java.io.Serializabledisassemble(Object value) + +
+           
+ booleanequals(Object x, + Object y) + +
+           
+ inthashCode(Object x) + +
+           
+ booleanisMutable() + +
+           
+ ObjectnullSafeGet(java.sql.ResultSet rs, + String[] names, + Object owner) + +
+           
+ voidnullSafeSet(java.sql.PreparedStatement st, + Object value, + int index) + +
+           
+ Objectreplace(Object original, + Object target, + Object owner) + +
+           
+ ClassreturnedClass() + +
+           
+ voidsetParameterValues(java.util.Properties parameters) + +
+           
+ int[]sqlTypes() + +
+           
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedBigIntegerType

+
+public EncryptedBigIntegerType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+sqlTypes

+
+public int[] sqlTypes()
+
+
+
Specified by:
sqlTypes in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+equals

+
+public boolean equals(Object x,
+                      Object y)
+               throws org.hibernate.HibernateException
+
+
+
Specified by:
equals in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+deepCopy

+
+public Object deepCopy(Object value)
+                throws org.hibernate.HibernateException
+
+
+
Specified by:
deepCopy in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+assemble

+
+public Object assemble(java.io.Serializable cached,
+                       Object owner)
+                throws org.hibernate.HibernateException
+
+
+
Specified by:
assemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+disassemble

+
+public java.io.Serializable disassemble(Object value)
+                                 throws org.hibernate.HibernateException
+
+
+
Specified by:
disassemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+isMutable

+
+public boolean isMutable()
+
+
+
Specified by:
isMutable in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+hashCode

+
+public int hashCode(Object x)
+             throws org.hibernate.HibernateException
+
+
+
Specified by:
hashCode in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+replace

+
+public Object replace(Object original,
+                      Object target,
+                      Object owner)
+               throws org.hibernate.HibernateException
+
+
+
Specified by:
replace in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+nullSafeGet

+
+public Object nullSafeGet(java.sql.ResultSet rs,
+                          String[] names,
+                          Object owner)
+                   throws org.hibernate.HibernateException,
+                          java.sql.SQLException
+
+
+
Specified by:
nullSafeGet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+nullSafeSet

+
+public void nullSafeSet(java.sql.PreparedStatement st,
+                        Object value,
+                        int index)
+                 throws org.hibernate.HibernateException,
+                        java.sql.SQLException
+
+
+
Specified by:
nullSafeSet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+setParameterValues

+
+public void setParameterValues(java.util.Properties parameters)
+
+
+
Specified by:
setParameterValues in interface org.hibernate.usertype.ParameterizedType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBinaryType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBinaryType.html new file mode 100644 index 00000000..d517660a --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBinaryType.html @@ -0,0 +1,620 @@ + + + + + + + +EncryptedBinaryType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.type +
+Class EncryptedBinaryType

+
+Object
+  extended by org.jasypt.hibernate3.type.EncryptedBinaryType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedBinaryType
extends Object
implements org.hibernate.usertype.UserType, org.hibernate.usertype.ParameterizedType
+ + +

+

+ A Hibernate UserType implementation which allows transparent + encryption of byte[] values during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBinary" class="org.jasypt.hibernate.type.EncryptedBinaryType">
+      <param name="encryptorRegisteredName">myHibernateByteEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="resume" column="RESUME" type="encryptedBinary" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEByteEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateByteEncryptor (see + HibernatePBEByteEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBinary" class="org.jasypt.hibernate.type.EncryptedBinaryType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="resume" column="RESUME" type="encryptedBinary" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.type since 1.2)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
EncryptedBinaryType() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Objectassemble(java.io.Serializable cached, + Object owner) + +
+           
+ ObjectdeepCopy(Object value) + +
+           
+ java.io.Serializabledisassemble(Object value) + +
+           
+ booleanequals(Object x, + Object y) + +
+           
+ inthashCode(Object x) + +
+           
+ booleanisMutable() + +
+           
+ ObjectnullSafeGet(java.sql.ResultSet rs, + String[] names, + Object owner) + +
+           
+ voidnullSafeSet(java.sql.PreparedStatement st, + Object value, + int index) + +
+           
+ Objectreplace(Object original, + Object target, + Object owner) + +
+           
+ ClassreturnedClass() + +
+           
+ voidsetParameterValues(java.util.Properties parameters) + +
+           
+ int[]sqlTypes() + +
+           
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedBinaryType

+
+public EncryptedBinaryType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+sqlTypes

+
+public int[] sqlTypes()
+
+
+
Specified by:
sqlTypes in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+equals

+
+public boolean equals(Object x,
+                      Object y)
+               throws org.hibernate.HibernateException
+
+
+
Specified by:
equals in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+deepCopy

+
+public Object deepCopy(Object value)
+                throws org.hibernate.HibernateException
+
+
+
Specified by:
deepCopy in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+assemble

+
+public Object assemble(java.io.Serializable cached,
+                       Object owner)
+                throws org.hibernate.HibernateException
+
+
+
Specified by:
assemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+disassemble

+
+public java.io.Serializable disassemble(Object value)
+                                 throws org.hibernate.HibernateException
+
+
+
Specified by:
disassemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+isMutable

+
+public boolean isMutable()
+
+
+
Specified by:
isMutable in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+hashCode

+
+public int hashCode(Object x)
+             throws org.hibernate.HibernateException
+
+
+
Specified by:
hashCode in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+replace

+
+public Object replace(Object original,
+                      Object target,
+                      Object owner)
+               throws org.hibernate.HibernateException
+
+
+
Specified by:
replace in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+nullSafeGet

+
+public Object nullSafeGet(java.sql.ResultSet rs,
+                          String[] names,
+                          Object owner)
+                   throws org.hibernate.HibernateException,
+                          java.sql.SQLException
+
+
+
Specified by:
nullSafeGet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+nullSafeSet

+
+public void nullSafeSet(java.sql.PreparedStatement st,
+                        Object value,
+                        int index)
+                 throws org.hibernate.HibernateException,
+                        java.sql.SQLException
+
+
+
Specified by:
nullSafeSet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+setParameterValues

+
+public void setParameterValues(java.util.Properties parameters)
+
+
+
Specified by:
setParameterValues in interface org.hibernate.usertype.ParameterizedType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBooleanAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBooleanAsStringType.html new file mode 100644 index 00000000..24e9e8e3 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedBooleanAsStringType.html @@ -0,0 +1,389 @@ + + + + + + + +EncryptedBooleanAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.type +
+Class EncryptedBooleanAsStringType

+
+Object
+  extended by org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate3.type.EncryptedBooleanAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedBooleanAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Boolean values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBooleanAsString" class="org.jasypt.hibernate.type.EncryptedBooleanAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="active" column="ACTIVE" type="encryptedBooleanAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBooleanAsString" class="org.jasypt.hibernate.type.EncryptedBooleanAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="active" column="ACTIVE" type="encryptedBooleanAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.type since 1.2)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedBooleanAsStringType() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+ ClassreturnedClass() + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedBooleanAsStringType

+
+public EncryptedBooleanAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedByteAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedByteAsStringType.html new file mode 100644 index 00000000..448c7e11 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedByteAsStringType.html @@ -0,0 +1,389 @@ + + + + + + + +EncryptedByteAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.type +
+Class EncryptedByteAsStringType

+
+Object
+  extended by org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate3.type.EncryptedByteAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedByteAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Byte values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedByteAsString" class="org.jasypt.hibernate.type.EncryptedByteAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedByteAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedByteAsString" class="org.jasypt.hibernate.type.EncryptedByteAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedByteAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.type since 1.2)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedByteAsStringType() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+ ClassreturnedClass() + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedByteAsStringType

+
+public EncryptedByteAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedCalendarAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedCalendarAsStringType.html new file mode 100644 index 00000000..55f15635 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedCalendarAsStringType.html @@ -0,0 +1,444 @@ + + + + + + + +EncryptedCalendarAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.type +
+Class EncryptedCalendarAsStringType

+
+Object
+  extended by org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate3.type.EncryptedCalendarAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedCalendarAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Calendar values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedCalendarAsString" class="org.jasypt.hibernate.type.EncryptedCalendarAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+      <param name="storeTimeZone">true</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="birth" column="BIRTH" type="encryptedCalendarAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ The boolean storeTimeZone parameter allows the Calendar to be + re-created with the same TimeZone that it was created. This is an + optional parameter, and its default value is FALSE. +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedCalendarAsString" class="org.jasypt.hibernate.type.EncryptedCalendarAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+      <param name="storeTimeZone">true</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="birth" column="BIRTH" type="encryptedCalendarAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.type since 1.2)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedCalendarAsStringType() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+protected  StringconvertToString(Object object) + +
+          Converts given Object to its String form.
+ ClassreturnedClass() + +
+           
+ voidsetParameterValues(java.util.Properties parameters) + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
assemble, checkInitialization, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedCalendarAsStringType

+
+public EncryptedCalendarAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+convertToString

+
+protected String convertToString(Object object)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given Object to its String form. +

+

+
Overrides:
convertToString in class AbstractEncryptedAsStringType
+
+
+
Parameters:
object - the object value +
Returns:
the string form of the passes Object
See Also:
AbstractEncryptedAsStringType.convertToString(java.lang.Object)
+
+
+
+ +

+setParameterValues

+
+public void setParameterValues(java.util.Properties parameters)
+
+
+
Specified by:
setParameterValues in interface org.hibernate.usertype.ParameterizedType
Overrides:
setParameterValues in class AbstractEncryptedAsStringType
+
+
+
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedDateAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedDateAsStringType.html new file mode 100644 index 00000000..4194cad8 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedDateAsStringType.html @@ -0,0 +1,415 @@ + + + + + + + +EncryptedDateAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.type +
+Class EncryptedDateAsStringType

+
+Object
+  extended by org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate3.type.EncryptedDateAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedDateAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Date values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedDateAsString" class="org.jasypt.hibernate.type.EncryptedDateAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="birth" column="BIRTH" type="encryptedDateAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedDateAsString" class="org.jasypt.hibernate.type.EncryptedDateAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="birth" column="BIRTH" type="encryptedDateAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.type since 1.2)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedDateAsStringType() + +
+           
+  + + + + + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+protected  StringconvertToString(Object object) + +
+          Converts given Object to its String form.
+ ClassreturnedClass() + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
assemble, checkInitialization, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedDateAsStringType

+
+public EncryptedDateAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+convertToString

+
+protected String convertToString(Object object)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given Object to its String form. +

+

+
Overrides:
convertToString in class AbstractEncryptedAsStringType
+
+
+
Parameters:
object - the object value +
Returns:
the string form of the passes Object
See Also:
AbstractEncryptedAsStringType.convertToString(java.lang.Object)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedDoubleAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedDoubleAsStringType.html new file mode 100644 index 00000000..a22d05a5 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedDoubleAsStringType.html @@ -0,0 +1,389 @@ + + + + + + + +EncryptedDoubleAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.type +
+Class EncryptedDoubleAsStringType

+
+Object
+  extended by org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate3.type.EncryptedDoubleAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedDoubleAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Double values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedDoubleAsString" class="org.jasypt.hibernate.type.EncryptedDoubleAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedDoubleAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedDoubleAsString" class="org.jasypt.hibernate.type.EncryptedDoubleAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedDoubleAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.type since 1.2)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedDoubleAsStringType() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+ ClassreturnedClass() + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedDoubleAsStringType

+
+public EncryptedDoubleAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedFloatAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedFloatAsStringType.html new file mode 100644 index 00000000..f8aa70ca --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedFloatAsStringType.html @@ -0,0 +1,389 @@ + + + + + + + +EncryptedFloatAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.type +
+Class EncryptedFloatAsStringType

+
+Object
+  extended by org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate3.type.EncryptedFloatAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedFloatAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Float values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedFloatAsString" class="org.jasypt.hibernate.type.EncryptedFloatAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedFloatAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedFloatAsString" class="org.jasypt.hibernate.type.EncryptedFloatAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedFloatAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.type since 1.2)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedFloatAsStringType() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+ ClassreturnedClass() + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedFloatAsStringType

+
+public EncryptedFloatAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedIntegerAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedIntegerAsStringType.html new file mode 100644 index 00000000..6d5abea4 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedIntegerAsStringType.html @@ -0,0 +1,389 @@ + + + + + + + +EncryptedIntegerAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.type +
+Class EncryptedIntegerAsStringType

+
+Object
+  extended by org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate3.type.EncryptedIntegerAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedIntegerAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Integer values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedIntegerAsString" class="org.jasypt.hibernate.type.EncryptedIntegerAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedIntegerAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedIntegerAsString" class="org.jasypt.hibernate.type.EncryptedIntegerAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedIntegerAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.type since 1.2)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedIntegerAsStringType() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+ ClassreturnedClass() + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedIntegerAsStringType

+
+public EncryptedIntegerAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedLongAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedLongAsStringType.html new file mode 100644 index 00000000..18837950 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedLongAsStringType.html @@ -0,0 +1,389 @@ + + + + + + + +EncryptedLongAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.type +
+Class EncryptedLongAsStringType

+
+Object
+  extended by org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate3.type.EncryptedLongAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedLongAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Long values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedLongAsString" class="org.jasypt.hibernate.type.EncryptedLongAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedLongAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedLongAsString" class="org.jasypt.hibernate.type.EncryptedLongAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedLongAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.type since 1.2)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedLongAsStringType() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+ ClassreturnedClass() + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedLongAsStringType

+
+public EncryptedLongAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedShortAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedShortAsStringType.html new file mode 100644 index 00000000..2b8807f0 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedShortAsStringType.html @@ -0,0 +1,389 @@ + + + + + + + +EncryptedShortAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.type +
+Class EncryptedShortAsStringType

+
+Object
+  extended by org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate3.type.EncryptedShortAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedShortAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Short values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedShortAsString" class="org.jasypt.hibernate.type.EncryptedShortAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedShortAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedShortAsString" class="org.jasypt.hibernate.type.EncryptedShortAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedShortAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.type since 1.2)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedShortAsStringType() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+ ClassreturnedClass() + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedShortAsStringType

+
+public EncryptedShortAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedStringType.html new file mode 100644 index 00000000..5c92d298 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/EncryptedStringType.html @@ -0,0 +1,388 @@ + + + + + + + +EncryptedStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.type +
+Class EncryptedStringType

+
+Object
+  extended by org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate3.type.EncryptedStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows transparent + encryption of String values during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedString" class="org.jasypt.hibernate.type.EncryptedStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="address" column="ADDRESS" type="encryptedString" />
+      ...
+    </class>
+    ...
+  </hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedString" class="org.jasypt.hibernate.type.EncryptedStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="address" column="ADDRESS" type="encryptedString" />
+      ...
+    </class>
+    ...
+  </hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.type since 1.2)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedStringType() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String stringValue) + +
+          Converts given String to its Object form.
+ ClassreturnedClass() + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedStringType

+
+public EncryptedStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String stringValue)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
stringValue - the string value +
Returns:
the object form of the passed String
See Also:
AbstractEncryptedAsStringType.convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/ParameterNaming.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/ParameterNaming.html new file mode 100644 index 00000000..27267044 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/ParameterNaming.html @@ -0,0 +1,442 @@ + + + + + + + +ParameterNaming (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate3.type +
+Class ParameterNaming

+
+Object
+  extended by org.jasypt.hibernate3.type.ParameterNaming
+
+
+
+
public final class ParameterNaming
extends Object
+ + +

+

+ Constant names of the parameters that can be used by a jasypt type's + typedef declaration in a Hibernate mapping. +

+

+ +

+

+
Since:
+
1.9.0 (class existed in package + org.jasypt.hibernate.type since 1.4)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Summary
+static StringALGORITHM + +
+           + The encryption algorithm.
+static StringDECIMAL_SCALE + +
+           + The scale (numbers after the decimal point) to be used when storing + decimal numbers.
+static StringENCRYPTOR_NAME + +
+           + The registered name of an encryptor previously registered at the + HibernatePBEEncryptorRegistry.
+static StringKEY_OBTENTION_ITERATIONS + +
+           + The number of hashing iterations to be applied for obtaining the + encryption key.
+static StringPASSWORD + +
+           + The encryption password.
+static StringPROVIDER_NAME + +
+           + The name of the JCE security provider we want to get the algorithm from + (if it is no the default one.
+static StringSTORE_TIME_ZONE + +
+           + Whether the calendar time zone should be stored with the date or not.
+static StringSTRING_OUTPUT_TYPE + +
+           + The type of String output ("base64" (default), "hexadecimal") to be + generated.
+  + + + + + + + +
+Method Summary
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+ENCRYPTOR_NAME

+
+public static final String ENCRYPTOR_NAME
+
+

+ The registered name of an encryptor previously registered at the + HibernatePBEEncryptorRegistry. +

+

+ Value = encryptorRegisteredName +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+ALGORITHM

+
+public static final String ALGORITHM
+
+

+ The encryption algorithm. +

+

+ Value = algorithm +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+PROVIDER_NAME

+
+public static final String PROVIDER_NAME
+
+

+ The name of the JCE security provider we want to get the algorithm from + (if it is no the default one. +

+

+ Value = providerName +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+PASSWORD

+
+public static final String PASSWORD
+
+

+ The encryption password. +

+

+ Value = password +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+KEY_OBTENTION_ITERATIONS

+
+public static final String KEY_OBTENTION_ITERATIONS
+
+

+ The number of hashing iterations to be applied for obtaining the + encryption key. +

+

+ Value = keyObtentionIterations +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+STRING_OUTPUT_TYPE

+
+public static final String STRING_OUTPUT_TYPE
+
+

+ The type of String output ("base64" (default), "hexadecimal") to be + generated. +

+

+ Value = stringOutputType +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+DECIMAL_SCALE

+
+public static final String DECIMAL_SCALE
+
+

+ The scale (numbers after the decimal point) to be used when storing + decimal numbers. +

+

+ Value = decimalScale +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+STORE_TIME_ZONE

+
+public static final String STORE_TIME_ZONE
+
+

+ Whether the calendar time zone should be stored with the date or not. +

+

+ Value = storeTimeZone +

+

+

+
See Also:
Constant Field Values
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/AbstractEncryptedAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/AbstractEncryptedAsStringType.html new file mode 100644 index 00000000..cc77fa09 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/AbstractEncryptedAsStringType.html @@ -0,0 +1,304 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.type.AbstractEncryptedAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.type.AbstractEncryptedAsStringType

+
+ + + + + + + + + +
+Packages that use AbstractEncryptedAsStringType
org.jasypt.hibernate3.type  
+  +

+ + + + + +
+Uses of AbstractEncryptedAsStringType in org.jasypt.hibernate3.type
+  +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Subclasses of AbstractEncryptedAsStringType in org.jasypt.hibernate3.type
+ classEncryptedBigDecimalAsStringType + +
+           + A Hibernate UserType implementation which allows + encryption of BigDecimal values into String (VARCHAR) database fields + during persistence of entities.
+ classEncryptedBigIntegerAsStringType + +
+           + A Hibernate UserType implementation which allows + encryption of BigInteger values into String (VARCHAR) database fields + during persistence of entities.
+ classEncryptedBooleanAsStringType + +
+           + A Hibernate UserType implementation which allows + encryption of Boolean values into String (VARCHAR) database fields + during persistence of entities.
+ classEncryptedByteAsStringType + +
+           + A Hibernate UserType implementation which allows + encryption of Byte values into String (VARCHAR) database fields + during persistence of entities.
+ classEncryptedCalendarAsStringType + +
+           + A Hibernate UserType implementation which allows + encryption of Calendar values into String (VARCHAR) database fields + during persistence of entities.
+ classEncryptedDateAsStringType + +
+           + A Hibernate UserType implementation which allows + encryption of Date values into String (VARCHAR) database fields + during persistence of entities.
+ classEncryptedDoubleAsStringType + +
+           + A Hibernate UserType implementation which allows + encryption of Double values into String (VARCHAR) database fields + during persistence of entities.
+ classEncryptedFloatAsStringType + +
+           + A Hibernate UserType implementation which allows + encryption of Float values into String (VARCHAR) database fields + during persistence of entities.
+ classEncryptedIntegerAsStringType + +
+           + A Hibernate UserType implementation which allows + encryption of Integer values into String (VARCHAR) database fields + during persistence of entities.
+ classEncryptedLongAsStringType + +
+           + A Hibernate UserType implementation which allows + encryption of Long values into String (VARCHAR) database fields + during persistence of entities.
+ classEncryptedShortAsStringType + +
+           + A Hibernate UserType implementation which allows + encryption of Short values into String (VARCHAR) database fields + during persistence of entities.
+ classEncryptedStringType + +
+           + A Hibernate UserType implementation which allows transparent + encryption of String values during persistence of entities.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBigDecimalAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBigDecimalAsStringType.html new file mode 100644 index 00000000..3f476d17 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBigDecimalAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.type.EncryptedBigDecimalAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.type.EncryptedBigDecimalAsStringType

+
+No usage of org.jasypt.hibernate3.type.EncryptedBigDecimalAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBigDecimalType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBigDecimalType.html new file mode 100644 index 00000000..d3bb2967 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBigDecimalType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.type.EncryptedBigDecimalType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.type.EncryptedBigDecimalType

+
+No usage of org.jasypt.hibernate3.type.EncryptedBigDecimalType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBigIntegerAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBigIntegerAsStringType.html new file mode 100644 index 00000000..ea0264da --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBigIntegerAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.type.EncryptedBigIntegerAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.type.EncryptedBigIntegerAsStringType

+
+No usage of org.jasypt.hibernate3.type.EncryptedBigIntegerAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBigIntegerType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBigIntegerType.html new file mode 100644 index 00000000..459120e9 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBigIntegerType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.type.EncryptedBigIntegerType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.type.EncryptedBigIntegerType

+
+No usage of org.jasypt.hibernate3.type.EncryptedBigIntegerType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBinaryType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBinaryType.html new file mode 100644 index 00000000..0da78928 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBinaryType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.type.EncryptedBinaryType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.type.EncryptedBinaryType

+
+No usage of org.jasypt.hibernate3.type.EncryptedBinaryType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBooleanAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBooleanAsStringType.html new file mode 100644 index 00000000..769c5d0e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedBooleanAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.type.EncryptedBooleanAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.type.EncryptedBooleanAsStringType

+
+No usage of org.jasypt.hibernate3.type.EncryptedBooleanAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedByteAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedByteAsStringType.html new file mode 100644 index 00000000..b3e791c2 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedByteAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.type.EncryptedByteAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.type.EncryptedByteAsStringType

+
+No usage of org.jasypt.hibernate3.type.EncryptedByteAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedCalendarAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedCalendarAsStringType.html new file mode 100644 index 00000000..faa0f271 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedCalendarAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.type.EncryptedCalendarAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.type.EncryptedCalendarAsStringType

+
+No usage of org.jasypt.hibernate3.type.EncryptedCalendarAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedDateAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedDateAsStringType.html new file mode 100644 index 00000000..f5fbb7ed --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedDateAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.type.EncryptedDateAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.type.EncryptedDateAsStringType

+
+No usage of org.jasypt.hibernate3.type.EncryptedDateAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedDoubleAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedDoubleAsStringType.html new file mode 100644 index 00000000..3d565ba3 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedDoubleAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.type.EncryptedDoubleAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.type.EncryptedDoubleAsStringType

+
+No usage of org.jasypt.hibernate3.type.EncryptedDoubleAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedFloatAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedFloatAsStringType.html new file mode 100644 index 00000000..dabd3282 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedFloatAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.type.EncryptedFloatAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.type.EncryptedFloatAsStringType

+
+No usage of org.jasypt.hibernate3.type.EncryptedFloatAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedIntegerAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedIntegerAsStringType.html new file mode 100644 index 00000000..3c0f03fa --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedIntegerAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.type.EncryptedIntegerAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.type.EncryptedIntegerAsStringType

+
+No usage of org.jasypt.hibernate3.type.EncryptedIntegerAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedLongAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedLongAsStringType.html new file mode 100644 index 00000000..26db1865 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedLongAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.type.EncryptedLongAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.type.EncryptedLongAsStringType

+
+No usage of org.jasypt.hibernate3.type.EncryptedLongAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedShortAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedShortAsStringType.html new file mode 100644 index 00000000..4358d543 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedShortAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.type.EncryptedShortAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.type.EncryptedShortAsStringType

+
+No usage of org.jasypt.hibernate3.type.EncryptedShortAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedStringType.html new file mode 100644 index 00000000..30b0c1fd --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/EncryptedStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.type.EncryptedStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.type.EncryptedStringType

+
+No usage of org.jasypt.hibernate3.type.EncryptedStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/ParameterNaming.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/ParameterNaming.html new file mode 100644 index 00000000..732fa5ad --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/class-use/ParameterNaming.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate3.type.ParameterNaming (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate3.type.ParameterNaming

+
+No usage of org.jasypt.hibernate3.type.ParameterNaming +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/package-frame.html new file mode 100644 index 00000000..336a9419 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/package-frame.html @@ -0,0 +1,65 @@ + + + + + + + +org.jasypt.hibernate3.type (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.hibernate3.type + + + + +
+Classes  + +
+AbstractEncryptedAsStringType +
+EncryptedBigDecimalAsStringType +
+EncryptedBigDecimalType +
+EncryptedBigIntegerAsStringType +
+EncryptedBigIntegerType +
+EncryptedBinaryType +
+EncryptedBooleanAsStringType +
+EncryptedByteAsStringType +
+EncryptedCalendarAsStringType +
+EncryptedDateAsStringType +
+EncryptedDoubleAsStringType +
+EncryptedFloatAsStringType +
+EncryptedIntegerAsStringType +
+EncryptedLongAsStringType +
+EncryptedShortAsStringType +
+EncryptedStringType +
+ParameterNaming
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/package-summary.html new file mode 100644 index 00000000..55a05906 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/package-summary.html @@ -0,0 +1,266 @@ + + + + + + + +org.jasypt.hibernate3.type (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.hibernate3.type +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Class Summary
AbstractEncryptedAsStringTypeBase class for Hibernate UserTypes to store + values as encrypted strings.
EncryptedBigDecimalAsStringType + A Hibernate UserType implementation which allows + encryption of BigDecimal values into String (VARCHAR) database fields + during persistence of entities.
EncryptedBigDecimalType + A Hibernate UserType implementation which allows transparent + encryption of BigDecimal values during persistence of entities.
EncryptedBigIntegerAsStringType + A Hibernate UserType implementation which allows + encryption of BigInteger values into String (VARCHAR) database fields + during persistence of entities.
EncryptedBigIntegerType + A Hibernate UserType implementation which allows transparent + encryption of BigInteger values during persistence of entities.
EncryptedBinaryType + A Hibernate UserType implementation which allows transparent + encryption of byte[] values during persistence of entities.
EncryptedBooleanAsStringType + A Hibernate UserType implementation which allows + encryption of Boolean values into String (VARCHAR) database fields + during persistence of entities.
EncryptedByteAsStringType + A Hibernate UserType implementation which allows + encryption of Byte values into String (VARCHAR) database fields + during persistence of entities.
EncryptedCalendarAsStringType + A Hibernate UserType implementation which allows + encryption of Calendar values into String (VARCHAR) database fields + during persistence of entities.
EncryptedDateAsStringType + A Hibernate UserType implementation which allows + encryption of Date values into String (VARCHAR) database fields + during persistence of entities.
EncryptedDoubleAsStringType + A Hibernate UserType implementation which allows + encryption of Double values into String (VARCHAR) database fields + during persistence of entities.
EncryptedFloatAsStringType + A Hibernate UserType implementation which allows + encryption of Float values into String (VARCHAR) database fields + during persistence of entities.
EncryptedIntegerAsStringType + A Hibernate UserType implementation which allows + encryption of Integer values into String (VARCHAR) database fields + during persistence of entities.
EncryptedLongAsStringType + A Hibernate UserType implementation which allows + encryption of Long values into String (VARCHAR) database fields + during persistence of entities.
EncryptedShortAsStringType + A Hibernate UserType implementation which allows + encryption of Short values into String (VARCHAR) database fields + during persistence of entities.
EncryptedStringType + A Hibernate UserType implementation which allows transparent + encryption of String values during persistence of entities.
ParameterNaming + Constant names of the parameters that can be used by a jasypt type's + typedef declaration in a Hibernate mapping.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/package-tree.html new file mode 100644 index 00000000..4a87c42d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/package-tree.html @@ -0,0 +1,160 @@ + + + + + + + +org.jasypt.hibernate3.type Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.hibernate3.type +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/package-use.html new file mode 100644 index 00000000..dde4f66d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/org/jasypt/hibernate3/type/package-use.html @@ -0,0 +1,172 @@ + + + + + + + +Uses of Package org.jasypt.hibernate3.type (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.hibernate3.type

+
+ + + + + + + + + +
+Packages that use org.jasypt.hibernate3.type
org.jasypt.hibernate3.type  
+  +

+ + + + + + + + +
+Classes in org.jasypt.hibernate3.type used by org.jasypt.hibernate3.type
AbstractEncryptedAsStringType + +
+          Base class for Hibernate UserTypes to store + values as encrypted strings.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/overview-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/overview-frame.html new file mode 100644 index 00000000..5704dfb6 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/overview-frame.html @@ -0,0 +1,53 @@ + + + + + + + +Overview List (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + + + + +
+
+ + + + + +
All Classes +

+ +Packages +
+org.jasypt.hibernate.connectionprovider +
+org.jasypt.hibernate.encryptor +
+org.jasypt.hibernate.type +
+org.jasypt.hibernate3.connectionprovider +
+org.jasypt.hibernate3.encryptor +
+org.jasypt.hibernate3.type +
+

+ +

+  + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/overview-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/overview-summary.html new file mode 100644 index 00000000..360f4b4a --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/overview-summary.html @@ -0,0 +1,177 @@ + + + + + + + +Overview (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+JASYPT: Java Simplified Encryption 1.9.2 API +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Packages
org.jasypt.hibernate.connectionprovider 
org.jasypt.hibernate.encryptor 
org.jasypt.hibernate.type 
org.jasypt.hibernate3.connectionprovider 
org.jasypt.hibernate3.encryptor 
org.jasypt.hibernate3.type 
+ +


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/overview-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/overview-tree.html new file mode 100644 index 00000000..daaf8b07 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/overview-tree.html @@ -0,0 +1,171 @@ + + + + + + + +Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For All Packages

+
+
+
Package Hierarchies:
org.jasypt.hibernate.connectionprovider, org.jasypt.hibernate.encryptor, org.jasypt.hibernate.type, org.jasypt.hibernate3.connectionprovider, org.jasypt.hibernate3.encryptor, org.jasypt.hibernate3.type
+
+

+Class Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/package-list b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/package-list new file mode 100644 index 00000000..b0e6b36f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/package-list @@ -0,0 +1,6 @@ +org.jasypt.hibernate.connectionprovider +org.jasypt.hibernate.encryptor +org.jasypt.hibernate.type +org.jasypt.hibernate3.connectionprovider +org.jasypt.hibernate3.encryptor +org.jasypt.hibernate3.type diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/resources/inherit.gif b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/resources/inherit.gif new file mode 100644 index 0000000000000000000000000000000000000000..c814867a13deb0ca7ea2156c6ca1d5a03372af7e GIT binary patch literal 57 zcmZ?wbhEHbIIT!9-C*e{wE9>Kx3D)-;0v)C; KYxQGgum%9JOA&7X literal 0 HcmV?d00001 diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/stylesheet.css b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/stylesheet.css new file mode 100644 index 00000000..6ea9e516 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate3/stylesheet.css @@ -0,0 +1,29 @@ +/* Javadoc style sheet */ + +/* Define colors, fonts and other style attributes here to override the defaults */ + +/* Page background color */ +body { background-color: #FFFFFF; color:#000000 } + +/* Headings */ +h1 { font-size: 145% } + +/* Table colors */ +.TableHeadingColor { background: #CCCCFF; color:#000000 } /* Dark mauve */ +.TableSubHeadingColor { background: #EEEEFF; color:#000000 } /* Light mauve */ +.TableRowColor { background: #FFFFFF; color:#000000 } /* White */ + +/* Font used in left-hand frame lists */ +.FrameTitleFont { font-size: 100%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameHeadingFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameItemFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } + +/* Navigation bar fonts and colors */ +.NavBarCell1 { background-color:#EEEEFF; color:#000000} /* Light mauve */ +.NavBarCell1Rev { background-color:#00008B; color:#FFFFFF} /* Dark Blue */ +.NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;color:#000000;} +.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;color:#FFFFFF;} + +.NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} +.NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/allclasses-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/allclasses-frame.html new file mode 100644 index 00000000..593f9a1f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/allclasses-frame.html @@ -0,0 +1,80 @@ + + + + + + + +All Classes (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +All Classes +
+ + + + + +
AbstractEncryptedAsStringType +
+EncryptedBigDecimalAsStringType +
+EncryptedBigDecimalType +
+EncryptedBigIntegerAsStringType +
+EncryptedBigIntegerType +
+EncryptedBinaryType +
+EncryptedBooleanAsStringType +
+EncryptedByteAsStringType +
+EncryptedCalendarAsStringType +
+EncryptedDateAsStringType +
+EncryptedDoubleAsStringType +
+EncryptedFloatAsStringType +
+EncryptedIntegerAsStringType +
+EncryptedLongAsStringType +
+EncryptedPasswordC3P0ConnectionProvider +
+EncryptedPasswordDriverManagerConnectionProvider +
+EncryptedShortAsStringType +
+EncryptedStringType +
+HibernatePBEBigDecimalEncryptor +
+HibernatePBEBigIntegerEncryptor +
+HibernatePBEByteEncryptor +
+HibernatePBEEncryptorRegistry +
+HibernatePBEStringEncryptor +
+ParameterNaming +
+ParameterNaming +
+
+ + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/allclasses-noframe.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/allclasses-noframe.html new file mode 100644 index 00000000..c8495c17 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/allclasses-noframe.html @@ -0,0 +1,80 @@ + + + + + + + +All Classes (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +All Classes +
+ + + + + +
AbstractEncryptedAsStringType +
+EncryptedBigDecimalAsStringType +
+EncryptedBigDecimalType +
+EncryptedBigIntegerAsStringType +
+EncryptedBigIntegerType +
+EncryptedBinaryType +
+EncryptedBooleanAsStringType +
+EncryptedByteAsStringType +
+EncryptedCalendarAsStringType +
+EncryptedDateAsStringType +
+EncryptedDoubleAsStringType +
+EncryptedFloatAsStringType +
+EncryptedIntegerAsStringType +
+EncryptedLongAsStringType +
+EncryptedPasswordC3P0ConnectionProvider +
+EncryptedPasswordDriverManagerConnectionProvider +
+EncryptedShortAsStringType +
+EncryptedStringType +
+HibernatePBEBigDecimalEncryptor +
+HibernatePBEBigIntegerEncryptor +
+HibernatePBEByteEncryptor +
+HibernatePBEEncryptorRegistry +
+HibernatePBEStringEncryptor +
+ParameterNaming +
+ParameterNaming +
+
+ + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/constant-values.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/constant-values.html new file mode 100644 index 00000000..1333850f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/constant-values.html @@ -0,0 +1,235 @@ + + + + + + + +Constant Field Values (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Constant Field Values

+
+
+Contents + + + + + + +
+org.jasypt.*
+ +

+ + + + + + + + + + + + +
org.jasypt.hibernate4.connectionprovider.ParameterNaming
+public static final StringENCRYPTOR_REGISTERED_NAME"hibernate.connection.encryptor_registered_name"
+ +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
org.jasypt.hibernate4.type.ParameterNaming
+public static final StringALGORITHM"algorithm"
+public static final StringDECIMAL_SCALE"decimalScale"
+public static final StringENCRYPTOR_NAME"encryptorRegisteredName"
+public static final StringKEY_OBTENTION_ITERATIONS"keyObtentionIterations"
+public static final StringPASSWORD"password"
+public static final StringPROVIDER_NAME"providerName"
+public static final StringSTORE_TIME_ZONE"storeTimeZone"
+public static final StringSTRING_OUTPUT_TYPE"stringOutputType"
+ +

+ +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/deprecated-list.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/deprecated-list.html new file mode 100644 index 00000000..dc7dda26 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/deprecated-list.html @@ -0,0 +1,147 @@ + + + + + + + +Deprecated List (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Deprecated API

+
+
+Contents
    +
+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/help-doc.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/help-doc.html new file mode 100644 index 00000000..5d69f300 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/help-doc.html @@ -0,0 +1,224 @@ + + + + + + + +API Help (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+How This API Document Is Organized

+
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.

+Overview

+
+ +

+The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

+

+Package

+
+ +

+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:

    +
  • Interfaces (italic)
  • Classes
  • Enums
  • Exceptions
  • Errors
  • Annotation Types
+
+

+Class/Interface

+
+ +

+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
  • Class inheritance diagram
  • Direct Subclasses
  • All Known Subinterfaces
  • All Known Implementing Classes
  • Class/interface declaration
  • Class/interface description +

    +

  • Nested Class Summary
  • Field Summary
  • Constructor Summary
  • Method Summary +

    +

  • Field Detail
  • Constructor Detail
  • Method Detail
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+ +

+Annotation Type

+
+ +

+Each annotation type has its own separate page with the following sections:

    +
  • Annotation Type declaration
  • Annotation Type description
  • Required Element Summary
  • Optional Element Summary
  • Element Detail
+
+ +

+Enum

+
+ +

+Each enum has its own separate page with the following sections:

    +
  • Enum declaration
  • Enum description
  • Enum Constant Summary
  • Enum Constant Detail
+
+

+Use

+
+Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.
+

+Tree (Class Hierarchy)

+
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.
    +
  • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
  • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
+
+

+Deprecated API

+
+The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+

+Index

+
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+

+Prev/Next

+These links take you to the next or previous class, interface, package, or related page.

+Frames/No Frames

+These links show and hide the HTML frames. All pages are available with or without frames. +

+

+Serialized Form

+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description. +

+

+Constant Field Values

+The Constant Field Values page lists the static final fields and their values. +

+ + +This help file applies to API documentation generated using the standard doclet. + +
+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/index-all.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/index-all.html new file mode 100644 index 00000000..043d7358 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/index-all.html @@ -0,0 +1,847 @@ + + + + + + + +Index (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G H I K N O P R S
+

+A

+
+
AbstractEncryptedAsStringType - Class in org.jasypt.hibernate4.type
Base class for Hibernate UserTypes to store + values as encrypted strings.
AbstractEncryptedAsStringType() - +Constructor for class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType +
  +
ALGORITHM - +Static variable in class org.jasypt.hibernate4.type.ParameterNaming +
+ The encryption algorithm. +
assemble(Serializable, Object) - +Method in class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType +
  +
assemble(Serializable, Object) - +Method in class org.jasypt.hibernate4.type.EncryptedBigDecimalType +
  +
assemble(Serializable, Object) - +Method in class org.jasypt.hibernate4.type.EncryptedBigIntegerType +
  +
assemble(Serializable, Object) - +Method in class org.jasypt.hibernate4.type.EncryptedBinaryType +
  +
+
+

+C

+
+
checkInitialization() - +Method in class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType +
  +
configure(Properties) - +Method in class org.jasypt.hibernate4.connectionprovider.EncryptedPasswordC3P0ConnectionProvider +
  +
configure(Properties) - +Method in class org.jasypt.hibernate4.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType +
Converts given String to its Object form. +
convertToObject(String) - +Method in class org.jasypt.hibernate4.type.EncryptedBigDecimalAsStringType +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate4.type.EncryptedBigIntegerAsStringType +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate4.type.EncryptedBooleanAsStringType +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate4.type.EncryptedByteAsStringType +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate4.type.EncryptedCalendarAsStringType +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate4.type.EncryptedDateAsStringType +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate4.type.EncryptedDoubleAsStringType +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate4.type.EncryptedFloatAsStringType +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate4.type.EncryptedIntegerAsStringType +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate4.type.EncryptedLongAsStringType +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate4.type.EncryptedShortAsStringType +
  +
convertToObject(String) - +Method in class org.jasypt.hibernate4.type.EncryptedStringType +
  +
convertToString(Object) - +Method in class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType +
Converts given Object to its String form. +
convertToString(Object) - +Method in class org.jasypt.hibernate4.type.EncryptedCalendarAsStringType +
  +
convertToString(Object) - +Method in class org.jasypt.hibernate4.type.EncryptedDateAsStringType +
  +
+
+

+D

+
+
DECIMAL_SCALE - +Static variable in class org.jasypt.hibernate4.type.ParameterNaming +
+ The scale (numbers after the decimal point) to be used when storing + decimal numbers. +
decrypt(BigDecimal) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigDecimalEncryptor +
Decypts a message, delegating to wrapped encryptor +
decrypt(BigInteger) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigIntegerEncryptor +
Decypts a message, delegating to wrapped encryptor +
decrypt(byte[]) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEByteEncryptor +
Decypts a message, delegating to wrapped encryptor +
decrypt(String) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEStringEncryptor +
Decypts a message, delegating to wrapped encryptor +
deepCopy(Object) - +Method in class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType +
  +
deepCopy(Object) - +Method in class org.jasypt.hibernate4.type.EncryptedBigDecimalType +
  +
deepCopy(Object) - +Method in class org.jasypt.hibernate4.type.EncryptedBigIntegerType +
  +
deepCopy(Object) - +Method in class org.jasypt.hibernate4.type.EncryptedBinaryType +
  +
disassemble(Object) - +Method in class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType +
  +
disassemble(Object) - +Method in class org.jasypt.hibernate4.type.EncryptedBigDecimalType +
  +
disassemble(Object) - +Method in class org.jasypt.hibernate4.type.EncryptedBigIntegerType +
  +
disassemble(Object) - +Method in class org.jasypt.hibernate4.type.EncryptedBinaryType +
  +
+
+

+E

+
+
encrypt(BigDecimal) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigDecimalEncryptor +
Encrypts a message, delegating to wrapped encryptor. +
encrypt(BigInteger) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigIntegerEncryptor +
Encrypts a message, delegating to wrapped encryptor. +
encrypt(byte[]) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEByteEncryptor +
Encrypts a message, delegating to wrapped encryptor. +
encrypt(String) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEStringEncryptor +
Encrypts a message, delegating to wrapped encryptor. +
EncryptedBigDecimalAsStringType - Class in org.jasypt.hibernate4.type
+ A Hibernate UserType implementation which allows + encryption of BigDecimal values into String (VARCHAR) database fields + during persistence of entities.
EncryptedBigDecimalAsStringType() - +Constructor for class org.jasypt.hibernate4.type.EncryptedBigDecimalAsStringType +
  +
EncryptedBigDecimalType - Class in org.jasypt.hibernate4.type
+ A Hibernate UserType implementation which allows transparent + encryption of BigDecimal values during persistence of entities.
EncryptedBigDecimalType() - +Constructor for class org.jasypt.hibernate4.type.EncryptedBigDecimalType +
  +
EncryptedBigIntegerAsStringType - Class in org.jasypt.hibernate4.type
+ A Hibernate UserType implementation which allows + encryption of BigInteger values into String (VARCHAR) database fields + during persistence of entities.
EncryptedBigIntegerAsStringType() - +Constructor for class org.jasypt.hibernate4.type.EncryptedBigIntegerAsStringType +
  +
EncryptedBigIntegerType - Class in org.jasypt.hibernate4.type
+ A Hibernate UserType implementation which allows transparent + encryption of BigInteger values during persistence of entities.
EncryptedBigIntegerType() - +Constructor for class org.jasypt.hibernate4.type.EncryptedBigIntegerType +
  +
EncryptedBinaryType - Class in org.jasypt.hibernate4.type
+ A Hibernate UserType implementation which allows transparent + encryption of byte[] values during persistence of entities.
EncryptedBinaryType() - +Constructor for class org.jasypt.hibernate4.type.EncryptedBinaryType +
  +
EncryptedBooleanAsStringType - Class in org.jasypt.hibernate4.type
+ A Hibernate UserType implementation which allows + encryption of Boolean values into String (VARCHAR) database fields + during persistence of entities.
EncryptedBooleanAsStringType() - +Constructor for class org.jasypt.hibernate4.type.EncryptedBooleanAsStringType +
  +
EncryptedByteAsStringType - Class in org.jasypt.hibernate4.type
+ A Hibernate UserType implementation which allows + encryption of Byte values into String (VARCHAR) database fields + during persistence of entities.
EncryptedByteAsStringType() - +Constructor for class org.jasypt.hibernate4.type.EncryptedByteAsStringType +
  +
EncryptedCalendarAsStringType - Class in org.jasypt.hibernate4.type
+ A Hibernate UserType implementation which allows + encryption of Calendar values into String (VARCHAR) database fields + during persistence of entities.
EncryptedCalendarAsStringType() - +Constructor for class org.jasypt.hibernate4.type.EncryptedCalendarAsStringType +
  +
EncryptedDateAsStringType - Class in org.jasypt.hibernate4.type
+ A Hibernate UserType implementation which allows + encryption of Date values into String (VARCHAR) database fields + during persistence of entities.
EncryptedDateAsStringType() - +Constructor for class org.jasypt.hibernate4.type.EncryptedDateAsStringType +
  +
EncryptedDoubleAsStringType - Class in org.jasypt.hibernate4.type
+ A Hibernate UserType implementation which allows + encryption of Double values into String (VARCHAR) database fields + during persistence of entities.
EncryptedDoubleAsStringType() - +Constructor for class org.jasypt.hibernate4.type.EncryptedDoubleAsStringType +
  +
EncryptedFloatAsStringType - Class in org.jasypt.hibernate4.type
+ A Hibernate UserType implementation which allows + encryption of Float values into String (VARCHAR) database fields + during persistence of entities.
EncryptedFloatAsStringType() - +Constructor for class org.jasypt.hibernate4.type.EncryptedFloatAsStringType +
  +
EncryptedIntegerAsStringType - Class in org.jasypt.hibernate4.type
+ A Hibernate UserType implementation which allows + encryption of Integer values into String (VARCHAR) database fields + during persistence of entities.
EncryptedIntegerAsStringType() - +Constructor for class org.jasypt.hibernate4.type.EncryptedIntegerAsStringType +
  +
EncryptedLongAsStringType - Class in org.jasypt.hibernate4.type
+ A Hibernate UserType implementation which allows + encryption of Long values into String (VARCHAR) database fields + during persistence of entities.
EncryptedLongAsStringType() - +Constructor for class org.jasypt.hibernate4.type.EncryptedLongAsStringType +
  +
EncryptedPasswordC3P0ConnectionProvider - Class in org.jasypt.hibernate4.connectionprovider
+ Extension of C3P0ConnectionProvider that allows the user + to write the datasource configuration parameters in an encrypted manner in the + hibernate.cfg.xml or hibernate.properties file
EncryptedPasswordC3P0ConnectionProvider() - +Constructor for class org.jasypt.hibernate4.connectionprovider.EncryptedPasswordC3P0ConnectionProvider +
  +
EncryptedPasswordDriverManagerConnectionProvider - Class in org.jasypt.hibernate4.connectionprovider
+ Extension of DriverManagerConnectionProviderImpl that allows the user + to write the datasource configuration parameters in an encrypted manner in the + hibernate.cfg.xml or hibernate.properties file
EncryptedPasswordDriverManagerConnectionProvider() - +Constructor for class org.jasypt.hibernate4.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider +
  +
EncryptedShortAsStringType - Class in org.jasypt.hibernate4.type
+ A Hibernate UserType implementation which allows + encryption of Short values into String (VARCHAR) database fields + during persistence of entities.
EncryptedShortAsStringType() - +Constructor for class org.jasypt.hibernate4.type.EncryptedShortAsStringType +
  +
EncryptedStringType - Class in org.jasypt.hibernate4.type
+ A Hibernate UserType implementation which allows transparent + encryption of String values during persistence of entities.
EncryptedStringType() - +Constructor for class org.jasypt.hibernate4.type.EncryptedStringType +
  +
encryptor - +Variable in class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType +
  +
ENCRYPTOR_NAME - +Static variable in class org.jasypt.hibernate4.type.ParameterNaming +
+ The registered name of an encryptor previously registered at the + HibernatePBEEncryptorRegistry. +
ENCRYPTOR_REGISTERED_NAME - +Static variable in class org.jasypt.hibernate4.connectionprovider.ParameterNaming +
Property in hibernate.cfg.xml or + hibernate.properties which contains the registered name + (in HibernatePBEEncryptorRegistry) of the encryptor which + will be used to decrypt the datasource parameters. +
equals(Object, Object) - +Method in class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType +
  +
equals(Object, Object) - +Method in class org.jasypt.hibernate4.type.EncryptedBigDecimalType +
  +
equals(Object, Object) - +Method in class org.jasypt.hibernate4.type.EncryptedBigIntegerType +
  +
equals(Object, Object) - +Method in class org.jasypt.hibernate4.type.EncryptedBinaryType +
  +
+
+

+G

+
+
getEncryptor() - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigDecimalEncryptor +
Returns the encryptor which this object wraps. +
getEncryptor() - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigIntegerEncryptor +
Returns the encryptor which this object wraps. +
getEncryptor() - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEByteEncryptor +
Returns the encryptor which this object wraps. +
getEncryptor() - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEStringEncryptor +
Returns the encryptor which this object wraps. +
getInstance() - +Static method in class org.jasypt.hibernate4.encryptor.HibernatePBEEncryptorRegistry +
Returns the singleton instance of the registry. +
getPBEBigDecimalEncryptor(String) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEEncryptorRegistry +
Returns the PBEBigDecimalEncryptor registered with the specified + name (if exists). +
getPBEBigIntegerEncryptor(String) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEEncryptorRegistry +
Returns the PBEBigIntegerEncryptor registered with the specified + name (if exists). +
getPBEByteEncryptor(String) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEEncryptorRegistry +
Returns the PBEByteEncryptor registered with the specified + name (if exists). +
getPBEStringEncryptor(String) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEEncryptorRegistry +
Returns the PBEStringEncryptor registered with the specified + name (if exists). +
getRegisteredName() - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigDecimalEncryptor +
Returns the name with which the wrapped encryptor is registered at + the registry. +
getRegisteredName() - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigIntegerEncryptor +
Returns the name with which the wrapped encryptor is registered at + the registry. +
getRegisteredName() - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEByteEncryptor +
Returns the name with which the wrapped encryptor is registered at + the registry. +
getRegisteredName() - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEStringEncryptor +
Returns the name with which the wrapped encryptor is registered at + the registry. +
+
+

+H

+
+
hashCode(Object) - +Method in class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType +
  +
hashCode(Object) - +Method in class org.jasypt.hibernate4.type.EncryptedBigDecimalType +
  +
hashCode(Object) - +Method in class org.jasypt.hibernate4.type.EncryptedBigIntegerType +
  +
hashCode(Object) - +Method in class org.jasypt.hibernate4.type.EncryptedBinaryType +
  +
HibernatePBEBigDecimalEncryptor - Class in org.jasypt.hibernate4.encryptor
+ Placeholder class for PBEBigDecimalEncryptor objects which are + eligible for use from Hibernate.
HibernatePBEBigDecimalEncryptor() - +Constructor for class org.jasypt.hibernate4.encryptor.HibernatePBEBigDecimalEncryptor +
Creates a new instance of HibernatePBEBigDecimalEncryptor It also + creates a StandardPBEBigDecimalEncryptor for internal use, which + can be overriden by calling setEncryptor(...). +
HibernatePBEBigIntegerEncryptor - Class in org.jasypt.hibernate4.encryptor
+ Placeholder class for PBEBigIntegerEncryptor objects which are + eligible for use from Hibernate.
HibernatePBEBigIntegerEncryptor() - +Constructor for class org.jasypt.hibernate4.encryptor.HibernatePBEBigIntegerEncryptor +
Creates a new instance of HibernatePBEBigIntegerEncryptor It also + creates a StandardPBEBigIntegerEncryptor for internal use, which + can be overriden by calling setEncryptor(...). +
HibernatePBEByteEncryptor - Class in org.jasypt.hibernate4.encryptor
+ Placeholder class for PBEByteEncryptor objects which are + eligible for use from Hibernate.
HibernatePBEByteEncryptor() - +Constructor for class org.jasypt.hibernate4.encryptor.HibernatePBEByteEncryptor +
Creates a new instance of HibernatePBEByteEncryptor It also + creates a StandardPBEByteEncryptor for internal use, which + can be overriden by calling setEncryptor(...). +
HibernatePBEEncryptorRegistry - Class in org.jasypt.hibernate4.encryptor
+ Registry for all the PBE*Encryptor which are eligible for + use from Hibernate.
HibernatePBEStringEncryptor - Class in org.jasypt.hibernate4.encryptor
+ Placeholder class for PBEStringEncryptor objects which are + eligible for use from Hibernate.
HibernatePBEStringEncryptor() - +Constructor for class org.jasypt.hibernate4.encryptor.HibernatePBEStringEncryptor +
Creates a new instance of HibernatePBEStringEncryptor. +
+
+

+I

+
+
isMutable() - +Method in class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType +
  +
isMutable() - +Method in class org.jasypt.hibernate4.type.EncryptedBigDecimalType +
  +
isMutable() - +Method in class org.jasypt.hibernate4.type.EncryptedBigIntegerType +
  +
isMutable() - +Method in class org.jasypt.hibernate4.type.EncryptedBinaryType +
  +
+
+

+K

+
+
KEY_OBTENTION_ITERATIONS - +Static variable in class org.jasypt.hibernate4.type.ParameterNaming +
+ The number of hashing iterations to be applied for obtaining the + encryption key. +
+
+

+N

+
+
nullSafeGet(ResultSet, String[], SessionImplementor, Object) - +Method in class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType +
  +
nullSafeGet(ResultSet, String[], SessionImplementor, Object) - +Method in class org.jasypt.hibernate4.type.EncryptedBigDecimalType +
  +
nullSafeGet(ResultSet, String[], SessionImplementor, Object) - +Method in class org.jasypt.hibernate4.type.EncryptedBigIntegerType +
  +
nullSafeGet(ResultSet, String[], SessionImplementor, Object) - +Method in class org.jasypt.hibernate4.type.EncryptedBinaryType +
  +
nullSafeSet(PreparedStatement, Object, int, SessionImplementor) - +Method in class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType +
  +
nullSafeSet(PreparedStatement, Object, int, SessionImplementor) - +Method in class org.jasypt.hibernate4.type.EncryptedBigDecimalType +
  +
nullSafeSet(PreparedStatement, Object, int, SessionImplementor) - +Method in class org.jasypt.hibernate4.type.EncryptedBigIntegerType +
  +
nullSafeSet(PreparedStatement, Object, int, SessionImplementor) - +Method in class org.jasypt.hibernate4.type.EncryptedBinaryType +
  +
+
+

+O

+
+
org.jasypt.hibernate4.connectionprovider - package org.jasypt.hibernate4.connectionprovider
 
org.jasypt.hibernate4.encryptor - package org.jasypt.hibernate4.encryptor
 
org.jasypt.hibernate4.type - package org.jasypt.hibernate4.type
 
+
+

+P

+
+
ParameterNaming - Class in org.jasypt.hibernate4.connectionprovider
+ Constant names of the parameters that can be used by a jasypt's + Hibernate connection provider.
ParameterNaming - Class in org.jasypt.hibernate4.type
+ Constant names of the parameters that can be used by a jasypt type's + typedef declaration in a Hibernate mapping.
PASSWORD - +Static variable in class org.jasypt.hibernate4.type.ParameterNaming +
+ The encryption password. +
PROVIDER_NAME - +Static variable in class org.jasypt.hibernate4.type.ParameterNaming +
+ The name of the JCE security provider we want to get the algorithm from + (if it is no the default one. +
+
+

+R

+
+
registerPBEBigDecimalEncryptor(String, PBEBigDecimalEncryptor) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEEncryptorRegistry +
Registers a PBEBigDecimalEncryptor object with the specified + name. +
registerPBEBigIntegerEncryptor(String, PBEBigIntegerEncryptor) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEEncryptorRegistry +
Registers a PBEBigIntegerEncryptor object with the specified + name. +
registerPBEByteEncryptor(String, PBEByteEncryptor) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEEncryptorRegistry +
Registers a PBEByteEncryptor object with the specified + name. +
registerPBEStringEncryptor(String, PBEStringEncryptor) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEEncryptorRegistry +
Registers a PBEStringEncryptor object with the specified + name. +
replace(Object, Object, Object) - +Method in class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType +
  +
replace(Object, Object, Object) - +Method in class org.jasypt.hibernate4.type.EncryptedBigDecimalType +
  +
replace(Object, Object, Object) - +Method in class org.jasypt.hibernate4.type.EncryptedBigIntegerType +
  +
replace(Object, Object, Object) - +Method in class org.jasypt.hibernate4.type.EncryptedBinaryType +
  +
returnedClass() - +Method in class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate4.type.EncryptedBigDecimalAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate4.type.EncryptedBigDecimalType +
  +
returnedClass() - +Method in class org.jasypt.hibernate4.type.EncryptedBigIntegerAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate4.type.EncryptedBigIntegerType +
  +
returnedClass() - +Method in class org.jasypt.hibernate4.type.EncryptedBinaryType +
  +
returnedClass() - +Method in class org.jasypt.hibernate4.type.EncryptedBooleanAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate4.type.EncryptedByteAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate4.type.EncryptedCalendarAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate4.type.EncryptedDateAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate4.type.EncryptedDoubleAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate4.type.EncryptedFloatAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate4.type.EncryptedIntegerAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate4.type.EncryptedLongAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate4.type.EncryptedShortAsStringType +
  +
returnedClass() - +Method in class org.jasypt.hibernate4.type.EncryptedStringType +
  +
+
+

+S

+
+
setAlgorithm(String) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigDecimalEncryptor +
Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setAlgorithm(String) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigIntegerEncryptor +
Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setAlgorithm(String) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEByteEncryptor +
Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setAlgorithm(String) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEStringEncryptor +
Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setConfig(PBEConfig) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigDecimalEncryptor +
Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setConfig(PBEConfig) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigIntegerEncryptor +
Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setConfig(PBEConfig) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEByteEncryptor +
Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setConfig(PBEConfig) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEStringEncryptor +
Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setEncryptor(PBEBigDecimalEncryptor) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigDecimalEncryptor +
Sets the PBEBigDecimalEncryptor to be held (wrapped) by this + object. +
setEncryptor(PBEBigIntegerEncryptor) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigIntegerEncryptor +
Sets the PBEBigIntegerEncryptor to be held (wrapped) by this + object. +
setEncryptor(PBEByteEncryptor) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEByteEncryptor +
Sets the PBEByteEncryptor to be held (wrapped) by this + object. +
setEncryptor(PBEStringEncryptor) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEStringEncryptor +
Sets the PBEStringEncryptor to be held (wrapped) by this + object. +
setKeyObtentionIterations(int) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigDecimalEncryptor +
Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setKeyObtentionIterations(int) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigIntegerEncryptor +
Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setKeyObtentionIterations(int) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEByteEncryptor +
Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setKeyObtentionIterations(int) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEStringEncryptor +
Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setParameterValues(Properties) - +Method in class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType +
  +
setParameterValues(Properties) - +Method in class org.jasypt.hibernate4.type.EncryptedBigDecimalType +
  +
setParameterValues(Properties) - +Method in class org.jasypt.hibernate4.type.EncryptedBigIntegerType +
  +
setParameterValues(Properties) - +Method in class org.jasypt.hibernate4.type.EncryptedBinaryType +
  +
setParameterValues(Properties) - +Method in class org.jasypt.hibernate4.type.EncryptedCalendarAsStringType +
  +
setPassword(String) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigDecimalEncryptor +
Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setPassword(String) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigIntegerEncryptor +
Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setPassword(String) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEByteEncryptor +
Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setPassword(String) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEStringEncryptor +
Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +
setPasswordCharArray(char[]) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigDecimalEncryptor +
Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +
setPasswordCharArray(char[]) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigIntegerEncryptor +
Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +
setPasswordCharArray(char[]) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEByteEncryptor +
Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +
setPasswordCharArray(char[]) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEStringEncryptor +
Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +
setProvider(Provider) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEStringEncryptor +
Sets the JCE provider to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setProviderName(String) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEStringEncryptor +
Sets the name of the JCE provider to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setRegisteredName(String) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigDecimalEncryptor +
Sets the registered name of the encryptor and adds it to the registry. +
setRegisteredName(String) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigIntegerEncryptor +
Sets the registered name of the encryptor and adds it to the registry. +
setRegisteredName(String) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEByteEncryptor +
Sets the registered name of the encryptor and adds it to the registry. +
setRegisteredName(String) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEStringEncryptor +
Sets the registered name of the encryptor and adds it to the registry. +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigDecimalEncryptor +
Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEBigIntegerEncryptor +
Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEByteEncryptor +
Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEStringEncryptor +
Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
setStringOutputType(String) - +Method in class org.jasypt.hibernate4.encryptor.HibernatePBEStringEncryptor +
Sets the type of String output ("base64" (default), "hexadecimal") to + be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +
sqlTypes() - +Method in class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType +
  +
sqlTypes() - +Method in class org.jasypt.hibernate4.type.EncryptedBigDecimalType +
  +
sqlTypes() - +Method in class org.jasypt.hibernate4.type.EncryptedBigIntegerType +
  +
sqlTypes() - +Method in class org.jasypt.hibernate4.type.EncryptedBinaryType +
  +
STORE_TIME_ZONE - +Static variable in class org.jasypt.hibernate4.type.ParameterNaming +
+ Whether the calendar time zone should be stored with the date or not. +
STRING_OUTPUT_TYPE - +Static variable in class org.jasypt.hibernate4.type.ParameterNaming +
+ The type of String output ("base64" (default), "hexadecimal") to be + generated. +
+
+A C D E G H I K N O P R S + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/index.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/index.html new file mode 100644 index 00000000..84337fc6 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/index.html @@ -0,0 +1,40 @@ + + + + + + + +JASYPT: Java Simplified Encryption 1.9.2 API + + + + + + + + + + + +<H2> +Frame Alert</H2> + +<P> +This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. +<BR> +Link to<A HREF="overview-summary.html">Non-frame version.</A> + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/EncryptedPasswordC3P0ConnectionProvider.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/EncryptedPasswordC3P0ConnectionProvider.html new file mode 100644 index 00000000..0baaf5f7 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/EncryptedPasswordC3P0ConnectionProvider.html @@ -0,0 +1,324 @@ + + + + + + + +EncryptedPasswordC3P0ConnectionProvider (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.connectionprovider +
+Class EncryptedPasswordC3P0ConnectionProvider

+
+Object
+  extended by org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider
+      extended by org.jasypt.hibernate4.connectionprovider.EncryptedPasswordC3P0ConnectionProvider
+
+
+
All Implemented Interfaces:
java.io.Serializable, org.hibernate.service.jdbc.connections.spi.ConnectionProvider, org.hibernate.service.Service, org.hibernate.service.spi.Configurable, org.hibernate.service.spi.Stoppable, org.hibernate.service.spi.Wrapped
+
+
+
+
public final class EncryptedPasswordC3P0ConnectionProvider
extends org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider
+ + +

+

+ Extension of C3P0ConnectionProvider that allows the user + to write the datasource configuration parameters in an encrypted manner in the + hibernate.cfg.xml or hibernate.properties file +

+

+ The encryptable parameters are: +

    +
  • connection.driver_class
  • +
  • connection.url
  • +
  • connection.username
  • +
  • connection.password
  • +
+

+

+ The name of the password encryptor (decryptor, in fact) will be set in + property hibernate.connection.encryptor_registered_name. + Its value must be the name of a PBEStringEncryptor object + previously registered within HibernatePBEEncryptorRegistry. +

+

+ An example hibernate.cfg.xml file: +

+

+

+  <hibernate-configuration>
+
+    <session-factory>
+
+      
+      <property name="connection.provider_class">org.jasypt.hibernate.connectionprovider.EncryptedPasswordC3P0ConnectionProvider</property>
+      <property name="connection.encryptor_registered_name">stringEncryptor</property>
+      <property name="connection.driver_class">org.postgresql.Driver</property>
+      <property name="connection.url">jdbc:postgresql://localhost/mydatabase</property>
+      <property name="connection.username">myuser</property>
+      <property name="connection.password">ENC(T6DAe34NasW==)</property>
+      <property name="c3p0.min_size">5</property>
+      <property name="c3p0.max_size">20</property>
+      <property name="c3p0.timeout">1800</property>
+      <property name="c3p0.max_statements">50</property>
+      ...
+      
+    </session-factory>
+    
+    ...
+    
+  </hibernate-configuration>
+ 
+

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
See Also:
Serialized Form
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
EncryptedPasswordC3P0ConnectionProvider() + +
+           
+  + + + + + + + + + + + +
+Method Summary
+ voidconfigure(java.util.Properties props) + +
+           
+ + + + + + + +
Methods inherited from class org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider
close, closeConnection, configure, getConnection, isUnwrappableAs, stop, supportsAggressiveRelease, unwrap
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedPasswordC3P0ConnectionProvider

+
+public EncryptedPasswordC3P0ConnectionProvider()
+
+
+ + + + + + + + +
+Method Detail
+ +

+configure

+
+public void configure(java.util.Properties props)
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/EncryptedPasswordDriverManagerConnectionProvider.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/EncryptedPasswordDriverManagerConnectionProvider.html new file mode 100644 index 00000000..a12db280 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/EncryptedPasswordDriverManagerConnectionProvider.html @@ -0,0 +1,322 @@ + + + + + + + +EncryptedPasswordDriverManagerConnectionProvider (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.connectionprovider +
+Class EncryptedPasswordDriverManagerConnectionProvider

+
+Object
+  extended by org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl
+      extended by org.jasypt.hibernate4.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider
+
+
+
All Implemented Interfaces:
java.io.Serializable, org.hibernate.service.jdbc.connections.spi.ConnectionProvider, org.hibernate.service.Service, org.hibernate.service.spi.Configurable, org.hibernate.service.spi.Stoppable, org.hibernate.service.spi.Wrapped
+
+
+
+
public final class EncryptedPasswordDriverManagerConnectionProvider
extends org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl
+ + +

+

+ Extension of DriverManagerConnectionProviderImpl that allows the user + to write the datasource configuration parameters in an encrypted manner in the + hibernate.cfg.xml or hibernate.properties file +

+

+ The encryptable parameters are: +

    +
  • connection.driver_class
  • +
  • connection.url
  • +
  • connection.username
  • +
  • connection.password
  • +
+

+

+ The name of the password encryptor (decryptor, in fact) will be set in + property hibernate.connection.encryptor_registered_name. + Its value must be the name of a PBEStringEncryptor object + previously registered within HibernatePBEEncryptorRegistry. +

+

+ An example hibernate.cfg.xml file: +

+

+

+  <hibernate-configuration>
+
+    <session-factory>
+
+      <!-- Database connection settings -->
+      <property name="connection.provider_class">org.jasypt.hibernate.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider</property>
+      <property name="connection.encryptor_registered_name">stringEncryptor</property>
+      <property name="connection.driver_class">org.postgresql.Driver</property>
+      <property name="connection.url">jdbc:postgresql://localhost/mydatabase</property>
+      <property name="connection.username">myuser</property>
+      <property name="connection.password">ENC(T6DAe34NasW==)</property>
+      <property name="connection.pool_size">5</property>
+      
+      ...
+      
+    </session-factory>
+    
+    ...
+    
+  </hibernate-configuration>
+ 
+

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
See Also:
Serialized Form
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
EncryptedPasswordDriverManagerConnectionProvider() + +
+           
+  + + + + + + + + + + + +
+Method Summary
+ voidconfigure(java.util.Properties props) + +
+           
+ + + + + + + +
Methods inherited from class org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl
closeConnection, configure, finalize, getConnection, isUnwrappableAs, stop, supportsAggressiveRelease, unwrap
+ + + + + + + +
Methods inherited from class Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedPasswordDriverManagerConnectionProvider

+
+public EncryptedPasswordDriverManagerConnectionProvider()
+
+
+ + + + + + + + +
+Method Detail
+ +

+configure

+
+public void configure(java.util.Properties props)
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/ParameterNaming.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/ParameterNaming.html new file mode 100644 index 00000000..aedeebf1 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/ParameterNaming.html @@ -0,0 +1,249 @@ + + + + + + + +ParameterNaming (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.connectionprovider +
+Class ParameterNaming

+
+Object
+  extended by org.jasypt.hibernate4.connectionprovider.ParameterNaming
+
+
+
+
public final class ParameterNaming
extends Object
+ + +

+

+ Constant names of the parameters that can be used by a jasypt's + Hibernate connection provider. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+static StringENCRYPTOR_REGISTERED_NAME + +
+          Property in hibernate.cfg.xml or + hibernate.properties which contains the registered name + (in HibernatePBEEncryptorRegistry) of the encryptor which + will be used to decrypt the datasource parameters.
+  + + + + + + + +
+Method Summary
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+ENCRYPTOR_REGISTERED_NAME

+
+public static final String ENCRYPTOR_REGISTERED_NAME
+
+
Property in hibernate.cfg.xml or + hibernate.properties which contains the registered name + (in HibernatePBEEncryptorRegistry) of the encryptor which + will be used to decrypt the datasource parameters. +

+

+
See Also:
Constant Field Values
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/class-use/EncryptedPasswordC3P0ConnectionProvider.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/class-use/EncryptedPasswordC3P0ConnectionProvider.html new file mode 100644 index 00000000..de8b846f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/class-use/EncryptedPasswordC3P0ConnectionProvider.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.connectionprovider.EncryptedPasswordC3P0ConnectionProvider (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.connectionprovider.EncryptedPasswordC3P0ConnectionProvider

+
+No usage of org.jasypt.hibernate4.connectionprovider.EncryptedPasswordC3P0ConnectionProvider +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/class-use/EncryptedPasswordDriverManagerConnectionProvider.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/class-use/EncryptedPasswordDriverManagerConnectionProvider.html new file mode 100644 index 00000000..db41066e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/class-use/EncryptedPasswordDriverManagerConnectionProvider.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider

+
+No usage of org.jasypt.hibernate4.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/class-use/ParameterNaming.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/class-use/ParameterNaming.html new file mode 100644 index 00000000..f7e7e002 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/class-use/ParameterNaming.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.connectionprovider.ParameterNaming (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.connectionprovider.ParameterNaming

+
+No usage of org.jasypt.hibernate4.connectionprovider.ParameterNaming +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/package-frame.html new file mode 100644 index 00000000..8fee8f53 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/package-frame.html @@ -0,0 +1,37 @@ + + + + + + + +org.jasypt.hibernate4.connectionprovider (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.hibernate4.connectionprovider + + + + +
+Classes  + +
+EncryptedPasswordC3P0ConnectionProvider +
+EncryptedPasswordDriverManagerConnectionProvider +
+ParameterNaming
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/package-summary.html new file mode 100644 index 00000000..5b0e0443 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/package-summary.html @@ -0,0 +1,174 @@ + + + + + + + +org.jasypt.hibernate4.connectionprovider (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.hibernate4.connectionprovider +

+ + + + + + + + + + + + + + + + + +
+Class Summary
EncryptedPasswordC3P0ConnectionProvider + Extension of C3P0ConnectionProvider that allows the user + to write the datasource configuration parameters in an encrypted manner in the + hibernate.cfg.xml or hibernate.properties file
EncryptedPasswordDriverManagerConnectionProvider + Extension of DriverManagerConnectionProviderImpl that allows the user + to write the datasource configuration parameters in an encrypted manner in the + hibernate.cfg.xml or hibernate.properties file
ParameterNaming + Constant names of the parameters that can be used by a jasypt's + Hibernate connection provider.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/package-tree.html new file mode 100644 index 00000000..c2c94536 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/package-tree.html @@ -0,0 +1,160 @@ + + + + + + + +org.jasypt.hibernate4.connectionprovider Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.hibernate4.connectionprovider +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider (implements org.hibernate.service.spi.Configurable, org.hibernate.service.jdbc.connections.spi.ConnectionProvider, org.hibernate.service.spi.Stoppable) + +
    • org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl (implements org.hibernate.service.spi.Configurable, org.hibernate.service.jdbc.connections.spi.ConnectionProvider, org.hibernate.service.spi.Stoppable) + +
    • org.jasypt.hibernate4.connectionprovider.ParameterNaming
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/package-use.html new file mode 100644 index 00000000..deb259a9 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/connectionprovider/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.hibernate4.connectionprovider (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.hibernate4.connectionprovider

+
+No usage of org.jasypt.hibernate4.connectionprovider +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/HibernatePBEBigDecimalEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/HibernatePBEBigDecimalEncryptor.html new file mode 100644 index 00000000..0e2a8839 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/HibernatePBEBigDecimalEncryptor.html @@ -0,0 +1,610 @@ + + + + + + + +HibernatePBEBigDecimalEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.encryptor +
+Class HibernatePBEBigDecimalEncryptor

+
+Object
+  extended by org.jasypt.hibernate4.encryptor.HibernatePBEBigDecimalEncryptor
+
+
+
+
public final class HibernatePBEBigDecimalEncryptor
extends Object
+ + +

+

+ Placeholder class for PBEBigDecimalEncryptor objects which are + eligible for use from Hibernate. +

+

+ This class acts as a wrapper on a PBEBigDecimalEncryptor, allowing + to be set a registered name (see setRegisteredName(String)) + and performing the needed registry operations against the + HibernatePBEEncryptorRegistry. +

+

+ It is not mandatory that a PBEBigDecimalEncryptor be explicitly set + with setEncryptor(PBEBigDecimalEncryptor). If not, a + StandardPBEBigDecimalEncryptor object will be created internally + and it will be configurable with the + setPassword(String)/setPasswordCharArray(char[]), + setAlgorithm(String), setKeyObtentionIterations(int), + setSaltGenerator(SaltGenerator) + and setConfig(PBEConfig) methods. +

+

+ This class is mainly intended for use from Spring Framework or some other + IoC container (if you are not using a container of this kind, please see + HibernatePBEEncryptorRegistry). The steps to be performed are + the following: +

    +
  1. Create an object of this class (declaring it).
  2. +
  3. Set its registeredName and, either its + wrapped encryptor or its password, + algorithm, keyObtentionIterations, + saltGenerator and config properties.
  4. +
  5. Declare a typedef in a Hibernate mapping giving its + encryptorRegisteredName parameter the same value specified + to this object in registeredName.
  6. +
+

+

+ This in a Spring config file would look like: +

+

+

 
+  ...
+  <-- Optional, as the hibernateEncryptor could be directly set an     -->
+  <-- algorithm and password.                                          -->
+  <bean id="bigDecimalEncryptor"
+    class="org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor">
+    <property name="algorithm">
+        <value>PBEWithMD5AndDES</value>
+    </property>
+    <property name="password">
+        <value>XXXXX</value>
+    </property>
+  </bean>
+  
+  <bean id="hibernateEncryptor"
+    class="org.jasypt.hibernate.encryptor.HibernatePBEBigDecimalEncryptor">
+    <property name="registeredName">
+        <value>myHibernateBigDecimalEncryptor</value>
+    </property>
+    <property name="encryptor">
+        <ref bean="bigDecimalEncryptor" />
+    </property>
+  </bean>
+  ...
+ 
+

+

+ And then in the Hibernate mapping file: +

+

+

+    <typedef name="encrypted" class="org.jasypt.hibernate.type.EncryptedBigDecimalType">
+      <param name="encryptorRegisteredName">myHibernateBigDecimalEncryptor</param>
+      <param name="decimalScale">2</param>
+    </typedef>
+ 
+

+

+ An important thing to note is that, when using HibernatePBEBigDecimalEncryptor + objects this way to wrap PBEBigDecimalEncryptors, it is not + necessary to deal with HibernatePBEEncryptorRegistry, + because HibernatePBEBigDecimalEncryptor objects get automatically registered + in the encryptor registry when their setRegisteredName(String) + method is called. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
HibernatePBEBigDecimalEncryptor() + +
+          Creates a new instance of HibernatePBEBigDecimalEncryptor It also + creates a StandardPBEBigDecimalEncryptor for internal use, which + can be overriden by calling setEncryptor(...).
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.math.BigDecimaldecrypt(java.math.BigDecimal encryptedMessage) + +
+          Decypts a message, delegating to wrapped encryptor
+ java.math.BigDecimalencrypt(java.math.BigDecimal message) + +
+          Encrypts a message, delegating to wrapped encryptor.
+ org.jasypt.encryption.pbe.PBEBigDecimalEncryptorgetEncryptor() + +
+          Returns the encryptor which this object wraps.
+ StringgetRegisteredName() + +
+          Returns the name with which the wrapped encryptor is registered at + the registry.
+ voidsetAlgorithm(String algorithm) + +
+          Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetConfig(org.jasypt.encryption.pbe.config.PBEConfig config) + +
+          Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetEncryptor(org.jasypt.encryption.pbe.PBEBigDecimalEncryptor encryptor) + +
+          Sets the PBEBigDecimalEncryptor to be held (wrapped) by this + object.
+ voidsetKeyObtentionIterations(int keyObtentionIterations) + +
+          Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetPassword(String password) + +
+          Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetPasswordCharArray(char[] password) + +
+          Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetRegisteredName(String registeredName) + +
+          Sets the registered name of the encryptor and adds it to the registry.
+ voidsetSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator) + +
+          Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+HibernatePBEBigDecimalEncryptor

+
+public HibernatePBEBigDecimalEncryptor()
+
+
Creates a new instance of HibernatePBEBigDecimalEncryptor It also + creates a StandardPBEBigDecimalEncryptor for internal use, which + can be overriden by calling setEncryptor(...). +

+

+ + + + + + + + +
+Method Detail
+ +

+getEncryptor

+
+public org.jasypt.encryption.pbe.PBEBigDecimalEncryptor getEncryptor()
+
+
Returns the encryptor which this object wraps. +

+

+ +
Returns:
the encryptor.
+
+
+
+ +

+setEncryptor

+
+public void setEncryptor(org.jasypt.encryption.pbe.PBEBigDecimalEncryptor encryptor)
+
+
Sets the PBEBigDecimalEncryptor to be held (wrapped) by this + object. This method is optional and can be only called once. +

+

+
Parameters:
encryptor - the encryptor.
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+
Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+
Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
Since:
+
1.8
+
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+
Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
algorithm - the algorithm to be set for the internal encryptor
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(int keyObtentionIterations)
+
+
Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
keyObtentionIterations - to be set for the internal encryptor
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator)
+
+
Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
saltGenerator - the salt generator to be set for the internal + encryptor.
+
+
+
+ +

+setConfig

+
+public void setConfig(org.jasypt.encryption.pbe.config.PBEConfig config)
+
+
Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
config - the PBEConfig to be set for the internal encryptor
+
+
+
+ +

+encrypt

+
+public java.math.BigDecimal encrypt(java.math.BigDecimal message)
+
+
Encrypts a message, delegating to wrapped encryptor. +

+

+
Parameters:
message - the message to be encrypted. +
Returns:
the encryption result.
+
+
+
+ +

+decrypt

+
+public java.math.BigDecimal decrypt(java.math.BigDecimal encryptedMessage)
+
+
Decypts a message, delegating to wrapped encryptor +

+

+
Parameters:
encryptedMessage - the message to be decrypted. +
Returns:
the result of decryption.
+
+
+
+ +

+setRegisteredName

+
+public void setRegisteredName(String registeredName)
+
+
Sets the registered name of the encryptor and adds it to the registry. +

+

+
Parameters:
registeredName - the name with which the encryptor will be + registered.
+
+
+
+ +

+getRegisteredName

+
+public String getRegisteredName()
+
+
Returns the name with which the wrapped encryptor is registered at + the registry. +

+

+ +
Returns:
the registered name.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/HibernatePBEBigIntegerEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/HibernatePBEBigIntegerEncryptor.html new file mode 100644 index 00000000..0dcc3904 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/HibernatePBEBigIntegerEncryptor.html @@ -0,0 +1,609 @@ + + + + + + + +HibernatePBEBigIntegerEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.encryptor +
+Class HibernatePBEBigIntegerEncryptor

+
+Object
+  extended by org.jasypt.hibernate4.encryptor.HibernatePBEBigIntegerEncryptor
+
+
+
+
public final class HibernatePBEBigIntegerEncryptor
extends Object
+ + +

+

+ Placeholder class for PBEBigIntegerEncryptor objects which are + eligible for use from Hibernate. +

+

+ This class acts as a wrapper on a PBEBigIntegerEncryptor, allowing + to be set a registered name (see setRegisteredName(String)) + and performing the needed registry operations against the + HibernatePBEEncryptorRegistry. +

+

+ It is not mandatory that a PBEBigIntegerEncryptor be explicitly set + with setEncryptor(PBEBigIntegerEncryptor). If not, a + StandardPBEBigIntegerEncryptor object will be created internally + and it will be configurable with the + setPassword(String)/setPasswordCharArray(char[]), + setAlgorithm(String), setKeyObtentionIterations(int), + setSaltGenerator(SaltGenerator) + and setConfig(PBEConfig) methods. +

+

+ This class is mainly intended for use from Spring Framework or some other + IoC container (if you are not using a container of this kind, please see + HibernatePBEEncryptorRegistry). The steps to be performed are + the following: +

    +
  1. Create an object of this class (declaring it).
  2. +
  3. Set its registeredName and, either its + wrapped encryptor or its password, + algorithm, keyObtentionIterations, + saltGenerator and config properties.
  4. +
  5. Declare a typedef in a Hibernate mapping giving its + encryptorRegisteredName parameter the same value specified + to this object in registeredName.
  6. +
+

+

+ This in a Spring config file would look like: +

+

+

 
+  ...
+  <-- Optional, as the hibernateEncryptor could be directly set an     -->
+  <-- algorithm and password.                                          -->
+  <bean id="bigIntegerEncryptor"
+    class="org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor">
+    <property name="algorithm">
+        <value>PBEWithMD5AndDES</value>
+    </property>
+    <property name="password">
+        <value>XXXXX</value>
+    </property>
+  </bean>
+  
+  <bean id="hibernateEncryptor"
+    class="org.jasypt.hibernate.encryptor.HibernatePBEBigIntegerEncryptor">
+    <property name="registeredName">
+        <value>myHibernateBigIntegerEncryptor</value>
+    </property>
+    <property name="encryptor">
+        <ref bean="bigIntegerEncryptor" />
+    </property>
+  </bean>
+  ...
+ 
+

+

+ And then in the Hibernate mapping file: +

+

+

+    <typedef name="encrypted" class="org.jasypt.hibernate.type.EncryptedBigIntegerType">
+      <param name="encryptorRegisteredName">myHibernateBigIntegerEncryptor</param>
+    </typedef>
+ 
+

+

+ An important thing to note is that, when using HibernatePBEBigIntegerEncryptor + objects this way to wrap PBEBigIntegerEncryptors, it is not + necessary to deal with HibernatePBEEncryptorRegistry, + because HibernatePBEBigIntegerEncryptor objects get automatically registered + in the encryptor registry when their setRegisteredName(String) + method is called. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
HibernatePBEBigIntegerEncryptor() + +
+          Creates a new instance of HibernatePBEBigIntegerEncryptor It also + creates a StandardPBEBigIntegerEncryptor for internal use, which + can be overriden by calling setEncryptor(...).
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.math.BigIntegerdecrypt(java.math.BigInteger encryptedMessage) + +
+          Decypts a message, delegating to wrapped encryptor
+ java.math.BigIntegerencrypt(java.math.BigInteger message) + +
+          Encrypts a message, delegating to wrapped encryptor.
+ org.jasypt.encryption.pbe.PBEBigIntegerEncryptorgetEncryptor() + +
+          Returns the encryptor which this object wraps.
+ StringgetRegisteredName() + +
+          Returns the name with which the wrapped encryptor is registered at + the registry.
+ voidsetAlgorithm(String algorithm) + +
+          Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetConfig(org.jasypt.encryption.pbe.config.PBEConfig config) + +
+          Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetEncryptor(org.jasypt.encryption.pbe.PBEBigIntegerEncryptor encryptor) + +
+          Sets the PBEBigIntegerEncryptor to be held (wrapped) by this + object.
+ voidsetKeyObtentionIterations(int keyObtentionIterations) + +
+          Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetPassword(String password) + +
+          Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetPasswordCharArray(char[] password) + +
+          Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetRegisteredName(String registeredName) + +
+          Sets the registered name of the encryptor and adds it to the registry.
+ voidsetSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator) + +
+          Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+HibernatePBEBigIntegerEncryptor

+
+public HibernatePBEBigIntegerEncryptor()
+
+
Creates a new instance of HibernatePBEBigIntegerEncryptor It also + creates a StandardPBEBigIntegerEncryptor for internal use, which + can be overriden by calling setEncryptor(...). +

+

+ + + + + + + + +
+Method Detail
+ +

+getEncryptor

+
+public org.jasypt.encryption.pbe.PBEBigIntegerEncryptor getEncryptor()
+
+
Returns the encryptor which this object wraps. +

+

+ +
Returns:
the encryptor.
+
+
+
+ +

+setEncryptor

+
+public void setEncryptor(org.jasypt.encryption.pbe.PBEBigIntegerEncryptor encryptor)
+
+
Sets the PBEBigIntegerEncryptor to be held (wrapped) by this + object. This method is optional and can be only called once. +

+

+
Parameters:
encryptor - the encryptor.
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+
Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+
Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
Since:
+
1.8
+
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+
Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
algorithm - the algorithm to be set for the internal encryptor
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(int keyObtentionIterations)
+
+
Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
keyObtentionIterations - to be set for the internal encryptor
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator)
+
+
Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
saltGenerator - the salt generator to be set for the internal + encryptor.
+
+
+
+ +

+setConfig

+
+public void setConfig(org.jasypt.encryption.pbe.config.PBEConfig config)
+
+
Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
config - the PBEConfig to be set for the internal encryptor
+
+
+
+ +

+encrypt

+
+public java.math.BigInteger encrypt(java.math.BigInteger message)
+
+
Encrypts a message, delegating to wrapped encryptor. +

+

+
Parameters:
message - the message to be encrypted. +
Returns:
the encryption result.
+
+
+
+ +

+decrypt

+
+public java.math.BigInteger decrypt(java.math.BigInteger encryptedMessage)
+
+
Decypts a message, delegating to wrapped encryptor +

+

+
Parameters:
encryptedMessage - the message to be decrypted. +
Returns:
the result of decryption.
+
+
+
+ +

+setRegisteredName

+
+public void setRegisteredName(String registeredName)
+
+
Sets the registered name of the encryptor and adds it to the registry. +

+

+
Parameters:
registeredName - the name with which the encryptor will be + registered.
+
+
+
+ +

+getRegisteredName

+
+public String getRegisteredName()
+
+
Returns the name with which the wrapped encryptor is registered at + the registry. +

+

+ +
Returns:
the registered name.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/HibernatePBEByteEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/HibernatePBEByteEncryptor.html new file mode 100644 index 00000000..8b917228 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/HibernatePBEByteEncryptor.html @@ -0,0 +1,609 @@ + + + + + + + +HibernatePBEByteEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.encryptor +
+Class HibernatePBEByteEncryptor

+
+Object
+  extended by org.jasypt.hibernate4.encryptor.HibernatePBEByteEncryptor
+
+
+
+
public final class HibernatePBEByteEncryptor
extends Object
+ + +

+

+ Placeholder class for PBEByteEncryptor objects which are + eligible for use from Hibernate. +

+

+ This class acts as a wrapper on a PBEByteEncryptor, allowing + to be set a registered name (see setRegisteredName(String)) + and performing the needed registry operations against the + HibernatePBEEncryptorRegistry. +

+

+ It is not mandatory that a PBEByteEncryptor be explicitly set + with setEncryptor(PBEByteEncryptor). If not, a + StandardPBEByteEncryptor object will be created internally + and it will be configurable with the + setPassword(String)/setPasswordCharArray(char[]), + setAlgorithm(String), setKeyObtentionIterations(int), + setSaltGenerator(SaltGenerator) + and setConfig(PBEConfig) methods. +

+

+ This class is mainly intended for use from Spring Framework or some other + IoC container (if you are not using a container of this kind, please see + HibernatePBEEncryptorRegistry). The steps to be performed are + the following: +

    +
  1. Create an object of this class (declaring it).
  2. +
  3. Set its registeredName and, either its + wrapped encryptor or its password, + algorithm, keyObtentionIterations, + saltGenerator and config properties.
  4. +
  5. Declare a typedef in a Hibernate mapping giving its + encryptorRegisteredName parameter the same value specified + to this object in registeredName.
  6. +
+

+

+ This in a Spring config file would look like: +

+

+

 
+  ...
+  <-- Optional, as the hibernateEncryptor could be directly set an     -->
+  <-- algorithm and password.                                          -->
+  <bean id="byteEncryptor"
+    class="org.jasypt.encryption.pbe.StandardPBEByteEncryptor">
+    <property name="algorithm">
+        <value>PBEWithMD5AndDES</value>
+    </property>
+    <property name="password">
+        <value>XXXXX</value>
+    </property>
+  </bean>
+  
+  <bean id="hibernateEncryptor"
+    class="org.jasypt.hibernate.encryptor.HibernatePBEByteEncryptor">
+    <property name="registeredName">
+        <value>myHibernateByteEncryptor</value>
+    </property>
+    <property name="encryptor">
+        <ref bean="byteEncryptor" />
+    </property>
+  </bean>
+  ...
+ 
+

+

+ And then in the Hibernate mapping file: +

+

+

+    <typedef name="encrypted" class="org.jasypt.hibernate.type.EncryptedBinaryType">
+      <param name="encryptorRegisteredName">myHibernateByteEncryptor</param>
+    </typedef>
+ 
+

+

+ An important thing to note is that, when using HibernatePBEByteEncryptor + objects this way to wrap PBEByteEncryptors, it is not + necessary to deal with HibernatePBEEncryptorRegistry, + because HibernatePBEByteEncryptor objects get automatically registered + in the encryptor registry when their setRegisteredName(String) + method is called. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
HibernatePBEByteEncryptor() + +
+          Creates a new instance of HibernatePBEByteEncryptor It also + creates a StandardPBEByteEncryptor for internal use, which + can be overriden by calling setEncryptor(...).
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ byte[]decrypt(byte[] encryptedMessage) + +
+          Decypts a message, delegating to wrapped encryptor
+ byte[]encrypt(byte[] message) + +
+          Encrypts a message, delegating to wrapped encryptor.
+ org.jasypt.encryption.pbe.PBEByteEncryptorgetEncryptor() + +
+          Returns the encryptor which this object wraps.
+ StringgetRegisteredName() + +
+          Returns the name with which the wrapped encryptor is registered at + the registry.
+ voidsetAlgorithm(String algorithm) + +
+          Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetConfig(org.jasypt.encryption.pbe.config.PBEConfig config) + +
+          Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetEncryptor(org.jasypt.encryption.pbe.PBEByteEncryptor encryptor) + +
+          Sets the PBEByteEncryptor to be held (wrapped) by this + object.
+ voidsetKeyObtentionIterations(int keyObtentionIterations) + +
+          Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetPassword(String password) + +
+          Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetPasswordCharArray(char[] password) + +
+          Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetRegisteredName(String registeredName) + +
+          Sets the registered name of the encryptor and adds it to the registry.
+ voidsetSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator) + +
+          Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+HibernatePBEByteEncryptor

+
+public HibernatePBEByteEncryptor()
+
+
Creates a new instance of HibernatePBEByteEncryptor It also + creates a StandardPBEByteEncryptor for internal use, which + can be overriden by calling setEncryptor(...). +

+

+ + + + + + + + +
+Method Detail
+ +

+getEncryptor

+
+public org.jasypt.encryption.pbe.PBEByteEncryptor getEncryptor()
+
+
Returns the encryptor which this object wraps. +

+

+ +
Returns:
the encryptor.
+
+
+
+ +

+setEncryptor

+
+public void setEncryptor(org.jasypt.encryption.pbe.PBEByteEncryptor encryptor)
+
+
Sets the PBEByteEncryptor to be held (wrapped) by this + object. This method is optional and can be only called once. +

+

+
Parameters:
encryptor - the encryptor.
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+
Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+
Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
Since:
+
1.8
+
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+
Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
algorithm - the algorithm to be set for the internal encryptor
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(int keyObtentionIterations)
+
+
Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
keyObtentionIterations - to be set for the internal encryptor
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator)
+
+
Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
saltGenerator - the salt generator to be set for the internal + encryptor.
+
+
+
+ +

+setConfig

+
+public void setConfig(org.jasypt.encryption.pbe.config.PBEConfig config)
+
+
Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
config - the PBEConfig to be set for the internal encryptor
+
+
+
+ +

+encrypt

+
+public byte[] encrypt(byte[] message)
+
+
Encrypts a message, delegating to wrapped encryptor. +

+

+
Parameters:
message - the message to be encrypted. +
Returns:
the encryption result.
+
+
+
+ +

+decrypt

+
+public byte[] decrypt(byte[] encryptedMessage)
+
+
Decypts a message, delegating to wrapped encryptor +

+

+
Parameters:
encryptedMessage - the message to be decrypted. +
Returns:
the result of decryption.
+
+
+
+ +

+setRegisteredName

+
+public void setRegisteredName(String registeredName)
+
+
Sets the registered name of the encryptor and adds it to the registry. +

+

+
Parameters:
registeredName - the name with which the encryptor will be + registered.
+
+
+
+ +

+getRegisteredName

+
+public String getRegisteredName()
+
+
Returns the name with which the wrapped encryptor is registered at + the registry. +

+

+ +
Returns:
the registered name.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/HibernatePBEEncryptorRegistry.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/HibernatePBEEncryptorRegistry.html new file mode 100644 index 00000000..c9650c6f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/HibernatePBEEncryptorRegistry.html @@ -0,0 +1,490 @@ + + + + + + + +HibernatePBEEncryptorRegistry (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.encryptor +
+Class HibernatePBEEncryptorRegistry

+
+Object
+  extended by org.jasypt.hibernate4.encryptor.HibernatePBEEncryptorRegistry
+
+
+
+
public final class HibernatePBEEncryptorRegistry
extends Object
+ + +

+

+ Registry for all the PBE*Encryptor which are eligible for + use from Hibernate. +

+

+ This class is intended to be directly used in applications where + an IoC container (like Spring Framework) is not present. If it is, + it is better to use the HibernatePBE*Encryptor classes + directly, instead. +

+

+ This registry is a singleton which maintains a registry + of PBE*Encryptor objects which can be used from Hibernate, + by using its registeredName to reference them from mappings. +

+

+ The steps would be: +

    +
  1. Obtain the registry instance (getInstance()).
  2. +
  3. Register the encryptor, giving it a registered name + (registerPBE*Encryptor(String, PBE*Encryptor).
  4. +
  5. Declare a typedef in a Hibernate mapping giving its + encryptorRegisteredName parameter the same value specified + when registering the encryptor.
  6. +
+

+

+ This is, first register the encryptor (example with a String encryptor): +

+

+

+  StandardPBEStringEncryptor myEncryptor = new StandardPBEStringEncryptor();
+  ...
+  HibernatePBEEncryptorRegistry registry =
+      HibernatePBEEncryptorRegistry.getInstance();
+  registry.registerPBEStringEncryptor("myHibernateEncryptor", myEncryptor);
+ 
+

+

+ And then, reference it from a Hibernate mapping file: +

+

+

+    <typedef name="encryptedString" class="org.jasypt.hibernate.type.EncryptedStringType">
+      <param name="encryptorRegisteredName">myHibernateEncryptor</param>
+    </typedef>
+ 
+

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+static HibernatePBEEncryptorRegistrygetInstance() + +
+          Returns the singleton instance of the registry.
+ org.jasypt.encryption.pbe.PBEBigDecimalEncryptorgetPBEBigDecimalEncryptor(String registeredName) + +
+          Returns the PBEBigDecimalEncryptor registered with the specified + name (if exists).
+ org.jasypt.encryption.pbe.PBEBigIntegerEncryptorgetPBEBigIntegerEncryptor(String registeredName) + +
+          Returns the PBEBigIntegerEncryptor registered with the specified + name (if exists).
+ org.jasypt.encryption.pbe.PBEByteEncryptorgetPBEByteEncryptor(String registeredName) + +
+          Returns the PBEByteEncryptor registered with the specified + name (if exists).
+ org.jasypt.encryption.pbe.PBEStringEncryptorgetPBEStringEncryptor(String registeredName) + +
+          Returns the PBEStringEncryptor registered with the specified + name (if exists).
+ voidregisterPBEBigDecimalEncryptor(String registeredName, + org.jasypt.encryption.pbe.PBEBigDecimalEncryptor encryptor) + +
+          Registers a PBEBigDecimalEncryptor object with the specified + name.
+ voidregisterPBEBigIntegerEncryptor(String registeredName, + org.jasypt.encryption.pbe.PBEBigIntegerEncryptor encryptor) + +
+          Registers a PBEBigIntegerEncryptor object with the specified + name.
+ voidregisterPBEByteEncryptor(String registeredName, + org.jasypt.encryption.pbe.PBEByteEncryptor encryptor) + +
+          Registers a PBEByteEncryptor object with the specified + name.
+ voidregisterPBEStringEncryptor(String registeredName, + org.jasypt.encryption.pbe.PBEStringEncryptor encryptor) + +
+          Registers a PBEStringEncryptor object with the specified + name.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Method Detail
+ +

+getInstance

+
+public static HibernatePBEEncryptorRegistry getInstance()
+
+
Returns the singleton instance of the registry. +

+

+ +
Returns:
the registry.
+
+
+
+ +

+registerPBEStringEncryptor

+
+public void registerPBEStringEncryptor(String registeredName,
+                                       org.jasypt.encryption.pbe.PBEStringEncryptor encryptor)
+
+
Registers a PBEStringEncryptor object with the specified + name. +

+

+
Parameters:
registeredName - the registered name.
encryptor - the encryptor to be registered.
+
+
+
+ +

+getPBEStringEncryptor

+
+public org.jasypt.encryption.pbe.PBEStringEncryptor getPBEStringEncryptor(String registeredName)
+
+
Returns the PBEStringEncryptor registered with the specified + name (if exists). +

+

+
Parameters:
registeredName - the name with which the desired encryptor was + registered. +
Returns:
the encryptor, or null if no encryptor has been registered with + that name.
+
+
+
+ +

+registerPBEBigIntegerEncryptor

+
+public void registerPBEBigIntegerEncryptor(String registeredName,
+                                           org.jasypt.encryption.pbe.PBEBigIntegerEncryptor encryptor)
+
+
Registers a PBEBigIntegerEncryptor object with the specified + name. +

+

+
Parameters:
registeredName - the registered name.
encryptor - the encryptor to be registered.
Since:
+
1.6
+
+
+
+
+ +

+getPBEBigIntegerEncryptor

+
+public org.jasypt.encryption.pbe.PBEBigIntegerEncryptor getPBEBigIntegerEncryptor(String registeredName)
+
+
Returns the PBEBigIntegerEncryptor registered with the specified + name (if exists). +

+

+
Parameters:
registeredName - the name with which the desired encryptor was + registered. +
Returns:
the encryptor, or null if no encryptor has been registered with + that name.
+
+
+
+ +

+registerPBEBigDecimalEncryptor

+
+public void registerPBEBigDecimalEncryptor(String registeredName,
+                                           org.jasypt.encryption.pbe.PBEBigDecimalEncryptor encryptor)
+
+
Registers a PBEBigDecimalEncryptor object with the specified + name. +

+

+
Parameters:
registeredName - the registered name.
encryptor - the encryptor to be registered.
Since:
+
1.6
+
+
+
+
+ +

+getPBEBigDecimalEncryptor

+
+public org.jasypt.encryption.pbe.PBEBigDecimalEncryptor getPBEBigDecimalEncryptor(String registeredName)
+
+
Returns the PBEBigDecimalEncryptor registered with the specified + name (if exists). +

+

+
Parameters:
registeredName - the name with which the desired encryptor was + registered. +
Returns:
the encryptor, or null if no encryptor has been registered with + that name.
+
+
+
+ +

+registerPBEByteEncryptor

+
+public void registerPBEByteEncryptor(String registeredName,
+                                     org.jasypt.encryption.pbe.PBEByteEncryptor encryptor)
+
+
Registers a PBEByteEncryptor object with the specified + name. +

+

+
Parameters:
registeredName - the registered name.
encryptor - the encryptor to be registered.
Since:
+
1.6
+
+
+
+
+ +

+getPBEByteEncryptor

+
+public org.jasypt.encryption.pbe.PBEByteEncryptor getPBEByteEncryptor(String registeredName)
+
+
Returns the PBEByteEncryptor registered with the specified + name (if exists). +

+

+
Parameters:
registeredName - the name with which the desired encryptor was + registered. +
Returns:
the encryptor, or null if no encryptor has been registered with + that name.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/HibernatePBEStringEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/HibernatePBEStringEncryptor.html new file mode 100644 index 00000000..a7b7b5e4 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/HibernatePBEStringEncryptor.html @@ -0,0 +1,685 @@ + + + + + + + +HibernatePBEStringEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.encryptor +
+Class HibernatePBEStringEncryptor

+
+Object
+  extended by org.jasypt.hibernate4.encryptor.HibernatePBEStringEncryptor
+
+
+
+
public final class HibernatePBEStringEncryptor
extends Object
+ + +

+

+ Placeholder class for PBEStringEncryptor objects which are + eligible for use from Hibernate. +

+

+ This class acts as a wrapper on a PBEStringEncryptor, allowing + to be set a registered name (see setRegisteredName(String)) + and performing the needed registry operations against the + HibernatePBEEncryptorRegistry. +

+

+ It is not mandatory that a PBEStringEncryptor be explicitly set + with setEncryptor(PBEStringEncryptor). If not, a + StandardPBEStringEncryptor object will be created internally + and it will be configurable with the + setPassword(String)/setPasswordCharArray(char[]), + setAlgorithm(String), setKeyObtentionIterations(int), + setSaltGenerator(SaltGenerator), setProviderName(String), + setProvider(Provider), setStringOutputType(String) + and setConfig(PBEConfig) methods. +

+

+ This class is mainly intended for use from Spring Framework or some other + IoC container (if you are not using a container of this kind, please see + HibernatePBEEncryptorRegistry). The steps to be performed are + the following: +

    +
  1. Create an object of this class (declaring it).
  2. +
  3. Set its registeredName and, either its + wrapped encryptor or its password, + algorithm, keyObtentionIterations, + saltGenerator and config properties.
  4. +
  5. Declare a typedef in a Hibernate mapping giving its + encryptorRegisteredName parameter the same value specified + to this object in registeredName.
  6. +
+

+

+ This in a Spring config file would look like: +

+

+

+  ...
+  <-- Optional, as the hibernateEncryptor could be directly set an     -->
+  <-- algorithm and password.                                          -->
+  <bean id="stringEncryptor"
+    class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
+    <property name="algorithm">
+        <value>PBEWithMD5AndDES</value>
+    </property>
+    <property name="password">
+        <value>XXXXX</value>
+    </property>
+  </bean>
+  
+  <bean id="hibernateEncryptor"
+    class="org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor">
+    <property name="registeredName">
+        <value>myHibernateStringEncryptor</value>
+    </property>
+    <property name="encryptor">
+        <ref bean="stringEncryptor" />
+    </property>
+  </bean>
+  ...
+ 
+

+

+ And then in the Hibernate mapping file: +

+

+

+    <typedef name="encrypted" class="org.jasypt.hibernate.type.EncryptedStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+ 
+

+

+ An important thing to note is that, when using HibernatePBEStringEncryptor + objects this way to wrap PBEStringEncryptors, it is not + necessary to deal with HibernatePBEEncryptorRegistry, + because HibernatePBEStringEncryptor objects get automatically registered + in the encryptor registry when their setRegisteredName(String) + method is called. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
HibernatePBEStringEncryptor() + +
+          Creates a new instance of HibernatePBEStringEncryptor.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Stringdecrypt(String encryptedMessage) + +
+          Decypts a message, delegating to wrapped encryptor
+ Stringencrypt(String message) + +
+          Encrypts a message, delegating to wrapped encryptor.
+ org.jasypt.encryption.pbe.PBEStringEncryptorgetEncryptor() + +
+          Returns the encryptor which this object wraps.
+ StringgetRegisteredName() + +
+          Returns the name with which the wrapped encryptor is registered at + the registry.
+ voidsetAlgorithm(String algorithm) + +
+          Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetConfig(org.jasypt.encryption.pbe.config.PBEConfig config) + +
+          Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetEncryptor(org.jasypt.encryption.pbe.PBEStringEncryptor encryptor) + +
+          Sets the PBEStringEncryptor to be held (wrapped) by this + object.
+ voidsetKeyObtentionIterations(int keyObtentionIterations) + +
+          Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetPassword(String password) + +
+          Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetPasswordCharArray(char[] password) + +
+          Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...).
+ voidsetProvider(java.security.Provider provider) + +
+          Sets the JCE provider to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetProviderName(String providerName) + +
+          Sets the name of the JCE provider to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetRegisteredName(String registeredName) + +
+          Sets the registered name of the encryptor and adds it to the registry.
+ voidsetSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator) + +
+          Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ voidsetStringOutputType(String stringOutputType) + +
+          Sets the type of String output ("base64" (default), "hexadecimal") to + be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...).
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+HibernatePBEStringEncryptor

+
+public HibernatePBEStringEncryptor()
+
+
Creates a new instance of HibernatePBEStringEncryptor. It also + creates a StandardPBEStringEncryptor for internal use, which + can be overriden by calling setEncryptor(...). +

+

+ + + + + + + + +
+Method Detail
+ +

+getEncryptor

+
+public org.jasypt.encryption.pbe.PBEStringEncryptor getEncryptor()
+
+
Returns the encryptor which this object wraps. +

+

+ +
Returns:
the encryptor.
+
+
+
+ +

+setEncryptor

+
+public void setEncryptor(org.jasypt.encryption.pbe.PBEStringEncryptor encryptor)
+
+
Sets the PBEStringEncryptor to be held (wrapped) by this + object. This method is optional and can be only called once. +

+

+
Parameters:
encryptor - the encryptor.
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+
Sets the password to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+
Sets the password to be used by the internal encryptor (as a char[]), if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
password - the password to be set for the internal encryptor
Since:
+
1.8
+
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+
Sets the algorithm to be used by the internal encryptor, if a specific + encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
algorithm - the algorithm to be set for the internal encryptor
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(int keyObtentionIterations)
+
+
Sets the key obtention iterations to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
keyObtentionIterations - to be set for the internal encryptor
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator)
+
+
Sets the salt generator to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
saltGenerator - the salt generator to be set for the internal + encryptor.
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+
Sets the name of the JCE provider to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
providerName - the name of the JCE provider (already registered)
Since:
+
1.3
+
+
+
+
+ +

+setProvider

+
+public void setProvider(java.security.Provider provider)
+
+
Sets the JCE provider to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
provider - the JCE provider to be used
Since:
+
1.3
+
+
+
+
+ +

+setStringOutputType

+
+public void setStringOutputType(String stringOutputType)
+
+
Sets the type of String output ("base64" (default), "hexadecimal") to + be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
stringOutputType - the type of String output
Since:
+
1.3
+
+
+
+
+ +

+setConfig

+
+public void setConfig(org.jasypt.encryption.pbe.config.PBEConfig config)
+
+
Sets the PBEConfig to be used by the internal encryptor, + if a specific encryptor has not been set with setEncryptor(...). +

+

+
Parameters:
config - the PBEConfig to be set for the internal encryptor
+
+
+
+ +

+encrypt

+
+public String encrypt(String message)
+
+
Encrypts a message, delegating to wrapped encryptor. +

+

+
Parameters:
message - the message to be encrypted. +
Returns:
the encryption result.
+
+
+
+ +

+decrypt

+
+public String decrypt(String encryptedMessage)
+
+
Decypts a message, delegating to wrapped encryptor +

+

+
Parameters:
encryptedMessage - the message to be decrypted. +
Returns:
the result of decryption.
+
+
+
+ +

+setRegisteredName

+
+public void setRegisteredName(String registeredName)
+
+
Sets the registered name of the encryptor and adds it to the registry. +

+

+
Parameters:
registeredName - the name with which the encryptor will be + registered.
+
+
+
+ +

+getRegisteredName

+
+public String getRegisteredName()
+
+
Returns the name with which the wrapped encryptor is registered at + the registry. +

+

+ +
Returns:
the registered name.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/class-use/HibernatePBEBigDecimalEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/class-use/HibernatePBEBigDecimalEncryptor.html new file mode 100644 index 00000000..253a1574 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/class-use/HibernatePBEBigDecimalEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.encryptor.HibernatePBEBigDecimalEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.encryptor.HibernatePBEBigDecimalEncryptor

+
+No usage of org.jasypt.hibernate4.encryptor.HibernatePBEBigDecimalEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/class-use/HibernatePBEBigIntegerEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/class-use/HibernatePBEBigIntegerEncryptor.html new file mode 100644 index 00000000..4a068160 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/class-use/HibernatePBEBigIntegerEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.encryptor.HibernatePBEBigIntegerEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.encryptor.HibernatePBEBigIntegerEncryptor

+
+No usage of org.jasypt.hibernate4.encryptor.HibernatePBEBigIntegerEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/class-use/HibernatePBEByteEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/class-use/HibernatePBEByteEncryptor.html new file mode 100644 index 00000000..8ec09760 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/class-use/HibernatePBEByteEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.encryptor.HibernatePBEByteEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.encryptor.HibernatePBEByteEncryptor

+
+No usage of org.jasypt.hibernate4.encryptor.HibernatePBEByteEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/class-use/HibernatePBEEncryptorRegistry.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/class-use/HibernatePBEEncryptorRegistry.html new file mode 100644 index 00000000..a18afc9d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/class-use/HibernatePBEEncryptorRegistry.html @@ -0,0 +1,181 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.encryptor.HibernatePBEEncryptorRegistry (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.encryptor.HibernatePBEEncryptorRegistry

+
+ + + + + + + + + +
+Packages that use HibernatePBEEncryptorRegistry
org.jasypt.hibernate4.encryptor  
+  +

+ + + + + +
+Uses of HibernatePBEEncryptorRegistry in org.jasypt.hibernate4.encryptor
+  +

+ + + + + + + + + +
Methods in org.jasypt.hibernate4.encryptor that return HibernatePBEEncryptorRegistry
+static HibernatePBEEncryptorRegistryHibernatePBEEncryptorRegistry.getInstance() + +
+          Returns the singleton instance of the registry.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/class-use/HibernatePBEStringEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/class-use/HibernatePBEStringEncryptor.html new file mode 100644 index 00000000..4a85b457 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/class-use/HibernatePBEStringEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.encryptor.HibernatePBEStringEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.encryptor.HibernatePBEStringEncryptor

+
+No usage of org.jasypt.hibernate4.encryptor.HibernatePBEStringEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/package-frame.html new file mode 100644 index 00000000..03641410 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/package-frame.html @@ -0,0 +1,41 @@ + + + + + + + +org.jasypt.hibernate4.encryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.hibernate4.encryptor + + + + +
+Classes  + +
+HibernatePBEBigDecimalEncryptor +
+HibernatePBEBigIntegerEncryptor +
+HibernatePBEByteEncryptor +
+HibernatePBEEncryptorRegistry +
+HibernatePBEStringEncryptor
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/package-summary.html new file mode 100644 index 00000000..e05f44ae --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/package-summary.html @@ -0,0 +1,184 @@ + + + + + + + +org.jasypt.hibernate4.encryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.hibernate4.encryptor +

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Class Summary
HibernatePBEBigDecimalEncryptor + Placeholder class for PBEBigDecimalEncryptor objects which are + eligible for use from Hibernate.
HibernatePBEBigIntegerEncryptor + Placeholder class for PBEBigIntegerEncryptor objects which are + eligible for use from Hibernate.
HibernatePBEByteEncryptor + Placeholder class for PBEByteEncryptor objects which are + eligible for use from Hibernate.
HibernatePBEEncryptorRegistry + Registry for all the PBE*Encryptor which are eligible for + use from Hibernate.
HibernatePBEStringEncryptor + Placeholder class for PBEStringEncryptor objects which are + eligible for use from Hibernate.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/package-tree.html new file mode 100644 index 00000000..a9c079bd --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/package-tree.html @@ -0,0 +1,154 @@ + + + + + + + +org.jasypt.hibernate4.encryptor Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.hibernate4.encryptor +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/package-use.html new file mode 100644 index 00000000..a9b15636 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/encryptor/package-use.html @@ -0,0 +1,173 @@ + + + + + + + +Uses of Package org.jasypt.hibernate4.encryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.hibernate4.encryptor

+
+ + + + + + + + + +
+Packages that use org.jasypt.hibernate4.encryptor
org.jasypt.hibernate4.encryptor  
+  +

+ + + + + + + + +
+Classes in org.jasypt.hibernate4.encryptor used by org.jasypt.hibernate4.encryptor
HibernatePBEEncryptorRegistry + +
+           + Registry for all the PBE*Encryptor which are eligible for + use from Hibernate.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/AbstractEncryptedAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/AbstractEncryptedAsStringType.html new file mode 100644 index 00000000..e5fb5566 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/AbstractEncryptedAsStringType.html @@ -0,0 +1,671 @@ + + + + + + + +AbstractEncryptedAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.type +
+Class AbstractEncryptedAsStringType

+
+Object
+  extended by org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
Direct Known Subclasses:
EncryptedBigDecimalAsStringType, EncryptedBigIntegerAsStringType, EncryptedBooleanAsStringType, EncryptedByteAsStringType, EncryptedCalendarAsStringType, EncryptedDateAsStringType, EncryptedDoubleAsStringType, EncryptedFloatAsStringType, EncryptedIntegerAsStringType, EncryptedLongAsStringType, EncryptedShortAsStringType, EncryptedStringType
+
+
+
+
public abstract class AbstractEncryptedAsStringType
extends Object
implements org.hibernate.usertype.UserType, org.hibernate.usertype.ParameterizedType
+ + +

+Base class for Hibernate UserTypes to store + values as encrypted strings. +

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández, Iván García Sáinz-Aja
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+protected  org.jasypt.encryption.pbe.PBEStringEncryptorencryptor + +
+           
+  + + + + + + + + + + +
+Constructor Summary
AbstractEncryptedAsStringType() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Objectassemble(java.io.Serializable cached, + Object owner) + +
+           
+protected  voidcheckInitialization() + +
+           
+protected abstract  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+protected  StringconvertToString(Object object) + +
+          Converts given Object to its String form.
+ ObjectdeepCopy(Object value) + +
+           
+ java.io.Serializabledisassemble(Object value) + +
+           
+ booleanequals(Object x, + Object y) + +
+           
+ inthashCode(Object x) + +
+           
+ booleanisMutable() + +
+           
+ ObjectnullSafeGet(java.sql.ResultSet rs, + String[] names, + org.hibernate.engine.spi.SessionImplementor session, + Object owner) + +
+           
+ voidnullSafeSet(java.sql.PreparedStatement st, + Object value, + int index, + org.hibernate.engine.spi.SessionImplementor session) + +
+           
+ Objectreplace(Object original, + Object target, + Object owner) + +
+           
+abstract  ClassreturnedClass() + +
+           
+ voidsetParameterValues(java.util.Properties parameters) + +
+           
+ int[]sqlTypes() + +
+           
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+encryptor

+
+protected org.jasypt.encryption.pbe.PBEStringEncryptor encryptor
+
+
+
+
+ + + + + + + + +
+Constructor Detail
+ +

+AbstractEncryptedAsStringType

+
+public AbstractEncryptedAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected abstract Object convertToObject(String string)
+
+
Converts given String to its Object form. +

+

+
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
+
+
+
+ +

+convertToString

+
+protected String convertToString(Object object)
+
+
Converts given Object to its String form. +

+

+
+
+
+
Parameters:
object - the object value +
Returns:
the string form of the passes Object
+
+
+
+ +

+sqlTypes

+
+public final int[] sqlTypes()
+
+
+
Specified by:
sqlTypes in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+returnedClass

+
+public abstract Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+equals

+
+public final boolean equals(Object x,
+                            Object y)
+                     throws org.hibernate.HibernateException
+
+
+
Specified by:
equals in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+deepCopy

+
+public final Object deepCopy(Object value)
+                      throws org.hibernate.HibernateException
+
+
+
Specified by:
deepCopy in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+assemble

+
+public final Object assemble(java.io.Serializable cached,
+                             Object owner)
+                      throws org.hibernate.HibernateException
+
+
+
Specified by:
assemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+disassemble

+
+public final java.io.Serializable disassemble(Object value)
+                                       throws org.hibernate.HibernateException
+
+
+
Specified by:
disassemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+isMutable

+
+public final boolean isMutable()
+
+
+
Specified by:
isMutable in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+hashCode

+
+public final int hashCode(Object x)
+                   throws org.hibernate.HibernateException
+
+
+
Specified by:
hashCode in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+replace

+
+public final Object replace(Object original,
+                            Object target,
+                            Object owner)
+                     throws org.hibernate.HibernateException
+
+
+
Specified by:
replace in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+nullSafeGet

+
+public Object nullSafeGet(java.sql.ResultSet rs,
+                          String[] names,
+                          org.hibernate.engine.spi.SessionImplementor session,
+                          Object owner)
+                   throws org.hibernate.HibernateException,
+                          java.sql.SQLException
+
+
+
Specified by:
nullSafeGet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+nullSafeSet

+
+public void nullSafeSet(java.sql.PreparedStatement st,
+                        Object value,
+                        int index,
+                        org.hibernate.engine.spi.SessionImplementor session)
+                 throws org.hibernate.HibernateException,
+                        java.sql.SQLException
+
+
+
Specified by:
nullSafeSet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+setParameterValues

+
+public void setParameterValues(java.util.Properties parameters)
+
+
+
Specified by:
setParameterValues in interface org.hibernate.usertype.ParameterizedType
+
+
+
+
+
+
+ +

+checkInitialization

+
+protected final void checkInitialization()
+
+
+
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBigDecimalAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBigDecimalAsStringType.html new file mode 100644 index 00000000..9f3a8a38 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBigDecimalAsStringType.html @@ -0,0 +1,388 @@ + + + + + + + +EncryptedBigDecimalAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.type +
+Class EncryptedBigDecimalAsStringType

+
+Object
+  extended by org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate4.type.EncryptedBigDecimalAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedBigDecimalAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of BigDecimal values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigDecimalAsString" class="org.jasypt.hibernate.type.EncryptedBigDecimalAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedBigDecimalAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigDecimalAsString" class="org.jasypt.hibernate.type.EncryptedBigDecimalAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedBigDecimalAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedBigDecimalAsStringType() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+ ClassreturnedClass() + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedBigDecimalAsStringType

+
+public EncryptedBigDecimalAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBigDecimalType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBigDecimalType.html new file mode 100644 index 00000000..b3d62537 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBigDecimalType.html @@ -0,0 +1,646 @@ + + + + + + + +EncryptedBigDecimalType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.type +
+Class EncryptedBigDecimalType

+
+Object
+  extended by org.jasypt.hibernate4.type.EncryptedBigDecimalType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedBigDecimalType
extends Object
implements org.hibernate.usertype.UserType, org.hibernate.usertype.ParameterizedType
+ + +

+

+ A Hibernate UserType implementation which allows transparent + encryption of BigDecimal values during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigDecimal" class="org.jasypt.hibernate.type.EncryptedBigDecimalType">
+      <param name="encryptorRegisteredName">myHibernateBigDecimalEncryptor</param>
+      <param name="decimalScale">2</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedBigDecimal" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEBigDecimalEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateBigDecimalEncryptor (see + HibernatePBEBigDecimalEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigDecimal" class="org.jasypt.hibernate.type.EncryptedBigDecimalType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+      <param name="decimalScale">2</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="address" column="ADDRESS" type="encryptedBigDecimal" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+

+ About the decimalScale parameter +

+ The decimalScale parameter is aimed at setting the scale with which + BigDecimal numbers will be set to and retrieved from the database. It is + an important parameter because many DBMSs return BigDecimal numbers with + a scale equal to the amount of decimal positions declared for the field + (e.g. if we store "18.23" (scale=2) in a DECIMAL(15,5) field, we can get a + "18.23000" (scale=5) back when we retrieve the number). This can affect + correct decryption of encrypted numbers, but specifying a + decimalScale parameter will solve this issue. +

+

+ So, if we set decimalScale to 3, and we store "18.23", this + Hibernate type will send "18.230" to the encryptor, which is the value that + we will get back from the database at retrieval time (a scale of "3" + will be set again on the value obtained from DB). If it is necessary, a + DOWN rounding operation is executed on the number. +

+
+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
EncryptedBigDecimalType() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Objectassemble(java.io.Serializable cached, + Object owner) + +
+           
+ ObjectdeepCopy(Object value) + +
+           
+ java.io.Serializabledisassemble(Object value) + +
+           
+ booleanequals(Object x, + Object y) + +
+           
+ inthashCode(Object x) + +
+           
+ booleanisMutable() + +
+           
+ ObjectnullSafeGet(java.sql.ResultSet rs, + String[] names, + org.hibernate.engine.spi.SessionImplementor session, + Object owner) + +
+           
+ voidnullSafeSet(java.sql.PreparedStatement st, + Object value, + int index, + org.hibernate.engine.spi.SessionImplementor session) + +
+           
+ Objectreplace(Object original, + Object target, + Object owner) + +
+           
+ ClassreturnedClass() + +
+           
+ voidsetParameterValues(java.util.Properties parameters) + +
+           
+ int[]sqlTypes() + +
+           
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedBigDecimalType

+
+public EncryptedBigDecimalType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+sqlTypes

+
+public int[] sqlTypes()
+
+
+
Specified by:
sqlTypes in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+equals

+
+public boolean equals(Object x,
+                      Object y)
+               throws org.hibernate.HibernateException
+
+
+
Specified by:
equals in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+deepCopy

+
+public Object deepCopy(Object value)
+                throws org.hibernate.HibernateException
+
+
+
Specified by:
deepCopy in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+assemble

+
+public Object assemble(java.io.Serializable cached,
+                       Object owner)
+                throws org.hibernate.HibernateException
+
+
+
Specified by:
assemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+disassemble

+
+public java.io.Serializable disassemble(Object value)
+                                 throws org.hibernate.HibernateException
+
+
+
Specified by:
disassemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+isMutable

+
+public boolean isMutable()
+
+
+
Specified by:
isMutable in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+hashCode

+
+public int hashCode(Object x)
+             throws org.hibernate.HibernateException
+
+
+
Specified by:
hashCode in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+replace

+
+public Object replace(Object original,
+                      Object target,
+                      Object owner)
+               throws org.hibernate.HibernateException
+
+
+
Specified by:
replace in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+nullSafeGet

+
+public Object nullSafeGet(java.sql.ResultSet rs,
+                          String[] names,
+                          org.hibernate.engine.spi.SessionImplementor session,
+                          Object owner)
+                   throws org.hibernate.HibernateException,
+                          java.sql.SQLException
+
+
+
Specified by:
nullSafeGet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+nullSafeSet

+
+public void nullSafeSet(java.sql.PreparedStatement st,
+                        Object value,
+                        int index,
+                        org.hibernate.engine.spi.SessionImplementor session)
+                 throws org.hibernate.HibernateException,
+                        java.sql.SQLException
+
+
+
Specified by:
nullSafeSet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+setParameterValues

+
+public void setParameterValues(java.util.Properties parameters)
+
+
+
Specified by:
setParameterValues in interface org.hibernate.usertype.ParameterizedType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBigIntegerAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBigIntegerAsStringType.html new file mode 100644 index 00000000..93466a2e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBigIntegerAsStringType.html @@ -0,0 +1,388 @@ + + + + + + + +EncryptedBigIntegerAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.type +
+Class EncryptedBigIntegerAsStringType

+
+Object
+  extended by org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate4.type.EncryptedBigIntegerAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedBigIntegerAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of BigInteger values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigIntegerAsString" class="org.jasypt.hibernate.type.EncryptedBigIntegerAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedBigIntegerAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigIntegerAsString" class="org.jasypt.hibernate.type.EncryptedBigIntegerAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedBigIntegerAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedBigIntegerAsStringType() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+ ClassreturnedClass() + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedBigIntegerAsStringType

+
+public EncryptedBigIntegerAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBigIntegerType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBigIntegerType.html new file mode 100644 index 00000000..dfe323bf --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBigIntegerType.html @@ -0,0 +1,623 @@ + + + + + + + +EncryptedBigIntegerType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.type +
+Class EncryptedBigIntegerType

+
+Object
+  extended by org.jasypt.hibernate4.type.EncryptedBigIntegerType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedBigIntegerType
extends Object
implements org.hibernate.usertype.UserType, org.hibernate.usertype.ParameterizedType
+ + +

+

+ A Hibernate UserType implementation which allows transparent + encryption of BigInteger values during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigInteger" class="org.jasypt.hibernate.type.EncryptedBigIntegerType">
+      <param name="encryptorRegisteredName">myHibernateBigIntegerEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedBigInteger" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEBigIntegerEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateBigIntegerEncryptor (see + HibernatePBEBigIntegerEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBigInteger" class="org.jasypt.hibernate.type.EncryptedBigIntegerType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="address" column="ADDRESS" type="encryptedBigInteger" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
EncryptedBigIntegerType() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Objectassemble(java.io.Serializable cached, + Object owner) + +
+           
+ ObjectdeepCopy(Object value) + +
+           
+ java.io.Serializabledisassemble(Object value) + +
+           
+ booleanequals(Object x, + Object y) + +
+           
+ inthashCode(Object x) + +
+           
+ booleanisMutable() + +
+           
+ ObjectnullSafeGet(java.sql.ResultSet rs, + String[] names, + org.hibernate.engine.spi.SessionImplementor session, + Object owner) + +
+           
+ voidnullSafeSet(java.sql.PreparedStatement st, + Object value, + int index, + org.hibernate.engine.spi.SessionImplementor session) + +
+           
+ Objectreplace(Object original, + Object target, + Object owner) + +
+           
+ ClassreturnedClass() + +
+           
+ voidsetParameterValues(java.util.Properties parameters) + +
+           
+ int[]sqlTypes() + +
+           
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedBigIntegerType

+
+public EncryptedBigIntegerType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+sqlTypes

+
+public int[] sqlTypes()
+
+
+
Specified by:
sqlTypes in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+equals

+
+public boolean equals(Object x,
+                      Object y)
+               throws org.hibernate.HibernateException
+
+
+
Specified by:
equals in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+deepCopy

+
+public Object deepCopy(Object value)
+                throws org.hibernate.HibernateException
+
+
+
Specified by:
deepCopy in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+assemble

+
+public Object assemble(java.io.Serializable cached,
+                       Object owner)
+                throws org.hibernate.HibernateException
+
+
+
Specified by:
assemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+disassemble

+
+public java.io.Serializable disassemble(Object value)
+                                 throws org.hibernate.HibernateException
+
+
+
Specified by:
disassemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+isMutable

+
+public boolean isMutable()
+
+
+
Specified by:
isMutable in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+hashCode

+
+public int hashCode(Object x)
+             throws org.hibernate.HibernateException
+
+
+
Specified by:
hashCode in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+replace

+
+public Object replace(Object original,
+                      Object target,
+                      Object owner)
+               throws org.hibernate.HibernateException
+
+
+
Specified by:
replace in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+nullSafeGet

+
+public Object nullSafeGet(java.sql.ResultSet rs,
+                          String[] names,
+                          org.hibernate.engine.spi.SessionImplementor session,
+                          Object owner)
+                   throws org.hibernate.HibernateException,
+                          java.sql.SQLException
+
+
+
Specified by:
nullSafeGet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+nullSafeSet

+
+public void nullSafeSet(java.sql.PreparedStatement st,
+                        Object value,
+                        int index,
+                        org.hibernate.engine.spi.SessionImplementor session)
+                 throws org.hibernate.HibernateException,
+                        java.sql.SQLException
+
+
+
Specified by:
nullSafeSet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+setParameterValues

+
+public void setParameterValues(java.util.Properties parameters)
+
+
+
Specified by:
setParameterValues in interface org.hibernate.usertype.ParameterizedType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBinaryType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBinaryType.html new file mode 100644 index 00000000..5815d979 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBinaryType.html @@ -0,0 +1,623 @@ + + + + + + + +EncryptedBinaryType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.type +
+Class EncryptedBinaryType

+
+Object
+  extended by org.jasypt.hibernate4.type.EncryptedBinaryType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedBinaryType
extends Object
implements org.hibernate.usertype.UserType, org.hibernate.usertype.ParameterizedType
+ + +

+

+ A Hibernate UserType implementation which allows transparent + encryption of byte[] values during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBinary" class="org.jasypt.hibernate.type.EncryptedBinaryType">
+      <param name="encryptorRegisteredName">myHibernateByteEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="resume" column="RESUME" type="encryptedBinary" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEByteEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateByteEncryptor (see + HibernatePBEByteEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBinary" class="org.jasypt.hibernate.type.EncryptedBinaryType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="resume" column="RESUME" type="encryptedBinary" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
EncryptedBinaryType() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Objectassemble(java.io.Serializable cached, + Object owner) + +
+           
+ ObjectdeepCopy(Object value) + +
+           
+ java.io.Serializabledisassemble(Object value) + +
+           
+ booleanequals(Object x, + Object y) + +
+           
+ inthashCode(Object x) + +
+           
+ booleanisMutable() + +
+           
+ ObjectnullSafeGet(java.sql.ResultSet rs, + String[] names, + org.hibernate.engine.spi.SessionImplementor session, + Object owner) + +
+           
+ voidnullSafeSet(java.sql.PreparedStatement st, + Object value, + int index, + org.hibernate.engine.spi.SessionImplementor session) + +
+           
+ Objectreplace(Object original, + Object target, + Object owner) + +
+           
+ ClassreturnedClass() + +
+           
+ voidsetParameterValues(java.util.Properties parameters) + +
+           
+ int[]sqlTypes() + +
+           
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedBinaryType

+
+public EncryptedBinaryType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+sqlTypes

+
+public int[] sqlTypes()
+
+
+
Specified by:
sqlTypes in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+equals

+
+public boolean equals(Object x,
+                      Object y)
+               throws org.hibernate.HibernateException
+
+
+
Specified by:
equals in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+deepCopy

+
+public Object deepCopy(Object value)
+                throws org.hibernate.HibernateException
+
+
+
Specified by:
deepCopy in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+assemble

+
+public Object assemble(java.io.Serializable cached,
+                       Object owner)
+                throws org.hibernate.HibernateException
+
+
+
Specified by:
assemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+disassemble

+
+public java.io.Serializable disassemble(Object value)
+                                 throws org.hibernate.HibernateException
+
+
+
Specified by:
disassemble in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+isMutable

+
+public boolean isMutable()
+
+
+
Specified by:
isMutable in interface org.hibernate.usertype.UserType
+
+
+
+
+
+
+ +

+hashCode

+
+public int hashCode(Object x)
+             throws org.hibernate.HibernateException
+
+
+
Specified by:
hashCode in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+replace

+
+public Object replace(Object original,
+                      Object target,
+                      Object owner)
+               throws org.hibernate.HibernateException
+
+
+
Specified by:
replace in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException
+
+
+
+ +

+nullSafeGet

+
+public Object nullSafeGet(java.sql.ResultSet rs,
+                          String[] names,
+                          org.hibernate.engine.spi.SessionImplementor session,
+                          Object owner)
+                   throws org.hibernate.HibernateException,
+                          java.sql.SQLException
+
+
+
Specified by:
nullSafeGet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+nullSafeSet

+
+public void nullSafeSet(java.sql.PreparedStatement st,
+                        Object value,
+                        int index,
+                        org.hibernate.engine.spi.SessionImplementor session)
+                 throws org.hibernate.HibernateException,
+                        java.sql.SQLException
+
+
+
Specified by:
nullSafeSet in interface org.hibernate.usertype.UserType
+
+
+ +
Throws: +
org.hibernate.HibernateException +
java.sql.SQLException
+
+
+
+ +

+setParameterValues

+
+public void setParameterValues(java.util.Properties parameters)
+
+
+
Specified by:
setParameterValues in interface org.hibernate.usertype.ParameterizedType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBooleanAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBooleanAsStringType.html new file mode 100644 index 00000000..f6dfbc55 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedBooleanAsStringType.html @@ -0,0 +1,388 @@ + + + + + + + +EncryptedBooleanAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.type +
+Class EncryptedBooleanAsStringType

+
+Object
+  extended by org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate4.type.EncryptedBooleanAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedBooleanAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Boolean values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBooleanAsString" class="org.jasypt.hibernate.type.EncryptedBooleanAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="active" column="ACTIVE" type="encryptedBooleanAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedBooleanAsString" class="org.jasypt.hibernate.type.EncryptedBooleanAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="active" column="ACTIVE" type="encryptedBooleanAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedBooleanAsStringType() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+ ClassreturnedClass() + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedBooleanAsStringType

+
+public EncryptedBooleanAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedByteAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedByteAsStringType.html new file mode 100644 index 00000000..cf4b252f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedByteAsStringType.html @@ -0,0 +1,388 @@ + + + + + + + +EncryptedByteAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.type +
+Class EncryptedByteAsStringType

+
+Object
+  extended by org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate4.type.EncryptedByteAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedByteAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Byte values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedByteAsString" class="org.jasypt.hibernate.type.EncryptedByteAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedByteAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedByteAsString" class="org.jasypt.hibernate.type.EncryptedByteAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedByteAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedByteAsStringType() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+ ClassreturnedClass() + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedByteAsStringType

+
+public EncryptedByteAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedCalendarAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedCalendarAsStringType.html new file mode 100644 index 00000000..09824f03 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedCalendarAsStringType.html @@ -0,0 +1,443 @@ + + + + + + + +EncryptedCalendarAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.type +
+Class EncryptedCalendarAsStringType

+
+Object
+  extended by org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate4.type.EncryptedCalendarAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedCalendarAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Calendar values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedCalendarAsString" class="org.jasypt.hibernate.type.EncryptedCalendarAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+      <param name="storeTimeZone">true</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="birth" column="BIRTH" type="encryptedCalendarAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ The boolean storeTimeZone parameter allows the Calendar to be + re-created with the same TimeZone that it was created. This is an + optional parameter, and its default value is FALSE. +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedCalendarAsString" class="org.jasypt.hibernate.type.EncryptedCalendarAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+      <param name="storeTimeZone">true</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="birth" column="BIRTH" type="encryptedCalendarAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedCalendarAsStringType() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+protected  StringconvertToString(Object object) + +
+          Converts given Object to its String form.
+ ClassreturnedClass() + +
+           
+ voidsetParameterValues(java.util.Properties parameters) + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
assemble, checkInitialization, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedCalendarAsStringType

+
+public EncryptedCalendarAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String)
+
+
+
+ +

+convertToString

+
+protected String convertToString(Object object)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given Object to its String form. +

+

+
Overrides:
convertToString in class AbstractEncryptedAsStringType
+
+
+
Parameters:
object - the object value +
Returns:
the string form of the passes Object
See Also:
org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToString(java.lang.Object)
+
+
+
+ +

+setParameterValues

+
+public void setParameterValues(java.util.Properties parameters)
+
+
+
Specified by:
setParameterValues in interface org.hibernate.usertype.ParameterizedType
Overrides:
setParameterValues in class AbstractEncryptedAsStringType
+
+
+
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedDateAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedDateAsStringType.html new file mode 100644 index 00000000..d03ee9ad --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedDateAsStringType.html @@ -0,0 +1,414 @@ + + + + + + + +EncryptedDateAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.type +
+Class EncryptedDateAsStringType

+
+Object
+  extended by org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate4.type.EncryptedDateAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedDateAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Date values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedDateAsString" class="org.jasypt.hibernate.type.EncryptedDateAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="birth" column="BIRTH" type="encryptedDateAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedDateAsString" class="org.jasypt.hibernate.type.EncryptedDateAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="birth" column="BIRTH" type="encryptedDateAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedDateAsStringType() + +
+           
+  + + + + + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+protected  StringconvertToString(Object object) + +
+          Converts given Object to its String form.
+ ClassreturnedClass() + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
assemble, checkInitialization, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedDateAsStringType

+
+public EncryptedDateAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String)
+
+
+
+ +

+convertToString

+
+protected String convertToString(Object object)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given Object to its String form. +

+

+
Overrides:
convertToString in class AbstractEncryptedAsStringType
+
+
+
Parameters:
object - the object value +
Returns:
the string form of the passes Object
See Also:
org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToString(java.lang.Object)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedDoubleAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedDoubleAsStringType.html new file mode 100644 index 00000000..7b665d3e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedDoubleAsStringType.html @@ -0,0 +1,388 @@ + + + + + + + +EncryptedDoubleAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.type +
+Class EncryptedDoubleAsStringType

+
+Object
+  extended by org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate4.type.EncryptedDoubleAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedDoubleAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Double values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedDoubleAsString" class="org.jasypt.hibernate.type.EncryptedDoubleAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedDoubleAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedDoubleAsString" class="org.jasypt.hibernate.type.EncryptedDoubleAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedDoubleAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedDoubleAsStringType() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+ ClassreturnedClass() + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedDoubleAsStringType

+
+public EncryptedDoubleAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedFloatAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedFloatAsStringType.html new file mode 100644 index 00000000..494b3a01 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedFloatAsStringType.html @@ -0,0 +1,388 @@ + + + + + + + +EncryptedFloatAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.type +
+Class EncryptedFloatAsStringType

+
+Object
+  extended by org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate4.type.EncryptedFloatAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedFloatAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Float values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedFloatAsString" class="org.jasypt.hibernate.type.EncryptedFloatAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedFloatAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedFloatAsString" class="org.jasypt.hibernate.type.EncryptedFloatAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedFloatAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedFloatAsStringType() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+ ClassreturnedClass() + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedFloatAsStringType

+
+public EncryptedFloatAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedIntegerAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedIntegerAsStringType.html new file mode 100644 index 00000000..6a3b7fc4 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedIntegerAsStringType.html @@ -0,0 +1,388 @@ + + + + + + + +EncryptedIntegerAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.type +
+Class EncryptedIntegerAsStringType

+
+Object
+  extended by org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate4.type.EncryptedIntegerAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedIntegerAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Integer values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedIntegerAsString" class="org.jasypt.hibernate.type.EncryptedIntegerAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedIntegerAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedIntegerAsString" class="org.jasypt.hibernate.type.EncryptedIntegerAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedIntegerAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedIntegerAsStringType() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+ ClassreturnedClass() + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedIntegerAsStringType

+
+public EncryptedIntegerAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedLongAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedLongAsStringType.html new file mode 100644 index 00000000..a2ff7cab --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedLongAsStringType.html @@ -0,0 +1,388 @@ + + + + + + + +EncryptedLongAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.type +
+Class EncryptedLongAsStringType

+
+Object
+  extended by org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate4.type.EncryptedLongAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedLongAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Long values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedLongAsString" class="org.jasypt.hibernate.type.EncryptedLongAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedLongAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedLongAsString" class="org.jasypt.hibernate.type.EncryptedLongAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedLongAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedLongAsStringType() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+ ClassreturnedClass() + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedLongAsStringType

+
+public EncryptedLongAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedShortAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedShortAsStringType.html new file mode 100644 index 00000000..b6c6bcce --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedShortAsStringType.html @@ -0,0 +1,388 @@ + + + + + + + +EncryptedShortAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.type +
+Class EncryptedShortAsStringType

+
+Object
+  extended by org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate4.type.EncryptedShortAsStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedShortAsStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows + encryption of Short values into String (VARCHAR) database fields + during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedShortAsString" class="org.jasypt.hibernate.type.EncryptedShortAsStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedShortAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedShortAsString" class="org.jasypt.hibernate.type.EncryptedShortAsStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="salary" column="SALARY" type="encryptedShortAsString" />
+      ...
+    <class>
+    ...
+  <hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedShortAsStringType() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String string) + +
+          Converts given String to its Object form.
+ ClassreturnedClass() + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedShortAsStringType

+
+public EncryptedShortAsStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String string)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
string - the string value +
Returns:
the object form of the passed String
See Also:
org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedStringType.html new file mode 100644 index 00000000..256fc283 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/EncryptedStringType.html @@ -0,0 +1,387 @@ + + + + + + + +EncryptedStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.type +
+Class EncryptedStringType

+
+Object
+  extended by org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
+      extended by org.jasypt.hibernate4.type.EncryptedStringType
+
+
+
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType
+
+
+
+
public final class EncryptedStringType
extends AbstractEncryptedAsStringType
+ + +

+

+ A Hibernate UserType implementation which allows transparent + encryption of String values during persistence of entities. +

+

+ This class is intended only for declarative use from a Hibernate mapping + file. Do not use it directly from your .java files (although + of course you can use it when mapping entities using annotations). +

+

+ To use this Hibernate type in one of your Hibernate mappings, you can + add it like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedString" class="org.jasypt.hibernate.type.EncryptedStringType">
+      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="address" column="ADDRESS" type="encryptedString" />
+      ...
+    </class>
+    ...
+  </hibernate-mapping>
+ 
+

+

+ ...where a HibernatePBEStringEncryptor object + should have been previously registered to be used + from Hibernate with name myHibernateStringEncryptor (see + HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry). +

+

+ Or, if you prefer to avoid registration of encryptors, you can configure + your encryptor directly in the mapping file (although not recommended), + like this: +

+

+

+  <hibernate-mapping package="myapp">
+    ...
+    <typedef name="encryptedString" class="org.jasypt.hibernate.type.EncryptedStringType">
+      <param name="algorithm">PBEWithMD5AndTripleDES</param>
+      <param name="password">XXXXX</param>
+      <param name="keyObtentionIterations">1000</param>
+    </typedef>
+    ...
+    <class name="UserData" table="USER_DATA">
+      ...
+      <property name="address" column="ADDRESS" type="encryptedString" />
+      ...
+    </class>
+    ...
+  </hibernate-mapping>
+ 
+

+

+ To learn more about usage of user-defined types, please refer to the + Hibernate Reference + Documentation. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
encryptor
+  + + + + + + + + + + +
+Constructor Summary
EncryptedStringType() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  ObjectconvertToObject(String stringValue) + +
+          Converts given String to its Object form.
+ ClassreturnedClass() + +
+           
+ + + + + + + +
Methods inherited from class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType
assemble, checkInitialization, convertToString, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace, setParameterValues, sqlTypes
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptedStringType

+
+public EncryptedStringType()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convertToObject

+
+protected Object convertToObject(String stringValue)
+
+
Description copied from class: AbstractEncryptedAsStringType
+
Converts given String to its Object form. +

+

+
Specified by:
convertToObject in class AbstractEncryptedAsStringType
+
+
+
Parameters:
stringValue - the string value +
Returns:
the object form of the passed String
See Also:
org.jasypt.hibernate.type.AbstractEncryptedAsStringType#convertToObject(java.lang.String)
+
+
+
+ +

+returnedClass

+
+public Class returnedClass()
+
+
+
Specified by:
returnedClass in interface org.hibernate.usertype.UserType
Specified by:
returnedClass in class AbstractEncryptedAsStringType
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/ParameterNaming.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/ParameterNaming.html new file mode 100644 index 00000000..3889aef1 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/ParameterNaming.html @@ -0,0 +1,441 @@ + + + + + + + +ParameterNaming (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.hibernate4.type +
+Class ParameterNaming

+
+Object
+  extended by org.jasypt.hibernate4.type.ParameterNaming
+
+
+
+
public final class ParameterNaming
extends Object
+ + +

+

+ Constant names of the parameters that can be used by a jasypt type's + typedef declaration in a Hibernate mapping. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Summary
+static StringALGORITHM + +
+           + The encryption algorithm.
+static StringDECIMAL_SCALE + +
+           + The scale (numbers after the decimal point) to be used when storing + decimal numbers.
+static StringENCRYPTOR_NAME + +
+           + The registered name of an encryptor previously registered at the + HibernatePBEEncryptorRegistry.
+static StringKEY_OBTENTION_ITERATIONS + +
+           + The number of hashing iterations to be applied for obtaining the + encryption key.
+static StringPASSWORD + +
+           + The encryption password.
+static StringPROVIDER_NAME + +
+           + The name of the JCE security provider we want to get the algorithm from + (if it is no the default one.
+static StringSTORE_TIME_ZONE + +
+           + Whether the calendar time zone should be stored with the date or not.
+static StringSTRING_OUTPUT_TYPE + +
+           + The type of String output ("base64" (default), "hexadecimal") to be + generated.
+  + + + + + + + +
+Method Summary
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+ENCRYPTOR_NAME

+
+public static final String ENCRYPTOR_NAME
+
+

+ The registered name of an encryptor previously registered at the + HibernatePBEEncryptorRegistry. +

+

+ Value = encryptorRegisteredName +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+ALGORITHM

+
+public static final String ALGORITHM
+
+

+ The encryption algorithm. +

+

+ Value = algorithm +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+PROVIDER_NAME

+
+public static final String PROVIDER_NAME
+
+

+ The name of the JCE security provider we want to get the algorithm from + (if it is no the default one. +

+

+ Value = providerName +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+PASSWORD

+
+public static final String PASSWORD
+
+

+ The encryption password. +

+

+ Value = password +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+KEY_OBTENTION_ITERATIONS

+
+public static final String KEY_OBTENTION_ITERATIONS
+
+

+ The number of hashing iterations to be applied for obtaining the + encryption key. +

+

+ Value = keyObtentionIterations +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+STRING_OUTPUT_TYPE

+
+public static final String STRING_OUTPUT_TYPE
+
+

+ The type of String output ("base64" (default), "hexadecimal") to be + generated. +

+

+ Value = stringOutputType +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+DECIMAL_SCALE

+
+public static final String DECIMAL_SCALE
+
+

+ The scale (numbers after the decimal point) to be used when storing + decimal numbers. +

+

+ Value = decimalScale +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+STORE_TIME_ZONE

+
+public static final String STORE_TIME_ZONE
+
+

+ Whether the calendar time zone should be stored with the date or not. +

+

+ Value = storeTimeZone +

+

+

+
See Also:
Constant Field Values
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/AbstractEncryptedAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/AbstractEncryptedAsStringType.html new file mode 100644 index 00000000..fded65de --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/AbstractEncryptedAsStringType.html @@ -0,0 +1,304 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.type.AbstractEncryptedAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.type.AbstractEncryptedAsStringType

+
+ + + + + + + + + +
+Packages that use AbstractEncryptedAsStringType
org.jasypt.hibernate4.type  
+  +

+ + + + + +
+Uses of AbstractEncryptedAsStringType in org.jasypt.hibernate4.type
+  +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Subclasses of AbstractEncryptedAsStringType in org.jasypt.hibernate4.type
+ classEncryptedBigDecimalAsStringType + +
+           + A Hibernate UserType implementation which allows + encryption of BigDecimal values into String (VARCHAR) database fields + during persistence of entities.
+ classEncryptedBigIntegerAsStringType + +
+           + A Hibernate UserType implementation which allows + encryption of BigInteger values into String (VARCHAR) database fields + during persistence of entities.
+ classEncryptedBooleanAsStringType + +
+           + A Hibernate UserType implementation which allows + encryption of Boolean values into String (VARCHAR) database fields + during persistence of entities.
+ classEncryptedByteAsStringType + +
+           + A Hibernate UserType implementation which allows + encryption of Byte values into String (VARCHAR) database fields + during persistence of entities.
+ classEncryptedCalendarAsStringType + +
+           + A Hibernate UserType implementation which allows + encryption of Calendar values into String (VARCHAR) database fields + during persistence of entities.
+ classEncryptedDateAsStringType + +
+           + A Hibernate UserType implementation which allows + encryption of Date values into String (VARCHAR) database fields + during persistence of entities.
+ classEncryptedDoubleAsStringType + +
+           + A Hibernate UserType implementation which allows + encryption of Double values into String (VARCHAR) database fields + during persistence of entities.
+ classEncryptedFloatAsStringType + +
+           + A Hibernate UserType implementation which allows + encryption of Float values into String (VARCHAR) database fields + during persistence of entities.
+ classEncryptedIntegerAsStringType + +
+           + A Hibernate UserType implementation which allows + encryption of Integer values into String (VARCHAR) database fields + during persistence of entities.
+ classEncryptedLongAsStringType + +
+           + A Hibernate UserType implementation which allows + encryption of Long values into String (VARCHAR) database fields + during persistence of entities.
+ classEncryptedShortAsStringType + +
+           + A Hibernate UserType implementation which allows + encryption of Short values into String (VARCHAR) database fields + during persistence of entities.
+ classEncryptedStringType + +
+           + A Hibernate UserType implementation which allows transparent + encryption of String values during persistence of entities.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBigDecimalAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBigDecimalAsStringType.html new file mode 100644 index 00000000..1f9dc27c --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBigDecimalAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.type.EncryptedBigDecimalAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.type.EncryptedBigDecimalAsStringType

+
+No usage of org.jasypt.hibernate4.type.EncryptedBigDecimalAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBigDecimalType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBigDecimalType.html new file mode 100644 index 00000000..d8083ca1 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBigDecimalType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.type.EncryptedBigDecimalType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.type.EncryptedBigDecimalType

+
+No usage of org.jasypt.hibernate4.type.EncryptedBigDecimalType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBigIntegerAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBigIntegerAsStringType.html new file mode 100644 index 00000000..e6f2adbe --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBigIntegerAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.type.EncryptedBigIntegerAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.type.EncryptedBigIntegerAsStringType

+
+No usage of org.jasypt.hibernate4.type.EncryptedBigIntegerAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBigIntegerType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBigIntegerType.html new file mode 100644 index 00000000..7f266be0 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBigIntegerType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.type.EncryptedBigIntegerType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.type.EncryptedBigIntegerType

+
+No usage of org.jasypt.hibernate4.type.EncryptedBigIntegerType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBinaryType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBinaryType.html new file mode 100644 index 00000000..19cc14e6 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBinaryType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.type.EncryptedBinaryType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.type.EncryptedBinaryType

+
+No usage of org.jasypt.hibernate4.type.EncryptedBinaryType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBooleanAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBooleanAsStringType.html new file mode 100644 index 00000000..dc8c6d6b --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedBooleanAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.type.EncryptedBooleanAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.type.EncryptedBooleanAsStringType

+
+No usage of org.jasypt.hibernate4.type.EncryptedBooleanAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedByteAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedByteAsStringType.html new file mode 100644 index 00000000..ece6a57b --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedByteAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.type.EncryptedByteAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.type.EncryptedByteAsStringType

+
+No usage of org.jasypt.hibernate4.type.EncryptedByteAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedCalendarAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedCalendarAsStringType.html new file mode 100644 index 00000000..0f36c806 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedCalendarAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.type.EncryptedCalendarAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.type.EncryptedCalendarAsStringType

+
+No usage of org.jasypt.hibernate4.type.EncryptedCalendarAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedDateAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedDateAsStringType.html new file mode 100644 index 00000000..2e1c426c --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedDateAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.type.EncryptedDateAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.type.EncryptedDateAsStringType

+
+No usage of org.jasypt.hibernate4.type.EncryptedDateAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedDoubleAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedDoubleAsStringType.html new file mode 100644 index 00000000..b3fd3248 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedDoubleAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.type.EncryptedDoubleAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.type.EncryptedDoubleAsStringType

+
+No usage of org.jasypt.hibernate4.type.EncryptedDoubleAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedFloatAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedFloatAsStringType.html new file mode 100644 index 00000000..fb4b3de6 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedFloatAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.type.EncryptedFloatAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.type.EncryptedFloatAsStringType

+
+No usage of org.jasypt.hibernate4.type.EncryptedFloatAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedIntegerAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedIntegerAsStringType.html new file mode 100644 index 00000000..bec20e69 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedIntegerAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.type.EncryptedIntegerAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.type.EncryptedIntegerAsStringType

+
+No usage of org.jasypt.hibernate4.type.EncryptedIntegerAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedLongAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedLongAsStringType.html new file mode 100644 index 00000000..6a082fdc --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedLongAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.type.EncryptedLongAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.type.EncryptedLongAsStringType

+
+No usage of org.jasypt.hibernate4.type.EncryptedLongAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedShortAsStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedShortAsStringType.html new file mode 100644 index 00000000..19ea6e7a --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedShortAsStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.type.EncryptedShortAsStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.type.EncryptedShortAsStringType

+
+No usage of org.jasypt.hibernate4.type.EncryptedShortAsStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedStringType.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedStringType.html new file mode 100644 index 00000000..66fcfa44 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/EncryptedStringType.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.type.EncryptedStringType (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.type.EncryptedStringType

+
+No usage of org.jasypt.hibernate4.type.EncryptedStringType +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/ParameterNaming.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/ParameterNaming.html new file mode 100644 index 00000000..0b195cb4 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/class-use/ParameterNaming.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.hibernate4.type.ParameterNaming (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.hibernate4.type.ParameterNaming

+
+No usage of org.jasypt.hibernate4.type.ParameterNaming +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/package-frame.html new file mode 100644 index 00000000..a4723b20 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/package-frame.html @@ -0,0 +1,65 @@ + + + + + + + +org.jasypt.hibernate4.type (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.hibernate4.type + + + + +
+Classes  + +
+AbstractEncryptedAsStringType +
+EncryptedBigDecimalAsStringType +
+EncryptedBigDecimalType +
+EncryptedBigIntegerAsStringType +
+EncryptedBigIntegerType +
+EncryptedBinaryType +
+EncryptedBooleanAsStringType +
+EncryptedByteAsStringType +
+EncryptedCalendarAsStringType +
+EncryptedDateAsStringType +
+EncryptedDoubleAsStringType +
+EncryptedFloatAsStringType +
+EncryptedIntegerAsStringType +
+EncryptedLongAsStringType +
+EncryptedShortAsStringType +
+EncryptedStringType +
+ParameterNaming
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/package-summary.html new file mode 100644 index 00000000..46b9ff04 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/package-summary.html @@ -0,0 +1,266 @@ + + + + + + + +org.jasypt.hibernate4.type (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.hibernate4.type +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Class Summary
AbstractEncryptedAsStringTypeBase class for Hibernate UserTypes to store + values as encrypted strings.
EncryptedBigDecimalAsStringType + A Hibernate UserType implementation which allows + encryption of BigDecimal values into String (VARCHAR) database fields + during persistence of entities.
EncryptedBigDecimalType + A Hibernate UserType implementation which allows transparent + encryption of BigDecimal values during persistence of entities.
EncryptedBigIntegerAsStringType + A Hibernate UserType implementation which allows + encryption of BigInteger values into String (VARCHAR) database fields + during persistence of entities.
EncryptedBigIntegerType + A Hibernate UserType implementation which allows transparent + encryption of BigInteger values during persistence of entities.
EncryptedBinaryType + A Hibernate UserType implementation which allows transparent + encryption of byte[] values during persistence of entities.
EncryptedBooleanAsStringType + A Hibernate UserType implementation which allows + encryption of Boolean values into String (VARCHAR) database fields + during persistence of entities.
EncryptedByteAsStringType + A Hibernate UserType implementation which allows + encryption of Byte values into String (VARCHAR) database fields + during persistence of entities.
EncryptedCalendarAsStringType + A Hibernate UserType implementation which allows + encryption of Calendar values into String (VARCHAR) database fields + during persistence of entities.
EncryptedDateAsStringType + A Hibernate UserType implementation which allows + encryption of Date values into String (VARCHAR) database fields + during persistence of entities.
EncryptedDoubleAsStringType + A Hibernate UserType implementation which allows + encryption of Double values into String (VARCHAR) database fields + during persistence of entities.
EncryptedFloatAsStringType + A Hibernate UserType implementation which allows + encryption of Float values into String (VARCHAR) database fields + during persistence of entities.
EncryptedIntegerAsStringType + A Hibernate UserType implementation which allows + encryption of Integer values into String (VARCHAR) database fields + during persistence of entities.
EncryptedLongAsStringType + A Hibernate UserType implementation which allows + encryption of Long values into String (VARCHAR) database fields + during persistence of entities.
EncryptedShortAsStringType + A Hibernate UserType implementation which allows + encryption of Short values into String (VARCHAR) database fields + during persistence of entities.
EncryptedStringType + A Hibernate UserType implementation which allows transparent + encryption of String values during persistence of entities.
ParameterNaming + Constant names of the parameters that can be used by a jasypt type's + typedef declaration in a Hibernate mapping.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/package-tree.html new file mode 100644 index 00000000..613c9ccb --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/package-tree.html @@ -0,0 +1,160 @@ + + + + + + + +org.jasypt.hibernate4.type Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.hibernate4.type +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/package-use.html new file mode 100644 index 00000000..10dc3027 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/org/jasypt/hibernate4/type/package-use.html @@ -0,0 +1,172 @@ + + + + + + + +Uses of Package org.jasypt.hibernate4.type (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.hibernate4.type

+
+ + + + + + + + + +
+Packages that use org.jasypt.hibernate4.type
org.jasypt.hibernate4.type  
+  +

+ + + + + + + + +
+Classes in org.jasypt.hibernate4.type used by org.jasypt.hibernate4.type
AbstractEncryptedAsStringType + +
+          Base class for Hibernate UserTypes to store + values as encrypted strings.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/overview-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/overview-frame.html new file mode 100644 index 00000000..f0677cdd --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/overview-frame.html @@ -0,0 +1,47 @@ + + + + + + + +Overview List (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + + + + +
+
+ + + + + +
All Classes +

+ +Packages +
+org.jasypt.hibernate4.connectionprovider +
+org.jasypt.hibernate4.encryptor +
+org.jasypt.hibernate4.type +
+

+ +

+  + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/overview-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/overview-summary.html new file mode 100644 index 00000000..2a6deb81 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/overview-summary.html @@ -0,0 +1,165 @@ + + + + + + + +Overview (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+JASYPT: Java Simplified Encryption 1.9.2 API +

+
+ + + + + + + + + + + + + + + + + +
+Packages
org.jasypt.hibernate4.connectionprovider 
org.jasypt.hibernate4.encryptor 
org.jasypt.hibernate4.type 
+ +


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/overview-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/overview-tree.html new file mode 100644 index 00000000..a7aa47af --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/overview-tree.html @@ -0,0 +1,165 @@ + + + + + + + +Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For All Packages

+
+
+
Package Hierarchies:
org.jasypt.hibernate4.connectionprovider, org.jasypt.hibernate4.encryptor, org.jasypt.hibernate4.type
+
+

+Class Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/package-list b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/package-list new file mode 100644 index 00000000..6d595414 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/package-list @@ -0,0 +1,3 @@ +org.jasypt.hibernate4.connectionprovider +org.jasypt.hibernate4.encryptor +org.jasypt.hibernate4.type diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/resources/inherit.gif b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/resources/inherit.gif new file mode 100644 index 0000000000000000000000000000000000000000..c814867a13deb0ca7ea2156c6ca1d5a03372af7e GIT binary patch literal 57 zcmZ?wbhEHbIIT!9-C*e{wE9>Kx3D)-;0v)C; KYxQGgum%9JOA&7X literal 0 HcmV?d00001 diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/serialized-form.html b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/serialized-form.html new file mode 100644 index 00000000..fe952834 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/serialized-form.html @@ -0,0 +1,181 @@ + + + + + + + +Serialized Form (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Serialized Form

+
+
+ + + + + +
+Package org.jasypt.hibernate4.connectionprovider
+ +

+ + + + + +
+Class org.jasypt.hibernate4.connectionprovider.EncryptedPasswordC3P0ConnectionProvider extends org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider implements Serializable
+ +

+serialVersionUID: 5273353009914873806L + +

+ +

+ + + + + +
+Class org.jasypt.hibernate4.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider extends org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl implements Serializable
+ +

+serialVersionUID: 7409509667904250297L + +

+ +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/stylesheet.css b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/stylesheet.css new file mode 100644 index 00000000..6ea9e516 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-hibernate4/stylesheet.css @@ -0,0 +1,29 @@ +/* Javadoc style sheet */ + +/* Define colors, fonts and other style attributes here to override the defaults */ + +/* Page background color */ +body { background-color: #FFFFFF; color:#000000 } + +/* Headings */ +h1 { font-size: 145% } + +/* Table colors */ +.TableHeadingColor { background: #CCCCFF; color:#000000 } /* Dark mauve */ +.TableSubHeadingColor { background: #EEEEFF; color:#000000 } /* Light mauve */ +.TableRowColor { background: #FFFFFF; color:#000000 } /* White */ + +/* Font used in left-hand frame lists */ +.FrameTitleFont { font-size: 100%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameHeadingFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameItemFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } + +/* Navigation bar fonts and colors */ +.NavBarCell1 { background-color:#EEEEFF; color:#000000} /* Light mauve */ +.NavBarCell1Rev { background-color:#00008B; color:#FFFFFF} /* Dark Blue */ +.NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;color:#000000;} +.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;color:#FFFFFF;} + +.NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} +.NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/allclasses-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/allclasses-frame.html new file mode 100644 index 00000000..865853d2 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/allclasses-frame.html @@ -0,0 +1,46 @@ + + + + + + + +All Classes (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +All Classes +
+ + + + + +
EncryptablePreferencesPlaceholderConfigurer +
+EncryptablePreferencesPlaceholderConfigurer +
+EncryptablePropertyOverrideConfigurer +
+EncryptablePropertyOverrideConfigurer +
+EncryptablePropertyPlaceholderConfigurer +
+EncryptablePropertyPlaceholderConfigurer +
+EncryptableServletContextPropertyPlaceholderConfigurer +
+EncryptableServletContextPropertyPlaceholderConfigurer +
+
+ + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/allclasses-noframe.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/allclasses-noframe.html new file mode 100644 index 00000000..ebaa5792 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/allclasses-noframe.html @@ -0,0 +1,46 @@ + + + + + + + +All Classes (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +All Classes +
+ + + + + +
EncryptablePreferencesPlaceholderConfigurer +
+EncryptablePreferencesPlaceholderConfigurer +
+EncryptablePropertyOverrideConfigurer +
+EncryptablePropertyOverrideConfigurer +
+EncryptablePropertyPlaceholderConfigurer +
+EncryptablePropertyPlaceholderConfigurer +
+EncryptableServletContextPropertyPlaceholderConfigurer +
+EncryptableServletContextPropertyPlaceholderConfigurer +
+
+ + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/constant-values.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/constant-values.html new file mode 100644 index 00000000..c102ecc5 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/constant-values.html @@ -0,0 +1,147 @@ + + + + + + + +Constant Field Values (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Constant Field Values

+
+
+Contents
    +
+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/deprecated-list.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/deprecated-list.html new file mode 100644 index 00000000..837612d1 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/deprecated-list.html @@ -0,0 +1,181 @@ + + + + + + + +Deprecated List (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Deprecated API

+
+
+Contents + + + + + + + + + + + + + + + + + + +
+Deprecated Classes
org.jasypt.spring.properties.EncryptablePreferencesPlaceholderConfigurer +
+          Package renamed as org.jasypt.spring2.properties. Classes in + this package will be removed in 1.11. 
org.jasypt.spring.properties.EncryptablePropertyOverrideConfigurer +
+          Package renamed as org.jasypt.spring2.properties. Classes in + this package will be removed in 1.11. 
org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer +
+          Package renamed as org.jasypt.spring2.properties. Classes in + this package will be removed in 1.11. 
org.jasypt.spring.properties.EncryptableServletContextPropertyPlaceholderConfigurer +
+          Package renamed as org.jasypt.spring2.properties. Classes in + this package will be removed in 1.11. 
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/help-doc.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/help-doc.html new file mode 100644 index 00000000..aca42453 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/help-doc.html @@ -0,0 +1,224 @@ + + + + + + + +API Help (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+How This API Document Is Organized

+
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.

+Overview

+
+ +

+The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

+

+Package

+
+ +

+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:

    +
  • Interfaces (italic)
  • Classes
  • Enums
  • Exceptions
  • Errors
  • Annotation Types
+
+

+Class/Interface

+
+ +

+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
  • Class inheritance diagram
  • Direct Subclasses
  • All Known Subinterfaces
  • All Known Implementing Classes
  • Class/interface declaration
  • Class/interface description +

    +

  • Nested Class Summary
  • Field Summary
  • Constructor Summary
  • Method Summary +

    +

  • Field Detail
  • Constructor Detail
  • Method Detail
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+ +

+Annotation Type

+
+ +

+Each annotation type has its own separate page with the following sections:

    +
  • Annotation Type declaration
  • Annotation Type description
  • Required Element Summary
  • Optional Element Summary
  • Element Detail
+
+ +

+Enum

+
+ +

+Each enum has its own separate page with the following sections:

    +
  • Enum declaration
  • Enum description
  • Enum Constant Summary
  • Enum Constant Detail
+
+

+Use

+
+Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.
+

+Tree (Class Hierarchy)

+
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.
    +
  • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
  • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
+
+

+Deprecated API

+
+The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+

+Index

+
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+

+Prev/Next

+These links take you to the next or previous class, interface, package, or related page.

+Frames/No Frames

+These links show and hide the HTML frames. All pages are available with or without frames. +

+

+Serialized Form

+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description. +

+

+Constant Field Values

+The Constant Field Values page lists the static final fields and their values. +

+ + +This help file applies to API documentation generated using the standard doclet. + +
+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/index-all.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/index-all.html new file mode 100644 index 00000000..d12656c2 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/index-all.html @@ -0,0 +1,312 @@ + + + + + + + +Index (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +C E O R
+

+C

+
+
convertPropertyValue(String) - +Method in class org.jasypt.spring.properties.EncryptablePreferencesPlaceholderConfigurer +
Deprecated.   +
convertPropertyValue(String) - +Method in class org.jasypt.spring.properties.EncryptablePropertyOverrideConfigurer +
Deprecated.   +
convertPropertyValue(String) - +Method in class org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer +
Deprecated.   +
convertPropertyValue(String) - +Method in class org.jasypt.spring.properties.EncryptableServletContextPropertyPlaceholderConfigurer +
Deprecated.   +
convertPropertyValue(String) - +Method in class org.jasypt.spring2.properties.EncryptablePreferencesPlaceholderConfigurer +
  +
convertPropertyValue(String) - +Method in class org.jasypt.spring2.properties.EncryptablePropertyOverrideConfigurer +
  +
convertPropertyValue(String) - +Method in class org.jasypt.spring2.properties.EncryptablePropertyPlaceholderConfigurer +
  +
convertPropertyValue(String) - +Method in class org.jasypt.spring2.properties.EncryptableServletContextPropertyPlaceholderConfigurer +
  +
+
+

+E

+
+
EncryptablePreferencesPlaceholderConfigurer - Class in org.jasypt.spring.properties
Deprecated. Package renamed as org.jasypt.spring2.properties. Classes in + this package will be removed in 1.11.
EncryptablePreferencesPlaceholderConfigurer(StringEncryptor) - +Constructor for class org.jasypt.spring.properties.EncryptablePreferencesPlaceholderConfigurer +
Deprecated.  + Creates an EncryptablePreferencesPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +
EncryptablePreferencesPlaceholderConfigurer(TextEncryptor) - +Constructor for class org.jasypt.spring.properties.EncryptablePreferencesPlaceholderConfigurer +
Deprecated.  + Creates an EncryptablePreferencesPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +
EncryptablePreferencesPlaceholderConfigurer - Class in org.jasypt.spring2.properties
+ Subclass of + org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt preferences values + if they are encrypted in the loaded resource locations.
EncryptablePreferencesPlaceholderConfigurer(StringEncryptor) - +Constructor for class org.jasypt.spring2.properties.EncryptablePreferencesPlaceholderConfigurer +
+ Creates an EncryptablePreferencesPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +
EncryptablePreferencesPlaceholderConfigurer(TextEncryptor) - +Constructor for class org.jasypt.spring2.properties.EncryptablePreferencesPlaceholderConfigurer +
+ Creates an EncryptablePreferencesPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +
EncryptablePropertyOverrideConfigurer - Class in org.jasypt.spring.properties
Deprecated. Package renamed as org.jasypt.spring2.properties. Classes in + this package will be removed in 1.11.
EncryptablePropertyOverrideConfigurer(StringEncryptor) - +Constructor for class org.jasypt.spring.properties.EncryptablePropertyOverrideConfigurer +
Deprecated.  + Creates an EncryptablePropertyOverrideConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +
EncryptablePropertyOverrideConfigurer(TextEncryptor) - +Constructor for class org.jasypt.spring.properties.EncryptablePropertyOverrideConfigurer +
Deprecated.  + Creates an EncryptablePropertyOverrideConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +
EncryptablePropertyOverrideConfigurer - Class in org.jasypt.spring2.properties
+ Subclass of + org.springframework.beans.factory.config.PropertyOverrideConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the loaded resource locations.
EncryptablePropertyOverrideConfigurer(StringEncryptor) - +Constructor for class org.jasypt.spring2.properties.EncryptablePropertyOverrideConfigurer +
+ Creates an EncryptablePropertyOverrideConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +
EncryptablePropertyOverrideConfigurer(TextEncryptor) - +Constructor for class org.jasypt.spring2.properties.EncryptablePropertyOverrideConfigurer +
+ Creates an EncryptablePropertyOverrideConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +
EncryptablePropertyPlaceholderConfigurer - Class in org.jasypt.spring.properties
Deprecated. Package renamed as org.jasypt.spring2.properties. Classes in + this package will be removed in 1.11.
EncryptablePropertyPlaceholderConfigurer(StringEncryptor) - +Constructor for class org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer +
Deprecated.  + Creates an EncryptablePropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +
EncryptablePropertyPlaceholderConfigurer(TextEncryptor) - +Constructor for class org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer +
Deprecated.  + Creates an EncryptablePropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +
EncryptablePropertyPlaceholderConfigurer - Class in org.jasypt.spring2.properties
+ Subclass of + org.springframework.beans.factory.config.PropertyPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the loaded resource locations.
EncryptablePropertyPlaceholderConfigurer(StringEncryptor) - +Constructor for class org.jasypt.spring2.properties.EncryptablePropertyPlaceholderConfigurer +
+ Creates an EncryptablePropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +
EncryptablePropertyPlaceholderConfigurer(TextEncryptor) - +Constructor for class org.jasypt.spring2.properties.EncryptablePropertyPlaceholderConfigurer +
+ Creates an EncryptablePropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +
EncryptableServletContextPropertyPlaceholderConfigurer - Class in org.jasypt.spring.properties
Deprecated. Package renamed as org.jasypt.spring2.properties. Classes in + this package will be removed in 1.11.
EncryptableServletContextPropertyPlaceholderConfigurer(StringEncryptor) - +Constructor for class org.jasypt.spring.properties.EncryptableServletContextPropertyPlaceholderConfigurer +
Deprecated.  + Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +
EncryptableServletContextPropertyPlaceholderConfigurer(TextEncryptor) - +Constructor for class org.jasypt.spring.properties.EncryptableServletContextPropertyPlaceholderConfigurer +
Deprecated.  + Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +
EncryptableServletContextPropertyPlaceholderConfigurer - Class in org.jasypt.spring2.properties
+ Subclass of + org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt servlet context parameter values + if they are encrypted in the loaded resource locations.
EncryptableServletContextPropertyPlaceholderConfigurer(StringEncryptor) - +Constructor for class org.jasypt.spring2.properties.EncryptableServletContextPropertyPlaceholderConfigurer +
+ Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +
EncryptableServletContextPropertyPlaceholderConfigurer(TextEncryptor) - +Constructor for class org.jasypt.spring2.properties.EncryptableServletContextPropertyPlaceholderConfigurer +
+ Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +
+
+

+O

+
+
org.jasypt.spring.properties - package org.jasypt.spring.properties
 
org.jasypt.spring2.properties - package org.jasypt.spring2.properties
 
+
+

+R

+
+
resolvePlaceholder(String, Properties) - +Method in class org.jasypt.spring.properties.EncryptableServletContextPropertyPlaceholderConfigurer +
Deprecated.   +
resolvePlaceholder(String, Properties) - +Method in class org.jasypt.spring2.properties.EncryptablePreferencesPlaceholderConfigurer +
  +
resolvePlaceholder(String, String, Preferences) - +Method in class org.jasypt.spring2.properties.EncryptablePreferencesPlaceholderConfigurer +
  +
resolvePlaceholder(String, Properties) - +Method in class org.jasypt.spring2.properties.EncryptableServletContextPropertyPlaceholderConfigurer +
  +
resolveSystemProperty(String) - +Method in class org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer +
Deprecated.   +
resolveSystemProperty(String) - +Method in class org.jasypt.spring2.properties.EncryptablePropertyPlaceholderConfigurer +
  +
+
+C E O R + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/index.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/index.html new file mode 100644 index 00000000..b0df0811 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/index.html @@ -0,0 +1,40 @@ + + + + + + + +JASYPT: Java Simplified Encryption 1.9.2 API + + + + + + + + + + + +<H2> +Frame Alert</H2> + +<P> +This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. +<BR> +Link to<A HREF="overview-summary.html">Non-frame version.</A> + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/EncryptablePreferencesPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/EncryptablePreferencesPlaceholderConfigurer.html new file mode 100644 index 00000000..9559bba3 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/EncryptablePreferencesPlaceholderConfigurer.html @@ -0,0 +1,397 @@ + + + + + + + +EncryptablePreferencesPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring.properties +
+Class EncryptablePreferencesPlaceholderConfigurer

+
+Object
+  extended by org.springframework.core.io.support.PropertiesLoaderSupport
+      extended by org.springframework.beans.factory.config.PropertyResourceConfigurer
+          extended by org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+              extended by org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer
+                  extended by org.jasypt.spring.properties.EncryptablePreferencesPlaceholderConfigurer
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.beans.factory.InitializingBean, org.springframework.core.Ordered, org.springframework.core.PriorityOrdered
+
+
+Deprecated. Package renamed as org.jasypt.spring2.properties. Classes in + this package will be removed in 1.11. +

+

+
public final class EncryptablePreferencesPlaceholderConfigurer
extends org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer
+ + +

+

+ Subclass of + org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt preferences values + if they are encrypted in the loaded resource locations. +

+

+ A value is considered "encrypted" when it appears surrounded by + ENC(...), like: +

+

+

ENC(!"DGAS24FaIO$)
+

+

+ +

+

+
Since:
+
1.7
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
DEFAULT_PLACEHOLDER_PREFIX, DEFAULT_PLACEHOLDER_SUFFIX, SYSTEM_PROPERTIES_MODE_FALLBACK, SYSTEM_PROPERTIES_MODE_NEVER, SYSTEM_PROPERTIES_MODE_OVERRIDE
+ + + + + + + +
Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
logger, XML_FILE_EXTENSION
+ + + + + + + +
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
+  + + + + + + + + + + + + + +
+Constructor Summary
EncryptablePreferencesPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor) + +
+          Deprecated.  + Creates an EncryptablePreferencesPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values.
EncryptablePreferencesPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+          Deprecated.  + Creates an EncryptablePreferencesPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values.
+  + + + + + + + + + + + +
+Method Summary
+protected  StringconvertPropertyValue(String originalValue) + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer
afterPropertiesSet, resolvePlaceholder, resolvePlaceholder, setSystemTreePath, setUserTreePath
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
parseStringValue, processProperties, resolvePlaceholder, resolveSystemProperty, setBeanFactory, setBeanName, setIgnoreUnresolvablePlaceholders, setPlaceholderPrefix, setPlaceholderSuffix, setSearchSystemEnvironment, setSystemPropertiesMode, setSystemPropertiesModeName
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyResourceConfigurer
convertProperties, getOrder, postProcessBeanFactory, setOrder
+ + + + + + + +
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptablePreferencesPlaceholderConfigurer

+
+public EncryptablePreferencesPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor)
+
+
Deprecated. 

+ Creates an EncryptablePreferencesPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +

+

+

+
Parameters:
stringEncryptor - the StringEncryptor to be used do decrypt values. It + can not be null.
+
+
+ +

+EncryptablePreferencesPlaceholderConfigurer

+
+public EncryptablePreferencesPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+
Deprecated. 

+ Creates an EncryptablePreferencesPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +

+

+

+
Parameters:
textEncryptor - the TextEncryptor to be used do decrypt values. It can + not be null.
+
+ + + + + + + + +
+Method Detail
+ +

+convertPropertyValue

+
+protected String convertPropertyValue(String originalValue)
+
+
Deprecated. 
+
Overrides:
convertPropertyValue in class org.springframework.beans.factory.config.PropertyResourceConfigurer
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/EncryptablePropertyOverrideConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/EncryptablePropertyOverrideConfigurer.html new file mode 100644 index 00000000..484a6234 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/EncryptablePropertyOverrideConfigurer.html @@ -0,0 +1,390 @@ + + + + + + + +EncryptablePropertyOverrideConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring.properties +
+Class EncryptablePropertyOverrideConfigurer

+
+Object
+  extended by org.springframework.core.io.support.PropertiesLoaderSupport
+      extended by org.springframework.beans.factory.config.PropertyResourceConfigurer
+          extended by org.springframework.beans.factory.config.PropertyOverrideConfigurer
+              extended by org.jasypt.spring.properties.EncryptablePropertyOverrideConfigurer
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.core.Ordered, org.springframework.core.PriorityOrdered
+
+
+Deprecated. Package renamed as org.jasypt.spring2.properties. Classes in + this package will be removed in 1.11. +

+

+
public final class EncryptablePropertyOverrideConfigurer
extends org.springframework.beans.factory.config.PropertyOverrideConfigurer
+ + +

+

+ Subclass of + org.springframework.beans.factory.config.PropertyOverrideConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the loaded resource locations. +

+

+ A value is considered "encrypted" when it appears surrounded by + ENC(...), like: +

+

+

my.value=ENC(!"DGAS24FaIO$)
+

+

+ Encrypted and unencrypted objects can be combined in the same resources file. +

+

+ +

+

+
Since:
+
1.4
+
Author:
+
Marcos Muíño García
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PropertyOverrideConfigurer
DEFAULT_BEAN_NAME_SEPARATOR
+ + + + + + + +
Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
logger, XML_FILE_EXTENSION
+ + + + + + + +
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
+  + + + + + + + + + + + + + +
+Constructor Summary
EncryptablePropertyOverrideConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor) + +
+          Deprecated.  + Creates an EncryptablePropertyOverrideConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values.
EncryptablePropertyOverrideConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+          Deprecated.  + Creates an EncryptablePropertyOverrideConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values.
+  + + + + + + + + + + + +
+Method Summary
+protected  StringconvertPropertyValue(String originalValue) + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyOverrideConfigurer
applyPropertyValue, hasPropertyOverridesFor, processKey, processProperties, setBeanNameSeparator, setIgnoreInvalidKeys
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyResourceConfigurer
convertProperties, getOrder, postProcessBeanFactory, setOrder
+ + + + + + + +
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptablePropertyOverrideConfigurer

+
+public EncryptablePropertyOverrideConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor)
+
+
Deprecated. 

+ Creates an EncryptablePropertyOverrideConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +

+

+

+
Parameters:
stringEncryptor - the StringEncryptor to be used do decrypt values. It + can not be null.
+
+
+ +

+EncryptablePropertyOverrideConfigurer

+
+public EncryptablePropertyOverrideConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+
Deprecated. 

+ Creates an EncryptablePropertyOverrideConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +

+

+

+
Parameters:
textEncryptor - the TextEncryptor to be used do decrypt values. It can + not be null.
+
+ + + + + + + + +
+Method Detail
+ +

+convertPropertyValue

+
+protected String convertPropertyValue(String originalValue)
+
+
Deprecated. 
+
Overrides:
convertPropertyValue in class org.springframework.beans.factory.config.PropertyResourceConfigurer
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/EncryptablePropertyPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/EncryptablePropertyPlaceholderConfigurer.html new file mode 100644 index 00000000..32f540be --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/EncryptablePropertyPlaceholderConfigurer.html @@ -0,0 +1,412 @@ + + + + + + + +EncryptablePropertyPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring.properties +
+Class EncryptablePropertyPlaceholderConfigurer

+
+Object
+  extended by org.springframework.core.io.support.PropertiesLoaderSupport
+      extended by org.springframework.beans.factory.config.PropertyResourceConfigurer
+          extended by org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+              extended by org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.core.Ordered, org.springframework.core.PriorityOrdered
+
+
+Deprecated. Package renamed as org.jasypt.spring2.properties. Classes in + this package will be removed in 1.11. +

+

+
public final class EncryptablePropertyPlaceholderConfigurer
extends org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+ + +

+

+ Subclass of + org.springframework.beans.factory.config.PropertyPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the loaded resource locations. +

+

+ A value is considered "encrypted" when it appears surrounded by + ENC(...), like: +

+

+

my.value=ENC(!"DGAS24FaIO$)
+

+

+ Encrypted and unencrypted objects can be combined in the same resources file. +

+

+ +

+

+
Since:
+
1.4
+
Author:
+
Marcos Muíño García, Carlos Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
DEFAULT_PLACEHOLDER_PREFIX, DEFAULT_PLACEHOLDER_SUFFIX, SYSTEM_PROPERTIES_MODE_FALLBACK, SYSTEM_PROPERTIES_MODE_NEVER, SYSTEM_PROPERTIES_MODE_OVERRIDE
+ + + + + + + +
Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
logger, XML_FILE_EXTENSION
+ + + + + + + +
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
+  + + + + + + + + + + + + + +
+Constructor Summary
EncryptablePropertyPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor) + +
+          Deprecated.  + Creates an EncryptablePropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values.
EncryptablePropertyPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+          Deprecated.  + Creates an EncryptablePropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values.
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  StringconvertPropertyValue(String originalValue) + +
+          Deprecated.  
+protected  StringresolveSystemProperty(String key) + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
parseStringValue, processProperties, resolvePlaceholder, resolvePlaceholder, setBeanFactory, setBeanName, setIgnoreUnresolvablePlaceholders, setPlaceholderPrefix, setPlaceholderSuffix, setSearchSystemEnvironment, setSystemPropertiesMode, setSystemPropertiesModeName
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyResourceConfigurer
convertProperties, getOrder, postProcessBeanFactory, setOrder
+ + + + + + + +
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptablePropertyPlaceholderConfigurer

+
+public EncryptablePropertyPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor)
+
+
Deprecated. 

+ Creates an EncryptablePropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +

+

+

+
Parameters:
stringEncryptor - the StringEncryptor to be used do decrypt values. It + can not be null.
+
+
+ +

+EncryptablePropertyPlaceholderConfigurer

+
+public EncryptablePropertyPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+
Deprecated. 

+ Creates an EncryptablePropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +

+

+

+
Parameters:
textEncryptor - the TextEncryptor to be used do decrypt values. It can + not be null.
+
+ + + + + + + + +
+Method Detail
+ +

+convertPropertyValue

+
+protected String convertPropertyValue(String originalValue)
+
+
Deprecated. 
+
Overrides:
convertPropertyValue in class org.springframework.beans.factory.config.PropertyResourceConfigurer
+
+
+
+
+
+
+ +

+resolveSystemProperty

+
+protected String resolveSystemProperty(String key)
+
+
Deprecated. 
+
Overrides:
resolveSystemProperty in class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/EncryptableServletContextPropertyPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/EncryptableServletContextPropertyPlaceholderConfigurer.html new file mode 100644 index 00000000..e691ed0d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/EncryptableServletContextPropertyPlaceholderConfigurer.html @@ -0,0 +1,421 @@ + + + + + + + +EncryptableServletContextPropertyPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring.properties +
+Class EncryptableServletContextPropertyPlaceholderConfigurer

+
+Object
+  extended by org.springframework.core.io.support.PropertiesLoaderSupport
+      extended by org.springframework.beans.factory.config.PropertyResourceConfigurer
+          extended by org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+              extended by org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer
+                  extended by org.jasypt.spring.properties.EncryptableServletContextPropertyPlaceholderConfigurer
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.core.Ordered, org.springframework.core.PriorityOrdered, org.springframework.web.context.ServletContextAware
+
+
+Deprecated. Package renamed as org.jasypt.spring2.properties. Classes in + this package will be removed in 1.11. +

+

+
public final class EncryptableServletContextPropertyPlaceholderConfigurer
extends org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer
+ + +

+

+ Subclass of + org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt servlet context parameter values + if they are encrypted in the loaded resource locations. +

+

+ A value is considered "encrypted" when it appears surrounded by + ENC(...), like: +

+

+

<param-value>ENC(!"DGAS24FaIO$)</param-value>
+

+

+ +

+

+
Since:
+
1.7
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
DEFAULT_PLACEHOLDER_PREFIX, DEFAULT_PLACEHOLDER_SUFFIX, SYSTEM_PROPERTIES_MODE_FALLBACK, SYSTEM_PROPERTIES_MODE_NEVER, SYSTEM_PROPERTIES_MODE_OVERRIDE
+ + + + + + + +
Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
logger, XML_FILE_EXTENSION
+ + + + + + + +
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
+  + + + + + + + + + + + + + +
+Constructor Summary
EncryptableServletContextPropertyPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor) + +
+          Deprecated.  + Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values.
EncryptableServletContextPropertyPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+          Deprecated.  + Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values.
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  StringconvertPropertyValue(String originalValue) + +
+          Deprecated.  
+protected  StringresolvePlaceholder(String placeholder, + java.util.Properties props) + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer
resolvePlaceholder, setContextOverride, setSearchContextAttributes, setServletContext
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
parseStringValue, processProperties, resolvePlaceholder, resolveSystemProperty, setBeanFactory, setBeanName, setIgnoreUnresolvablePlaceholders, setPlaceholderPrefix, setPlaceholderSuffix, setSearchSystemEnvironment, setSystemPropertiesMode, setSystemPropertiesModeName
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyResourceConfigurer
convertProperties, getOrder, postProcessBeanFactory, setOrder
+ + + + + + + +
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptableServletContextPropertyPlaceholderConfigurer

+
+public EncryptableServletContextPropertyPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor)
+
+
Deprecated. 

+ Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +

+

+

+
Parameters:
stringEncryptor - the StringEncryptor to be used do decrypt values. It + can not be null.
+
+
+ +

+EncryptableServletContextPropertyPlaceholderConfigurer

+
+public EncryptableServletContextPropertyPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+
Deprecated. 

+ Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +

+

+

+
Parameters:
textEncryptor - the TextEncryptor to be used do decrypt values. It can + not be null.
+
+ + + + + + + + +
+Method Detail
+ +

+convertPropertyValue

+
+protected String convertPropertyValue(String originalValue)
+
+
Deprecated. 
+
Overrides:
convertPropertyValue in class org.springframework.beans.factory.config.PropertyResourceConfigurer
+
+
+
+
+
+
+ +

+resolvePlaceholder

+
+protected String resolvePlaceholder(String placeholder,
+                                    java.util.Properties props)
+
+
Deprecated. 
+
Overrides:
resolvePlaceholder in class org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/class-use/EncryptablePreferencesPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/class-use/EncryptablePreferencesPlaceholderConfigurer.html new file mode 100644 index 00000000..905e0c45 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/class-use/EncryptablePreferencesPlaceholderConfigurer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring.properties.EncryptablePreferencesPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring.properties.EncryptablePreferencesPlaceholderConfigurer

+
+No usage of org.jasypt.spring.properties.EncryptablePreferencesPlaceholderConfigurer +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/class-use/EncryptablePropertyOverrideConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/class-use/EncryptablePropertyOverrideConfigurer.html new file mode 100644 index 00000000..e261498a --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/class-use/EncryptablePropertyOverrideConfigurer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring.properties.EncryptablePropertyOverrideConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring.properties.EncryptablePropertyOverrideConfigurer

+
+No usage of org.jasypt.spring.properties.EncryptablePropertyOverrideConfigurer +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/class-use/EncryptablePropertyPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/class-use/EncryptablePropertyPlaceholderConfigurer.html new file mode 100644 index 00000000..56eace7d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/class-use/EncryptablePropertyPlaceholderConfigurer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer

+
+No usage of org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/class-use/EncryptableServletContextPropertyPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/class-use/EncryptableServletContextPropertyPlaceholderConfigurer.html new file mode 100644 index 00000000..6183f3ac --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/class-use/EncryptableServletContextPropertyPlaceholderConfigurer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring.properties.EncryptableServletContextPropertyPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring.properties.EncryptableServletContextPropertyPlaceholderConfigurer

+
+No usage of org.jasypt.spring.properties.EncryptableServletContextPropertyPlaceholderConfigurer +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/package-frame.html new file mode 100644 index 00000000..a715ea97 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/package-frame.html @@ -0,0 +1,39 @@ + + + + + + + +org.jasypt.spring.properties (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.spring.properties + + + + +
+Classes  + +
+EncryptablePreferencesPlaceholderConfigurer +
+EncryptablePropertyOverrideConfigurer +
+EncryptablePropertyPlaceholderConfigurer +
+EncryptableServletContextPropertyPlaceholderConfigurer
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/package-summary.html new file mode 100644 index 00000000..a218a896 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/package-summary.html @@ -0,0 +1,170 @@ + + + + + + + +org.jasypt.spring.properties (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.spring.properties +

+ + + + + + + + + + + + + + + + + + + + + +
+Class Summary
EncryptablePreferencesPlaceholderConfigurerDeprecated. Package renamed as org.jasypt.spring2.properties.
EncryptablePropertyOverrideConfigurerDeprecated. Package renamed as org.jasypt.spring2.properties.
EncryptablePropertyPlaceholderConfigurerDeprecated. Package renamed as org.jasypt.spring2.properties.
EncryptableServletContextPropertyPlaceholderConfigurerDeprecated. Package renamed as org.jasypt.spring2.properties.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/package-tree.html new file mode 100644 index 00000000..82bff9ec --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/package-tree.html @@ -0,0 +1,170 @@ + + + + + + + +org.jasypt.spring.properties Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.spring.properties +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.springframework.core.io.support.PropertiesLoaderSupport
        +
      • org.springframework.beans.factory.config.PropertyResourceConfigurer (implements org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.core.PriorityOrdered) + +
      +
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/package-use.html new file mode 100644 index 00000000..5e9183fd --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring/properties/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.spring.properties (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.spring.properties

+
+No usage of org.jasypt.spring.properties +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/EncryptablePreferencesPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/EncryptablePreferencesPlaceholderConfigurer.html new file mode 100644 index 00000000..a988c497 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/EncryptablePreferencesPlaceholderConfigurer.html @@ -0,0 +1,444 @@ + + + + + + + +EncryptablePreferencesPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring2.properties +
+Class EncryptablePreferencesPlaceholderConfigurer

+
+Object
+  extended by org.springframework.core.io.support.PropertiesLoaderSupport
+      extended by org.springframework.beans.factory.config.PropertyResourceConfigurer
+          extended by org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+              extended by org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer
+                  extended by org.jasypt.spring2.properties.EncryptablePreferencesPlaceholderConfigurer
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.beans.factory.InitializingBean, org.springframework.core.Ordered, org.springframework.core.PriorityOrdered
+
+
+
+
public final class EncryptablePreferencesPlaceholderConfigurer
extends org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer
+ + +

+

+ Subclass of + org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt preferences values + if they are encrypted in the loaded resource locations. +

+

+ A value is considered "encrypted" when it appears surrounded by + ENC(...), like: +

+

+

ENC(!"DGAS24FaIO$)
+

+

+ +

+

+
Since:
+
1.9.0 (existed in package org.jasypt.spring.properties since 1.7)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
DEFAULT_PLACEHOLDER_PREFIX, DEFAULT_PLACEHOLDER_SUFFIX, SYSTEM_PROPERTIES_MODE_FALLBACK, SYSTEM_PROPERTIES_MODE_NEVER, SYSTEM_PROPERTIES_MODE_OVERRIDE
+ + + + + + + +
Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
logger, XML_FILE_EXTENSION
+ + + + + + + +
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
+  + + + + + + + + + + + + + +
+Constructor Summary
EncryptablePreferencesPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor) + +
+           + Creates an EncryptablePreferencesPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values.
EncryptablePreferencesPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+           + Creates an EncryptablePreferencesPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values.
+  + + + + + + + + + + + + + + + + + + + +
+Method Summary
+protected  StringconvertPropertyValue(String originalValue) + +
+           
+protected  StringresolvePlaceholder(String placeholder, + java.util.Properties props) + +
+           
+protected  StringresolvePlaceholder(String path, + String key, + java.util.prefs.Preferences preferences) + +
+           
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer
afterPropertiesSet, setSystemTreePath, setUserTreePath
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
parseStringValue, processProperties, resolvePlaceholder, resolveSystemProperty, setBeanFactory, setBeanName, setIgnoreUnresolvablePlaceholders, setPlaceholderPrefix, setPlaceholderSuffix, setSearchSystemEnvironment, setSystemPropertiesMode, setSystemPropertiesModeName
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyResourceConfigurer
convertProperties, getOrder, postProcessBeanFactory, setOrder
+ + + + + + + +
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptablePreferencesPlaceholderConfigurer

+
+public EncryptablePreferencesPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor)
+
+

+ Creates an EncryptablePreferencesPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +

+

+

+
Parameters:
stringEncryptor - the StringEncryptor to be used do decrypt values. It + can not be null.
+
+
+ +

+EncryptablePreferencesPlaceholderConfigurer

+
+public EncryptablePreferencesPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+

+ Creates an EncryptablePreferencesPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +

+

+

+
Parameters:
textEncryptor - the TextEncryptor to be used do decrypt values. It can + not be null.
+
+ + + + + + + + +
+Method Detail
+ +

+convertPropertyValue

+
+protected String convertPropertyValue(String originalValue)
+
+
+
Overrides:
convertPropertyValue in class org.springframework.beans.factory.config.PropertyResourceConfigurer
+
+
+
+
+
+
+ +

+resolvePlaceholder

+
+protected String resolvePlaceholder(String placeholder,
+                                    java.util.Properties props)
+
+
+
Overrides:
resolvePlaceholder in class org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer
+
+
+
+
+
+
+ +

+resolvePlaceholder

+
+protected String resolvePlaceholder(String path,
+                                    String key,
+                                    java.util.prefs.Preferences preferences)
+
+
+
Overrides:
resolvePlaceholder in class org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/EncryptablePropertyOverrideConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/EncryptablePropertyOverrideConfigurer.html new file mode 100644 index 00000000..93925ae7 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/EncryptablePropertyOverrideConfigurer.html @@ -0,0 +1,387 @@ + + + + + + + +EncryptablePropertyOverrideConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring2.properties +
+Class EncryptablePropertyOverrideConfigurer

+
+Object
+  extended by org.springframework.core.io.support.PropertiesLoaderSupport
+      extended by org.springframework.beans.factory.config.PropertyResourceConfigurer
+          extended by org.springframework.beans.factory.config.PropertyOverrideConfigurer
+              extended by org.jasypt.spring2.properties.EncryptablePropertyOverrideConfigurer
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.core.Ordered, org.springframework.core.PriorityOrdered
+
+
+
+
public final class EncryptablePropertyOverrideConfigurer
extends org.springframework.beans.factory.config.PropertyOverrideConfigurer
+ + +

+

+ Subclass of + org.springframework.beans.factory.config.PropertyOverrideConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the loaded resource locations. +

+

+ A value is considered "encrypted" when it appears surrounded by + ENC(...), like: +

+

+

my.value=ENC(!"DGAS24FaIO$)
+

+

+ Encrypted and unencrypted objects can be combined in the same resources file. +

+

+ +

+

+
Since:
+
1.9.0 (existed in package org.jasypt.spring.properties since 1.4)
+
Author:
+
Marcos Muíño García
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PropertyOverrideConfigurer
DEFAULT_BEAN_NAME_SEPARATOR
+ + + + + + + +
Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
logger, XML_FILE_EXTENSION
+ + + + + + + +
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
+  + + + + + + + + + + + + + +
+Constructor Summary
EncryptablePropertyOverrideConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor) + +
+           + Creates an EncryptablePropertyOverrideConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values.
EncryptablePropertyOverrideConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+           + Creates an EncryptablePropertyOverrideConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values.
+  + + + + + + + + + + + +
+Method Summary
+protected  StringconvertPropertyValue(String originalValue) + +
+           
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyOverrideConfigurer
applyPropertyValue, hasPropertyOverridesFor, processKey, processProperties, setBeanNameSeparator, setIgnoreInvalidKeys
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyResourceConfigurer
convertProperties, getOrder, postProcessBeanFactory, setOrder
+ + + + + + + +
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptablePropertyOverrideConfigurer

+
+public EncryptablePropertyOverrideConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor)
+
+

+ Creates an EncryptablePropertyOverrideConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +

+

+

+
Parameters:
stringEncryptor - the StringEncryptor to be used do decrypt values. It + can not be null.
+
+
+ +

+EncryptablePropertyOverrideConfigurer

+
+public EncryptablePropertyOverrideConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+

+ Creates an EncryptablePropertyOverrideConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +

+

+

+
Parameters:
textEncryptor - the TextEncryptor to be used do decrypt values. It can + not be null.
+
+ + + + + + + + +
+Method Detail
+ +

+convertPropertyValue

+
+protected String convertPropertyValue(String originalValue)
+
+
+
Overrides:
convertPropertyValue in class org.springframework.beans.factory.config.PropertyResourceConfigurer
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/EncryptablePropertyPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/EncryptablePropertyPlaceholderConfigurer.html new file mode 100644 index 00000000..99475115 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/EncryptablePropertyPlaceholderConfigurer.html @@ -0,0 +1,409 @@ + + + + + + + +EncryptablePropertyPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring2.properties +
+Class EncryptablePropertyPlaceholderConfigurer

+
+Object
+  extended by org.springframework.core.io.support.PropertiesLoaderSupport
+      extended by org.springframework.beans.factory.config.PropertyResourceConfigurer
+          extended by org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+              extended by org.jasypt.spring2.properties.EncryptablePropertyPlaceholderConfigurer
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.core.Ordered, org.springframework.core.PriorityOrdered
+
+
+
+
public final class EncryptablePropertyPlaceholderConfigurer
extends org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+ + +

+

+ Subclass of + org.springframework.beans.factory.config.PropertyPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the loaded resource locations. +

+

+ A value is considered "encrypted" when it appears surrounded by + ENC(...), like: +

+

+

my.value=ENC(!"DGAS24FaIO$)
+

+

+ Encrypted and unencrypted objects can be combined in the same resources file. +

+

+ +

+

+
Since:
+
1.9.0 (existed in package org.jasypt.spring.properties since 1.4)
+
Author:
+
Marcos Muíño García, Carlos Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
DEFAULT_PLACEHOLDER_PREFIX, DEFAULT_PLACEHOLDER_SUFFIX, SYSTEM_PROPERTIES_MODE_FALLBACK, SYSTEM_PROPERTIES_MODE_NEVER, SYSTEM_PROPERTIES_MODE_OVERRIDE
+ + + + + + + +
Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
logger, XML_FILE_EXTENSION
+ + + + + + + +
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
+  + + + + + + + + + + + + + +
+Constructor Summary
EncryptablePropertyPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor) + +
+           + Creates an EncryptablePropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values.
EncryptablePropertyPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+           + Creates an EncryptablePropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values.
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  StringconvertPropertyValue(String originalValue) + +
+           
+protected  StringresolveSystemProperty(String key) + +
+           
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
parseStringValue, processProperties, resolvePlaceholder, resolvePlaceholder, setBeanFactory, setBeanName, setIgnoreUnresolvablePlaceholders, setPlaceholderPrefix, setPlaceholderSuffix, setSearchSystemEnvironment, setSystemPropertiesMode, setSystemPropertiesModeName
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyResourceConfigurer
convertProperties, getOrder, postProcessBeanFactory, setOrder
+ + + + + + + +
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptablePropertyPlaceholderConfigurer

+
+public EncryptablePropertyPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor)
+
+

+ Creates an EncryptablePropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +

+

+

+
Parameters:
stringEncryptor - the StringEncryptor to be used do decrypt values. It + can not be null.
+
+
+ +

+EncryptablePropertyPlaceholderConfigurer

+
+public EncryptablePropertyPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+

+ Creates an EncryptablePropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +

+

+

+
Parameters:
textEncryptor - the TextEncryptor to be used do decrypt values. It can + not be null.
+
+ + + + + + + + +
+Method Detail
+ +

+convertPropertyValue

+
+protected String convertPropertyValue(String originalValue)
+
+
+
Overrides:
convertPropertyValue in class org.springframework.beans.factory.config.PropertyResourceConfigurer
+
+
+
+
+
+
+ +

+resolveSystemProperty

+
+protected String resolveSystemProperty(String key)
+
+
+
Overrides:
resolveSystemProperty in class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/EncryptableServletContextPropertyPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/EncryptableServletContextPropertyPlaceholderConfigurer.html new file mode 100644 index 00000000..d00113ed --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/EncryptableServletContextPropertyPlaceholderConfigurer.html @@ -0,0 +1,418 @@ + + + + + + + +EncryptableServletContextPropertyPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring2.properties +
+Class EncryptableServletContextPropertyPlaceholderConfigurer

+
+Object
+  extended by org.springframework.core.io.support.PropertiesLoaderSupport
+      extended by org.springframework.beans.factory.config.PropertyResourceConfigurer
+          extended by org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+              extended by org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer
+                  extended by org.jasypt.spring2.properties.EncryptableServletContextPropertyPlaceholderConfigurer
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.core.Ordered, org.springframework.core.PriorityOrdered, org.springframework.web.context.ServletContextAware
+
+
+
+
public final class EncryptableServletContextPropertyPlaceholderConfigurer
extends org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer
+ + +

+

+ Subclass of + org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt servlet context parameter values + if they are encrypted in the loaded resource locations. +

+

+ A value is considered "encrypted" when it appears surrounded by + ENC(...), like: +

+

+

<param-value>ENC(!"DGAS24FaIO$)</param-value>
+

+

+ +

+

+
Since:
+
1.9.0 (existed in package org.jasypt.spring.properties since 1.7)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
DEFAULT_PLACEHOLDER_PREFIX, DEFAULT_PLACEHOLDER_SUFFIX, SYSTEM_PROPERTIES_MODE_FALLBACK, SYSTEM_PROPERTIES_MODE_NEVER, SYSTEM_PROPERTIES_MODE_OVERRIDE
+ + + + + + + +
Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
logger, XML_FILE_EXTENSION
+ + + + + + + +
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
+  + + + + + + + + + + + + + +
+Constructor Summary
EncryptableServletContextPropertyPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor) + +
+           + Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values.
EncryptableServletContextPropertyPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+           + Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values.
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  StringconvertPropertyValue(String originalValue) + +
+           
+protected  StringresolvePlaceholder(String placeholder, + java.util.Properties props) + +
+           
+ + + + + + + +
Methods inherited from class org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer
resolvePlaceholder, setContextOverride, setSearchContextAttributes, setServletContext
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
parseStringValue, processProperties, resolvePlaceholder, resolveSystemProperty, setBeanFactory, setBeanName, setIgnoreUnresolvablePlaceholders, setPlaceholderPrefix, setPlaceholderSuffix, setSearchSystemEnvironment, setSystemPropertiesMode, setSystemPropertiesModeName
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyResourceConfigurer
convertProperties, getOrder, postProcessBeanFactory, setOrder
+ + + + + + + +
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptableServletContextPropertyPlaceholderConfigurer

+
+public EncryptableServletContextPropertyPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor)
+
+

+ Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +

+

+

+
Parameters:
stringEncryptor - the StringEncryptor to be used do decrypt values. It + can not be null.
+
+
+ +

+EncryptableServletContextPropertyPlaceholderConfigurer

+
+public EncryptableServletContextPropertyPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+

+ Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +

+

+

+
Parameters:
textEncryptor - the TextEncryptor to be used do decrypt values. It can + not be null.
+
+ + + + + + + + +
+Method Detail
+ +

+convertPropertyValue

+
+protected String convertPropertyValue(String originalValue)
+
+
+
Overrides:
convertPropertyValue in class org.springframework.beans.factory.config.PropertyResourceConfigurer
+
+
+
+
+
+
+ +

+resolvePlaceholder

+
+protected String resolvePlaceholder(String placeholder,
+                                    java.util.Properties props)
+
+
+
Overrides:
resolvePlaceholder in class org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/class-use/EncryptablePreferencesPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/class-use/EncryptablePreferencesPlaceholderConfigurer.html new file mode 100644 index 00000000..d0c6c5e2 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/class-use/EncryptablePreferencesPlaceholderConfigurer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring2.properties.EncryptablePreferencesPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring2.properties.EncryptablePreferencesPlaceholderConfigurer

+
+No usage of org.jasypt.spring2.properties.EncryptablePreferencesPlaceholderConfigurer +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/class-use/EncryptablePropertyOverrideConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/class-use/EncryptablePropertyOverrideConfigurer.html new file mode 100644 index 00000000..ac197824 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/class-use/EncryptablePropertyOverrideConfigurer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring2.properties.EncryptablePropertyOverrideConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring2.properties.EncryptablePropertyOverrideConfigurer

+
+No usage of org.jasypt.spring2.properties.EncryptablePropertyOverrideConfigurer +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/class-use/EncryptablePropertyPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/class-use/EncryptablePropertyPlaceholderConfigurer.html new file mode 100644 index 00000000..b47c92c3 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/class-use/EncryptablePropertyPlaceholderConfigurer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring2.properties.EncryptablePropertyPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring2.properties.EncryptablePropertyPlaceholderConfigurer

+
+No usage of org.jasypt.spring2.properties.EncryptablePropertyPlaceholderConfigurer +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/class-use/EncryptableServletContextPropertyPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/class-use/EncryptableServletContextPropertyPlaceholderConfigurer.html new file mode 100644 index 00000000..8d77c3c1 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/class-use/EncryptableServletContextPropertyPlaceholderConfigurer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring2.properties.EncryptableServletContextPropertyPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring2.properties.EncryptableServletContextPropertyPlaceholderConfigurer

+
+No usage of org.jasypt.spring2.properties.EncryptableServletContextPropertyPlaceholderConfigurer +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/package-frame.html new file mode 100644 index 00000000..ccbb4347 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/package-frame.html @@ -0,0 +1,39 @@ + + + + + + + +org.jasypt.spring2.properties (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.spring2.properties + + + + +
+Classes  + +
+EncryptablePreferencesPlaceholderConfigurer +
+EncryptablePropertyOverrideConfigurer +
+EncryptablePropertyPlaceholderConfigurer +
+EncryptableServletContextPropertyPlaceholderConfigurer
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/package-summary.html new file mode 100644 index 00000000..37fdb260 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/package-summary.html @@ -0,0 +1,190 @@ + + + + + + + +org.jasypt.spring2.properties (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.spring2.properties +

+ + + + + + + + + + + + + + + + + + + + + +
+Class Summary
EncryptablePreferencesPlaceholderConfigurer + Subclass of + org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt preferences values + if they are encrypted in the loaded resource locations.
EncryptablePropertyOverrideConfigurer + Subclass of + org.springframework.beans.factory.config.PropertyOverrideConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the loaded resource locations.
EncryptablePropertyPlaceholderConfigurer + Subclass of + org.springframework.beans.factory.config.PropertyPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the loaded resource locations.
EncryptableServletContextPropertyPlaceholderConfigurer + Subclass of + org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt servlet context parameter values + if they are encrypted in the loaded resource locations.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/package-tree.html new file mode 100644 index 00000000..1820227c --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/package-tree.html @@ -0,0 +1,170 @@ + + + + + + + +org.jasypt.spring2.properties Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.spring2.properties +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.springframework.core.io.support.PropertiesLoaderSupport
        +
      • org.springframework.beans.factory.config.PropertyResourceConfigurer (implements org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.core.PriorityOrdered) + +
      +
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/package-use.html new file mode 100644 index 00000000..d39ea455 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/org/jasypt/spring2/properties/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.spring2.properties (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.spring2.properties

+
+No usage of org.jasypt.spring2.properties +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/overview-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/overview-frame.html new file mode 100644 index 00000000..28e8722c --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/overview-frame.html @@ -0,0 +1,45 @@ + + + + + + + +Overview List (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + + + + +
+
+ + + + + +
All Classes +

+ +Packages +
+org.jasypt.spring.properties +
+org.jasypt.spring2.properties +
+

+ +

+  + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/overview-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/overview-summary.html new file mode 100644 index 00000000..f9146973 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/overview-summary.html @@ -0,0 +1,161 @@ + + + + + + + +Overview (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+JASYPT: Java Simplified Encryption 1.9.2 API +

+
+ + + + + + + + + + + + + +
+Packages
org.jasypt.spring.properties 
org.jasypt.spring2.properties 
+ +


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/overview-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/overview-tree.html new file mode 100644 index 00000000..ded6cff1 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/overview-tree.html @@ -0,0 +1,169 @@ + + + + + + + +Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For All Packages

+
+
+
Package Hierarchies:
org.jasypt.spring.properties, org.jasypt.spring2.properties
+
+

+Class Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/package-list b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/package-list new file mode 100644 index 00000000..a3177862 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/package-list @@ -0,0 +1,2 @@ +org.jasypt.spring.properties +org.jasypt.spring2.properties diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/resources/inherit.gif b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/resources/inherit.gif new file mode 100644 index 0000000000000000000000000000000000000000..c814867a13deb0ca7ea2156c6ca1d5a03372af7e GIT binary patch literal 57 zcmZ?wbhEHbIIT!9-C*e{wE9>Kx3D)-;0v)C; KYxQGgum%9JOA&7X literal 0 HcmV?d00001 diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring2/stylesheet.css b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/stylesheet.css new file mode 100644 index 00000000..6ea9e516 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring2/stylesheet.css @@ -0,0 +1,29 @@ +/* Javadoc style sheet */ + +/* Define colors, fonts and other style attributes here to override the defaults */ + +/* Page background color */ +body { background-color: #FFFFFF; color:#000000 } + +/* Headings */ +h1 { font-size: 145% } + +/* Table colors */ +.TableHeadingColor { background: #CCCCFF; color:#000000 } /* Dark mauve */ +.TableSubHeadingColor { background: #EEEEFF; color:#000000 } /* Light mauve */ +.TableRowColor { background: #FFFFFF; color:#000000 } /* White */ + +/* Font used in left-hand frame lists */ +.FrameTitleFont { font-size: 100%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameHeadingFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameItemFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } + +/* Navigation bar fonts and colors */ +.NavBarCell1 { background-color:#EEEEFF; color:#000000} /* Light mauve */ +.NavBarCell1Rev { background-color:#00008B; color:#FFFFFF} /* Dark Blue */ +.NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;color:#000000;} +.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;color:#FFFFFF;} + +.NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} +.NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/allclasses-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/allclasses-frame.html new file mode 100644 index 00000000..365e6b90 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/allclasses-frame.html @@ -0,0 +1,54 @@ + + + + + + + +All Classes (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +All Classes +
+ + + + + +
DigesterFactoryBean +
+EncryptablePreferencesPlaceholderConfigurer +
+EncryptablePreferencesPlaceholderConfigurer +
+EncryptablePropertiesFactoryBean +
+EncryptablePropertyOverrideConfigurer +
+EncryptablePropertyOverrideConfigurer +
+EncryptablePropertyPlaceholderConfigurer +
+EncryptablePropertyPlaceholderConfigurer +
+EncryptableServletContextPropertyPlaceholderConfigurer +
+EncryptableServletContextPropertyPlaceholderConfigurer +
+EncryptionNamespaceHandler +
+EncryptorFactoryBean +
+
+ + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/allclasses-noframe.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/allclasses-noframe.html new file mode 100644 index 00000000..ecdbb273 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/allclasses-noframe.html @@ -0,0 +1,54 @@ + + + + + + + +All Classes (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +All Classes +
+ + + + + +
DigesterFactoryBean +
+EncryptablePreferencesPlaceholderConfigurer +
+EncryptablePreferencesPlaceholderConfigurer +
+EncryptablePropertiesFactoryBean +
+EncryptablePropertyOverrideConfigurer +
+EncryptablePropertyOverrideConfigurer +
+EncryptablePropertyPlaceholderConfigurer +
+EncryptablePropertyPlaceholderConfigurer +
+EncryptableServletContextPropertyPlaceholderConfigurer +
+EncryptableServletContextPropertyPlaceholderConfigurer +
+EncryptionNamespaceHandler +
+EncryptorFactoryBean +
+
+ + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/constant-values.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/constant-values.html new file mode 100644 index 00000000..2a2ebe68 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/constant-values.html @@ -0,0 +1,147 @@ + + + + + + + +Constant Field Values (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Constant Field Values

+
+
+Contents
    +
+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/deprecated-list.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/deprecated-list.html new file mode 100644 index 00000000..a3ab4699 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/deprecated-list.html @@ -0,0 +1,181 @@ + + + + + + + +Deprecated List (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Deprecated API

+
+
+Contents + + + + + + + + + + + + + + + + + + +
+Deprecated Classes
org.jasypt.spring.properties.EncryptablePreferencesPlaceholderConfigurer +
+          Package renamed as org.jasypt.spring3.properties. Classes in + this package will be removed in 1.11. 
org.jasypt.spring.properties.EncryptablePropertyOverrideConfigurer +
+          Package renamed as org.jasypt.spring3.properties. Classes in + this package will be removed in 1.11. 
org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer +
+          Package renamed as org.jasypt.spring3.properties. Classes in + this package will be removed in 1.11. 
org.jasypt.spring.properties.EncryptableServletContextPropertyPlaceholderConfigurer +
+          Package renamed as org.jasypt.spring3.properties. Classes in + this package will be removed in 1.11. 
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/help-doc.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/help-doc.html new file mode 100644 index 00000000..e7a606e2 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/help-doc.html @@ -0,0 +1,224 @@ + + + + + + + +API Help (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+How This API Document Is Organized

+
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.

+Overview

+
+ +

+The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

+

+Package

+
+ +

+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:

    +
  • Interfaces (italic)
  • Classes
  • Enums
  • Exceptions
  • Errors
  • Annotation Types
+
+

+Class/Interface

+
+ +

+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
  • Class inheritance diagram
  • Direct Subclasses
  • All Known Subinterfaces
  • All Known Implementing Classes
  • Class/interface declaration
  • Class/interface description +

    +

  • Nested Class Summary
  • Field Summary
  • Constructor Summary
  • Method Summary +

    +

  • Field Detail
  • Constructor Detail
  • Method Detail
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+ +

+Annotation Type

+
+ +

+Each annotation type has its own separate page with the following sections:

    +
  • Annotation Type declaration
  • Annotation Type description
  • Required Element Summary
  • Optional Element Summary
  • Element Detail
+
+ +

+Enum

+
+ +

+Each enum has its own separate page with the following sections:

    +
  • Enum declaration
  • Enum description
  • Enum Constant Summary
  • Enum Constant Detail
+
+

+Use

+
+Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.
+

+Tree (Class Hierarchy)

+
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.
    +
  • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
  • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
+
+

+Deprecated API

+
+The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+

+Index

+
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+

+Prev/Next

+These links take you to the next or previous class, interface, package, or related page.

+Frames/No Frames

+These links show and hide the HTML frames. All pages are available with or without frames. +

+

+Serialized Form

+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description. +

+

+Constant Field Values

+The Constant Field Values page lists the static final fields and their values. +

+ + +This help file applies to API documentation generated using the standard doclet. + +
+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/index-all.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/index-all.html new file mode 100644 index 00000000..f2c08c50 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/index-all.html @@ -0,0 +1,479 @@ + + + + + + + +Index (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I O R S
+

+A

+
+
afterPropertiesSet() - +Method in class org.jasypt.spring3.xml.encryption.DigesterFactoryBean +
  +
afterPropertiesSet() - +Method in class org.jasypt.spring3.xml.encryption.EncryptablePropertiesFactoryBean +
  +
afterPropertiesSet() - +Method in class org.jasypt.spring3.xml.encryption.EncryptorFactoryBean +
  +
+
+

+C

+
+
convertPropertyValue(String) - +Method in class org.jasypt.spring.properties.EncryptablePreferencesPlaceholderConfigurer +
Deprecated.   +
convertPropertyValue(String) - +Method in class org.jasypt.spring.properties.EncryptablePropertyOverrideConfigurer +
Deprecated.   +
convertPropertyValue(String) - +Method in class org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer +
Deprecated.   +
convertPropertyValue(String) - +Method in class org.jasypt.spring.properties.EncryptableServletContextPropertyPlaceholderConfigurer +
Deprecated.   +
convertPropertyValue(String) - +Method in class org.jasypt.spring3.properties.EncryptablePreferencesPlaceholderConfigurer +
  +
convertPropertyValue(String) - +Method in class org.jasypt.spring3.properties.EncryptablePropertyOverrideConfigurer +
  +
convertPropertyValue(String) - +Method in class org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer +
  +
convertPropertyValue(String) - +Method in class org.jasypt.spring3.properties.EncryptableServletContextPropertyPlaceholderConfigurer +
  +
+
+

+D

+
+
DigesterFactoryBean - Class in org.jasypt.spring3.xml.encryption
+ Factory bean for creating digester objects from the encryption namespace + elements.
DigesterFactoryBean(int) - +Constructor for class org.jasypt.spring3.xml.encryption.DigesterFactoryBean +
  +
+
+

+E

+
+
EncryptablePreferencesPlaceholderConfigurer - Class in org.jasypt.spring.properties
Deprecated. Package renamed as org.jasypt.spring3.properties. Classes in + this package will be removed in 1.11.
EncryptablePreferencesPlaceholderConfigurer(StringEncryptor) - +Constructor for class org.jasypt.spring.properties.EncryptablePreferencesPlaceholderConfigurer +
Deprecated.  + Creates an EncryptablePreferencesPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +
EncryptablePreferencesPlaceholderConfigurer(TextEncryptor) - +Constructor for class org.jasypt.spring.properties.EncryptablePreferencesPlaceholderConfigurer +
Deprecated.  + Creates an EncryptablePreferencesPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +
EncryptablePreferencesPlaceholderConfigurer - Class in org.jasypt.spring3.properties
+ Subclass of + org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt preferences values + if they are encrypted in the loaded resource locations.
EncryptablePreferencesPlaceholderConfigurer(StringEncryptor) - +Constructor for class org.jasypt.spring3.properties.EncryptablePreferencesPlaceholderConfigurer +
+ Creates an EncryptablePreferencesPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +
EncryptablePreferencesPlaceholderConfigurer(TextEncryptor) - +Constructor for class org.jasypt.spring3.properties.EncryptablePreferencesPlaceholderConfigurer +
+ Creates an EncryptablePreferencesPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +
EncryptablePropertiesFactoryBean - Class in org.jasypt.spring3.xml.encryption
+ Factory bean for creating encrptable properties objects from the encryption namespace + elements.
EncryptablePropertiesFactoryBean() - +Constructor for class org.jasypt.spring3.xml.encryption.EncryptablePropertiesFactoryBean +
  +
EncryptablePropertyOverrideConfigurer - Class in org.jasypt.spring.properties
Deprecated. Package renamed as org.jasypt.spring3.properties. Classes in + this package will be removed in 1.11.
EncryptablePropertyOverrideConfigurer(StringEncryptor) - +Constructor for class org.jasypt.spring.properties.EncryptablePropertyOverrideConfigurer +
Deprecated.  + Creates an EncryptablePropertyOverrideConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +
EncryptablePropertyOverrideConfigurer(TextEncryptor) - +Constructor for class org.jasypt.spring.properties.EncryptablePropertyOverrideConfigurer +
Deprecated.  + Creates an EncryptablePropertyOverrideConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +
EncryptablePropertyOverrideConfigurer - Class in org.jasypt.spring3.properties
+ Subclass of + org.springframework.beans.factory.config.PropertyOverrideConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the loaded resource locations.
EncryptablePropertyOverrideConfigurer(StringEncryptor) - +Constructor for class org.jasypt.spring3.properties.EncryptablePropertyOverrideConfigurer +
+ Creates an EncryptablePropertyOverrideConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +
EncryptablePropertyOverrideConfigurer(TextEncryptor) - +Constructor for class org.jasypt.spring3.properties.EncryptablePropertyOverrideConfigurer +
+ Creates an EncryptablePropertyOverrideConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +
EncryptablePropertyPlaceholderConfigurer - Class in org.jasypt.spring.properties
Deprecated. Package renamed as org.jasypt.spring3.properties. Classes in + this package will be removed in 1.11.
EncryptablePropertyPlaceholderConfigurer(StringEncryptor) - +Constructor for class org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer +
Deprecated.  + Creates an EncryptablePropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +
EncryptablePropertyPlaceholderConfigurer(TextEncryptor) - +Constructor for class org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer +
Deprecated.  + Creates an EncryptablePropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +
EncryptablePropertyPlaceholderConfigurer - Class in org.jasypt.spring3.properties
+ Subclass of + org.springframework.beans.factory.config.PropertyPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the loaded resource locations.
EncryptablePropertyPlaceholderConfigurer(StringEncryptor) - +Constructor for class org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer +
+ Creates an EncryptablePropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +
EncryptablePropertyPlaceholderConfigurer(TextEncryptor) - +Constructor for class org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer +
+ Creates an EncryptablePropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +
EncryptableServletContextPropertyPlaceholderConfigurer - Class in org.jasypt.spring.properties
Deprecated. Package renamed as org.jasypt.spring3.properties. Classes in + this package will be removed in 1.11.
EncryptableServletContextPropertyPlaceholderConfigurer(StringEncryptor) - +Constructor for class org.jasypt.spring.properties.EncryptableServletContextPropertyPlaceholderConfigurer +
Deprecated.  + Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +
EncryptableServletContextPropertyPlaceholderConfigurer(TextEncryptor) - +Constructor for class org.jasypt.spring.properties.EncryptableServletContextPropertyPlaceholderConfigurer +
Deprecated.  + Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +
EncryptableServletContextPropertyPlaceholderConfigurer - Class in org.jasypt.spring3.properties
+ Subclass of + org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt servlet context parameter values + if they are encrypted in the loaded resource locations.
EncryptableServletContextPropertyPlaceholderConfigurer(StringEncryptor) - +Constructor for class org.jasypt.spring3.properties.EncryptableServletContextPropertyPlaceholderConfigurer +
+ Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +
EncryptableServletContextPropertyPlaceholderConfigurer(TextEncryptor) - +Constructor for class org.jasypt.spring3.properties.EncryptableServletContextPropertyPlaceholderConfigurer +
+ Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +
EncryptionNamespaceHandler - Class in org.jasypt.spring3.xml.encryption
+ Namespace handler for jasypt's encryption namespace.
EncryptionNamespaceHandler() - +Constructor for class org.jasypt.spring3.xml.encryption.EncryptionNamespaceHandler +
  +
EncryptorFactoryBean - Class in org.jasypt.spring3.xml.encryption
+ Factory bean for creating encryptor objects from the encryption namespace + elements.
EncryptorFactoryBean(int) - +Constructor for class org.jasypt.spring3.xml.encryption.EncryptorFactoryBean +
  +
+
+

+G

+
+
getObject() - +Method in class org.jasypt.spring3.xml.encryption.DigesterFactoryBean +
  +
getObject() - +Method in class org.jasypt.spring3.xml.encryption.EncryptablePropertiesFactoryBean +
  +
getObject() - +Method in class org.jasypt.spring3.xml.encryption.EncryptorFactoryBean +
  +
getObjectType() - +Method in class org.jasypt.spring3.xml.encryption.DigesterFactoryBean +
  +
getObjectType() - +Method in class org.jasypt.spring3.xml.encryption.EncryptablePropertiesFactoryBean +
  +
getObjectType() - +Method in class org.jasypt.spring3.xml.encryption.EncryptorFactoryBean +
  +
+
+

+I

+
+
init() - +Method in class org.jasypt.spring3.xml.encryption.EncryptionNamespaceHandler +
  +
isSingleton() - +Method in class org.jasypt.spring3.xml.encryption.DigesterFactoryBean +
  +
isSingleton() - +Method in class org.jasypt.spring3.xml.encryption.EncryptablePropertiesFactoryBean +
  +
isSingleton() - +Method in class org.jasypt.spring3.xml.encryption.EncryptorFactoryBean +
  +
+
+

+O

+
+
org.jasypt.spring.properties - package org.jasypt.spring.properties
 
org.jasypt.spring3.properties - package org.jasypt.spring3.properties
 
org.jasypt.spring3.xml.encryption - package org.jasypt.spring3.xml.encryption
 
+
+

+R

+
+
resolvePlaceholder(String, Properties) - +Method in class org.jasypt.spring.properties.EncryptableServletContextPropertyPlaceholderConfigurer +
Deprecated.   +
resolvePlaceholder(String, Properties) - +Method in class org.jasypt.spring3.properties.EncryptablePreferencesPlaceholderConfigurer +
  +
resolvePlaceholder(String, String, Preferences) - +Method in class org.jasypt.spring3.properties.EncryptablePreferencesPlaceholderConfigurer +
  +
resolvePlaceholder(String, Properties) - +Method in class org.jasypt.spring3.properties.EncryptableServletContextPropertyPlaceholderConfigurer +
  +
resolveSystemProperty(String) - +Method in class org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer +
Deprecated.   +
resolveSystemProperty(String) - +Method in class org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer +
  +
+
+

+S

+
+
setAlgorithm(String) - +Method in class org.jasypt.spring3.xml.encryption.DigesterFactoryBean +
  +
setAlgorithm(String) - +Method in class org.jasypt.spring3.xml.encryption.EncryptorFactoryBean +
  +
setConfig(DigesterConfig) - +Method in class org.jasypt.spring3.xml.encryption.DigesterFactoryBean +
  +
setConfig(PBEConfig) - +Method in class org.jasypt.spring3.xml.encryption.EncryptorFactoryBean +
  +
setEncryptor(Object) - +Method in class org.jasypt.spring3.xml.encryption.EncryptablePropertiesFactoryBean +
  +
setInvertPositionOfPlainSaltInEncryptionResults(Boolean) - +Method in class org.jasypt.spring3.xml.encryption.DigesterFactoryBean +
  +
setInvertPositionOfSaltInMessageBeforeDigesting(Boolean) - +Method in class org.jasypt.spring3.xml.encryption.DigesterFactoryBean +
  +
setIterations(Integer) - +Method in class org.jasypt.spring3.xml.encryption.DigesterFactoryBean +
  +
setKeyObtentionIterations(Integer) - +Method in class org.jasypt.spring3.xml.encryption.EncryptorFactoryBean +
  +
setPassword(String) - +Method in class org.jasypt.spring3.xml.encryption.EncryptorFactoryBean +
  +
setPoolSize(Integer) - +Method in class org.jasypt.spring3.xml.encryption.DigesterFactoryBean +
  +
setPoolSize(Integer) - +Method in class org.jasypt.spring3.xml.encryption.EncryptorFactoryBean +
  +
setPrefix(String) - +Method in class org.jasypt.spring3.xml.encryption.DigesterFactoryBean +
  +
setProvider(Provider) - +Method in class org.jasypt.spring3.xml.encryption.DigesterFactoryBean +
  +
setProvider(Provider) - +Method in class org.jasypt.spring3.xml.encryption.EncryptorFactoryBean +
  +
setProviderName(String) - +Method in class org.jasypt.spring3.xml.encryption.DigesterFactoryBean +
  +
setProviderName(String) - +Method in class org.jasypt.spring3.xml.encryption.EncryptorFactoryBean +
  +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.spring3.xml.encryption.DigesterFactoryBean +
  +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.spring3.xml.encryption.EncryptorFactoryBean +
  +
setSaltSizeBytes(Integer) - +Method in class org.jasypt.spring3.xml.encryption.DigesterFactoryBean +
  +
setSingleton(boolean) - +Method in class org.jasypt.spring3.xml.encryption.DigesterFactoryBean +
  +
setSingleton(boolean) - +Method in class org.jasypt.spring3.xml.encryption.EncryptablePropertiesFactoryBean +
  +
setSingleton(boolean) - +Method in class org.jasypt.spring3.xml.encryption.EncryptorFactoryBean +
  +
setStringOutputType(String) - +Method in class org.jasypt.spring3.xml.encryption.DigesterFactoryBean +
  +
setStringOutputType(String) - +Method in class org.jasypt.spring3.xml.encryption.EncryptorFactoryBean +
  +
setSuffix(String) - +Method in class org.jasypt.spring3.xml.encryption.DigesterFactoryBean +
  +
setUnicodeNormalizationIgnored(Boolean) - +Method in class org.jasypt.spring3.xml.encryption.DigesterFactoryBean +
  +
setUseLenientSaltSizeCheck(Boolean) - +Method in class org.jasypt.spring3.xml.encryption.DigesterFactoryBean +
  +
+
+A C D E G I O R S + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/index.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/index.html new file mode 100644 index 00000000..517fbd20 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/index.html @@ -0,0 +1,40 @@ + + + + + + + +JASYPT: Java Simplified Encryption 1.9.2 API + + + + + + + + + + + +<H2> +Frame Alert</H2> + +<P> +This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. +<BR> +Link to<A HREF="overview-summary.html">Non-frame version.</A> + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/EncryptablePreferencesPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/EncryptablePreferencesPlaceholderConfigurer.html new file mode 100644 index 00000000..2e491f76 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/EncryptablePreferencesPlaceholderConfigurer.html @@ -0,0 +1,397 @@ + + + + + + + +EncryptablePreferencesPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring.properties +
+Class EncryptablePreferencesPlaceholderConfigurer

+
+Object
+  extended by org.springframework.core.io.support.PropertiesLoaderSupport
+      extended by org.springframework.beans.factory.config.PropertyResourceConfigurer
+          extended by org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+              extended by org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer
+                  extended by org.jasypt.spring.properties.EncryptablePreferencesPlaceholderConfigurer
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.beans.factory.InitializingBean, org.springframework.core.Ordered, org.springframework.core.PriorityOrdered
+
+
+Deprecated. Package renamed as org.jasypt.spring3.properties. Classes in + this package will be removed in 1.11. +

+

+
public final class EncryptablePreferencesPlaceholderConfigurer
extends org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer
+ + +

+

+ Subclass of + org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt preferences values + if they are encrypted in the loaded resource locations. +

+

+ A value is considered "encrypted" when it appears surrounded by + ENC(...), like: +

+

+

ENC(!"DGAS24FaIO$)
+

+

+ +

+

+
Since:
+
1.7
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
DEFAULT_PLACEHOLDER_PREFIX, DEFAULT_PLACEHOLDER_SUFFIX, DEFAULT_VALUE_SEPARATOR, SYSTEM_PROPERTIES_MODE_FALLBACK, SYSTEM_PROPERTIES_MODE_NEVER, SYSTEM_PROPERTIES_MODE_OVERRIDE
+ + + + + + + +
Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
logger, XML_FILE_EXTENSION
+ + + + + + + +
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
+  + + + + + + + + + + + + + +
+Constructor Summary
EncryptablePreferencesPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor) + +
+          Deprecated.  + Creates an EncryptablePreferencesPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values.
EncryptablePreferencesPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+          Deprecated.  + Creates an EncryptablePreferencesPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values.
+  + + + + + + + + + + + +
+Method Summary
+protected  StringconvertPropertyValue(String originalValue) + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer
afterPropertiesSet, resolvePlaceholder, resolvePlaceholder, setSystemTreePath, setUserTreePath
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
parseStringValue, processProperties, resolvePlaceholder, resolveSystemProperty, setBeanFactory, setBeanName, setIgnoreUnresolvablePlaceholders, setNullValue, setPlaceholderPrefix, setPlaceholderSuffix, setSearchSystemEnvironment, setSystemPropertiesMode, setSystemPropertiesModeName
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyResourceConfigurer
convertProperties, getOrder, postProcessBeanFactory, setOrder
+ + + + + + + +
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptablePreferencesPlaceholderConfigurer

+
+public EncryptablePreferencesPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor)
+
+
Deprecated. 

+ Creates an EncryptablePreferencesPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +

+

+

+
Parameters:
stringEncryptor - the StringEncryptor to be used do decrypt values. It + can not be null.
+
+
+ +

+EncryptablePreferencesPlaceholderConfigurer

+
+public EncryptablePreferencesPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+
Deprecated. 

+ Creates an EncryptablePreferencesPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +

+

+

+
Parameters:
textEncryptor - the TextEncryptor to be used do decrypt values. It can + not be null.
+
+ + + + + + + + +
+Method Detail
+ +

+convertPropertyValue

+
+protected String convertPropertyValue(String originalValue)
+
+
Deprecated. 
+
Overrides:
convertPropertyValue in class org.springframework.beans.factory.config.PropertyResourceConfigurer
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/EncryptablePropertyOverrideConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/EncryptablePropertyOverrideConfigurer.html new file mode 100644 index 00000000..16ec644c --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/EncryptablePropertyOverrideConfigurer.html @@ -0,0 +1,390 @@ + + + + + + + +EncryptablePropertyOverrideConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring.properties +
+Class EncryptablePropertyOverrideConfigurer

+
+Object
+  extended by org.springframework.core.io.support.PropertiesLoaderSupport
+      extended by org.springframework.beans.factory.config.PropertyResourceConfigurer
+          extended by org.springframework.beans.factory.config.PropertyOverrideConfigurer
+              extended by org.jasypt.spring.properties.EncryptablePropertyOverrideConfigurer
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.core.Ordered, org.springframework.core.PriorityOrdered
+
+
+Deprecated. Package renamed as org.jasypt.spring3.properties. Classes in + this package will be removed in 1.11. +

+

+
public final class EncryptablePropertyOverrideConfigurer
extends org.springframework.beans.factory.config.PropertyOverrideConfigurer
+ + +

+

+ Subclass of + org.springframework.beans.factory.config.PropertyOverrideConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the loaded resource locations. +

+

+ A value is considered "encrypted" when it appears surrounded by + ENC(...), like: +

+

+

my.value=ENC(!"DGAS24FaIO$)
+

+

+ Encrypted and unencrypted objects can be combined in the same resources file. +

+

+ +

+

+
Since:
+
1.4
+
Author:
+
Marcos Muíño García
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PropertyOverrideConfigurer
DEFAULT_BEAN_NAME_SEPARATOR
+ + + + + + + +
Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
logger, XML_FILE_EXTENSION
+ + + + + + + +
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
+  + + + + + + + + + + + + + +
+Constructor Summary
EncryptablePropertyOverrideConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor) + +
+          Deprecated.  + Creates an EncryptablePropertyOverrideConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values.
EncryptablePropertyOverrideConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+          Deprecated.  + Creates an EncryptablePropertyOverrideConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values.
+  + + + + + + + + + + + +
+Method Summary
+protected  StringconvertPropertyValue(String originalValue) + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyOverrideConfigurer
applyPropertyValue, hasPropertyOverridesFor, processKey, processProperties, setBeanNameSeparator, setIgnoreInvalidKeys
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyResourceConfigurer
convertProperties, getOrder, postProcessBeanFactory, setOrder
+ + + + + + + +
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptablePropertyOverrideConfigurer

+
+public EncryptablePropertyOverrideConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor)
+
+
Deprecated. 

+ Creates an EncryptablePropertyOverrideConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +

+

+

+
Parameters:
stringEncryptor - the StringEncryptor to be used do decrypt values. It + can not be null.
+
+
+ +

+EncryptablePropertyOverrideConfigurer

+
+public EncryptablePropertyOverrideConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+
Deprecated. 

+ Creates an EncryptablePropertyOverrideConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +

+

+

+
Parameters:
textEncryptor - the TextEncryptor to be used do decrypt values. It can + not be null.
+
+ + + + + + + + +
+Method Detail
+ +

+convertPropertyValue

+
+protected String convertPropertyValue(String originalValue)
+
+
Deprecated. 
+
Overrides:
convertPropertyValue in class org.springframework.beans.factory.config.PropertyResourceConfigurer
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/EncryptablePropertyPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/EncryptablePropertyPlaceholderConfigurer.html new file mode 100644 index 00000000..f147a27a --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/EncryptablePropertyPlaceholderConfigurer.html @@ -0,0 +1,412 @@ + + + + + + + +EncryptablePropertyPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring.properties +
+Class EncryptablePropertyPlaceholderConfigurer

+
+Object
+  extended by org.springframework.core.io.support.PropertiesLoaderSupport
+      extended by org.springframework.beans.factory.config.PropertyResourceConfigurer
+          extended by org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+              extended by org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.core.Ordered, org.springframework.core.PriorityOrdered
+
+
+Deprecated. Package renamed as org.jasypt.spring3.properties. Classes in + this package will be removed in 1.11. +

+

+
public final class EncryptablePropertyPlaceholderConfigurer
extends org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+ + +

+

+ Subclass of + org.springframework.beans.factory.config.PropertyPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the loaded resource locations. +

+

+ A value is considered "encrypted" when it appears surrounded by + ENC(...), like: +

+

+

my.value=ENC(!"DGAS24FaIO$)
+

+

+ Encrypted and unencrypted objects can be combined in the same resources file. +

+

+ +

+

+
Since:
+
1.4
+
Author:
+
Marcos Muíño García, Carlos Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
DEFAULT_PLACEHOLDER_PREFIX, DEFAULT_PLACEHOLDER_SUFFIX, DEFAULT_VALUE_SEPARATOR, SYSTEM_PROPERTIES_MODE_FALLBACK, SYSTEM_PROPERTIES_MODE_NEVER, SYSTEM_PROPERTIES_MODE_OVERRIDE
+ + + + + + + +
Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
logger, XML_FILE_EXTENSION
+ + + + + + + +
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
+  + + + + + + + + + + + + + +
+Constructor Summary
EncryptablePropertyPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor) + +
+          Deprecated.  + Creates an EncryptablePropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values.
EncryptablePropertyPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+          Deprecated.  + Creates an EncryptablePropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values.
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  StringconvertPropertyValue(String originalValue) + +
+          Deprecated.  
+protected  StringresolveSystemProperty(String key) + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
parseStringValue, processProperties, resolvePlaceholder, resolvePlaceholder, setBeanFactory, setBeanName, setIgnoreUnresolvablePlaceholders, setNullValue, setPlaceholderPrefix, setPlaceholderSuffix, setSearchSystemEnvironment, setSystemPropertiesMode, setSystemPropertiesModeName
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyResourceConfigurer
convertProperties, getOrder, postProcessBeanFactory, setOrder
+ + + + + + + +
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptablePropertyPlaceholderConfigurer

+
+public EncryptablePropertyPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor)
+
+
Deprecated. 

+ Creates an EncryptablePropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +

+

+

+
Parameters:
stringEncryptor - the StringEncryptor to be used do decrypt values. It + can not be null.
+
+
+ +

+EncryptablePropertyPlaceholderConfigurer

+
+public EncryptablePropertyPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+
Deprecated. 

+ Creates an EncryptablePropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +

+

+

+
Parameters:
textEncryptor - the TextEncryptor to be used do decrypt values. It can + not be null.
+
+ + + + + + + + +
+Method Detail
+ +

+convertPropertyValue

+
+protected String convertPropertyValue(String originalValue)
+
+
Deprecated. 
+
Overrides:
convertPropertyValue in class org.springframework.beans.factory.config.PropertyResourceConfigurer
+
+
+
+
+
+
+ +

+resolveSystemProperty

+
+protected String resolveSystemProperty(String key)
+
+
Deprecated. 
+
Overrides:
resolveSystemProperty in class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/EncryptableServletContextPropertyPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/EncryptableServletContextPropertyPlaceholderConfigurer.html new file mode 100644 index 00000000..b0a6a6f5 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/EncryptableServletContextPropertyPlaceholderConfigurer.html @@ -0,0 +1,421 @@ + + + + + + + +EncryptableServletContextPropertyPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring.properties +
+Class EncryptableServletContextPropertyPlaceholderConfigurer

+
+Object
+  extended by org.springframework.core.io.support.PropertiesLoaderSupport
+      extended by org.springframework.beans.factory.config.PropertyResourceConfigurer
+          extended by org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+              extended by org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer
+                  extended by org.jasypt.spring.properties.EncryptableServletContextPropertyPlaceholderConfigurer
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.core.Ordered, org.springframework.core.PriorityOrdered, org.springframework.web.context.ServletContextAware
+
+
+Deprecated. Package renamed as org.jasypt.spring3.properties. Classes in + this package will be removed in 1.11. +

+

+
public final class EncryptableServletContextPropertyPlaceholderConfigurer
extends org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer
+ + +

+

+ Subclass of + org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt servlet context parameter values + if they are encrypted in the loaded resource locations. +

+

+ A value is considered "encrypted" when it appears surrounded by + ENC(...), like: +

+

+

<param-value>ENC(!"DGAS24FaIO$)</param-value>
+

+

+ +

+

+
Since:
+
1.7
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
DEFAULT_PLACEHOLDER_PREFIX, DEFAULT_PLACEHOLDER_SUFFIX, DEFAULT_VALUE_SEPARATOR, SYSTEM_PROPERTIES_MODE_FALLBACK, SYSTEM_PROPERTIES_MODE_NEVER, SYSTEM_PROPERTIES_MODE_OVERRIDE
+ + + + + + + +
Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
logger, XML_FILE_EXTENSION
+ + + + + + + +
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
+  + + + + + + + + + + + + + +
+Constructor Summary
EncryptableServletContextPropertyPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor) + +
+          Deprecated.  + Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values.
EncryptableServletContextPropertyPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+          Deprecated.  + Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values.
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  StringconvertPropertyValue(String originalValue) + +
+          Deprecated.  
+protected  StringresolvePlaceholder(String placeholder, + Properties props) + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer
resolvePlaceholder, setContextOverride, setSearchContextAttributes, setServletContext
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
parseStringValue, processProperties, resolvePlaceholder, resolveSystemProperty, setBeanFactory, setBeanName, setIgnoreUnresolvablePlaceholders, setNullValue, setPlaceholderPrefix, setPlaceholderSuffix, setSearchSystemEnvironment, setSystemPropertiesMode, setSystemPropertiesModeName
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyResourceConfigurer
convertProperties, getOrder, postProcessBeanFactory, setOrder
+ + + + + + + +
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptableServletContextPropertyPlaceholderConfigurer

+
+public EncryptableServletContextPropertyPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor)
+
+
Deprecated. 

+ Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +

+

+

+
Parameters:
stringEncryptor - the StringEncryptor to be used do decrypt values. It + can not be null.
+
+
+ +

+EncryptableServletContextPropertyPlaceholderConfigurer

+
+public EncryptableServletContextPropertyPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+
Deprecated. 

+ Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +

+

+

+
Parameters:
textEncryptor - the TextEncryptor to be used do decrypt values. It can + not be null.
+
+ + + + + + + + +
+Method Detail
+ +

+convertPropertyValue

+
+protected String convertPropertyValue(String originalValue)
+
+
Deprecated. 
+
Overrides:
convertPropertyValue in class org.springframework.beans.factory.config.PropertyResourceConfigurer
+
+
+
+
+
+
+ +

+resolvePlaceholder

+
+protected String resolvePlaceholder(String placeholder,
+                                    Properties props)
+
+
Deprecated. 
+
Overrides:
resolvePlaceholder in class org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/class-use/EncryptablePreferencesPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/class-use/EncryptablePreferencesPlaceholderConfigurer.html new file mode 100644 index 00000000..e13bacb7 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/class-use/EncryptablePreferencesPlaceholderConfigurer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring.properties.EncryptablePreferencesPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring.properties.EncryptablePreferencesPlaceholderConfigurer

+
+No usage of org.jasypt.spring.properties.EncryptablePreferencesPlaceholderConfigurer +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/class-use/EncryptablePropertyOverrideConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/class-use/EncryptablePropertyOverrideConfigurer.html new file mode 100644 index 00000000..336168b5 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/class-use/EncryptablePropertyOverrideConfigurer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring.properties.EncryptablePropertyOverrideConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring.properties.EncryptablePropertyOverrideConfigurer

+
+No usage of org.jasypt.spring.properties.EncryptablePropertyOverrideConfigurer +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/class-use/EncryptablePropertyPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/class-use/EncryptablePropertyPlaceholderConfigurer.html new file mode 100644 index 00000000..40b2fb3d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/class-use/EncryptablePropertyPlaceholderConfigurer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer

+
+No usage of org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/class-use/EncryptableServletContextPropertyPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/class-use/EncryptableServletContextPropertyPlaceholderConfigurer.html new file mode 100644 index 00000000..a5e0b0b4 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/class-use/EncryptableServletContextPropertyPlaceholderConfigurer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring.properties.EncryptableServletContextPropertyPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring.properties.EncryptableServletContextPropertyPlaceholderConfigurer

+
+No usage of org.jasypt.spring.properties.EncryptableServletContextPropertyPlaceholderConfigurer +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/package-frame.html new file mode 100644 index 00000000..4a6c0e6b --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/package-frame.html @@ -0,0 +1,39 @@ + + + + + + + +org.jasypt.spring.properties (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.spring.properties + + + + +
+Classes  + +
+EncryptablePreferencesPlaceholderConfigurer +
+EncryptablePropertyOverrideConfigurer +
+EncryptablePropertyPlaceholderConfigurer +
+EncryptableServletContextPropertyPlaceholderConfigurer
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/package-summary.html new file mode 100644 index 00000000..9cc4aee7 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/package-summary.html @@ -0,0 +1,170 @@ + + + + + + + +org.jasypt.spring.properties (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.spring.properties +

+ + + + + + + + + + + + + + + + + + + + + +
+Class Summary
EncryptablePreferencesPlaceholderConfigurerDeprecated. Package renamed as org.jasypt.spring3.properties.
EncryptablePropertyOverrideConfigurerDeprecated. Package renamed as org.jasypt.spring3.properties.
EncryptablePropertyPlaceholderConfigurerDeprecated. Package renamed as org.jasypt.spring3.properties.
EncryptableServletContextPropertyPlaceholderConfigurerDeprecated. Package renamed as org.jasypt.spring3.properties.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/package-tree.html new file mode 100644 index 00000000..7206c298 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/package-tree.html @@ -0,0 +1,170 @@ + + + + + + + +org.jasypt.spring.properties Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.spring.properties +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.springframework.core.io.support.PropertiesLoaderSupport
        +
      • org.springframework.beans.factory.config.PropertyResourceConfigurer (implements org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.core.PriorityOrdered) + +
      +
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/package-use.html new file mode 100644 index 00000000..43137f8e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring/properties/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.spring.properties (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.spring.properties

+
+No usage of org.jasypt.spring.properties +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/EncryptablePreferencesPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/EncryptablePreferencesPlaceholderConfigurer.html new file mode 100644 index 00000000..bbe341e7 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/EncryptablePreferencesPlaceholderConfigurer.html @@ -0,0 +1,444 @@ + + + + + + + +EncryptablePreferencesPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring3.properties +
+Class EncryptablePreferencesPlaceholderConfigurer

+
+Object
+  extended by org.springframework.core.io.support.PropertiesLoaderSupport
+      extended by org.springframework.beans.factory.config.PropertyResourceConfigurer
+          extended by org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+              extended by org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer
+                  extended by org.jasypt.spring3.properties.EncryptablePreferencesPlaceholderConfigurer
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.beans.factory.InitializingBean, org.springframework.core.Ordered, org.springframework.core.PriorityOrdered
+
+
+
+
public final class EncryptablePreferencesPlaceholderConfigurer
extends org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer
+ + +

+

+ Subclass of + org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt preferences values + if they are encrypted in the loaded resource locations. +

+

+ A value is considered "encrypted" when it appears surrounded by + ENC(...), like: +

+

+

ENC(!"DGAS24FaIO$)
+

+

+ +

+

+
Since:
+
1.9.0 (existed in package org.jasypt.spring.properties since 1.7)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
DEFAULT_PLACEHOLDER_PREFIX, DEFAULT_PLACEHOLDER_SUFFIX, DEFAULT_VALUE_SEPARATOR, SYSTEM_PROPERTIES_MODE_FALLBACK, SYSTEM_PROPERTIES_MODE_NEVER, SYSTEM_PROPERTIES_MODE_OVERRIDE
+ + + + + + + +
Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
logger, XML_FILE_EXTENSION
+ + + + + + + +
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
+  + + + + + + + + + + + + + +
+Constructor Summary
EncryptablePreferencesPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor) + +
+           + Creates an EncryptablePreferencesPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values.
EncryptablePreferencesPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+           + Creates an EncryptablePreferencesPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values.
+  + + + + + + + + + + + + + + + + + + + +
+Method Summary
+protected  StringconvertPropertyValue(String originalValue) + +
+           
+protected  StringresolvePlaceholder(String placeholder, + Properties props) + +
+           
+protected  StringresolvePlaceholder(String path, + String key, + Preferences preferences) + +
+           
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer
afterPropertiesSet, setSystemTreePath, setUserTreePath
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
parseStringValue, processProperties, resolvePlaceholder, resolveSystemProperty, setBeanFactory, setBeanName, setIgnoreUnresolvablePlaceholders, setNullValue, setPlaceholderPrefix, setPlaceholderSuffix, setSearchSystemEnvironment, setSystemPropertiesMode, setSystemPropertiesModeName
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyResourceConfigurer
convertProperties, getOrder, postProcessBeanFactory, setOrder
+ + + + + + + +
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptablePreferencesPlaceholderConfigurer

+
+public EncryptablePreferencesPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor)
+
+

+ Creates an EncryptablePreferencesPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +

+

+

+
Parameters:
stringEncryptor - the StringEncryptor to be used do decrypt values. It + can not be null.
+
+
+ +

+EncryptablePreferencesPlaceholderConfigurer

+
+public EncryptablePreferencesPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+

+ Creates an EncryptablePreferencesPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +

+

+

+
Parameters:
textEncryptor - the TextEncryptor to be used do decrypt values. It can + not be null.
+
+ + + + + + + + +
+Method Detail
+ +

+convertPropertyValue

+
+protected String convertPropertyValue(String originalValue)
+
+
+
Overrides:
convertPropertyValue in class org.springframework.beans.factory.config.PropertyResourceConfigurer
+
+
+
+
+
+
+ +

+resolvePlaceholder

+
+protected String resolvePlaceholder(String placeholder,
+                                    Properties props)
+
+
+
Overrides:
resolvePlaceholder in class org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer
+
+
+
+
+
+
+ +

+resolvePlaceholder

+
+protected String resolvePlaceholder(String path,
+                                    String key,
+                                    Preferences preferences)
+
+
+
Overrides:
resolvePlaceholder in class org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/EncryptablePropertyOverrideConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/EncryptablePropertyOverrideConfigurer.html new file mode 100644 index 00000000..8befbed1 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/EncryptablePropertyOverrideConfigurer.html @@ -0,0 +1,387 @@ + + + + + + + +EncryptablePropertyOverrideConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring3.properties +
+Class EncryptablePropertyOverrideConfigurer

+
+Object
+  extended by org.springframework.core.io.support.PropertiesLoaderSupport
+      extended by org.springframework.beans.factory.config.PropertyResourceConfigurer
+          extended by org.springframework.beans.factory.config.PropertyOverrideConfigurer
+              extended by org.jasypt.spring3.properties.EncryptablePropertyOverrideConfigurer
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.core.Ordered, org.springframework.core.PriorityOrdered
+
+
+
+
public final class EncryptablePropertyOverrideConfigurer
extends org.springframework.beans.factory.config.PropertyOverrideConfigurer
+ + +

+

+ Subclass of + org.springframework.beans.factory.config.PropertyOverrideConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the loaded resource locations. +

+

+ A value is considered "encrypted" when it appears surrounded by + ENC(...), like: +

+

+

my.value=ENC(!"DGAS24FaIO$)
+

+

+ Encrypted and unencrypted objects can be combined in the same resources file. +

+

+ +

+

+
Since:
+
1.9.0 (existed in package org.jasypt.spring.properties since 1.4)
+
Author:
+
Marcos Muíño García
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PropertyOverrideConfigurer
DEFAULT_BEAN_NAME_SEPARATOR
+ + + + + + + +
Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
logger, XML_FILE_EXTENSION
+ + + + + + + +
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
+  + + + + + + + + + + + + + +
+Constructor Summary
EncryptablePropertyOverrideConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor) + +
+           + Creates an EncryptablePropertyOverrideConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values.
EncryptablePropertyOverrideConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+           + Creates an EncryptablePropertyOverrideConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values.
+  + + + + + + + + + + + +
+Method Summary
+protected  StringconvertPropertyValue(String originalValue) + +
+           
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyOverrideConfigurer
applyPropertyValue, hasPropertyOverridesFor, processKey, processProperties, setBeanNameSeparator, setIgnoreInvalidKeys
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyResourceConfigurer
convertProperties, getOrder, postProcessBeanFactory, setOrder
+ + + + + + + +
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptablePropertyOverrideConfigurer

+
+public EncryptablePropertyOverrideConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor)
+
+

+ Creates an EncryptablePropertyOverrideConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +

+

+

+
Parameters:
stringEncryptor - the StringEncryptor to be used do decrypt values. It + can not be null.
+
+
+ +

+EncryptablePropertyOverrideConfigurer

+
+public EncryptablePropertyOverrideConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+

+ Creates an EncryptablePropertyOverrideConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +

+

+

+
Parameters:
textEncryptor - the TextEncryptor to be used do decrypt values. It can + not be null.
+
+ + + + + + + + +
+Method Detail
+ +

+convertPropertyValue

+
+protected String convertPropertyValue(String originalValue)
+
+
+
Overrides:
convertPropertyValue in class org.springframework.beans.factory.config.PropertyResourceConfigurer
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/EncryptablePropertyPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/EncryptablePropertyPlaceholderConfigurer.html new file mode 100644 index 00000000..11c9bd13 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/EncryptablePropertyPlaceholderConfigurer.html @@ -0,0 +1,409 @@ + + + + + + + +EncryptablePropertyPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring3.properties +
+Class EncryptablePropertyPlaceholderConfigurer

+
+Object
+  extended by org.springframework.core.io.support.PropertiesLoaderSupport
+      extended by org.springframework.beans.factory.config.PropertyResourceConfigurer
+          extended by org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+              extended by org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.core.Ordered, org.springframework.core.PriorityOrdered
+
+
+
+
public final class EncryptablePropertyPlaceholderConfigurer
extends org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+ + +

+

+ Subclass of + org.springframework.beans.factory.config.PropertyPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the loaded resource locations. +

+

+ A value is considered "encrypted" when it appears surrounded by + ENC(...), like: +

+

+

my.value=ENC(!"DGAS24FaIO$)
+

+

+ Encrypted and unencrypted objects can be combined in the same resources file. +

+

+ +

+

+
Since:
+
1.9.0 (existed in package org.jasypt.spring.properties since 1.4)
+
Author:
+
Marcos Muíño García, Carlos Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
DEFAULT_PLACEHOLDER_PREFIX, DEFAULT_PLACEHOLDER_SUFFIX, DEFAULT_VALUE_SEPARATOR, SYSTEM_PROPERTIES_MODE_FALLBACK, SYSTEM_PROPERTIES_MODE_NEVER, SYSTEM_PROPERTIES_MODE_OVERRIDE
+ + + + + + + +
Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
logger, XML_FILE_EXTENSION
+ + + + + + + +
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
+  + + + + + + + + + + + + + +
+Constructor Summary
EncryptablePropertyPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor) + +
+           + Creates an EncryptablePropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values.
EncryptablePropertyPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+           + Creates an EncryptablePropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values.
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  StringconvertPropertyValue(String originalValue) + +
+           
+protected  StringresolveSystemProperty(String key) + +
+           
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
parseStringValue, processProperties, resolvePlaceholder, resolvePlaceholder, setBeanFactory, setBeanName, setIgnoreUnresolvablePlaceholders, setNullValue, setPlaceholderPrefix, setPlaceholderSuffix, setSearchSystemEnvironment, setSystemPropertiesMode, setSystemPropertiesModeName
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyResourceConfigurer
convertProperties, getOrder, postProcessBeanFactory, setOrder
+ + + + + + + +
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptablePropertyPlaceholderConfigurer

+
+public EncryptablePropertyPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor)
+
+

+ Creates an EncryptablePropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +

+

+

+
Parameters:
stringEncryptor - the StringEncryptor to be used do decrypt values. It + can not be null.
+
+
+ +

+EncryptablePropertyPlaceholderConfigurer

+
+public EncryptablePropertyPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+

+ Creates an EncryptablePropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +

+

+

+
Parameters:
textEncryptor - the TextEncryptor to be used do decrypt values. It can + not be null.
+
+ + + + + + + + +
+Method Detail
+ +

+convertPropertyValue

+
+protected String convertPropertyValue(String originalValue)
+
+
+
Overrides:
convertPropertyValue in class org.springframework.beans.factory.config.PropertyResourceConfigurer
+
+
+
+
+
+
+ +

+resolveSystemProperty

+
+protected String resolveSystemProperty(String key)
+
+
+
Overrides:
resolveSystemProperty in class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/EncryptableServletContextPropertyPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/EncryptableServletContextPropertyPlaceholderConfigurer.html new file mode 100644 index 00000000..0529fc21 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/EncryptableServletContextPropertyPlaceholderConfigurer.html @@ -0,0 +1,418 @@ + + + + + + + +EncryptableServletContextPropertyPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring3.properties +
+Class EncryptableServletContextPropertyPlaceholderConfigurer

+
+Object
+  extended by org.springframework.core.io.support.PropertiesLoaderSupport
+      extended by org.springframework.beans.factory.config.PropertyResourceConfigurer
+          extended by org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+              extended by org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer
+                  extended by org.jasypt.spring3.properties.EncryptableServletContextPropertyPlaceholderConfigurer
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.core.Ordered, org.springframework.core.PriorityOrdered, org.springframework.web.context.ServletContextAware
+
+
+
+
public final class EncryptableServletContextPropertyPlaceholderConfigurer
extends org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer
+ + +

+

+ Subclass of + org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt servlet context parameter values + if they are encrypted in the loaded resource locations. +

+

+ A value is considered "encrypted" when it appears surrounded by + ENC(...), like: +

+

+

<param-value>ENC(!"DGAS24FaIO$)</param-value>
+

+

+ +

+

+
Since:
+
1.9.0 (existed in package org.jasypt.spring.properties since 1.7)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
DEFAULT_PLACEHOLDER_PREFIX, DEFAULT_PLACEHOLDER_SUFFIX, DEFAULT_VALUE_SEPARATOR, SYSTEM_PROPERTIES_MODE_FALLBACK, SYSTEM_PROPERTIES_MODE_NEVER, SYSTEM_PROPERTIES_MODE_OVERRIDE
+ + + + + + + +
Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
logger, XML_FILE_EXTENSION
+ + + + + + + +
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
+  + + + + + + + + + + + + + +
+Constructor Summary
EncryptableServletContextPropertyPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor) + +
+           + Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values.
EncryptableServletContextPropertyPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+           + Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values.
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  StringconvertPropertyValue(String originalValue) + +
+           
+protected  StringresolvePlaceholder(String placeholder, + Properties props) + +
+           
+ + + + + + + +
Methods inherited from class org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer
resolvePlaceholder, setContextOverride, setSearchContextAttributes, setServletContext
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
parseStringValue, processProperties, resolvePlaceholder, resolveSystemProperty, setBeanFactory, setBeanName, setIgnoreUnresolvablePlaceholders, setNullValue, setPlaceholderPrefix, setPlaceholderSuffix, setSearchSystemEnvironment, setSystemPropertiesMode, setSystemPropertiesModeName
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyResourceConfigurer
convertProperties, getOrder, postProcessBeanFactory, setOrder
+ + + + + + + +
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptableServletContextPropertyPlaceholderConfigurer

+
+public EncryptableServletContextPropertyPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor)
+
+

+ Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +

+

+

+
Parameters:
stringEncryptor - the StringEncryptor to be used do decrypt values. It + can not be null.
+
+
+ +

+EncryptableServletContextPropertyPlaceholderConfigurer

+
+public EncryptableServletContextPropertyPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+

+ Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +

+

+

+
Parameters:
textEncryptor - the TextEncryptor to be used do decrypt values. It can + not be null.
+
+ + + + + + + + +
+Method Detail
+ +

+convertPropertyValue

+
+protected String convertPropertyValue(String originalValue)
+
+
+
Overrides:
convertPropertyValue in class org.springframework.beans.factory.config.PropertyResourceConfigurer
+
+
+
+
+
+
+ +

+resolvePlaceholder

+
+protected String resolvePlaceholder(String placeholder,
+                                    Properties props)
+
+
+
Overrides:
resolvePlaceholder in class org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/class-use/EncryptablePreferencesPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/class-use/EncryptablePreferencesPlaceholderConfigurer.html new file mode 100644 index 00000000..71bde601 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/class-use/EncryptablePreferencesPlaceholderConfigurer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring3.properties.EncryptablePreferencesPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring3.properties.EncryptablePreferencesPlaceholderConfigurer

+
+No usage of org.jasypt.spring3.properties.EncryptablePreferencesPlaceholderConfigurer +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/class-use/EncryptablePropertyOverrideConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/class-use/EncryptablePropertyOverrideConfigurer.html new file mode 100644 index 00000000..bf5f6190 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/class-use/EncryptablePropertyOverrideConfigurer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring3.properties.EncryptablePropertyOverrideConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring3.properties.EncryptablePropertyOverrideConfigurer

+
+No usage of org.jasypt.spring3.properties.EncryptablePropertyOverrideConfigurer +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/class-use/EncryptablePropertyPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/class-use/EncryptablePropertyPlaceholderConfigurer.html new file mode 100644 index 00000000..9693a2a5 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/class-use/EncryptablePropertyPlaceholderConfigurer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer

+
+No usage of org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/class-use/EncryptableServletContextPropertyPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/class-use/EncryptableServletContextPropertyPlaceholderConfigurer.html new file mode 100644 index 00000000..b8642dcb --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/class-use/EncryptableServletContextPropertyPlaceholderConfigurer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring3.properties.EncryptableServletContextPropertyPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring3.properties.EncryptableServletContextPropertyPlaceholderConfigurer

+
+No usage of org.jasypt.spring3.properties.EncryptableServletContextPropertyPlaceholderConfigurer +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/package-frame.html new file mode 100644 index 00000000..69359c01 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/package-frame.html @@ -0,0 +1,39 @@ + + + + + + + +org.jasypt.spring3.properties (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.spring3.properties + + + + +
+Classes  + +
+EncryptablePreferencesPlaceholderConfigurer +
+EncryptablePropertyOverrideConfigurer +
+EncryptablePropertyPlaceholderConfigurer +
+EncryptableServletContextPropertyPlaceholderConfigurer
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/package-summary.html new file mode 100644 index 00000000..a9e82dee --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/package-summary.html @@ -0,0 +1,190 @@ + + + + + + + +org.jasypt.spring3.properties (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.spring3.properties +

+ + + + + + + + + + + + + + + + + + + + + +
+Class Summary
EncryptablePreferencesPlaceholderConfigurer + Subclass of + org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt preferences values + if they are encrypted in the loaded resource locations.
EncryptablePropertyOverrideConfigurer + Subclass of + org.springframework.beans.factory.config.PropertyOverrideConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the loaded resource locations.
EncryptablePropertyPlaceholderConfigurer + Subclass of + org.springframework.beans.factory.config.PropertyPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the loaded resource locations.
EncryptableServletContextPropertyPlaceholderConfigurer + Subclass of + org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt servlet context parameter values + if they are encrypted in the loaded resource locations.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/package-tree.html new file mode 100644 index 00000000..4a56fa60 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/package-tree.html @@ -0,0 +1,170 @@ + + + + + + + +org.jasypt.spring3.properties Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.spring3.properties +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.springframework.core.io.support.PropertiesLoaderSupport
        +
      • org.springframework.beans.factory.config.PropertyResourceConfigurer (implements org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.core.PriorityOrdered) + +
      +
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/package-use.html new file mode 100644 index 00000000..dad94cf7 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/properties/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.spring3.properties (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.spring3.properties

+
+No usage of org.jasypt.spring3.properties +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/DigesterFactoryBean.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/DigesterFactoryBean.html new file mode 100644 index 00000000..a28e03bb --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/DigesterFactoryBean.html @@ -0,0 +1,696 @@ + + + + + + + +DigesterFactoryBean (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring3.xml.encryption +
+Class DigesterFactoryBean

+
+Object
+  extended by org.jasypt.spring3.xml.encryption.DigesterFactoryBean
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.FactoryBean<Object>, org.springframework.beans.factory.InitializingBean
+
+
+
+
public final class DigesterFactoryBean
extends Object
implements org.springframework.beans.factory.FactoryBean<Object>, org.springframework.beans.factory.InitializingBean
+ + +

+

+ Factory bean for creating digester objects from the encryption namespace + elements. Do not use directly. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
DigesterFactoryBean(int encryptorType) + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidafterPropertiesSet() + +
+           
+ ObjectgetObject() + +
+           
+ Class<?>getObjectType() + +
+           
+ booleanisSingleton() + +
+           
+ voidsetAlgorithm(String algorithm) + +
+           
+ voidsetConfig(org.jasypt.digest.config.DigesterConfig config) + +
+           
+ voidsetInvertPositionOfPlainSaltInEncryptionResults(Boolean invertPositionOfPlainSaltInEncryptionResults) + +
+           
+ voidsetInvertPositionOfSaltInMessageBeforeDigesting(Boolean invertPositionOfSaltInMessageBeforeDigesting) + +
+           
+ voidsetIterations(Integer iterations) + +
+           
+ voidsetPoolSize(Integer poolSize) + +
+           
+ voidsetPrefix(String prefix) + +
+           
+ voidsetProvider(Provider provider) + +
+           
+ voidsetProviderName(String providerName) + +
+           
+ voidsetSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator) + +
+           
+ voidsetSaltSizeBytes(Integer saltSizeBytes) + +
+           
+ voidsetSingleton(boolean singleton) + +
+           
+ voidsetStringOutputType(String stringOutputType) + +
+           
+ voidsetSuffix(String suffix) + +
+           
+ voidsetUnicodeNormalizationIgnored(Boolean unicodeNormalizationIgnored) + +
+           
+ voidsetUseLenientSaltSizeCheck(Boolean useLenientSaltSizeCheck) + +
+           
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+DigesterFactoryBean

+
+public DigesterFactoryBean(int encryptorType)
+
+
+ + + + + + + + +
+Method Detail
+ +

+setSingleton

+
+public final void setSingleton(boolean singleton)
+
+
+
+
+
+
+
+
+
+ +

+isSingleton

+
+public final boolean isSingleton()
+
+
+
Specified by:
isSingleton in interface org.springframework.beans.factory.FactoryBean<Object>
+
+
+
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+
+
+
+
+
+
+
+
+ +

+setConfig

+
+public void setConfig(org.jasypt.digest.config.DigesterConfig config)
+
+
+
+
+
+
+
+
+
+ +

+setIterations

+
+public void setIterations(Integer iterations)
+
+
+
+
+
+
+
+
+
+ +

+setPoolSize

+
+public void setPoolSize(Integer poolSize)
+
+
+
+
+
+
+
+
+
+ +

+setProvider

+
+public void setProvider(Provider provider)
+
+
+
+
+
+
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+
+
+
+
+
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator)
+
+
+
+
+
+
+
+
+
+ +

+setInvertPositionOfPlainSaltInEncryptionResults

+
+public void setInvertPositionOfPlainSaltInEncryptionResults(Boolean invertPositionOfPlainSaltInEncryptionResults)
+
+
+
+
+
+
+
+
+
+ +

+setInvertPositionOfSaltInMessageBeforeDigesting

+
+public void setInvertPositionOfSaltInMessageBeforeDigesting(Boolean invertPositionOfSaltInMessageBeforeDigesting)
+
+
+
+
+
+
+
+
+
+ +

+setSaltSizeBytes

+
+public void setSaltSizeBytes(Integer saltSizeBytes)
+
+
+
+
+
+
+
+
+
+ +

+setUseLenientSaltSizeCheck

+
+public void setUseLenientSaltSizeCheck(Boolean useLenientSaltSizeCheck)
+
+
+
+
+
+
+
+
+
+ +

+setStringOutputType

+
+public void setStringOutputType(String stringOutputType)
+
+
+
+
+
+
+
+
+
+ +

+setUnicodeNormalizationIgnored

+
+public void setUnicodeNormalizationIgnored(Boolean unicodeNormalizationIgnored)
+
+
+
+
+
+
+
+
+
+ +

+setPrefix

+
+public void setPrefix(String prefix)
+
+
+
+
+
+
+
+
+
+ +

+setSuffix

+
+public void setSuffix(String suffix)
+
+
+
+
+
+
+
+
+
+ +

+afterPropertiesSet

+
+public final void afterPropertiesSet()
+                              throws Exception
+
+
+
Specified by:
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
+
+
+ +
Throws: +
Exception
+
+
+
+ +

+getObject

+
+public Object getObject()
+                 throws Exception
+
+
+
Specified by:
getObject in interface org.springframework.beans.factory.FactoryBean<Object>
+
+
+ +
Throws: +
Exception
+
+
+
+ +

+getObjectType

+
+public Class<?> getObjectType()
+
+
+
Specified by:
getObjectType in interface org.springframework.beans.factory.FactoryBean<Object>
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/EncryptablePropertiesFactoryBean.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/EncryptablePropertiesFactoryBean.html new file mode 100644 index 00000000..ea085779 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/EncryptablePropertiesFactoryBean.html @@ -0,0 +1,416 @@ + + + + + + + +EncryptablePropertiesFactoryBean (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring3.xml.encryption +
+Class EncryptablePropertiesFactoryBean

+
+Object
+  extended by org.springframework.core.io.support.PropertiesLoaderSupport
+      extended by org.jasypt.spring3.xml.encryption.EncryptablePropertiesFactoryBean
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.FactoryBean<Object>, org.springframework.beans.factory.InitializingBean
+
+
+
+
public final class EncryptablePropertiesFactoryBean
extends org.springframework.core.io.support.PropertiesLoaderSupport
implements org.springframework.beans.factory.FactoryBean<Object>, org.springframework.beans.factory.InitializingBean
+ + +

+

+ Factory bean for creating encrptable properties objects from the encryption namespace + elements. Do not use directly. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
logger, XML_FILE_EXTENSION
+  + + + + + + + + + + +
+Constructor Summary
EncryptablePropertiesFactoryBean() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidafterPropertiesSet() + +
+           
+ ObjectgetObject() + +
+           
+ Class<?>getObjectType() + +
+           
+ booleanisSingleton() + +
+           
+ voidsetEncryptor(Object encryptor) + +
+           
+ voidsetSingleton(boolean singleton) + +
+           
+ + + + + + + +
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptablePropertiesFactoryBean

+
+public EncryptablePropertiesFactoryBean()
+
+
+ + + + + + + + +
+Method Detail
+ +

+setSingleton

+
+public final void setSingleton(boolean singleton)
+
+
+
+
+
+
+
+
+
+ +

+isSingleton

+
+public final boolean isSingleton()
+
+
+
Specified by:
isSingleton in interface org.springframework.beans.factory.FactoryBean<Object>
+
+
+
+
+
+
+ +

+setEncryptor

+
+public void setEncryptor(Object encryptor)
+
+
+
+
+
+
+
+
+
+ +

+afterPropertiesSet

+
+public final void afterPropertiesSet()
+                              throws IOException
+
+
+
Specified by:
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
+
+
+ +
Throws: +
IOException
+
+
+
+ +

+getObject

+
+public final Object getObject()
+                       throws IOException
+
+
+
Specified by:
getObject in interface org.springframework.beans.factory.FactoryBean<Object>
+
+
+ +
Throws: +
IOException
+
+
+
+ +

+getObjectType

+
+public Class<?> getObjectType()
+
+
+
Specified by:
getObjectType in interface org.springframework.beans.factory.FactoryBean<Object>
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/EncryptionNamespaceHandler.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/EncryptionNamespaceHandler.html new file mode 100644 index 00000000..dbfcbeb0 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/EncryptionNamespaceHandler.html @@ -0,0 +1,336 @@ + + + + + + + +EncryptionNamespaceHandler (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring3.xml.encryption +
+Class EncryptionNamespaceHandler

+
+Object
+  extended by org.springframework.beans.factory.xml.NamespaceHandlerSupport
+      extended by org.jasypt.spring3.xml.encryption.EncryptionNamespaceHandler
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.xml.NamespaceHandler
+
+
+
+
public final class EncryptionNamespaceHandler
extends org.springframework.beans.factory.xml.NamespaceHandlerSupport
+ + +

+

+ Namespace handler for jasypt's encryption namespace. +

+

+ In order to use this namespace, add its XML schema declaration to your Spring + beans file like: +

+ + <beans xmlns="http://www.springframework.org/schema/beans"
+        ...
+        xmlns:encryption="http://www.jasypt.org/schema/encryption"
+        ...
+        xsi:schemaLocation="http://www.springframework.org/schema/beans
+                            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
+                            ...
+                            http://www.jasypt.org/schema/encryption
+                            http://www.jasypt.org/schema/encryption/jasypt-spring3-encryption-1.xsd
+                            ..."> +
+

+ This namespace offers the following elements for creating instances of specific jasypt artifacts + and add them to the Spring application context: +

+
    +
  • Digesters +
      +
    • DigesterConfig (simple, string, environment): <encryption:digester-config/>
    • +
    • ByteDigester (pooled or standard, depending on selected pool size): <encryption:byte-digester/>
    • +
    • StringDigester (pooled or standard, depending on selected pool size): <encryption:string-digester/>
    • +
    • Util digester classes: +
        +
      • BasicPasswordEncryptor: <encryption:basic-password-encryptor/>
      • +
      • StrongPasswordEncryptor: <encryption:strong-password-encryptor/>
      • +
      • ConfigurablePasswordEncryptor: <encryption:configurable-password-encryptor/>
      • +
      +
    • +
    +
  • +
  • PBE Encryption +
      +
    • PBEConfig (simple, string, environment): <encryption:encryptor-config/>
    • +
    • ByteEncryptor (pooled or standard, depending on selected pool size): <encryption:byte-encryptor/>
    • +
    • StringEncryptor (pooled or standard, depending on selected pool size): <encryption:string-encryptor/>
    • +
    • BigIntegerEncryptor (pooled or standard, depending on selected pool size): <encryption:big-integer-encryptor/>
    • +
    • BigDecimalEncryptor (pooled or standard, depending on selected pool size): <encryption:big-decimal-encryptor/>
    • +
    • Util encryptor classes: +
        +
      • BasicTextEncryptor: <encryption:basic-text-encryptor/>
      • +
      • StrongTextEncryptor: <encryption:strong-text-encryptor/>
      • +
      +
    • +
    +
  • +
  • Properties management +
      +
    • EncryptableProperties (equivalent to <util:properties/> adding property decryption): <encryption:encryptable-properties/>
    • +
    • EncryptablePropertyPlaceholderConfigurer (equivalent to <context:property-placeholder/> adding property decryption): <encryption:encryptable-property-placeholder/>
    • +
    • EncryptablePropertyOverrideConfigurer (equivalent to <context:property-override/> adding property decryption): <encryption:encryptable-property-override/>
    • +
    +
  • +
+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
EncryptionNamespaceHandler() + +
+           
+  + + + + + + + + + + + +
+Method Summary
+ voidinit() + +
+           
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.xml.NamespaceHandlerSupport
decorate, parse, registerBeanDefinitionDecorator, registerBeanDefinitionDecoratorForAttribute, registerBeanDefinitionParser
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptionNamespaceHandler

+
+public EncryptionNamespaceHandler()
+
+
+ + + + + + + + +
+Method Detail
+ +

+init

+
+public void init()
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/EncryptorFactoryBean.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/EncryptorFactoryBean.html new file mode 100644 index 00000000..5886a393 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/EncryptorFactoryBean.html @@ -0,0 +1,564 @@ + + + + + + + +EncryptorFactoryBean (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring3.xml.encryption +
+Class EncryptorFactoryBean

+
+Object
+  extended by org.jasypt.spring3.xml.encryption.EncryptorFactoryBean
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.FactoryBean<Object>, org.springframework.beans.factory.InitializingBean
+
+
+
+
public final class EncryptorFactoryBean
extends Object
implements org.springframework.beans.factory.FactoryBean<Object>, org.springframework.beans.factory.InitializingBean
+ + +

+

+ Factory bean for creating encryptor objects from the encryption namespace + elements. Do not use directly. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
EncryptorFactoryBean(int encryptorType) + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidafterPropertiesSet() + +
+           
+ ObjectgetObject() + +
+           
+ Class<?>getObjectType() + +
+           
+ booleanisSingleton() + +
+           
+ voidsetAlgorithm(String algorithm) + +
+           
+ voidsetConfig(org.jasypt.encryption.pbe.config.PBEConfig config) + +
+           
+ voidsetKeyObtentionIterations(Integer keyObtentionIterations) + +
+           
+ voidsetPassword(String password) + +
+           
+ voidsetPoolSize(Integer poolSize) + +
+           
+ voidsetProvider(Provider provider) + +
+           
+ voidsetProviderName(String providerName) + +
+           
+ voidsetSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator) + +
+           
+ voidsetSingleton(boolean singleton) + +
+           
+ voidsetStringOutputType(String stringOutputType) + +
+           
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptorFactoryBean

+
+public EncryptorFactoryBean(int encryptorType)
+
+
+ + + + + + + + +
+Method Detail
+ +

+setSingleton

+
+public final void setSingleton(boolean singleton)
+
+
+
+
+
+
+
+
+
+ +

+isSingleton

+
+public final boolean isSingleton()
+
+
+
Specified by:
isSingleton in interface org.springframework.beans.factory.FactoryBean<Object>
+
+
+
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+
+
+
+
+
+
+
+
+ +

+setConfig

+
+public void setConfig(org.jasypt.encryption.pbe.config.PBEConfig config)
+
+
+
+
+
+
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(Integer keyObtentionIterations)
+
+
+
+
+
+
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+
+
+
+
+
+
+
+
+ +

+setPoolSize

+
+public void setPoolSize(Integer poolSize)
+
+
+
+
+
+
+
+
+
+ +

+setProvider

+
+public void setProvider(Provider provider)
+
+
+
+
+
+
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+
+
+
+
+
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator)
+
+
+
+
+
+
+
+
+
+ +

+setStringOutputType

+
+public void setStringOutputType(String stringOutputType)
+
+
+
+
+
+
+
+
+
+ +

+afterPropertiesSet

+
+public final void afterPropertiesSet()
+                              throws Exception
+
+
+
Specified by:
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
+
+
+ +
Throws: +
Exception
+
+
+
+ +

+getObject

+
+public Object getObject()
+                 throws Exception
+
+
+
Specified by:
getObject in interface org.springframework.beans.factory.FactoryBean<Object>
+
+
+ +
Throws: +
Exception
+
+
+
+ +

+getObjectType

+
+public Class<?> getObjectType()
+
+
+
Specified by:
getObjectType in interface org.springframework.beans.factory.FactoryBean<Object>
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/class-use/DigesterFactoryBean.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/class-use/DigesterFactoryBean.html new file mode 100644 index 00000000..9fce39eb --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/class-use/DigesterFactoryBean.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring3.xml.encryption.DigesterFactoryBean (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring3.xml.encryption.DigesterFactoryBean

+
+No usage of org.jasypt.spring3.xml.encryption.DigesterFactoryBean +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/class-use/EncryptablePropertiesFactoryBean.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/class-use/EncryptablePropertiesFactoryBean.html new file mode 100644 index 00000000..bcf418a5 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/class-use/EncryptablePropertiesFactoryBean.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring3.xml.encryption.EncryptablePropertiesFactoryBean (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring3.xml.encryption.EncryptablePropertiesFactoryBean

+
+No usage of org.jasypt.spring3.xml.encryption.EncryptablePropertiesFactoryBean +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/class-use/EncryptionNamespaceHandler.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/class-use/EncryptionNamespaceHandler.html new file mode 100644 index 00000000..efd43b13 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/class-use/EncryptionNamespaceHandler.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring3.xml.encryption.EncryptionNamespaceHandler (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring3.xml.encryption.EncryptionNamespaceHandler

+
+No usage of org.jasypt.spring3.xml.encryption.EncryptionNamespaceHandler +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/class-use/EncryptorFactoryBean.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/class-use/EncryptorFactoryBean.html new file mode 100644 index 00000000..365f2b29 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/class-use/EncryptorFactoryBean.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring3.xml.encryption.EncryptorFactoryBean (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring3.xml.encryption.EncryptorFactoryBean

+
+No usage of org.jasypt.spring3.xml.encryption.EncryptorFactoryBean +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/package-frame.html new file mode 100644 index 00000000..2f1879e2 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/package-frame.html @@ -0,0 +1,39 @@ + + + + + + + +org.jasypt.spring3.xml.encryption (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.spring3.xml.encryption + + + + +
+Classes  + +
+DigesterFactoryBean +
+EncryptablePropertiesFactoryBean +
+EncryptionNamespaceHandler +
+EncryptorFactoryBean
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/package-summary.html new file mode 100644 index 00000000..abb9d820 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/package-summary.html @@ -0,0 +1,177 @@ + + + + + + + +org.jasypt.spring3.xml.encryption (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.spring3.xml.encryption +

+ + + + + + + + + + + + + + + + + + + + + +
+Class Summary
DigesterFactoryBean + Factory bean for creating digester objects from the encryption namespace + elements.
EncryptablePropertiesFactoryBean + Factory bean for creating encrptable properties objects from the encryption namespace + elements.
EncryptionNamespaceHandler + Namespace handler for jasypt's encryption namespace.
EncryptorFactoryBean + Factory bean for creating encryptor objects from the encryption namespace + elements.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/package-tree.html new file mode 100644 index 00000000..4358322b --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/package-tree.html @@ -0,0 +1,162 @@ + + + + + + + +org.jasypt.spring3.xml.encryption Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.spring3.xml.encryption +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.jasypt.spring3.xml.encryption.DigesterFactoryBean (implements org.springframework.beans.factory.FactoryBean<T>, org.springframework.beans.factory.InitializingBean) +
    • org.jasypt.spring3.xml.encryption.EncryptorFactoryBean (implements org.springframework.beans.factory.FactoryBean<T>, org.springframework.beans.factory.InitializingBean) +
    • org.springframework.beans.factory.xml.NamespaceHandlerSupport (implements org.springframework.beans.factory.xml.NamespaceHandler) + +
    • org.springframework.core.io.support.PropertiesLoaderSupport
        +
      • org.jasypt.spring3.xml.encryption.EncryptablePropertiesFactoryBean (implements org.springframework.beans.factory.FactoryBean<T>, org.springframework.beans.factory.InitializingBean) +
      +
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/package-use.html new file mode 100644 index 00000000..1ee782f6 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/org/jasypt/spring3/xml/encryption/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.spring3.xml.encryption (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.spring3.xml.encryption

+
+No usage of org.jasypt.spring3.xml.encryption +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/overview-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/overview-frame.html new file mode 100644 index 00000000..88f93597 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/overview-frame.html @@ -0,0 +1,47 @@ + + + + + + + +Overview List (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + + + + +
+
+ + + + + +
All Classes +

+ +Packages +
+org.jasypt.spring.properties +
+org.jasypt.spring3.properties +
+org.jasypt.spring3.xml.encryption +
+

+ +

+  + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/overview-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/overview-summary.html new file mode 100644 index 00000000..d4fd503d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/overview-summary.html @@ -0,0 +1,165 @@ + + + + + + + +Overview (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+JASYPT: Java Simplified Encryption 1.9.2 API +

+
+ + + + + + + + + + + + + + + + + +
+Packages
org.jasypt.spring.properties 
org.jasypt.spring3.properties 
org.jasypt.spring3.xml.encryption 
+ +


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/overview-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/overview-tree.html new file mode 100644 index 00000000..a69567db --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/overview-tree.html @@ -0,0 +1,175 @@ + + + + + + + +Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For All Packages

+
+
+
Package Hierarchies:
org.jasypt.spring.properties, org.jasypt.spring3.properties, org.jasypt.spring3.xml.encryption
+
+

+Class Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/package-list b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/package-list new file mode 100644 index 00000000..00025c2b --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/package-list @@ -0,0 +1,3 @@ +org.jasypt.spring.properties +org.jasypt.spring3.properties +org.jasypt.spring3.xml.encryption diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/resources/inherit.gif b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/resources/inherit.gif new file mode 100644 index 0000000000000000000000000000000000000000..c814867a13deb0ca7ea2156c6ca1d5a03372af7e GIT binary patch literal 57 zcmZ?wbhEHbIIT!9-C*e{wE9>Kx3D)-;0v)C; KYxQGgum%9JOA&7X literal 0 HcmV?d00001 diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring3/stylesheet.css b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/stylesheet.css new file mode 100644 index 00000000..6ea9e516 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring3/stylesheet.css @@ -0,0 +1,29 @@ +/* Javadoc style sheet */ + +/* Define colors, fonts and other style attributes here to override the defaults */ + +/* Page background color */ +body { background-color: #FFFFFF; color:#000000 } + +/* Headings */ +h1 { font-size: 145% } + +/* Table colors */ +.TableHeadingColor { background: #CCCCFF; color:#000000 } /* Dark mauve */ +.TableSubHeadingColor { background: #EEEEFF; color:#000000 } /* Light mauve */ +.TableRowColor { background: #FFFFFF; color:#000000 } /* White */ + +/* Font used in left-hand frame lists */ +.FrameTitleFont { font-size: 100%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameHeadingFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameItemFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } + +/* Navigation bar fonts and colors */ +.NavBarCell1 { background-color:#EEEEFF; color:#000000} /* Light mauve */ +.NavBarCell1Rev { background-color:#00008B; color:#FFFFFF} /* Dark Blue */ +.NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;color:#000000;} +.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;color:#FFFFFF;} + +.NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} +.NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/allclasses-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/allclasses-frame.html new file mode 100644 index 00000000..94db0ff5 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/allclasses-frame.html @@ -0,0 +1,50 @@ + + + + + + + +All Classes (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +All Classes +
+ + + + + +
DigesterFactoryBean +
+EncryptablePreferencesPlaceholderConfigurer +
+EncryptablePropertiesFactoryBean +
+EncryptablePropertiesPropertySource +
+EncryptablePropertyOverrideConfigurer +
+EncryptablePropertyPlaceholderConfigurer +
+EncryptablePropertySourcesPlaceholderConfigurer +
+EncryptableServletContextPropertyPlaceholderConfigurer +
+EncryptionNamespaceHandler +
+EncryptorFactoryBean +
+
+ + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/allclasses-noframe.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/allclasses-noframe.html new file mode 100644 index 00000000..28178a63 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/allclasses-noframe.html @@ -0,0 +1,50 @@ + + + + + + + +All Classes (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +All Classes +
+ + + + + +
DigesterFactoryBean +
+EncryptablePreferencesPlaceholderConfigurer +
+EncryptablePropertiesFactoryBean +
+EncryptablePropertiesPropertySource +
+EncryptablePropertyOverrideConfigurer +
+EncryptablePropertyPlaceholderConfigurer +
+EncryptablePropertySourcesPlaceholderConfigurer +
+EncryptableServletContextPropertyPlaceholderConfigurer +
+EncryptionNamespaceHandler +
+EncryptorFactoryBean +
+
+ + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/constant-values.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/constant-values.html new file mode 100644 index 00000000..6a0b8431 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/constant-values.html @@ -0,0 +1,147 @@ + + + + + + + +Constant Field Values (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Constant Field Values

+
+
+Contents
    +
+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/deprecated-list.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/deprecated-list.html new file mode 100644 index 00000000..c7c7e26d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/deprecated-list.html @@ -0,0 +1,147 @@ + + + + + + + +Deprecated List (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Deprecated API

+
+
+Contents
    +
+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/help-doc.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/help-doc.html new file mode 100644 index 00000000..5170a86b --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/help-doc.html @@ -0,0 +1,224 @@ + + + + + + + +API Help (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+How This API Document Is Organized

+
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.

+Overview

+
+ +

+The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

+

+Package

+
+ +

+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:

    +
  • Interfaces (italic)
  • Classes
  • Enums
  • Exceptions
  • Errors
  • Annotation Types
+
+

+Class/Interface

+
+ +

+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
  • Class inheritance diagram
  • Direct Subclasses
  • All Known Subinterfaces
  • All Known Implementing Classes
  • Class/interface declaration
  • Class/interface description +

    +

  • Nested Class Summary
  • Field Summary
  • Constructor Summary
  • Method Summary +

    +

  • Field Detail
  • Constructor Detail
  • Method Detail
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+ +

+Annotation Type

+
+ +

+Each annotation type has its own separate page with the following sections:

    +
  • Annotation Type declaration
  • Annotation Type description
  • Required Element Summary
  • Optional Element Summary
  • Element Detail
+
+ +

+Enum

+
+ +

+Each enum has its own separate page with the following sections:

    +
  • Enum declaration
  • Enum description
  • Enum Constant Summary
  • Enum Constant Detail
+
+

+Use

+
+Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.
+

+Tree (Class Hierarchy)

+
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.
    +
  • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
  • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
+
+

+Deprecated API

+
+The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+

+Index

+
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+

+Prev/Next

+These links take you to the next or previous class, interface, package, or related page.

+Frames/No Frames

+These links show and hide the HTML frames. All pages are available with or without frames. +

+

+Serialized Form

+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description. +

+

+Constant Field Values

+The Constant Field Values page lists the static final fields and their values. +

+ + +This help file applies to API documentation generated using the standard doclet. + +
+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/index-all.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/index-all.html new file mode 100644 index 00000000..c59e86d1 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/index-all.html @@ -0,0 +1,447 @@ + + + + + + + +Index (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A C D E G I M O R S
+

+A

+
+
afterPropertiesSet() - +Method in class org.jasypt.spring31.xml.encryption.DigesterFactoryBean +
  +
afterPropertiesSet() - +Method in class org.jasypt.spring31.xml.encryption.EncryptablePropertiesFactoryBean +
  +
afterPropertiesSet() - +Method in class org.jasypt.spring31.xml.encryption.EncryptorFactoryBean +
  +
+
+

+C

+
+
convertProperties(Properties) - +Method in class org.jasypt.spring31.properties.EncryptablePropertySourcesPlaceholderConfigurer +
  +
convertPropertyValue(String) - +Method in class org.jasypt.spring31.properties.EncryptablePreferencesPlaceholderConfigurer +
  +
convertPropertyValue(String) - +Method in class org.jasypt.spring31.properties.EncryptablePropertyOverrideConfigurer +
  +
convertPropertyValue(String) - +Method in class org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer +
  +
convertPropertyValue(String) - +Method in class org.jasypt.spring31.properties.EncryptablePropertySourcesPlaceholderConfigurer +
  +
convertPropertyValue(String) - +Method in class org.jasypt.spring31.properties.EncryptableServletContextPropertyPlaceholderConfigurer +
  +
+
+

+D

+
+
DigesterFactoryBean - Class in org.jasypt.spring31.xml.encryption
+ Factory bean for creating digester objects from the encryption namespace + elements.
DigesterFactoryBean(int) - +Constructor for class org.jasypt.spring31.xml.encryption.DigesterFactoryBean +
  +
+
+

+E

+
+
EncryptablePreferencesPlaceholderConfigurer - Class in org.jasypt.spring31.properties
+ Subclass of + org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt preferences values + if they are encrypted in the loaded resource locations.
EncryptablePreferencesPlaceholderConfigurer(StringEncryptor) - +Constructor for class org.jasypt.spring31.properties.EncryptablePreferencesPlaceholderConfigurer +
+ Creates an EncryptablePreferencesPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +
EncryptablePreferencesPlaceholderConfigurer(TextEncryptor) - +Constructor for class org.jasypt.spring31.properties.EncryptablePreferencesPlaceholderConfigurer +
+ Creates an EncryptablePreferencesPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +
EncryptablePropertiesFactoryBean - Class in org.jasypt.spring31.xml.encryption
+ Factory bean for creating encrptable properties objects from the encryption namespace + elements.
EncryptablePropertiesFactoryBean() - +Constructor for class org.jasypt.spring31.xml.encryption.EncryptablePropertiesFactoryBean +
  +
EncryptablePropertiesPropertySource - Class in org.jasypt.spring31.properties
 
EncryptablePropertiesPropertySource(String, EncryptableProperties) - +Constructor for class org.jasypt.spring31.properties.EncryptablePropertiesPropertySource +
  +
EncryptablePropertiesPropertySource(String, Properties, TextEncryptor) - +Constructor for class org.jasypt.spring31.properties.EncryptablePropertiesPropertySource +
  +
EncryptablePropertiesPropertySource(String, Properties, StringEncryptor) - +Constructor for class org.jasypt.spring31.properties.EncryptablePropertiesPropertySource +
  +
EncryptablePropertyOverrideConfigurer - Class in org.jasypt.spring31.properties
+ Subclass of + org.springframework.beans.factory.config.PropertyOverrideConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the loaded resource locations.
EncryptablePropertyOverrideConfigurer(StringEncryptor) - +Constructor for class org.jasypt.spring31.properties.EncryptablePropertyOverrideConfigurer +
+ Creates an EncryptablePropertyOverrideConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +
EncryptablePropertyOverrideConfigurer(TextEncryptor) - +Constructor for class org.jasypt.spring31.properties.EncryptablePropertyOverrideConfigurer +
+ Creates an EncryptablePropertyOverrideConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +
EncryptablePropertyPlaceholderConfigurer - Class in org.jasypt.spring31.properties
+ Subclass of + org.springframework.beans.factory.config.PropertyPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the loaded resource locations.
EncryptablePropertyPlaceholderConfigurer(StringEncryptor) - +Constructor for class org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer +
+ Creates an EncryptablePropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +
EncryptablePropertyPlaceholderConfigurer(TextEncryptor) - +Constructor for class org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer +
+ Creates an EncryptablePropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +
EncryptablePropertySourcesPlaceholderConfigurer - Class in org.jasypt.spring31.properties
EncryptablePropertySourcesPlaceholderConfigurer(StringEncryptor) - +Constructor for class org.jasypt.spring31.properties.EncryptablePropertySourcesPlaceholderConfigurer +
+ Creates an EncryptablePropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +
EncryptablePropertySourcesPlaceholderConfigurer(TextEncryptor) - +Constructor for class org.jasypt.spring31.properties.EncryptablePropertySourcesPlaceholderConfigurer +
+ Creates an EncryptablePropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +
EncryptableServletContextPropertyPlaceholderConfigurer - Class in org.jasypt.spring31.properties
+ Subclass of + org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt servlet context parameter values + if they are encrypted in the loaded resource locations.
EncryptableServletContextPropertyPlaceholderConfigurer(StringEncryptor) - +Constructor for class org.jasypt.spring31.properties.EncryptableServletContextPropertyPlaceholderConfigurer +
+ Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +
EncryptableServletContextPropertyPlaceholderConfigurer(TextEncryptor) - +Constructor for class org.jasypt.spring31.properties.EncryptableServletContextPropertyPlaceholderConfigurer +
+ Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +
EncryptionNamespaceHandler - Class in org.jasypt.spring31.xml.encryption
+ Namespace handler for jasypt's encryption namespace.
EncryptionNamespaceHandler() - +Constructor for class org.jasypt.spring31.xml.encryption.EncryptionNamespaceHandler +
  +
EncryptorFactoryBean - Class in org.jasypt.spring31.xml.encryption
+ Factory bean for creating encryptor objects from the encryption namespace + elements.
EncryptorFactoryBean(int) - +Constructor for class org.jasypt.spring31.xml.encryption.EncryptorFactoryBean +
  +
+
+

+G

+
+
getObject() - +Method in class org.jasypt.spring31.xml.encryption.DigesterFactoryBean +
  +
getObject() - +Method in class org.jasypt.spring31.xml.encryption.EncryptablePropertiesFactoryBean +
  +
getObject() - +Method in class org.jasypt.spring31.xml.encryption.EncryptorFactoryBean +
  +
getObjectType() - +Method in class org.jasypt.spring31.xml.encryption.DigesterFactoryBean +
  +
getObjectType() - +Method in class org.jasypt.spring31.xml.encryption.EncryptablePropertiesFactoryBean +
  +
getObjectType() - +Method in class org.jasypt.spring31.xml.encryption.EncryptorFactoryBean +
  +
+
+

+I

+
+
init() - +Method in class org.jasypt.spring31.xml.encryption.EncryptionNamespaceHandler +
  +
isSingleton() - +Method in class org.jasypt.spring31.xml.encryption.DigesterFactoryBean +
  +
isSingleton() - +Method in class org.jasypt.spring31.xml.encryption.EncryptablePropertiesFactoryBean +
  +
isSingleton() - +Method in class org.jasypt.spring31.xml.encryption.EncryptorFactoryBean +
  +
+
+

+M

+
+
mergeProperties() - +Method in class org.jasypt.spring31.properties.EncryptablePropertySourcesPlaceholderConfigurer +
  +
+
+

+O

+
+
org.jasypt.spring31.properties - package org.jasypt.spring31.properties
 
org.jasypt.spring31.xml.encryption - package org.jasypt.spring31.xml.encryption
 
+
+

+R

+
+
resolvePlaceholder(String, Properties) - +Method in class org.jasypt.spring31.properties.EncryptablePreferencesPlaceholderConfigurer +
  +
resolvePlaceholder(String, String, Preferences) - +Method in class org.jasypt.spring31.properties.EncryptablePreferencesPlaceholderConfigurer +
  +
resolvePlaceholder(String, Properties) - +Method in class org.jasypt.spring31.properties.EncryptableServletContextPropertyPlaceholderConfigurer +
  +
resolveSystemProperty(String) - +Method in class org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer +
  +
+
+

+S

+
+
setAlgorithm(String) - +Method in class org.jasypt.spring31.xml.encryption.DigesterFactoryBean +
  +
setAlgorithm(String) - +Method in class org.jasypt.spring31.xml.encryption.EncryptorFactoryBean +
  +
setConfig(DigesterConfig) - +Method in class org.jasypt.spring31.xml.encryption.DigesterFactoryBean +
  +
setConfig(PBEConfig) - +Method in class org.jasypt.spring31.xml.encryption.EncryptorFactoryBean +
  +
setEncryptor(Object) - +Method in class org.jasypt.spring31.xml.encryption.EncryptablePropertiesFactoryBean +
  +
setInvertPositionOfPlainSaltInEncryptionResults(Boolean) - +Method in class org.jasypt.spring31.xml.encryption.DigesterFactoryBean +
  +
setInvertPositionOfSaltInMessageBeforeDigesting(Boolean) - +Method in class org.jasypt.spring31.xml.encryption.DigesterFactoryBean +
  +
setIterations(Integer) - +Method in class org.jasypt.spring31.xml.encryption.DigesterFactoryBean +
  +
setKeyObtentionIterations(Integer) - +Method in class org.jasypt.spring31.xml.encryption.EncryptorFactoryBean +
  +
setPassword(String) - +Method in class org.jasypt.spring31.xml.encryption.EncryptorFactoryBean +
  +
setPoolSize(Integer) - +Method in class org.jasypt.spring31.xml.encryption.DigesterFactoryBean +
  +
setPoolSize(Integer) - +Method in class org.jasypt.spring31.xml.encryption.EncryptorFactoryBean +
  +
setPrefix(String) - +Method in class org.jasypt.spring31.xml.encryption.DigesterFactoryBean +
  +
setProvider(Provider) - +Method in class org.jasypt.spring31.xml.encryption.DigesterFactoryBean +
  +
setProvider(Provider) - +Method in class org.jasypt.spring31.xml.encryption.EncryptorFactoryBean +
  +
setProviderName(String) - +Method in class org.jasypt.spring31.xml.encryption.DigesterFactoryBean +
  +
setProviderName(String) - +Method in class org.jasypt.spring31.xml.encryption.EncryptorFactoryBean +
  +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.spring31.xml.encryption.DigesterFactoryBean +
  +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.spring31.xml.encryption.EncryptorFactoryBean +
  +
setSaltSizeBytes(Integer) - +Method in class org.jasypt.spring31.xml.encryption.DigesterFactoryBean +
  +
setSingleton(boolean) - +Method in class org.jasypt.spring31.xml.encryption.DigesterFactoryBean +
  +
setSingleton(boolean) - +Method in class org.jasypt.spring31.xml.encryption.EncryptablePropertiesFactoryBean +
  +
setSingleton(boolean) - +Method in class org.jasypt.spring31.xml.encryption.EncryptorFactoryBean +
  +
setStringOutputType(String) - +Method in class org.jasypt.spring31.xml.encryption.DigesterFactoryBean +
  +
setStringOutputType(String) - +Method in class org.jasypt.spring31.xml.encryption.EncryptorFactoryBean +
  +
setSuffix(String) - +Method in class org.jasypt.spring31.xml.encryption.DigesterFactoryBean +
  +
setUnicodeNormalizationIgnored(Boolean) - +Method in class org.jasypt.spring31.xml.encryption.DigesterFactoryBean +
  +
setUseLenientSaltSizeCheck(Boolean) - +Method in class org.jasypt.spring31.xml.encryption.DigesterFactoryBean +
  +
+
+A C D E G I M O R S + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/index.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/index.html new file mode 100644 index 00000000..2e960786 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/index.html @@ -0,0 +1,40 @@ + + + + + + + +JASYPT: Java Simplified Encryption 1.9.2 API + + + + + + + + + + + +<H2> +Frame Alert</H2> + +<P> +This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. +<BR> +Link to<A HREF="overview-summary.html">Non-frame version.</A> + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptablePreferencesPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptablePreferencesPlaceholderConfigurer.html new file mode 100644 index 00000000..c513b999 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptablePreferencesPlaceholderConfigurer.html @@ -0,0 +1,463 @@ + + + + + + + +EncryptablePreferencesPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring31.properties +
+Class EncryptablePreferencesPlaceholderConfigurer

+
+Object
+  extended by org.springframework.core.io.support.PropertiesLoaderSupport
+      extended by org.springframework.beans.factory.config.PropertyResourceConfigurer
+          extended by org.springframework.beans.factory.config.PlaceholderConfigurerSupport
+              extended by org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+                  extended by org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer
+                      extended by org.jasypt.spring31.properties.EncryptablePreferencesPlaceholderConfigurer
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.beans.factory.InitializingBean, org.springframework.core.Ordered, org.springframework.core.PriorityOrdered
+
+
+
+
public final class EncryptablePreferencesPlaceholderConfigurer
extends org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer
+ + +

+

+ Subclass of + org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt preferences values + if they are encrypted in the loaded resource locations. +

+

+ A value is considered "encrypted" when it appears surrounded by + ENC(...), like: +

+

+

ENC(!"DGAS24FaIO$)
+

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
SYSTEM_PROPERTIES_MODE_FALLBACK, SYSTEM_PROPERTIES_MODE_NEVER, SYSTEM_PROPERTIES_MODE_OVERRIDE
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PlaceholderConfigurerSupport
DEFAULT_PLACEHOLDER_PREFIX, DEFAULT_PLACEHOLDER_SUFFIX, DEFAULT_VALUE_SEPARATOR, ignoreUnresolvablePlaceholders, nullValue, placeholderPrefix, placeholderSuffix, valueSeparator
+ + + + + + + +
Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
localOverride, localProperties, logger, XML_FILE_EXTENSION
+ + + + + + + +
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
+  + + + + + + + + + + + + + +
+Constructor Summary
EncryptablePreferencesPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor) + +
+           + Creates an EncryptablePreferencesPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values.
EncryptablePreferencesPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+           + Creates an EncryptablePreferencesPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values.
+  + + + + + + + + + + + + + + + + + + + +
+Method Summary
+protected  StringconvertPropertyValue(String originalValue) + +
+           
+protected  StringresolvePlaceholder(String placeholder, + Properties props) + +
+           
+protected  StringresolvePlaceholder(String path, + String key, + Preferences preferences) + +
+           
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer
afterPropertiesSet, setSystemTreePath, setUserTreePath
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
parseStringValue, processProperties, resolvePlaceholder, resolveSystemProperty, setSearchSystemEnvironment, setSystemPropertiesMode, setSystemPropertiesModeName
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PlaceholderConfigurerSupport
doProcessProperties, setBeanFactory, setBeanName, setIgnoreUnresolvablePlaceholders, setNullValue, setPlaceholderPrefix, setPlaceholderSuffix, setValueSeparator
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyResourceConfigurer
convertProperties, convertProperty, getOrder, postProcessBeanFactory, setOrder
+ + + + + + + +
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptablePreferencesPlaceholderConfigurer

+
+public EncryptablePreferencesPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor)
+
+

+ Creates an EncryptablePreferencesPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +

+

+

+
Parameters:
stringEncryptor - the StringEncryptor to be used do decrypt values. It + can not be null.
+
+
+ +

+EncryptablePreferencesPlaceholderConfigurer

+
+public EncryptablePreferencesPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+

+ Creates an EncryptablePreferencesPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +

+

+

+
Parameters:
textEncryptor - the TextEncryptor to be used do decrypt values. It can + not be null.
+
+ + + + + + + + +
+Method Detail
+ +

+convertPropertyValue

+
+protected String convertPropertyValue(String originalValue)
+
+
+
Overrides:
convertPropertyValue in class org.springframework.beans.factory.config.PropertyResourceConfigurer
+
+
+
+
+
+
+ +

+resolvePlaceholder

+
+protected String resolvePlaceholder(String placeholder,
+                                    Properties props)
+
+
+
Overrides:
resolvePlaceholder in class org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer
+
+
+
+
+
+
+ +

+resolvePlaceholder

+
+protected String resolvePlaceholder(String path,
+                                    String key,
+                                    Preferences preferences)
+
+
+
Overrides:
resolvePlaceholder in class org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptablePropertiesPropertySource.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptablePropertiesPropertySource.html new file mode 100644 index 00000000..9fed1c18 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptablePropertiesPropertySource.html @@ -0,0 +1,346 @@ + + + + + + + +EncryptablePropertiesPropertySource (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring31.properties +
+Class EncryptablePropertiesPropertySource

+
+Object
+  extended by org.springframework.core.env.PropertySource<T>
+      extended by org.springframework.core.env.EnumerablePropertySource<Map<String,Object>>
+          extended by org.springframework.core.env.MapPropertySource
+              extended by org.springframework.core.env.PropertiesPropertySource
+                  extended by org.jasypt.spring31.properties.EncryptablePropertiesPropertySource
+
+
+
+
public final class EncryptablePropertiesPropertySource
extends org.springframework.core.env.PropertiesPropertySource
+ + +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Nested Class Summary
+ + + + + + + +
Nested classes/interfaces inherited from class org.springframework.core.env.PropertySource
org.springframework.core.env.PropertySource.StubPropertySource
+  + + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.core.env.EnumerablePropertySource
EMPTY_NAMES_ARRAY, logger
+ + + + + + + +
Fields inherited from class org.springframework.core.env.PropertySource
name, source
+  + + + + + + + + + + + + + + + + +
+Constructor Summary
EncryptablePropertiesPropertySource(String name, + org.jasypt.properties.EncryptableProperties props) + +
+           
EncryptablePropertiesPropertySource(String name, + Properties props, + org.jasypt.encryption.StringEncryptor encryptor) + +
+           
EncryptablePropertiesPropertySource(String name, + Properties props, + org.jasypt.util.text.TextEncryptor encryptor) + +
+           
+  + + + + + + + +
+Method Summary
+ + + + + + + +
Methods inherited from class org.springframework.core.env.MapPropertySource
getProperty, getPropertyNames
+ + + + + + + +
Methods inherited from class org.springframework.core.env.EnumerablePropertySource
containsProperty
+ + + + + + + +
Methods inherited from class org.springframework.core.env.PropertySource
equals, getName, getSource, hashCode, named, toString
+ + + + + + + +
Methods inherited from class Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptablePropertiesPropertySource

+
+public EncryptablePropertiesPropertySource(String name,
+                                           org.jasypt.properties.EncryptableProperties props)
+
+
+
+ +

+EncryptablePropertiesPropertySource

+
+public EncryptablePropertiesPropertySource(String name,
+                                           Properties props,
+                                           org.jasypt.util.text.TextEncryptor encryptor)
+
+
+
+ +

+EncryptablePropertiesPropertySource

+
+public EncryptablePropertiesPropertySource(String name,
+                                           Properties props,
+                                           org.jasypt.encryption.StringEncryptor encryptor)
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptablePropertyOverrideConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptablePropertyOverrideConfigurer.html new file mode 100644 index 00000000..af70eed9 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptablePropertyOverrideConfigurer.html @@ -0,0 +1,387 @@ + + + + + + + +EncryptablePropertyOverrideConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring31.properties +
+Class EncryptablePropertyOverrideConfigurer

+
+Object
+  extended by org.springframework.core.io.support.PropertiesLoaderSupport
+      extended by org.springframework.beans.factory.config.PropertyResourceConfigurer
+          extended by org.springframework.beans.factory.config.PropertyOverrideConfigurer
+              extended by org.jasypt.spring31.properties.EncryptablePropertyOverrideConfigurer
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.core.Ordered, org.springframework.core.PriorityOrdered
+
+
+
+
public final class EncryptablePropertyOverrideConfigurer
extends org.springframework.beans.factory.config.PropertyOverrideConfigurer
+ + +

+

+ Subclass of + org.springframework.beans.factory.config.PropertyOverrideConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the loaded resource locations. +

+

+ A value is considered "encrypted" when it appears surrounded by + ENC(...), like: +

+

+

my.value=ENC(!"DGAS24FaIO$)
+

+

+ Encrypted and unencrypted objects can be combined in the same resources file. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Marcos Muíño García
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PropertyOverrideConfigurer
DEFAULT_BEAN_NAME_SEPARATOR
+ + + + + + + +
Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
localOverride, localProperties, logger, XML_FILE_EXTENSION
+ + + + + + + +
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
+  + + + + + + + + + + + + + +
+Constructor Summary
EncryptablePropertyOverrideConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor) + +
+           + Creates an EncryptablePropertyOverrideConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values.
EncryptablePropertyOverrideConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+           + Creates an EncryptablePropertyOverrideConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values.
+  + + + + + + + + + + + +
+Method Summary
+protected  StringconvertPropertyValue(String originalValue) + +
+           
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyOverrideConfigurer
applyPropertyValue, hasPropertyOverridesFor, processKey, processProperties, setBeanNameSeparator, setIgnoreInvalidKeys
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyResourceConfigurer
convertProperties, convertProperty, getOrder, postProcessBeanFactory, setOrder
+ + + + + + + +
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptablePropertyOverrideConfigurer

+
+public EncryptablePropertyOverrideConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor)
+
+

+ Creates an EncryptablePropertyOverrideConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +

+

+

+
Parameters:
stringEncryptor - the StringEncryptor to be used do decrypt values. It + can not be null.
+
+
+ +

+EncryptablePropertyOverrideConfigurer

+
+public EncryptablePropertyOverrideConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+

+ Creates an EncryptablePropertyOverrideConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +

+

+

+
Parameters:
textEncryptor - the TextEncryptor to be used do decrypt values. It can + not be null.
+
+ + + + + + + + +
+Method Detail
+ +

+convertPropertyValue

+
+protected String convertPropertyValue(String originalValue)
+
+
+
Overrides:
convertPropertyValue in class org.springframework.beans.factory.config.PropertyResourceConfigurer
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptablePropertyPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptablePropertyPlaceholderConfigurer.html new file mode 100644 index 00000000..fd7046f4 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptablePropertyPlaceholderConfigurer.html @@ -0,0 +1,428 @@ + + + + + + + +EncryptablePropertyPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring31.properties +
+Class EncryptablePropertyPlaceholderConfigurer

+
+Object
+  extended by org.springframework.core.io.support.PropertiesLoaderSupport
+      extended by org.springframework.beans.factory.config.PropertyResourceConfigurer
+          extended by org.springframework.beans.factory.config.PlaceholderConfigurerSupport
+              extended by org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+                  extended by org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.core.Ordered, org.springframework.core.PriorityOrdered
+
+
+
+
public final class EncryptablePropertyPlaceholderConfigurer
extends org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+ + +

+

+ Subclass of + org.springframework.beans.factory.config.PropertyPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the loaded resource locations. +

+

+ A value is considered "encrypted" when it appears surrounded by + ENC(...), like: +

+

+

my.value=ENC(!"DGAS24FaIO$)
+

+

+ Encrypted and unencrypted objects can be combined in the same resources file. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Marcos Muíño García, Carlos Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
SYSTEM_PROPERTIES_MODE_FALLBACK, SYSTEM_PROPERTIES_MODE_NEVER, SYSTEM_PROPERTIES_MODE_OVERRIDE
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PlaceholderConfigurerSupport
DEFAULT_PLACEHOLDER_PREFIX, DEFAULT_PLACEHOLDER_SUFFIX, DEFAULT_VALUE_SEPARATOR, ignoreUnresolvablePlaceholders, nullValue, placeholderPrefix, placeholderSuffix, valueSeparator
+ + + + + + + +
Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
localOverride, localProperties, logger, XML_FILE_EXTENSION
+ + + + + + + +
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
+  + + + + + + + + + + + + + +
+Constructor Summary
EncryptablePropertyPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor) + +
+           + Creates an EncryptablePropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values.
EncryptablePropertyPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+           + Creates an EncryptablePropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values.
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  StringconvertPropertyValue(String originalValue) + +
+           
+protected  StringresolveSystemProperty(String key) + +
+           
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
parseStringValue, processProperties, resolvePlaceholder, resolvePlaceholder, setSearchSystemEnvironment, setSystemPropertiesMode, setSystemPropertiesModeName
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PlaceholderConfigurerSupport
doProcessProperties, setBeanFactory, setBeanName, setIgnoreUnresolvablePlaceholders, setNullValue, setPlaceholderPrefix, setPlaceholderSuffix, setValueSeparator
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyResourceConfigurer
convertProperties, convertProperty, getOrder, postProcessBeanFactory, setOrder
+ + + + + + + +
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptablePropertyPlaceholderConfigurer

+
+public EncryptablePropertyPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor)
+
+

+ Creates an EncryptablePropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +

+

+

+
Parameters:
stringEncryptor - the StringEncryptor to be used do decrypt values. It + can not be null.
+
+
+ +

+EncryptablePropertyPlaceholderConfigurer

+
+public EncryptablePropertyPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+

+ Creates an EncryptablePropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +

+

+

+
Parameters:
textEncryptor - the TextEncryptor to be used do decrypt values. It can + not be null.
+
+ + + + + + + + +
+Method Detail
+ +

+convertPropertyValue

+
+protected String convertPropertyValue(String originalValue)
+
+
+
Overrides:
convertPropertyValue in class org.springframework.beans.factory.config.PropertyResourceConfigurer
+
+
+
+
+
+
+ +

+resolveSystemProperty

+
+protected String resolveSystemProperty(String key)
+
+
+
Overrides:
resolveSystemProperty in class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptablePropertySourcesPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptablePropertySourcesPlaceholderConfigurer.html new file mode 100644 index 00000000..e3ad3a10 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptablePropertySourcesPlaceholderConfigurer.html @@ -0,0 +1,438 @@ + + + + + + + +EncryptablePropertySourcesPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring31.properties +
+Class EncryptablePropertySourcesPlaceholderConfigurer

+
+Object
+  extended by org.springframework.core.io.support.PropertiesLoaderSupport
+      extended by org.springframework.beans.factory.config.PropertyResourceConfigurer
+          extended by org.springframework.beans.factory.config.PlaceholderConfigurerSupport
+              extended by org.springframework.context.support.PropertySourcesPlaceholderConfigurer
+                  extended by org.jasypt.spring31.properties.EncryptablePropertySourcesPlaceholderConfigurer
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.context.EnvironmentAware, org.springframework.core.Ordered, org.springframework.core.PriorityOrdered
+
+
+
+
public final class EncryptablePropertySourcesPlaceholderConfigurer
extends org.springframework.context.support.PropertySourcesPlaceholderConfigurer
+ + +

+

+

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.context.support.PropertySourcesPlaceholderConfigurer
ENVIRONMENT_PROPERTIES_PROPERTY_SOURCE_NAME, LOCAL_PROPERTIES_PROPERTY_SOURCE_NAME
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PlaceholderConfigurerSupport
DEFAULT_PLACEHOLDER_PREFIX, DEFAULT_PLACEHOLDER_SUFFIX, DEFAULT_VALUE_SEPARATOR, ignoreUnresolvablePlaceholders, nullValue, placeholderPrefix, placeholderSuffix, valueSeparator
+ + + + + + + +
Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
localOverride, localProperties, logger, XML_FILE_EXTENSION
+ + + + + + + +
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
+  + + + + + + + + + + + + + +
+Constructor Summary
EncryptablePropertySourcesPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor) + +
+           + Creates an EncryptablePropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values.
EncryptablePropertySourcesPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+           + Creates an EncryptablePropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values.
+  + + + + + + + + + + + + + + + + + + + +
+Method Summary
+protected  voidconvertProperties(Properties props) + +
+           
+protected  StringconvertPropertyValue(String originalValue) + +
+           
+protected  PropertiesmergeProperties() + +
+           
+ + + + + + + +
Methods inherited from class org.springframework.context.support.PropertySourcesPlaceholderConfigurer
postProcessBeanFactory, processProperties, processProperties, setEnvironment, setPropertySources
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PlaceholderConfigurerSupport
doProcessProperties, setBeanFactory, setBeanName, setIgnoreUnresolvablePlaceholders, setNullValue, setPlaceholderPrefix, setPlaceholderSuffix, setValueSeparator
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyResourceConfigurer
convertProperty, getOrder, setOrder
+ + + + + + + +
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptablePropertySourcesPlaceholderConfigurer

+
+public EncryptablePropertySourcesPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor)
+
+

+ Creates an EncryptablePropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +

+

+

+
Parameters:
stringEncryptor - the StringEncryptor to be used do decrypt values. It + can not be null.
+
+
+ +

+EncryptablePropertySourcesPlaceholderConfigurer

+
+public EncryptablePropertySourcesPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+

+ Creates an EncryptablePropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +

+

+

+
Parameters:
textEncryptor - the TextEncryptor to be used do decrypt values. It can + not be null.
+
+ + + + + + + + +
+Method Detail
+ +

+mergeProperties

+
+protected Properties mergeProperties()
+                              throws IOException
+
+
+
Overrides:
mergeProperties in class org.springframework.core.io.support.PropertiesLoaderSupport
+
+
+ +
Throws: +
IOException
+
+
+
+ +

+convertProperties

+
+protected void convertProperties(Properties props)
+
+
+
Overrides:
convertProperties in class org.springframework.beans.factory.config.PropertyResourceConfigurer
+
+
+
+
+
+
+ +

+convertPropertyValue

+
+protected String convertPropertyValue(String originalValue)
+
+
+
Overrides:
convertPropertyValue in class org.springframework.beans.factory.config.PropertyResourceConfigurer
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptableServletContextPropertyPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptableServletContextPropertyPlaceholderConfigurer.html new file mode 100644 index 00000000..fa984235 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/EncryptableServletContextPropertyPlaceholderConfigurer.html @@ -0,0 +1,437 @@ + + + + + + + +EncryptableServletContextPropertyPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring31.properties +
+Class EncryptableServletContextPropertyPlaceholderConfigurer

+
+Object
+  extended by org.springframework.core.io.support.PropertiesLoaderSupport
+      extended by org.springframework.beans.factory.config.PropertyResourceConfigurer
+          extended by org.springframework.beans.factory.config.PlaceholderConfigurerSupport
+              extended by org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
+                  extended by org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer
+                      extended by org.jasypt.spring31.properties.EncryptableServletContextPropertyPlaceholderConfigurer
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.core.Ordered, org.springframework.core.PriorityOrdered, org.springframework.web.context.ServletContextAware
+
+
+
+
public final class EncryptableServletContextPropertyPlaceholderConfigurer
extends org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer
+ + +

+

+ Subclass of + org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt servlet context parameter values + if they are encrypted in the loaded resource locations. +

+

+ A value is considered "encrypted" when it appears surrounded by + ENC(...), like: +

+

+

<param-value>ENC(!"DGAS24FaIO$)</param-value>
+

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
SYSTEM_PROPERTIES_MODE_FALLBACK, SYSTEM_PROPERTIES_MODE_NEVER, SYSTEM_PROPERTIES_MODE_OVERRIDE
+ + + + + + + +
Fields inherited from class org.springframework.beans.factory.config.PlaceholderConfigurerSupport
DEFAULT_PLACEHOLDER_PREFIX, DEFAULT_PLACEHOLDER_SUFFIX, DEFAULT_VALUE_SEPARATOR, ignoreUnresolvablePlaceholders, nullValue, placeholderPrefix, placeholderSuffix, valueSeparator
+ + + + + + + +
Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
localOverride, localProperties, logger, XML_FILE_EXTENSION
+ + + + + + + +
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
+  + + + + + + + + + + + + + +
+Constructor Summary
EncryptableServletContextPropertyPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor) + +
+           + Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values.
EncryptableServletContextPropertyPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+           + Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values.
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  StringconvertPropertyValue(String originalValue) + +
+           
+protected  StringresolvePlaceholder(String placeholder, + Properties props) + +
+           
+ + + + + + + +
Methods inherited from class org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer
resolvePlaceholder, setContextOverride, setSearchContextAttributes, setServletContext
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
parseStringValue, processProperties, resolvePlaceholder, resolveSystemProperty, setSearchSystemEnvironment, setSystemPropertiesMode, setSystemPropertiesModeName
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PlaceholderConfigurerSupport
doProcessProperties, setBeanFactory, setBeanName, setIgnoreUnresolvablePlaceholders, setNullValue, setPlaceholderPrefix, setPlaceholderSuffix, setValueSeparator
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.config.PropertyResourceConfigurer
convertProperties, convertProperty, getOrder, postProcessBeanFactory, setOrder
+ + + + + + + +
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptableServletContextPropertyPlaceholderConfigurer

+
+public EncryptableServletContextPropertyPlaceholderConfigurer(org.jasypt.encryption.StringEncryptor stringEncryptor)
+
+

+ Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance + which will use the passed StringEncryptor object to decrypt + encrypted values. +

+

+

+
Parameters:
stringEncryptor - the StringEncryptor to be used do decrypt values. It + can not be null.
+
+
+ +

+EncryptableServletContextPropertyPlaceholderConfigurer

+
+public EncryptableServletContextPropertyPlaceholderConfigurer(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+

+ Creates an EncryptableServletContextPropertyPlaceholderConfigurer instance which will use the + passed TextEncryptor object to decrypt encrypted values. +

+

+

+
Parameters:
textEncryptor - the TextEncryptor to be used do decrypt values. It can + not be null.
+
+ + + + + + + + +
+Method Detail
+ +

+convertPropertyValue

+
+protected String convertPropertyValue(String originalValue)
+
+
+
Overrides:
convertPropertyValue in class org.springframework.beans.factory.config.PropertyResourceConfigurer
+
+
+
+
+
+
+ +

+resolvePlaceholder

+
+protected String resolvePlaceholder(String placeholder,
+                                    Properties props)
+
+
+
Overrides:
resolvePlaceholder in class org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptablePreferencesPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptablePreferencesPlaceholderConfigurer.html new file mode 100644 index 00000000..4b9769d7 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptablePreferencesPlaceholderConfigurer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring31.properties.EncryptablePreferencesPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring31.properties.EncryptablePreferencesPlaceholderConfigurer

+
+No usage of org.jasypt.spring31.properties.EncryptablePreferencesPlaceholderConfigurer +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptablePropertiesPropertySource.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptablePropertiesPropertySource.html new file mode 100644 index 00000000..6a6d7aa4 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptablePropertiesPropertySource.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring31.properties.EncryptablePropertiesPropertySource (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring31.properties.EncryptablePropertiesPropertySource

+
+No usage of org.jasypt.spring31.properties.EncryptablePropertiesPropertySource +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptablePropertyOverrideConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptablePropertyOverrideConfigurer.html new file mode 100644 index 00000000..d24efdb4 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptablePropertyOverrideConfigurer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring31.properties.EncryptablePropertyOverrideConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring31.properties.EncryptablePropertyOverrideConfigurer

+
+No usage of org.jasypt.spring31.properties.EncryptablePropertyOverrideConfigurer +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptablePropertyPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptablePropertyPlaceholderConfigurer.html new file mode 100644 index 00000000..cbbab33f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptablePropertyPlaceholderConfigurer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer

+
+No usage of org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptablePropertySourcesPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptablePropertySourcesPlaceholderConfigurer.html new file mode 100644 index 00000000..4cf98652 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptablePropertySourcesPlaceholderConfigurer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring31.properties.EncryptablePropertySourcesPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring31.properties.EncryptablePropertySourcesPlaceholderConfigurer

+
+No usage of org.jasypt.spring31.properties.EncryptablePropertySourcesPlaceholderConfigurer +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptableServletContextPropertyPlaceholderConfigurer.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptableServletContextPropertyPlaceholderConfigurer.html new file mode 100644 index 00000000..4ba404ae --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/class-use/EncryptableServletContextPropertyPlaceholderConfigurer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring31.properties.EncryptableServletContextPropertyPlaceholderConfigurer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring31.properties.EncryptableServletContextPropertyPlaceholderConfigurer

+
+No usage of org.jasypt.spring31.properties.EncryptableServletContextPropertyPlaceholderConfigurer +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/package-frame.html new file mode 100644 index 00000000..d9d18e30 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/package-frame.html @@ -0,0 +1,43 @@ + + + + + + + +org.jasypt.spring31.properties (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.spring31.properties + + + + +
+Classes  + +
+EncryptablePreferencesPlaceholderConfigurer +
+EncryptablePropertiesPropertySource +
+EncryptablePropertyOverrideConfigurer +
+EncryptablePropertyPlaceholderConfigurer +
+EncryptablePropertySourcesPlaceholderConfigurer +
+EncryptableServletContextPropertyPlaceholderConfigurer
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/package-summary.html new file mode 100644 index 00000000..879676a7 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/package-summary.html @@ -0,0 +1,198 @@ + + + + + + + +org.jasypt.spring31.properties (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.spring31.properties +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Class Summary
EncryptablePreferencesPlaceholderConfigurer + Subclass of + org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt preferences values + if they are encrypted in the loaded resource locations.
EncryptablePropertiesPropertySource 
EncryptablePropertyOverrideConfigurer + Subclass of + org.springframework.beans.factory.config.PropertyOverrideConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the loaded resource locations.
EncryptablePropertyPlaceholderConfigurer + Subclass of + org.springframework.beans.factory.config.PropertyPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the loaded resource locations.
EncryptablePropertySourcesPlaceholderConfigurer
EncryptableServletContextPropertyPlaceholderConfigurer + Subclass of + org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer + which can make use of a StringEncryptor or + TextEncryptor object to decrypt servlet context parameter values + if they are encrypted in the loaded resource locations.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/package-tree.html new file mode 100644 index 00000000..18ffa4d3 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/package-tree.html @@ -0,0 +1,183 @@ + + + + + + + +org.jasypt.spring31.properties Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.spring31.properties +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.springframework.core.io.support.PropertiesLoaderSupport
        +
      • org.springframework.beans.factory.config.PropertyResourceConfigurer (implements org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.core.PriorityOrdered) +
          +
        • org.springframework.beans.factory.config.PlaceholderConfigurerSupport (implements org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware) + +
        • org.springframework.beans.factory.config.PropertyOverrideConfigurer +
        +
      +
    • org.springframework.core.env.PropertySource<T>
        +
      • org.springframework.core.env.EnumerablePropertySource<T>
          +
        • org.springframework.core.env.MapPropertySource +
        +
      +
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/package-use.html new file mode 100644 index 00000000..455d4dfb --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/properties/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.spring31.properties (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.spring31.properties

+
+No usage of org.jasypt.spring31.properties +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/DigesterFactoryBean.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/DigesterFactoryBean.html new file mode 100644 index 00000000..9f68a207 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/DigesterFactoryBean.html @@ -0,0 +1,696 @@ + + + + + + + +DigesterFactoryBean (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring31.xml.encryption +
+Class DigesterFactoryBean

+
+Object
+  extended by org.jasypt.spring31.xml.encryption.DigesterFactoryBean
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.FactoryBean<Object>, org.springframework.beans.factory.InitializingBean
+
+
+
+
public final class DigesterFactoryBean
extends Object
implements org.springframework.beans.factory.FactoryBean<Object>, org.springframework.beans.factory.InitializingBean
+ + +

+

+ Factory bean for creating digester objects from the encryption namespace + elements. Do not use directly. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
DigesterFactoryBean(int encryptorType) + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidafterPropertiesSet() + +
+           
+ ObjectgetObject() + +
+           
+ Class<?>getObjectType() + +
+           
+ booleanisSingleton() + +
+           
+ voidsetAlgorithm(String algorithm) + +
+           
+ voidsetConfig(org.jasypt.digest.config.DigesterConfig config) + +
+           
+ voidsetInvertPositionOfPlainSaltInEncryptionResults(Boolean invertPositionOfPlainSaltInEncryptionResults) + +
+           
+ voidsetInvertPositionOfSaltInMessageBeforeDigesting(Boolean invertPositionOfSaltInMessageBeforeDigesting) + +
+           
+ voidsetIterations(Integer iterations) + +
+           
+ voidsetPoolSize(Integer poolSize) + +
+           
+ voidsetPrefix(String prefix) + +
+           
+ voidsetProvider(Provider provider) + +
+           
+ voidsetProviderName(String providerName) + +
+           
+ voidsetSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator) + +
+           
+ voidsetSaltSizeBytes(Integer saltSizeBytes) + +
+           
+ voidsetSingleton(boolean singleton) + +
+           
+ voidsetStringOutputType(String stringOutputType) + +
+           
+ voidsetSuffix(String suffix) + +
+           
+ voidsetUnicodeNormalizationIgnored(Boolean unicodeNormalizationIgnored) + +
+           
+ voidsetUseLenientSaltSizeCheck(Boolean useLenientSaltSizeCheck) + +
+           
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+DigesterFactoryBean

+
+public DigesterFactoryBean(int encryptorType)
+
+
+ + + + + + + + +
+Method Detail
+ +

+setSingleton

+
+public final void setSingleton(boolean singleton)
+
+
+
+
+
+
+
+
+
+ +

+isSingleton

+
+public final boolean isSingleton()
+
+
+
Specified by:
isSingleton in interface org.springframework.beans.factory.FactoryBean<Object>
+
+
+
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+
+
+
+
+
+
+
+
+ +

+setConfig

+
+public void setConfig(org.jasypt.digest.config.DigesterConfig config)
+
+
+
+
+
+
+
+
+
+ +

+setIterations

+
+public void setIterations(Integer iterations)
+
+
+
+
+
+
+
+
+
+ +

+setPoolSize

+
+public void setPoolSize(Integer poolSize)
+
+
+
+
+
+
+
+
+
+ +

+setProvider

+
+public void setProvider(Provider provider)
+
+
+
+
+
+
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+
+
+
+
+
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator)
+
+
+
+
+
+
+
+
+
+ +

+setInvertPositionOfPlainSaltInEncryptionResults

+
+public void setInvertPositionOfPlainSaltInEncryptionResults(Boolean invertPositionOfPlainSaltInEncryptionResults)
+
+
+
+
+
+
+
+
+
+ +

+setInvertPositionOfSaltInMessageBeforeDigesting

+
+public void setInvertPositionOfSaltInMessageBeforeDigesting(Boolean invertPositionOfSaltInMessageBeforeDigesting)
+
+
+
+
+
+
+
+
+
+ +

+setSaltSizeBytes

+
+public void setSaltSizeBytes(Integer saltSizeBytes)
+
+
+
+
+
+
+
+
+
+ +

+setUseLenientSaltSizeCheck

+
+public void setUseLenientSaltSizeCheck(Boolean useLenientSaltSizeCheck)
+
+
+
+
+
+
+
+
+
+ +

+setStringOutputType

+
+public void setStringOutputType(String stringOutputType)
+
+
+
+
+
+
+
+
+
+ +

+setUnicodeNormalizationIgnored

+
+public void setUnicodeNormalizationIgnored(Boolean unicodeNormalizationIgnored)
+
+
+
+
+
+
+
+
+
+ +

+setPrefix

+
+public void setPrefix(String prefix)
+
+
+
+
+
+
+
+
+
+ +

+setSuffix

+
+public void setSuffix(String suffix)
+
+
+
+
+
+
+
+
+
+ +

+afterPropertiesSet

+
+public final void afterPropertiesSet()
+                              throws Exception
+
+
+
Specified by:
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
+
+
+ +
Throws: +
Exception
+
+
+
+ +

+getObject

+
+public Object getObject()
+                 throws Exception
+
+
+
Specified by:
getObject in interface org.springframework.beans.factory.FactoryBean<Object>
+
+
+ +
Throws: +
Exception
+
+
+
+ +

+getObjectType

+
+public Class<?> getObjectType()
+
+
+
Specified by:
getObjectType in interface org.springframework.beans.factory.FactoryBean<Object>
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/EncryptablePropertiesFactoryBean.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/EncryptablePropertiesFactoryBean.html new file mode 100644 index 00000000..6bb41e9e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/EncryptablePropertiesFactoryBean.html @@ -0,0 +1,416 @@ + + + + + + + +EncryptablePropertiesFactoryBean (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring31.xml.encryption +
+Class EncryptablePropertiesFactoryBean

+
+Object
+  extended by org.springframework.core.io.support.PropertiesLoaderSupport
+      extended by org.jasypt.spring31.xml.encryption.EncryptablePropertiesFactoryBean
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.FactoryBean<Object>, org.springframework.beans.factory.InitializingBean
+
+
+
+
public final class EncryptablePropertiesFactoryBean
extends org.springframework.core.io.support.PropertiesLoaderSupport
implements org.springframework.beans.factory.FactoryBean<Object>, org.springframework.beans.factory.InitializingBean
+ + +

+

+ Factory bean for creating encrptable properties objects from the encryption namespace + elements. Do not use directly. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
localOverride, localProperties, logger, XML_FILE_EXTENSION
+  + + + + + + + + + + +
+Constructor Summary
EncryptablePropertiesFactoryBean() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidafterPropertiesSet() + +
+           
+ ObjectgetObject() + +
+           
+ Class<?>getObjectType() + +
+           
+ booleanisSingleton() + +
+           
+ voidsetEncryptor(Object encryptor) + +
+           
+ voidsetSingleton(boolean singleton) + +
+           
+ + + + + + + +
Methods inherited from class org.springframework.core.io.support.PropertiesLoaderSupport
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptablePropertiesFactoryBean

+
+public EncryptablePropertiesFactoryBean()
+
+
+ + + + + + + + +
+Method Detail
+ +

+setSingleton

+
+public final void setSingleton(boolean singleton)
+
+
+
+
+
+
+
+
+
+ +

+isSingleton

+
+public final boolean isSingleton()
+
+
+
Specified by:
isSingleton in interface org.springframework.beans.factory.FactoryBean<Object>
+
+
+
+
+
+
+ +

+setEncryptor

+
+public void setEncryptor(Object encryptor)
+
+
+
+
+
+
+
+
+
+ +

+afterPropertiesSet

+
+public final void afterPropertiesSet()
+                              throws IOException
+
+
+
Specified by:
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
+
+
+ +
Throws: +
IOException
+
+
+
+ +

+getObject

+
+public final Object getObject()
+                       throws IOException
+
+
+
Specified by:
getObject in interface org.springframework.beans.factory.FactoryBean<Object>
+
+
+ +
Throws: +
IOException
+
+
+
+ +

+getObjectType

+
+public Class<?> getObjectType()
+
+
+
Specified by:
getObjectType in interface org.springframework.beans.factory.FactoryBean<Object>
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/EncryptionNamespaceHandler.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/EncryptionNamespaceHandler.html new file mode 100644 index 00000000..e9aef411 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/EncryptionNamespaceHandler.html @@ -0,0 +1,336 @@ + + + + + + + +EncryptionNamespaceHandler (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring31.xml.encryption +
+Class EncryptionNamespaceHandler

+
+Object
+  extended by org.springframework.beans.factory.xml.NamespaceHandlerSupport
+      extended by org.jasypt.spring31.xml.encryption.EncryptionNamespaceHandler
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.xml.NamespaceHandler
+
+
+
+
public final class EncryptionNamespaceHandler
extends org.springframework.beans.factory.xml.NamespaceHandlerSupport
+ + +

+

+ Namespace handler for jasypt's encryption namespace. +

+

+ In order to use this namespace, add its XML schema declaration to your Spring + beans file like: +

+ + <beans xmlns="http://www.springframework.org/schema/beans"
+        ...
+        xmlns:encryption="http://www.jasypt.org/schema/encryption"
+        ...
+        xsi:schemaLocation="http://www.springframework.org/schema/beans
+                            http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
+                            ...
+                            http://www.jasypt.org/schema/encryption
+                            http://www.jasypt.org/schema/encryption/jasypt-spring31-encryption-1.xsd
+                            ..."> +
+

+ This namespace offers the following elements for creating instances of specific jasypt artifacts + and add them to the Spring application context: +

+
    +
  • Digesters +
      +
    • DigesterConfig (simple, string, environment): <encryption:digester-config/>
    • +
    • ByteDigester (pooled or standard, depending on selected pool size): <encryption:byte-digester/>
    • +
    • StringDigester (pooled or standard, depending on selected pool size): <encryption:string-digester/>
    • +
    • Util digester classes: +
        +
      • BasicPasswordEncryptor: <encryption:basic-password-encryptor/>
      • +
      • StrongPasswordEncryptor: <encryption:strong-password-encryptor/>
      • +
      • ConfigurablePasswordEncryptor: <encryption:configurable-password-encryptor/>
      • +
      +
    • +
    +
  • +
  • PBE Encryption +
      +
    • PBEConfig (simple, string, environment): <encryption:encryptor-config/>
    • +
    • ByteEncryptor (pooled or standard, depending on selected pool size): <encryption:byte-encryptor/>
    • +
    • StringEncryptor (pooled or standard, depending on selected pool size): <encryption:string-encryptor/>
    • +
    • BigIntegerEncryptor (pooled or standard, depending on selected pool size): <encryption:big-integer-encryptor/>
    • +
    • BigDecimalEncryptor (pooled or standard, depending on selected pool size): <encryption:big-decimal-encryptor/>
    • +
    • Util encryptor classes: +
        +
      • BasicTextEncryptor: <encryption:basic-text-encryptor/>
      • +
      • StrongTextEncryptor: <encryption:strong-text-encryptor/>
      • +
      +
    • +
    +
  • +
  • Properties management +
      +
    • EncryptableProperties (equivalent to <util:properties/> adding property decryption): <encryption:encryptable-properties/>
    • +
    • org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer (equivalent to <context:property-placeholder/> adding property decryption): <encryption:encryptable-property-placeholder/>
    • +
    • org.jasypt.spring3.properties.EncryptablePropertyOverrideConfigurer (equivalent to <context:property-override/> adding property decryption): <encryption:encryptable-property-override/>
    • +
    +
  • +
+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
EncryptionNamespaceHandler() + +
+           
+  + + + + + + + + + + + +
+Method Summary
+ voidinit() + +
+           
+ + + + + + + +
Methods inherited from class org.springframework.beans.factory.xml.NamespaceHandlerSupport
decorate, parse, registerBeanDefinitionDecorator, registerBeanDefinitionDecoratorForAttribute, registerBeanDefinitionParser
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptionNamespaceHandler

+
+public EncryptionNamespaceHandler()
+
+
+ + + + + + + + +
+Method Detail
+ +

+init

+
+public void init()
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/EncryptorFactoryBean.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/EncryptorFactoryBean.html new file mode 100644 index 00000000..851659ae --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/EncryptorFactoryBean.html @@ -0,0 +1,564 @@ + + + + + + + +EncryptorFactoryBean (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring31.xml.encryption +
+Class EncryptorFactoryBean

+
+Object
+  extended by org.jasypt.spring31.xml.encryption.EncryptorFactoryBean
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.FactoryBean<Object>, org.springframework.beans.factory.InitializingBean
+
+
+
+
public final class EncryptorFactoryBean
extends Object
implements org.springframework.beans.factory.FactoryBean<Object>, org.springframework.beans.factory.InitializingBean
+ + +

+

+ Factory bean for creating encryptor objects from the encryption namespace + elements. Do not use directly. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
EncryptorFactoryBean(int encryptorType) + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidafterPropertiesSet() + +
+           
+ ObjectgetObject() + +
+           
+ Class<?>getObjectType() + +
+           
+ booleanisSingleton() + +
+           
+ voidsetAlgorithm(String algorithm) + +
+           
+ voidsetConfig(org.jasypt.encryption.pbe.config.PBEConfig config) + +
+           
+ voidsetKeyObtentionIterations(Integer keyObtentionIterations) + +
+           
+ voidsetPassword(String password) + +
+           
+ voidsetPoolSize(Integer poolSize) + +
+           
+ voidsetProvider(Provider provider) + +
+           
+ voidsetProviderName(String providerName) + +
+           
+ voidsetSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator) + +
+           
+ voidsetSingleton(boolean singleton) + +
+           
+ voidsetStringOutputType(String stringOutputType) + +
+           
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptorFactoryBean

+
+public EncryptorFactoryBean(int encryptorType)
+
+
+ + + + + + + + +
+Method Detail
+ +

+setSingleton

+
+public final void setSingleton(boolean singleton)
+
+
+
+
+
+
+
+
+
+ +

+isSingleton

+
+public final boolean isSingleton()
+
+
+
Specified by:
isSingleton in interface org.springframework.beans.factory.FactoryBean<Object>
+
+
+
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+
+
+
+
+
+
+
+
+ +

+setConfig

+
+public void setConfig(org.jasypt.encryption.pbe.config.PBEConfig config)
+
+
+
+
+
+
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(Integer keyObtentionIterations)
+
+
+
+
+
+
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+
+
+
+
+
+
+
+
+ +

+setPoolSize

+
+public void setPoolSize(Integer poolSize)
+
+
+
+
+
+
+
+
+
+ +

+setProvider

+
+public void setProvider(Provider provider)
+
+
+
+
+
+
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+
+
+
+
+
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(org.jasypt.salt.SaltGenerator saltGenerator)
+
+
+
+
+
+
+
+
+
+ +

+setStringOutputType

+
+public void setStringOutputType(String stringOutputType)
+
+
+
+
+
+
+
+
+
+ +

+afterPropertiesSet

+
+public final void afterPropertiesSet()
+                              throws Exception
+
+
+
Specified by:
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
+
+
+ +
Throws: +
Exception
+
+
+
+ +

+getObject

+
+public Object getObject()
+                 throws Exception
+
+
+
Specified by:
getObject in interface org.springframework.beans.factory.FactoryBean<Object>
+
+
+ +
Throws: +
Exception
+
+
+
+ +

+getObjectType

+
+public Class<?> getObjectType()
+
+
+
Specified by:
getObjectType in interface org.springframework.beans.factory.FactoryBean<Object>
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/class-use/DigesterFactoryBean.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/class-use/DigesterFactoryBean.html new file mode 100644 index 00000000..ffb4532f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/class-use/DigesterFactoryBean.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring31.xml.encryption.DigesterFactoryBean (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring31.xml.encryption.DigesterFactoryBean

+
+No usage of org.jasypt.spring31.xml.encryption.DigesterFactoryBean +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/class-use/EncryptablePropertiesFactoryBean.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/class-use/EncryptablePropertiesFactoryBean.html new file mode 100644 index 00000000..1fe2c510 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/class-use/EncryptablePropertiesFactoryBean.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring31.xml.encryption.EncryptablePropertiesFactoryBean (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring31.xml.encryption.EncryptablePropertiesFactoryBean

+
+No usage of org.jasypt.spring31.xml.encryption.EncryptablePropertiesFactoryBean +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/class-use/EncryptionNamespaceHandler.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/class-use/EncryptionNamespaceHandler.html new file mode 100644 index 00000000..0f7ab050 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/class-use/EncryptionNamespaceHandler.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring31.xml.encryption.EncryptionNamespaceHandler (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring31.xml.encryption.EncryptionNamespaceHandler

+
+No usage of org.jasypt.spring31.xml.encryption.EncryptionNamespaceHandler +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/class-use/EncryptorFactoryBean.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/class-use/EncryptorFactoryBean.html new file mode 100644 index 00000000..c5707698 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/class-use/EncryptorFactoryBean.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring31.xml.encryption.EncryptorFactoryBean (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring31.xml.encryption.EncryptorFactoryBean

+
+No usage of org.jasypt.spring31.xml.encryption.EncryptorFactoryBean +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/package-frame.html new file mode 100644 index 00000000..9b204cb4 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/package-frame.html @@ -0,0 +1,39 @@ + + + + + + + +org.jasypt.spring31.xml.encryption (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.spring31.xml.encryption + + + + +
+Classes  + +
+DigesterFactoryBean +
+EncryptablePropertiesFactoryBean +
+EncryptionNamespaceHandler +
+EncryptorFactoryBean
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/package-summary.html new file mode 100644 index 00000000..453dbb66 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/package-summary.html @@ -0,0 +1,177 @@ + + + + + + + +org.jasypt.spring31.xml.encryption (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.spring31.xml.encryption +

+ + + + + + + + + + + + + + + + + + + + + +
+Class Summary
DigesterFactoryBean + Factory bean for creating digester objects from the encryption namespace + elements.
EncryptablePropertiesFactoryBean + Factory bean for creating encrptable properties objects from the encryption namespace + elements.
EncryptionNamespaceHandler + Namespace handler for jasypt's encryption namespace.
EncryptorFactoryBean + Factory bean for creating encryptor objects from the encryption namespace + elements.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/package-tree.html new file mode 100644 index 00000000..461df517 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/package-tree.html @@ -0,0 +1,162 @@ + + + + + + + +org.jasypt.spring31.xml.encryption Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.spring31.xml.encryption +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.jasypt.spring31.xml.encryption.DigesterFactoryBean (implements org.springframework.beans.factory.FactoryBean<T>, org.springframework.beans.factory.InitializingBean) +
    • org.jasypt.spring31.xml.encryption.EncryptorFactoryBean (implements org.springframework.beans.factory.FactoryBean<T>, org.springframework.beans.factory.InitializingBean) +
    • org.springframework.beans.factory.xml.NamespaceHandlerSupport (implements org.springframework.beans.factory.xml.NamespaceHandler) + +
    • org.springframework.core.io.support.PropertiesLoaderSupport
        +
      • org.jasypt.spring31.xml.encryption.EncryptablePropertiesFactoryBean (implements org.springframework.beans.factory.FactoryBean<T>, org.springframework.beans.factory.InitializingBean) +
      +
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/package-use.html new file mode 100644 index 00000000..efe90b86 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/org/jasypt/spring31/xml/encryption/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.spring31.xml.encryption (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.spring31.xml.encryption

+
+No usage of org.jasypt.spring31.xml.encryption +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/overview-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/overview-frame.html new file mode 100644 index 00000000..ebcf7af7 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/overview-frame.html @@ -0,0 +1,45 @@ + + + + + + + +Overview List (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + + + + +
+
+ + + + + +
All Classes +

+ +Packages +
+org.jasypt.spring31.properties +
+org.jasypt.spring31.xml.encryption +
+

+ +

+  + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/overview-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/overview-summary.html new file mode 100644 index 00000000..1e813cc4 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/overview-summary.html @@ -0,0 +1,161 @@ + + + + + + + +Overview (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+JASYPT: Java Simplified Encryption 1.9.2 API +

+
+ + + + + + + + + + + + + +
+Packages
org.jasypt.spring31.properties 
org.jasypt.spring31.xml.encryption 
+ +


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/overview-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/overview-tree.html new file mode 100644 index 00000000..2e9cb95c --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/overview-tree.html @@ -0,0 +1,188 @@ + + + + + + + +Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For All Packages

+
+
+
Package Hierarchies:
org.jasypt.spring31.properties, org.jasypt.spring31.xml.encryption
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.jasypt.spring31.xml.encryption.DigesterFactoryBean (implements org.springframework.beans.factory.FactoryBean<T>, org.springframework.beans.factory.InitializingBean) +
    • org.jasypt.spring31.xml.encryption.EncryptorFactoryBean (implements org.springframework.beans.factory.FactoryBean<T>, org.springframework.beans.factory.InitializingBean) +
    • org.springframework.beans.factory.xml.NamespaceHandlerSupport (implements org.springframework.beans.factory.xml.NamespaceHandler) + +
    • org.springframework.core.io.support.PropertiesLoaderSupport
        +
      • org.jasypt.spring31.xml.encryption.EncryptablePropertiesFactoryBean (implements org.springframework.beans.factory.FactoryBean<T>, org.springframework.beans.factory.InitializingBean) +
      • org.springframework.beans.factory.config.PropertyResourceConfigurer (implements org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.core.PriorityOrdered) +
          +
        • org.springframework.beans.factory.config.PlaceholderConfigurerSupport (implements org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware) + +
        • org.springframework.beans.factory.config.PropertyOverrideConfigurer +
        +
      +
    • org.springframework.core.env.PropertySource<T>
        +
      • org.springframework.core.env.EnumerablePropertySource<T>
          +
        • org.springframework.core.env.MapPropertySource +
        +
      +
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/package-list b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/package-list new file mode 100644 index 00000000..46b59eb1 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/package-list @@ -0,0 +1,2 @@ +org.jasypt.spring31.properties +org.jasypt.spring31.xml.encryption diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/resources/inherit.gif b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/resources/inherit.gif new file mode 100644 index 0000000000000000000000000000000000000000..c814867a13deb0ca7ea2156c6ca1d5a03372af7e GIT binary patch literal 57 zcmZ?wbhEHbIIT!9-C*e{wE9>Kx3D)-;0v)C; KYxQGgum%9JOA&7X literal 0 HcmV?d00001 diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-spring31/stylesheet.css b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/stylesheet.css new file mode 100644 index 00000000..6ea9e516 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-spring31/stylesheet.css @@ -0,0 +1,29 @@ +/* Javadoc style sheet */ + +/* Define colors, fonts and other style attributes here to override the defaults */ + +/* Page background color */ +body { background-color: #FFFFFF; color:#000000 } + +/* Headings */ +h1 { font-size: 145% } + +/* Table colors */ +.TableHeadingColor { background: #CCCCFF; color:#000000 } /* Dark mauve */ +.TableSubHeadingColor { background: #EEEEFF; color:#000000 } /* Light mauve */ +.TableRowColor { background: #FFFFFF; color:#000000 } /* White */ + +/* Font used in left-hand frame lists */ +.FrameTitleFont { font-size: 100%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameHeadingFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameItemFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } + +/* Navigation bar fonts and colors */ +.NavBarCell1 { background-color:#EEEEFF; color:#000000} /* Light mauve */ +.NavBarCell1Rev { background-color:#00008B; color:#FFFFFF} /* Dark Blue */ +.NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;color:#000000;} +.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;color:#FFFFFF;} + +.NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} +.NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/allclasses-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/allclasses-frame.html new file mode 100644 index 00000000..dec0102d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/allclasses-frame.html @@ -0,0 +1,38 @@ + + + + + + + +All Classes (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +All Classes +
+ + + + + +
PasswordEncoder +
+PasswordEncoder +
+PBEPasswordEncoder +
+PBEPasswordEncoder +
+
+ + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/allclasses-noframe.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/allclasses-noframe.html new file mode 100644 index 00000000..f4b40afe --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/allclasses-noframe.html @@ -0,0 +1,38 @@ + + + + + + + +All Classes (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +All Classes +
+ + + + + +
PasswordEncoder +
+PasswordEncoder +
+PBEPasswordEncoder +
+PBEPasswordEncoder +
+
+ + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/constant-values.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/constant-values.html new file mode 100644 index 00000000..324d5244 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/constant-values.html @@ -0,0 +1,147 @@ + + + + + + + +Constant Field Values (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Constant Field Values

+
+
+Contents
    +
+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/deprecated-list.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/deprecated-list.html new file mode 100644 index 00000000..95e0d9c6 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/deprecated-list.html @@ -0,0 +1,169 @@ + + + + + + + +Deprecated List (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Deprecated API

+
+
+Contents + + + + + + + + + + + + +
+Deprecated Classes
org.jasypt.spring.security2.PasswordEncoder +
+          Renamed as org.jasypt.springsecurity2.providers.encoding.PasswordEncoder. + Class will be removed from this package in 1.11. 
org.jasypt.spring.security2.PBEPasswordEncoder +
+          Renamed as org.jasypt.springsecurity2.providers.encoding.PBEPasswordEncoder. + Class will be removed from this package in 1.11. 
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/help-doc.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/help-doc.html new file mode 100644 index 00000000..ec36d6d5 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/help-doc.html @@ -0,0 +1,224 @@ + + + + + + + +API Help (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+How This API Document Is Organized

+
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.

+Overview

+
+ +

+The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

+

+Package

+
+ +

+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:

    +
  • Interfaces (italic)
  • Classes
  • Enums
  • Exceptions
  • Errors
  • Annotation Types
+
+

+Class/Interface

+
+ +

+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
  • Class inheritance diagram
  • Direct Subclasses
  • All Known Subinterfaces
  • All Known Implementing Classes
  • Class/interface declaration
  • Class/interface description +

    +

  • Nested Class Summary
  • Field Summary
  • Constructor Summary
  • Method Summary +

    +

  • Field Detail
  • Constructor Detail
  • Method Detail
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+ +

+Annotation Type

+
+ +

+Each annotation type has its own separate page with the following sections:

    +
  • Annotation Type declaration
  • Annotation Type description
  • Required Element Summary
  • Optional Element Summary
  • Element Detail
+
+ +

+Enum

+
+ +

+Each enum has its own separate page with the following sections:

    +
  • Enum declaration
  • Enum description
  • Enum Constant Summary
  • Enum Constant Detail
+
+

+Use

+
+Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.
+

+Tree (Class Hierarchy)

+
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.
    +
  • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
  • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
+
+

+Deprecated API

+
+The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+

+Index

+
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+

+Prev/Next

+These links take you to the next or previous class, interface, package, or related page.

+Frames/No Frames

+These links show and hide the HTML frames. All pages are available with or without frames. +

+

+Serialized Form

+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description. +

+

+Constant Field Values

+The Constant Field Values page lists the static final fields and their values. +

+ + +This help file applies to API documentation generated using the standard doclet. + +
+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/index-all.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/index-all.html new file mode 100644 index 00000000..f0e1d05d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/index-all.html @@ -0,0 +1,233 @@ + + + + + + + +Index (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +E I O P S
+

+E

+
+
encodePassword(String, Object) - +Method in class org.jasypt.spring.security2.PasswordEncoder +
Deprecated. Encodes a password. +
encodePassword(String, Object) - +Method in class org.jasypt.spring.security2.PBEPasswordEncoder +
Deprecated. Encodes a password. +
encodePassword(String, Object) - +Method in class org.jasypt.springsecurity2.providers.encoding.PasswordEncoder +
Encodes a password. +
encodePassword(String, Object) - +Method in class org.jasypt.springsecurity2.providers.encoding.PBEPasswordEncoder +
Encodes a password. +
+
+

+I

+
+
isPasswordValid(String, String, Object) - +Method in class org.jasypt.spring.security2.PasswordEncoder +
Deprecated. Checks a password's validity. +
isPasswordValid(String, String, Object) - +Method in class org.jasypt.spring.security2.PBEPasswordEncoder +
Deprecated. Checks a password's validity. +
isPasswordValid(String, String, Object) - +Method in class org.jasypt.springsecurity2.providers.encoding.PasswordEncoder +
Checks a password's validity. +
isPasswordValid(String, String, Object) - +Method in class org.jasypt.springsecurity2.providers.encoding.PBEPasswordEncoder +
Checks a password's validity. +
+
+

+O

+
+
org.jasypt.spring.security2 - package org.jasypt.spring.security2
 
org.jasypt.springsecurity2.providers.encoding - package org.jasypt.springsecurity2.providers.encoding
 
+
+

+P

+
+
PasswordEncoder - Class in org.jasypt.spring.security2
Deprecated. Renamed as org.jasypt.springsecurity2.providers.encoding.PasswordEncoder. + Class will be removed from this package in 1.11.
PasswordEncoder() - +Constructor for class org.jasypt.spring.security2.PasswordEncoder +
Deprecated. Creates a new instance of PasswordEncoder +
PasswordEncoder - Class in org.jasypt.springsecurity2.providers.encoding
+ This class implements the Spring Security 2.x + org.springframework.security.providers.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption.
PasswordEncoder() - +Constructor for class org.jasypt.springsecurity2.providers.encoding.PasswordEncoder +
Creates a new instance of PasswordEncoder +
PBEPasswordEncoder - Class in org.jasypt.spring.security2
Deprecated. Renamed as org.jasypt.springsecurity2.providers.encoding.PBEPasswordEncoder. + Class will be removed from this package in 1.11.
PBEPasswordEncoder() - +Constructor for class org.jasypt.spring.security2.PBEPasswordEncoder +
Deprecated. Creates a new instance of PBEPasswordEncoder +
PBEPasswordEncoder - Class in org.jasypt.springsecurity2.providers.encoding
+ This class implements the Spring Security 2.x + org.springframework.security.providers.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption.
PBEPasswordEncoder() - +Constructor for class org.jasypt.springsecurity2.providers.encoding.PBEPasswordEncoder +
Creates a new instance of PBEPasswordEncoder +
+
+

+S

+
+
setPasswordEncryptor(PasswordEncryptor) - +Method in class org.jasypt.spring.security2.PasswordEncoder +
Deprecated. Sets a password encryptor to be used. +
setPasswordEncryptor(PasswordEncryptor) - +Method in class org.jasypt.springsecurity2.providers.encoding.PasswordEncoder +
Sets a password encryptor to be used. +
setPbeStringEncryptor(PBEStringEncryptor) - +Method in class org.jasypt.spring.security2.PBEPasswordEncoder +
Deprecated. Sets a string digester to be used. +
setPbeStringEncryptor(PBEStringEncryptor) - +Method in class org.jasypt.springsecurity2.providers.encoding.PBEPasswordEncoder +
Sets a string digester to be used. +
setStringDigester(StringDigester) - +Method in class org.jasypt.spring.security2.PasswordEncoder +
Deprecated. Sets a string digester to be used. +
setStringDigester(StringDigester) - +Method in class org.jasypt.springsecurity2.providers.encoding.PasswordEncoder +
Sets a string digester to be used. +
setTextEncryptor(TextEncryptor) - +Method in class org.jasypt.spring.security2.PBEPasswordEncoder +
Deprecated. Sets a text encryptor to be used. +
setTextEncryptor(TextEncryptor) - +Method in class org.jasypt.springsecurity2.providers.encoding.PBEPasswordEncoder +
Sets a text encryptor to be used. +
+
+E I O P S + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/index.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/index.html new file mode 100644 index 00000000..0077f402 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/index.html @@ -0,0 +1,40 @@ + + + + + + + +JASYPT: Java Simplified Encryption 1.9.2 API + + + + + + + + + + + +<H2> +Frame Alert</H2> + +<P> +This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. +<BR> +Link to<A HREF="overview-summary.html">Non-frame version.</A> + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/PBEPasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/PBEPasswordEncoder.html new file mode 100644 index 00000000..4e7164d7 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/PBEPasswordEncoder.html @@ -0,0 +1,471 @@ + + + + + + + +PBEPasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring.security2 +
+Class PBEPasswordEncoder

+
+Object
+  extended by org.jasypt.spring.security2.PBEPasswordEncoder
+
+
+
All Implemented Interfaces:
org.springframework.security.providers.encoding.PasswordEncoder
+
+
+Deprecated. Renamed as org.jasypt.springsecurity2.providers.encoding.PBEPasswordEncoder. + Class will be removed from this package in 1.11. +

+

+
public final class PBEPasswordEncoder
extends Object
implements org.springframework.security.providers.encoding.PasswordEncoder
+ + +

+

+ This class implements the Spring Security 2.x + org.springframework.security.providers.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption. +

+

+ Important: This class allows bi-directional password-based encryption + of user passwords + in Spring Security using Jasypt. But please note that passwords should not be + encrypted in a bi-directional way, but instead as uni-directional + digests (hashes). Encrypting passwords in a way they can be decrypted + can be a severe security issue, and should only be considered in legacy + or complex inter-application integration scenarios. +

+

+ Objects of this class will internally hold either an object of type + org.jasypt.util.text.TextEncryptor or an object of type + org.jasypt.encryption.pbe.PBEStringEncryptor (only one of them), + which should be set by respectively calling + setTextEncryptor(TextEncryptor) or + setPbeStringEncryptor(PBEStringEncryptor) + after creation. If neither a TextEncryptor nor + a PBEStringEncryptor are set, a new + org.jasypt.util.text.BasicTextEncryptor object is + created and internally used. +

+

+ Important: This implementation ignores any salt provided through + the interface methods, as the internal Jasypt + TextEncryptor or PBEStringEncryptor objects normally use a + random one. This means that salt can be safely passed as + null. +

+

+ Usage with a TextEncryptor +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the TextEncryptor in several places,     --> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptTextEncryptor" class="org.jasypt.util.text.StrongTextEncryptor" >
+    <property name="password" value="myPassword" />
+  </bean>
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the TextEncryptor instance so that it can be used from       -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PBEPasswordEncoder">
+    <property name="textEncryptor">
+      <ref bean="jasyptTextEncryptor" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ Usage with a PBEStringEncryptor +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the PBEStringEncryptor in several places,--> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptPBEStringEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor" >
+    <property name="algorithm" value="PBEWithMD5AndTripleDES" />
+    <property name="password" value="myPassword" />
+  </bean>
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the PBEStringEncryptor instance so that it can be used from  -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PBEPasswordEncoder">
+    <property name="pbeStringEncryptor">
+      <ref bean="jasyptPBEStringEncryptor" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ This class is thread-safe +

+

+ +

+

+
Since:
+
1.5
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
PBEPasswordEncoder() + +
+          Deprecated. Creates a new instance of PBEPasswordEncoder
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringencodePassword(String rawPass, + Object salt) + +
+          Deprecated. Encodes a password.
+ booleanisPasswordValid(String encPass, + String rawPass, + Object salt) + +
+          Deprecated. Checks a password's validity.
+ voidsetPbeStringEncryptor(org.jasypt.encryption.pbe.PBEStringEncryptor pbeStringEncryptor) + +
+          Deprecated. Sets a string digester to be used.
+ voidsetTextEncryptor(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+          Deprecated. Sets a text encryptor to be used.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+PBEPasswordEncoder

+
+public PBEPasswordEncoder()
+
+
Deprecated. 
Creates a new instance of PBEPasswordEncoder +

+

+ + + + + + + + +
+Method Detail
+ +

+setTextEncryptor

+
+public void setTextEncryptor(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+
Deprecated. 
Sets a text encryptor to be used. Only one of + setTextEncryptor or setPBEStringEncryptor should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
textEncryptor - the text encryptor instance to be used.
+
+
+
+ +

+setPbeStringEncryptor

+
+public void setPbeStringEncryptor(org.jasypt.encryption.pbe.PBEStringEncryptor pbeStringEncryptor)
+
+
Deprecated. 
Sets a string digester to be used. Only one of + setTextEncryptor or setPBEStringEncryptor should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
pbeStringEncryptor - the PBE string encryptor instance to be used.
+
+
+
+ +

+encodePassword

+
+public String encodePassword(String rawPass,
+                             Object salt)
+
+
Deprecated. 
Encodes a password. This implementation completely ignores salt, + as jasypt's TextEncryptor and PBEStringEncryptor + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
encodePassword in interface org.springframework.security.providers.encoding.PasswordEncoder
+
+
+
Parameters:
rawPass - The password to be encoded.
salt - The salt, which will be ignored. It can be null.
+
+
+
+ +

+isPasswordValid

+
+public boolean isPasswordValid(String encPass,
+                               String rawPass,
+                               Object salt)
+
+
Deprecated. 
Checks a password's validity. This implementation completely ignores + salt, as jasypt's TextEncryptor and PBEStringEncryptor + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
isPasswordValid in interface org.springframework.security.providers.encoding.PasswordEncoder
+
+
+
Parameters:
encPass - The encrypted password against which to check.
rawPass - The password to be checked.
salt - The salt, which will be ignored. It can be null.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/PasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/PasswordEncoder.html new file mode 100644 index 00000000..a1dd7607 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/PasswordEncoder.html @@ -0,0 +1,460 @@ + + + + + + + +PasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring.security2 +
+Class PasswordEncoder

+
+Object
+  extended by org.jasypt.spring.security2.PasswordEncoder
+
+
+
All Implemented Interfaces:
org.springframework.security.providers.encoding.PasswordEncoder
+
+
+Deprecated. Renamed as org.jasypt.springsecurity2.providers.encoding.PasswordEncoder. + Class will be removed from this package in 1.11. +

+

+
public final class PasswordEncoder
extends Object
implements org.springframework.security.providers.encoding.PasswordEncoder
+ + +

+

+ This class implements the Spring Security 2.x + org.springframework.security.providers.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption. +

+

+ Objects of this class will internally hold either an object of type + org.jasypt.util.password.PasswordEncryptor or an object of type + org.jasypt.digest.StringDigester (only one of them), + which should be set by respectively calling + setPasswordEncryptor(PasswordEncryptor) or + setStringDigester(StringDigester) + after creation. If neither a PasswordEncryptor nor + a StringDigester are set, a new + org.jasypt.util.password.BasicPasswordEncryptor object is + created and internally used. +

+

+ Important: This implementation ignores any salt provided through + the interface methods, as the internal Jasypt + PasswordEncryptor or StringDigester objects normally use a + random one. This means that salt can be safely passed as + null. +

+

+ Usage with a PasswordEncryptor +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the PasswordEncryptor in several places, --> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptPasswordEncryptor" class="org.jasypt.util.password.StrongPasswordEncryptor" />
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the PasswordEncryptor instance so that it can be used from   -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PasswordEncoder">
+    <property name="passwordEncryptor">
+      <ref bean="jasyptPasswordEncryptor" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ Usage with a StringDigester +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the StringDigester in several places,    --> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptStringDigester" class="org.jasypt.digest.StandardStringDigester" >
+    <property name="algorithm" value="SHA-1" />
+    <property name="iterations" value="100000" />
+  </bean>
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the StringDigester instance so that it can be used from      -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PasswordEncoder">
+    <property name="stringDigester">
+      <ref bean="jasyptStringDigester" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ This class is thread-safe +

+

+ +

+

+
Since:
+
1.5
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
PasswordEncoder() + +
+          Deprecated. Creates a new instance of PasswordEncoder
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringencodePassword(String rawPass, + Object salt) + +
+          Deprecated. Encodes a password.
+ booleanisPasswordValid(String encPass, + String rawPass, + Object salt) + +
+          Deprecated. Checks a password's validity.
+ voidsetPasswordEncryptor(org.jasypt.util.password.PasswordEncryptor passwordEncryptor) + +
+          Deprecated. Sets a password encryptor to be used.
+ voidsetStringDigester(org.jasypt.digest.StringDigester stringDigester) + +
+          Deprecated. Sets a string digester to be used.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+PasswordEncoder

+
+public PasswordEncoder()
+
+
Deprecated. 
Creates a new instance of PasswordEncoder +

+

+ + + + + + + + +
+Method Detail
+ +

+setPasswordEncryptor

+
+public void setPasswordEncryptor(org.jasypt.util.password.PasswordEncryptor passwordEncryptor)
+
+
Deprecated. 
Sets a password encryptor to be used. Only one of + setPasswordEncryptor or setStringDigester should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
passwordEncryptor - the password encryptor instance to be used.
+
+
+
+ +

+setStringDigester

+
+public void setStringDigester(org.jasypt.digest.StringDigester stringDigester)
+
+
Deprecated. 
Sets a string digester to be used. Only one of + setPasswordEncryptor or setStringDigester should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
stringDigester - the string digester instance to be used.
+
+
+
+ +

+encodePassword

+
+public String encodePassword(String rawPass,
+                             Object salt)
+
+
Deprecated. 
Encodes a password. This implementation completely ignores salt, + as jasypt's PasswordEncryptor and StringDigester + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
encodePassword in interface org.springframework.security.providers.encoding.PasswordEncoder
+
+
+
Parameters:
rawPass - The password to be encoded.
salt - The salt, which will be ignored. It can be null.
+
+
+
+ +

+isPasswordValid

+
+public boolean isPasswordValid(String encPass,
+                               String rawPass,
+                               Object salt)
+
+
Deprecated. 
Checks a password's validity. This implementation completely ignores + salt, as jasypt's PasswordEncryptor and StringDigester + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
isPasswordValid in interface org.springframework.security.providers.encoding.PasswordEncoder
+
+
+
Parameters:
encPass - The encrypted password (digest) against which to check.
rawPass - The password to be checked.
salt - The salt, which will be ignored. It can be null.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/class-use/PBEPasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/class-use/PBEPasswordEncoder.html new file mode 100644 index 00000000..e4256c29 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/class-use/PBEPasswordEncoder.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring.security2.PBEPasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring.security2.PBEPasswordEncoder

+
+No usage of org.jasypt.spring.security2.PBEPasswordEncoder +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/class-use/PasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/class-use/PasswordEncoder.html new file mode 100644 index 00000000..49167e0d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/class-use/PasswordEncoder.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring.security2.PasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring.security2.PasswordEncoder

+
+No usage of org.jasypt.spring.security2.PasswordEncoder +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/package-frame.html new file mode 100644 index 00000000..879b09c9 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/package-frame.html @@ -0,0 +1,35 @@ + + + + + + + +org.jasypt.spring.security2 (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.spring.security2 + + + + +
+Classes  + +
+PasswordEncoder +
+PBEPasswordEncoder
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/package-summary.html new file mode 100644 index 00000000..370b8669 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/package-summary.html @@ -0,0 +1,162 @@ + + + + + + + +org.jasypt.spring.security2 (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.spring.security2 +

+ + + + + + + + + + + + + +
+Class Summary
PasswordEncoderDeprecated. Renamed as org.jasypt.springsecurity2.providers.encoding.PasswordEncoder.
PBEPasswordEncoderDeprecated. Renamed as org.jasypt.springsecurity2.providers.encoding.PBEPasswordEncoder.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/package-tree.html new file mode 100644 index 00000000..0085713d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/package-tree.html @@ -0,0 +1,156 @@ + + + + + + + +org.jasypt.spring.security2 Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.spring.security2 +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.jasypt.spring.security2.PasswordEncoder (implements org.springframework.security.providers.encoding.PasswordEncoder) +
    • org.jasypt.spring.security2.PBEPasswordEncoder (implements org.springframework.security.providers.encoding.PasswordEncoder) +
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/package-use.html new file mode 100644 index 00000000..040d50ab --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/spring/security2/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.spring.security2 (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.spring.security2

+
+No usage of org.jasypt.spring.security2 +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/PBEPasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/PBEPasswordEncoder.html new file mode 100644 index 00000000..35b061ea --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/PBEPasswordEncoder.html @@ -0,0 +1,468 @@ + + + + + + + +PBEPasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.springsecurity2.providers.encoding +
+Class PBEPasswordEncoder

+
+Object
+  extended by org.jasypt.springsecurity2.providers.encoding.PBEPasswordEncoder
+
+
+
All Implemented Interfaces:
org.springframework.security.providers.encoding.PasswordEncoder
+
+
+
+
public final class PBEPasswordEncoder
extends Object
implements org.springframework.security.providers.encoding.PasswordEncoder
+ + +

+

+ This class implements the Spring Security 2.x + org.springframework.security.providers.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption. +

+

+ Important: This class allows bi-directional password-based encryption + of user passwords + in Spring Security using Jasypt. But please note that passwords should not be + encrypted in a bi-directional way, but instead as uni-directional + digests (hashes). Encrypting passwords in a way they can be decrypted + can be a severe security issue, and should only be considered in legacy + or complex inter-application integration scenarios. +

+

+ Objects of this class will internally hold either an object of type + org.jasypt.util.text.TextEncryptor or an object of type + org.jasypt.encryption.pbe.PBEStringEncryptor (only one of them), + which should be set by respectively calling + setTextEncryptor(TextEncryptor) or + setPbeStringEncryptor(PBEStringEncryptor) + after creation. If neither a TextEncryptor nor + a PBEStringEncryptor are set, a new + org.jasypt.util.text.BasicTextEncryptor object is + created and internally used. +

+

+ Important: This implementation ignores any salt provided through + the interface methods, as the internal Jasypt + TextEncryptor or PBEStringEncryptor objects normally use a + random one. This means that salt can be safely passed as + null. +

+

+ Usage with a TextEncryptor +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the TextEncryptor in several places,     --> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptTextEncryptor" class="org.jasypt.util.text.StrongTextEncryptor" >
+    <property name="password" value="myPassword" />
+  </bean>
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the TextEncryptor instance so that it can be used from       -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PBEPasswordEncoder">
+    <property name="textEncryptor">
+      <ref bean="jasyptTextEncryptor" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ Usage with a PBEStringEncryptor +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the PBEStringEncryptor in several places,--> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptPBEStringEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor" >
+    <property name="algorithm" value="PBEWithMD5AndTripleDES" />
+    <property name="password" value="myPassword" />
+  </bean>
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the PBEStringEncryptor instance so that it can be used from  -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PBEPasswordEncoder">
+    <property name="pbeStringEncryptor">
+      <ref bean="jasyptPBEStringEncryptor" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ This class is thread-safe +

+

+ +

+

+
Since:
+
1.9.0 (existed as org.jasypt.spring.security2.PasswordEncoder since 1.5)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
PBEPasswordEncoder() + +
+          Creates a new instance of PBEPasswordEncoder
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringencodePassword(String rawPass, + Object salt) + +
+          Encodes a password.
+ booleanisPasswordValid(String encPass, + String rawPass, + Object salt) + +
+          Checks a password's validity.
+ voidsetPbeStringEncryptor(org.jasypt.encryption.pbe.PBEStringEncryptor pbeStringEncryptor) + +
+          Sets a string digester to be used.
+ voidsetTextEncryptor(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+          Sets a text encryptor to be used.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+PBEPasswordEncoder

+
+public PBEPasswordEncoder()
+
+
Creates a new instance of PBEPasswordEncoder +

+

+ + + + + + + + +
+Method Detail
+ +

+setTextEncryptor

+
+public void setTextEncryptor(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+
Sets a text encryptor to be used. Only one of + setTextEncryptor or setPBEStringEncryptor should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
textEncryptor - the text encryptor instance to be used.
+
+
+
+ +

+setPbeStringEncryptor

+
+public void setPbeStringEncryptor(org.jasypt.encryption.pbe.PBEStringEncryptor pbeStringEncryptor)
+
+
Sets a string digester to be used. Only one of + setTextEncryptor or setPBEStringEncryptor should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
pbeStringEncryptor - the PBE string encryptor instance to be used.
+
+
+
+ +

+encodePassword

+
+public String encodePassword(String rawPass,
+                             Object salt)
+
+
Encodes a password. This implementation completely ignores salt, + as jasypt's TextEncryptor and PBEStringEncryptor + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
encodePassword in interface org.springframework.security.providers.encoding.PasswordEncoder
+
+
+
Parameters:
rawPass - The password to be encoded.
salt - The salt, which will be ignored. It can be null.
+
+
+
+ +

+isPasswordValid

+
+public boolean isPasswordValid(String encPass,
+                               String rawPass,
+                               Object salt)
+
+
Checks a password's validity. This implementation completely ignores + salt, as jasypt's TextEncryptor and PBEStringEncryptor + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
isPasswordValid in interface org.springframework.security.providers.encoding.PasswordEncoder
+
+
+
Parameters:
encPass - The encrypted password against which to check.
rawPass - The password to be checked.
salt - The salt, which will be ignored. It can be null.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/PasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/PasswordEncoder.html new file mode 100644 index 00000000..3796009e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/PasswordEncoder.html @@ -0,0 +1,457 @@ + + + + + + + +PasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.springsecurity2.providers.encoding +
+Class PasswordEncoder

+
+Object
+  extended by org.jasypt.springsecurity2.providers.encoding.PasswordEncoder
+
+
+
All Implemented Interfaces:
org.springframework.security.providers.encoding.PasswordEncoder
+
+
+
+
public final class PasswordEncoder
extends Object
implements org.springframework.security.providers.encoding.PasswordEncoder
+ + +

+

+ This class implements the Spring Security 2.x + org.springframework.security.providers.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption. +

+

+ Objects of this class will internally hold either an object of type + org.jasypt.util.password.PasswordEncryptor or an object of type + org.jasypt.digest.StringDigester (only one of them), + which should be set by respectively calling + setPasswordEncryptor(PasswordEncryptor) or + setStringDigester(StringDigester) + after creation. If neither a PasswordEncryptor nor + a StringDigester are set, a new + org.jasypt.util.password.BasicPasswordEncryptor object is + created and internally used. +

+

+ Important: This implementation ignores any salt provided through + the interface methods, as the internal Jasypt + PasswordEncryptor or StringDigester objects normally use a + random one. This means that salt can be safely passed as + null. +

+

+ Usage with a PasswordEncryptor +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the PasswordEncryptor in several places, --> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptPasswordEncryptor" class="org.jasypt.util.password.StrongPasswordEncryptor" />
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the PasswordEncryptor instance so that it can be used from   -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PasswordEncoder">
+    <property name="passwordEncryptor">
+      <ref bean="jasyptPasswordEncryptor" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ Usage with a StringDigester +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the StringDigester in several places,    --> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptStringDigester" class="org.jasypt.digest.StandardStringDigester" >
+    <property name="algorithm" value="SHA-1" />
+    <property name="iterations" value="100000" />
+  </bean>
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the StringDigester instance so that it can be used from      -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PasswordEncoder">
+    <property name="stringDigester">
+      <ref bean="jasyptStringDigester" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ This class is thread-safe +

+

+ +

+

+
Since:
+
1.9.0 (existed as org.jasypt.spring.security2.PasswordEncoder since 1.5)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
PasswordEncoder() + +
+          Creates a new instance of PasswordEncoder
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringencodePassword(String rawPass, + Object salt) + +
+          Encodes a password.
+ booleanisPasswordValid(String encPass, + String rawPass, + Object salt) + +
+          Checks a password's validity.
+ voidsetPasswordEncryptor(org.jasypt.util.password.PasswordEncryptor passwordEncryptor) + +
+          Sets a password encryptor to be used.
+ voidsetStringDigester(org.jasypt.digest.StringDigester stringDigester) + +
+          Sets a string digester to be used.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+PasswordEncoder

+
+public PasswordEncoder()
+
+
Creates a new instance of PasswordEncoder +

+

+ + + + + + + + +
+Method Detail
+ +

+setPasswordEncryptor

+
+public void setPasswordEncryptor(org.jasypt.util.password.PasswordEncryptor passwordEncryptor)
+
+
Sets a password encryptor to be used. Only one of + setPasswordEncryptor or setStringDigester should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
passwordEncryptor - the password encryptor instance to be used.
+
+
+
+ +

+setStringDigester

+
+public void setStringDigester(org.jasypt.digest.StringDigester stringDigester)
+
+
Sets a string digester to be used. Only one of + setPasswordEncryptor or setStringDigester should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
stringDigester - the string digester instance to be used.
+
+
+
+ +

+encodePassword

+
+public String encodePassword(String rawPass,
+                             Object salt)
+
+
Encodes a password. This implementation completely ignores salt, + as jasypt's PasswordEncryptor and StringDigester + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
encodePassword in interface org.springframework.security.providers.encoding.PasswordEncoder
+
+
+
Parameters:
rawPass - The password to be encoded.
salt - The salt, which will be ignored. It can be null.
+
+
+
+ +

+isPasswordValid

+
+public boolean isPasswordValid(String encPass,
+                               String rawPass,
+                               Object salt)
+
+
Checks a password's validity. This implementation completely ignores + salt, as jasypt's PasswordEncryptor and StringDigester + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
isPasswordValid in interface org.springframework.security.providers.encoding.PasswordEncoder
+
+
+
Parameters:
encPass - The encrypted password (digest) against which to check.
rawPass - The password to be checked.
salt - The salt, which will be ignored. It can be null.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/class-use/PBEPasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/class-use/PBEPasswordEncoder.html new file mode 100644 index 00000000..16db0ca4 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/class-use/PBEPasswordEncoder.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.springsecurity2.providers.encoding.PBEPasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.springsecurity2.providers.encoding.PBEPasswordEncoder

+
+No usage of org.jasypt.springsecurity2.providers.encoding.PBEPasswordEncoder +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/class-use/PasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/class-use/PasswordEncoder.html new file mode 100644 index 00000000..cd1620ed --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/class-use/PasswordEncoder.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.springsecurity2.providers.encoding.PasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.springsecurity2.providers.encoding.PasswordEncoder

+
+No usage of org.jasypt.springsecurity2.providers.encoding.PasswordEncoder +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/package-frame.html new file mode 100644 index 00000000..9279fc2d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/package-frame.html @@ -0,0 +1,35 @@ + + + + + + + +org.jasypt.springsecurity2.providers.encoding (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.springsecurity2.providers.encoding + + + + +
+Classes  + +
+PasswordEncoder +
+PBEPasswordEncoder
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/package-summary.html new file mode 100644 index 00000000..b94b3f63 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/package-summary.html @@ -0,0 +1,170 @@ + + + + + + + +org.jasypt.springsecurity2.providers.encoding (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.springsecurity2.providers.encoding +

+ + + + + + + + + + + + + +
+Class Summary
PasswordEncoder + This class implements the Spring Security 2.x + org.springframework.security.providers.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption.
PBEPasswordEncoder + This class implements the Spring Security 2.x + org.springframework.security.providers.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/package-tree.html new file mode 100644 index 00000000..a8f4d663 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/package-tree.html @@ -0,0 +1,156 @@ + + + + + + + +org.jasypt.springsecurity2.providers.encoding Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.springsecurity2.providers.encoding +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.jasypt.springsecurity2.providers.encoding.PasswordEncoder (implements org.springframework.security.providers.encoding.PasswordEncoder) +
    • org.jasypt.springsecurity2.providers.encoding.PBEPasswordEncoder (implements org.springframework.security.providers.encoding.PasswordEncoder) +
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/package-use.html new file mode 100644 index 00000000..ba6d7dbd --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/org/jasypt/springsecurity2/providers/encoding/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.springsecurity2.providers.encoding (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.springsecurity2.providers.encoding

+
+No usage of org.jasypt.springsecurity2.providers.encoding +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/overview-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/overview-frame.html new file mode 100644 index 00000000..784a9dfe --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/overview-frame.html @@ -0,0 +1,45 @@ + + + + + + + +Overview List (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + + + + +
+
+ + + + + +
All Classes +

+ +Packages +
+org.jasypt.spring.security2 +
+org.jasypt.springsecurity2.providers.encoding +
+

+ +

+  + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/overview-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/overview-summary.html new file mode 100644 index 00000000..7a76cdff --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/overview-summary.html @@ -0,0 +1,161 @@ + + + + + + + +Overview (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+JASYPT: Java Simplified Encryption 1.9.2 API +

+
+ + + + + + + + + + + + + +
+Packages
org.jasypt.spring.security2 
org.jasypt.springsecurity2.providers.encoding 
+ +


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/overview-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/overview-tree.html new file mode 100644 index 00000000..ef85e7ad --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/overview-tree.html @@ -0,0 +1,157 @@ + + + + + + + +Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For All Packages

+
+
+
Package Hierarchies:
org.jasypt.spring.security2, org.jasypt.springsecurity2.providers.encoding
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.jasypt.springsecurity2.providers.encoding.PasswordEncoder (implements org.springframework.security.providers.encoding.PasswordEncoder) +
    • org.jasypt.spring.security2.PasswordEncoder (implements org.springframework.security.providers.encoding.PasswordEncoder) +
    • org.jasypt.springsecurity2.providers.encoding.PBEPasswordEncoder (implements org.springframework.security.providers.encoding.PasswordEncoder) +
    • org.jasypt.spring.security2.PBEPasswordEncoder (implements org.springframework.security.providers.encoding.PasswordEncoder) +
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/package-list b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/package-list new file mode 100644 index 00000000..69031a1c --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/package-list @@ -0,0 +1,2 @@ +org.jasypt.spring.security2 +org.jasypt.springsecurity2.providers.encoding diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/resources/inherit.gif b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/resources/inherit.gif new file mode 100644 index 0000000000000000000000000000000000000000..c814867a13deb0ca7ea2156c6ca1d5a03372af7e GIT binary patch literal 57 zcmZ?wbhEHbIIT!9-C*e{wE9>Kx3D)-;0v)C; KYxQGgum%9JOA&7X literal 0 HcmV?d00001 diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/stylesheet.css b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/stylesheet.css new file mode 100644 index 00000000..6ea9e516 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity2/stylesheet.css @@ -0,0 +1,29 @@ +/* Javadoc style sheet */ + +/* Define colors, fonts and other style attributes here to override the defaults */ + +/* Page background color */ +body { background-color: #FFFFFF; color:#000000 } + +/* Headings */ +h1 { font-size: 145% } + +/* Table colors */ +.TableHeadingColor { background: #CCCCFF; color:#000000 } /* Dark mauve */ +.TableSubHeadingColor { background: #EEEEFF; color:#000000 } /* Light mauve */ +.TableRowColor { background: #FFFFFF; color:#000000 } /* White */ + +/* Font used in left-hand frame lists */ +.FrameTitleFont { font-size: 100%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameHeadingFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameItemFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } + +/* Navigation bar fonts and colors */ +.NavBarCell1 { background-color:#EEEEFF; color:#000000} /* Light mauve */ +.NavBarCell1Rev { background-color:#00008B; color:#FFFFFF} /* Dark Blue */ +.NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;color:#000000;} +.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;color:#FFFFFF;} + +.NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} +.NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/allclasses-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/allclasses-frame.html new file mode 100644 index 00000000..72dcbac3 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/allclasses-frame.html @@ -0,0 +1,42 @@ + + + + + + + +All Classes (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +All Classes +
+ + + + + +
PasswordEncoder +
+PasswordEncoder +
+PBEPasswordEncoder +
+PBEPasswordEncoder +
+TokenBasedRememberMeServices +
+TokenBasedRememberMeServices +
+
+ + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/allclasses-noframe.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/allclasses-noframe.html new file mode 100644 index 00000000..fe5cd425 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/allclasses-noframe.html @@ -0,0 +1,42 @@ + + + + + + + +All Classes (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +All Classes +
+ + + + + +
PasswordEncoder +
+PasswordEncoder +
+PBEPasswordEncoder +
+PBEPasswordEncoder +
+TokenBasedRememberMeServices +
+TokenBasedRememberMeServices +
+
+ + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/constant-values.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/constant-values.html new file mode 100644 index 00000000..8abc6478 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/constant-values.html @@ -0,0 +1,147 @@ + + + + + + + +Constant Field Values (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Constant Field Values

+
+
+Contents
    +
+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/deprecated-list.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/deprecated-list.html new file mode 100644 index 00000000..6c91d0cd --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/deprecated-list.html @@ -0,0 +1,175 @@ + + + + + + + +Deprecated List (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Deprecated API

+
+
+Contents + + + + + + + + + + + + + + + +
+Deprecated Classes
org.jasypt.spring.security3.PasswordEncoder +
+          Renamed as org.jasypt.springsecurity3.authentication.encoding.PasswordEncoder. + Class will be removed from this package in 1.11. 
org.jasypt.spring.security3.PBEPasswordEncoder +
+          Renamed as org.jasypt.springsecurity3.authentication.encoding.PBEPasswordEncoder. + Class will be removed from this package in 1.11. 
org.jasypt.spring.security3.TokenBasedRememberMeServices +
+          Renamed as org.jasypt.springsecurity3.authentication.rememberme.TokenBasedRememberMeServices. + Class will be removed from this package in 1.11. 
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/help-doc.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/help-doc.html new file mode 100644 index 00000000..e3c89968 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/help-doc.html @@ -0,0 +1,224 @@ + + + + + + + +API Help (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+How This API Document Is Organized

+
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.

+Overview

+
+ +

+The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

+

+Package

+
+ +

+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:

    +
  • Interfaces (italic)
  • Classes
  • Enums
  • Exceptions
  • Errors
  • Annotation Types
+
+

+Class/Interface

+
+ +

+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
  • Class inheritance diagram
  • Direct Subclasses
  • All Known Subinterfaces
  • All Known Implementing Classes
  • Class/interface declaration
  • Class/interface description +

    +

  • Nested Class Summary
  • Field Summary
  • Constructor Summary
  • Method Summary +

    +

  • Field Detail
  • Constructor Detail
  • Method Detail
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+ +

+Annotation Type

+
+ +

+Each annotation type has its own separate page with the following sections:

    +
  • Annotation Type declaration
  • Annotation Type description
  • Required Element Summary
  • Optional Element Summary
  • Element Detail
+
+ +

+Enum

+
+ +

+Each enum has its own separate page with the following sections:

    +
  • Enum declaration
  • Enum description
  • Enum Constant Summary
  • Enum Constant Detail
+
+

+Use

+
+Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.
+

+Tree (Class Hierarchy)

+
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.
    +
  • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
  • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
+
+

+Deprecated API

+
+The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+

+Index

+
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+

+Prev/Next

+These links take you to the next or previous class, interface, package, or related page.

+Frames/No Frames

+These links show and hide the HTML frames. All pages are available with or without frames. +

+

+Serialized Form

+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description. +

+

+Constant Field Values

+The Constant Field Values page lists the static final fields and their values. +

+ + +This help file applies to API documentation generated using the standard doclet. + +
+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/index-all.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/index-all.html new file mode 100644 index 00000000..585794df --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/index-all.html @@ -0,0 +1,268 @@ + + + + + + + +Index (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +E I O P S T
+

+E

+
+
encodePassword(String, Object) - +Method in class org.jasypt.spring.security3.PasswordEncoder +
Deprecated. Encodes a password. +
encodePassword(String, Object) - +Method in class org.jasypt.spring.security3.PBEPasswordEncoder +
Deprecated. Encodes a password. +
encodePassword(String, Object) - +Method in class org.jasypt.springsecurity3.authentication.encoding.PasswordEncoder +
Encodes a password. +
encodePassword(String, Object) - +Method in class org.jasypt.springsecurity3.authentication.encoding.PBEPasswordEncoder +
Encodes a password. +
+
+

+I

+
+
isPasswordValid(String, String, Object) - +Method in class org.jasypt.spring.security3.PasswordEncoder +
Deprecated. Checks a password's validity. +
isPasswordValid(String, String, Object) - +Method in class org.jasypt.spring.security3.PBEPasswordEncoder +
Deprecated. Checks a password's validity. +
isPasswordValid(String, String, Object) - +Method in class org.jasypt.springsecurity3.authentication.encoding.PasswordEncoder +
Checks a password's validity. +
isPasswordValid(String, String, Object) - +Method in class org.jasypt.springsecurity3.authentication.encoding.PBEPasswordEncoder +
Checks a password's validity. +
+
+

+O

+
+
onLoginSuccess(HttpServletRequest, HttpServletResponse, Authentication) - +Method in class org.jasypt.spring.security3.TokenBasedRememberMeServices +
Deprecated.   +
onLoginSuccess(HttpServletRequest, HttpServletResponse, Authentication) - +Method in class org.jasypt.springsecurity3.authentication.rememberme.TokenBasedRememberMeServices +
  +
org.jasypt.spring.security3 - package org.jasypt.spring.security3
 
org.jasypt.springsecurity3.authentication.encoding - package org.jasypt.springsecurity3.authentication.encoding
 
org.jasypt.springsecurity3.authentication.rememberme - package org.jasypt.springsecurity3.authentication.rememberme
 
+
+

+P

+
+
PasswordEncoder - Class in org.jasypt.spring.security3
Deprecated. Renamed as org.jasypt.springsecurity3.authentication.encoding.PasswordEncoder. + Class will be removed from this package in 1.11.
PasswordEncoder() - +Constructor for class org.jasypt.spring.security3.PasswordEncoder +
Deprecated. Creates a new instance of PasswordEncoder +
PasswordEncoder - Class in org.jasypt.springsecurity3.authentication.encoding
+ This class implements the Spring Security 3.x + org.springframework.security.authentication.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption.
PasswordEncoder() - +Constructor for class org.jasypt.springsecurity3.authentication.encoding.PasswordEncoder +
Creates a new instance of PasswordEncoder +
PBEPasswordEncoder - Class in org.jasypt.spring.security3
Deprecated. Renamed as org.jasypt.springsecurity3.authentication.encoding.PBEPasswordEncoder. + Class will be removed from this package in 1.11.
PBEPasswordEncoder() - +Constructor for class org.jasypt.spring.security3.PBEPasswordEncoder +
Deprecated. Creates a new instance of PBEPasswordEncoder +
PBEPasswordEncoder - Class in org.jasypt.springsecurity3.authentication.encoding
+ This class implements the Spring Security 3.x + org.springframework.security.providers.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption.
PBEPasswordEncoder() - +Constructor for class org.jasypt.springsecurity3.authentication.encoding.PBEPasswordEncoder +
Creates a new instance of PBEPasswordEncoder +
processAutoLoginCookie(String[], HttpServletRequest, HttpServletResponse) - +Method in class org.jasypt.spring.security3.TokenBasedRememberMeServices +
Deprecated.   +
processAutoLoginCookie(String[], HttpServletRequest, HttpServletResponse) - +Method in class org.jasypt.springsecurity3.authentication.rememberme.TokenBasedRememberMeServices +
  +
+
+

+S

+
+
setDigester(StringDigester) - +Method in class org.jasypt.spring.security3.TokenBasedRememberMeServices +
Deprecated.   +
setDigester(StringDigester) - +Method in class org.jasypt.springsecurity3.authentication.rememberme.TokenBasedRememberMeServices +
  +
setPasswordEncryptor(PasswordEncryptor) - +Method in class org.jasypt.spring.security3.PasswordEncoder +
Deprecated. Sets a password encryptor to be used. +
setPasswordEncryptor(PasswordEncryptor) - +Method in class org.jasypt.springsecurity3.authentication.encoding.PasswordEncoder +
Sets a password encryptor to be used. +
setPbeStringEncryptor(PBEStringEncryptor) - +Method in class org.jasypt.spring.security3.PBEPasswordEncoder +
Deprecated. Sets a string digester to be used. +
setPbeStringEncryptor(PBEStringEncryptor) - +Method in class org.jasypt.springsecurity3.authentication.encoding.PBEPasswordEncoder +
Sets a string digester to be used. +
setStringDigester(StringDigester) - +Method in class org.jasypt.spring.security3.PasswordEncoder +
Deprecated. Sets a string digester to be used. +
setStringDigester(StringDigester) - +Method in class org.jasypt.springsecurity3.authentication.encoding.PasswordEncoder +
Sets a string digester to be used. +
setTextEncryptor(TextEncryptor) - +Method in class org.jasypt.spring.security3.PBEPasswordEncoder +
Deprecated. Sets a text encryptor to be used. +
setTextEncryptor(TextEncryptor) - +Method in class org.jasypt.springsecurity3.authentication.encoding.PBEPasswordEncoder +
Sets a text encryptor to be used. +
+
+

+T

+
+
TokenBasedRememberMeServices - Class in org.jasypt.spring.security3
Deprecated. Renamed as org.jasypt.springsecurity3.authentication.rememberme.TokenBasedRememberMeServices. + Class will be removed from this package in 1.11.
TokenBasedRememberMeServices() - +Constructor for class org.jasypt.spring.security3.TokenBasedRememberMeServices +
Deprecated.   +
TokenBasedRememberMeServices - Class in org.jasypt.springsecurity3.authentication.rememberme
+ Implementation of org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices + which provides a "remember-me" cookie arranged in the same way as + org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices, but using a + Jasypt StringDigester passed as a parameter for performing the digest of the signature in the cookie + (username + ":" + expiry time + ":" + password + ":" + key).
TokenBasedRememberMeServices() - +Constructor for class org.jasypt.springsecurity3.authentication.rememberme.TokenBasedRememberMeServices +
  +
+
+E I O P S T + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/index.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/index.html new file mode 100644 index 00000000..973c8b47 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/index.html @@ -0,0 +1,40 @@ + + + + + + + +JASYPT: Java Simplified Encryption 1.9.2 API + + + + + + + + + + + +<H2> +Frame Alert</H2> + +<P> +This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. +<BR> +Link to<A HREF="overview-summary.html">Non-frame version.</A> + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/PBEPasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/PBEPasswordEncoder.html new file mode 100644 index 00000000..141f7464 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/PBEPasswordEncoder.html @@ -0,0 +1,471 @@ + + + + + + + +PBEPasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring.security3 +
+Class PBEPasswordEncoder

+
+Object
+  extended by org.jasypt.spring.security3.PBEPasswordEncoder
+
+
+
All Implemented Interfaces:
org.springframework.security.authentication.encoding.PasswordEncoder
+
+
+Deprecated. Renamed as org.jasypt.springsecurity3.authentication.encoding.PBEPasswordEncoder. + Class will be removed from this package in 1.11. +

+

+
public final class PBEPasswordEncoder
extends Object
implements org.springframework.security.authentication.encoding.PasswordEncoder
+ + +

+

+ This class implements the Spring Security 3.x + org.springframework.security.providers.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption. +

+

+ Important: This class allows bi-directional password-based encryption + of user passwords + in Spring Security using Jasypt. But please note that passwords should not be + encrypted in a bi-directional way, but instead as uni-directional + digests (hashes). Encrypting passwords in a way they can be decrypted + can be a severe security issue, and should only be considered in legacy + or complex inter-application integration scenarios. +

+

+ Objects of this class will internally hold either an object of type + org.jasypt.util.text.TextEncryptor or an object of type + org.jasypt.encryption.pbe.PBEStringEncryptor (only one of them), + which should be set by respectively calling + setTextEncryptor(TextEncryptor) or + setPbeStringEncryptor(PBEStringEncryptor) + after creation. If neither a TextEncryptor nor + a PBEStringEncryptor are set, a new + org.jasypt.util.text.BasicTextEncryptor object is + created and internally used. +

+

+ Important: This implementation ignores any salt provided through + the interface methods, as the internal Jasypt + TextEncryptor or PBEStringEncryptor objects normally use a + random one. This means that salt can be safely passed as + null. +

+

+ Usage with a TextEncryptor +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the TextEncryptor in several places,     --> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptTextEncryptor" class="org.jasypt.util.text.StrongTextEncryptor" >
+    <property name="password" value="myPassword" />
+  </bean>
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the TextEncryptor instance so that it can be used from       -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PBEPasswordEncoder">
+    <property name="textEncryptor">
+      <ref bean="jasyptTextEncryptor" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ Usage with a PBEStringEncryptor +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the PBEStringEncryptor in several places,--> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptPBEStringEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor" >
+    <property name="algorithm" value="PBEWithMD5AndTripleDES" />
+    <property name="password" value="myPassword" />
+  </bean>
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the PBEStringEncryptor instance so that it can be used from  -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PBEPasswordEncoder">
+    <property name="pbeStringEncryptor">
+      <ref bean="jasyptPBEStringEncryptor" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ This class is thread-safe +

+

+ +

+

+
Since:
+
1.6
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
PBEPasswordEncoder() + +
+          Deprecated. Creates a new instance of PBEPasswordEncoder
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringencodePassword(String rawPass, + Object salt) + +
+          Deprecated. Encodes a password.
+ booleanisPasswordValid(String encPass, + String rawPass, + Object salt) + +
+          Deprecated. Checks a password's validity.
+ voidsetPbeStringEncryptor(org.jasypt.encryption.pbe.PBEStringEncryptor pbeStringEncryptor) + +
+          Deprecated. Sets a string digester to be used.
+ voidsetTextEncryptor(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+          Deprecated. Sets a text encryptor to be used.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+PBEPasswordEncoder

+
+public PBEPasswordEncoder()
+
+
Deprecated. 
Creates a new instance of PBEPasswordEncoder +

+

+ + + + + + + + +
+Method Detail
+ +

+setTextEncryptor

+
+public void setTextEncryptor(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+
Deprecated. 
Sets a text encryptor to be used. Only one of + setTextEncryptor or setPBEStringEncryptor should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
textEncryptor - the text encryptor instance to be used.
+
+
+
+ +

+setPbeStringEncryptor

+
+public void setPbeStringEncryptor(org.jasypt.encryption.pbe.PBEStringEncryptor pbeStringEncryptor)
+
+
Deprecated. 
Sets a string digester to be used. Only one of + setTextEncryptor or setPBEStringEncryptor should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
pbeStringEncryptor - the PBE string encryptor instance to be used.
+
+
+
+ +

+encodePassword

+
+public String encodePassword(String rawPass,
+                             Object salt)
+
+
Deprecated. 
Encodes a password. This implementation completely ignores salt, + as jasypt's TextEncryptor and PBEStringEncryptor + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
encodePassword in interface org.springframework.security.authentication.encoding.PasswordEncoder
+
+
+
Parameters:
rawPass - The password to be encoded.
salt - The salt, which will be ignored. It can be null.
+
+
+
+ +

+isPasswordValid

+
+public boolean isPasswordValid(String encPass,
+                               String rawPass,
+                               Object salt)
+
+
Deprecated. 
Checks a password's validity. This implementation completely ignores + salt, as jasypt's TextEncryptor and PBEStringEncryptor + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
isPasswordValid in interface org.springframework.security.authentication.encoding.PasswordEncoder
+
+
+
Parameters:
encPass - The encrypted password against which to check.
rawPass - The password to be checked.
salt - The salt, which will be ignored. It can be null.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/PasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/PasswordEncoder.html new file mode 100644 index 00000000..a7d8bd43 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/PasswordEncoder.html @@ -0,0 +1,460 @@ + + + + + + + +PasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring.security3 +
+Class PasswordEncoder

+
+Object
+  extended by org.jasypt.spring.security3.PasswordEncoder
+
+
+
All Implemented Interfaces:
org.springframework.security.authentication.encoding.PasswordEncoder
+
+
+Deprecated. Renamed as org.jasypt.springsecurity3.authentication.encoding.PasswordEncoder. + Class will be removed from this package in 1.11. +

+

+
public final class PasswordEncoder
extends Object
implements org.springframework.security.authentication.encoding.PasswordEncoder
+ + +

+

+ This class implements the Spring Security 3.x + org.springframework.security.authentication.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption. +

+

+ Objects of this class will internally hold either an object of type + org.jasypt.util.password.PasswordEncryptor or an object of type + org.jasypt.digest.StringDigester (only one of them), + which should be set by respectively calling + setPasswordEncryptor(PasswordEncryptor) or + setStringDigester(StringDigester) + after creation. If neither a PasswordEncryptor nor + a StringDigester are set, a new + org.jasypt.util.password.BasicPasswordEncryptor object is + created and internally used. +

+

+ Important: This implementation ignores any salt provided through + the interface methods, as the internal Jasypt + PasswordEncryptor or StringDigester objects normally use a + random one. This means that salt can be safely passed as + null. +

+

+ Usage with a PasswordEncryptor +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the PasswordEncryptor in several places, --> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptPasswordEncryptor" class="org.jasypt.util.password.StrongPasswordEncryptor" />
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the PasswordEncryptor instance so that it can be used from   -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PasswordEncoder">
+    <property name="passwordEncryptor">
+      <ref bean="jasyptPasswordEncryptor" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ Usage with a StringDigester +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the StringDigester in several places,    --> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptStringDigester" class="org.jasypt.digest.StandardStringDigester" >
+    <property name="algorithm" value="SHA-1" />
+    <property name="iterations" value="100000" />
+  </bean>
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the StringDigester instance so that it can be used from      -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PasswordEncoder">
+    <property name="stringDigester">
+      <ref bean="jasyptStringDigester" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ This class is thread-safe +

+

+ +

+

+
Since:
+
1.6
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
PasswordEncoder() + +
+          Deprecated. Creates a new instance of PasswordEncoder
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringencodePassword(String rawPass, + Object salt) + +
+          Deprecated. Encodes a password.
+ booleanisPasswordValid(String encPass, + String rawPass, + Object salt) + +
+          Deprecated. Checks a password's validity.
+ voidsetPasswordEncryptor(org.jasypt.util.password.PasswordEncryptor passwordEncryptor) + +
+          Deprecated. Sets a password encryptor to be used.
+ voidsetStringDigester(org.jasypt.digest.StringDigester stringDigester) + +
+          Deprecated. Sets a string digester to be used.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+PasswordEncoder

+
+public PasswordEncoder()
+
+
Deprecated. 
Creates a new instance of PasswordEncoder +

+

+ + + + + + + + +
+Method Detail
+ +

+setPasswordEncryptor

+
+public void setPasswordEncryptor(org.jasypt.util.password.PasswordEncryptor passwordEncryptor)
+
+
Deprecated. 
Sets a password encryptor to be used. Only one of + setPasswordEncryptor or setStringDigester should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
passwordEncryptor - the password encryptor instance to be used.
+
+
+
+ +

+setStringDigester

+
+public void setStringDigester(org.jasypt.digest.StringDigester stringDigester)
+
+
Deprecated. 
Sets a string digester to be used. Only one of + setPasswordEncryptor or setStringDigester should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
stringDigester - the string digester instance to be used.
+
+
+
+ +

+encodePassword

+
+public String encodePassword(String rawPass,
+                             Object salt)
+
+
Deprecated. 
Encodes a password. This implementation completely ignores salt, + as jasypt's PasswordEncryptor and StringDigester + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
encodePassword in interface org.springframework.security.authentication.encoding.PasswordEncoder
+
+
+
Parameters:
rawPass - The password to be encoded.
salt - The salt, which will be ignored. It can be null.
+
+
+
+ +

+isPasswordValid

+
+public boolean isPasswordValid(String encPass,
+                               String rawPass,
+                               Object salt)
+
+
Deprecated. 
Checks a password's validity. This implementation completely ignores + salt, as jasypt's PasswordEncryptor and StringDigester + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
isPasswordValid in interface org.springframework.security.authentication.encoding.PasswordEncoder
+
+
+
Parameters:
encPass - The encrypted password (digest) against which to check.
rawPass - The password to be checked.
salt - The salt, which will be ignored. It can be null.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/TokenBasedRememberMeServices.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/TokenBasedRememberMeServices.html new file mode 100644 index 00000000..7435b433 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/TokenBasedRememberMeServices.html @@ -0,0 +1,358 @@ + + + + + + + +TokenBasedRememberMeServices (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.spring.security3 +
+Class TokenBasedRememberMeServices

+
+Object
+  extended by org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices
+      extended by org.jasypt.spring.security3.TokenBasedRememberMeServices
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.InitializingBean, org.springframework.security.web.authentication.logout.LogoutHandler, org.springframework.security.web.authentication.RememberMeServices
+
+
+Deprecated. Renamed as org.jasypt.springsecurity3.authentication.rememberme.TokenBasedRememberMeServices. + Class will be removed from this package in 1.11. +

+

+
public final class TokenBasedRememberMeServices
extends org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices
+ + +

+

+ Implementation of org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices + which provides a "remember-me" cookie arranged in the same way as + org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices, but using a + Jasypt StringDigester passed as a parameter for performing the digest of the signature in the cookie + (username + ":" + expiry time + ":" + password + ":" + key). +

+

+ This class is thread-safe +

+

+ +

+

+
Since:
+
1.7
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices
DEFAULT_PARAMETER, logger, messages, SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY, TWO_WEEKS_S
+  + + + + + + + + + + +
+Constructor Summary
TokenBasedRememberMeServices() + +
+          Deprecated.  
+  + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidonLoginSuccess(javax.servlet.http.HttpServletRequest request, + javax.servlet.http.HttpServletResponse response, + org.springframework.security.core.Authentication successfulAuthentication) + +
+          Deprecated.  
+protected  org.springframework.security.core.userdetails.UserDetailsprocessAutoLoginCookie(String[] cookieTokens, + javax.servlet.http.HttpServletRequest request, + javax.servlet.http.HttpServletResponse response) + +
+          Deprecated.  
+ voidsetDigester(org.jasypt.digest.StringDigester digester) + +
+          Deprecated.  
+ + + + + + + +
Methods inherited from class org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices
afterPropertiesSet, autoLogin, cancelCookie, createSuccessfulAuthentication, decodeCookie, encodeCookie, extractRememberMeCookie, getAuthenticationDetailsSource, getCookieName, getKey, getParameter, getTokenValiditySeconds, getUserDetailsService, loginFail, loginSuccess, logout, onLoginFail, rememberMeRequested, setAlwaysRemember, setAuthenticationDetailsSource, setCookie, setCookieName, setKey, setParameter, setTokenValiditySeconds, setUserDetailsService, setUseSecureCookie
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+TokenBasedRememberMeServices

+
+public TokenBasedRememberMeServices()
+
+
Deprecated. 
+ + + + + + + + +
+Method Detail
+ +

+setDigester

+
+public void setDigester(org.jasypt.digest.StringDigester digester)
+
+
Deprecated. 
+
+
+
+
+ +

+processAutoLoginCookie

+
+protected org.springframework.security.core.userdetails.UserDetails processAutoLoginCookie(String[] cookieTokens,
+                                                                                           javax.servlet.http.HttpServletRequest request,
+                                                                                           javax.servlet.http.HttpServletResponse response)
+
+
Deprecated. 
+
Specified by:
processAutoLoginCookie in class org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices
+
+
+
+
+
+
+ +

+onLoginSuccess

+
+public void onLoginSuccess(javax.servlet.http.HttpServletRequest request,
+                           javax.servlet.http.HttpServletResponse response,
+                           org.springframework.security.core.Authentication successfulAuthentication)
+
+
Deprecated. 
+
Specified by:
onLoginSuccess in class org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/class-use/PBEPasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/class-use/PBEPasswordEncoder.html new file mode 100644 index 00000000..bc231816 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/class-use/PBEPasswordEncoder.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring.security3.PBEPasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring.security3.PBEPasswordEncoder

+
+No usage of org.jasypt.spring.security3.PBEPasswordEncoder +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/class-use/PasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/class-use/PasswordEncoder.html new file mode 100644 index 00000000..60e7f200 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/class-use/PasswordEncoder.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring.security3.PasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring.security3.PasswordEncoder

+
+No usage of org.jasypt.spring.security3.PasswordEncoder +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/class-use/TokenBasedRememberMeServices.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/class-use/TokenBasedRememberMeServices.html new file mode 100644 index 00000000..8966de60 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/class-use/TokenBasedRememberMeServices.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.spring.security3.TokenBasedRememberMeServices (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.spring.security3.TokenBasedRememberMeServices

+
+No usage of org.jasypt.spring.security3.TokenBasedRememberMeServices +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/package-frame.html new file mode 100644 index 00000000..ea35ba50 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/package-frame.html @@ -0,0 +1,37 @@ + + + + + + + +org.jasypt.spring.security3 (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.spring.security3 + + + + +
+Classes  + +
+PasswordEncoder +
+PBEPasswordEncoder +
+TokenBasedRememberMeServices
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/package-summary.html new file mode 100644 index 00000000..5ef512fc --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/package-summary.html @@ -0,0 +1,166 @@ + + + + + + + +org.jasypt.spring.security3 (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.spring.security3 +

+ + + + + + + + + + + + + + + + + +
+Class Summary
PasswordEncoderDeprecated. Renamed as org.jasypt.springsecurity3.authentication.encoding.PasswordEncoder.
PBEPasswordEncoderDeprecated. Renamed as org.jasypt.springsecurity3.authentication.encoding.PBEPasswordEncoder.
TokenBasedRememberMeServicesDeprecated. Renamed as org.jasypt.springsecurity3.authentication.rememberme.TokenBasedRememberMeServices.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/package-tree.html new file mode 100644 index 00000000..b87df2c1 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/package-tree.html @@ -0,0 +1,159 @@ + + + + + + + +org.jasypt.spring.security3 Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.spring.security3 +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices (implements org.springframework.beans.factory.InitializingBean, org.springframework.security.web.authentication.logout.LogoutHandler, org.springframework.security.web.authentication.RememberMeServices) + +
    • org.jasypt.spring.security3.PasswordEncoder (implements org.springframework.security.authentication.encoding.PasswordEncoder) +
    • org.jasypt.spring.security3.PBEPasswordEncoder (implements org.springframework.security.authentication.encoding.PasswordEncoder) +
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/package-use.html new file mode 100644 index 00000000..0fa2730a --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/spring/security3/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.spring.security3 (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.spring.security3

+
+No usage of org.jasypt.spring.security3 +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/PBEPasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/PBEPasswordEncoder.html new file mode 100644 index 00000000..ae36ff0a --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/PBEPasswordEncoder.html @@ -0,0 +1,468 @@ + + + + + + + +PBEPasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.springsecurity3.authentication.encoding +
+Class PBEPasswordEncoder

+
+Object
+  extended by org.jasypt.springsecurity3.authentication.encoding.PBEPasswordEncoder
+
+
+
All Implemented Interfaces:
org.springframework.security.authentication.encoding.PasswordEncoder
+
+
+
+
public final class PBEPasswordEncoder
extends Object
implements org.springframework.security.authentication.encoding.PasswordEncoder
+ + +

+

+ This class implements the Spring Security 3.x + org.springframework.security.providers.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption. +

+

+ Important: This class allows bi-directional password-based encryption + of user passwords + in Spring Security using Jasypt. But please note that passwords should not be + encrypted in a bi-directional way, but instead as uni-directional + digests (hashes). Encrypting passwords in a way they can be decrypted + can be a severe security issue, and should only be considered in legacy + or complex inter-application integration scenarios. +

+

+ Objects of this class will internally hold either an object of type + org.jasypt.util.text.TextEncryptor or an object of type + org.jasypt.encryption.pbe.PBEStringEncryptor (only one of them), + which should be set by respectively calling + setTextEncryptor(TextEncryptor) or + setPbeStringEncryptor(PBEStringEncryptor) + after creation. If neither a TextEncryptor nor + a PBEStringEncryptor are set, a new + org.jasypt.util.text.BasicTextEncryptor object is + created and internally used. +

+

+ Important: This implementation ignores any salt provided through + the interface methods, as the internal Jasypt + TextEncryptor or PBEStringEncryptor objects normally use a + random one. This means that salt can be safely passed as + null. +

+

+ Usage with a TextEncryptor +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the TextEncryptor in several places,     --> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptTextEncryptor" class="org.jasypt.util.text.StrongTextEncryptor" >
+    <property name="password" value="myPassword" />
+  </bean>
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the TextEncryptor instance so that it can be used from       -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PBEPasswordEncoder">
+    <property name="textEncryptor">
+      <ref bean="jasyptTextEncryptor" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ Usage with a PBEStringEncryptor +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the PBEStringEncryptor in several places,--> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptPBEStringEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor" >
+    <property name="algorithm" value="PBEWithMD5AndTripleDES" />
+    <property name="password" value="myPassword" />
+  </bean>
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the PBEStringEncryptor instance so that it can be used from  -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PBEPasswordEncoder">
+    <property name="pbeStringEncryptor">
+      <ref bean="jasyptPBEStringEncryptor" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ This class is thread-safe +

+

+ +

+

+
Since:
+
1.9.0 (existed as org.jasypt.spring.security3.PBEPasswordEncoder since 1.6)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
PBEPasswordEncoder() + +
+          Creates a new instance of PBEPasswordEncoder
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringencodePassword(String rawPass, + Object salt) + +
+          Encodes a password.
+ booleanisPasswordValid(String encPass, + String rawPass, + Object salt) + +
+          Checks a password's validity.
+ voidsetPbeStringEncryptor(org.jasypt.encryption.pbe.PBEStringEncryptor pbeStringEncryptor) + +
+          Sets a string digester to be used.
+ voidsetTextEncryptor(org.jasypt.util.text.TextEncryptor textEncryptor) + +
+          Sets a text encryptor to be used.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+PBEPasswordEncoder

+
+public PBEPasswordEncoder()
+
+
Creates a new instance of PBEPasswordEncoder +

+

+ + + + + + + + +
+Method Detail
+ +

+setTextEncryptor

+
+public void setTextEncryptor(org.jasypt.util.text.TextEncryptor textEncryptor)
+
+
Sets a text encryptor to be used. Only one of + setTextEncryptor or setPBEStringEncryptor should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
textEncryptor - the text encryptor instance to be used.
+
+
+
+ +

+setPbeStringEncryptor

+
+public void setPbeStringEncryptor(org.jasypt.encryption.pbe.PBEStringEncryptor pbeStringEncryptor)
+
+
Sets a string digester to be used. Only one of + setTextEncryptor or setPBEStringEncryptor should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
pbeStringEncryptor - the PBE string encryptor instance to be used.
+
+
+
+ +

+encodePassword

+
+public String encodePassword(String rawPass,
+                             Object salt)
+
+
Encodes a password. This implementation completely ignores salt, + as jasypt's TextEncryptor and PBEStringEncryptor + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
encodePassword in interface org.springframework.security.authentication.encoding.PasswordEncoder
+
+
+
Parameters:
rawPass - The password to be encoded.
salt - The salt, which will be ignored. It can be null.
+
+
+
+ +

+isPasswordValid

+
+public boolean isPasswordValid(String encPass,
+                               String rawPass,
+                               Object salt)
+
+
Checks a password's validity. This implementation completely ignores + salt, as jasypt's TextEncryptor and PBEStringEncryptor + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
isPasswordValid in interface org.springframework.security.authentication.encoding.PasswordEncoder
+
+
+
Parameters:
encPass - The encrypted password against which to check.
rawPass - The password to be checked.
salt - The salt, which will be ignored. It can be null.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/PasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/PasswordEncoder.html new file mode 100644 index 00000000..8fedb25b --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/PasswordEncoder.html @@ -0,0 +1,457 @@ + + + + + + + +PasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.springsecurity3.authentication.encoding +
+Class PasswordEncoder

+
+Object
+  extended by org.jasypt.springsecurity3.authentication.encoding.PasswordEncoder
+
+
+
All Implemented Interfaces:
org.springframework.security.authentication.encoding.PasswordEncoder
+
+
+
+
public final class PasswordEncoder
extends Object
implements org.springframework.security.authentication.encoding.PasswordEncoder
+ + +

+

+ This class implements the Spring Security 3.x + org.springframework.security.authentication.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption. +

+

+ Objects of this class will internally hold either an object of type + org.jasypt.util.password.PasswordEncryptor or an object of type + org.jasypt.digest.StringDigester (only one of them), + which should be set by respectively calling + setPasswordEncryptor(PasswordEncryptor) or + setStringDigester(StringDigester) + after creation. If neither a PasswordEncryptor nor + a StringDigester are set, a new + org.jasypt.util.password.BasicPasswordEncryptor object is + created and internally used. +

+

+ Important: This implementation ignores any salt provided through + the interface methods, as the internal Jasypt + PasswordEncryptor or StringDigester objects normally use a + random one. This means that salt can be safely passed as + null. +

+

+ Usage with a PasswordEncryptor +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the PasswordEncryptor in several places, --> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptPasswordEncryptor" class="org.jasypt.util.password.StrongPasswordEncryptor" />
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the PasswordEncryptor instance so that it can be used from   -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PasswordEncoder">
+    <property name="passwordEncryptor">
+      <ref bean="jasyptPasswordEncryptor" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ Usage with a StringDigester +

+

+ This class can be used like this from your Spring XML resource files: +

+
+  ...
+  <!-- Your application may use the StringDigester in several places,    --> 
+  <!-- like for example at new user sign-up.                             --> 
+  <bean id="jasyptStringDigester" class="org.jasypt.digest.StandardStringDigester" >
+    <property name="algorithm" value="SHA-1" />
+    <property name="iterations" value="100000" />
+  </bean>
+  ...
+  ...
+  <!-- This Spring Security-friendly PasswordEncoder implementation will -->
+  <!-- wrap the StringDigester instance so that it can be used from      -->
+  <!-- the security framework.                                           -->
+  <bean id="passwordEncoder" class="org.jasypt.spring.security2.PasswordEncoder">
+    <property name="stringDigester">
+      <ref bean="jasyptStringDigester" />
+    </property>
+  </bean>
+  ...
+  ...
+  <!-- Your DaoAuthenticationProvider will then use it like with any     -->
+  <!-- other implementation of the PasswordEncoder interface.            -->
+  <bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
+      <property name="userDetailsService" ref="userDetailsService"/>
+      <property name="passwordEncoder">
+        <ref bean="passwordEncoder" />
+      </property>
+  </bean>
+  ...
+ 
+

+ This class is thread-safe +

+

+ +

+

+
Since:
+
1.9.0 (existed as org.jasypt.spring.security3.PasswordEncoder since 1.6)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
PasswordEncoder() + +
+          Creates a new instance of PasswordEncoder
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringencodePassword(String rawPass, + Object salt) + +
+          Encodes a password.
+ booleanisPasswordValid(String encPass, + String rawPass, + Object salt) + +
+          Checks a password's validity.
+ voidsetPasswordEncryptor(org.jasypt.util.password.PasswordEncryptor passwordEncryptor) + +
+          Sets a password encryptor to be used.
+ voidsetStringDigester(org.jasypt.digest.StringDigester stringDigester) + +
+          Sets a string digester to be used.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+PasswordEncoder

+
+public PasswordEncoder()
+
+
Creates a new instance of PasswordEncoder +

+

+ + + + + + + + +
+Method Detail
+ +

+setPasswordEncryptor

+
+public void setPasswordEncryptor(org.jasypt.util.password.PasswordEncryptor passwordEncryptor)
+
+
Sets a password encryptor to be used. Only one of + setPasswordEncryptor or setStringDigester should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
passwordEncryptor - the password encryptor instance to be used.
+
+
+
+ +

+setStringDigester

+
+public void setStringDigester(org.jasypt.digest.StringDigester stringDigester)
+
+
Sets a string digester to be used. Only one of + setPasswordEncryptor or setStringDigester should be + called. If both are, the last call will define which method will be + used. +

+

+
+
+
+
Parameters:
stringDigester - the string digester instance to be used.
+
+
+
+ +

+encodePassword

+
+public String encodePassword(String rawPass,
+                             Object salt)
+
+
Encodes a password. This implementation completely ignores salt, + as jasypt's PasswordEncryptor and StringDigester + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
encodePassword in interface org.springframework.security.authentication.encoding.PasswordEncoder
+
+
+
Parameters:
rawPass - The password to be encoded.
salt - The salt, which will be ignored. It can be null.
+
+
+
+ +

+isPasswordValid

+
+public boolean isPasswordValid(String encPass,
+                               String rawPass,
+                               Object salt)
+
+
Checks a password's validity. This implementation completely ignores + salt, as jasypt's PasswordEncryptor and StringDigester + normally use a random one. Thus, it can be safely passed as null. +

+

+
Specified by:
isPasswordValid in interface org.springframework.security.authentication.encoding.PasswordEncoder
+
+
+
Parameters:
encPass - The encrypted password (digest) against which to check.
rawPass - The password to be checked.
salt - The salt, which will be ignored. It can be null.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/class-use/PBEPasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/class-use/PBEPasswordEncoder.html new file mode 100644 index 00000000..cd8cb66e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/class-use/PBEPasswordEncoder.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.springsecurity3.authentication.encoding.PBEPasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.springsecurity3.authentication.encoding.PBEPasswordEncoder

+
+No usage of org.jasypt.springsecurity3.authentication.encoding.PBEPasswordEncoder +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/class-use/PasswordEncoder.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/class-use/PasswordEncoder.html new file mode 100644 index 00000000..2c988779 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/class-use/PasswordEncoder.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.springsecurity3.authentication.encoding.PasswordEncoder (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.springsecurity3.authentication.encoding.PasswordEncoder

+
+No usage of org.jasypt.springsecurity3.authentication.encoding.PasswordEncoder +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/package-frame.html new file mode 100644 index 00000000..b2f8a3a9 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/package-frame.html @@ -0,0 +1,35 @@ + + + + + + + +org.jasypt.springsecurity3.authentication.encoding (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.springsecurity3.authentication.encoding + + + + +
+Classes  + +
+PasswordEncoder +
+PBEPasswordEncoder
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/package-summary.html new file mode 100644 index 00000000..06968dcd --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/package-summary.html @@ -0,0 +1,170 @@ + + + + + + + +org.jasypt.springsecurity3.authentication.encoding (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.springsecurity3.authentication.encoding +

+ + + + + + + + + + + + + +
+Class Summary
PasswordEncoder + This class implements the Spring Security 3.x + org.springframework.security.authentication.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption.
PBEPasswordEncoder + This class implements the Spring Security 3.x + org.springframework.security.providers.encoding.PasswordEncoder + interface, allowing Spring Security-enabled applications to use JASYPT + for password encryption.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/package-tree.html new file mode 100644 index 00000000..1ee56612 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/package-tree.html @@ -0,0 +1,156 @@ + + + + + + + +org.jasypt.springsecurity3.authentication.encoding Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.springsecurity3.authentication.encoding +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.jasypt.springsecurity3.authentication.encoding.PasswordEncoder (implements org.springframework.security.authentication.encoding.PasswordEncoder) +
    • org.jasypt.springsecurity3.authentication.encoding.PBEPasswordEncoder (implements org.springframework.security.authentication.encoding.PasswordEncoder) +
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/package-use.html new file mode 100644 index 00000000..0de03737 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/encoding/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.springsecurity3.authentication.encoding (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.springsecurity3.authentication.encoding

+
+No usage of org.jasypt.springsecurity3.authentication.encoding +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/TokenBasedRememberMeServices.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/TokenBasedRememberMeServices.html new file mode 100644 index 00000000..7fc9010c --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/TokenBasedRememberMeServices.html @@ -0,0 +1,355 @@ + + + + + + + +TokenBasedRememberMeServices (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.springsecurity3.authentication.rememberme +
+Class TokenBasedRememberMeServices

+
+Object
+  extended by org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices
+      extended by org.jasypt.springsecurity3.authentication.rememberme.TokenBasedRememberMeServices
+
+
+
All Implemented Interfaces:
org.springframework.beans.factory.InitializingBean, org.springframework.security.web.authentication.logout.LogoutHandler, org.springframework.security.web.authentication.RememberMeServices
+
+
+
+
public final class TokenBasedRememberMeServices
extends org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices
+ + +

+

+ Implementation of org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices + which provides a "remember-me" cookie arranged in the same way as + org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices, but using a + Jasypt StringDigester passed as a parameter for performing the digest of the signature in the cookie + (username + ":" + expiry time + ":" + password + ":" + key). +

+

+ This class is thread-safe +

+

+ +

+

+
Since:
+
1.9.0 (existed as org.jasypt.spring.security3.TokenBasedRememberMeServices since 1.7)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices
DEFAULT_PARAMETER, logger, messages, SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY, TWO_WEEKS_S
+  + + + + + + + + + + +
+Constructor Summary
TokenBasedRememberMeServices() + +
+           
+  + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidonLoginSuccess(javax.servlet.http.HttpServletRequest request, + javax.servlet.http.HttpServletResponse response, + org.springframework.security.core.Authentication successfulAuthentication) + +
+           
+protected  org.springframework.security.core.userdetails.UserDetailsprocessAutoLoginCookie(String[] cookieTokens, + javax.servlet.http.HttpServletRequest request, + javax.servlet.http.HttpServletResponse response) + +
+           
+ voidsetDigester(org.jasypt.digest.StringDigester digester) + +
+           
+ + + + + + + +
Methods inherited from class org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices
afterPropertiesSet, autoLogin, cancelCookie, createSuccessfulAuthentication, decodeCookie, encodeCookie, extractRememberMeCookie, getAuthenticationDetailsSource, getCookieName, getKey, getParameter, getTokenValiditySeconds, getUserDetailsService, loginFail, loginSuccess, logout, onLoginFail, rememberMeRequested, setAlwaysRemember, setAuthenticationDetailsSource, setCookie, setCookieName, setKey, setParameter, setTokenValiditySeconds, setUserDetailsService, setUseSecureCookie
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+TokenBasedRememberMeServices

+
+public TokenBasedRememberMeServices()
+
+
+ + + + + + + + +
+Method Detail
+ +

+setDigester

+
+public void setDigester(org.jasypt.digest.StringDigester digester)
+
+
+
+
+
+
+ +

+processAutoLoginCookie

+
+protected org.springframework.security.core.userdetails.UserDetails processAutoLoginCookie(String[] cookieTokens,
+                                                                                           javax.servlet.http.HttpServletRequest request,
+                                                                                           javax.servlet.http.HttpServletResponse response)
+
+
+
Specified by:
processAutoLoginCookie in class org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices
+
+
+
+
+
+
+ +

+onLoginSuccess

+
+public void onLoginSuccess(javax.servlet.http.HttpServletRequest request,
+                           javax.servlet.http.HttpServletResponse response,
+                           org.springframework.security.core.Authentication successfulAuthentication)
+
+
+
Specified by:
onLoginSuccess in class org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/class-use/TokenBasedRememberMeServices.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/class-use/TokenBasedRememberMeServices.html new file mode 100644 index 00000000..4872a1af --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/class-use/TokenBasedRememberMeServices.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.springsecurity3.authentication.rememberme.TokenBasedRememberMeServices (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.springsecurity3.authentication.rememberme.TokenBasedRememberMeServices

+
+No usage of org.jasypt.springsecurity3.authentication.rememberme.TokenBasedRememberMeServices +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/package-frame.html new file mode 100644 index 00000000..c5d6b8b1 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/package-frame.html @@ -0,0 +1,33 @@ + + + + + + + +org.jasypt.springsecurity3.authentication.rememberme (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.springsecurity3.authentication.rememberme + + + + +
+Classes  + +
+TokenBasedRememberMeServices
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/package-summary.html new file mode 100644 index 00000000..855f59cb --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/package-summary.html @@ -0,0 +1,163 @@ + + + + + + + +org.jasypt.springsecurity3.authentication.rememberme (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.springsecurity3.authentication.rememberme +

+ + + + + + + + + +
+Class Summary
TokenBasedRememberMeServices + Implementation of org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices + which provides a "remember-me" cookie arranged in the same way as + org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices, but using a + Jasypt StringDigester passed as a parameter for performing the digest of the signature in the cookie + (username + ":" + expiry time + ":" + password + ":" + key).
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/package-tree.html new file mode 100644 index 00000000..561764f9 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/package-tree.html @@ -0,0 +1,157 @@ + + + + + + + +org.jasypt.springsecurity3.authentication.rememberme Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.springsecurity3.authentication.rememberme +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices (implements org.springframework.beans.factory.InitializingBean, org.springframework.security.web.authentication.logout.LogoutHandler, org.springframework.security.web.authentication.RememberMeServices) + +
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/package-use.html new file mode 100644 index 00000000..90888e1b --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/org/jasypt/springsecurity3/authentication/rememberme/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.springsecurity3.authentication.rememberme (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.springsecurity3.authentication.rememberme

+
+No usage of org.jasypt.springsecurity3.authentication.rememberme +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/overview-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/overview-frame.html new file mode 100644 index 00000000..18256b0b --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/overview-frame.html @@ -0,0 +1,47 @@ + + + + + + + +Overview List (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + + + + +
+
+ + + + + +
All Classes +

+ +Packages +
+org.jasypt.spring.security3 +
+org.jasypt.springsecurity3.authentication.encoding +
+org.jasypt.springsecurity3.authentication.rememberme +
+

+ +

+  + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/overview-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/overview-summary.html new file mode 100644 index 00000000..6a3fdb6a --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/overview-summary.html @@ -0,0 +1,165 @@ + + + + + + + +Overview (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+JASYPT: Java Simplified Encryption 1.9.2 API +

+
+ + + + + + + + + + + + + + + + + +
+Packages
org.jasypt.spring.security3 
org.jasypt.springsecurity3.authentication.encoding 
org.jasypt.springsecurity3.authentication.rememberme 
+ +


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/overview-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/overview-tree.html new file mode 100644 index 00000000..a54bc16e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/overview-tree.html @@ -0,0 +1,160 @@ + + + + + + + +Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For All Packages

+
+
+
Package Hierarchies:
org.jasypt.spring.security3, org.jasypt.springsecurity3.authentication.encoding, org.jasypt.springsecurity3.authentication.rememberme
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices (implements org.springframework.beans.factory.InitializingBean, org.springframework.security.web.authentication.logout.LogoutHandler, org.springframework.security.web.authentication.RememberMeServices) + +
    • org.jasypt.spring.security3.PasswordEncoder (implements org.springframework.security.authentication.encoding.PasswordEncoder) +
    • org.jasypt.springsecurity3.authentication.encoding.PasswordEncoder (implements org.springframework.security.authentication.encoding.PasswordEncoder) +
    • org.jasypt.spring.security3.PBEPasswordEncoder (implements org.springframework.security.authentication.encoding.PasswordEncoder) +
    • org.jasypt.springsecurity3.authentication.encoding.PBEPasswordEncoder (implements org.springframework.security.authentication.encoding.PasswordEncoder) +
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/package-list b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/package-list new file mode 100644 index 00000000..cb34cda8 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/package-list @@ -0,0 +1,3 @@ +org.jasypt.spring.security3 +org.jasypt.springsecurity3.authentication.encoding +org.jasypt.springsecurity3.authentication.rememberme diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/resources/inherit.gif b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/resources/inherit.gif new file mode 100644 index 0000000000000000000000000000000000000000..c814867a13deb0ca7ea2156c6ca1d5a03372af7e GIT binary patch literal 57 zcmZ?wbhEHbIIT!9-C*e{wE9>Kx3D)-;0v)C; KYxQGgum%9JOA&7X literal 0 HcmV?d00001 diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/stylesheet.css b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/stylesheet.css new file mode 100644 index 00000000..6ea9e516 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-springsecurity3/stylesheet.css @@ -0,0 +1,29 @@ +/* Javadoc style sheet */ + +/* Define colors, fonts and other style attributes here to override the defaults */ + +/* Page background color */ +body { background-color: #FFFFFF; color:#000000 } + +/* Headings */ +h1 { font-size: 145% } + +/* Table colors */ +.TableHeadingColor { background: #CCCCFF; color:#000000 } /* Dark mauve */ +.TableSubHeadingColor { background: #EEEEFF; color:#000000 } /* Light mauve */ +.TableRowColor { background: #FFFFFF; color:#000000 } /* White */ + +/* Font used in left-hand frame lists */ +.FrameTitleFont { font-size: 100%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameHeadingFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameItemFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } + +/* Navigation bar fonts and colors */ +.NavBarCell1 { background-color:#EEEEFF; color:#000000} /* Light mauve */ +.NavBarCell1Rev { background-color:#00008B; color:#FFFFFF} /* Dark Blue */ +.NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;color:#000000;} +.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;color:#FFFFFF;} + +.NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} +.NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/allclasses-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/allclasses-frame.html new file mode 100644 index 00000000..e4370ccb --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/allclasses-frame.html @@ -0,0 +1,38 @@ + + + + + + + +All Classes (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +All Classes +
+ + + + + +
JasyptCrypt +
+JasyptCrypt +
+JasyptCryptFactory +
+JasyptCryptFactory +
+
+ + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/allclasses-noframe.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/allclasses-noframe.html new file mode 100644 index 00000000..47f7cf47 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/allclasses-noframe.html @@ -0,0 +1,38 @@ + + + + + + + +All Classes (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +All Classes +
+ + + + + +
JasyptCrypt +
+JasyptCrypt +
+JasyptCryptFactory +
+JasyptCryptFactory +
+
+ + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/constant-values.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/constant-values.html new file mode 100644 index 00000000..49025131 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/constant-values.html @@ -0,0 +1,147 @@ + + + + + + + +Constant Field Values (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Constant Field Values

+
+
+Contents
    +
+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/deprecated-list.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/deprecated-list.html new file mode 100644 index 00000000..c9afb266 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/deprecated-list.html @@ -0,0 +1,171 @@ + + + + + + + +Deprecated List (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Deprecated API

+
+
+Contents + + + + + + + + + + + + +
+Deprecated Classes
org.jasypt.wicket.JasyptCrypt +
+          Package renamed to org.jasypt.wicket13. This class + will be removed in 1.11. Use JasyptCrypt + instead. 
org.jasypt.wicket.JasyptCryptFactory +
+          Package renamed to org.jasypt.wicket13. This class + will be removed in 1.11. Use JasyptCrypt + instead. 
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/help-doc.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/help-doc.html new file mode 100644 index 00000000..a46fd886 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/help-doc.html @@ -0,0 +1,224 @@ + + + + + + + +API Help (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+How This API Document Is Organized

+
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.

+Overview

+
+ +

+The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

+

+Package

+
+ +

+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:

    +
  • Interfaces (italic)
  • Classes
  • Enums
  • Exceptions
  • Errors
  • Annotation Types
+
+

+Class/Interface

+
+ +

+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
  • Class inheritance diagram
  • Direct Subclasses
  • All Known Subinterfaces
  • All Known Implementing Classes
  • Class/interface declaration
  • Class/interface description +

    +

  • Nested Class Summary
  • Field Summary
  • Constructor Summary
  • Method Summary +

    +

  • Field Detail
  • Constructor Detail
  • Method Detail
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+ +

+Annotation Type

+
+ +

+Each annotation type has its own separate page with the following sections:

    +
  • Annotation Type declaration
  • Annotation Type description
  • Required Element Summary
  • Optional Element Summary
  • Element Detail
+
+ +

+Enum

+
+ +

+Each enum has its own separate page with the following sections:

    +
  • Enum declaration
  • Enum description
  • Enum Constant Summary
  • Enum Constant Detail
+
+

+Use

+
+Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.
+

+Tree (Class Hierarchy)

+
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.
    +
  • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
  • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
+
+

+Deprecated API

+
+The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+

+Index

+
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+

+Prev/Next

+These links take you to the next or previous class, interface, package, or related page.

+Frames/No Frames

+These links show and hide the HTML frames. All pages are available with or without frames. +

+

+Serialized Form

+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description. +

+

+Constant Field Values

+The Constant Field Values page lists the static final fields and their values. +

+ + +This help file applies to API documentation generated using the standard doclet. + +
+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/index-all.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/index-all.html new file mode 100644 index 00000000..ebf9aac7 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/index-all.html @@ -0,0 +1,230 @@ + + + + + + + +Index (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +D E J N O S
+

+D

+
+
decryptUrlSafe(String) - +Method in class org.jasypt.wicket.JasyptCrypt +
Deprecated.  + Decrypts a string using URL and filename safe Base64 decoding. +
decryptUrlSafe(String) - +Method in class org.jasypt.wicket13.JasyptCrypt +
+ Decrypts a string using URL and filename safe Base64 decoding. +
+
+

+E

+
+
encryptUrlSafe(String) - +Method in class org.jasypt.wicket.JasyptCrypt +
Deprecated.  + Encrypts a string using URL and filename safe Base64 encoding. +
encryptUrlSafe(String) - +Method in class org.jasypt.wicket13.JasyptCrypt +
+ Encrypts a string using URL and filename safe Base64 encoding. +
+
+

+J

+
+
JasyptCrypt - Class in org.jasypt.wicket
Deprecated. Package renamed to org.jasypt.wicket13. This class + will be removed in 1.11. Use JasyptCrypt + instead.
JasyptCrypt(PBEByteEncryptor) - +Constructor for class org.jasypt.wicket.JasyptCrypt +
Deprecated.  + Creates a new JasyptCrypt object, wrapping the passed + encryptor. +
JasyptCrypt - Class in org.jasypt.wicket13
+ Jasypt's implementation of ICrypt, based on the use of a + PBEByteEncryptor object for encryption and decryption operations.
JasyptCrypt(PBEByteEncryptor) - +Constructor for class org.jasypt.wicket13.JasyptCrypt +
+ Creates a new JasyptCrypt object, wrapping the passed + encryptor. +
JasyptCryptFactory - Class in org.jasypt.wicket
Deprecated. Package renamed to org.jasypt.wicket13. This class + will be removed in 1.11. Use JasyptCrypt + instead.
JasyptCryptFactory(PBEByteEncryptor) - +Constructor for class org.jasypt.wicket.JasyptCryptFactory +
Deprecated.  + Creates a new instance of JasyptCryptFactory. +
JasyptCryptFactory - Class in org.jasypt.wicket13
+ Implementation of the Apache Wicket ICryptFactory interface + which returns JasyptCrypt instances.
JasyptCryptFactory(PBEByteEncryptor) - +Constructor for class org.jasypt.wicket13.JasyptCryptFactory +
+ Creates a new instance of JasyptCryptFactory. +
+
+

+N

+
+
newCrypt() - +Method in class org.jasypt.wicket.JasyptCryptFactory +
Deprecated.  + Return a new encryptor object. +
newCrypt() - +Method in class org.jasypt.wicket13.JasyptCryptFactory +
+ Return a new encryptor object. +
+
+

+O

+
+
org.jasypt.wicket - package org.jasypt.wicket
 
org.jasypt.wicket13 - package org.jasypt.wicket13
 
+
+

+S

+
+
setKey(String) - +Method in class org.jasypt.wicket.JasyptCrypt +
Deprecated.  + Important: Using jasypt, it makes no sense to change the encryption + key once the encryptor has been initialized, and so this method is + implemented to throw UnsupportedOperationException always. +
setKey(String) - +Method in class org.jasypt.wicket13.JasyptCrypt +
+ Important: Using jasypt, it makes no sense to change the encryption + key once the encryptor has been initialized, and so this method is + implemented to throw UnsupportedOperationException always. +
+
+D E J N O S + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/index.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/index.html new file mode 100644 index 00000000..d94523b6 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/index.html @@ -0,0 +1,40 @@ + + + + + + + +JASYPT: Java Simplified Encryption 1.9.2 API + + + + + + + + + + + +<H2> +Frame Alert</H2> + +<P> +This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. +<BR> +Link to<A HREF="overview-summary.html">Non-frame version.</A> + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/JasyptCrypt.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/JasyptCrypt.html new file mode 100644 index 00000000..ff347ffe --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/JasyptCrypt.html @@ -0,0 +1,353 @@ + + + + + + + +JasyptCrypt (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.wicket +
+Class JasyptCrypt

+
+Object
+  extended by org.jasypt.wicket.JasyptCrypt
+
+
+
All Implemented Interfaces:
org.apache.wicket.util.crypt.ICrypt
+
+
+Deprecated. Package renamed to org.jasypt.wicket13. This class + will be removed in 1.11. Use JasyptCrypt + instead. +

+

+
public final class JasyptCrypt
extends Object
implements org.apache.wicket.util.crypt.ICrypt
+ + +

+

+ Jasypt's implementation of ICrypt, based on the use of a + PBEByteEncryptor object for encryption and decryption operations. +

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.4
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
JasyptCrypt(org.jasypt.encryption.pbe.PBEByteEncryptor encryptor) + +
+          Deprecated.  + Creates a new JasyptCrypt object, wrapping the passed + encryptor.
+  + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringdecryptUrlSafe(String text) + +
+          Deprecated.  + Decrypts a string using URL and filename safe Base64 decoding.
+ StringencryptUrlSafe(String plainText) + +
+          Deprecated.  + Encrypts a string using URL and filename safe Base64 encoding.
+ voidsetKey(String key) + +
+          Deprecated.  + Important: Using jasypt, it makes no sense to change the encryption + key once the encryptor has been initialized, and so this method is + implemented to throw UnsupportedOperationException always.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JasyptCrypt

+
+public JasyptCrypt(org.jasypt.encryption.pbe.PBEByteEncryptor encryptor)
+
+
Deprecated. 

+ Creates a new JasyptCrypt object, wrapping the passed + encryptor. +

+

+

+
Parameters:
encryptor - the PBEByteEncryptor to be used internally.
+
+ + + + + + + + +
+Method Detail
+ +

+decryptUrlSafe

+
+public String decryptUrlSafe(String text)
+
+
Deprecated. 

+ Decrypts a string using URL and filename safe Base64 decoding. +

+

+

+
Specified by:
decryptUrlSafe in interface org.apache.wicket.util.crypt.ICrypt
+
+
+
Parameters:
text - the text to be decrypted. +
Returns:
the decrypted string.
+
+
+
+ +

+encryptUrlSafe

+
+public String encryptUrlSafe(String plainText)
+
+
Deprecated. 

+ Encrypts a string using URL and filename safe Base64 encoding. +

+

+

+
Specified by:
encryptUrlSafe in interface org.apache.wicket.util.crypt.ICrypt
+
+
+
Parameters:
plainText - the text to be encrypted. +
Returns:
encrypted string.
+
+
+
+ +

+setKey

+
+public void setKey(String key)
+
+
Deprecated. 

+ Important: Using jasypt, it makes no sense to change the encryption + key once the encryptor has been initialized, and so this method is + implemented to throw UnsupportedOperationException always. +

+

+

+
Specified by:
setKey in interface org.apache.wicket.util.crypt.ICrypt
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/JasyptCryptFactory.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/JasyptCryptFactory.html new file mode 100644 index 00000000..7b15a0c2 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/JasyptCryptFactory.html @@ -0,0 +1,310 @@ + + + + + + + +JasyptCryptFactory (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.wicket +
+Class JasyptCryptFactory

+
+Object
+  extended by org.jasypt.wicket.JasyptCryptFactory
+
+
+
All Implemented Interfaces:
org.apache.wicket.util.crypt.ICryptFactory
+
+
+Deprecated. Package renamed to org.jasypt.wicket13. This class + will be removed in 1.11. Use JasyptCrypt + instead. +

+

+
public final class JasyptCryptFactory
extends Object
implements org.apache.wicket.util.crypt.ICryptFactory
+ + +

+

+ Implementation of the Apache Wicket ICryptFactory interface + which returns JasyptCrypt instances. +

+

+ Requires a PBEByteEncryptor as a constructor argument, which can + be created or retrieved from any part of the jasypt encryption configuration + infrastructure. +

+

+ +

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.4
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
JasyptCryptFactory(org.jasypt.encryption.pbe.PBEByteEncryptor encryptor) + +
+          Deprecated.  + Creates a new instance of JasyptCryptFactory.
+  + + + + + + + + + + + +
+Method Summary
+ org.apache.wicket.util.crypt.ICryptnewCrypt() + +
+          Deprecated.  + Return a new encryptor object.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JasyptCryptFactory

+
+public JasyptCryptFactory(org.jasypt.encryption.pbe.PBEByteEncryptor encryptor)
+
+
Deprecated. 

+ Creates a new instance of JasyptCryptFactory. +

+

+ This factory uses an instance of PBEByteEncryptor instead of + a PBEStringEncryptor (as could be expected) because Wicket + requires a specific type of String encoding (URL and file safe + BASE64), which is managed by a wicket internal class, and which + expectes byte[] input. +

+

+

+
Parameters:
encryptor - the PBEByteEncryptor to be used.
+
+ + + + + + + + +
+Method Detail
+ +

+newCrypt

+
+public org.apache.wicket.util.crypt.ICrypt newCrypt()
+
+
Deprecated. 

+ Return a new encryptor object. +

+

+ This method returns always the same JasyptCrypt object, instead + of creating a new one. +

+

+

+
Specified by:
newCrypt in interface org.apache.wicket.util.crypt.ICryptFactory
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/class-use/JasyptCrypt.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/class-use/JasyptCrypt.html new file mode 100644 index 00000000..4d549dde --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/class-use/JasyptCrypt.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.wicket.JasyptCrypt (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.wicket.JasyptCrypt

+
+No usage of org.jasypt.wicket.JasyptCrypt +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/class-use/JasyptCryptFactory.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/class-use/JasyptCryptFactory.html new file mode 100644 index 00000000..fc7349f0 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/class-use/JasyptCryptFactory.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.wicket.JasyptCryptFactory (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.wicket.JasyptCryptFactory

+
+No usage of org.jasypt.wicket.JasyptCryptFactory +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/package-frame.html new file mode 100644 index 00000000..dd5cb515 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/package-frame.html @@ -0,0 +1,35 @@ + + + + + + + +org.jasypt.wicket (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.wicket + + + + +
+Classes  + +
+JasyptCrypt +
+JasyptCryptFactory
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/package-summary.html new file mode 100644 index 00000000..a9c36a9e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/package-summary.html @@ -0,0 +1,162 @@ + + + + + + + +org.jasypt.wicket (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.wicket +

+ + + + + + + + + + + + + +
+Class Summary
JasyptCryptDeprecated. Package renamed to org.jasypt.wicket13.
JasyptCryptFactoryDeprecated. Package renamed to org.jasypt.wicket13.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/package-tree.html new file mode 100644 index 00000000..a883ea83 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/package-tree.html @@ -0,0 +1,156 @@ + + + + + + + +org.jasypt.wicket Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.wicket +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.jasypt.wicket.JasyptCrypt (implements org.apache.wicket.util.crypt.ICrypt) +
    • org.jasypt.wicket.JasyptCryptFactory (implements org.apache.wicket.util.crypt.ICryptFactory) +
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/package-use.html new file mode 100644 index 00000000..67a615db --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.wicket (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.wicket

+
+No usage of org.jasypt.wicket +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/JasyptCrypt.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/JasyptCrypt.html new file mode 100644 index 00000000..0b14996d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/JasyptCrypt.html @@ -0,0 +1,349 @@ + + + + + + + +JasyptCrypt (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.wicket13 +
+Class JasyptCrypt

+
+Object
+  extended by org.jasypt.wicket13.JasyptCrypt
+
+
+
All Implemented Interfaces:
org.apache.wicket.util.crypt.ICrypt
+
+
+
+
public final class JasyptCrypt
extends Object
implements org.apache.wicket.util.crypt.ICrypt
+ + +

+

+ Jasypt's implementation of ICrypt, based on the use of a + PBEByteEncryptor object for encryption and decryption operations. +

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
JasyptCrypt(org.jasypt.encryption.pbe.PBEByteEncryptor encryptor) + +
+           + Creates a new JasyptCrypt object, wrapping the passed + encryptor.
+  + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringdecryptUrlSafe(String text) + +
+           + Decrypts a string using URL and filename safe Base64 decoding.
+ StringencryptUrlSafe(String plainText) + +
+           + Encrypts a string using URL and filename safe Base64 encoding.
+ voidsetKey(String key) + +
+           + Important: Using jasypt, it makes no sense to change the encryption + key once the encryptor has been initialized, and so this method is + implemented to throw UnsupportedOperationException always.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JasyptCrypt

+
+public JasyptCrypt(org.jasypt.encryption.pbe.PBEByteEncryptor encryptor)
+
+

+ Creates a new JasyptCrypt object, wrapping the passed + encryptor. +

+

+

+
Parameters:
encryptor - the PBEByteEncryptor to be used internally.
+
+ + + + + + + + +
+Method Detail
+ +

+decryptUrlSafe

+
+public String decryptUrlSafe(String text)
+
+

+ Decrypts a string using URL and filename safe Base64 decoding. +

+

+

+
Specified by:
decryptUrlSafe in interface org.apache.wicket.util.crypt.ICrypt
+
+
+
Parameters:
text - the text to be decrypted. +
Returns:
the decrypted string.
+
+
+
+ +

+encryptUrlSafe

+
+public String encryptUrlSafe(String plainText)
+
+

+ Encrypts a string using URL and filename safe Base64 encoding. +

+

+

+
Specified by:
encryptUrlSafe in interface org.apache.wicket.util.crypt.ICrypt
+
+
+
Parameters:
plainText - the text to be encrypted. +
Returns:
encrypted string.
+
+
+
+ +

+setKey

+
+public void setKey(String key)
+
+

+ Important: Using jasypt, it makes no sense to change the encryption + key once the encryptor has been initialized, and so this method is + implemented to throw UnsupportedOperationException always. +

+

+

+
Specified by:
setKey in interface org.apache.wicket.util.crypt.ICrypt
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/JasyptCryptFactory.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/JasyptCryptFactory.html new file mode 100644 index 00000000..81a7ea26 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/JasyptCryptFactory.html @@ -0,0 +1,306 @@ + + + + + + + +JasyptCryptFactory (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.wicket13 +
+Class JasyptCryptFactory

+
+Object
+  extended by org.jasypt.wicket13.JasyptCryptFactory
+
+
+
All Implemented Interfaces:
org.apache.wicket.util.crypt.ICryptFactory
+
+
+
+
public final class JasyptCryptFactory
extends Object
implements org.apache.wicket.util.crypt.ICryptFactory
+ + +

+

+ Implementation of the Apache Wicket ICryptFactory interface + which returns JasyptCrypt instances. +

+

+ Requires a PBEByteEncryptor as a constructor argument, which can + be created or retrieved from any part of the jasypt encryption configuration + infrastructure. +

+

+ +

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
JasyptCryptFactory(org.jasypt.encryption.pbe.PBEByteEncryptor encryptor) + +
+           + Creates a new instance of JasyptCryptFactory.
+  + + + + + + + + + + + +
+Method Summary
+ org.apache.wicket.util.crypt.ICryptnewCrypt() + +
+           + Return a new encryptor object.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JasyptCryptFactory

+
+public JasyptCryptFactory(org.jasypt.encryption.pbe.PBEByteEncryptor encryptor)
+
+

+ Creates a new instance of JasyptCryptFactory. +

+

+ This factory uses an instance of PBEByteEncryptor instead of + a PBEStringEncryptor (as could be expected) because Wicket + requires a specific type of String encoding (URL and file safe + BASE64), which is managed by a wicket internal class, and which + expectes byte[] input. +

+

+

+
Parameters:
encryptor - the PBEByteEncryptor to be used.
+
+ + + + + + + + +
+Method Detail
+ +

+newCrypt

+
+public org.apache.wicket.util.crypt.ICrypt newCrypt()
+
+

+ Return a new encryptor object. +

+

+ This method returns always the same JasyptCrypt object, instead + of creating a new one. +

+

+

+
Specified by:
newCrypt in interface org.apache.wicket.util.crypt.ICryptFactory
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/class-use/JasyptCrypt.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/class-use/JasyptCrypt.html new file mode 100644 index 00000000..d85b8dda --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/class-use/JasyptCrypt.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.wicket13.JasyptCrypt (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.wicket13.JasyptCrypt

+
+No usage of org.jasypt.wicket13.JasyptCrypt +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/class-use/JasyptCryptFactory.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/class-use/JasyptCryptFactory.html new file mode 100644 index 00000000..d2db8f59 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/class-use/JasyptCryptFactory.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.wicket13.JasyptCryptFactory (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.wicket13.JasyptCryptFactory

+
+No usage of org.jasypt.wicket13.JasyptCryptFactory +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/package-frame.html new file mode 100644 index 00000000..762cfbba --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/package-frame.html @@ -0,0 +1,35 @@ + + + + + + + +org.jasypt.wicket13 (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.wicket13 + + + + +
+Classes  + +
+JasyptCrypt +
+JasyptCryptFactory
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/package-summary.html new file mode 100644 index 00000000..ff341265 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/package-summary.html @@ -0,0 +1,166 @@ + + + + + + + +org.jasypt.wicket13 (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.wicket13 +

+ + + + + + + + + + + + + +
+Class Summary
JasyptCrypt + Jasypt's implementation of ICrypt, based on the use of a + PBEByteEncryptor object for encryption and decryption operations.
JasyptCryptFactory + Implementation of the Apache Wicket ICryptFactory interface + which returns JasyptCrypt instances.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/package-tree.html new file mode 100644 index 00000000..be54f0c1 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/package-tree.html @@ -0,0 +1,156 @@ + + + + + + + +org.jasypt.wicket13 Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.wicket13 +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.jasypt.wicket13.JasyptCrypt (implements org.apache.wicket.util.crypt.ICrypt) +
    • org.jasypt.wicket13.JasyptCryptFactory (implements org.apache.wicket.util.crypt.ICryptFactory) +
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/package-use.html new file mode 100644 index 00000000..7f6384a3 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/org/jasypt/wicket13/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.wicket13 (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.wicket13

+
+No usage of org.jasypt.wicket13 +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/overview-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/overview-frame.html new file mode 100644 index 00000000..7e7bef7d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/overview-frame.html @@ -0,0 +1,45 @@ + + + + + + + +Overview List (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + + + + +
+
+ + + + + +
All Classes +

+ +Packages +
+org.jasypt.wicket +
+org.jasypt.wicket13 +
+

+ +

+  + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/overview-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/overview-summary.html new file mode 100644 index 00000000..af92103e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/overview-summary.html @@ -0,0 +1,161 @@ + + + + + + + +Overview (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+JASYPT: Java Simplified Encryption 1.9.2 API +

+
+ + + + + + + + + + + + + +
+Packages
org.jasypt.wicket 
org.jasypt.wicket13 
+ +


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/overview-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/overview-tree.html new file mode 100644 index 00000000..93d9e365 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/overview-tree.html @@ -0,0 +1,157 @@ + + + + + + + +Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For All Packages

+
+
+
Package Hierarchies:
org.jasypt.wicket, org.jasypt.wicket13
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.jasypt.wicket13.JasyptCrypt (implements org.apache.wicket.util.crypt.ICrypt) +
    • org.jasypt.wicket.JasyptCrypt (implements org.apache.wicket.util.crypt.ICrypt) +
    • org.jasypt.wicket13.JasyptCryptFactory (implements org.apache.wicket.util.crypt.ICryptFactory) +
    • org.jasypt.wicket.JasyptCryptFactory (implements org.apache.wicket.util.crypt.ICryptFactory) +
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/package-list b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/package-list new file mode 100644 index 00000000..5bd59b57 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/package-list @@ -0,0 +1,2 @@ +org.jasypt.wicket +org.jasypt.wicket13 diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/resources/inherit.gif b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/resources/inherit.gif new file mode 100644 index 0000000000000000000000000000000000000000..c814867a13deb0ca7ea2156c6ca1d5a03372af7e GIT binary patch literal 57 zcmZ?wbhEHbIIT!9-C*e{wE9>Kx3D)-;0v)C; KYxQGgum%9JOA&7X literal 0 HcmV?d00001 diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/stylesheet.css b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/stylesheet.css new file mode 100644 index 00000000..6ea9e516 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket13/stylesheet.css @@ -0,0 +1,29 @@ +/* Javadoc style sheet */ + +/* Define colors, fonts and other style attributes here to override the defaults */ + +/* Page background color */ +body { background-color: #FFFFFF; color:#000000 } + +/* Headings */ +h1 { font-size: 145% } + +/* Table colors */ +.TableHeadingColor { background: #CCCCFF; color:#000000 } /* Dark mauve */ +.TableSubHeadingColor { background: #EEEEFF; color:#000000 } /* Light mauve */ +.TableRowColor { background: #FFFFFF; color:#000000 } /* White */ + +/* Font used in left-hand frame lists */ +.FrameTitleFont { font-size: 100%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameHeadingFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameItemFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } + +/* Navigation bar fonts and colors */ +.NavBarCell1 { background-color:#EEEEFF; color:#000000} /* Light mauve */ +.NavBarCell1Rev { background-color:#00008B; color:#FFFFFF} /* Dark Blue */ +.NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;color:#000000;} +.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;color:#FFFFFF;} + +.NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} +.NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/allclasses-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/allclasses-frame.html new file mode 100644 index 00000000..05b1ca0a --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/allclasses-frame.html @@ -0,0 +1,34 @@ + + + + + + + +All Classes (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +All Classes +
+ + + + + +
JasyptCrypt +
+JasyptCryptFactory +
+
+ + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/allclasses-noframe.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/allclasses-noframe.html new file mode 100644 index 00000000..3b90f102 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/allclasses-noframe.html @@ -0,0 +1,34 @@ + + + + + + + +All Classes (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +All Classes +
+ + + + + +
JasyptCrypt +
+JasyptCryptFactory +
+
+ + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/constant-values.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/constant-values.html new file mode 100644 index 00000000..bd6806b1 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/constant-values.html @@ -0,0 +1,145 @@ + + + + + + + +Constant Field Values (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Constant Field Values

+
+
+Contents
    +
+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/deprecated-list.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/deprecated-list.html new file mode 100644 index 00000000..bc13f0ce --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/deprecated-list.html @@ -0,0 +1,145 @@ + + + + + + + +Deprecated List (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Deprecated API

+
+
+Contents
    +
+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/help-doc.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/help-doc.html new file mode 100644 index 00000000..95861bf2 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/help-doc.html @@ -0,0 +1,216 @@ + + + + + + + +API Help (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+How This API Document Is Organized

+
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.

+Package

+
+ +

+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:

    +
  • Interfaces (italic)
  • Classes
  • Enums
  • Exceptions
  • Errors
  • Annotation Types
+
+

+Class/Interface

+
+ +

+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
  • Class inheritance diagram
  • Direct Subclasses
  • All Known Subinterfaces
  • All Known Implementing Classes
  • Class/interface declaration
  • Class/interface description +

    +

  • Nested Class Summary
  • Field Summary
  • Constructor Summary
  • Method Summary +

    +

  • Field Detail
  • Constructor Detail
  • Method Detail
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+ +

+Annotation Type

+
+ +

+Each annotation type has its own separate page with the following sections:

    +
  • Annotation Type declaration
  • Annotation Type description
  • Required Element Summary
  • Optional Element Summary
  • Element Detail
+
+ +

+Enum

+
+ +

+Each enum has its own separate page with the following sections:

    +
  • Enum declaration
  • Enum description
  • Enum Constant Summary
  • Enum Constant Detail
+
+

+Use

+
+Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.
+

+Tree (Class Hierarchy)

+
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.
    +
  • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
  • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
+
+

+Deprecated API

+
+The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+

+Index

+
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+

+Prev/Next

+These links take you to the next or previous class, interface, package, or related page.

+Frames/No Frames

+These links show and hide the HTML frames. All pages are available with or without frames. +

+

+Serialized Form

+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description. +

+

+Constant Field Values

+The Constant Field Values page lists the static final fields and their values. +

+ + +This help file applies to API documentation generated using the standard doclet. + +
+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/index-all.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/index-all.html new file mode 100644 index 00000000..47936349 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/index-all.html @@ -0,0 +1,197 @@ + + + + + + + +Index (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +D E J N O S
+

+D

+
+
decryptUrlSafe(String) - +Method in class org.jasypt.wicket15.JasyptCrypt +
+ Decrypts a string using URL and filename safe Base64 decoding. +
+
+

+E

+
+
encryptUrlSafe(String) - +Method in class org.jasypt.wicket15.JasyptCrypt +
+ Encrypts a string using URL and filename safe Base64 encoding. +
+
+

+J

+
+
JasyptCrypt - Class in org.jasypt.wicket15
+ Jasypt's implementation of ICrypt, based on the use of a + PBEByteEncryptor object for encryption and decryption operations.
JasyptCrypt(PBEByteEncryptor) - +Constructor for class org.jasypt.wicket15.JasyptCrypt +
+ Creates a new JasyptCrypt object, wrapping the passed + encryptor. +
JasyptCryptFactory - Class in org.jasypt.wicket15
+ Implementation of the Apache Wicket ICryptFactory interface + which returns JasyptCrypt instances.
JasyptCryptFactory(PBEByteEncryptor) - +Constructor for class org.jasypt.wicket15.JasyptCryptFactory +
+ Creates a new instance of JasyptCryptFactory. +
+
+

+N

+
+
newCrypt() - +Method in class org.jasypt.wicket15.JasyptCryptFactory +
+ Return a new encryptor object. +
+
+

+O

+
+
org.jasypt.wicket15 - package org.jasypt.wicket15
 
+
+

+S

+
+
setKey(String) - +Method in class org.jasypt.wicket15.JasyptCrypt +
+ Important: Using jasypt, it makes no sense to change the encryption + key once the encryptor has been initialized, and so this method is + implemented to throw UnsupportedOperationException always. +
+
+D E J N O S + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/index.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/index.html new file mode 100644 index 00000000..aab52c40 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/index.html @@ -0,0 +1,37 @@ + + + + + + + +JASYPT: Java Simplified Encryption 1.9.2 API + + + + + + + + +<H2> +Frame Alert</H2> + +<P> +This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. +<BR> +Link to<A HREF="org/jasypt/wicket15/package-summary.html">Non-frame version.</A> + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/JasyptCrypt.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/JasyptCrypt.html new file mode 100644 index 00000000..0159585a --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/JasyptCrypt.html @@ -0,0 +1,347 @@ + + + + + + + +JasyptCrypt (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.wicket15 +
+Class JasyptCrypt

+
+Object
+  extended by org.jasypt.wicket15.JasyptCrypt
+
+
+
All Implemented Interfaces:
org.apache.wicket.util.crypt.ICrypt
+
+
+
+
public final class JasyptCrypt
extends Object
implements org.apache.wicket.util.crypt.ICrypt
+ + +

+

+ Jasypt's implementation of ICrypt, based on the use of a + PBEByteEncryptor object for encryption and decryption operations. +

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
JasyptCrypt(org.jasypt.encryption.pbe.PBEByteEncryptor encryptor) + +
+           + Creates a new JasyptCrypt object, wrapping the passed + encryptor.
+  + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringdecryptUrlSafe(String text) + +
+           + Decrypts a string using URL and filename safe Base64 decoding.
+ StringencryptUrlSafe(String plainText) + +
+           + Encrypts a string using URL and filename safe Base64 encoding.
+ voidsetKey(String key) + +
+           + Important: Using jasypt, it makes no sense to change the encryption + key once the encryptor has been initialized, and so this method is + implemented to throw UnsupportedOperationException always.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JasyptCrypt

+
+public JasyptCrypt(org.jasypt.encryption.pbe.PBEByteEncryptor encryptor)
+
+

+ Creates a new JasyptCrypt object, wrapping the passed + encryptor. +

+

+

+
Parameters:
encryptor - the PBEByteEncryptor to be used internally.
+
+ + + + + + + + +
+Method Detail
+ +

+decryptUrlSafe

+
+public String decryptUrlSafe(String text)
+
+

+ Decrypts a string using URL and filename safe Base64 decoding. +

+

+

+
Specified by:
decryptUrlSafe in interface org.apache.wicket.util.crypt.ICrypt
+
+
+
Parameters:
text - the text to be decrypted. +
Returns:
the decrypted string.
+
+
+
+ +

+encryptUrlSafe

+
+public String encryptUrlSafe(String plainText)
+
+

+ Encrypts a string using URL and filename safe Base64 encoding. +

+

+

+
Specified by:
encryptUrlSafe in interface org.apache.wicket.util.crypt.ICrypt
+
+
+
Parameters:
plainText - the text to be encrypted. +
Returns:
encrypted string.
+
+
+
+ +

+setKey

+
+public void setKey(String key)
+
+

+ Important: Using jasypt, it makes no sense to change the encryption + key once the encryptor has been initialized, and so this method is + implemented to throw UnsupportedOperationException always. +

+

+

+
Specified by:
setKey in interface org.apache.wicket.util.crypt.ICrypt
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/JasyptCryptFactory.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/JasyptCryptFactory.html new file mode 100644 index 00000000..f55ff784 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/JasyptCryptFactory.html @@ -0,0 +1,304 @@ + + + + + + + +JasyptCryptFactory (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.wicket15 +
+Class JasyptCryptFactory

+
+Object
+  extended by org.jasypt.wicket15.JasyptCryptFactory
+
+
+
All Implemented Interfaces:
org.apache.wicket.util.crypt.ICryptFactory
+
+
+
+
public final class JasyptCryptFactory
extends Object
implements org.apache.wicket.util.crypt.ICryptFactory
+ + +

+

+ Implementation of the Apache Wicket ICryptFactory interface + which returns JasyptCrypt instances. +

+

+ Requires a PBEByteEncryptor as a constructor argument, which can + be created or retrieved from any part of the jasypt encryption configuration + infrastructure. +

+

+ +

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.9.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
JasyptCryptFactory(org.jasypt.encryption.pbe.PBEByteEncryptor encryptor) + +
+           + Creates a new instance of JasyptCryptFactory.
+  + + + + + + + + + + + +
+Method Summary
+ org.apache.wicket.util.crypt.ICryptnewCrypt() + +
+           + Return a new encryptor object.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JasyptCryptFactory

+
+public JasyptCryptFactory(org.jasypt.encryption.pbe.PBEByteEncryptor encryptor)
+
+

+ Creates a new instance of JasyptCryptFactory. +

+

+ This factory uses an instance of PBEByteEncryptor instead of + a PBEStringEncryptor (as could be expected) because Wicket + requires a specific type of String encoding (URL and file safe + BASE64), which is managed by a wicket internal class, and which + expectes byte[] input. +

+

+

+
Parameters:
encryptor - the PBEByteEncryptor to be used.
+
+ + + + + + + + +
+Method Detail
+ +

+newCrypt

+
+public org.apache.wicket.util.crypt.ICrypt newCrypt()
+
+

+ Return a new encryptor object. +

+

+ This method returns always the same JasyptCrypt object, instead + of creating a new one. +

+

+

+
Specified by:
newCrypt in interface org.apache.wicket.util.crypt.ICryptFactory
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/class-use/JasyptCrypt.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/class-use/JasyptCrypt.html new file mode 100644 index 00000000..e5441f72 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/class-use/JasyptCrypt.html @@ -0,0 +1,143 @@ + + + + + + + +Uses of Class org.jasypt.wicket15.JasyptCrypt (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.wicket15.JasyptCrypt

+
+No usage of org.jasypt.wicket15.JasyptCrypt +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/class-use/JasyptCryptFactory.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/class-use/JasyptCryptFactory.html new file mode 100644 index 00000000..723dd612 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/class-use/JasyptCryptFactory.html @@ -0,0 +1,143 @@ + + + + + + + +Uses of Class org.jasypt.wicket15.JasyptCryptFactory (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.wicket15.JasyptCryptFactory

+
+No usage of org.jasypt.wicket15.JasyptCryptFactory +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/package-frame.html new file mode 100644 index 00000000..3c888db4 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/package-frame.html @@ -0,0 +1,35 @@ + + + + + + + +org.jasypt.wicket15 (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.wicket15 + + + + +
+Classes  + +
+JasyptCrypt +
+JasyptCryptFactory
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/package-summary.html new file mode 100644 index 00000000..ab35e812 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/package-summary.html @@ -0,0 +1,164 @@ + + + + + + + +org.jasypt.wicket15 (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.wicket15 +

+ + + + + + + + + + + + + +
+Class Summary
JasyptCrypt + Jasypt's implementation of ICrypt, based on the use of a + PBEByteEncryptor object for encryption and decryption operations.
JasyptCryptFactory + Implementation of the Apache Wicket ICryptFactory interface + which returns JasyptCrypt instances.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/package-tree.html new file mode 100644 index 00000000..f13f7d2d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/package-tree.html @@ -0,0 +1,151 @@ + + + + + + + +org.jasypt.wicket15 Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.wicket15 +

+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.jasypt.wicket15.JasyptCrypt (implements org.apache.wicket.util.crypt.ICrypt) +
    • org.jasypt.wicket15.JasyptCryptFactory (implements org.apache.wicket.util.crypt.ICryptFactory) +
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/package-use.html new file mode 100644 index 00000000..ee307e07 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/org/jasypt/wicket15/package-use.html @@ -0,0 +1,143 @@ + + + + + + + +Uses of Package org.jasypt.wicket15 (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.wicket15

+
+No usage of org.jasypt.wicket15 +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/overview-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/overview-tree.html new file mode 100644 index 00000000..37102281 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/overview-tree.html @@ -0,0 +1,153 @@ + + + + + + + +Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For All Packages

+
+
+
Package Hierarchies:
org.jasypt.wicket15
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • org.jasypt.wicket15.JasyptCrypt (implements org.apache.wicket.util.crypt.ICrypt) +
    • org.jasypt.wicket15.JasyptCryptFactory (implements org.apache.wicket.util.crypt.ICryptFactory) +
    +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/package-list b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/package-list new file mode 100644 index 00000000..0a0cd11e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/package-list @@ -0,0 +1 @@ +org.jasypt.wicket15 diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/resources/inherit.gif b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/resources/inherit.gif new file mode 100644 index 0000000000000000000000000000000000000000..c814867a13deb0ca7ea2156c6ca1d5a03372af7e GIT binary patch literal 57 zcmZ?wbhEHbIIT!9-C*e{wE9>Kx3D)-;0v)C; KYxQGgum%9JOA&7X literal 0 HcmV?d00001 diff --git a/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/stylesheet.css b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/stylesheet.css new file mode 100644 index 00000000..6ea9e516 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt-wicket15/stylesheet.css @@ -0,0 +1,29 @@ +/* Javadoc style sheet */ + +/* Define colors, fonts and other style attributes here to override the defaults */ + +/* Page background color */ +body { background-color: #FFFFFF; color:#000000 } + +/* Headings */ +h1 { font-size: 145% } + +/* Table colors */ +.TableHeadingColor { background: #CCCCFF; color:#000000 } /* Dark mauve */ +.TableSubHeadingColor { background: #EEEEFF; color:#000000 } /* Light mauve */ +.TableRowColor { background: #FFFFFF; color:#000000 } /* White */ + +/* Font used in left-hand frame lists */ +.FrameTitleFont { font-size: 100%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameHeadingFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameItemFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } + +/* Navigation bar fonts and colors */ +.NavBarCell1 { background-color:#EEEEFF; color:#000000} /* Light mauve */ +.NavBarCell1Rev { background-color:#00008B; color:#FFFFFF} /* Dark Blue */ +.NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;color:#000000;} +.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;color:#FFFFFF;} + +.NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} +.NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/allclasses-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt/allclasses-frame.html new file mode 100644 index 00000000..7b8d8973 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/allclasses-frame.html @@ -0,0 +1,212 @@ + + + + + + + +All Classes (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +All Classes +
+ + + + + +
AlgorithmRegistry +
+AlgorithmRegistryCLI +
+AlreadyInitializedException +
+BasicBinaryEncryptor +
+BasicDecimalNumberEncryptor +
+BasicIntegerNumberEncryptor +
+BasicPasswordEncryptor +
+BasicTextEncryptor +
+BigDecimalEncryptor +
+BigIntegerEncryptor +
+BinaryEncryptor +
+ByteArrayFixedSaltGenerator +
+ByteDigester +
+ByteEncryptor +
+CleanablePasswordBased +
+CommonUtils +
+ConfigurablePasswordEncryptor +
+DecimalNumberEncryptor +
+Digester +
+DigesterConfig +
+EncryptableProperties +
+EncryptionInitializationException +
+EncryptionOperationNotPossibleException +
+EnvironmentDigesterConfig +
+EnvironmentPBEConfig +
+EnvironmentStringDigesterConfig +
+EnvironmentStringPBEConfig +
+FixedByteArraySaltGenerator +
+FixedSaltGenerator +
+FixedStringSaltGenerator +
+IntegerNumberEncryptor +
+JasyptPBEStringDecryptionCLI +
+JasyptPBEStringEncryptionCLI +
+JasyptStatelessService +
+JasyptStringDigestCLI +
+Normalizer +
+PasswordAlreadyCleanedException +
+PasswordBased +
+PasswordEncryptor +
+PBEBigDecimalCleanablePasswordEncryptor +
+PBEBigDecimalEncryptor +
+PBEBigIntegerCleanablePasswordEncryptor +
+PBEBigIntegerEncryptor +
+PBEByteCleanablePasswordEncryptor +
+PBEByteEncryptor +
+PBECleanablePasswordConfig +
+PBEConfig +
+PBEStringCleanablePasswordEncryptor +
+PBEStringEncryptor +
+PooledByteDigester +
+PooledPBEBigDecimalEncryptor +
+PooledPBEBigIntegerEncryptor +
+PooledPBEByteEncryptor +
+PooledPBEStringEncryptor +
+PooledStringDigester +
+PropertyValueEncryptionUtils +
+RandomSaltGenerator +
+RFC2307MD5PasswordEncryptor +
+RFC2307SHAPasswordEncryptor +
+RFC2307SMD5PasswordEncryptor +
+RFC2307SSHAPasswordEncryptor +
+SaltGenerator +
+SimpleDigesterConfig +
+SimplePBEConfig +
+SimpleStringDigesterConfig +
+SimpleStringPBEConfig +
+StandardByteDigester +
+StandardPBEBigDecimalEncryptor +
+StandardPBEBigIntegerEncryptor +
+StandardPBEByteEncryptor +
+StandardPBEStringEncryptor +
+StandardStringDigester +
+StringDigester +
+StringDigesterConfig +
+StringEncryptor +
+StringFixedSaltGenerator +
+StringPBEConfig +
+StrongBinaryEncryptor +
+StrongDecimalNumberEncryptor +
+StrongIntegerNumberEncryptor +
+StrongPasswordEncryptor +
+StrongTextEncryptor +
+TextEncryptor +
+WebPBEConfig +
+WebPBEConfigFilter +
+WebPBEConfigRegistry +
+WebPBEConfigServlet +
+WebPBEInitializationContextListener +
+WebPBEInitializer +
+WebStringPBEConfig +
+ZeroSaltGenerator +
+
+ + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/allclasses-noframe.html b/utils/jasypt-1.9.2/apidocs/jasypt/allclasses-noframe.html new file mode 100644 index 00000000..b0ab57d8 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/allclasses-noframe.html @@ -0,0 +1,212 @@ + + + + + + + +All Classes (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +All Classes +
+ + + + + +
AlgorithmRegistry +
+AlgorithmRegistryCLI +
+AlreadyInitializedException +
+BasicBinaryEncryptor +
+BasicDecimalNumberEncryptor +
+BasicIntegerNumberEncryptor +
+BasicPasswordEncryptor +
+BasicTextEncryptor +
+BigDecimalEncryptor +
+BigIntegerEncryptor +
+BinaryEncryptor +
+ByteArrayFixedSaltGenerator +
+ByteDigester +
+ByteEncryptor +
+CleanablePasswordBased +
+CommonUtils +
+ConfigurablePasswordEncryptor +
+DecimalNumberEncryptor +
+Digester +
+DigesterConfig +
+EncryptableProperties +
+EncryptionInitializationException +
+EncryptionOperationNotPossibleException +
+EnvironmentDigesterConfig +
+EnvironmentPBEConfig +
+EnvironmentStringDigesterConfig +
+EnvironmentStringPBEConfig +
+FixedByteArraySaltGenerator +
+FixedSaltGenerator +
+FixedStringSaltGenerator +
+IntegerNumberEncryptor +
+JasyptPBEStringDecryptionCLI +
+JasyptPBEStringEncryptionCLI +
+JasyptStatelessService +
+JasyptStringDigestCLI +
+Normalizer +
+PasswordAlreadyCleanedException +
+PasswordBased +
+PasswordEncryptor +
+PBEBigDecimalCleanablePasswordEncryptor +
+PBEBigDecimalEncryptor +
+PBEBigIntegerCleanablePasswordEncryptor +
+PBEBigIntegerEncryptor +
+PBEByteCleanablePasswordEncryptor +
+PBEByteEncryptor +
+PBECleanablePasswordConfig +
+PBEConfig +
+PBEStringCleanablePasswordEncryptor +
+PBEStringEncryptor +
+PooledByteDigester +
+PooledPBEBigDecimalEncryptor +
+PooledPBEBigIntegerEncryptor +
+PooledPBEByteEncryptor +
+PooledPBEStringEncryptor +
+PooledStringDigester +
+PropertyValueEncryptionUtils +
+RandomSaltGenerator +
+RFC2307MD5PasswordEncryptor +
+RFC2307SHAPasswordEncryptor +
+RFC2307SMD5PasswordEncryptor +
+RFC2307SSHAPasswordEncryptor +
+SaltGenerator +
+SimpleDigesterConfig +
+SimplePBEConfig +
+SimpleStringDigesterConfig +
+SimpleStringPBEConfig +
+StandardByteDigester +
+StandardPBEBigDecimalEncryptor +
+StandardPBEBigIntegerEncryptor +
+StandardPBEByteEncryptor +
+StandardPBEStringEncryptor +
+StandardStringDigester +
+StringDigester +
+StringDigesterConfig +
+StringEncryptor +
+StringFixedSaltGenerator +
+StringPBEConfig +
+StrongBinaryEncryptor +
+StrongDecimalNumberEncryptor +
+StrongIntegerNumberEncryptor +
+StrongPasswordEncryptor +
+StrongTextEncryptor +
+TextEncryptor +
+WebPBEConfig +
+WebPBEConfigFilter +
+WebPBEConfigRegistry +
+WebPBEConfigServlet +
+WebPBEInitializationContextListener +
+WebPBEInitializer +
+WebStringPBEConfig +
+ZeroSaltGenerator +
+
+ + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/constant-values.html b/utils/jasypt-1.9.2/apidocs/jasypt/constant-values.html new file mode 100644 index 00000000..6702ed82 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/constant-values.html @@ -0,0 +1,349 @@ + + + + + + + +Constant Field Values (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Constant Field Values

+
+
+Contents + + + + + + +
+org.jasypt.*
+ +

+ + + + + + + + + + + + + + + + + +
org.jasypt.commons.CommonUtils
+public static final StringSTRING_OUTPUT_TYPE_BASE64"base64"
+public static final StringSTRING_OUTPUT_TYPE_HEXADECIMAL"hexadecimal"
+ +

+ +

+ + + + + + + + + + + + + + + + + + + + + + +
org.jasypt.digest.StandardByteDigester
+public static final StringDEFAULT_ALGORITHM"MD5"
+public static final intDEFAULT_ITERATIONS1000
+public static final intDEFAULT_SALT_SIZE_BYTES8
+ +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
org.jasypt.digest.StandardStringDigester
+public static final StringDEFAULT_STRING_OUTPUT_TYPE"base64"
+public static final booleanDEFAULT_UNICODE_NORMALIZATION_IGNOREDfalse
+public static final StringDIGEST_CHARSET"US-ASCII"
+public static final StringMESSAGE_CHARSET"UTF-8"
+ +

+ +

+ + + + + + + + + + + + + + + + + + + + + + +
org.jasypt.encryption.pbe.StandardPBEByteEncryptor
+public static final StringDEFAULT_ALGORITHM"PBEWithMD5AndDES"
+public static final intDEFAULT_KEY_OBTENTION_ITERATIONS1000
+public static final intDEFAULT_SALT_SIZE_BYTES8
+ +

+ +

+ + + + + + + + + + + + +
org.jasypt.encryption.pbe.StandardPBEStringEncryptor
+public static final StringDEFAULT_STRING_OUTPUT_TYPE"base64"
+ +

+ +

+ + + + + + + + + + + + +
org.jasypt.salt.RandomSaltGenerator
+public static final StringDEFAULT_SECURE_RANDOM_ALGORITHM"SHA1PRNG"
+ +

+ +

+ + + + + + + + + + + + +
org.jasypt.util.digest.Digester
+public static final StringDEFAULT_ALGORITHM"MD5"
+ +

+ +

+ + + + + + + + + + + + +
org.jasypt.web.pbeconfig.WebPBEInitializationContextListener
+public static final StringINIT_PARAM_INITIALIZER_CLASS_NAME"webPBEInitializerClassName"
+ +

+ +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/deprecated-list.html b/utils/jasypt-1.9.2/apidocs/jasypt/deprecated-list.html new file mode 100644 index 00000000..9f697dd0 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/deprecated-list.html @@ -0,0 +1,173 @@ + + + + + + + +Deprecated List (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Deprecated API

+
+
+Contents + + + + + + + + + + + + +
+Deprecated Classes
org.jasypt.salt.FixedByteArraySaltGenerator +
+          Deprecated in 1.9.2 in favour of ByteArrayFixedSaltGenerator, which + implements the new FixedSaltGenerator interface and therefore is able to benefit + from the performance improvements associated with it. This class will be removed + in 1.10.0 (or 2.0.0). 
org.jasypt.salt.FixedStringSaltGenerator +
+          Deprecated in 1.9.2 in favour of StringFixedSaltGenerator, which + implements the new FixedSaltGenerator interface and therefore is able to benefit + from the performance improvements associated with it. This class will be removed + in 1.10.0 (or 2.0.0). 
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/help-doc.html b/utils/jasypt-1.9.2/apidocs/jasypt/help-doc.html new file mode 100644 index 00000000..d595c350 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/help-doc.html @@ -0,0 +1,224 @@ + + + + + + + +API Help (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+How This API Document Is Organized

+
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.

+Overview

+
+ +

+The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

+

+Package

+
+ +

+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:

    +
  • Interfaces (italic)
  • Classes
  • Enums
  • Exceptions
  • Errors
  • Annotation Types
+
+

+Class/Interface

+
+ +

+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
  • Class inheritance diagram
  • Direct Subclasses
  • All Known Subinterfaces
  • All Known Implementing Classes
  • Class/interface declaration
  • Class/interface description +

    +

  • Nested Class Summary
  • Field Summary
  • Constructor Summary
  • Method Summary +

    +

  • Field Detail
  • Constructor Detail
  • Method Detail
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+ +

+Annotation Type

+
+ +

+Each annotation type has its own separate page with the following sections:

    +
  • Annotation Type declaration
  • Annotation Type description
  • Required Element Summary
  • Optional Element Summary
  • Element Detail
+
+ +

+Enum

+
+ +

+Each enum has its own separate page with the following sections:

    +
  • Enum declaration
  • Enum description
  • Enum Constant Summary
  • Enum Constant Detail
+
+

+Use

+
+Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.
+

+Tree (Class Hierarchy)

+
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.
    +
  • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
  • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
+
+

+Deprecated API

+
+The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+

+Index

+
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+

+Prev/Next

+These links take you to the next or previous class, interface, package, or related page.

+Frames/No Frames

+These links show and hide the HTML frames. All pages are available with or without frames. +

+

+Serialized Form

+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description. +

+

+Constant Field Values

+The Constant Field Values page lists the static final fields and their values. +

+ + +This help file applies to API documentation generated using the standard doclet. + +
+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/index-all.html b/utils/jasypt-1.9.2/apidocs/jasypt/index-all.html new file mode 100644 index 00000000..d3c93b7b --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/index-all.html @@ -0,0 +1,2899 @@ + + + + + + + +Index (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +A B C D E F G I J M N O P R S T V W Z
+

+A

+
+
AlgorithmRegistry - Class in org.jasypt.registry
+ Utility class for retrieving the names of all the digest or encryption + algorithms available to Jasypt.
AlgorithmRegistryCLI - Class in org.jasypt.intf.cli
+ This class supports the CLI "listAlgorithms" operation.
AlreadyInitializedException - Exception in org.jasypt.exceptions
Exception thrown when an attempt is made to change the configuration + of an entity once it has been initialized.
AlreadyInitializedException() - +Constructor for exception org.jasypt.exceptions.AlreadyInitializedException +
  +
appendArrays(byte[], byte[]) - +Static method in class org.jasypt.commons.CommonUtils +
  +
+
+

+B

+
+
BasicBinaryEncryptor - Class in org.jasypt.util.binary
+ Utility class for easily performing normal-strength encryption of + binaries (byte arrays).
BasicBinaryEncryptor() - +Constructor for class org.jasypt.util.binary.BasicBinaryEncryptor +
Creates a new instance of BasicBinaryEncryptor. +
BasicDecimalNumberEncryptor - Class in org.jasypt.util.numeric
+ Utility class for easily performing normal-strength encryption of + BigDecimal objects.
BasicDecimalNumberEncryptor() - +Constructor for class org.jasypt.util.numeric.BasicDecimalNumberEncryptor +
Creates a new instance of BasicDecimalNumberEncryptor. +
BasicIntegerNumberEncryptor - Class in org.jasypt.util.numeric
+ Utility class for easily performing normal-strength encryption of + BigInteger objects.
BasicIntegerNumberEncryptor() - +Constructor for class org.jasypt.util.numeric.BasicIntegerNumberEncryptor +
Creates a new instance of BasicIntegerNumberEncryptor. +
BasicPasswordEncryptor - Class in org.jasypt.util.password
+ Utility class for easily performing password digesting and checking.
BasicPasswordEncryptor() - +Constructor for class org.jasypt.util.password.BasicPasswordEncryptor +
Creates a new instance of BasicPasswordEncryptor +
BasicTextEncryptor - Class in org.jasypt.util.text
+ Utility class for easily performing normal-strength encryption of texts.
BasicTextEncryptor() - +Constructor for class org.jasypt.util.text.BasicTextEncryptor +
Creates a new instance of BasicTextEncryptor. +
BigDecimalEncryptor - Interface in org.jasypt.encryption
+ Common interface for all Encryptors which receive a + BigDecimal (arbitrary precision) message and return a BigDecimal result.
BigIntegerEncryptor - Interface in org.jasypt.encryption
+ Common interface for all Encryptors which receive a + BigInteger (arbitrary precision) message and return a BigInteger result.
BinaryEncryptor - Interface in org.jasypt.util.binary
+ Common interface for all util classes aimed at binary encryption
ByteArrayFixedSaltGenerator - Class in org.jasypt.salt
+ Byte-array based implementation of FixedSaltGenerator, that will + always return the same salt.
ByteArrayFixedSaltGenerator(byte[]) - +Constructor for class org.jasypt.salt.ByteArrayFixedSaltGenerator +
Creates a new instance of FixedByteArraySaltGenerator +
ByteDigester - Interface in org.jasypt.digest
+ Common interface for all digesters which receive a byte array message and + return a byte array digest.
ByteEncryptor - Interface in org.jasypt.encryption
+ Common interface for all Encryptors which receive a + byte array message and return a byte array result.
+
+

+C

+
+
checkPassword(String, String) - +Method in class org.jasypt.util.password.BasicPasswordEncryptor +
Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match. +
checkPassword(String, String) - +Method in class org.jasypt.util.password.ConfigurablePasswordEncryptor +
Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match. +
checkPassword(String, String) - +Method in interface org.jasypt.util.password.PasswordEncryptor +
Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match. +
checkPassword(String, String) - +Method in class org.jasypt.util.password.rfc2307.RFC2307MD5PasswordEncryptor +
Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match. +
checkPassword(String, String) - +Method in class org.jasypt.util.password.rfc2307.RFC2307SHAPasswordEncryptor +
Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match. +
checkPassword(String, String) - +Method in class org.jasypt.util.password.rfc2307.RFC2307SMD5PasswordEncryptor +
+ Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match. +
checkPassword(String, String) - +Method in class org.jasypt.util.password.rfc2307.RFC2307SSHAPasswordEncryptor +
+ Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match. +
checkPassword(String, String) - +Method in class org.jasypt.util.password.StrongPasswordEncryptor +
Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match. +
CleanablePasswordBased - Interface in org.jasypt.encryption.pbe
+ Common interface for all entities which can be set a password in char[] shape, + which can be cleaned once the encryptor is initialized so that no immutable + Strings containing the password are left in memory.
cleanPassword() - +Method in interface org.jasypt.encryption.pbe.config.PBECleanablePasswordConfig +
+ Clean the password stored in this configuration object. +
cleanPassword() - +Method in class org.jasypt.encryption.pbe.config.SimplePBEConfig +
  +
CommonUtils - Class in org.jasypt.commons
+ Common utils regarding treatment of parameter values and encoding operations.
ConfigurablePasswordEncryptor - Class in org.jasypt.util.password
+ Utility class for easily performing password digesting and checking.
ConfigurablePasswordEncryptor() - +Constructor for class org.jasypt.util.password.ConfigurablePasswordEncryptor +
Creates a new instance of ConfigurablePasswordEncryptor +
contextDestroyed(ServletContextEvent) - +Method in class org.jasypt.web.pbeconfig.WebPBEInitializationContextListener +
  +
contextInitialized(ServletContextEvent) - +Method in class org.jasypt.web.pbeconfig.WebPBEInitializationContextListener +
  +
+
+

+D

+
+
DecimalNumberEncryptor - Interface in org.jasypt.util.numeric
+ Common interface for all util classes aimed at decimal number encryption.
decrypt(BigDecimal) - +Method in interface org.jasypt.encryption.BigDecimalEncryptor +
Decrypt an encrypted message +
decrypt(BigInteger) - +Method in interface org.jasypt.encryption.BigIntegerEncryptor +
Decrypt an encrypted message +
decrypt(byte[]) - +Method in interface org.jasypt.encryption.ByteEncryptor +
Decrypt an encrypted message +
decrypt(BigDecimal) - +Method in class org.jasypt.encryption.pbe.PooledPBEBigDecimalEncryptor +
+ Decrypts a message using the specified configuration. +
decrypt(BigInteger) - +Method in class org.jasypt.encryption.pbe.PooledPBEBigIntegerEncryptor +
+ Decrypts a message using the specified configuration. +
decrypt(byte[]) - +Method in class org.jasypt.encryption.pbe.PooledPBEByteEncryptor +
+ Decrypts a message using the specified configuration. +
decrypt(String) - +Method in class org.jasypt.encryption.pbe.PooledPBEStringEncryptor +
+ Decrypts a message using the specified configuration. +
decrypt(BigDecimal) - +Method in class org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor +
+ Decrypts a message using the specified configuration. +
decrypt(BigInteger) - +Method in class org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor +
+ Decrypts a message using the specified configuration. +
decrypt(byte[]) - +Method in class org.jasypt.encryption.pbe.StandardPBEByteEncryptor +
+ Decrypts a message using the specified configuration. +
decrypt(String) - +Method in class org.jasypt.encryption.pbe.StandardPBEStringEncryptor +
+ Decrypts a message using the specified configuration. +
decrypt(String) - +Method in interface org.jasypt.encryption.StringEncryptor +
Decrypt an encrypted message +
decrypt(String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String) - +Method in class org.jasypt.intf.service.JasyptStatelessService +
+ Configure and perform a decryption operation. +
decrypt(String, StringEncryptor) - +Static method in class org.jasypt.properties.PropertyValueEncryptionUtils +
  +
decrypt(String, TextEncryptor) - +Static method in class org.jasypt.properties.PropertyValueEncryptionUtils +
  +
decrypt(byte[]) - +Method in class org.jasypt.util.binary.BasicBinaryEncryptor +
Decrypts a byte array. +
decrypt(byte[]) - +Method in interface org.jasypt.util.binary.BinaryEncryptor +
Decrypts a byte array. +
decrypt(byte[]) - +Method in class org.jasypt.util.binary.StrongBinaryEncryptor +
Decrypts a byte array. +
decrypt(BigDecimal) - +Method in class org.jasypt.util.numeric.BasicDecimalNumberEncryptor +
Decrypts a number. +
decrypt(BigInteger) - +Method in class org.jasypt.util.numeric.BasicIntegerNumberEncryptor +
Decrypts a number. +
decrypt(BigDecimal) - +Method in interface org.jasypt.util.numeric.DecimalNumberEncryptor +
Decrypts a BigDecimal. +
decrypt(BigInteger) - +Method in interface org.jasypt.util.numeric.IntegerNumberEncryptor +
Decrypts a BigInteger. +
decrypt(BigDecimal) - +Method in class org.jasypt.util.numeric.StrongDecimalNumberEncryptor +
Decrypts a number. +
decrypt(BigInteger) - +Method in class org.jasypt.util.numeric.StrongIntegerNumberEncryptor +
Decrypts a number. +
decrypt(String) - +Method in class org.jasypt.util.text.BasicTextEncryptor +
Decrypts a message. +
decrypt(String) - +Method in class org.jasypt.util.text.StrongTextEncryptor +
Decrypts a message. +
decrypt(String) - +Method in interface org.jasypt.util.text.TextEncryptor +
Decrypts a message. +
DEFAULT_ALGORITHM - +Static variable in class org.jasypt.digest.StandardByteDigester +
Default digest algorithm will be MD5 +
DEFAULT_ALGORITHM - +Static variable in class org.jasypt.encryption.pbe.StandardPBEByteEncryptor +
The default algorithm to be used if none specified: PBEWithMD5AndDES. +
DEFAULT_ALGORITHM - +Static variable in class org.jasypt.util.digest.Digester +
MD5 will be the default algorithm to be used if none is specified. +
DEFAULT_ITERATIONS - +Static variable in class org.jasypt.digest.StandardByteDigester +
The minimum recommended iterations for hashing are 1000 +
DEFAULT_KEY_OBTENTION_ITERATIONS - +Static variable in class org.jasypt.encryption.pbe.StandardPBEByteEncryptor +
The default number of hashing iterations applied for obtaining the + encryption key from the specified password, set to 1000. +
DEFAULT_SALT_SIZE_BYTES - +Static variable in class org.jasypt.digest.StandardByteDigester +
The minimum recommended size for salt is 8 bytes +
DEFAULT_SALT_SIZE_BYTES - +Static variable in class org.jasypt.encryption.pbe.StandardPBEByteEncryptor +
The default salt size, only used if the chosen encryption algorithm + is not a block algorithm and thus block size cannot be used as salt size. +
DEFAULT_SECURE_RANDOM_ALGORITHM - +Static variable in class org.jasypt.salt.RandomSaltGenerator +
The default algorithm to be used for secure random number + generation: set to SHA1PRNG. +
DEFAULT_STRING_OUTPUT_TYPE - +Static variable in class org.jasypt.digest.StandardStringDigester +
+ Default type of String output. +
DEFAULT_STRING_OUTPUT_TYPE - +Static variable in class org.jasypt.encryption.pbe.StandardPBEStringEncryptor +
+ Default type of String output. +
DEFAULT_UNICODE_NORMALIZATION_IGNORED - +Static variable in class org.jasypt.digest.StandardStringDigester +
+ Whether the Unicode normalization step should be ignored because of + legacy-compatibility issues. +
destroy() - +Method in class org.jasypt.web.pbeconfig.WebPBEConfigFilter +
  +
digest(byte[]) - +Method in interface org.jasypt.digest.ByteDigester +
+ Create a digest of the input message. +
digest(byte[]) - +Method in class org.jasypt.digest.PooledByteDigester +
+ Performs a digest operation on a byte array message. +
digest(String) - +Method in class org.jasypt.digest.PooledStringDigester +
+ Performs a digest operation on a String message. +
digest(byte[]) - +Method in class org.jasypt.digest.StandardByteDigester +
+ Performs a digest operation on a byte array message. +
digest(String) - +Method in class org.jasypt.digest.StandardStringDigester +
+ Performs a digest operation on a String message. +
digest(String) - +Method in interface org.jasypt.digest.StringDigester +
+ Create a digest of the input message. +
digest(String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String) - +Method in class org.jasypt.intf.service.JasyptStatelessService +
+ Configure and perform a digest operation. +
digest(byte[]) - +Method in class org.jasypt.util.digest.Digester +
Creates a digest. +
DIGEST_CHARSET - +Static variable in class org.jasypt.digest.StandardStringDigester +
+ Charset to be used for encoding the resulting digests. +
Digester - Class in org.jasypt.util.digest
+ Utility class for creating digests without using a salt or iterating + the hash function.
Digester() - +Constructor for class org.jasypt.util.digest.Digester +
Creates a new instance of Digester. +
Digester(String) - +Constructor for class org.jasypt.util.digest.Digester +
+ Creates a new instance of Digester, specifying + the algorithm to be used. +
Digester(String, String) - +Constructor for class org.jasypt.util.digest.Digester +
+ Creates a new instance of Digester, specifying + the algorithm to be used. +
Digester(String, Provider) - +Constructor for class org.jasypt.util.digest.Digester +
+ Creates a new instance of Digester, specifying + the algorithm to be used. +
DigesterConfig - Interface in org.jasypt.digest.config
+ Common interface for config classes applicable to + StandardByteDigester, + StandardStringDigester, + PooledByteDigester or + PooledStringDigester + objects.
doFilter(ServletRequest, ServletResponse, FilterChain) - +Method in class org.jasypt.web.pbeconfig.WebPBEConfigFilter +
  +
doGet(HttpServletRequest, HttpServletResponse) - +Method in class org.jasypt.web.pbeconfig.WebPBEConfigServlet +
  +
doPost(HttpServletRequest, HttpServletResponse) - +Method in class org.jasypt.web.pbeconfig.WebPBEConfigServlet +
  +
+
+

+E

+
+
encrypt(BigDecimal) - +Method in interface org.jasypt.encryption.BigDecimalEncryptor +
Encrypt the input message +
encrypt(BigInteger) - +Method in interface org.jasypt.encryption.BigIntegerEncryptor +
Encrypt the input message +
encrypt(byte[]) - +Method in interface org.jasypt.encryption.ByteEncryptor +
Encrypt the input message +
encrypt(BigDecimal) - +Method in class org.jasypt.encryption.pbe.PooledPBEBigDecimalEncryptor +
+ Encrypts a message using the specified configuration. +
encrypt(BigInteger) - +Method in class org.jasypt.encryption.pbe.PooledPBEBigIntegerEncryptor +
+ Encrypts a message using the specified configuration. +
encrypt(byte[]) - +Method in class org.jasypt.encryption.pbe.PooledPBEByteEncryptor +
+ Encrypts a message using the specified configuration. +
encrypt(String) - +Method in class org.jasypt.encryption.pbe.PooledPBEStringEncryptor +
+ Encrypts a message using the specified configuration. +
encrypt(BigDecimal) - +Method in class org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor +
+ Encrypts a message using the specified configuration. +
encrypt(BigInteger) - +Method in class org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor +
+ Encrypts a message using the specified configuration. +
encrypt(byte[]) - +Method in class org.jasypt.encryption.pbe.StandardPBEByteEncryptor +
+ Encrypts a message using the specified configuration. +
encrypt(String) - +Method in class org.jasypt.encryption.pbe.StandardPBEStringEncryptor +
+ Encrypts a message using the specified configuration. +
encrypt(String) - +Method in interface org.jasypt.encryption.StringEncryptor +
Encrypt the input message +
encrypt(String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String) - +Method in class org.jasypt.intf.service.JasyptStatelessService +
+ Configure and perform an encryption operation. +
encrypt(String, StringEncryptor) - +Static method in class org.jasypt.properties.PropertyValueEncryptionUtils +
  +
encrypt(String, TextEncryptor) - +Static method in class org.jasypt.properties.PropertyValueEncryptionUtils +
  +
encrypt(byte[]) - +Method in class org.jasypt.util.binary.BasicBinaryEncryptor +
Encrypts a byte array +
encrypt(byte[]) - +Method in interface org.jasypt.util.binary.BinaryEncryptor +
Encrypts a byte array +
encrypt(byte[]) - +Method in class org.jasypt.util.binary.StrongBinaryEncryptor +
Encrypts a byte array +
encrypt(BigDecimal) - +Method in class org.jasypt.util.numeric.BasicDecimalNumberEncryptor +
Encrypts a number +
encrypt(BigInteger) - +Method in class org.jasypt.util.numeric.BasicIntegerNumberEncryptor +
Encrypts a number +
encrypt(BigDecimal) - +Method in interface org.jasypt.util.numeric.DecimalNumberEncryptor +
Encrypts a BigDecimal +
encrypt(BigInteger) - +Method in interface org.jasypt.util.numeric.IntegerNumberEncryptor +
Encrypts a BigInteger +
encrypt(BigDecimal) - +Method in class org.jasypt.util.numeric.StrongDecimalNumberEncryptor +
Encrypts a number +
encrypt(BigInteger) - +Method in class org.jasypt.util.numeric.StrongIntegerNumberEncryptor +
Encrypts a number +
encrypt(String) - +Method in class org.jasypt.util.text.BasicTextEncryptor +
Encrypts a message. +
encrypt(String) - +Method in class org.jasypt.util.text.StrongTextEncryptor +
Encrypts a message. +
encrypt(String) - +Method in interface org.jasypt.util.text.TextEncryptor +
Encrypts a message. +
EncryptableProperties - Class in org.jasypt.properties
+ Subclass of java.util.Properties which can make use of a + StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the .properties file.
EncryptableProperties(StringEncryptor) - +Constructor for class org.jasypt.properties.EncryptableProperties +
+ Creates an EncryptableProperties instance which will use + the passed StringEncryptor object to decrypt encrypted values. +
EncryptableProperties(TextEncryptor) - +Constructor for class org.jasypt.properties.EncryptableProperties +
+ Creates an EncryptableProperties instance which will use + the passed TextEncryptor object to decrypt encrypted values. +
EncryptableProperties(Properties, StringEncryptor) - +Constructor for class org.jasypt.properties.EncryptableProperties +
+ Creates an EncryptableProperties instance which will use + the passed StringEncryptor object to decrypt encrypted values, + and the passed defaults as default values (may contain encrypted values). +
EncryptableProperties(Properties, TextEncryptor) - +Constructor for class org.jasypt.properties.EncryptableProperties +
+ Creates an EncryptableProperties instance which will use + the passed TextEncryptor object to decrypt encrypted values, + and the passed defaults as default values (may contain encrypted values). +
EncryptionInitializationException - Exception in org.jasypt.exceptions
Exception thrown when an error is raised during initialization of + an entity.
EncryptionInitializationException() - +Constructor for exception org.jasypt.exceptions.EncryptionInitializationException +
  +
EncryptionInitializationException(Throwable) - +Constructor for exception org.jasypt.exceptions.EncryptionInitializationException +
  +
EncryptionInitializationException(String, Throwable) - +Constructor for exception org.jasypt.exceptions.EncryptionInitializationException +
  +
EncryptionInitializationException(String) - +Constructor for exception org.jasypt.exceptions.EncryptionInitializationException +
  +
EncryptionOperationNotPossibleException - Exception in org.jasypt.exceptions
+ General exception thrown when any errors are raised during encryption, + digesting, etc.
EncryptionOperationNotPossibleException() - +Constructor for exception org.jasypt.exceptions.EncryptionOperationNotPossibleException +
  +
EncryptionOperationNotPossibleException(Throwable) - +Constructor for exception org.jasypt.exceptions.EncryptionOperationNotPossibleException +
  +
EncryptionOperationNotPossibleException(String) - +Constructor for exception org.jasypt.exceptions.EncryptionOperationNotPossibleException +
  +
encryptPassword(String) - +Method in class org.jasypt.util.password.BasicPasswordEncryptor +
Encrypts (digests) a password. +
encryptPassword(String) - +Method in class org.jasypt.util.password.ConfigurablePasswordEncryptor +
Encrypts (digests) a password. +
encryptPassword(String) - +Method in interface org.jasypt.util.password.PasswordEncryptor +
Encrypts (digests) a password. +
encryptPassword(String) - +Method in class org.jasypt.util.password.rfc2307.RFC2307MD5PasswordEncryptor +
Encrypts (digests) a password. +
encryptPassword(String) - +Method in class org.jasypt.util.password.rfc2307.RFC2307SHAPasswordEncryptor +
Encrypts (digests) a password. +
encryptPassword(String) - +Method in class org.jasypt.util.password.rfc2307.RFC2307SMD5PasswordEncryptor +
Encrypts (digests) a password. +
encryptPassword(String) - +Method in class org.jasypt.util.password.rfc2307.RFC2307SSHAPasswordEncryptor +
Encrypts (digests) a password. +
encryptPassword(String) - +Method in class org.jasypt.util.password.StrongPasswordEncryptor +
Encrypts (digests) a password. +
EnvironmentDigesterConfig - Class in org.jasypt.digest.config
+ Implementation for DigesterConfig which can retrieve configuration + values from environment variables or system properties.
EnvironmentDigesterConfig() - +Constructor for class org.jasypt.digest.config.EnvironmentDigesterConfig +
+ Creates a new EnvironmentDigesterConfig instance. +
EnvironmentPBEConfig - Class in org.jasypt.encryption.pbe.config
+ Implementation for PBEConfig which can retrieve configuration + values from environment variables or system properties.
EnvironmentPBEConfig() - +Constructor for class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
+ Creates a new EnvironmentPBEConfig instance. +
EnvironmentStringDigesterConfig - Class in org.jasypt.digest.config
+ Implementation for StringDigesterConfig which can retrieve configuration + values from environment variables or system properties.
EnvironmentStringDigesterConfig() - +Constructor for class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
+ Creates a new EnvironmentStringDigesterConfig instance. +
EnvironmentStringPBEConfig - Class in org.jasypt.encryption.pbe.config
+ Implementation for StringPBEConfig which can retrieve configuration + values from environment variables or system properties.
EnvironmentStringPBEConfig() - +Constructor for class org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig +
+ Creates a new EnvironmentStringPBEConfig instance. +
+
+

+F

+
+
FixedByteArraySaltGenerator - Class in org.jasypt.salt
Deprecated. Deprecated in 1.9.2 in favour of ByteArrayFixedSaltGenerator, which + implements the new FixedSaltGenerator interface and therefore is able to benefit + from the performance improvements associated with it. This class will be removed + in 1.10.0 (or 2.0.0).
FixedByteArraySaltGenerator() - +Constructor for class org.jasypt.salt.FixedByteArraySaltGenerator +
Deprecated. Creates a new instance of FixedByteArraySaltGenerator +
FixedSaltGenerator - Interface in org.jasypt.salt
+ Marker interface for all implementations of SaltGenerator that + will always return the same salt (for the same amount of bytes asked).
FixedStringSaltGenerator - Class in org.jasypt.salt
Deprecated. Deprecated in 1.9.2 in favour of StringFixedSaltGenerator, which + implements the new FixedSaltGenerator interface and therefore is able to benefit + from the performance improvements associated with it. This class will be removed + in 1.10.0 (or 2.0.0).
FixedStringSaltGenerator() - +Constructor for class org.jasypt.salt.FixedStringSaltGenerator +
Deprecated. Creates a new instance of FixedStringSaltGenerator +
fromHexadecimal(String) - +Static method in class org.jasypt.commons.CommonUtils +
  +
+
+

+G

+
+
generateSalt(int) - +Method in class org.jasypt.salt.ByteArrayFixedSaltGenerator +
Return salt with the specified byte length. +
generateSalt(int) - +Method in class org.jasypt.salt.FixedByteArraySaltGenerator +
Deprecated. Return salt with the specified byte length. +
generateSalt(int) - +Method in class org.jasypt.salt.FixedStringSaltGenerator +
Deprecated. Return salt with the specified byte length. +
generateSalt(int) - +Method in class org.jasypt.salt.RandomSaltGenerator +
Generate a random salt of the specified length in bytes. +
generateSalt(int) - +Method in interface org.jasypt.salt.SaltGenerator +
+ This method will be called for requesting the generation of a new + salt of the specified length. +
generateSalt(int) - +Method in class org.jasypt.salt.StringFixedSaltGenerator +
Return salt with the specified byte length. +
generateSalt(int) - +Method in class org.jasypt.salt.ZeroSaltGenerator +
Return salt with the specified byte length. +
get(Object) - +Method in class org.jasypt.properties.EncryptableProperties +
+ Obtains the property value for the specified key (see + Hashtable#get(Object)), decrypting it if needed. +
getAlgorithm() - +Method in interface org.jasypt.digest.config.DigesterConfig +
+ Returns the name of an algorithm to be used for hashing, like "MD5" or + "SHA-1". +
getAlgorithm() - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
  +
getAlgorithm() - +Method in interface org.jasypt.encryption.pbe.config.PBEConfig +
+ Returns the algorithm to be used for encryption, like + PBEWithMD5AndDES. +
getAlgorithm() - +Method in class org.jasypt.encryption.pbe.config.SimplePBEConfig +
  +
getAlgorithmEnvName() - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Retrieve the name of the environment variable which value has been + loaded as the algorithm. +
getAlgorithmEnvName() - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
Retrieve the name of the environment variable which value has been + loaded as the algorithm. +
getAlgorithmSysPropertyName() - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Retrieve the name of the JVM system property which value has been + loaded as the algorithm. +
getAlgorithmSysPropertyName() - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
Retrieve the name of the JVM system property which value has been + loaded as the algorithm. +
getAllDigestAlgorithms() - +Static method in class org.jasypt.registry.AlgorithmRegistry +
+ Returns a set with the names of all the registered digest algorithms. +
getAllPBEAlgorithms() - +Static method in class org.jasypt.registry.AlgorithmRegistry +
+ Returns a set with the names of all the registered PBE (Password-Based + Encryption) algorithms. +
getConfigs() - +Method in class org.jasypt.web.pbeconfig.WebPBEConfigRegistry +
  +
getInstance() - +Static method in class org.jasypt.web.pbeconfig.WebPBEConfigRegistry +
  +
getInvertPositionOfPlainSaltInEncryptionResults() - +Method in interface org.jasypt.digest.config.DigesterConfig +
+ Returns Boolean.TRUE if the plain (not hashed) salt bytes are to + be appended after the digest operation result bytes. +
getInvertPositionOfPlainSaltInEncryptionResults() - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
  +
getInvertPositionOfPlainSaltInEncryptionResultsEnvName() - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Retrieve the name of the environment variable which value has been + loaded as the value for the invertPositionOfPlainSaltInEncryptionResults + property. +
getInvertPositionOfPlainSaltInEncryptionResultsSysPropertyName() - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Retrieve the name of the JVM system property which value has been + loaded as the value for the invertPositionOfPlainSaltInEncryptionResults + property. +
getInvertPositionOfSaltInMessageBeforeDigesting() - +Method in interface org.jasypt.digest.config.DigesterConfig +
+ Returns Boolean.TRUE if the salt bytes are to be appended after the + message ones before performing the digest operation on the whole. +
getInvertPositionOfSaltInMessageBeforeDigesting() - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
  +
getInvertPositionOfSaltInMessageBeforeDigestingEnvName() - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Retrieve the name of the environment variable which value has been + loaded as the value for the invertPositionOfSaltInMessageBeforeDigesting + property. +
getInvertPositionOfSaltInMessageBeforeDigestingSysPropertyName() - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Retrieve the name of the JVM system property which value has been + loaded as the value for the invertPositionOfSaltInMessageBeforeDigesting + property. +
getIterations() - +Method in interface org.jasypt.digest.config.DigesterConfig +
+ Returns the number of times the hash function will be applied recursively. +
getIterations() - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
  +
getIterationsEnvName() - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Retrieve the name of the environment variable which value has been + loaded as the iteration count. +
getIterationsSysPropertyName() - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Retrieve the name of the JVM system property which value has been + loaded as the iteration count. +
getKeyObtentionIterations() - +Method in interface org.jasypt.encryption.pbe.config.PBEConfig +
+ Returns the number of hashing iterations applied to obtain the + encryption key. +
getKeyObtentionIterations() - +Method in class org.jasypt.encryption.pbe.config.SimplePBEConfig +
  +
getKeyObtentionIterationsEnvName() - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
Retrieve the name of the environment variable which value has been + loaded as the key obtention iteration count. +
getKeyObtentionIterationsSysPropertyName() - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
Retrieve the name of the JVM system property which value has been + loaded as the key obtention iteration count. +
getName() - +Method in class org.jasypt.encryption.pbe.config.WebPBEConfig +
+ Returns the name by which this WebPBEConfig object will be identified + from the web. +
getPassword() - +Method in interface org.jasypt.encryption.pbe.config.PBEConfig +
+ Returns the password to be used. +
getPassword() - +Method in class org.jasypt.encryption.pbe.config.SimplePBEConfig +
  +
getPasswordCharArray() - +Method in interface org.jasypt.encryption.pbe.config.PBECleanablePasswordConfig +
+ Return the password set, as a char array. +
getPasswordCharArray() - +Method in class org.jasypt.encryption.pbe.config.SimplePBEConfig +
  +
getPasswordEnvName() - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
Retrieve the name of the environment variable which value has been + loaded as the password. +
getPasswordSysPropertyName() - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
Retrieve the name of the JVM system property which value has been + loaded as the password. +
getPoolSize() - +Method in interface org.jasypt.digest.config.DigesterConfig +
+ Get the size of the pool of digesters to be created. +
getPoolSize() - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
  +
getPoolSize() - +Method in interface org.jasypt.encryption.pbe.config.PBEConfig +
+ Get the size of the pool of encryptors to be created. +
getPoolSize() - +Method in class org.jasypt.encryption.pbe.config.SimplePBEConfig +
  +
getPoolSizeEnvName() - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Retrieve the name of the environment variable which value has been + loaded as the value for the poolSize + property. +
getPoolSizeEnvName() - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
Retrieve the name of the environment variable which value has been + loaded as the value for the poolSize + property. +
getPoolSizeSysPropertyName() - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Retrieve the name of the JVM system property which value has been + loaded as the value for the poolSize + property. +
getPoolSizeSysPropertyName() - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
Retrieve the name of the JVM system property which value has been + loaded as the value for the poolSize + property. +
getPrefix() - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
  +
getPrefix() - +Method in class org.jasypt.digest.config.SimpleStringDigesterConfig +
  +
getPrefix() - +Method in interface org.jasypt.digest.config.StringDigesterConfig +
+ Adds the returned (plain) prefix at the beginning of generated digests, + and also expects to find it in any plain message provided for matching + operations (raising an EncryptionOperationNotPossibleException + if not). +
getPrefixEnvName() - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
Retrieve the name of the environment variable which value has been + loaded as a value for the "prefix" parameter. +
getPrefixSysPropertyName() - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
Retrieve the name of the JVM system property which value has been + loaded as a value for the "prefix" parameter. +
getProperty(String) - +Method in class org.jasypt.properties.EncryptableProperties +
+ Obtains the property value for the specified key (see + Properties.getProperty(String)), decrypting it if needed. +
getProperty(String, String) - +Method in class org.jasypt.properties.EncryptableProperties +
+ Obtains the property value for the specified key (see + Properties.getProperty(String)), decrypting it if needed. +
getProvider() - +Method in interface org.jasypt.digest.config.DigesterConfig +
+ Returns the java.security.Provider implementation object + to be used by the digester for obtaining the digest algorithm. +
getProvider() - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
  +
getProvider() - +Method in interface org.jasypt.encryption.pbe.config.PBEConfig +
+ Returns the java.security.Provider implementation object + to be used by the encryptor for obtaining the encryption algorithm. +
getProvider() - +Method in class org.jasypt.encryption.pbe.config.SimplePBEConfig +
  +
getProviderClassNameEnvName() - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Retrieve the name of the environment variable which value has been + loaded as the provider class name. +
getProviderClassNameEnvName() - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
Retrieve the name of the environment variable which value has been + loaded as the provider class name. +
getProviderClassNameSysPropertyName() - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Retrieve the name of the JVM system property which value has been + loaded as the provider class name. +
getProviderClassNameSysPropertyName() - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
Retrieve the name of the JVM system property which value has been + loaded as the provider class name. +
getProviderName() - +Method in interface org.jasypt.digest.config.DigesterConfig +
+ Returns the name of the java.security.Provider implementation + to be used by the digester for obtaining the digest algorithm. +
getProviderName() - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
  +
getProviderName() - +Method in interface org.jasypt.encryption.pbe.config.PBEConfig +
+ Returns the name of the java.security.Provider implementation + to be used by the encryptor for obtaining the encryption algorithm. +
getProviderName() - +Method in class org.jasypt.encryption.pbe.config.SimplePBEConfig +
  +
getProviderNameEnvName() - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Retrieve the name of the environment variable which value has been + loaded as the provider name. +
getProviderNameEnvName() - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
Retrieve the name of the environment variable which value has been + loaded as the provider name. +
getProviderNameSysPropertyName() - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Retrieve the name of the JVM system property which value has been + loaded as the provider name. +
getProviderNameSysPropertyName() - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
Retrieve the name of the JVM system property which value has been + loaded as the provider name. +
getSaltGenerator() - +Method in interface org.jasypt.digest.config.DigesterConfig +
+ Returns a SaltGenerator implementation to be used by the digester. +
getSaltGenerator() - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
  +
getSaltGenerator() - +Method in interface org.jasypt.encryption.pbe.config.PBEConfig +
+ Returns a SaltGenerator implementation to be used by the + encryptor. +
getSaltGenerator() - +Method in class org.jasypt.encryption.pbe.config.SimplePBEConfig +
  +
getSaltGeneratorClassNameEnvName() - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Retrieve the name of the environment variable which value has been + loaded as the salt generator class name. +
getSaltGeneratorClassNameEnvName() - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
Retrieve the name of the environment variable which value has been + loaded as the salt generator class name. +
getSaltGeneratorClassNameSysPropertyName() - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Retrieve the name of the JVM system property which value has been + loaded as the salt generator class name. +
getSaltGeneratorClassNameSysPropertyName() - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
Retrieve the name of the JVM system property which value has been + loaded as the salt generator class name. +
getSaltSizeBytes() - +Method in interface org.jasypt.digest.config.DigesterConfig +
+ Returns the size of the salt to be used to compute the digest. +
getSaltSizeBytes() - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
  +
getSaltSizeBytesEnvName() - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Retrieve the name of the environment variable which value has been + loaded as the salt size in bytes. +
getSaltSizeBytesSysPropertyName() - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Retrieve the name of the JVM system property which value has been + loaded as the salt size in bytes. +
getStandardBooleanValue(String) - +Static method in class org.jasypt.commons.CommonUtils +
  +
getStandardStringOutputType(String) - +Static method in class org.jasypt.commons.CommonUtils +
  +
getStringOutputType() - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
  +
getStringOutputType() - +Method in class org.jasypt.digest.config.SimpleStringDigesterConfig +
  +
getStringOutputType() - +Method in interface org.jasypt.digest.config.StringDigesterConfig +
+ This parameter lets the user specify the form in which String output + will be encoded. +
getStringOutputType() - +Method in class org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig +
  +
getStringOutputType() - +Method in class org.jasypt.encryption.pbe.config.SimpleStringPBEConfig +
  +
getStringOutputType() - +Method in interface org.jasypt.encryption.pbe.config.StringPBEConfig +
+ This parameter lets the user specify the form in which String output + will be encoded. +
getStringOutputType() - +Method in class org.jasypt.encryption.pbe.config.WebStringPBEConfig +
  +
getStringOutputTypeEnvName() - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
Retrieve the name of the environment variable which value has been + loaded as the String output type. +
getStringOutputTypeEnvName() - +Method in class org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig +
Retrieve the name of the environment variable which value has been + loaded as the String output type. +
getStringOutputTypeSysPropertyName() - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
Retrieve the name of the JVM system property which value has been + loaded as the String output type. +
getStringOutputTypeSysPropertyName() - +Method in class org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig +
Retrieve the name of the JVM system property which value has been + loaded as the String output type. +
getSuffix() - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
  +
getSuffix() - +Method in class org.jasypt.digest.config.SimpleStringDigesterConfig +
  +
getSuffix() - +Method in interface org.jasypt.digest.config.StringDigesterConfig +
+ Adds the returned (plain) suffix at the end of generated digests, + and also expects to find it in any plain message provided for matching + operations (raising an EncryptionOperationNotPossibleException + if not). +
getSuffixEnvName() - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
Retrieve the name of the environment variable which value has been + loaded as a value for the "suffix" parameter. +
getSuffixSysPropertyName() - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
Retrieve the name of the JVM system property which value has been + loaded as a value for the "suffix" parameter. +
getUnicodeNormalizationIgnoredEnvName() - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
Retrieve the name of the environment variable which value has been + loaded as a value for the "unicode normalization ignored" parameter. +
getUnicodeNormalizationIgnoredSysPropertyName() - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
Retrieve the name of the JVM system property which value has been + loaded as a value for the "unicode normalization ignored" parameter. +
getUseLenientSaltSizeCheck() - +Method in interface org.jasypt.digest.config.DigesterConfig +
+ Returns Boolean.TRUE if digest matching operations will allow matching + digests with a salt size different to the one configured in the "saltSizeBytes" + property. +
getUseLenientSaltSizeCheck() - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
  +
getUseLenientSaltSizeCheckEnvName() - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Retrieve the name of the environment variable which value has been + loaded as the value for the useLenientSaltSizeCheck + property. +
getUseLenientSaltSizeCheckSysPropertyName() - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Retrieve the name of the JVM system property which value has been + loaded as the value for the useLenientSaltSizeCheck + property. +
getValidationWord() - +Method in class org.jasypt.encryption.pbe.config.WebPBEConfig +
+ Returns the validation word which will be asked from the web to the + person setting the password for the encryptor this config object belongs + to. +
+
+

+I

+
+
includePlainSaltInEncryptionResults() - +Method in class org.jasypt.salt.ByteArrayFixedSaltGenerator +
As this salt generator provides a fixed salt, its inclusion + unencrypted in encryption results + is not necessary, and in fact not desirable (so that it remains hidden). +
includePlainSaltInEncryptionResults() - +Method in class org.jasypt.salt.FixedByteArraySaltGenerator +
Deprecated. As this salt generator provides a fixed salt, its inclusion + unencrypted in encryption results + is not necessary, and in fact not desirable (so that it remains hidden). +
includePlainSaltInEncryptionResults() - +Method in class org.jasypt.salt.FixedStringSaltGenerator +
Deprecated. As this salt generator provides a fixed salt, its inclusion + unencrypted in encryption results + is not necessary, and in fact not desirable (so that it remains hidden). +
includePlainSaltInEncryptionResults() - +Method in class org.jasypt.salt.RandomSaltGenerator +
This salt generator needs the salt to be included unencrypted in + encryption results, because of its being random. +
includePlainSaltInEncryptionResults() - +Method in interface org.jasypt.salt.SaltGenerator +
+ Determines if the digests and encrypted messages created with a + specific salt generator will include (prepended) the unencrypted + salt itself, so that it can be used for matching and decryption + operations. +
includePlainSaltInEncryptionResults() - +Method in class org.jasypt.salt.StringFixedSaltGenerator +
As this salt generator provides a fixed salt, its inclusion + unencrypted in encryption results + is not necessary, and in fact not desirable (so that it remains hidden). +
includePlainSaltInEncryptionResults() - +Method in class org.jasypt.salt.ZeroSaltGenerator +
As this salt generator provides a predictable salt, its inclusion + unencrypted in encryption results + is not necessary, and in fact not desirable (so that it remains hidden). +
init(FilterConfig) - +Method in class org.jasypt.web.pbeconfig.WebPBEConfigFilter +
  +
INIT_PARAM_INITIALIZER_CLASS_NAME - +Static variable in class org.jasypt.web.pbeconfig.WebPBEInitializationContextListener +
  +
initialize() - +Method in class org.jasypt.digest.PooledByteDigester +
+ Initialize the digester. +
initialize() - +Method in class org.jasypt.digest.PooledStringDigester +
+ Initialize the digester. +
initialize() - +Method in class org.jasypt.digest.StandardByteDigester +
+ Initialize the digester. +
initialize() - +Method in class org.jasypt.digest.StandardStringDigester +
+ Initialize the digester. +
initialize() - +Method in class org.jasypt.encryption.pbe.PooledPBEBigDecimalEncryptor +
+ Initialize the encryptor. +
initialize() - +Method in class org.jasypt.encryption.pbe.PooledPBEBigIntegerEncryptor +
+ Initialize the encryptor. +
initialize() - +Method in class org.jasypt.encryption.pbe.PooledPBEByteEncryptor +
+ Initialize the encryptor. +
initialize() - +Method in class org.jasypt.encryption.pbe.PooledPBEStringEncryptor +
+ Initialize the encryptor. +
initialize() - +Method in class org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor +
+ Initialize the encryptor. +
initialize() - +Method in class org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor +
+ Initialize the encryptor. +
initialize() - +Method in class org.jasypt.encryption.pbe.StandardPBEByteEncryptor +
+ Initialize the encryptor. +
initialize() - +Method in class org.jasypt.encryption.pbe.StandardPBEStringEncryptor +
+ Initialize the encryptor. +
initializeWebPBEConfigs() - +Method in interface org.jasypt.web.pbeconfig.WebPBEInitializer +
+ Method called by WebPBEInitializationContextListener at + application deploy time for initialization of jasypt encryptors. +
IntegerNumberEncryptor - Interface in org.jasypt.util.numeric
+ Common interface for all util classes aimed at integer number encryption.
isComplete() - +Method in class org.jasypt.encryption.pbe.config.WebPBEConfig +
+ Returns whether this config object is complete or not (both name and + validation word have been set). +
isEmpty(String) - +Static method in class org.jasypt.commons.CommonUtils +
  +
isEncryptedValue(String) - +Static method in class org.jasypt.properties.PropertyValueEncryptionUtils +
  +
isInitialized() - +Method in class org.jasypt.digest.PooledByteDigester +
+ Returns true if the digester has already been initialized, false if + not.
+ Initialization happens: +
isInitialized() - +Method in class org.jasypt.digest.PooledStringDigester +
+ Returns true if the digester has already been initialized, false if + not.
+ Initialization happens: +
isInitialized() - +Method in class org.jasypt.digest.StandardByteDigester +
+ Returns true if the digester has already been initialized, false if + not.
+ Initialization happens: +
isInitialized() - +Method in class org.jasypt.digest.StandardStringDigester +
+ Returns true if the digester has already been initialized, false if + not.
+ Initialization happens: +
isInitialized() - +Method in class org.jasypt.encryption.pbe.PooledPBEBigDecimalEncryptor +
+ Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens: +
isInitialized() - +Method in class org.jasypt.encryption.pbe.PooledPBEBigIntegerEncryptor +
+ Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens: +
isInitialized() - +Method in class org.jasypt.encryption.pbe.PooledPBEByteEncryptor +
+ Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens: +
isInitialized() - +Method in class org.jasypt.encryption.pbe.PooledPBEStringEncryptor +
+ Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens: +
isInitialized() - +Method in class org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor +
+ Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens: +
isInitialized() - +Method in class org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor +
+ Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens: +
isInitialized() - +Method in class org.jasypt.encryption.pbe.StandardPBEByteEncryptor +
+ Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens: +
isInitialized() - +Method in class org.jasypt.encryption.pbe.StandardPBEStringEncryptor +
+ Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens: +
isNotEmpty(String) - +Static method in class org.jasypt.commons.CommonUtils +
  +
isUnicodeNormalizationIgnored() - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
  +
isUnicodeNormalizationIgnored() - +Method in class org.jasypt.digest.config.SimpleStringDigesterConfig +
  +
isUnicodeNormalizationIgnored() - +Method in interface org.jasypt.digest.config.StringDigesterConfig +
+ This parameter lets the user specify if the Unicode text normalization + step performed during String digest and matching should be ignored. +
isWebConfigurationDone() - +Method in class org.jasypt.web.pbeconfig.WebPBEConfigRegistry +
  +
+
+

+J

+
+
JasyptPBEStringDecryptionCLI - Class in org.jasypt.intf.cli
+ This class supports the CLI "decrypt" operation.
JasyptPBEStringEncryptionCLI - Class in org.jasypt.intf.cli
+ This class supports the CLI "encrypt" operation.
JasyptStatelessService - Class in org.jasypt.intf.service
+ This class acts as a stateless service for encryption, decryption and + digest operations, letting its clients configure all the jasypt environment + (algorithms, passwords, providers...) from Strings in a single call, be it + using direct values, environment variables or java vm properties.
JasyptStatelessService() - +Constructor for class org.jasypt.intf.service.JasyptStatelessService +
Creates a new instance of JasyptStatelessService. +
JasyptStringDigestCLI - Class in org.jasypt.intf.cli
+ This class supports the CLI "digest" operation.
+
+

+M

+
+
main(String[]) - +Static method in class org.jasypt.intf.cli.AlgorithmRegistryCLI +
+ CLI execution method. +
main(String[]) - +Static method in class org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI +
+ CLI execution method. +
main(String[]) - +Static method in class org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI +
+ CLI execution method. +
main(String[]) - +Static method in class org.jasypt.intf.cli.JasyptStringDigestCLI +
+ CLI execution method. +
matches(byte[], byte[]) - +Method in interface org.jasypt.digest.ByteDigester +
+ Check whether a message matches a digest, managing aspects like + salt, hashing iterations, etc. +
matches(byte[], byte[]) - +Method in class org.jasypt.digest.PooledByteDigester +
+ Checks a message against a given digest. +
matches(String, String) - +Method in class org.jasypt.digest.PooledStringDigester +
+ Checks a message against a given digest. +
matches(byte[], byte[]) - +Method in class org.jasypt.digest.StandardByteDigester +
+ Checks a message against a given digest. +
matches(String, String) - +Method in class org.jasypt.digest.StandardStringDigester +
+ Checks a message against a given digest. +
matches(String, String) - +Method in interface org.jasypt.digest.StringDigester +
+ Check whether a message matches a digest, managing aspects like + salt, hashing iterations, etc. +
MESSAGE_CHARSET - +Static variable in class org.jasypt.digest.StandardStringDigester +
+ Charset to be used to obtain "digestable" byte arrays from input Strings. +
+
+

+N

+
+
nextRandomInt() - +Static method in class org.jasypt.commons.CommonUtils +
  +
Normalizer - Class in org.jasypt.normalization
+ Utility for the normalization of Unicode Strings to NFC form.
normalizeToNfc(String) - +Static method in class org.jasypt.normalization.Normalizer +
+ Normalize Unicode-input message to NFC. +
normalizeToNfc(char[]) - +Static method in class org.jasypt.normalization.Normalizer +
+ Normalize Unicode-input message to NFC. +
+
+

+O

+
+
org.jasypt.commons - package org.jasypt.commons
 
org.jasypt.digest - package org.jasypt.digest
 
org.jasypt.digest.config - package org.jasypt.digest.config
 
org.jasypt.encryption - package org.jasypt.encryption
 
org.jasypt.encryption.pbe - package org.jasypt.encryption.pbe
 
org.jasypt.encryption.pbe.config - package org.jasypt.encryption.pbe.config
 
org.jasypt.exceptions - package org.jasypt.exceptions
 
org.jasypt.intf.cli - package org.jasypt.intf.cli
 
org.jasypt.intf.service - package org.jasypt.intf.service
 
org.jasypt.normalization - package org.jasypt.normalization
 
org.jasypt.properties - package org.jasypt.properties
 
org.jasypt.registry - package org.jasypt.registry
 
org.jasypt.salt - package org.jasypt.salt
 
org.jasypt.util.binary - package org.jasypt.util.binary
 
org.jasypt.util.digest - package org.jasypt.util.digest
 
org.jasypt.util.numeric - package org.jasypt.util.numeric
 
org.jasypt.util.password - package org.jasypt.util.password
 
org.jasypt.util.password.rfc2307 - package org.jasypt.util.password.rfc2307
 
org.jasypt.util.text - package org.jasypt.util.text
 
org.jasypt.web.pbeconfig - package org.jasypt.web.pbeconfig
 
+
+

+P

+
+
PasswordAlreadyCleanedException - Exception in org.jasypt.exceptions
Exception thrown when an attempt is made to access the configured + password of an encryptor when this password has already been + cleaned (so that it appears no more as an immutable String in memory).
PasswordAlreadyCleanedException() - +Constructor for exception org.jasypt.exceptions.PasswordAlreadyCleanedException +
  +
PasswordBased - Interface in org.jasypt.encryption.pbe
+ Common interface for all entities which can be set a password.
PasswordEncryptor - Interface in org.jasypt.util.password
+ Common interface for all util classes aimed at password encryption.
PBEBigDecimalCleanablePasswordEncryptor - Interface in org.jasypt.encryption.pbe
+ Common interface for all Password Based Encryptors which receive a + BigDecimal message and return a BigDecimal result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
PBEBigDecimalEncryptor - Interface in org.jasypt.encryption.pbe
+ Common interface for all Password Based Encryptors which receive a + BigDecimal message and return a BigDecimal result.
PBEBigIntegerCleanablePasswordEncryptor - Interface in org.jasypt.encryption.pbe
+ Common interface for all Password Based Encryptors which receive a BigInteger + message and return a BigInteger result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
PBEBigIntegerEncryptor - Interface in org.jasypt.encryption.pbe
+ Common interface for all Password Based Encryptors which receive a BigInteger + message and return a BigInteger result.
PBEByteCleanablePasswordEncryptor - Interface in org.jasypt.encryption.pbe
+ Common interface for all Password Based Encryptors which receive a + byte array message and return a byte array result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
PBEByteEncryptor - Interface in org.jasypt.encryption.pbe
+ Common interface for all Password Based Encryptors which receive a + byte array message and return a byte array result.
PBECleanablePasswordConfig - Interface in org.jasypt.encryption.pbe.config
+ Common interface for all PBEConfig implementations that store passwords as char[] instead + of String and also allow this passwords to be set as char[] instead of Strings.
PBEConfig - Interface in org.jasypt.encryption.pbe.config
+ Common interface for config classes applicable to + StandardPBEByteEncryptor, + StandardPBEStringEncryptor, + StandardPBEBigIntegerEncryptor or + StandardPBEBigDecimalEncryptor objects.
PBEStringCleanablePasswordEncryptor - Interface in org.jasypt.encryption.pbe
+ Common interface for all Password Based Encryptors which receive a + String message and return a String result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
PBEStringEncryptor - Interface in org.jasypt.encryption.pbe
+ Common interface for all Password Based Encryptors which receive a + String message and return a String result.
PooledByteDigester - Class in org.jasypt.digest
+ Pooled implementation of ByteDigester that in fact contains + an array of StandardByteDigester objects which are used + to attend digest and match requests in round-robin.
PooledByteDigester() - +Constructor for class org.jasypt.digest.PooledByteDigester +
Creates a new instance of PooledStandardByteDigester. +
PooledPBEBigDecimalEncryptor - Class in org.jasypt.encryption.pbe
+ Pooled implementation of PBEBigDecimalEncryptor that in fact contains + an array of StandardPBEBigDecimalEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
PooledPBEBigDecimalEncryptor() - +Constructor for class org.jasypt.encryption.pbe.PooledPBEBigDecimalEncryptor +
Creates a new instance of PooledStandardPBEBigDecimalEncryptor. +
PooledPBEBigIntegerEncryptor - Class in org.jasypt.encryption.pbe
+ Pooled implementation of PBEBigIntegerEncryptor that in fact contains + an array of StandardPBEBigIntegerEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
PooledPBEBigIntegerEncryptor() - +Constructor for class org.jasypt.encryption.pbe.PooledPBEBigIntegerEncryptor +
Creates a new instance of PooledStandardPBEBigIntegerEncryptor. +
PooledPBEByteEncryptor - Class in org.jasypt.encryption.pbe
+ Pooled implementation of PBEByteEncryptor that in fact contains + an array of StandardPBEByteEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
PooledPBEByteEncryptor() - +Constructor for class org.jasypt.encryption.pbe.PooledPBEByteEncryptor +
Creates a new instance of PooledStandardPBEByteEncryptor. +
PooledPBEStringEncryptor - Class in org.jasypt.encryption.pbe
+ Pooled implementation of PBEStringEncryptor that in fact contains + an array of StandardPBEStringEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
PooledPBEStringEncryptor() - +Constructor for class org.jasypt.encryption.pbe.PooledPBEStringEncryptor +
Creates a new instance of PooledStandardPBEStringEncryptor. +
PooledStringDigester - Class in org.jasypt.digest
+ Pooled implementation of StringDigester that in fact contains + an array of StandardStringDigester objects which are used + to attend digest and match requests in round-robin.
PooledStringDigester() - +Constructor for class org.jasypt.digest.PooledStringDigester +
Creates a new instance of PooledStandardStringDigester. +
PropertyValueEncryptionUtils - Class in org.jasypt.properties
+ Utility class to encrypt/decrypt values in properties files which could be + encrypted.
+
+

+R

+
+
RandomSaltGenerator - Class in org.jasypt.salt
+ This implementation of SaltGenerator holds a secure random + generator which can be used for generating random salts for encryption + or digesting.
RandomSaltGenerator() - +Constructor for class org.jasypt.salt.RandomSaltGenerator +
Creates a new instance of RandomSaltGenerator using the + default secure random number generation algorithm. +
RandomSaltGenerator(String) - +Constructor for class org.jasypt.salt.RandomSaltGenerator +
Creates a new instance of RandomSaltGenerator specifying a + secure random number generation algorithm. +
registerConfig(WebPBEConfig) - +Method in class org.jasypt.web.pbeconfig.WebPBEConfigRegistry +
  +
RFC2307MD5PasswordEncryptor - Class in org.jasypt.util.password.rfc2307
+ Utility class for easily performing password digesting and checking + according to {MD5}, a password encryption scheme defined in RFC2307 + and commonly found in LDAP systems.
RFC2307MD5PasswordEncryptor() - +Constructor for class org.jasypt.util.password.rfc2307.RFC2307MD5PasswordEncryptor +
Creates a new instance of RFC2307MD5PasswordEncryptor +
RFC2307SHAPasswordEncryptor - Class in org.jasypt.util.password.rfc2307
+ Utility class for easily performing password digesting and checking + according to {SHA}, a password encryption scheme defined in RFC2307 + and commonly found in LDAP systems.
RFC2307SHAPasswordEncryptor() - +Constructor for class org.jasypt.util.password.rfc2307.RFC2307SHAPasswordEncryptor +
Creates a new instance of RFC2307SHAPasswordEncryptor +
RFC2307SMD5PasswordEncryptor - Class in org.jasypt.util.password.rfc2307
+ Utility class for easily performing password digesting and checking + according to {SMD5}, a password encryption scheme defined in RFC2307 + and commonly found in LDAP systems.
RFC2307SMD5PasswordEncryptor() - +Constructor for class org.jasypt.util.password.rfc2307.RFC2307SMD5PasswordEncryptor +
Creates a new instance of RFC2307OpenLDAPSSHAPasswordEncryptor +
RFC2307SSHAPasswordEncryptor - Class in org.jasypt.util.password.rfc2307
+ Utility class for easily performing password digesting and checking + according to {SSHA}, a password encryption scheme defined in RFC2307 + and commonly found in LDAP systems.
RFC2307SSHAPasswordEncryptor() - +Constructor for class org.jasypt.util.password.rfc2307.RFC2307SSHAPasswordEncryptor +
Creates a new instance of RFC2307OpenLDAPSSHAPasswordEncryptor +
+
+

+S

+
+
SaltGenerator - Interface in org.jasypt.salt
+ Common interface for all salt generators which can be applied in digest + or encryption operations.
setAlgorithm(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
  +
setAlgorithm(String) - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
+ Sets the name of the algorithm. +
setAlgorithm(String) - +Method in class org.jasypt.digest.PooledByteDigester +
+ Sets the algorithm to be used for digesting, like MD5 + or SHA-1. +
setAlgorithm(String) - +Method in class org.jasypt.digest.PooledStringDigester +
+ Sets the algorithm to be used for digesting, like MD5 + or SHA-1. +
setAlgorithm(String) - +Method in class org.jasypt.digest.StandardByteDigester +
+ Sets the algorithm to be used for digesting, like MD5 + or SHA-1. +
setAlgorithm(String) - +Method in class org.jasypt.digest.StandardStringDigester +
+ Sets the algorithm to be used for digesting, like MD5 + or SHA-1. +
setAlgorithm(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
  +
setAlgorithm(String) - +Method in class org.jasypt.encryption.pbe.config.SimplePBEConfig +
+ Sets a value for the encryption algorithm +
setAlgorithm(String) - +Method in class org.jasypt.encryption.pbe.PooledPBEBigDecimalEncryptor +
+ Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES. +
setAlgorithm(String) - +Method in class org.jasypt.encryption.pbe.PooledPBEBigIntegerEncryptor +
+ Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES. +
setAlgorithm(String) - +Method in class org.jasypt.encryption.pbe.PooledPBEByteEncryptor +
+ Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES. +
setAlgorithm(String) - +Method in class org.jasypt.encryption.pbe.PooledPBEStringEncryptor +
+ Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES. +
setAlgorithm(String) - +Method in class org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor +
+ Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES. +
setAlgorithm(String) - +Method in class org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor +
+ Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES. +
setAlgorithm(String) - +Method in class org.jasypt.encryption.pbe.StandardPBEByteEncryptor +
+ Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES. +
setAlgorithm(String) - +Method in class org.jasypt.encryption.pbe.StandardPBEStringEncryptor +
+ Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES. +
setAlgorithm(String) - +Method in class org.jasypt.util.digest.Digester +
+ Sets the algorithm to be used for digesting, like MD5 + or SHA-1. +
setAlgorithm(String) - +Method in class org.jasypt.util.password.ConfigurablePasswordEncryptor +
+ Sets the algorithm to be used for digesting, like MD5 + or SHA-1. +
setAlgorithmEnvName(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Set the config object to use the specified environment variable to + load the value for the algorithm. +
setAlgorithmEnvName(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
Set the config object to use the specified environment variable to + load the value for the algorithm. +
setAlgorithmSysPropertyName(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Set the config object to use the specified JVM system property to + load the value for the algorithm. +
setAlgorithmSysPropertyName(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
Set the config object to use the specified JVM system property to + load the value for the algorithm. +
setCharset(String) - +Method in class org.jasypt.salt.FixedStringSaltGenerator +
Deprecated. Sets the charset to be applied to the salt for conversion into bytes. +
setConfig(DigesterConfig) - +Method in class org.jasypt.digest.PooledByteDigester +
+ Sets a DigesterConfig object + for the digester. +
setConfig(DigesterConfig) - +Method in class org.jasypt.digest.PooledStringDigester +
+ Sets a DigesterConfig + or StringDigesterConfig object + for the digester. +
setConfig(DigesterConfig) - +Method in class org.jasypt.digest.StandardByteDigester +
+ Sets a DigesterConfig object + for the digester. +
setConfig(DigesterConfig) - +Method in class org.jasypt.digest.StandardStringDigester +
+ Sets a DigesterConfig + or StringDigesterConfig object + for the digester. +
setConfig(PBEConfig) - +Method in class org.jasypt.encryption.pbe.PooledPBEBigDecimalEncryptor +
+ Sets a PBEConfig object + for the encryptor. +
setConfig(PBEConfig) - +Method in class org.jasypt.encryption.pbe.PooledPBEBigIntegerEncryptor +
+ Sets a PBEConfig object + for the encryptor. +
setConfig(PBEConfig) - +Method in class org.jasypt.encryption.pbe.PooledPBEByteEncryptor +
+ Sets a PBEConfig object + for the encryptor. +
setConfig(PBEConfig) - +Method in class org.jasypt.encryption.pbe.PooledPBEStringEncryptor +
+ Sets a PBEConfig object + for the encryptor. +
setConfig(PBEConfig) - +Method in class org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor +
+ Sets a PBEConfig object + for the encryptor. +
setConfig(PBEConfig) - +Method in class org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor +
+ Sets a PBEConfig object + for the encryptor. +
setConfig(PBEConfig) - +Method in class org.jasypt.encryption.pbe.StandardPBEByteEncryptor +
+ Sets a PBEConfig object + for the encryptor. +
setConfig(PBEConfig) - +Method in class org.jasypt.encryption.pbe.StandardPBEStringEncryptor +
+ Sets a PBEConfig object + for the encryptor. +
setConfig(DigesterConfig) - +Method in class org.jasypt.util.password.ConfigurablePasswordEncryptor +
Lets the user configure this encryptor with a DigesterConfig + object, like if he/she were using a StandardStringDigester object + directly. +
setInvertPositionOfPlainSaltInEncryptionResults(Boolean) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
  +
setInvertPositionOfPlainSaltInEncryptionResults(Boolean) - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
+ Whether the plain (not hashed) salt bytes are to + be appended after the digest operation result bytes. +
setInvertPositionOfPlainSaltInEncryptionResults(boolean) - +Method in class org.jasypt.digest.PooledByteDigester +
+ Whether the plain (not hashed) salt bytes are to + be appended after the digest operation result bytes. +
setInvertPositionOfPlainSaltInEncryptionResults(boolean) - +Method in class org.jasypt.digest.PooledStringDigester +
+ Whether the plain (not hashed) salt bytes are to + be appended after the digest operation result bytes. +
setInvertPositionOfPlainSaltInEncryptionResults(boolean) - +Method in class org.jasypt.digest.StandardByteDigester +
+ Whether the plain (not hashed) salt bytes are to + be appended after the digest operation result bytes. +
setInvertPositionOfPlainSaltInEncryptionResults(boolean) - +Method in class org.jasypt.digest.StandardStringDigester +
+ Whether the plain (not hashed) salt bytes are to + be appended after the digest operation result bytes. +
setInvertPositionOfPlainSaltInEncryptionResultsEnvName(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
+ Set the config object to use the specified environment variable to + load the value for the invertPositionOfPlainSaltInEncryptionResults + property. +
setInvertPositionOfPlainSaltInEncryptionResultsSysPropertyName(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
+ Set the config object to use the specified JVM system property to + load the value for the invertPositionOfPlainSaltInEncryptionResults + property. +
setInvertPositionOfSaltInMessageBeforeDigesting(Boolean) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
  +
setInvertPositionOfSaltInMessageBeforeDigesting(Boolean) - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
+ Whether the salt bytes are to be appended after the + message ones before performing the digest operation on the whole. +
setInvertPositionOfSaltInMessageBeforeDigesting(boolean) - +Method in class org.jasypt.digest.PooledByteDigester +
+ Whether the salt bytes are to be appended after the + message ones before performing the digest operation on the whole. +
setInvertPositionOfSaltInMessageBeforeDigesting(boolean) - +Method in class org.jasypt.digest.PooledStringDigester +
+ Whether the salt bytes are to be appended after the + message ones before performing the digest operation on the whole. +
setInvertPositionOfSaltInMessageBeforeDigesting(boolean) - +Method in class org.jasypt.digest.StandardByteDigester +
+ Whether the salt bytes are to be appended after the + message ones before performing the digest operation on the whole. +
setInvertPositionOfSaltInMessageBeforeDigesting(boolean) - +Method in class org.jasypt.digest.StandardStringDigester +
+ Whether the salt bytes are to be appended after the + message ones before performing the digest operation on the whole. +
setInvertPositionOfSaltInMessageBeforeDigestingEnvName(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
+ Set the config object to use the specified environment variable to + load the value for the invertPositionOfSaltInMessageBeforeDigesting + property. +
setInvertPositionOfSaltInMessageBeforeDigestingSysPropertyName(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
+ Set the config object to use the specified JVM system property to + load the value for the invertPositionOfSaltInMessageBeforeDigesting + property. +
setIterations(Integer) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
  +
setIterations(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
  +
setIterations(Integer) - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
+ Sets the number of hashing iterations. +
setIterations(String) - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
+ Sets the number of hashing iterations. +
setIterations(int) - +Method in class org.jasypt.digest.PooledByteDigester +
+ Set the number of times the hash function will be applied recursively. +
setIterations(int) - +Method in class org.jasypt.digest.PooledStringDigester +
+ Set the number of times the hash function will be applied recursively. +
setIterations(int) - +Method in class org.jasypt.digest.StandardByteDigester +
+ Set the number of times the hash function will be applied recursively. +
setIterations(int) - +Method in class org.jasypt.digest.StandardStringDigester +
+ Set the number of times the hash function will be applied recursively. +
setIterationsEnvName(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Set the config object to use the specified environment variable to + load the value for the iteration count. +
setIterationsSysPropertyName(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Set the config object to use the specified JVM system property to + load the value for the iteration count. +
setKeyObtentionIterations(Integer) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
  +
setKeyObtentionIterations(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
  +
setKeyObtentionIterations(Integer) - +Method in class org.jasypt.encryption.pbe.config.SimplePBEConfig +
Sets the number of hashing iterations applied to obtain the + encryption key. +
setKeyObtentionIterations(String) - +Method in class org.jasypt.encryption.pbe.config.SimplePBEConfig +
Sets the number of hashing iterations applied to obtain the + encryption key. +
setKeyObtentionIterations(int) - +Method in class org.jasypt.encryption.pbe.PooledPBEBigDecimalEncryptor +
+ Set the number of hashing iterations applied to obtain the + encryption key. +
setKeyObtentionIterations(int) - +Method in class org.jasypt.encryption.pbe.PooledPBEBigIntegerEncryptor +
+ Set the number of hashing iterations applied to obtain the + encryption key. +
setKeyObtentionIterations(int) - +Method in class org.jasypt.encryption.pbe.PooledPBEByteEncryptor +
+ Set the number of hashing iterations applied to obtain the + encryption key. +
setKeyObtentionIterations(int) - +Method in class org.jasypt.encryption.pbe.PooledPBEStringEncryptor +
+ Set the number of hashing iterations applied to obtain the + encryption key. +
setKeyObtentionIterations(int) - +Method in class org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor +
+ Set the number of hashing iterations applied to obtain the + encryption key. +
setKeyObtentionIterations(int) - +Method in class org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor +
+ Set the number of hashing iterations applied to obtain the + encryption key. +
setKeyObtentionIterations(int) - +Method in class org.jasypt.encryption.pbe.StandardPBEByteEncryptor +
+ Set the number of hashing iterations applied to obtain the + encryption key. +
setKeyObtentionIterations(int) - +Method in class org.jasypt.encryption.pbe.StandardPBEStringEncryptor +
+ Set the number of hashing iterations applied to obtain the + encryption key. +
setKeyObtentionIterationsEnvName(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
Set the config object to use the specified environment variable to + load the value for the key obtention iteration count. +
setKeyObtentionIterationsSysPropertyName(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
Set the config object to use the specified JVM system property to + load the value for the key obtention iteration count. +
setName(String) - +Method in class org.jasypt.encryption.pbe.config.WebPBEConfig +
+ Sets the name by which this WebPBEConfig object will be identified + from the web. +
setPassword(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
  +
setPassword(String) - +Method in class org.jasypt.encryption.pbe.config.SimplePBEConfig +
Sets the password to be used for encryption. +
setPassword(String) - +Method in interface org.jasypt.encryption.pbe.PasswordBased +
+ Sets a password to be used by the encryptor. +
setPassword(String) - +Method in class org.jasypt.encryption.pbe.PooledPBEBigDecimalEncryptor +
+ Sets the password to be used. +
setPassword(String) - +Method in class org.jasypt.encryption.pbe.PooledPBEBigIntegerEncryptor +
+ Sets the password to be used. +
setPassword(String) - +Method in class org.jasypt.encryption.pbe.PooledPBEByteEncryptor +
+ Sets the password to be used. +
setPassword(String) - +Method in class org.jasypt.encryption.pbe.PooledPBEStringEncryptor +
+ Sets the password to be used. +
setPassword(String) - +Method in class org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor +
+ Sets the password to be used. +
setPassword(String) - +Method in class org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor +
+ Sets the password to be used. +
setPassword(String) - +Method in class org.jasypt.encryption.pbe.StandardPBEByteEncryptor +
+ Sets the password to be used. +
setPassword(String) - +Method in class org.jasypt.encryption.pbe.StandardPBEStringEncryptor +
+ Sets the password to be used. +
setPassword(String) - +Method in class org.jasypt.util.binary.BasicBinaryEncryptor +
Sets a password. +
setPassword(String) - +Method in class org.jasypt.util.binary.StrongBinaryEncryptor +
Sets a password. +
setPassword(String) - +Method in class org.jasypt.util.numeric.BasicDecimalNumberEncryptor +
Sets a password. +
setPassword(String) - +Method in class org.jasypt.util.numeric.BasicIntegerNumberEncryptor +
Sets a password. +
setPassword(String) - +Method in class org.jasypt.util.numeric.StrongDecimalNumberEncryptor +
Sets a password. +
setPassword(String) - +Method in class org.jasypt.util.numeric.StrongIntegerNumberEncryptor +
Sets a password. +
setPassword(String) - +Method in class org.jasypt.util.text.BasicTextEncryptor +
Sets a password. +
setPassword(String) - +Method in class org.jasypt.util.text.StrongTextEncryptor +
Sets a password. +
setPasswordCharArray(char[]) - +Method in interface org.jasypt.encryption.pbe.CleanablePasswordBased +
+ Sets a password to be used by the encryptor, as a (cleanable) char[]. +
setPasswordCharArray(char[]) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
  +
setPasswordCharArray(char[]) - +Method in class org.jasypt.encryption.pbe.config.SimplePBEConfig +
Sets the password to be used for encryption, as a char[]. +
setPasswordCharArray(char[]) - +Method in class org.jasypt.encryption.pbe.PooledPBEBigDecimalEncryptor +
+ Sets the password to be used, as a char[]. +
setPasswordCharArray(char[]) - +Method in class org.jasypt.encryption.pbe.PooledPBEBigIntegerEncryptor +
+ Sets the password to be used, as a char[]. +
setPasswordCharArray(char[]) - +Method in class org.jasypt.encryption.pbe.PooledPBEByteEncryptor +
+ Sets the password to be used, as a char[]. +
setPasswordCharArray(char[]) - +Method in class org.jasypt.encryption.pbe.PooledPBEStringEncryptor +
+ Sets the password to be used, as a char[]. +
setPasswordCharArray(char[]) - +Method in class org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor +
+ Sets the password to be used, as a char[]. +
setPasswordCharArray(char[]) - +Method in class org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor +
+ Sets the password to be used, as a char[]. +
setPasswordCharArray(char[]) - +Method in class org.jasypt.encryption.pbe.StandardPBEByteEncryptor +
+ Sets the password to be used, as a char[]. +
setPasswordCharArray(char[]) - +Method in class org.jasypt.encryption.pbe.StandardPBEStringEncryptor +
+ Sets the password to be used, as a char[]. +
setPasswordCharArray(char[]) - +Method in class org.jasypt.util.binary.BasicBinaryEncryptor +
Sets a password, as a char[]. +
setPasswordCharArray(char[]) - +Method in class org.jasypt.util.binary.StrongBinaryEncryptor +
Sets a password, as a char[]. +
setPasswordCharArray(char[]) - +Method in class org.jasypt.util.numeric.BasicDecimalNumberEncryptor +
Sets a password, as a char[]. +
setPasswordCharArray(char[]) - +Method in class org.jasypt.util.numeric.BasicIntegerNumberEncryptor +
Sets a password, as a char[]. +
setPasswordCharArray(char[]) - +Method in class org.jasypt.util.numeric.StrongDecimalNumberEncryptor +
Sets a password, as a char[]. +
setPasswordCharArray(char[]) - +Method in class org.jasypt.util.numeric.StrongIntegerNumberEncryptor +
Sets a password, as a char[]. +
setPasswordCharArray(char[]) - +Method in class org.jasypt.util.text.BasicTextEncryptor +
Sets a password, as a char[] +
setPasswordCharArray(char[]) - +Method in class org.jasypt.util.text.StrongTextEncryptor +
Sets a password, as a char[]. +
setPasswordEnvName(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
Set the config object to use the specified environment variable to + load the value for the password. +
setPasswordSysPropertyName(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
Set the config object to use the specified JVM system property to + load the value for the password. +
setPlainDigest(boolean) - +Method in class org.jasypt.util.password.ConfigurablePasswordEncryptor +
Lets the user specify if he/she wants a plain digest used as an + encryption mechanism (no salt or iterations, as with + MessageDigest), or rather use the + jasypt's usual stronger mechanism for password encryption (based + on the use of a salt and the iteration of the hash function). +
setPoolSize(Integer) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
  +
setPoolSize(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
  +
setPoolSize(Integer) - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
+ Sets the size of the pool of digesters to be created. +
setPoolSize(String) - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
+ Sets the size of the pool of digesters to be created. +
setPoolSize(int) - +Method in class org.jasypt.digest.PooledByteDigester +
+ Sets the size of the pool of digesters to be created. +
setPoolSize(int) - +Method in class org.jasypt.digest.PooledStringDigester +
+ Sets the size of the pool of digesters to be created. +
setPoolSize(Integer) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
  +
setPoolSize(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
  +
setPoolSize(Integer) - +Method in class org.jasypt.encryption.pbe.config.SimplePBEConfig +
+ Sets the size of the pool of encryptors to be created. +
setPoolSize(String) - +Method in class org.jasypt.encryption.pbe.config.SimplePBEConfig +
+ Sets the size of the pool of encryptors to be created. +
setPoolSize(int) - +Method in class org.jasypt.encryption.pbe.PooledPBEBigDecimalEncryptor +
+ Sets the size of the pool of digesters to be created. +
setPoolSize(int) - +Method in class org.jasypt.encryption.pbe.PooledPBEBigIntegerEncryptor +
+ Sets the size of the pool of digesters to be created. +
setPoolSize(int) - +Method in class org.jasypt.encryption.pbe.PooledPBEByteEncryptor +
+ Sets the size of the pool of digesters to be created. +
setPoolSize(int) - +Method in class org.jasypt.encryption.pbe.PooledPBEStringEncryptor +
+ Sets the size of the pool of digesters to be created. +
setPoolSizeEnvName(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
+ Set the config object to use the specified environment variable to + load the value for the poolSize + property. +
setPoolSizeEnvName(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
+ Set the config object to use the specified environment variable to + load the value for the poolSize + property. +
setPoolSizeSysPropertyName(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
+ Set the config object to use the specified JVM system property to + load the value for the useLenientSaltSizeCheck + property. +
setPoolSizeSysPropertyName(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
+ Set the config object to use the specified JVM system property to + load the value for the useLenientSaltSizeCheck + property. +
setPrefix(String) - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
+ Sets the prefix to be added at the beginning of encryption results, and also to + be expected at the beginning of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not). +
setPrefix(String) - +Method in class org.jasypt.digest.config.SimpleStringDigesterConfig +
+ Sets the prefix to be added at the beginning of encryption results, and also to + be expected at the beginning of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not). +
setPrefix(String) - +Method in class org.jasypt.digest.PooledStringDigester +
+ Sets the prefix to be added at the beginning of encryption results, and also to + be expected at the beginning of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not). +
setPrefix(String) - +Method in class org.jasypt.digest.StandardStringDigester +
+ Sets the prefix to be added at the beginning of encryption results, and also to + be expected at the beginning of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not). +
setPrefixEnvName(String) - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
Set the config object to use the specified environment variable to + load the value for the "prefix" parameter. +
setPrefixSysPropertyName(String) - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
Set the config object to use the specified JVM system property to + load a value for the "prefix" parameter. +
setProvider(Provider) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
  +
setProvider(Provider) - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
+ Sets the security provider to be used for obtaining the digest + algorithm. +
setProvider(Provider) - +Method in class org.jasypt.digest.PooledByteDigester +
+ Sets the security provider to be asked for the digest algorithm. +
setProvider(Provider) - +Method in class org.jasypt.digest.PooledStringDigester +
+ Sets the security provider to be asked for the digest algorithm. +
setProvider(Provider) - +Method in class org.jasypt.digest.StandardByteDigester +
+ Sets the security provider to be asked for the digest algorithm. +
setProvider(Provider) - +Method in class org.jasypt.digest.StandardStringDigester +
+ Sets the security provider to be asked for the digest algorithm. +
setProvider(Provider) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
  +
setProvider(Provider) - +Method in class org.jasypt.encryption.pbe.config.SimplePBEConfig +
+ Sets the security provider to be used for obtaining the encryption + algorithm. +
setProvider(Provider) - +Method in class org.jasypt.encryption.pbe.PooledPBEBigDecimalEncryptor +
+ Sets the security provider to be asked for the encryption algorithm. +
setProvider(Provider) - +Method in class org.jasypt.encryption.pbe.PooledPBEBigIntegerEncryptor +
+ Sets the security provider to be asked for the encryption algorithm. +
setProvider(Provider) - +Method in class org.jasypt.encryption.pbe.PooledPBEByteEncryptor +
+ Sets the security provider to be asked for the encryption algorithm. +
setProvider(Provider) - +Method in class org.jasypt.encryption.pbe.PooledPBEStringEncryptor +
+ Sets the security provider to be asked for the encryption algorithm. +
setProvider(Provider) - +Method in class org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor +
+ Sets the security provider to be asked for the encryption algorithm. +
setProvider(Provider) - +Method in class org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor +
+ Sets the security provider to be asked for the encryption algorithm. +
setProvider(Provider) - +Method in class org.jasypt.encryption.pbe.StandardPBEByteEncryptor +
+ Sets the security provider to be asked for the encryption algorithm. +
setProvider(Provider) - +Method in class org.jasypt.encryption.pbe.StandardPBEStringEncryptor +
+ Sets the security provider to be asked for the encryption algorithm. +
setProvider(Provider) - +Method in class org.jasypt.util.digest.Digester +
+ Sets the security provider to be asked for the digest algorithm. +
setProvider(Provider) - +Method in class org.jasypt.util.password.ConfigurablePasswordEncryptor +
+ Sets the security provider to be asked for the digest algorithm. +
setProviderClassName(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
  +
setProviderClassName(String) - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
+ Sets the class name for the security provider to be used for + obtaining the digest algorithm. +
setProviderClassName(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
  +
setProviderClassName(String) - +Method in class org.jasypt.encryption.pbe.config.SimplePBEConfig +
+ Sets the security provider to be used for obtaining the encryption + algorithm. +
setProviderClassNameEnvName(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
+ Set the config object to use the specified environment variable to + load the value for the provider class name. +
setProviderClassNameEnvName(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
+ Set the config object to use the specified environment variable to + load the value for the provider class name. +
setProviderClassNameSysPropertyName(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
+ Set the config object to use the specified JVM system property to + load the value for the provider class name. +
setProviderClassNameSysPropertyName(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
+ Set the config object to use the specified JVM system property to + load the value for the provider class name. +
setProviderName(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
  +
setProviderName(String) - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
+ Sets the name of the security provider to be asked for the digest + algorithm. +
setProviderName(String) - +Method in class org.jasypt.digest.PooledByteDigester +
+ Sets the name of the security provider to be asked for the + digest algorithm. +
setProviderName(String) - +Method in class org.jasypt.digest.PooledStringDigester +
+ Sets the name of the security provider to be asked for the + digest algorithm. +
setProviderName(String) - +Method in class org.jasypt.digest.StandardByteDigester +
+ Sets the name of the security provider to be asked for the + digest algorithm. +
setProviderName(String) - +Method in class org.jasypt.digest.StandardStringDigester +
+ Sets the name of the security provider to be asked for the + digest algorithm. +
setProviderName(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
  +
setProviderName(String) - +Method in class org.jasypt.encryption.pbe.config.SimplePBEConfig +
+ Sets the name of the security provider to be asked for the encryption + algorithm. +
setProviderName(String) - +Method in class org.jasypt.encryption.pbe.PooledPBEBigDecimalEncryptor +
+ Sets the name of the security provider to be asked for the + encryption algorithm. +
setProviderName(String) - +Method in class org.jasypt.encryption.pbe.PooledPBEBigIntegerEncryptor +
+ Sets the name of the security provider to be asked for the + encryption algorithm. +
setProviderName(String) - +Method in class org.jasypt.encryption.pbe.PooledPBEByteEncryptor +
+ Sets the name of the security provider to be asked for the + encryption algorithm. +
setProviderName(String) - +Method in class org.jasypt.encryption.pbe.PooledPBEStringEncryptor +
+ Sets the name of the security provider to be asked for the + encryption algorithm. +
setProviderName(String) - +Method in class org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor +
+ Sets the name of the security provider to be asked for the + encryption algorithm. +
setProviderName(String) - +Method in class org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor +
+ Sets the name of the security provider to be asked for the + encryption algorithm. +
setProviderName(String) - +Method in class org.jasypt.encryption.pbe.StandardPBEByteEncryptor +
+ Sets the name of the security provider to be asked for the + encryption algorithm. +
setProviderName(String) - +Method in class org.jasypt.encryption.pbe.StandardPBEStringEncryptor +
+ Sets the name of the security provider to be asked for the + encryption algorithm. +
setProviderName(String) - +Method in class org.jasypt.util.digest.Digester +
+ Sets the name of the security provider to be asked for the + digest algorithm. +
setProviderName(String) - +Method in class org.jasypt.util.password.ConfigurablePasswordEncryptor +
+ Sets the name of the security provider to be asked for the + digest algorithm. +
setProviderNameEnvName(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
+ Set the config object to use the specified environment variable to + load the value for the provider name. +
setProviderNameEnvName(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
+ Set the config object to use the specified environment variable to + load the value for the provider name. +
setProviderNameSysPropertyName(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Set the config object to use the specified JVM system property to + load the value for the provider name. +
setProviderNameSysPropertyName(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
Set the config object to use the specified JVM system property to + load the value for the provider name. +
setSalt(byte[]) - +Method in class org.jasypt.salt.FixedByteArraySaltGenerator +
Deprecated. Sets the salt to be returned. +
setSalt(String) - +Method in class org.jasypt.salt.FixedStringSaltGenerator +
Deprecated. Sets the salt to be returned. +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
  +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
+ Sets the salt generator. +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.digest.PooledByteDigester +
+ Sets the salt generator to be used. +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.digest.PooledStringDigester +
+ Sets the salt generator to be used. +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.digest.StandardByteDigester +
+ Sets the salt generator to be used. +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.digest.StandardStringDigester +
+ Sets the salt generator to be used. +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
  +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.encryption.pbe.config.SimplePBEConfig +
+ Sets the salt generator. +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.encryption.pbe.PooledPBEBigDecimalEncryptor +
+ Sets the salt generator to be used. +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.encryption.pbe.PooledPBEBigIntegerEncryptor +
+ Sets the salt generator to be used. +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.encryption.pbe.PooledPBEByteEncryptor +
+ Sets the salt generator to be used. +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.encryption.pbe.PooledPBEStringEncryptor +
+ Sets the salt generator to be used. +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor +
+ Sets the salt generator to be used. +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor +
+ Sets the salt generator to be used. +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.encryption.pbe.StandardPBEByteEncryptor +
+ Sets the salt generator to be used. +
setSaltGenerator(SaltGenerator) - +Method in class org.jasypt.encryption.pbe.StandardPBEStringEncryptor +
+ Sets the salt generator to be used. +
setSaltGeneratorClassName(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
  +
setSaltGeneratorClassName(String) - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
+ Sets the class name of the salt generator. +
setSaltGeneratorClassName(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
  +
setSaltGeneratorClassName(String) - +Method in class org.jasypt.encryption.pbe.config.SimplePBEConfig +
+ Sets the salt generator. +
setSaltGeneratorClassNameEnvName(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
+ Set the config object to use the specified environment variable to + load the value for the salt generator class name. +
setSaltGeneratorClassNameEnvName(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
+ Set the config object to use the specified environment variable to + load the value for the salt generator class name. +
setSaltGeneratorClassNameSysPropertyName(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
+ Set the config object to use the specified JVM system property to + load the value for the salt generator class name. +
setSaltGeneratorClassNameSysPropertyName(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig +
+ Set the config object to use the specified JVM system property to + load the value for the salt generator class name. +
setSaltSizeBytes(Integer) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
  +
setSaltSizeBytes(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
  +
setSaltSizeBytes(Integer) - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
+ Size in bytes of the salt to be used. +
setSaltSizeBytes(String) - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
+ Size in bytes of the salt to be used. +
setSaltSizeBytes(int) - +Method in class org.jasypt.digest.PooledByteDigester +
+ Sets the size of the salt to be used to compute the digest. +
setSaltSizeBytes(int) - +Method in class org.jasypt.digest.PooledStringDigester +
+ Sets the size of the salt to be used to compute the digest. +
setSaltSizeBytes(int) - +Method in class org.jasypt.digest.StandardByteDigester +
+ Sets the size of the salt to be used to compute the digest. +
setSaltSizeBytes(int) - +Method in class org.jasypt.digest.StandardStringDigester +
+ Sets the size of the salt to be used to compute the digest. +
setSaltSizeBytes(int) - +Method in class org.jasypt.util.password.rfc2307.RFC2307SMD5PasswordEncryptor +
+ Sets the size (in bytes) of the salt to be used. +
setSaltSizeBytes(int) - +Method in class org.jasypt.util.password.rfc2307.RFC2307SSHAPasswordEncryptor +
+ Sets the size (in bytes) of the salt to be used. +
setSaltSizeBytesEnvName(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Set the config object to use the specified environment variable to + load the value for the salt size in bytes. +
setSaltSizeBytesSysPropertyName(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
Set the config object to use the specified JVM system property to + load the value for the salt size in bytes. +
setStringOutputType(String) - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
+ Sets the the form in which String output + will be encoded. +
setStringOutputType(String) - +Method in class org.jasypt.digest.config.SimpleStringDigesterConfig +
+ Sets the the form in which String output + will be encoded. +
setStringOutputType(String) - +Method in class org.jasypt.digest.PooledStringDigester +
+ Sets the the form in which String output + will be encoded. +
setStringOutputType(String) - +Method in class org.jasypt.digest.StandardStringDigester +
+ Sets the the form in which String output + will be encoded. +
setStringOutputType(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig +
+ Sets the the form in which String output + will be encoded. +
setStringOutputType(String) - +Method in class org.jasypt.encryption.pbe.config.SimpleStringPBEConfig +
+ Sets the the form in which String output + will be encoded. +
setStringOutputType(String) - +Method in class org.jasypt.encryption.pbe.config.WebStringPBEConfig +
+ Sets the the form in which String output + will be encoded. +
setStringOutputType(String) - +Method in class org.jasypt.encryption.pbe.PooledPBEStringEncryptor +
+ Sets the the form in which String output + will be encoded. +
setStringOutputType(String) - +Method in class org.jasypt.encryption.pbe.StandardPBEStringEncryptor +
+ Sets the the form in which String output + will be encoded. +
setStringOutputType(String) - +Method in class org.jasypt.util.password.ConfigurablePasswordEncryptor +
+ Sets the the form in which String output + will be encoded. +
setStringOutputType(String) - +Method in class org.jasypt.util.password.rfc2307.RFC2307MD5PasswordEncryptor +
+ Sets the the form in which String output + will be encoded. +
setStringOutputType(String) - +Method in class org.jasypt.util.password.rfc2307.RFC2307SHAPasswordEncryptor +
+ Sets the the form in which String output + will be encoded. +
setStringOutputType(String) - +Method in class org.jasypt.util.password.rfc2307.RFC2307SMD5PasswordEncryptor +
+ Sets the the form in which String output + will be encoded. +
setStringOutputType(String) - +Method in class org.jasypt.util.password.rfc2307.RFC2307SSHAPasswordEncryptor +
+ Sets the the form in which String output + will be encoded. +
setStringOutputTypeEnvName(String) - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
Set the config object to use the specified environment variable to + load the value for the String output type. +
setStringOutputTypeEnvName(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig +
Set the config object to use the specified environment variable to + load the value for the String output type. +
setStringOutputTypeSysPropertyName(String) - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
Set the config object to use the specified JVM system property to + load the value for the String output type. +
setStringOutputTypeSysPropertyName(String) - +Method in class org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig +
Set the config object to use the specified JVM system property to + load the value for the String output type. +
setSuffix(String) - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
+ Sets the suffix to be added at the end of encryption results, and also to + be expected at the end of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not). +
setSuffix(String) - +Method in class org.jasypt.digest.config.SimpleStringDigesterConfig +
+ Sets the suffix to be added at the end of encryption results, and also to + be expected at the end of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not). +
setSuffix(String) - +Method in class org.jasypt.digest.PooledStringDigester +
+ Sets the suffix to be added at the end of encryption results, and also to + be expected at the end of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not). +
setSuffix(String) - +Method in class org.jasypt.digest.StandardStringDigester +
+ Sets the suffix to be added at the end of encryption results, and also to + be expected at the end of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not). +
setSuffixEnvName(String) - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
Set the config object to use the specified environment variable to + load the value for the "suffix" parameter. +
setSuffixSysPropertyName(String) - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
Set the config object to use the specified JVM system property to + load a value for the "suffix" parameter. +
setUnicodeNormalizationIgnored(Boolean) - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
+ Sets whether the unicode text normalization step should be ignored. +
setUnicodeNormalizationIgnored(String) - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
+ Sets whether the unicode text normalization step should be ignored. +
setUnicodeNormalizationIgnored(Boolean) - +Method in class org.jasypt.digest.config.SimpleStringDigesterConfig +
+ Sets whether the unicode text normalization step should be ignored. +
setUnicodeNormalizationIgnored(String) - +Method in class org.jasypt.digest.config.SimpleStringDigesterConfig +
+ Sets whether the unicode text normalization step should be ignored. +
setUnicodeNormalizationIgnored(boolean) - +Method in class org.jasypt.digest.PooledStringDigester +
+ Sets whether the unicode text normalization step should be ignored. +
setUnicodeNormalizationIgnored(boolean) - +Method in class org.jasypt.digest.StandardStringDigester +
+ Sets whether the unicode text normalization step should be ignored. +
setUnicodeNormalizationIgnoredEnvName(String) - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
Set the config object to use the specified environment variable to + load the value for the "unicode normalization ignored" parameter. +
setUnicodeNormalizationIgnoredSysPropertyName(String) - +Method in class org.jasypt.digest.config.EnvironmentStringDigesterConfig +
Set the config object to use the specified JVM system property to + load a value for the "unicode normalization ignored" parameter. +
setUseLenientSaltSizeCheck(Boolean) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
  +
setUseLenientSaltSizeCheck(Boolean) - +Method in class org.jasypt.digest.config.SimpleDigesterConfig +
+ Whether digest matching operations will allow matching + digests with a salt size different to the one configured in the "saltSizeBytes" + property. +
setUseLenientSaltSizeCheck(boolean) - +Method in class org.jasypt.digest.PooledByteDigester +
+ Whether digest matching operations will allow matching + digests with a salt size different to the one configured in the "saltSizeBytes" + property. +
setUseLenientSaltSizeCheck(boolean) - +Method in class org.jasypt.digest.PooledStringDigester +
+ Whether digest matching operations will allow matching + digests with a salt size different to the one configured in the "saltSizeBytes" + property. +
setUseLenientSaltSizeCheck(boolean) - +Method in class org.jasypt.digest.StandardByteDigester +
+ Whether digest matching operations will allow matching + digests with a salt size different to the one configured in the "saltSizeBytes" + property. +
setUseLenientSaltSizeCheck(boolean) - +Method in class org.jasypt.digest.StandardStringDigester +
+ Whether digest matching operations will allow matching + digests with a salt size different to the one configured in the "saltSizeBytes" + property. +
setUseLenientSaltSizeCheckEnvName(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
+ Set the config object to use the specified environment variable to + load the value for the useLenientSaltSizeCheck + property. +
setUseLenientSaltSizeCheckSysPropertyName(String) - +Method in class org.jasypt.digest.config.EnvironmentDigesterConfig +
+ Set the config object to use the specified JVM system property to + load the value for the useLenientSaltSizeCheck + property. +
setValidationWord(String) - +Method in class org.jasypt.encryption.pbe.config.WebPBEConfig +
+ Sets the validation word which will be asked from the web to the + person setting the password for the encryptor this config object belongs + to. +
setWebConfigurationDone(boolean) - +Method in class org.jasypt.web.pbeconfig.WebPBEConfigRegistry +
  +
SimpleDigesterConfig - Class in org.jasypt.digest.config
+ Bean implementation for DigesterConfig.
SimpleDigesterConfig() - +Constructor for class org.jasypt.digest.config.SimpleDigesterConfig +
+ Creates a new SimpleDigesterConfig instance. +
SimplePBEConfig - Class in org.jasypt.encryption.pbe.config
+ Bean implementation for PBEConfig.
SimplePBEConfig() - +Constructor for class org.jasypt.encryption.pbe.config.SimplePBEConfig +
+ Creates a new SimplePBEConfig instance. +
SimpleStringDigesterConfig - Class in org.jasypt.digest.config
+ Bean implementation for StringDigesterConfig.
SimpleStringDigesterConfig() - +Constructor for class org.jasypt.digest.config.SimpleStringDigesterConfig +
+ Creates a new SimpleStringDigesterConfig instance. +
SimpleStringPBEConfig - Class in org.jasypt.encryption.pbe.config
+ Bean implementation for StringPBEConfig.
SimpleStringPBEConfig() - +Constructor for class org.jasypt.encryption.pbe.config.SimpleStringPBEConfig +
+ Creates a new SimpleStringPBEConfig instance. +
split(String) - +Static method in class org.jasypt.commons.CommonUtils +
  +
split(String, String) - +Static method in class org.jasypt.commons.CommonUtils +
  +
StandardByteDigester - Class in org.jasypt.digest
+ Standard implementation of the ByteDigester interface.
StandardByteDigester() - +Constructor for class org.jasypt.digest.StandardByteDigester +
Creates a new instance of StandardByteDigester. +
StandardPBEBigDecimalEncryptor - Class in org.jasypt.encryption.pbe
+ Standard implementation of the PBEBigDecimalEncryptor interface.
StandardPBEBigDecimalEncryptor() - +Constructor for class org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor +
Creates a new instance of StandardPBEBigDecimalEncryptor. +
StandardPBEBigIntegerEncryptor - Class in org.jasypt.encryption.pbe
+ Standard implementation of the PBEBigIntegerEncryptor interface.
StandardPBEBigIntegerEncryptor() - +Constructor for class org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor +
Creates a new instance of StandardPBEBigIntegerEncryptor. +
StandardPBEByteEncryptor - Class in org.jasypt.encryption.pbe
+ Standard implementation of the PBEByteEncryptor interface.
StandardPBEByteEncryptor() - +Constructor for class org.jasypt.encryption.pbe.StandardPBEByteEncryptor +
Creates a new instance of StandardPBEByteEncryptor. +
StandardPBEStringEncryptor - Class in org.jasypt.encryption.pbe
+ Standard implementation of the PBEStringEncryptor interface.
StandardPBEStringEncryptor() - +Constructor for class org.jasypt.encryption.pbe.StandardPBEStringEncryptor +
Creates a new instance of StandardPBEStringEncryptor. +
StandardStringDigester - Class in org.jasypt.digest
+ Standard implementation of the StringDigester interface.
StandardStringDigester() - +Constructor for class org.jasypt.digest.StandardStringDigester +
Creates a new instance of StandardStringDigester. +
STRING_OUTPUT_TYPE_BASE64 - +Static variable in class org.jasypt.commons.CommonUtils +
  +
STRING_OUTPUT_TYPE_HEXADECIMAL - +Static variable in class org.jasypt.commons.CommonUtils +
  +
StringDigester - Interface in org.jasypt.digest
+ Common interface for all digesters which receive a String message and + return a String digest.
StringDigesterConfig - Interface in org.jasypt.digest.config
+ Common interface for config classes applicable to + StandardStringDigester objects.
StringEncryptor - Interface in org.jasypt.encryption
+ Common interface for all Encryptors which receive a + String message and return a String result.
StringFixedSaltGenerator - Class in org.jasypt.salt
+ String based implementation of FixedSaltGenerator, that will + always return the same salt.
StringFixedSaltGenerator(String) - +Constructor for class org.jasypt.salt.StringFixedSaltGenerator +
Creates a new instance of FixedStringSaltGenerator using + the default charset. +
StringFixedSaltGenerator(String, String) - +Constructor for class org.jasypt.salt.StringFixedSaltGenerator +
Creates a new instance of FixedStringSaltGenerator +
StringPBEConfig - Interface in org.jasypt.encryption.pbe.config
+ Common interface for config classes applicable to + StandardPBEStringEncryptor objects.
StrongBinaryEncryptor - Class in org.jasypt.util.binary
+ Utility class for easily performing high-strength encryption of + binaries (byte arrays).
StrongBinaryEncryptor() - +Constructor for class org.jasypt.util.binary.StrongBinaryEncryptor +
Creates a new instance of StrongBinaryEncryptor. +
StrongDecimalNumberEncryptor - Class in org.jasypt.util.numeric
+ Utility class for easily performing normal-strength encryption of + BigDecimal objects.
StrongDecimalNumberEncryptor() - +Constructor for class org.jasypt.util.numeric.StrongDecimalNumberEncryptor +
Creates a new instance of StrongDecimalNumberEncryptor. +
StrongIntegerNumberEncryptor - Class in org.jasypt.util.numeric
+ Utility class for easily performing normal-strength encryption of + BigInteger objects.
StrongIntegerNumberEncryptor() - +Constructor for class org.jasypt.util.numeric.StrongIntegerNumberEncryptor +
Creates a new instance of StrongIntegerNumberEncryptor. +
StrongPasswordEncryptor - Class in org.jasypt.util.password
+ Utility class for easily performing high-strength password + digesting and checking.
StrongPasswordEncryptor() - +Constructor for class org.jasypt.util.password.StrongPasswordEncryptor +
Creates a new instance of StrongPasswordEncryptor +
StrongTextEncryptor - Class in org.jasypt.util.text
+ Utility class for easily performing high-strength encryption of texts.
StrongTextEncryptor() - +Constructor for class org.jasypt.util.text.StrongTextEncryptor +
Creates a new instance of StrongTextEncryptor. +
substringAfter(String, String) - +Static method in class org.jasypt.commons.CommonUtils +
  +
substringBefore(String, String) - +Static method in class org.jasypt.commons.CommonUtils +
  +
+
+

+T

+
+
TextEncryptor - Interface in org.jasypt.util.text
+ Common interface for all util classes aimed at text encryption
toHexadecimal(byte[]) - +Static method in class org.jasypt.commons.CommonUtils +
  +
+
+

+V

+
+
validateIsTrue(boolean, String) - +Static method in class org.jasypt.commons.CommonUtils +
  +
validateNotEmpty(String, String) - +Static method in class org.jasypt.commons.CommonUtils +
  +
validateNotNull(Object, String) - +Static method in class org.jasypt.commons.CommonUtils +
  +
+
+

+W

+
+
WebPBEConfig - Class in org.jasypt.encryption.pbe.config
+ Implementation for PBEConfig which can be used from the + Web PBE Config infrastructure (Filter + Servlet) to set the + password for an encryptor from the web at initialization time.
WebPBEConfig() - +Constructor for class org.jasypt.encryption.pbe.config.WebPBEConfig +
+ Creates a new WebPBEConfig instance. +
WebPBEConfigFilter - Class in org.jasypt.web.pbeconfig
+ This filter is intended to avoid access to the web application until + an admin has set the encryption passwords.
WebPBEConfigFilter() - +Constructor for class org.jasypt.web.pbeconfig.WebPBEConfigFilter +
  +
WebPBEConfigRegistry - Class in org.jasypt.web.pbeconfig
+ Registry for WebPBEConfig objects.
WebPBEConfigServlet - Class in org.jasypt.web.pbeconfig
+ Servlet for web PBE config processing.
WebPBEConfigServlet() - +Constructor for class org.jasypt.web.pbeconfig.WebPBEConfigServlet +
  +
WebPBEInitializationContextListener - Class in org.jasypt.web.pbeconfig
+ ContextListener which takes a WebPBEInitializer implementation + class name as a parameter (<context-param>) and calls its + initializeWebPBEConfigs() method to allow the webapp to + create its PBE encryptors and declare their associated WebPBEConfig + objects.
WebPBEInitializationContextListener() - +Constructor for class org.jasypt.web.pbeconfig.WebPBEInitializationContextListener +
  +
WebPBEInitializer - Interface in org.jasypt.web.pbeconfig
+ Interface which must be implemented by the user-defined classes which + create and initialize webapp PBE encryptors for being configured through + the web pbe configuration servlet.
WebStringPBEConfig - Class in org.jasypt.encryption.pbe.config
+ Implementation for StringPBEConfig which can be used from the + Web PBE Config infrastructure (Filter + Servlet) to set the + password for an encryptor from the web at initialization time.
WebStringPBEConfig() - +Constructor for class org.jasypt.encryption.pbe.config.WebStringPBEConfig +
+ Creates a new WebStringPBEConfig instance. +
+
+

+Z

+
+
ZeroSaltGenerator - Class in org.jasypt.salt
+ This implementation of SaltGenerator always returns a salt + of the required length, filled with zero bytes.
ZeroSaltGenerator() - +Constructor for class org.jasypt.salt.ZeroSaltGenerator +
Creates a new instance of ZeroSaltGenerator +
+
+A B C D E F G I J M N O P R S T V W Z + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/index.html b/utils/jasypt-1.9.2/apidocs/jasypt/index.html new file mode 100644 index 00000000..94dde375 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/index.html @@ -0,0 +1,40 @@ + + + + + + + +JASYPT: Java Simplified Encryption 1.9.2 API + + + + + + + + + + + +<H2> +Frame Alert</H2> + +<P> +This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. +<BR> +Link to<A HREF="overview-summary.html">Non-frame version.</A> + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/CommonUtils.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/CommonUtils.html new file mode 100644 index 00000000..9cb7b2a6 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/CommonUtils.html @@ -0,0 +1,567 @@ + + + + + + + +CommonUtils (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.commons +
+Class CommonUtils

+
+Object
+  extended by org.jasypt.commons.CommonUtils
+
+
+
+
public final class CommonUtils
extends Object
+ + +

+

+ Common utils regarding treatment of parameter values and encoding operations. + This class is for internal use only. +

+

+ +

+

+
Since:
+
1.3
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + +
+Field Summary
+static StringSTRING_OUTPUT_TYPE_BASE64 + +
+           
+static StringSTRING_OUTPUT_TYPE_HEXADECIMAL + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+static byte[]appendArrays(byte[] firstArray, + byte[] secondArray) + +
+           
+static byte[]fromHexadecimal(String message) + +
+           
+static BooleangetStandardBooleanValue(String valueStr) + +
+           
+static StringgetStandardStringOutputType(String valueStr) + +
+           
+static booleanisEmpty(String string) + +
+           
+static booleanisNotEmpty(String string) + +
+           
+static intnextRandomInt() + +
+           
+static String[]split(String string) + +
+           
+static String[]split(String string, + String separators) + +
+           
+static StringsubstringAfter(String string, + String separator) + +
+           
+static StringsubstringBefore(String string, + String separator) + +
+           
+static StringtoHexadecimal(byte[] message) + +
+           
+static voidvalidateIsTrue(boolean expression, + String message) + +
+           
+static voidvalidateNotEmpty(String string, + String message) + +
+           
+static voidvalidateNotNull(Object object, + String message) + +
+           
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+STRING_OUTPUT_TYPE_BASE64

+
+public static final String STRING_OUTPUT_TYPE_BASE64
+
+
+
See Also:
Constant Field Values
+
+
+ +

+STRING_OUTPUT_TYPE_HEXADECIMAL

+
+public static final String STRING_OUTPUT_TYPE_HEXADECIMAL
+
+
+
See Also:
Constant Field Values
+
+ + + + + + + + +
+Method Detail
+ +

+getStandardBooleanValue

+
+public static Boolean getStandardBooleanValue(String valueStr)
+
+
+
+
+
+
+ +

+getStandardStringOutputType

+
+public static String getStandardStringOutputType(String valueStr)
+
+
+
+
+
+
+ +

+toHexadecimal

+
+public static String toHexadecimal(byte[] message)
+
+
+
+
+
+
+ +

+fromHexadecimal

+
+public static byte[] fromHexadecimal(String message)
+
+
+
+
+
+
+ +

+isEmpty

+
+public static boolean isEmpty(String string)
+
+
+
+
+
+
+ +

+isNotEmpty

+
+public static boolean isNotEmpty(String string)
+
+
+
+
+
+
+ +

+validateNotNull

+
+public static void validateNotNull(Object object,
+                                   String message)
+
+
+
+
+
+
+ +

+validateNotEmpty

+
+public static void validateNotEmpty(String string,
+                                    String message)
+
+
+
+
+
+
+ +

+validateIsTrue

+
+public static void validateIsTrue(boolean expression,
+                                  String message)
+
+
+
+
+
+
+ +

+split

+
+public static String[] split(String string)
+
+
+
+
+
+
+ +

+split

+
+public static String[] split(String string,
+                             String separators)
+
+
+
+
+
+
+ +

+substringBefore

+
+public static String substringBefore(String string,
+                                     String separator)
+
+
+
+
+
+
+ +

+substringAfter

+
+public static String substringAfter(String string,
+                                    String separator)
+
+
+
+
+
+
+ +

+nextRandomInt

+
+public static int nextRandomInt()
+
+
+
+
+
+
+ +

+appendArrays

+
+public static byte[] appendArrays(byte[] firstArray,
+                                  byte[] secondArray)
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/class-use/CommonUtils.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/class-use/CommonUtils.html new file mode 100644 index 00000000..9d9cc785 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/class-use/CommonUtils.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.commons.CommonUtils (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.commons.CommonUtils

+
+No usage of org.jasypt.commons.CommonUtils +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/package-frame.html new file mode 100644 index 00000000..c2f8c35c --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/package-frame.html @@ -0,0 +1,33 @@ + + + + + + + +org.jasypt.commons (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.commons + + + + +
+Classes  + +
+CommonUtils
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/package-summary.html new file mode 100644 index 00000000..57fc86a4 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/package-summary.html @@ -0,0 +1,159 @@ + + + + + + + +org.jasypt.commons (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.commons +

+ + + + + + + + + +
+Class Summary
CommonUtils + Common utils regarding treatment of parameter values and encoding operations.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/package-tree.html new file mode 100644 index 00000000..58a1c55a --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/package-tree.html @@ -0,0 +1,154 @@ + + + + + + + +org.jasypt.commons Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.commons +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/package-use.html new file mode 100644 index 00000000..898523fd --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/commons/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.commons (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.commons

+
+No usage of org.jasypt.commons +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/ByteDigester.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/ByteDigester.html new file mode 100644 index 00000000..4fc3d6e5 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/ByteDigester.html @@ -0,0 +1,261 @@ + + + + + + + +ByteDigester (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.digest +
+Interface ByteDigester

+
+
All Known Implementing Classes:
PooledByteDigester, StandardByteDigester
+
+
+
+
public interface ByteDigester
+ + +

+

+ Common interface for all digesters which receive a byte array message and + return a byte array digest. +

+

+ For a default implementation, see StandardByteDigester. +

+

+ +

+

+
Since:
+
1.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + +
+Method Summary
+ byte[]digest(byte[] message) + +
+           + Create a digest of the input message.
+ booleanmatches(byte[] message, + byte[] digest) + +
+           + Check whether a message matches a digest, managing aspects like + salt, hashing iterations, etc.
+  +

+ + + + + + + + +
+Method Detail
+ +

+digest

+
+byte[] digest(byte[] message)
+
+

+ Create a digest of the input message. +

+

+

+
Parameters:
message - the message to be digested +
Returns:
the digest
+
+
+
+ +

+matches

+
+boolean matches(byte[] message,
+                byte[] digest)
+
+

+ Check whether a message matches a digest, managing aspects like + salt, hashing iterations, etc. (if applicable). +

+

+

+
Parameters:
message - the message to check
digest - the digest to check +
Returns:
TRUE if the message matches the digest, FALSE if not.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/PooledByteDigester.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/PooledByteDigester.html new file mode 100644 index 00000000..14eef598 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/PooledByteDigester.html @@ -0,0 +1,941 @@ + + + + + + + +PooledByteDigester (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.digest +
+Class PooledByteDigester

+
+Object
+  extended by org.jasypt.digest.PooledByteDigester
+
+
+
All Implemented Interfaces:
ByteDigester
+
+
+
+
public class PooledByteDigester
extends Object
implements ByteDigester
+ + +

+

+ Pooled implementation of ByteDigester that in fact contains + an array of StandardByteDigester objects which are used + to attend digest and match requests in round-robin. This should + result in higher performance in multiprocessor systems. +

+

+ Configuration of this class is equivalent to that of + StandardByteDigester. +

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.7
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
PooledByteDigester() + +
+          Creates a new instance of PooledStandardByteDigester.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ byte[]digest(byte[] message) + +
+           + Performs a digest operation on a byte array message.
+ voidinitialize() + +
+           + Initialize the digester.
+ booleanisInitialized() + +
+           + Returns true if the digester has already been initialized, false if + not.
+ Initialization happens:
+ booleanmatches(byte[] message, + byte[] digest) + +
+           + Checks a message against a given digest.
+ voidsetAlgorithm(String algorithm) + +
+           + Sets the algorithm to be used for digesting, like MD5 + or SHA-1.
+ voidsetConfig(DigesterConfig config) + +
+           + Sets a DigesterConfig object + for the digester.
+ voidsetInvertPositionOfPlainSaltInEncryptionResults(boolean invertPositionOfPlainSaltInEncryptionResults) + +
+           + Whether the plain (not hashed) salt bytes are to + be appended after the digest operation result bytes.
+ voidsetInvertPositionOfSaltInMessageBeforeDigesting(boolean invertPositionOfSaltInMessageBeforeDigesting) + +
+           + Whether the salt bytes are to be appended after the + message ones before performing the digest operation on the whole.
+ voidsetIterations(int iterations) + +
+           + Set the number of times the hash function will be applied recursively.
+ voidsetPoolSize(int poolSize) + +
+           + Sets the size of the pool of digesters to be created.
+ voidsetProvider(java.security.Provider provider) + +
+           + Sets the security provider to be asked for the digest algorithm.
+ voidsetProviderName(String providerName) + +
+           + Sets the name of the security provider to be asked for the + digest algorithm.
+ voidsetSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+ voidsetSaltSizeBytes(int saltSizeBytes) + +
+           + Sets the size of the salt to be used to compute the digest.
+ voidsetUseLenientSaltSizeCheck(boolean useLenientSaltSizeCheck) + +
+           + Whether digest matching operations will allow matching + digests with a salt size different to the one configured in the "saltSizeBytes" + property.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+PooledByteDigester

+
+public PooledByteDigester()
+
+
Creates a new instance of PooledStandardByteDigester. +

+

+ + + + + + + + +
+Method Detail
+ +

+setConfig

+
+public void setConfig(DigesterConfig config)
+
+

+ Sets a DigesterConfig object + for the digester. If this config + object is set, it will be asked values for: +

+ +
    +
  • Algorithm
  • +
  • Security Provider (or provider name)
  • +
  • Salt size
  • +
  • Hashing iterations
  • +
  • Salt generator
  • +
  • Location of the salt in relation to the encrypted message + (default: before)
  • +
+ +

+ The non-null values it returns will override the default ones, + and will be overriden by any values specified with a setX + method. +

+

+

+
+
+
+
Parameters:
config - the DigesterConfig object to be used as the + source for configuration parameters.
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+

+ Sets the algorithm to be used for digesting, like MD5 + or SHA-1. +

+

+ This algorithm has to be supported by your security infrastructure, and + it should be allowed as an algorithm for creating + java.security.MessageDigest instances. +

+

+ If you are specifying a security provider with setProvider(Provider) or + setProviderName(String), this algorithm should be + supported by your specified provider. +

+

+ If you are not specifying a provider, you will be able to use those + algorithms provided by the default security provider of your JVM vendor. + For valid names in the Sun JVM, see Java + Cryptography Architecture API Specification & + Reference. +

+

+

+
+
+
+
Parameters:
algorithm - the name of the algorithm to be used.
+
+
+
+ +

+setSaltSizeBytes

+
+public void setSaltSizeBytes(int saltSizeBytes)
+
+

+ Sets the size of the salt to be used to compute the digest. + This mechanism is explained in + PKCS #5: Password-Based Cryptography Standard. +

+ +

+ If salt size is set to zero, then no salt will be used. +

+

+

+
+
+
+
Parameters:
saltSizeBytes - the size of the salt to be used, in bytes.
+
+
+
+ +

+setIterations

+
+public void setIterations(int iterations)
+
+

+ Set the number of times the hash function will be applied recursively. +
+ The hash function will be applied to its own results as many times as + specified: h(h(...h(x)...)) +

+

+ This mechanism is explained in + PKCS #5: Password-Based Cryptography Standard. +

+

+

+
+
+
+
Parameters:
iterations - the number of iterations.
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(SaltGenerator saltGenerator)
+
+

+ Sets the salt generator to be used. If no salt generator is specified, + an instance of RandomSaltGenerator will be used. +

+

+

+
+
+
+
Parameters:
saltGenerator - the salt generator to be used.
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+

+ Sets the name of the security provider to be asked for the + digest algorithm. This security provider has to be registered beforehand + at the JVM security framework. +

+

+ The provider can also be set with the setProvider(Provider) + method, in which case it will not be necessary neither registering + the provider beforehand, + nor calling this setProviderName(String) method to specify + a provider name. +

+

+ Note that a call to setProvider(Provider) overrides any value + set by this method. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
providerName - the name of the security provider to be asked + for the digest algorithm.
+
+
+
+ +

+setProvider

+
+public void setProvider(java.security.Provider provider)
+
+

+ Sets the security provider to be asked for the digest algorithm. + The provider does not have to be registered at the security + infrastructure beforehand, and its being used here will not result in + its being registered. +

+

+ If this method is called, calling setProviderName(String) + becomes unnecessary. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
provider - the provider to be asked for the chosen algorithm
+
+
+
+ +

+setInvertPositionOfSaltInMessageBeforeDigesting

+
+public void setInvertPositionOfSaltInMessageBeforeDigesting(boolean invertPositionOfSaltInMessageBeforeDigesting)
+
+

+ Whether the salt bytes are to be appended after the + message ones before performing the digest operation on the whole. The + default behaviour is to insert those bytes before the message bytes, but + setting this configuration item to true allows compatibility + with some external systems and specifications (e.g. LDAP {SSHA}). +

+

+ If this parameter is not explicitly set, the default behaviour + (insertion of salt before message) will be applied. +

+

+

+
+
+
+
Parameters:
invertPositionOfSaltInMessageBeforeDigesting - whether salt will be appended after the message before applying + the digest operation on the whole, instead of inserted before it + (which is the default).
+
+
+
+ +

+setInvertPositionOfPlainSaltInEncryptionResults

+
+public void setInvertPositionOfPlainSaltInEncryptionResults(boolean invertPositionOfPlainSaltInEncryptionResults)
+
+

+ Whether the plain (not hashed) salt bytes are to + be appended after the digest operation result bytes. The default behaviour is + to insert them before the digest result, but setting this configuration + item to true allows compatibility with some external systems + and specifications (e.g. LDAP {SSHA}). +

+

+ If this parameter is not explicitly set, the default behaviour + (insertion of plain salt before digest result) will be applied. +

+

+

+
+
+
+
Parameters:
invertPositionOfPlainSaltInEncryptionResults - whether plain salt will be appended after the digest operation + result instead of inserted before it (which is the + default).
Since:
+
1.7
+
+
+
+
+ +

+setUseLenientSaltSizeCheck

+
+public void setUseLenientSaltSizeCheck(boolean useLenientSaltSizeCheck)
+
+

+ Whether digest matching operations will allow matching + digests with a salt size different to the one configured in the "saltSizeBytes" + property. This is possible because digest algorithms will produce a fixed-size + result, so the remaining bytes from the hashed input will be considered salt. +

+

+ This will allow the digester to match digests produced in environments which do not + establish a fixed salt size as standard (for example, SSHA password encryption + in LDAP systems). +

+

+ The value of this property will not affect the creation of digests, + which will always have a salt of the size established by the "saltSizeBytes" + property. It will only affect digest matching. +

+

+ Setting this property to true is not compatible with SaltGenerator + implementations which return false for their + SaltGenerator.includePlainSaltInEncryptionResults() property. +

+

+ Also, be aware that some algorithms or algorithm providers might not support + knowing the size of the digests beforehand, which is also incompatible with + a lenient behaviour. +

+

+ If this parameter is not explicitly set, the default behaviour + (NOT lenient) will be applied. +

+

+

+
+
+
+
Parameters:
useLenientSaltSizeCheck - whether the digester will allow matching of + digests with different salt sizes than established or not (default + is false).
+
+
+
+ +

+setPoolSize

+
+public void setPoolSize(int poolSize)
+
+

+ Sets the size of the pool of digesters to be created. +

+

+ This parameter is required. +

+

+

+
+
+
+
Parameters:
poolSize - size of the pool
+
+
+
+ +

+isInitialized

+
+public boolean isInitialized()
+
+

+ Returns true if the digester has already been initialized, false if + not.
+ Initialization happens: +

+
    +
  • When initialize is called.
  • +
  • When digest or matches are called for the + first time, if initialize has not been called before.
  • +
+

+ Once a digester has been initialized, trying to + change its configuration (algorithm, provider, salt size, iterations + or salt generator) will + result in an AlreadyInitializedException being thrown. +

+

+

+
+
+
+ +
Returns:
true if the digester has already been initialized, false if + not.
+
+
+
+ +

+initialize

+
+public void initialize()
+
+

+ Initialize the digester. +

+

+ This operation will consist in determining the actual configuration + values to be used, and then initializing the digester with them. +
+ These values are decided by applying the following priorities: +

+
    +
  1. First, the default values are considered.
  2. +
  3. Then, if a + DigesterConfig + object has been set with + setConfig, the non-null values returned by its + getX methods override the default values.
  4. +
  5. Finally, if the corresponding setX method has been called + on the digester itself for any of the configuration parameters, the + values set by these calls override all of the above.
  6. +
+

+ Once a digester has been initialized, trying to + change its configuration will result in an + AlreadyInitializedException being thrown. +

+

+

+
+
+
+ +
Throws: +
EncryptionInitializationException - if initialization could not + be correctly done (for example, if the digest algorithm chosen + cannot be used).
+
+
+
+ +

+digest

+
+public byte[] digest(byte[] message)
+
+

+ Performs a digest operation on a byte array message. +

+

+ The steps taken for creating the digest are: +

    +
  1. A salt of the specified size is generated (see + SaltGenerator).
  2. +
  3. The salt bytes are added to the message.
  4. +
  5. The hash function is applied to the salt and message altogether, + and then to the + results of the function itself, as many times as specified + (iterations).
  6. +
  7. If specified by the salt generator (see + SaltGenerator.includePlainSaltInEncryptionResults()), + the undigested salt and the final result of the hash + function are concatenated and returned as a result.
  8. +
+ Put schematically in bytes: +
    +
  • + DIGEST = |S|..(ssb)..|S|X|X|X|...|X| +
      +
    • S: salt bytes (plain, not digested). (OPTIONAL).
    • +
    • ssb: salt size in bytes.
    • +
    • X: bytes resulting from hashing (see below).
    • +
    +
  • +
  • + |X|X|X|...|X| = + H(H(H(..(it)..H(Z|Z|Z|...|Z|)))) +
      +
    • H: Hash function (algorithm).
    • +
    • it: Number of iterations.
    • +
    • Z: Input for hashing (see below).
    • +
    +
  • +
  • + |Z|Z|Z|...|Z| = + |S|..(ssb)..|S|M|M|M...|M| +
      +
    • S: salt bytes (plain, not digested).
    • +
    • ssb: salt size in bytes.
    • +
    • M: message bytes.
    • +
    +
  • +
+

+

+ If a random salt generator is used, two digests created for the same + message will always be different + (except in the case of random salt coincidence). + Because of this, in this case the result of the digest method + will contain both the undigested salt and the digest of the + (salt + message), so that another digest operation can be performed + with the same salt on a different message to check if both messages + match (all of which will be managed automatically by the + matches method). +

+

+

+
Specified by:
digest in interface ByteDigester
+
+
+
Parameters:
message - the byte array to be digested +
Returns:
the digest result +
Throws: +
EncryptionOperationNotPossibleException - if the digest operation + fails, ommitting any further information about the cause for + security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, if the digest algorithm chosen + cannot be used).
+
+
+
+ +

+matches

+
+public boolean matches(byte[] message,
+                       byte[] digest)
+
+

+ Checks a message against a given digest. +

+

+ This method tells whether a message corresponds to a specific digest + or not by getting the salt with which the digest was created and + applying it to a digest operation performed on the message. If + new and existing digest match, the message is said to match the digest. +

+

+ This method will be used, for instance, for password checking in + authentication processes. +

+

+ A null message will only match a null digest. +

+

+

+
Specified by:
matches in interface ByteDigester
+
+
+
Parameters:
message - the message to be compared to the digest.
digest - the digest. +
Returns:
true if the specified message matches the digest, false + if not. +
Throws: +
EncryptionOperationNotPossibleException - if the digest matching + operation fails, ommitting any further information about the + cause for security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, if the digest algorithm chosen + cannot be used).
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/PooledStringDigester.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/PooledStringDigester.html new file mode 100644 index 00000000..3b31a73a --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/PooledStringDigester.html @@ -0,0 +1,1098 @@ + + + + + + + +PooledStringDigester (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.digest +
+Class PooledStringDigester

+
+Object
+  extended by org.jasypt.digest.PooledStringDigester
+
+
+
All Implemented Interfaces:
StringDigester
+
+
+
+
public class PooledStringDigester
extends Object
implements StringDigester
+ + +

+

+ Pooled implementation of StringDigester that in fact contains + an array of StandardStringDigester objects which are used + to attend digest and match requests in round-robin. This should + result in higher performance in multiprocessor systems. +

+

+ Configuration of this class is equivalent to that of + StandardStringDigester. +

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.7
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
PooledStringDigester() + +
+          Creates a new instance of PooledStandardStringDigester.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Stringdigest(String message) + +
+           + Performs a digest operation on a String message.
+ voidinitialize() + +
+           + Initialize the digester.
+ booleanisInitialized() + +
+           + Returns true if the digester has already been initialized, false if + not.
+ Initialization happens:
+ booleanmatches(String message, + String digest) + +
+           + Checks a message against a given digest.
+ voidsetAlgorithm(String algorithm) + +
+           + Sets the algorithm to be used for digesting, like MD5 + or SHA-1.
+ voidsetConfig(DigesterConfig config) + +
+           + Sets a DigesterConfig + or StringDigesterConfig object + for the digester.
+ voidsetInvertPositionOfPlainSaltInEncryptionResults(boolean invertPositionOfPlainSaltInEncryptionResults) + +
+           + Whether the plain (not hashed) salt bytes are to + be appended after the digest operation result bytes.
+ voidsetInvertPositionOfSaltInMessageBeforeDigesting(boolean invertPositionOfSaltInMessageBeforeDigesting) + +
+           + Whether the salt bytes are to be appended after the + message ones before performing the digest operation on the whole.
+ voidsetIterations(int iterations) + +
+           + Set the number of times the hash function will be applied recursively.
+ voidsetPoolSize(int poolSize) + +
+           + Sets the size of the pool of digesters to be created.
+ voidsetPrefix(String prefix) + +
+           + Sets the prefix to be added at the beginning of encryption results, and also to + be expected at the beginning of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not).
+ voidsetProvider(java.security.Provider provider) + +
+           + Sets the security provider to be asked for the digest algorithm.
+ voidsetProviderName(String providerName) + +
+           + Sets the name of the security provider to be asked for the + digest algorithm.
+ voidsetSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+ voidsetSaltSizeBytes(int saltSizeBytes) + +
+           + Sets the size of the salt to be used to compute the digest.
+ voidsetStringOutputType(String stringOutputType) + +
+           + Sets the the form in which String output + will be encoded.
+ voidsetSuffix(String suffix) + +
+           + Sets the suffix to be added at the end of encryption results, and also to + be expected at the end of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not).
+ voidsetUnicodeNormalizationIgnored(boolean unicodeNormalizationIgnored) + +
+           + Sets whether the unicode text normalization step should be ignored.
+ voidsetUseLenientSaltSizeCheck(boolean useLenientSaltSizeCheck) + +
+           + Whether digest matching operations will allow matching + digests with a salt size different to the one configured in the "saltSizeBytes" + property.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+PooledStringDigester

+
+public PooledStringDigester()
+
+
Creates a new instance of PooledStandardStringDigester. +

+

+ + + + + + + + +
+Method Detail
+ +

+setConfig

+
+public void setConfig(DigesterConfig config)
+
+

+ Sets a DigesterConfig + or StringDigesterConfig object + for the digester. If this config + object is set, it will be asked values for: +

+ +
    +
  • Algorithm
  • +
  • Security Provider (or provider name)
  • +
  • Salt size
  • +
  • Hashing iterations
  • +
  • Salt generator
  • +
  • Use of Unicode normalization mechanisms + (only StringDigesterConfig)
  • +
  • Output type (base64, hexadecimal) + (only StringDigesterConfig)
  • +
+ +

+ The non-null values it returns will override the default ones, + and will be overriden by any values specified with a setX + method. +

+

+

+
+
+
+
Parameters:
config - the DigesterConfig object to be used as the + source for configuration parameters.
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+

+ Sets the algorithm to be used for digesting, like MD5 + or SHA-1. +

+

+ This algorithm has to be supported by your security infrastructure, and + it should be allowed as an algorithm for creating + java.security.MessageDigest instances. +

+

+ If you are specifying a security provider with setProvider(Provider) or + setProviderName(String), this algorithm should be + supported by your specified provider. +

+

+ If you are not specifying a provider, you will be able to use those + algorithms provided by the default security provider of your JVM vendor. + For valid names in the Sun JVM, see Java + Cryptography Architecture API Specification & + Reference. +

+

+

+
+
+
+
Parameters:
algorithm - the name of the algorithm to be used.
+
+
+
+ +

+setSaltSizeBytes

+
+public void setSaltSizeBytes(int saltSizeBytes)
+
+

+ Sets the size of the salt to be used to compute the digest. + This mechanism is explained in + PKCS #5: Password-Based Cryptography Standard. +

+ +

+ If salt size is set to zero, then no salt will be used. +

+

+

+
+
+
+
Parameters:
saltSizeBytes - the size of the salt to be used, in bytes.
+
+
+
+ +

+setIterations

+
+public void setIterations(int iterations)
+
+

+ Set the number of times the hash function will be applied recursively. +
+ The hash function will be applied to its own results as many times as + specified: h(h(...h(x)...)) +

+

+ This mechanism is explained in + PKCS #5: Password-Based Cryptography Standard. +

+

+

+
+
+
+
Parameters:
iterations - the number of iterations.
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(SaltGenerator saltGenerator)
+
+

+ Sets the salt generator to be used. If no salt generator is specified, + an instance of RandomSaltGenerator will be used. +

+

+

+
+
+
+
Parameters:
saltGenerator - the salt generator to be used.
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+

+ Sets the name of the security provider to be asked for the + digest algorithm. This security provider has to be registered beforehand + at the JVM security framework. +

+

+ The provider can also be set with the setProvider(Provider) + method, in which case it will not be necessary neither registering + the provider beforehand, + nor calling this setProviderName(String) method to specify + a provider name. +

+

+ Note that a call to setProvider(Provider) overrides any value + set by this method. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
providerName - the name of the security provider to be asked + for the digest algorithm.
+
+
+
+ +

+setProvider

+
+public void setProvider(java.security.Provider provider)
+
+

+ Sets the security provider to be asked for the digest algorithm. + The provider does not have to be registered at the security + infrastructure beforehand, and its being used here will not result in + its being registered. +

+

+ If this method is called, calling setProviderName(String) + becomes unnecessary. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
provider - the provider to be asked for the chosen algorithm
+
+
+
+ +

+setInvertPositionOfSaltInMessageBeforeDigesting

+
+public void setInvertPositionOfSaltInMessageBeforeDigesting(boolean invertPositionOfSaltInMessageBeforeDigesting)
+
+

+ Whether the salt bytes are to be appended after the + message ones before performing the digest operation on the whole. The + default behaviour is to insert those bytes before the message bytes, but + setting this configuration item to true allows compatibility + with some external systems and specifications (e.g. LDAP {SSHA}). +

+

+ If this parameter is not explicitly set, the default behaviour + (insertion of salt before message) will be applied. +

+

+

+
+
+
+
Parameters:
invertPositionOfSaltInMessageBeforeDigesting - whether salt will be appended after the message before applying + the digest operation on the whole, instead of inserted before it + (which is the default).
+
+
+
+ +

+setInvertPositionOfPlainSaltInEncryptionResults

+
+public void setInvertPositionOfPlainSaltInEncryptionResults(boolean invertPositionOfPlainSaltInEncryptionResults)
+
+

+ Whether the plain (not hashed) salt bytes are to + be appended after the digest operation result bytes. The default behaviour is + to insert them before the digest result, but setting this configuration + item to true allows compatibility with some external systems + and specifications (e.g. LDAP {SSHA}). +

+

+ If this parameter is not explicitly set, the default behaviour + (insertion of plain salt before digest result) will be applied. +

+

+

+
+
+
+
Parameters:
invertPositionOfPlainSaltInEncryptionResults - whether plain salt will be appended after the digest operation + result instead of inserted before it (which is the + default).
Since:
+
1.7
+
+
+
+
+ +

+setUseLenientSaltSizeCheck

+
+public void setUseLenientSaltSizeCheck(boolean useLenientSaltSizeCheck)
+
+

+ Whether digest matching operations will allow matching + digests with a salt size different to the one configured in the "saltSizeBytes" + property. This is possible because digest algorithms will produce a fixed-size + result, so the remaining bytes from the hashed input will be considered salt. +

+

+ This will allow the digester to match digests produced in environments which do not + establish a fixed salt size as standard (for example, SSHA password encryption + in LDAP systems). +

+

+ The value of this property will not affect the creation of digests, + which will always have a salt of the size established by the "saltSizeBytes" + property. It will only affect digest matching. +

+

+ Setting this property to true is not compatible with SaltGenerator + implementations which return false for their + SaltGenerator.includePlainSaltInEncryptionResults() property. +

+

+ Also, be aware that some algorithms or algorithm providers might not support + knowing the size of the digests beforehand, which is also incompatible with + a lenient behaviour. +

+

+ If this parameter is not explicitly set, the default behaviour + (NOT lenient) will be applied. +

+

+

+
+
+
+
Parameters:
useLenientSaltSizeCheck - whether the digester will allow matching of + digests with different salt sizes than established or not (default + is false).
+
+
+
+ +

+setUnicodeNormalizationIgnored

+
+public void setUnicodeNormalizationIgnored(boolean unicodeNormalizationIgnored)
+
+

+ Sets whether the unicode text normalization step should be ignored. +

+

+ The Java Virtual Machine internally handles all Strings as UNICODE. When + digesting or matching digests in jasypt, these Strings are first + normalized to + its NFC form so that digest matching is not affected by the specific + form in which the messages where input. +

+

+ It is normally safe (and recommended) to leave this parameter set to + its default FALSE value (and thus DO perform normalization + operations). But in some specific cases in which issues with legacy + software could arise, it might be useful to set this to TRUE. +

+

+ For more information on unicode text normalization, see this issue of + Core Java Technologies Tech Tips. +

+

+

+
+
+
+
Parameters:
unicodeNormalizationIgnored - whether the unicode text + normalization step should be ignored or not.
+
+
+
+ +

+setStringOutputType

+
+public void setStringOutputType(String stringOutputType)
+
+

+ Sets the the form in which String output + will be encoded. Available encoding types are: +

+
    +
  • base64 (default)
  • +
  • hexadecimal
  • +
+

+ If not set, null will be returned. +

+

+

+
+
+
+
Parameters:
stringOutputType - the string output type.
+
+
+
+ +

+setPrefix

+
+public void setPrefix(String prefix)
+
+

+ Sets the prefix to be added at the beginning of encryption results, and also to + be expected at the beginning of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not). +

+

+ By default, no prefix will be added to encryption results. +

+

+

+
+
+
+
Parameters:
prefix - the prefix to be set
+
+
+
+ +

+setSuffix

+
+public void setSuffix(String suffix)
+
+

+ Sets the suffix to be added at the end of encryption results, and also to + be expected at the end of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not). +

+

+ By default, no suffix will be added to encryption results. +

+

+

+
+
+
+
Parameters:
suffix - the suffix to be set
+
+
+
+ +

+setPoolSize

+
+public void setPoolSize(int poolSize)
+
+

+ Sets the size of the pool of digesters to be created. +

+

+ This parameter is required. +

+

+

+
+
+
+
Parameters:
poolSize - size of the pool
+
+
+
+ +

+isInitialized

+
+public boolean isInitialized()
+
+

+ Returns true if the digester has already been initialized, false if + not.
+ Initialization happens: +

+
    +
  • When initialize is called.
  • +
  • When digest or matches are called for the + first time, if initialize has not been called before.
  • +
+

+ Once a digester has been initialized, trying to + change its configuration (algorithm, provider, salt size, iterations + or salt generator) will + result in an AlreadyInitializedException being thrown. +

+

+

+
+
+
+ +
Returns:
true if the digester has already been initialized, false if + not.
+
+
+
+ +

+initialize

+
+public void initialize()
+
+

+ Initialize the digester. +

+

+ This operation will consist in determining the actual configuration + values to be used, and then initializing the digester with them. +
+ These values are decided by applying the following priorities: +

+
    +
  1. First, the default values are considered.
  2. +
  3. Then, if a + DigesterConfig + object has been set with + setConfig, the non-null values returned by its + getX methods override the default values.
  4. +
  5. Finally, if the corresponding setX method has been called + on the digester itself for any of the configuration parameters, the + values set by these calls override all of the above.
  6. +
+

+ Once a digester has been initialized, trying to + change its configuration will result in an + AlreadyInitializedException being thrown. +

+

+

+
+
+
+ +
Throws: +
EncryptionInitializationException - if initialization could not + be correctly done (for example, if the digest algorithm chosen + cannot be used).
+
+
+
+ +

+digest

+
+public String digest(String message)
+
+

+ Performs a digest operation on a String message. +

+

+ The steps taken for creating the digest are: +

    +
  1. The String message is converted to a byte array.
  2. +
  3. A salt of the specified size is generated (see + SaltGenerator).
  4. +
  5. The salt bytes are added to the message.
  6. +
  7. The hash function is applied to the salt and message altogether, + and then to the + results of the function itself, as many times as specified + (iterations).
  8. +
  9. If specified by the salt generator (see + SaltGenerator.includePlainSaltInEncryptionResults()), + the undigested salt and the final result of the hash + function are concatenated and returned as a result.
  10. +
  11. The result of the concatenation is encoded in BASE64 (default) + or HEXADECIMAL + and returned as an ASCII String.
  12. +
+ Put schematically in bytes: +
    +
  • + DIGEST = |S|..(ssb)..|S|X|X|X|...|X| +
      +
    • S: salt bytes (plain, not digested). (OPTIONAL).
    • +
    • ssb: salt size in bytes.
    • +
    • X: bytes resulting from hashing (see below).
    • +
    +
  • +
  • + |X|X|X|...|X| = + H(H(H(..(it)..H(Z|Z|Z|...|Z|)))) +
      +
    • H: Hash function (algorithm).
    • +
    • it: Number of iterations.
    • +
    • Z: Input for hashing (see below).
    • +
    +
  • +
  • + |Z|Z|Z|...|Z| = + |S|..(ssb)..|S|M|M|M...|M| +
      +
    • S: salt bytes (plain, not digested).
    • +
    • ssb: salt size in bytes.
    • +
    • M: message bytes.
    • +
    +
  • +
+

+

+ If a random salt generator is used, two digests created for the same + message will always be different + (except in the case of random salt coincidence). + Because of this, in this case the result of the digest method + will contain both the undigested salt and the digest of the + (salt + message), so that another digest operation can be performed + with the same salt on a different message to check if both messages + match (all of which will be managed automatically by the + matches method). +

+

+

+
Specified by:
digest in interface StringDigester
+
+
+
Parameters:
message - the String to be digested +
Returns:
the digest result +
Throws: +
EncryptionOperationNotPossibleException - if the digest operation + fails, ommitting any further information about the cause for + security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, if the digest algorithm chosen + cannot be used).
+
+
+
+ +

+matches

+
+public boolean matches(String message,
+                       String digest)
+
+

+ Checks a message against a given digest. +

+

+ This method tells whether a message corresponds to a specific digest + or not by getting the salt with which the digest was created and + applying it to a digest operation performed on the message. If + new and existing digest match, the message is said to match the digest. +

+

+ This method will be used, for instance, for password checking in + authentication processes. +

+

+ A null message will only match a null digest. +

+

+

+
Specified by:
matches in interface StringDigester
+
+
+
Parameters:
message - the message to be compared to the digest.
digest - the digest. +
Returns:
true if the specified message matches the digest, false + if not. +
Throws: +
EncryptionOperationNotPossibleException - if the digest matching + operation fails, ommitting any further information about the + cause for security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, if the digest algorithm chosen + cannot be used).
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/StandardByteDigester.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/StandardByteDigester.html new file mode 100644 index 00000000..7f08fbf4 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/StandardByteDigester.html @@ -0,0 +1,1112 @@ + + + + + + + +StandardByteDigester (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.digest +
+Class StandardByteDigester

+
+Object
+  extended by org.jasypt.digest.StandardByteDigester
+
+
+
All Implemented Interfaces:
ByteDigester
+
+
+
+
public final class StandardByteDigester
extends Object
implements ByteDigester
+ + +

+

+ Standard implementation of the ByteDigester interface. + This class lets the user specify the algorithm (and provider) to be used for + creating digests, the size of the salt to be applied, + the number of times the hash function will be applied (iterations) and + the salt generator to be used. +

+

+ This class is thread-safe. +

+

+
Configuration +

+

+ The algorithm, provider, salt size iterations and salt generator + can take values in any of these ways: +

    +
  • Using its default values.
  • +
  • Setting a DigesterConfig + object which provides new + configuration values.
  • +
  • Calling the corresponding setAlgorithm(...), setProvider(...), + setProviderName(...), + setSaltSizeBytes(...), setIterations(...) + or setSaltGenerator(...) methods.
  • +
+ And the actual values to be used for initialization will be established + by applying the following priorities: +
    +
  1. First, the default values are considered.
  2. +
  3. Then, if a DigesterConfig + object has been set with + setConfig, the non-null values returned by its + getX methods override the default values.
  4. +
  5. Finally, if the corresponding setX method has been called + on the digester itself for any of the configuration parameters, the + values set by these calls override all of the above.
  6. +
+

+ +

+
Initialization +

+

+ Before it is ready to create digests, an object of this class has to be + initialized. Initialization happens: +

    +
  • When initialize is called.
  • +
  • When digest or matches are called for the + first time, if initialize has not been called before.
  • +
+ Once a digester has been initialized, trying to + change its configuration (algorithm, provider, salt size, iterations or + salt generator) + will result in an AlreadyInitializedException being thrown. +

+ +

+
Usage +

+

+ A digester may be used in two different ways: +

    +
  • For creating digests, by calling the digest method.
  • +
  • For matching digests, this is, checking whether a digest + corresponds adequately to a digest (as in password checking) or not, by + calling the matches method.
  • +
+ The steps taken for creating digests are: +
    +
  1. A salt of the specified size is generated (see + SaltGenerator). If salt size is zero, no salt will be + used.
  2. +
  3. The salt bytes are added to the message.
  4. +
  5. The hash function is applied to the salt and message altogether, + and then to the + results of the function itself, as many times as specified + (iterations).
  6. +
  7. If specified by the salt generator (see + SaltGenerator.includePlainSaltInEncryptionResults()), + the undigested salt and the final result of the hash + function are concatenated and returned as a result.
  8. +
+ Put schematically in bytes: +
    +
  • + DIGEST = |S|..(ssb)..|S|X|X|X|...|X| +
      +
    • S: salt bytes (plain, not digested). (OPTIONAL).
    • +
    • ssb: salt size in bytes.
    • +
    • X: bytes resulting from hashing (see below).
    • +
    +
  • +
  • + |X|X|X|...|X| = + H(H(H(..(it)..H(Z|Z|Z|...|Z|)))) +
      +
    • H: Hash function (algorithm).
    • +
    • it: Number of iterations.
    • +
    • Z: Input for hashing (see below).
    • +
    +
  • +
  • + |Z|Z|Z|...|Z| = + |S|..(ssb)..|S|M|M|M...|M| +
      +
    • S: salt bytes (plain, not digested).
    • +
    • ssb: salt size in bytes.
    • +
    • M: message bytes.
    • +
    +
  • +
+ If a random salt generator is used, two digests created for the same + message will always be different + (except in the case of random salt coincidence). + Because of this, in this case the result of the digest method + will contain both the undigested salt and the digest of the + (salt + message), so that another digest operation can be performed with + the same salt on a different message to check if both messages match + (all of which will be managed automatically by the matches method). +

+

+ To learn more about the mechanisms involved in digest creation, read + PKCS #5: Password-Based Cryptography Standard. +

+

+ +

+

+
Since:
+
1.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + + + + +
+Field Summary
+static StringDEFAULT_ALGORITHM + +
+          Default digest algorithm will be MD5
+static intDEFAULT_ITERATIONS + +
+          The minimum recommended iterations for hashing are 1000
+static intDEFAULT_SALT_SIZE_BYTES + +
+          The minimum recommended size for salt is 8 bytes
+  + + + + + + + + + + +
+Constructor Summary
StandardByteDigester() + +
+          Creates a new instance of StandardByteDigester.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ byte[]digest(byte[] message) + +
+           + Performs a digest operation on a byte array message.
+ voidinitialize() + +
+           + Initialize the digester.
+ booleanisInitialized() + +
+           + Returns true if the digester has already been initialized, false if + not.
+ Initialization happens:
+ booleanmatches(byte[] message, + byte[] digest) + +
+           + Checks a message against a given digest.
+ voidsetAlgorithm(String algorithm) + +
+           + Sets the algorithm to be used for digesting, like MD5 + or SHA-1.
+ voidsetConfig(DigesterConfig config) + +
+           + Sets a DigesterConfig object + for the digester.
+ voidsetInvertPositionOfPlainSaltInEncryptionResults(boolean invertPositionOfPlainSaltInEncryptionResults) + +
+           + Whether the plain (not hashed) salt bytes are to + be appended after the digest operation result bytes.
+ voidsetInvertPositionOfSaltInMessageBeforeDigesting(boolean invertPositionOfSaltInMessageBeforeDigesting) + +
+           + Whether the salt bytes are to be appended after the + message ones before performing the digest operation on the whole.
+ voidsetIterations(int iterations) + +
+           + Set the number of times the hash function will be applied recursively.
+ voidsetProvider(java.security.Provider provider) + +
+           + Sets the security provider to be asked for the digest algorithm.
+ voidsetProviderName(String providerName) + +
+           + Sets the name of the security provider to be asked for the + digest algorithm.
+ voidsetSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+ voidsetSaltSizeBytes(int saltSizeBytes) + +
+           + Sets the size of the salt to be used to compute the digest.
+ voidsetUseLenientSaltSizeCheck(boolean useLenientSaltSizeCheck) + +
+           + Whether digest matching operations will allow matching + digests with a salt size different to the one configured in the "saltSizeBytes" + property.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+DEFAULT_ALGORITHM

+
+public static final String DEFAULT_ALGORITHM
+
+
Default digest algorithm will be MD5 +

+

+
See Also:
Constant Field Values
+
+
+ +

+DEFAULT_SALT_SIZE_BYTES

+
+public static final int DEFAULT_SALT_SIZE_BYTES
+
+
The minimum recommended size for salt is 8 bytes +

+

+
See Also:
Constant Field Values
+
+
+ +

+DEFAULT_ITERATIONS

+
+public static final int DEFAULT_ITERATIONS
+
+
The minimum recommended iterations for hashing are 1000 +

+

+
See Also:
Constant Field Values
+
+ + + + + + + + +
+Constructor Detail
+ +

+StandardByteDigester

+
+public StandardByteDigester()
+
+
Creates a new instance of StandardByteDigester. +

+

+ + + + + + + + +
+Method Detail
+ +

+setConfig

+
+public void setConfig(DigesterConfig config)
+
+

+ Sets a DigesterConfig object + for the digester. If this config + object is set, it will be asked values for: +

+ +
    +
  • Algorithm
  • +
  • Security Provider (or provider name)
  • +
  • Salt size
  • +
  • Hashing iterations
  • +
  • Salt generator
  • +
  • Location of the salt in relation to the encrypted message + (default: before)
  • +
+ +

+ The non-null values it returns will override the default ones, + and will be overriden by any values specified with a setX + method. +

+

+

+
+
+
+
Parameters:
config - the DigesterConfig object to be used as the + source for configuration parameters.
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+

+ Sets the algorithm to be used for digesting, like MD5 + or SHA-1. +

+

+ This algorithm has to be supported by your security infrastructure, and + it should be allowed as an algorithm for creating + java.security.MessageDigest instances. +

+

+ If you are specifying a security provider with setProvider(Provider) or + setProviderName(String), this algorithm should be + supported by your specified provider. +

+

+ If you are not specifying a provider, you will be able to use those + algorithms provided by the default security provider of your JVM vendor. + For valid names in the Sun JVM, see Java + Cryptography Architecture API Specification & + Reference. +

+

+

+
+
+
+
Parameters:
algorithm - the name of the algorithm to be used.
+
+
+
+ +

+setSaltSizeBytes

+
+public void setSaltSizeBytes(int saltSizeBytes)
+
+

+ Sets the size of the salt to be used to compute the digest. + This mechanism is explained in + PKCS #5: Password-Based Cryptography Standard. +

+ +

+ If salt size is set to zero, then no salt will be used. +

+

+

+
+
+
+
Parameters:
saltSizeBytes - the size of the salt to be used, in bytes.
+
+
+
+ +

+setIterations

+
+public void setIterations(int iterations)
+
+

+ Set the number of times the hash function will be applied recursively. +
+ The hash function will be applied to its own results as many times as + specified: h(h(...h(x)...)) +

+

+ This mechanism is explained in + PKCS #5: Password-Based Cryptography Standard. +

+

+

+
+
+
+
Parameters:
iterations - the number of iterations.
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(SaltGenerator saltGenerator)
+
+

+ Sets the salt generator to be used. If no salt generator is specified, + an instance of RandomSaltGenerator will be used. +

+

+

+
+
+
+
Parameters:
saltGenerator - the salt generator to be used.
Since:
+
1.2
+
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+

+ Sets the name of the security provider to be asked for the + digest algorithm. This security provider has to be registered beforehand + at the JVM security framework. +

+

+ The provider can also be set with the setProvider(Provider) + method, in which case it will not be necessary neither registering + the provider beforehand, + nor calling this setProviderName(String) method to specify + a provider name. +

+

+ Note that a call to setProvider(Provider) overrides any value + set by this method. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
providerName - the name of the security provider to be asked + for the digest algorithm.
Since:
+
1.3
+
+
+
+
+ +

+setProvider

+
+public void setProvider(java.security.Provider provider)
+
+

+ Sets the security provider to be asked for the digest algorithm. + The provider does not have to be registered at the security + infrastructure beforehand, and its being used here will not result in + its being registered. +

+

+ If this method is called, calling setProviderName(String) + becomes unnecessary. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
provider - the provider to be asked for the chosen algorithm
Since:
+
1.3
+
+
+
+
+ +

+setInvertPositionOfSaltInMessageBeforeDigesting

+
+public void setInvertPositionOfSaltInMessageBeforeDigesting(boolean invertPositionOfSaltInMessageBeforeDigesting)
+
+

+ Whether the salt bytes are to be appended after the + message ones before performing the digest operation on the whole. The + default behaviour is to insert those bytes before the message bytes, but + setting this configuration item to true allows compatibility + with some external systems and specifications (e.g. LDAP {SSHA}). +

+

+ If this parameter is not explicitly set, the default behaviour + (insertion of salt before message) will be applied. +

+

+

+
+
+
+
Parameters:
invertPositionOfSaltInMessageBeforeDigesting - whether salt will be appended after the message before applying + the digest operation on the whole, instead of inserted before it + (which is the default).
Since:
+
1.7
+
+
+
+
+ +

+setInvertPositionOfPlainSaltInEncryptionResults

+
+public void setInvertPositionOfPlainSaltInEncryptionResults(boolean invertPositionOfPlainSaltInEncryptionResults)
+
+

+ Whether the plain (not hashed) salt bytes are to + be appended after the digest operation result bytes. The default behaviour is + to insert them before the digest result, but setting this configuration + item to true allows compatibility with some external systems + and specifications (e.g. LDAP {SSHA}). +

+

+ If this parameter is not explicitly set, the default behaviour + (insertion of plain salt before digest result) will be applied. +

+

+

+
+
+
+
Parameters:
invertPositionOfPlainSaltInEncryptionResults - whether plain salt will be appended after the digest operation + result instead of inserted before it (which is the + default).
Since:
+
1.7
+
+
+
+
+ +

+setUseLenientSaltSizeCheck

+
+public void setUseLenientSaltSizeCheck(boolean useLenientSaltSizeCheck)
+
+

+ Whether digest matching operations will allow matching + digests with a salt size different to the one configured in the "saltSizeBytes" + property. This is possible because digest algorithms will produce a fixed-size + result, so the remaining bytes from the hashed input will be considered salt. +

+

+ This will allow the digester to match digests produced in environments which do not + establish a fixed salt size as standard (for example, SSHA password encryption + in LDAP systems). +

+

+ The value of this property will not affect the creation of digests, + which will always have a salt of the size established by the "saltSizeBytes" + property. It will only affect digest matching. +

+

+ Setting this property to true is not compatible with SaltGenerator + implementations which return false for their + SaltGenerator.includePlainSaltInEncryptionResults() property. +

+

+ Also, be aware that some algorithms or algorithm providers might not support + knowing the size of the digests beforehand, which is also incompatible with + a lenient behaviour. +

+

+ If this parameter is not explicitly set, the default behaviour + (NOT lenient) will be applied. +

+

+

+
+
+
+
Parameters:
useLenientSaltSizeCheck - whether the digester will allow matching of + digests with different salt sizes than established or not (default + is false).
Since:
+
1.7
+
+
+
+
+ +

+isInitialized

+
+public boolean isInitialized()
+
+

+ Returns true if the digester has already been initialized, false if + not.
+ Initialization happens: +

+
    +
  • When initialize is called.
  • +
  • When digest or matches are called for the + first time, if initialize has not been called before.
  • +
+

+ Once a digester has been initialized, trying to + change its configuration (algorithm, provider, salt size, iterations + or salt generator) will + result in an AlreadyInitializedException being thrown. +

+

+

+
+
+
+ +
Returns:
true if the digester has already been initialized, false if + not.
+
+
+
+ +

+initialize

+
+public void initialize()
+
+

+ Initialize the digester. +

+

+ This operation will consist in determining the actual configuration + values to be used, and then initializing the digester with them. +
+ These values are decided by applying the following priorities: +

+
    +
  1. First, the default values are considered.
  2. +
  3. Then, if a + DigesterConfig + object has been set with + setConfig, the non-null values returned by its + getX methods override the default values.
  4. +
  5. Finally, if the corresponding setX method has been called + on the digester itself for any of the configuration parameters, the + values set by these calls override all of the above.
  6. +
+

+ Once a digester has been initialized, trying to + change its configuration will result in an + AlreadyInitializedException being thrown. +

+

+

+
+
+
+ +
Throws: +
EncryptionInitializationException - if initialization could not + be correctly done (for example, if the digest algorithm chosen + cannot be used).
+
+
+
+ +

+digest

+
+public byte[] digest(byte[] message)
+
+

+ Performs a digest operation on a byte array message. +

+

+ The steps taken for creating the digest are: +

    +
  1. A salt of the specified size is generated (see + SaltGenerator).
  2. +
  3. The salt bytes are added to the message.
  4. +
  5. The hash function is applied to the salt and message altogether, + and then to the + results of the function itself, as many times as specified + (iterations).
  6. +
  7. If specified by the salt generator (see + SaltGenerator.includePlainSaltInEncryptionResults()), + the undigested salt and the final result of the hash + function are concatenated and returned as a result.
  8. +
+ Put schematically in bytes: +
    +
  • + DIGEST = |S|..(ssb)..|S|X|X|X|...|X| +
      +
    • S: salt bytes (plain, not digested). (OPTIONAL).
    • +
    • ssb: salt size in bytes.
    • +
    • X: bytes resulting from hashing (see below).
    • +
    +
  • +
  • + |X|X|X|...|X| = + H(H(H(..(it)..H(Z|Z|Z|...|Z|)))) +
      +
    • H: Hash function (algorithm).
    • +
    • it: Number of iterations.
    • +
    • Z: Input for hashing (see below).
    • +
    +
  • +
  • + |Z|Z|Z|...|Z| = + |S|..(ssb)..|S|M|M|M...|M| +
      +
    • S: salt bytes (plain, not digested).
    • +
    • ssb: salt size in bytes.
    • +
    • M: message bytes.
    • +
    +
  • +
+

+

+ If a random salt generator is used, two digests created for the same + message will always be different + (except in the case of random salt coincidence). + Because of this, in this case the result of the digest method + will contain both the undigested salt and the digest of the + (salt + message), so that another digest operation can be performed + with the same salt on a different message to check if both messages + match (all of which will be managed automatically by the + matches method). +

+

+

+
Specified by:
digest in interface ByteDigester
+
+
+
Parameters:
message - the byte array to be digested +
Returns:
the digest result +
Throws: +
EncryptionOperationNotPossibleException - if the digest operation + fails, ommitting any further information about the cause for + security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, if the digest algorithm chosen + cannot be used).
+
+
+
+ +

+matches

+
+public boolean matches(byte[] message,
+                       byte[] digest)
+
+

+ Checks a message against a given digest. +

+

+ This method tells whether a message corresponds to a specific digest + or not by getting the salt with which the digest was created and + applying it to a digest operation performed on the message. If + new and existing digest match, the message is said to match the digest. +

+

+ This method will be used, for instance, for password checking in + authentication processes. +

+

+ A null message will only match a null digest. +

+

+

+
Specified by:
matches in interface ByteDigester
+
+
+
Parameters:
message - the message to be compared to the digest.
digest - the digest. +
Returns:
true if the specified message matches the digest, false + if not. +
Throws: +
EncryptionOperationNotPossibleException - if the digest matching + operation fails, ommitting any further information about the + cause for security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, if the digest algorithm chosen + cannot be used).
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/StandardStringDigester.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/StandardStringDigester.html new file mode 100644 index 00000000..a3b1eadf --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/StandardStringDigester.html @@ -0,0 +1,1346 @@ + + + + + + + +StandardStringDigester (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.digest +
+Class StandardStringDigester

+
+Object
+  extended by org.jasypt.digest.StandardStringDigester
+
+
+
All Implemented Interfaces:
StringDigester
+
+
+
+
public final class StandardStringDigester
extends Object
implements StringDigester
+ + +

+

+ Standard implementation of the StringDigester interface. + This class lets the user specify the algorithm (and provider) to be used for + creating digests, the size of the salt to be applied, + the number of times the hash function will be applied (iterations) and + the salt generator to be used. +

+

+ This class avoids byte-conversion problems related to the fact of + different platforms having different default charsets, and returns + digests in the form of BASE64-encoded or HEXADECIMAL ASCII Strings. +

+

+ This class is thread-safe. +

+

+
Configuration +

+

+ The algorithm, provider, salt size, iterations and salt generator can take values + in any of these ways: +

    +
  • Using its default values.
  • +
  • Setting a DigesterConfig + object which provides new + configuration values.
  • +
  • Calling the corresponding setX(...) methods.
  • +
+ And the actual values to be used for initialization will be established + by applying the following priorities: +
    +
  1. First, the default values are considered.
  2. +
  3. Then, if a DigesterConfig + object has been set with + setConfig, the non-null values returned by its + getX methods override the default values.
  4. +
  5. Finally, if the corresponding setX method has been called + on the digester itself for any of the configuration parameters, the + values set by these calls override all of the above.
  6. +
+

+ +

+
Initialization +

+

+ Before it is ready to create digests, an object of this class has to be + initialized. Initialization happens: +

    +
  • When initialize is called.
  • +
  • When digest or matches are called for the + first time, if initialize has not been called before.
  • +
+ Once a digester has been initialized, trying to + change its configuration + will result in an AlreadyInitializedException being thrown. +

+ +

+
Usage +

+

+ A digester may be used in two different ways: +

    +
  • For creating digests, by calling the digest method.
  • +
  • For matching digests, this is, checking whether a digest + corresponds adequately to a digest (as in password checking) or not, by + calling the matches method.
  • +
+ The steps taken for creating digests are: +
    +
  1. The String message is converted to a byte array.
  2. +
  3. A salt of the specified size is generated (see + SaltGenerator).
  4. +
  5. The salt bytes are added to the message.
  6. +
  7. The hash function is applied to the salt and message altogether, + and then to the + results of the function itself, as many times as specified + (iterations).
  8. +
  9. If specified by the salt generator (see + SaltGenerator.includePlainSaltInEncryptionResults()), + the undigested salt and the final result of the hash + function are concatenated and returned as a result.
  10. +
  11. The result of the concatenation is encoded in BASE64 or HEXADECIMAL + and returned as an ASCII String.
  12. +
+ Put schematically in bytes: +
    +
  • + DIGEST = |S|..(ssb)..|S|X|X|X|...|X| +
      +
    • S: salt bytes (plain, not digested). (OPTIONAL).
    • +
    • ssb: salt size in bytes.
    • +
    • X: bytes resulting from hashing (see below).
    • +
    +
  • +
  • + |X|X|X|...|X| = + H(H(H(..(it)..H(Z|Z|Z|...|Z|)))) +
      +
    • H: Hash function (algorithm).
    • +
    • it: Number of iterations.
    • +
    • Z: Input for hashing (see below).
    • +
    +
  • +
  • + |Z|Z|Z|...|Z| = + |S|..(ssb)..|S|M|M|M...|M| +
      +
    • S: salt bytes (plain, not digested).
    • +
    • ssb: salt size in bytes.
    • +
    • M: message bytes.
    • +
    +
  • +
+ If a random salt generator is used, two digests created for the same + message will always be different + (except in the case of random salt coincidence). + Because of this, in this case the result of the digest method + will contain both the undigested salt and the digest of the + (salt + message), so that another digest operation can be performed + with the same salt on a different message to check if both messages + match (all of which will be managed automatically by the + matches method). +

+

+ To learn more about the mechanisms involved in digest creation, read + PKCS #5: Password-Based Cryptography Standard. +

+

+ +

+

+
Since:
+
1.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + +
+Field Summary
+static StringDEFAULT_STRING_OUTPUT_TYPE + +
+           + Default type of String output.
+static booleanDEFAULT_UNICODE_NORMALIZATION_IGNORED + +
+           + Whether the Unicode normalization step should be ignored because of + legacy-compatibility issues.
+static StringDIGEST_CHARSET + +
+           + Charset to be used for encoding the resulting digests.
+static StringMESSAGE_CHARSET + +
+           + Charset to be used to obtain "digestable" byte arrays from input Strings.
+  + + + + + + + + + + +
+Constructor Summary
StandardStringDigester() + +
+          Creates a new instance of StandardStringDigester.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Stringdigest(String message) + +
+           + Performs a digest operation on a String message.
+ voidinitialize() + +
+           + Initialize the digester.
+ booleanisInitialized() + +
+           + Returns true if the digester has already been initialized, false if + not.
+ Initialization happens:
+ booleanmatches(String message, + String digest) + +
+           + Checks a message against a given digest.
+ voidsetAlgorithm(String algorithm) + +
+           + Sets the algorithm to be used for digesting, like MD5 + or SHA-1.
+ voidsetConfig(DigesterConfig config) + +
+           + Sets a DigesterConfig + or StringDigesterConfig object + for the digester.
+ voidsetInvertPositionOfPlainSaltInEncryptionResults(boolean invertPositionOfPlainSaltInEncryptionResults) + +
+           + Whether the plain (not hashed) salt bytes are to + be appended after the digest operation result bytes.
+ voidsetInvertPositionOfSaltInMessageBeforeDigesting(boolean invertPositionOfSaltInMessageBeforeDigesting) + +
+           + Whether the salt bytes are to be appended after the + message ones before performing the digest operation on the whole.
+ voidsetIterations(int iterations) + +
+           + Set the number of times the hash function will be applied recursively.
+ voidsetPrefix(String prefix) + +
+           + Sets the prefix to be added at the beginning of encryption results, and also to + be expected at the beginning of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not).
+ voidsetProvider(java.security.Provider provider) + +
+           + Sets the security provider to be asked for the digest algorithm.
+ voidsetProviderName(String providerName) + +
+           + Sets the name of the security provider to be asked for the + digest algorithm.
+ voidsetSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+ voidsetSaltSizeBytes(int saltSizeBytes) + +
+           + Sets the size of the salt to be used to compute the digest.
+ voidsetStringOutputType(String stringOutputType) + +
+           + Sets the the form in which String output + will be encoded.
+ voidsetSuffix(String suffix) + +
+           + Sets the suffix to be added at the end of encryption results, and also to + be expected at the end of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not).
+ voidsetUnicodeNormalizationIgnored(boolean unicodeNormalizationIgnored) + +
+           + Sets whether the unicode text normalization step should be ignored.
+ voidsetUseLenientSaltSizeCheck(boolean useLenientSaltSizeCheck) + +
+           + Whether digest matching operations will allow matching + digests with a salt size different to the one configured in the "saltSizeBytes" + property.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+MESSAGE_CHARSET

+
+public static final String MESSAGE_CHARSET
+
+

+ Charset to be used to obtain "digestable" byte arrays from input Strings. + Set to UTF-8. +

+

+ This charset has to be fixed to some value so that we avoid problems + with different platforms having different "default" charsets. +

+

+ It is set to UTF-8 because it covers the whole spectrum of characters + representable in Java (which internally uses UTF-16), and avoids the + size penalty of UTF-16 (which will always use two bytes for representing + each character, even if it is an ASCII one). +

+

+ Setting this value to UTF-8 does not mean that Strings that originally + come for, for example, an ISO-8859-1 input, will not be correcly + digested. It simply provides a way of "fixing" the way a String will + be converted into bytes for digesting. +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+DIGEST_CHARSET

+
+public static final String DIGEST_CHARSET
+
+

+ Charset to be used for encoding the resulting digests. + Set to US-ASCII. +

+

+ The result of digesting some bytes can be any other bytes, and so + the result of digesting, for example, some LATIN-1 valid String bytes, + can be bytes that may not conform a "valid" LATIN-1 String. +

+

+ Because of this, digests are always encoded in BASE64 or + HEXADECIMAL after + being created, and this ensures that the + digests will make perfectly representable, safe ASCII Strings. Because + of this, the charset used to convert the digest bytes to the returned + String is set to US-ASCII. +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+DEFAULT_UNICODE_NORMALIZATION_IGNORED

+
+public static final boolean DEFAULT_UNICODE_NORMALIZATION_IGNORED
+
+

+ Whether the Unicode normalization step should be ignored because of + legacy-compatibility issues. Defaults to FALSE (the normalization + step WILL be performed). +

+

+

+
See Also:
Constant Field Values
+
+
+ +

+DEFAULT_STRING_OUTPUT_TYPE

+
+public static final String DEFAULT_STRING_OUTPUT_TYPE
+
+

+ Default type of String output. Set to BASE64. +

+

+

+
See Also:
Constant Field Values
+
+ + + + + + + + +
+Constructor Detail
+ +

+StandardStringDigester

+
+public StandardStringDigester()
+
+
Creates a new instance of StandardStringDigester. +

+

+ + + + + + + + +
+Method Detail
+ +

+setConfig

+
+public void setConfig(DigesterConfig config)
+
+

+ Sets a DigesterConfig + or StringDigesterConfig object + for the digester. If this config + object is set, it will be asked values for: +

+ +
    +
  • Algorithm
  • +
  • Security Provider (or provider name)
  • +
  • Salt size
  • +
  • Hashing iterations
  • +
  • Salt generator
  • +
  • Use of Unicode normalization mechanisms + (only StringDigesterConfig)
  • +
  • Output type (base64, hexadecimal) + (only StringDigesterConfig)
  • +
+ +

+ The non-null values it returns will override the default ones, + and will be overriden by any values specified with a setX + method. +

+

+

+
+
+
+
Parameters:
config - the DigesterConfig object to be used as the + source for configuration parameters.
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+

+ Sets the algorithm to be used for digesting, like MD5 + or SHA-1. +

+

+ This algorithm has to be supported by your security infrastructure, and + it should be allowed as an algorithm for creating + java.security.MessageDigest instances. +

+

+ If you are specifying a security provider with setProvider(Provider) or + setProviderName(String), this algorithm should be + supported by your specified provider. +

+

+ If you are not specifying a provider, you will be able to use those + algorithms provided by the default security provider of your JVM vendor. + For valid names in the Sun JVM, see Java + Cryptography Architecture API Specification & + Reference. +

+

+

+
+
+
+
Parameters:
algorithm - the name of the algorithm to be used.
+
+
+
+ +

+setSaltSizeBytes

+
+public void setSaltSizeBytes(int saltSizeBytes)
+
+

+ Sets the size of the salt to be used to compute the digest. + This mechanism is explained in + PKCS #5: Password-Based Cryptography Standard. +

+ +

+ If salt size is set to zero, then no salt will be used. +

+

+

+
+
+
+
Parameters:
saltSizeBytes - the size of the salt to be used, in bytes.
+
+
+
+ +

+setIterations

+
+public void setIterations(int iterations)
+
+

+ Set the number of times the hash function will be applied recursively. +
+ The hash function will be applied to its own results as many times as + specified: h(h(...h(x)...)) +

+

+ This mechanism is explained in + PKCS #5: Password-Based Cryptography Standard. +

+

+

+
+
+
+
Parameters:
iterations - the number of iterations.
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(SaltGenerator saltGenerator)
+
+

+ Sets the salt generator to be used. If no salt generator is specified, + an instance of RandomSaltGenerator will be used. +

+

+

+
+
+
+
Parameters:
saltGenerator - the salt generator to be used.
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+

+ Sets the name of the security provider to be asked for the + digest algorithm. This security provider has to be registered beforehand + at the JVM security framework. +

+

+ The provider can also be set with the setProvider(Provider) + method, in which case it will not be necessary neither registering + the provider beforehand, + nor calling this setProviderName(String) method to specify + a provider name. +

+

+ Note that a call to setProvider(Provider) overrides any value + set by this method. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
providerName - the name of the security provider to be asked + for the digest algorithm.
Since:
+
1.3
+
+
+
+
+ +

+setProvider

+
+public void setProvider(java.security.Provider provider)
+
+

+ Sets the security provider to be asked for the digest algorithm. + The provider does not have to be registered at the security + infrastructure beforehand, and its being used here will not result in + its being registered. +

+

+ If this method is called, calling setProviderName(String) + becomes unnecessary. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
provider - the provider to be asked for the chosen algorithm
Since:
+
1.3
+
+
+
+
+ +

+setInvertPositionOfSaltInMessageBeforeDigesting

+
+public void setInvertPositionOfSaltInMessageBeforeDigesting(boolean invertPositionOfSaltInMessageBeforeDigesting)
+
+

+ Whether the salt bytes are to be appended after the + message ones before performing the digest operation on the whole. The + default behaviour is to insert those bytes before the message bytes, but + setting this configuration item to true allows compatibility + with some external systems and specifications (e.g. LDAP {SSHA}). +

+

+ If this parameter is not explicitly set, the default behaviour + (insertion of salt before message) will be applied. +

+

+

+
+
+
+
Parameters:
invertPositionOfSaltInMessageBeforeDigesting - whether salt will be appended after the message before applying + the digest operation on the whole, instead of inserted before it + (which is the default).
Since:
+
1.7
+
+
+
+
+ +

+setInvertPositionOfPlainSaltInEncryptionResults

+
+public void setInvertPositionOfPlainSaltInEncryptionResults(boolean invertPositionOfPlainSaltInEncryptionResults)
+
+

+ Whether the plain (not hashed) salt bytes are to + be appended after the digest operation result bytes. The default behaviour is + to insert them before the digest result, but setting this configuration + item to true allows compatibility with some external systems + and specifications (e.g. LDAP {SSHA}). +

+

+ If this parameter is not explicitly set, the default behaviour + (insertion of plain salt before digest result) will be applied. +

+

+

+
+
+
+
Parameters:
invertPositionOfPlainSaltInEncryptionResults - whether plain salt will be appended after the digest operation + result instead of inserted before it (which is the + default).
Since:
+
1.7
+
+
+
+
+ +

+setUseLenientSaltSizeCheck

+
+public void setUseLenientSaltSizeCheck(boolean useLenientSaltSizeCheck)
+
+

+ Whether digest matching operations will allow matching + digests with a salt size different to the one configured in the "saltSizeBytes" + property. This is possible because digest algorithms will produce a fixed-size + result, so the remaining bytes from the hashed input will be considered salt. +

+

+ This will allow the digester to match digests produced in environments which do not + establish a fixed salt size as standard (for example, SSHA password encryption + in LDAP systems). +

+

+ The value of this property will not affect the creation of digests, + which will always have a salt of the size established by the "saltSizeBytes" + property. It will only affect digest matching. +

+

+ Setting this property to true is not compatible with SaltGenerator + implementations which return false for their + SaltGenerator.includePlainSaltInEncryptionResults() property. +

+

+ Also, be aware that some algorithms or algorithm providers might not support + knowing the size of the digests beforehand, which is also incompatible with + a lenient behaviour. +

+

+ If this parameter is not explicitly set, the default behaviour + (NOT lenient) will be applied. +

+

+

+
+
+
+
Parameters:
useLenientSaltSizeCheck - whether the digester will allow matching of + digests with different salt sizes than established or not (default + is false).
Since:
+
1.7
+
+
+
+
+ +

+setUnicodeNormalizationIgnored

+
+public void setUnicodeNormalizationIgnored(boolean unicodeNormalizationIgnored)
+
+

+ Sets whether the unicode text normalization step should be ignored. +

+

+ The Java Virtual Machine internally handles all Strings as UNICODE. When + digesting or matching digests in jasypt, these Strings are first + normalized to + its NFC form so that digest matching is not affected by the specific + form in which the messages where input. +

+

+ It is normally safe (and recommended) to leave this parameter set to + its default FALSE value (and thus DO perform normalization + operations). But in some specific cases in which issues with legacy + software could arise, it might be useful to set this to TRUE. +

+

+ For more information on unicode text normalization, see this issue of + Core Java Technologies Tech Tips. +

+

+

+
+
+
+
Parameters:
unicodeNormalizationIgnored - whether the unicode text + normalization step should be ignored or not.
Since:
+
1.3
+
+
+
+
+ +

+setStringOutputType

+
+public void setStringOutputType(String stringOutputType)
+
+

+ Sets the the form in which String output + will be encoded. Available encoding types are: +

+
    +
  • base64 (default)
  • +
  • hexadecimal
  • +
+

+ If not set, null will be returned. +

+

+

+
+
+
+
Parameters:
stringOutputType - the string output type.
Since:
+
1.3
+
+
+
+
+ +

+setPrefix

+
+public void setPrefix(String prefix)
+
+

+ Sets the prefix to be added at the beginning of encryption results, and also to + be expected at the beginning of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not). +

+

+ By default, no prefix will be added to encryption results. +

+

+

+
+
+
+
Parameters:
prefix - the prefix to be set
Since:
+
1.7
+
+
+
+
+ +

+setSuffix

+
+public void setSuffix(String suffix)
+
+

+ Sets the suffix to be added at the end of encryption results, and also to + be expected at the end of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not). +

+

+ By default, no suffix will be added to encryption results. +

+

+

+
+
+
+
Parameters:
suffix - the suffix to be set
Since:
+
1.7
+
+
+
+
+ +

+isInitialized

+
+public boolean isInitialized()
+
+

+ Returns true if the digester has already been initialized, false if + not.
+ Initialization happens: +

+
    +
  • When initialize is called.
  • +
  • When digest or matches are called for the + first time, if initialize has not been called before.
  • +
+

+ Once a digester has been initialized, trying to + change its configuration will result in an + AlreadyInitializedException + being thrown. +

+

+

+
+
+
+ +
Returns:
true if the digester has already been initialized, false if + not.
+
+
+
+ +

+initialize

+
+public void initialize()
+
+

+ Initialize the digester. +

+

+ This operation will consist in determining the actual configuration + values to be used, and then initializing the digester with them. +
+ These values are decided by applying the following priorities: +

+
    +
  1. First, the default values are considered.
  2. +
  3. Then, if a + DigesterConfig object + has been set with + setConfig, the non-null values returned by its + getX methods override the default values.
  4. +
  5. Finally, if the corresponding setX method has been called + on the digester itself for any of the configuration parameters, the + values set by these calls override all of the above.
  6. +
+

+ Once a digester has been initialized, trying to + change its configuration will result in an + AlreadyInitializedException + being thrown. +

+

+

+
+
+
+ +
Throws: +
EncryptionInitializationException - if initialization could not + be correctly done (for example, if the digest algorithm chosen + cannot be used).
+
+
+
+ +

+digest

+
+public String digest(String message)
+
+

+ Performs a digest operation on a String message. +

+

+ The steps taken for creating the digest are: +

    +
  1. The String message is converted to a byte array.
  2. +
  3. A salt of the specified size is generated (see + SaltGenerator).
  4. +
  5. The salt bytes are added to the message.
  6. +
  7. The hash function is applied to the salt and message altogether, + and then to the + results of the function itself, as many times as specified + (iterations).
  8. +
  9. If specified by the salt generator (see + SaltGenerator.includePlainSaltInEncryptionResults()), + the undigested salt and the final result of the hash + function are concatenated and returned as a result.
  10. +
  11. The result of the concatenation is encoded in BASE64 (default) + or HEXADECIMAL + and returned as an ASCII String.
  12. +
+ Put schematically in bytes: +
    +
  • + DIGEST = |S|..(ssb)..|S|X|X|X|...|X| +
      +
    • S: salt bytes (plain, not digested). (OPTIONAL).
    • +
    • ssb: salt size in bytes.
    • +
    • X: bytes resulting from hashing (see below).
    • +
    +
  • +
  • + |X|X|X|...|X| = + H(H(H(..(it)..H(Z|Z|Z|...|Z|)))) +
      +
    • H: Hash function (algorithm).
    • +
    • it: Number of iterations.
    • +
    • Z: Input for hashing (see below).
    • +
    +
  • +
  • + |Z|Z|Z|...|Z| = + |S|..(ssb)..|S|M|M|M...|M| +
      +
    • S: salt bytes (plain, not digested).
    • +
    • ssb: salt size in bytes.
    • +
    • M: message bytes.
    • +
    +
  • +
+

+

+ If a random salt generator is used, two digests created for the same + message will always be different + (except in the case of random salt coincidence). + Because of this, in this case the result of the digest method + will contain both the undigested salt and the digest of the + (salt + message), so that another digest operation can be performed + with the same salt on a different message to check if both messages + match (all of which will be managed automatically by the + matches method). +

+

+

+
Specified by:
digest in interface StringDigester
+
+
+
Parameters:
message - the String to be digested +
Returns:
the digest result +
Throws: +
EncryptionOperationNotPossibleException - if the digest operation + fails, ommitting any further information about the cause for + security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, if the digest algorithm chosen + cannot be used).
+
+
+
+ +

+matches

+
+public boolean matches(String message,
+                       String digest)
+
+

+ Checks a message against a given digest. +

+

+ This method tells whether a message corresponds to a specific digest + or not by getting the salt with which the digest was created and + applying it to a digest operation performed on the message. If + new and existing digest match, the message is said to match the digest. +

+

+ This method will be used, for instance, for password checking in + authentication processes. +

+

+ A null message will only match a null digest. +

+

+

+
Specified by:
matches in interface StringDigester
+
+
+
Parameters:
message - the message to be compared to the digest.
digest - the digest. +
Returns:
true if the specified message matches the digest, false + if not. +
Throws: +
EncryptionOperationNotPossibleException - if the digest matching + operation fails, ommitting any further information about the + cause for security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, if the digest algorithm chosen + cannot be used).
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/StringDigester.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/StringDigester.html new file mode 100644 index 00000000..3ad8aee3 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/StringDigester.html @@ -0,0 +1,261 @@ + + + + + + + +StringDigester (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.digest +
+Interface StringDigester

+
+
All Known Implementing Classes:
PooledStringDigester, StandardStringDigester
+
+
+
+
public interface StringDigester
+ + +

+

+ Common interface for all digesters which receive a String message and + return a String digest. +

+

+ For a default implementation, see StandardStringDigester. +

+

+ +

+

+
Since:
+
1.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + +
+Method Summary
+ Stringdigest(String message) + +
+           + Create a digest of the input message.
+ booleanmatches(String message, + String digest) + +
+           + Check whether a message matches a digest, managing aspects like + salt, hashing iterations, etc.
+  +

+ + + + + + + + +
+Method Detail
+ +

+digest

+
+String digest(String message)
+
+

+ Create a digest of the input message. +

+

+

+
Parameters:
message - the message to be digested +
Returns:
the digest
+
+
+
+ +

+matches

+
+boolean matches(String message,
+                String digest)
+
+

+ Check whether a message matches a digest, managing aspects like + salt, hashing iterations, etc. (if applicable). +

+

+

+
Parameters:
message - the message to check
digest - the digest to check +
Returns:
TRUE if the message matches the digest, FALSE if not.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/ByteDigester.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/ByteDigester.html new file mode 100644 index 00000000..4b7ccc01 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/ByteDigester.html @@ -0,0 +1,193 @@ + + + + + + + +Uses of Interface org.jasypt.digest.ByteDigester (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.digest.ByteDigester

+
+ + + + + + + + + +
+Packages that use ByteDigester
org.jasypt.digest  
+  +

+ + + + + +
+Uses of ByteDigester in org.jasypt.digest
+  +

+ + + + + + + + + + + + + +
Classes in org.jasypt.digest that implement ByteDigester
+ classPooledByteDigester + +
+           + Pooled implementation of ByteDigester that in fact contains + an array of StandardByteDigester objects which are used + to attend digest and match requests in round-robin.
+ classStandardByteDigester + +
+           + Standard implementation of the ByteDigester interface.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/PooledByteDigester.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/PooledByteDigester.html new file mode 100644 index 00000000..dde0a73d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/PooledByteDigester.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.digest.PooledByteDigester (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.digest.PooledByteDigester

+
+No usage of org.jasypt.digest.PooledByteDigester +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/PooledStringDigester.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/PooledStringDigester.html new file mode 100644 index 00000000..310141e9 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/PooledStringDigester.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.digest.PooledStringDigester (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.digest.PooledStringDigester

+
+No usage of org.jasypt.digest.PooledStringDigester +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/StandardByteDigester.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/StandardByteDigester.html new file mode 100644 index 00000000..3632dbf5 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/StandardByteDigester.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.digest.StandardByteDigester (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.digest.StandardByteDigester

+
+No usage of org.jasypt.digest.StandardByteDigester +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/StandardStringDigester.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/StandardStringDigester.html new file mode 100644 index 00000000..24ca6d65 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/StandardStringDigester.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.digest.StandardStringDigester (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.digest.StandardStringDigester

+
+No usage of org.jasypt.digest.StandardStringDigester +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/StringDigester.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/StringDigester.html new file mode 100644 index 00000000..35342d33 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/class-use/StringDigester.html @@ -0,0 +1,193 @@ + + + + + + + +Uses of Interface org.jasypt.digest.StringDigester (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.digest.StringDigester

+
+ + + + + + + + + +
+Packages that use StringDigester
org.jasypt.digest  
+  +

+ + + + + +
+Uses of StringDigester in org.jasypt.digest
+  +

+ + + + + + + + + + + + + +
Classes in org.jasypt.digest that implement StringDigester
+ classPooledStringDigester + +
+           + Pooled implementation of StringDigester that in fact contains + an array of StandardStringDigester objects which are used + to attend digest and match requests in round-robin.
+ classStandardStringDigester + +
+           + Standard implementation of the StringDigester interface.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/DigesterConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/DigesterConfig.html new file mode 100644 index 00000000..83181c9f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/DigesterConfig.html @@ -0,0 +1,613 @@ + + + + + + + +DigesterConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.digest.config +
+Interface DigesterConfig

+
+
All Known Subinterfaces:
StringDigesterConfig
+
+
+
All Known Implementing Classes:
EnvironmentDigesterConfig, EnvironmentStringDigesterConfig, SimpleDigesterConfig, SimpleStringDigesterConfig
+
+
+
+
public interface DigesterConfig
+ + +

+

+ Common interface for config classes applicable to + StandardByteDigester, + StandardStringDigester, + PooledByteDigester or + PooledStringDigester + objects. +

+

+ This interface lets the user create new DigesterConfig + classes which retrieve values for this parameters from different + (and maybe more secure) sources (remote servers, LDAP, other databases...), + and do this transparently for the digester object. +

+

+ The config objects passed to a digester will only be queried once + for each configuration parameter, and this will happen + during the initialization of the digester object. +

+

+ For a default implementation, see SimpleDigesterConfig. +

+

+ +

+

+
Since:
+
1.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringgetAlgorithm() + +
+           + Returns the name of an algorithm to be used for hashing, like "MD5" or + "SHA-1".
+ BooleangetInvertPositionOfPlainSaltInEncryptionResults() + +
+           + Returns Boolean.TRUE if the plain (not hashed) salt bytes are to + be appended after the digest operation result bytes.
+ BooleangetInvertPositionOfSaltInMessageBeforeDigesting() + +
+           + Returns Boolean.TRUE if the salt bytes are to be appended after the + message ones before performing the digest operation on the whole.
+ IntegergetIterations() + +
+           + Returns the number of times the hash function will be applied recursively.
+ IntegergetPoolSize() + +
+           + Get the size of the pool of digesters to be created.
+ java.security.ProvidergetProvider() + +
+           + Returns the java.security.Provider implementation object + to be used by the digester for obtaining the digest algorithm.
+ StringgetProviderName() + +
+           + Returns the name of the java.security.Provider implementation + to be used by the digester for obtaining the digest algorithm.
+ SaltGeneratorgetSaltGenerator() + +
+           + Returns a SaltGenerator implementation to be used by the digester.
+ IntegergetSaltSizeBytes() + +
+           + Returns the size of the salt to be used to compute the digest.
+ BooleangetUseLenientSaltSizeCheck() + +
+           + Returns Boolean.TRUE if digest matching operations will allow matching + digests with a salt size different to the one configured in the "saltSizeBytes" + property.
+  +

+ + + + + + + + +
+Method Detail
+ +

+getAlgorithm

+
+String getAlgorithm()
+
+

+ Returns the name of an algorithm to be used for hashing, like "MD5" or + "SHA-1". +

+

+ This algorithm has to be supported by your Java Virtual Machine, and + it should be allowed as an algorithm for creating + java.security.MessageDigest instances. +

+

+ If this method returns null, the digester will ignore the config object + when deciding the algorithm to be used. +

+

+

+ +
Returns:
the name of the algorithm to be used, or null if this object + will not want to set an algorithm. See Appendix A + in the Java + Cryptography Architecture API Specification & + Reference + for information about standard algorithm names.
+
+
+
+ +

+getSaltSizeBytes

+
+Integer getSaltSizeBytes()
+
+

+ Returns the size of the salt to be used to compute the digest. + This mechanism is explained in + PKCS #5: Password-Based Cryptography Standard. +

+

+ If salt size is set to zero, then no salt will be used. +

+

+ If this method returns null, the digester will ignore the config object + when deciding the size of the salt to be used. +

+

+

+ +
Returns:
the size of the salt to be used, in bytes, or null if + this object will not want to set a size for salt.
+
+
+
+ +

+getIterations

+
+Integer getIterations()
+
+

+ Returns the number of times the hash function will be applied recursively. +
+ The hash function will be applied to its own results as many times as + specified: h(h(...h(x)...)) +

+

+ This mechanism is explained in + PKCS #5: Password-Based Cryptography Standard. +

+

+ If this method returns null, the digester will ignore the config object + when deciding the number of hashing iterations. +

+

+

+ +
Returns:
the number of iterations, or null if this object will not want + to set the number of iterations.
+
+
+
+ +

+getSaltGenerator

+
+SaltGenerator getSaltGenerator()
+
+

+ Returns a SaltGenerator implementation to be used by the digester. +

+

+ If this method returns null, the digester will ignore the config object + when deciding the salt generator to be used. +

+

+

+ +
Returns:
the salt generator, or null if this object will not want to set + a specific SaltGenerator implementation.
Since:
+
1.2
+
+
+
+
+ +

+getProviderName

+
+String getProviderName()
+
+

+ Returns the name of the java.security.Provider implementation + to be used by the digester for obtaining the digest algorithm. This + provider must have been registered beforehand. +

+

+ If this method returns null, the digester will ignore this parameter + when deciding the name of the security provider to be used. +

+

+ If this method does not return null, and neither does getProvider(), + providerName will be ignored, and the provider object returned + by getProvider() will be used. +

+

+

+ +
Returns:
the name of the security provider to be used.
Since:
+
1.3
+
+
+
+
+ +

+getProvider

+
+java.security.Provider getProvider()
+
+

+ Returns the java.security.Provider implementation object + to be used by the digester for obtaining the digest algorithm. +

+

+ If this method returns null, the digester will ignore this parameter + when deciding the security provider object to be used. +

+

+ If this method does not return null, and neither does getProviderName(), + providerName will be ignored, and the provider object returned + by getProvider() will be used. +

+

+ The provider returned by this method does not need to be + registered beforehand, and its use will not result in its + being registered. +

+

+

+ +
Returns:
the security provider object to be asked for the digest + algorithm.
Since:
+
1.3
+
+
+
+
+ +

+getInvertPositionOfSaltInMessageBeforeDigesting

+
+Boolean getInvertPositionOfSaltInMessageBeforeDigesting()
+
+

+ Returns Boolean.TRUE if the salt bytes are to be appended after the + message ones before performing the digest operation on the whole. The + default behaviour is to insert those bytes before the message bytes, but + setting this configuration item to true allows compatibility + with some external systems and specifications (e.g. LDAP {SSHA}). +

+

+

+ +
Returns:
whether salt will be appended after the message before applying + the digest operation on the whole, instead of inserted before it + (which is the default). If null is returned, the default + behaviour will be applied.
Since:
+
1.7
+
+
+
+
+ +

+getInvertPositionOfPlainSaltInEncryptionResults

+
+Boolean getInvertPositionOfPlainSaltInEncryptionResults()
+
+

+ Returns Boolean.TRUE if the plain (not hashed) salt bytes are to + be appended after the digest operation result bytes. The default behaviour is + to insert them before the digest result, but setting this configuration + item to true allows compatibility with some external systems + and specifications (e.g. LDAP {SSHA}). +

+

+

+ +
Returns:
whether plain salt will be appended after the digest operation + result instead of inserted before it (which is the + default). If null is returned, the default behaviour will be + applied.
Since:
+
1.7
+
+
+
+
+ +

+getUseLenientSaltSizeCheck

+
+Boolean getUseLenientSaltSizeCheck()
+
+

+ Returns Boolean.TRUE if digest matching operations will allow matching + digests with a salt size different to the one configured in the "saltSizeBytes" + property. This is possible because digest algorithms will produce a fixed-size + result, so the remaining bytes from the hashed input will be considered salt. +

+

+ This will allow the digester to match digests produced in environments which do not + establish a fixed salt size as standard (for example, SSHA password encryption + in LDAP systems). +

+

+ The value of this property will not affect the creation of digests, + which will always have a salt of the size established by the "saltSizeBytes" + property. It will only affect digest matching. +

+

+ Setting this property to true is not compatible with SaltGenerator + implementations which return false for their + SaltGenerator.includePlainSaltInEncryptionResults() property. +

+

+ Also, be aware that some algorithms or algorithm providers might not support + knowing the size of the digests beforehand, which is also incompatible with + a lenient behaviour. +

+

+ Default is FALSE. +

+

+

+ +
Returns:
whether the digester will allow matching of digests with different + salt sizes than established or not (default is false).
Since:
+
1.7
+
+
+
+
+ +

+getPoolSize

+
+Integer getPoolSize()
+
+

+ Get the size of the pool of digesters to be created. +

+

+ This parameter will be ignored if used with a non-pooled digester. +

+

+

+ +
Returns:
the size of the pool to be used if this configuration is used with a + pooled digester
Since:
+
1.7
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/EnvironmentDigesterConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/EnvironmentDigesterConfig.html new file mode 100644 index 00000000..98edc910 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/EnvironmentDigesterConfig.html @@ -0,0 +1,1971 @@ + + + + + + + +EnvironmentDigesterConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.digest.config +
+Class EnvironmentDigesterConfig

+
+Object
+  extended by org.jasypt.digest.config.SimpleDigesterConfig
+      extended by org.jasypt.digest.config.EnvironmentDigesterConfig
+
+
+
All Implemented Interfaces:
DigesterConfig
+
+
+
Direct Known Subclasses:
EnvironmentStringDigesterConfig
+
+
+
+
public class EnvironmentDigesterConfig
extends SimpleDigesterConfig
+ + +

+

+ Implementation for DigesterConfig which can retrieve configuration + values from environment variables or system properties. +

+

+ The name of the environment variable or system property (JVM property) to + query for each parameter can be set with its corresponding + setXEnvName or setXSysProperty method. +

+

+ As this class extends SimpleDigesterConfig, parameter values + can be also set with the usual setX methods. +

+

+ For any of the configuration parameters, if its value is not configured + in any way, a null value will be returned by the + corresponding getX method. +

+

+ +

+

+
Since:
+
1.1
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
EnvironmentDigesterConfig() + +
+           + Creates a new EnvironmentDigesterConfig instance.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringgetAlgorithmEnvName() + +
+          Retrieve the name of the environment variable which value has been + loaded as the algorithm.
+ StringgetAlgorithmSysPropertyName() + +
+          Retrieve the name of the JVM system property which value has been + loaded as the algorithm.
+ StringgetInvertPositionOfPlainSaltInEncryptionResultsEnvName() + +
+          Retrieve the name of the environment variable which value has been + loaded as the value for the invertPositionOfPlainSaltInEncryptionResults + property.
+ StringgetInvertPositionOfPlainSaltInEncryptionResultsSysPropertyName() + +
+          Retrieve the name of the JVM system property which value has been + loaded as the value for the invertPositionOfPlainSaltInEncryptionResults + property.
+ StringgetInvertPositionOfSaltInMessageBeforeDigestingEnvName() + +
+          Retrieve the name of the environment variable which value has been + loaded as the value for the invertPositionOfSaltInMessageBeforeDigesting + property.
+ StringgetInvertPositionOfSaltInMessageBeforeDigestingSysPropertyName() + +
+          Retrieve the name of the JVM system property which value has been + loaded as the value for the invertPositionOfSaltInMessageBeforeDigesting + property.
+ StringgetIterationsEnvName() + +
+          Retrieve the name of the environment variable which value has been + loaded as the iteration count.
+ StringgetIterationsSysPropertyName() + +
+          Retrieve the name of the JVM system property which value has been + loaded as the iteration count.
+ StringgetPoolSizeEnvName() + +
+          Retrieve the name of the environment variable which value has been + loaded as the value for the poolSize + property.
+ StringgetPoolSizeSysPropertyName() + +
+          Retrieve the name of the JVM system property which value has been + loaded as the value for the poolSize + property.
+ StringgetProviderClassNameEnvName() + +
+          Retrieve the name of the environment variable which value has been + loaded as the provider class name.
+ StringgetProviderClassNameSysPropertyName() + +
+          Retrieve the name of the JVM system property which value has been + loaded as the provider class name.
+ StringgetProviderNameEnvName() + +
+          Retrieve the name of the environment variable which value has been + loaded as the provider name.
+ StringgetProviderNameSysPropertyName() + +
+          Retrieve the name of the JVM system property which value has been + loaded as the provider name.
+ StringgetSaltGeneratorClassNameEnvName() + +
+          Retrieve the name of the environment variable which value has been + loaded as the salt generator class name.
+ StringgetSaltGeneratorClassNameSysPropertyName() + +
+          Retrieve the name of the JVM system property which value has been + loaded as the salt generator class name.
+ StringgetSaltSizeBytesEnvName() + +
+          Retrieve the name of the environment variable which value has been + loaded as the salt size in bytes.
+ StringgetSaltSizeBytesSysPropertyName() + +
+          Retrieve the name of the JVM system property which value has been + loaded as the salt size in bytes.
+ StringgetUseLenientSaltSizeCheckEnvName() + +
+          Retrieve the name of the environment variable which value has been + loaded as the value for the useLenientSaltSizeCheck + property.
+ StringgetUseLenientSaltSizeCheckSysPropertyName() + +
+          Retrieve the name of the JVM system property which value has been + loaded as the value for the useLenientSaltSizeCheck + property.
+ voidsetAlgorithm(String algorithm) + +
+           + Sets the name of the algorithm.
+ voidsetAlgorithmEnvName(String algorithmEnvName) + +
+          Set the config object to use the specified environment variable to + load the value for the algorithm.
+ voidsetAlgorithmSysPropertyName(String algorithmSysPropertyName) + +
+          Set the config object to use the specified JVM system property to + load the value for the algorithm.
+ voidsetInvertPositionOfPlainSaltInEncryptionResults(Boolean invertPositionOfPlainSaltInEncryptionResults) + +
+           + Whether the plain (not hashed) salt bytes are to + be appended after the digest operation result bytes.
+ voidsetInvertPositionOfPlainSaltInEncryptionResultsEnvName(String invertPositionOfPlainSaltInEncryptionResultsEnvName) + +
+           + Set the config object to use the specified environment variable to + load the value for the invertPositionOfPlainSaltInEncryptionResults + property.
+ voidsetInvertPositionOfPlainSaltInEncryptionResultsSysPropertyName(String invertPositionOfPlainSaltInEncryptionResultsSysPropertyName) + +
+           + Set the config object to use the specified JVM system property to + load the value for the invertPositionOfPlainSaltInEncryptionResults + property.
+ voidsetInvertPositionOfSaltInMessageBeforeDigesting(Boolean invertPositionOfSaltInMessageBeforeDigesting) + +
+           + Whether the salt bytes are to be appended after the + message ones before performing the digest operation on the whole.
+ voidsetInvertPositionOfSaltInMessageBeforeDigestingEnvName(String invertPositionOfSaltInMessageBeforeDigestingEnvName) + +
+           + Set the config object to use the specified environment variable to + load the value for the invertPositionOfSaltInMessageBeforeDigesting + property.
+ voidsetInvertPositionOfSaltInMessageBeforeDigestingSysPropertyName(String invertPositionOfSaltInMessageBeforeDigestingSysPropertyName) + +
+           + Set the config object to use the specified JVM system property to + load the value for the invertPositionOfSaltInMessageBeforeDigesting + property.
+ voidsetIterations(Integer iterations) + +
+           + Sets the number of hashing iterations.
+ voidsetIterations(String iterations) + +
+           + Sets the number of hashing iterations.
+ voidsetIterationsEnvName(String iterationsEnvName) + +
+          Set the config object to use the specified environment variable to + load the value for the iteration count.
+ voidsetIterationsSysPropertyName(String iterationsSysPropertyName) + +
+          Set the config object to use the specified JVM system property to + load the value for the iteration count.
+ voidsetPoolSize(Integer poolSize) + +
+           + Sets the size of the pool of digesters to be created.
+ voidsetPoolSize(String poolSize) + +
+           + Sets the size of the pool of digesters to be created.
+ voidsetPoolSizeEnvName(String poolSizeEnvName) + +
+           + Set the config object to use the specified environment variable to + load the value for the poolSize + property.
+ voidsetPoolSizeSysPropertyName(String poolSizeSysPropertyName) + +
+           + Set the config object to use the specified JVM system property to + load the value for the useLenientSaltSizeCheck + property.
+ voidsetProvider(java.security.Provider provider) + +
+           + Sets the security provider to be used for obtaining the digest + algorithm.
+ voidsetProviderClassName(String providerClassName) + +
+           + Sets the class name for the security provider to be used for + obtaining the digest algorithm.
+ voidsetProviderClassNameEnvName(String providerClassNameEnvName) + +
+           + Set the config object to use the specified environment variable to + load the value for the provider class name.
+ voidsetProviderClassNameSysPropertyName(String providerClassNameSysPropertyName) + +
+           + Set the config object to use the specified JVM system property to + load the value for the provider class name.
+ voidsetProviderName(String providerName) + +
+           + Sets the name of the security provider to be asked for the digest + algorithm.
+ voidsetProviderNameEnvName(String providerNameEnvName) + +
+           + Set the config object to use the specified environment variable to + load the value for the provider name.
+ voidsetProviderNameSysPropertyName(String providerNameSysPropertyName) + +
+          Set the config object to use the specified JVM system property to + load the value for the provider name.
+ voidsetSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator.
+ voidsetSaltGeneratorClassName(String saltGeneratorClassName) + +
+           + Sets the class name of the salt generator.
+ voidsetSaltGeneratorClassNameEnvName(String saltGeneratorClassNameEnvName) + +
+           + Set the config object to use the specified environment variable to + load the value for the salt generator class name.
+ voidsetSaltGeneratorClassNameSysPropertyName(String saltGeneratorClassNameSysPropertyName) + +
+           + Set the config object to use the specified JVM system property to + load the value for the salt generator class name.
+ voidsetSaltSizeBytes(Integer saltSizeBytes) + +
+           + Size in bytes of the salt to be used.
+ voidsetSaltSizeBytes(String saltSizeBytes) + +
+           + Size in bytes of the salt to be used.
+ voidsetSaltSizeBytesEnvName(String saltSizeBytesEnvName) + +
+          Set the config object to use the specified environment variable to + load the value for the salt size in bytes.
+ voidsetSaltSizeBytesSysPropertyName(String saltSizeBytesSysPropertyName) + +
+          Set the config object to use the specified JVM system property to + load the value for the salt size in bytes.
+ voidsetUseLenientSaltSizeCheck(Boolean useLenientSaltSizeCheck) + +
+           + Whether digest matching operations will allow matching + digests with a salt size different to the one configured in the "saltSizeBytes" + property.
+ voidsetUseLenientSaltSizeCheckEnvName(String useLenientSaltSizeCheckEnvName) + +
+           + Set the config object to use the specified environment variable to + load the value for the useLenientSaltSizeCheck + property.
+ voidsetUseLenientSaltSizeCheckSysPropertyName(String useLenientSaltSizeCheckSysPropertyName) + +
+           + Set the config object to use the specified JVM system property to + load the value for the useLenientSaltSizeCheck + property.
+ + + + + + + +
Methods inherited from class org.jasypt.digest.config.SimpleDigesterConfig
getAlgorithm, getInvertPositionOfPlainSaltInEncryptionResults, getInvertPositionOfSaltInMessageBeforeDigesting, getIterations, getPoolSize, getProvider, getProviderName, getSaltGenerator, getSaltSizeBytes, getUseLenientSaltSizeCheck
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EnvironmentDigesterConfig

+
+public EnvironmentDigesterConfig()
+
+

+ Creates a new EnvironmentDigesterConfig instance. +

+

+

+ + + + + + + + +
+Method Detail
+ +

+getAlgorithmEnvName

+
+public String getAlgorithmEnvName()
+
+
Retrieve the name of the environment variable which value has been + loaded as the algorithm. +

+

+ +
Returns:
the name of the variable
+
+
+
+ +

+setAlgorithmEnvName

+
+public void setAlgorithmEnvName(String algorithmEnvName)
+
+
Set the config object to use the specified environment variable to + load the value for the algorithm. +

+

+
Parameters:
algorithmEnvName - the name of the environment variable
+
+
+
+ +

+getAlgorithmSysPropertyName

+
+public String getAlgorithmSysPropertyName()
+
+
Retrieve the name of the JVM system property which value has been + loaded as the algorithm. +

+

+ +
Returns:
the name of the property
+
+
+
+ +

+setAlgorithmSysPropertyName

+
+public void setAlgorithmSysPropertyName(String algorithmSysPropertyName)
+
+
Set the config object to use the specified JVM system property to + load the value for the algorithm. +

+

+
Parameters:
algorithmSysPropertyName - the name of the property
+
+
+
+ +

+getIterationsEnvName

+
+public String getIterationsEnvName()
+
+
Retrieve the name of the environment variable which value has been + loaded as the iteration count. +

+

+ +
Returns:
the name of the variable
+
+
+
+ +

+setIterationsEnvName

+
+public void setIterationsEnvName(String iterationsEnvName)
+
+
Set the config object to use the specified environment variable to + load the value for the iteration count. +

+

+
Parameters:
iterationsEnvName - the name of the environment variable
+
+
+
+ +

+getIterationsSysPropertyName

+
+public String getIterationsSysPropertyName()
+
+
Retrieve the name of the JVM system property which value has been + loaded as the iteration count. +

+

+ +
Returns:
the name of the property
+
+
+
+ +

+setIterationsSysPropertyName

+
+public void setIterationsSysPropertyName(String iterationsSysPropertyName)
+
+
Set the config object to use the specified JVM system property to + load the value for the iteration count. +

+

+
Parameters:
iterationsSysPropertyName - the name of the property
+
+
+
+ +

+getSaltSizeBytesEnvName

+
+public String getSaltSizeBytesEnvName()
+
+
Retrieve the name of the environment variable which value has been + loaded as the salt size in bytes. +

+

+ +
Returns:
the name of the variable
+
+
+
+ +

+setSaltSizeBytesEnvName

+
+public void setSaltSizeBytesEnvName(String saltSizeBytesEnvName)
+
+
Set the config object to use the specified environment variable to + load the value for the salt size in bytes. +

+

+
Parameters:
saltSizeBytesEnvName - the name of the environment variable
+
+
+
+ +

+getSaltSizeBytesSysPropertyName

+
+public String getSaltSizeBytesSysPropertyName()
+
+
Retrieve the name of the JVM system property which value has been + loaded as the salt size in bytes. +

+

+ +
Returns:
the name of the property
+
+
+
+ +

+setSaltSizeBytesSysPropertyName

+
+public void setSaltSizeBytesSysPropertyName(String saltSizeBytesSysPropertyName)
+
+
Set the config object to use the specified JVM system property to + load the value for the salt size in bytes. +

+

+
Parameters:
saltSizeBytesSysPropertyName - the name of the property
+
+
+
+ +

+getSaltGeneratorClassNameEnvName

+
+public String getSaltGeneratorClassNameEnvName()
+
+
Retrieve the name of the environment variable which value has been + loaded as the salt generator class name. +

+

+ +
Returns:
the name of the variable
Since:
+
1.3
+
+
+
+
+ +

+setSaltGeneratorClassNameEnvName

+
+public void setSaltGeneratorClassNameEnvName(String saltGeneratorClassNameEnvName)
+
+

+ Set the config object to use the specified environment variable to + load the value for the salt generator class name. +

+

+ The salt generator class name which is set here must have a no-argument + constructor, so that it can be instantiated and passed to the digester. +

+

+

+
Parameters:
saltGeneratorClassNameEnvName - the name of the environment variable
Since:
+
1.3
+
+
+
+
+ +

+getSaltGeneratorClassNameSysPropertyName

+
+public String getSaltGeneratorClassNameSysPropertyName()
+
+
Retrieve the name of the JVM system property which value has been + loaded as the salt generator class name. +

+

+ +
Returns:
the name of the property
Since:
+
1.3
+
+
+
+
+ +

+setSaltGeneratorClassNameSysPropertyName

+
+public void setSaltGeneratorClassNameSysPropertyName(String saltGeneratorClassNameSysPropertyName)
+
+

+ Set the config object to use the specified JVM system property to + load the value for the salt generator class name. +

+

+ The salt generator class name which is set here must have a no-argument + constructor, so that it can be instantiated and passed to the digester. +

+

+

+
Parameters:
saltGeneratorClassNameSysPropertyName - the name of the property
Since:
+
1.3
+
+
+
+
+ +

+getProviderNameEnvName

+
+public String getProviderNameEnvName()
+
+
Retrieve the name of the environment variable which value has been + loaded as the provider name. +

+

+ +
Returns:
the name of the variable
Since:
+
1.3
+
+
+
+
+ +

+setProviderNameEnvName

+
+public void setProviderNameEnvName(String providerNameEnvName)
+
+

+ Set the config object to use the specified environment variable to + load the value for the provider name. +

+

+

+
Parameters:
providerNameEnvName - the name of the environment variable
Since:
+
1.3
+
+
+
+
+ +

+getProviderNameSysPropertyName

+
+public String getProviderNameSysPropertyName()
+
+
Retrieve the name of the JVM system property which value has been + loaded as the provider name. +

+

+ +
Returns:
the name of the property
Since:
+
1.3
+
+
+
+
+ +

+setProviderNameSysPropertyName

+
+public void setProviderNameSysPropertyName(String providerNameSysPropertyName)
+
+
Set the config object to use the specified JVM system property to + load the value for the provider name. +

+

+
Parameters:
providerNameSysPropertyName - the name of the property
Since:
+
1.3
+
+
+
+
+ +

+getProviderClassNameEnvName

+
+public String getProviderClassNameEnvName()
+
+
Retrieve the name of the environment variable which value has been + loaded as the provider class name. +

+

+ +
Returns:
the name of the variable
Since:
+
1.3
+
+
+
+
+ +

+setProviderClassNameEnvName

+
+public void setProviderClassNameEnvName(String providerClassNameEnvName)
+
+

+ Set the config object to use the specified environment variable to + load the value for the provider class name. +

+

+ The provider class name which is set here must have a no-argument + constructor, so that it can be instantiated and passed to the digester. +

+

+

+
Parameters:
providerClassNameEnvName - the name of the environment variable
Since:
+
1.3
+
+
+
+
+ +

+getProviderClassNameSysPropertyName

+
+public String getProviderClassNameSysPropertyName()
+
+
Retrieve the name of the JVM system property which value has been + loaded as the provider class name. +

+

+ +
Returns:
the name of the property
Since:
+
1.3
+
+
+
+
+ +

+setProviderClassNameSysPropertyName

+
+public void setProviderClassNameSysPropertyName(String providerClassNameSysPropertyName)
+
+

+ Set the config object to use the specified JVM system property to + load the value for the provider class name. +

+

+ The provider class name which is set here must have a no-argument + constructor, so that it can be instantiated and passed to the digester. +

+

+

+
Parameters:
providerClassNameSysPropertyName - the name of the property
Since:
+
1.3
+
+
+
+
+ +

+getInvertPositionOfSaltInMessageBeforeDigestingEnvName

+
+public String getInvertPositionOfSaltInMessageBeforeDigestingEnvName()
+
+
Retrieve the name of the environment variable which value has been + loaded as the value for the invertPositionOfSaltInMessageBeforeDigesting + property. +

+

+ +
Returns:
the name of the variable
Since:
+
1.7
+
+
+
+
+ +

+setInvertPositionOfSaltInMessageBeforeDigestingEnvName

+
+public void setInvertPositionOfSaltInMessageBeforeDigestingEnvName(String invertPositionOfSaltInMessageBeforeDigestingEnvName)
+
+

+ Set the config object to use the specified environment variable to + load the value for the invertPositionOfSaltInMessageBeforeDigesting + property. +

+

+

+
Parameters:
invertPositionOfSaltInMessageBeforeDigestingEnvName - the name of the environment variable
Since:
+
1.7
+
+
+
+
+ +

+getInvertPositionOfSaltInMessageBeforeDigestingSysPropertyName

+
+public String getInvertPositionOfSaltInMessageBeforeDigestingSysPropertyName()
+
+
Retrieve the name of the JVM system property which value has been + loaded as the value for the invertPositionOfSaltInMessageBeforeDigesting + property. +

+

+ +
Returns:
the name of the property
Since:
+
1.7
+
+
+
+
+ +

+setInvertPositionOfSaltInMessageBeforeDigestingSysPropertyName

+
+public void setInvertPositionOfSaltInMessageBeforeDigestingSysPropertyName(String invertPositionOfSaltInMessageBeforeDigestingSysPropertyName)
+
+

+ Set the config object to use the specified JVM system property to + load the value for the invertPositionOfSaltInMessageBeforeDigesting + property. +

+

+

+
Parameters:
invertPositionOfSaltInMessageBeforeDigestingSysPropertyName - the name of the property
Since:
+
1.7
+
+
+
+
+ +

+getInvertPositionOfPlainSaltInEncryptionResultsEnvName

+
+public String getInvertPositionOfPlainSaltInEncryptionResultsEnvName()
+
+
Retrieve the name of the environment variable which value has been + loaded as the value for the invertPositionOfPlainSaltInEncryptionResults + property. +

+

+ +
Returns:
the name of the variable
Since:
+
1.7
+
+
+
+
+ +

+setInvertPositionOfPlainSaltInEncryptionResultsEnvName

+
+public void setInvertPositionOfPlainSaltInEncryptionResultsEnvName(String invertPositionOfPlainSaltInEncryptionResultsEnvName)
+
+

+ Set the config object to use the specified environment variable to + load the value for the invertPositionOfPlainSaltInEncryptionResults + property. +

+

+

+
Parameters:
invertPositionOfPlainSaltInEncryptionResultsEnvName - the name of the environment variable
Since:
+
1.7
+
+
+
+
+ +

+getInvertPositionOfPlainSaltInEncryptionResultsSysPropertyName

+
+public String getInvertPositionOfPlainSaltInEncryptionResultsSysPropertyName()
+
+
Retrieve the name of the JVM system property which value has been + loaded as the value for the invertPositionOfPlainSaltInEncryptionResults + property. +

+

+ +
Returns:
the name of the property
Since:
+
1.7
+
+
+
+
+ +

+setInvertPositionOfPlainSaltInEncryptionResultsSysPropertyName

+
+public void setInvertPositionOfPlainSaltInEncryptionResultsSysPropertyName(String invertPositionOfPlainSaltInEncryptionResultsSysPropertyName)
+
+

+ Set the config object to use the specified JVM system property to + load the value for the invertPositionOfPlainSaltInEncryptionResults + property. +

+

+

+
Parameters:
invertPositionOfPlainSaltInEncryptionResultsSysPropertyName - the name of the property
Since:
+
1.7
+
+
+
+
+ +

+getUseLenientSaltSizeCheckEnvName

+
+public String getUseLenientSaltSizeCheckEnvName()
+
+
Retrieve the name of the environment variable which value has been + loaded as the value for the useLenientSaltSizeCheck + property. +

+

+ +
Returns:
the name of the variable
Since:
+
1.7
+
+
+
+
+ +

+setUseLenientSaltSizeCheckEnvName

+
+public void setUseLenientSaltSizeCheckEnvName(String useLenientSaltSizeCheckEnvName)
+
+

+ Set the config object to use the specified environment variable to + load the value for the useLenientSaltSizeCheck + property. +

+

+

+
Parameters:
useLenientSaltSizeCheckEnvName - the name of the environment variable
Since:
+
1.7
+
+
+
+
+ +

+getUseLenientSaltSizeCheckSysPropertyName

+
+public String getUseLenientSaltSizeCheckSysPropertyName()
+
+
Retrieve the name of the JVM system property which value has been + loaded as the value for the useLenientSaltSizeCheck + property. +

+

+ +
Returns:
the name of the property
Since:
+
1.7
+
+
+
+
+ +

+setUseLenientSaltSizeCheckSysPropertyName

+
+public void setUseLenientSaltSizeCheckSysPropertyName(String useLenientSaltSizeCheckSysPropertyName)
+
+

+ Set the config object to use the specified JVM system property to + load the value for the useLenientSaltSizeCheck + property. +

+

+

+
Parameters:
useLenientSaltSizeCheckSysPropertyName - the name of the property
Since:
+
1.7
+
+
+
+
+ +

+getPoolSizeEnvName

+
+public String getPoolSizeEnvName()
+
+
Retrieve the name of the environment variable which value has been + loaded as the value for the poolSize + property. +

+

+ +
Returns:
the name of the variable
Since:
+
1.7
+
+
+
+
+ +

+setPoolSizeEnvName

+
+public void setPoolSizeEnvName(String poolSizeEnvName)
+
+

+ Set the config object to use the specified environment variable to + load the value for the poolSize + property. +

+

+

+
Parameters:
poolSizeEnvName - the name of the environment variable
Since:
+
1.7
+
+
+
+
+ +

+getPoolSizeSysPropertyName

+
+public String getPoolSizeSysPropertyName()
+
+
Retrieve the name of the JVM system property which value has been + loaded as the value for the poolSize + property. +

+

+ +
Returns:
the name of the property
Since:
+
1.7
+
+
+
+
+ +

+setPoolSizeSysPropertyName

+
+public void setPoolSizeSysPropertyName(String poolSizeSysPropertyName)
+
+

+ Set the config object to use the specified JVM system property to + load the value for the useLenientSaltSizeCheck + property. +

+

+

+
Parameters:
poolSizeSysPropertyName - the name of the property
Since:
+
1.7
+
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+
Description copied from class: SimpleDigesterConfig
+

+ Sets the name of the algorithm. +

+

+ This algorithm has to be supported by your security infrastructure, and + it should be allowed as an algorithm for creating + java.security.MessageDigest instances. +

+

+ If you are specifying a security provider with SimpleDigesterConfig.setProvider(Provider) or + SimpleDigesterConfig.setProviderName(String), this algorithm should be + supported by your specified provider. +

+

+ If you are not specifying a provider, you will be able to use those + algorithms provided by the default security provider of your JVM vendor. + For valid names in the Sun JVM, see Java + Cryptography Architecture API Specification & + Reference. +

+

+ Determines the result of: SimpleDigesterConfig.getAlgorithm() +

+

+

+
Overrides:
setAlgorithm in class SimpleDigesterConfig
+
+
+
Parameters:
algorithm - the name of the algorithm.
+
+
+
+ +

+setIterations

+
+public void setIterations(Integer iterations)
+
+
Description copied from class: SimpleDigesterConfig
+

+ Sets the number of hashing iterations. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: SimpleDigesterConfig.getIterations() +

+

+

+
Overrides:
setIterations in class SimpleDigesterConfig
+
+
+
Parameters:
iterations - the number of iterations.
+
+
+
+ +

+setIterations

+
+public void setIterations(String iterations)
+
+
Description copied from class: SimpleDigesterConfig
+

+ Sets the number of hashing iterations. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: SimpleDigesterConfig.getIterations() +

+

+

+
Overrides:
setIterations in class SimpleDigesterConfig
+
+
+
Parameters:
iterations - the number of iterations.
+
+
+
+ +

+setSaltSizeBytes

+
+public void setSaltSizeBytes(Integer saltSizeBytes)
+
+
Description copied from class: SimpleDigesterConfig
+

+ Size in bytes of the salt to be used. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: SimpleDigesterConfig.getSaltSizeBytes() +

+

+

+
Overrides:
setSaltSizeBytes in class SimpleDigesterConfig
+
+
+
Parameters:
saltSizeBytes - the size of the salt, in bytes.
+
+
+
+ +

+setSaltSizeBytes

+
+public void setSaltSizeBytes(String saltSizeBytes)
+
+
Description copied from class: SimpleDigesterConfig
+

+ Size in bytes of the salt to be used. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: SimpleDigesterConfig.getSaltSizeBytes() +

+

+

+
Overrides:
setSaltSizeBytes in class SimpleDigesterConfig
+
+
+
Parameters:
saltSizeBytes - the size of the salt, in bytes.
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(SaltGenerator saltGenerator)
+
+
Description copied from class: SimpleDigesterConfig
+

+ Sets the salt generator. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: SimpleDigesterConfig.getSaltGenerator() +

+

+

+
Overrides:
setSaltGenerator in class SimpleDigesterConfig
+
+
+
Parameters:
saltGenerator - the salt generator.
+
+
+
+ +

+setSaltGeneratorClassName

+
+public void setSaltGeneratorClassName(String saltGeneratorClassName)
+
+
Description copied from class: SimpleDigesterConfig
+

+ Sets the class name of the salt generator. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: SimpleDigesterConfig.getSaltGenerator() +

+

+

+
Overrides:
setSaltGeneratorClassName in class SimpleDigesterConfig
+
+
+
Parameters:
saltGeneratorClassName - the name of the salt generator class.
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+
Description copied from class: SimpleDigesterConfig
+

+ Sets the name of the security provider to be asked for the digest + algorithm. This provider should be already registered. +

+

+ If both the providerName and provider properties + are set, only provider will be used, and providerName + will have no meaning for the digester object. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: SimpleDigesterConfig.getProviderName() +

+

+

+
Overrides:
setProviderName in class SimpleDigesterConfig
+
+
+
Parameters:
providerName - the name of the security provider.
+
+
+
+ +

+setProvider

+
+public void setProvider(java.security.Provider provider)
+
+
Description copied from class: SimpleDigesterConfig
+

+ Sets the security provider to be used for obtaining the digest + algorithm. This method is an alternative to + both SimpleDigesterConfig.setProviderName(String) and + SimpleDigesterConfig.setProviderClassName(String) and they should not be used + altogether. + The provider specified with SimpleDigesterConfig.setProvider(Provider) does not + have to be registered beforehand, and its use will not result in its + being registered. +

+

+ If both the providerName and provider properties + are set, only provider will be used, and providerName + will have no meaning for the digester object. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: SimpleDigesterConfig.getProvider() +

+

+

+
Overrides:
setProvider in class SimpleDigesterConfig
+
+
+
Parameters:
provider - the security provider object.
+
+
+
+ +

+setProviderClassName

+
+public void setProviderClassName(String providerClassName)
+
+
Description copied from class: SimpleDigesterConfig
+

+ Sets the class name for the security provider to be used for + obtaining the digest algorithm. This method is an alternative to + both SimpleDigesterConfig.setProviderName(String) SimpleDigesterConfig.setProvider(Provider) + and they should not be used altogether. + The provider specified with SimpleDigesterConfig.setProviderClassName(String) does not + have to be registered beforehand, and its use will not result in its + being registered. +

+

+ If both the providerName and provider properties + are set, only provider will be used, and providerName + will have no meaning for the digester object. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: SimpleDigesterConfig.getProvider() +

+

+

+
Overrides:
setProviderClassName in class SimpleDigesterConfig
+
+
+
Parameters:
providerClassName - the name of the security provider class.
+
+
+
+ +

+setInvertPositionOfPlainSaltInEncryptionResults

+
+public void setInvertPositionOfPlainSaltInEncryptionResults(Boolean invertPositionOfPlainSaltInEncryptionResults)
+
+
Description copied from class: SimpleDigesterConfig
+

+ Whether the plain (not hashed) salt bytes are to + be appended after the digest operation result bytes. The default behaviour is + to insert them before the digest result, but setting this configuration + item to true allows compatibility with some external systems + and specifications (e.g. LDAP {SSHA}). +

+

+ If not set, null will be returned. +

+

+ Determines the result of: SimpleDigesterConfig.getInvertPositionOfPlainSaltInEncryptionResults() +

+

+

+
Overrides:
setInvertPositionOfPlainSaltInEncryptionResults in class SimpleDigesterConfig
+
+
+
Parameters:
invertPositionOfPlainSaltInEncryptionResults - whether plain salt will be appended after the digest operation + result instead of inserted before it (which is the + default).
+
+
+
+ +

+setInvertPositionOfSaltInMessageBeforeDigesting

+
+public void setInvertPositionOfSaltInMessageBeforeDigesting(Boolean invertPositionOfSaltInMessageBeforeDigesting)
+
+
Description copied from class: SimpleDigesterConfig
+

+ Whether the salt bytes are to be appended after the + message ones before performing the digest operation on the whole. The + default behaviour is to insert those bytes before the message bytes, but + setting this configuration item to true allows compatibility + with some external systems and specifications (e.g. LDAP {SSHA}). +

+

+ If not set, null will be returned. +

+

+ Determines the result of: SimpleDigesterConfig.getInvertPositionOfSaltInMessageBeforeDigesting() +

+

+

+
Overrides:
setInvertPositionOfSaltInMessageBeforeDigesting in class SimpleDigesterConfig
+
+
+
Parameters:
invertPositionOfSaltInMessageBeforeDigesting - whether salt will be appended after the message before applying + the digest operation on the whole, instead of inserted before it + (which is the default).
+
+
+
+ +

+setUseLenientSaltSizeCheck

+
+public void setUseLenientSaltSizeCheck(Boolean useLenientSaltSizeCheck)
+
+
Description copied from class: SimpleDigesterConfig
+

+ Whether digest matching operations will allow matching + digests with a salt size different to the one configured in the "saltSizeBytes" + property. This is possible because digest algorithms will produce a fixed-size + result, so the remaining bytes from the hashed input will be considered salt. +

+

+ This will allow the digester to match digests produced in environments which do not + establish a fixed salt size as standard (for example, SSHA password encryption + in LDAP systems). +

+

+ The value of this property will not affect the creation of digests, + which will always have a salt of the size established by the "saltSizeBytes" + property. It will only affect digest matching. +

+

+ Setting this property to true is not compatible with SaltGenerator + implementations which return false for their + SaltGenerator.includePlainSaltInEncryptionResults() property. +

+

+ Also, be aware that some algorithms or algorithm providers might not support + knowing the size of the digests beforehand, which is also incompatible with + a lenient behaviour. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: SimpleDigesterConfig.getUseLenientSaltSizeCheck() +

+

+

+
Overrides:
setUseLenientSaltSizeCheck in class SimpleDigesterConfig
+
+
+
Parameters:
useLenientSaltSizeCheck - whether the digester will allow matching of + digests with different salt sizes than established or not (default + is false).
+
+
+
+ +

+setPoolSize

+
+public void setPoolSize(Integer poolSize)
+
+
Description copied from class: SimpleDigesterConfig
+

+ Sets the size of the pool of digesters to be created. +

+

+ This parameter will be ignored if used with a non-pooled digester. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: SimpleDigesterConfig.getPoolSize() +

+

+

+
Overrides:
setPoolSize in class SimpleDigesterConfig
+
+
+
Parameters:
poolSize - the size of the pool to be used if this configuration is used with a + pooled digester
+
+
+
+ +

+setPoolSize

+
+public void setPoolSize(String poolSize)
+
+
Description copied from class: SimpleDigesterConfig
+

+ Sets the size of the pool of digesters to be created. +

+

+ This parameter will be ignored if used with a non-pooled digester. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: SimpleDigesterConfig.getPoolSize() +

+

+

+
Overrides:
setPoolSize in class SimpleDigesterConfig
+
+
+
Parameters:
poolSize - the size of the pool to be used if this configuration is used with a + pooled digester
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/EnvironmentStringDigesterConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/EnvironmentStringDigesterConfig.html new file mode 100644 index 00000000..4dc90c44 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/EnvironmentStringDigesterConfig.html @@ -0,0 +1,1107 @@ + + + + + + + +EnvironmentStringDigesterConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.digest.config +
+Class EnvironmentStringDigesterConfig

+
+Object
+  extended by org.jasypt.digest.config.SimpleDigesterConfig
+      extended by org.jasypt.digest.config.EnvironmentDigesterConfig
+          extended by org.jasypt.digest.config.EnvironmentStringDigesterConfig
+
+
+
All Implemented Interfaces:
DigesterConfig, StringDigesterConfig
+
+
+
+
public class EnvironmentStringDigesterConfig
extends EnvironmentDigesterConfig
implements StringDigesterConfig
+ + +

+

+ Implementation for StringDigesterConfig which can retrieve configuration + values from environment variables or system properties. +

+

+ The name of the environment variable or system property (JVM property) to + query for each parameter can be set with its corresponding + setXEnvName or setXSysProperty method. +

+

+ As this class extends SimpleDigesterConfig, parameter values + can be also set with the usual setX methods. +

+

+ For any of the configuration parameters, if its value is not configured + in any way, a null value will be returned by the + corresponding getX method. +

+

+ +

+

+
Since:
+
1.3
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
EnvironmentStringDigesterConfig() + +
+           + Creates a new EnvironmentStringDigesterConfig instance.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringgetPrefix() + +
+           + Adds the returned (plain) prefix at the beginning of generated digests, + and also expects to find it in any plain message provided for matching + operations (raising an EncryptionOperationNotPossibleException + if not).
+ StringgetPrefixEnvName() + +
+          Retrieve the name of the environment variable which value has been + loaded as a value for the "prefix" parameter.
+ StringgetPrefixSysPropertyName() + +
+          Retrieve the name of the JVM system property which value has been + loaded as a value for the "prefix" parameter.
+ StringgetStringOutputType() + +
+           + This parameter lets the user specify the form in which String output + will be encoded.
+ StringgetStringOutputTypeEnvName() + +
+          Retrieve the name of the environment variable which value has been + loaded as the String output type.
+ StringgetStringOutputTypeSysPropertyName() + +
+          Retrieve the name of the JVM system property which value has been + loaded as the String output type.
+ StringgetSuffix() + +
+           + Adds the returned (plain) suffix at the end of generated digests, + and also expects to find it in any plain message provided for matching + operations (raising an EncryptionOperationNotPossibleException + if not).
+ StringgetSuffixEnvName() + +
+          Retrieve the name of the environment variable which value has been + loaded as a value for the "suffix" parameter.
+ StringgetSuffixSysPropertyName() + +
+          Retrieve the name of the JVM system property which value has been + loaded as a value for the "suffix" parameter.
+ StringgetUnicodeNormalizationIgnoredEnvName() + +
+          Retrieve the name of the environment variable which value has been + loaded as a value for the "unicode normalization ignored" parameter.
+ StringgetUnicodeNormalizationIgnoredSysPropertyName() + +
+          Retrieve the name of the JVM system property which value has been + loaded as a value for the "unicode normalization ignored" parameter.
+ BooleanisUnicodeNormalizationIgnored() + +
+           + This parameter lets the user specify if the Unicode text normalization + step performed during String digest and matching should be ignored.
+ voidsetPrefix(String prefix) + +
+           + Sets the prefix to be added at the beginning of encryption results, and also to + be expected at the beginning of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not).
+ voidsetPrefixEnvName(String prefixEnvName) + +
+          Set the config object to use the specified environment variable to + load the value for the "prefix" parameter.
+ voidsetPrefixSysPropertyName(String prefixSysPropertyName) + +
+          Set the config object to use the specified JVM system property to + load a value for the "prefix" parameter.
+ voidsetStringOutputType(String stringOutputType) + +
+           + Sets the the form in which String output + will be encoded.
+ voidsetStringOutputTypeEnvName(String stringOutputTypeEnvName) + +
+          Set the config object to use the specified environment variable to + load the value for the String output type.
+ voidsetStringOutputTypeSysPropertyName(String stringOutputTypeSysPropertyName) + +
+          Set the config object to use the specified JVM system property to + load the value for the String output type.
+ voidsetSuffix(String suffix) + +
+           + Sets the suffix to be added at the end of encryption results, and also to + be expected at the end of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not).
+ voidsetSuffixEnvName(String suffixEnvName) + +
+          Set the config object to use the specified environment variable to + load the value for the "suffix" parameter.
+ voidsetSuffixSysPropertyName(String suffixSysPropertyName) + +
+          Set the config object to use the specified JVM system property to + load a value for the "suffix" parameter.
+ voidsetUnicodeNormalizationIgnored(Boolean unicodeNormalizationIgnored) + +
+           + Sets whether the unicode text normalization step should be ignored.
+ voidsetUnicodeNormalizationIgnored(String unicodeNormalizationIgnored) + +
+           + Sets whether the unicode text normalization step should be ignored.
+ voidsetUnicodeNormalizationIgnoredEnvName(String unicodeNormalizationIgnoredEnvName) + +
+          Set the config object to use the specified environment variable to + load the value for the "unicode normalization ignored" parameter.
+ voidsetUnicodeNormalizationIgnoredSysPropertyName(String unicodeNormalizationIgnoredSysPropertyName) + +
+          Set the config object to use the specified JVM system property to + load a value for the "unicode normalization ignored" parameter.
+ + + + + + + +
Methods inherited from class org.jasypt.digest.config.EnvironmentDigesterConfig
getAlgorithmEnvName, getAlgorithmSysPropertyName, getInvertPositionOfPlainSaltInEncryptionResultsEnvName, getInvertPositionOfPlainSaltInEncryptionResultsSysPropertyName, getInvertPositionOfSaltInMessageBeforeDigestingEnvName, getInvertPositionOfSaltInMessageBeforeDigestingSysPropertyName, getIterationsEnvName, getIterationsSysPropertyName, getPoolSizeEnvName, getPoolSizeSysPropertyName, getProviderClassNameEnvName, getProviderClassNameSysPropertyName, getProviderNameEnvName, getProviderNameSysPropertyName, getSaltGeneratorClassNameEnvName, getSaltGeneratorClassNameSysPropertyName, getSaltSizeBytesEnvName, getSaltSizeBytesSysPropertyName, getUseLenientSaltSizeCheckEnvName, getUseLenientSaltSizeCheckSysPropertyName, setAlgorithm, setAlgorithmEnvName, setAlgorithmSysPropertyName, setInvertPositionOfPlainSaltInEncryptionResults, setInvertPositionOfPlainSaltInEncryptionResultsEnvName, setInvertPositionOfPlainSaltInEncryptionResultsSysPropertyName, setInvertPositionOfSaltInMessageBeforeDigesting, setInvertPositionOfSaltInMessageBeforeDigestingEnvName, setInvertPositionOfSaltInMessageBeforeDigestingSysPropertyName, setIterations, setIterations, setIterationsEnvName, setIterationsSysPropertyName, setPoolSize, setPoolSize, setPoolSizeEnvName, setPoolSizeSysPropertyName, setProvider, setProviderClassName, setProviderClassNameEnvName, setProviderClassNameSysPropertyName, setProviderName, setProviderNameEnvName, setProviderNameSysPropertyName, setSaltGenerator, setSaltGeneratorClassName, setSaltGeneratorClassNameEnvName, setSaltGeneratorClassNameSysPropertyName, setSaltSizeBytes, setSaltSizeBytes, setSaltSizeBytesEnvName, setSaltSizeBytesSysPropertyName, setUseLenientSaltSizeCheck, setUseLenientSaltSizeCheckEnvName, setUseLenientSaltSizeCheckSysPropertyName
+ + + + + + + +
Methods inherited from class org.jasypt.digest.config.SimpleDigesterConfig
getAlgorithm, getInvertPositionOfPlainSaltInEncryptionResults, getInvertPositionOfSaltInMessageBeforeDigesting, getIterations, getPoolSize, getProvider, getProviderName, getSaltGenerator, getSaltSizeBytes, getUseLenientSaltSizeCheck
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+ + + + + + + +
Methods inherited from interface org.jasypt.digest.config.DigesterConfig
getAlgorithm, getInvertPositionOfPlainSaltInEncryptionResults, getInvertPositionOfSaltInMessageBeforeDigesting, getIterations, getPoolSize, getProvider, getProviderName, getSaltGenerator, getSaltSizeBytes, getUseLenientSaltSizeCheck
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EnvironmentStringDigesterConfig

+
+public EnvironmentStringDigesterConfig()
+
+

+ Creates a new EnvironmentStringDigesterConfig instance. +

+

+

+ + + + + + + + +
+Method Detail
+ +

+getUnicodeNormalizationIgnoredEnvName

+
+public String getUnicodeNormalizationIgnoredEnvName()
+
+
Retrieve the name of the environment variable which value has been + loaded as a value for the "unicode normalization ignored" parameter. +

+

+
+
+
+ +
Returns:
the name of the variable
+
+
+
+ +

+setUnicodeNormalizationIgnoredEnvName

+
+public void setUnicodeNormalizationIgnoredEnvName(String unicodeNormalizationIgnoredEnvName)
+
+
Set the config object to use the specified environment variable to + load the value for the "unicode normalization ignored" parameter. +

+

+
+
+
+
Parameters:
unicodeNormalizationIgnoredEnvName - the name of the environment + variable
+
+
+
+ +

+getUnicodeNormalizationIgnoredSysPropertyName

+
+public String getUnicodeNormalizationIgnoredSysPropertyName()
+
+
Retrieve the name of the JVM system property which value has been + loaded as a value for the "unicode normalization ignored" parameter. +

+

+
+
+
+ +
Returns:
the name of the property
+
+
+
+ +

+setUnicodeNormalizationIgnoredSysPropertyName

+
+public void setUnicodeNormalizationIgnoredSysPropertyName(String unicodeNormalizationIgnoredSysPropertyName)
+
+
Set the config object to use the specified JVM system property to + load a value for the "unicode normalization ignored" parameter. +

+

+
+
+
+
Parameters:
unicodeNormalizationIgnoredSysPropertyName - the name of the property
+
+
+
+ +

+getStringOutputTypeEnvName

+
+public String getStringOutputTypeEnvName()
+
+
Retrieve the name of the environment variable which value has been + loaded as the String output type. +

+

+
+
+
+ +
Returns:
the name of the variable
+
+
+
+ +

+setStringOutputTypeEnvName

+
+public void setStringOutputTypeEnvName(String stringOutputTypeEnvName)
+
+
Set the config object to use the specified environment variable to + load the value for the String output type. +

+

+
+
+
+
Parameters:
stringOutputTypeEnvName - the name of the environment variable
+
+
+
+ +

+getStringOutputTypeSysPropertyName

+
+public String getStringOutputTypeSysPropertyName()
+
+
Retrieve the name of the JVM system property which value has been + loaded as the String output type. +

+

+
+
+
+ +
Returns:
the name of the property
+
+
+
+ +

+setStringOutputTypeSysPropertyName

+
+public void setStringOutputTypeSysPropertyName(String stringOutputTypeSysPropertyName)
+
+
Set the config object to use the specified JVM system property to + load the value for the String output type. +

+

+
+
+
+
Parameters:
stringOutputTypeSysPropertyName - the name of the property
+
+
+
+ +

+setUnicodeNormalizationIgnored

+
+public void setUnicodeNormalizationIgnored(Boolean unicodeNormalizationIgnored)
+
+

+ Sets whether the unicode text normalization step should be ignored. +

+

+ The Java Virtual Machine internally handles all Strings as UNICODE. When + digesting or matching digests in jasypt, these Strings are first + normalized to + its NFC form so that digest matching is not affected by the specific + form in which the messages where input. +

+

+ It is normally safe (and recommended) to leave this parameter set to + its default FALSE value (and thus DO perform normalization + operations). But in some specific cases in which issues with legacy + software could arise, it might be useful to set this to TRUE. +

+

+ For more information on unicode text normalization, see this issue of + Core Java Technologies Tech Tips. +

+

+ If not set, null will be returned. +

+

+

+
+
+
+
Parameters:
unicodeNormalizationIgnored - whether the unicode text + normalization step should be ignored or not.
+
+
+
+ +

+setUnicodeNormalizationIgnored

+
+public void setUnicodeNormalizationIgnored(String unicodeNormalizationIgnored)
+
+

+ Sets whether the unicode text normalization step should be ignored. +

+

+ The Java Virtual Machine internally handles all Strings as UNICODE. When + digesting or matching digests in jasypt, these Strings are first + normalized to + its NFC form so that digest matching is not affected by the specific + form in which the messages where input. +

+

+ It is normally safe (and recommended) to leave this parameter set to + its default FALSE value (and thus DO perform normalization + operations). But in some specific cases in which issues with legacy + software could arise, it might be useful to set this to TRUE. +

+

+ For more information on unicode text normalization, see this issue of + Core Java Technologies Tech Tips. +

+

+ If not set, null will be returned. +

+

+

+
+
+
+
Parameters:
unicodeNormalizationIgnored - whether the unicode text + normalization step should be ignored or not.
Since:
+
1.4
+
+
+
+
+ +

+setStringOutputType

+
+public void setStringOutputType(String stringOutputType)
+
+

+ Sets the the form in which String output + will be encoded. Available encoding types are: +

+
    +
  • base64 (default)
  • +
  • hexadecimal
  • +
+

+ If not set, null will be returned. +

+

+

+
+
+
+
Parameters:
stringOutputType - the string output type.
+
+
+
+ +

+setPrefix

+
+public void setPrefix(String prefix)
+
+

+ Sets the prefix to be added at the beginning of encryption results, and also to + be expected at the beginning of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not). +

+

+ If not set, null will be returned. +

+

+ Determines the result of: getPrefix() +

+

+

+
+
+
+
Parameters:
prefix -
Since:
+
1.7
+
+
+
+
+ +

+setSuffix

+
+public void setSuffix(String suffix)
+
+

+ Sets the suffix to be added at the end of encryption results, and also to + be expected at the end of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not). +

+

+ If not set, null will be returned. +

+

+ Determines the result of: getSuffix() +

+

+

+
+
+
+
Parameters:
suffix -
Since:
+
1.7
+
+
+
+
+ +

+isUnicodeNormalizationIgnored

+
+public Boolean isUnicodeNormalizationIgnored()
+
+
Description copied from interface: StringDigesterConfig
+

+ This parameter lets the user specify if the Unicode text normalization + step performed during String digest and matching should be ignored. +

+

+ The Java Virtual Machine internally handles all Strings as UNICODE. When + digesting or matching digests in jasypt, these Strings are first + normalized to + its NFC form so that digest matching is not affected by the specific + form in which the messages where input. +

+

+ It is normally safe (and recommended) to leave this parameter set to + its default FALSE value (and thus DO perform normalization + operations). But in some specific cases in which issues with legacy + software could arise, it might be useful to set this to TRUE. +

+

+ For more information on unicode text normalization, see this issue of + Core Java Technologies Tech Tips. +

+

+

+
Specified by:
isUnicodeNormalizationIgnored in interface StringDigesterConfig
+
+
+ +
Returns:
whether the unicode text normalization step should be ignored or + not.
+
+
+
+ +

+getStringOutputType

+
+public String getStringOutputType()
+
+
Description copied from interface: StringDigesterConfig
+

+ This parameter lets the user specify the form in which String output + will be encoded. Available encoding types are: +

+
    +
  • base64 (default)
  • +
  • hexadecimal
  • +
+

+

+
Specified by:
getStringOutputType in interface StringDigesterConfig
+
+
+ +
Returns:
The name of the encoding type for String output
+
+
+
+ +

+getPrefix

+
+public String getPrefix()
+
+
Description copied from interface: StringDigesterConfig
+

+ Adds the returned (plain) prefix at the beginning of generated digests, + and also expects to find it in any plain message provided for matching + operations (raising an EncryptionOperationNotPossibleException + if not). +

+

+

+
Specified by:
getPrefix in interface StringDigesterConfig
+
+
+ +
Returns:
the prefix to be added to all digests
+
+
+
+ +

+getSuffix

+
+public String getSuffix()
+
+
Description copied from interface: StringDigesterConfig
+

+ Adds the returned (plain) suffix at the end of generated digests, + and also expects to find it in any plain message provided for matching + operations (raising an EncryptionOperationNotPossibleException + if not). +

+

+

+
Specified by:
getSuffix in interface StringDigesterConfig
+
+
+ +
Returns:
the suffix to be added to all digests
+
+
+
+ +

+getPrefixEnvName

+
+public String getPrefixEnvName()
+
+
Retrieve the name of the environment variable which value has been + loaded as a value for the "prefix" parameter. +

+

+
+
+
+ +
Returns:
the name of the variable
Since:
+
1.7
+
+
+
+
+ +

+setPrefixEnvName

+
+public void setPrefixEnvName(String prefixEnvName)
+
+
Set the config object to use the specified environment variable to + load the value for the "prefix" parameter. +

+

+
+
+
+
Parameters:
prefixEnvName - the name of the environment + variable
Since:
+
1.7
+
+
+
+
+ +

+getPrefixSysPropertyName

+
+public String getPrefixSysPropertyName()
+
+
Retrieve the name of the JVM system property which value has been + loaded as a value for the "prefix" parameter. +

+

+
+
+
+ +
Returns:
the name of the property
Since:
+
1.7
+
+
+
+
+ +

+setPrefixSysPropertyName

+
+public void setPrefixSysPropertyName(String prefixSysPropertyName)
+
+
Set the config object to use the specified JVM system property to + load a value for the "prefix" parameter. +

+

+
+
+
+
Parameters:
prefixSysPropertyName - the name of the property
Since:
+
1.7
+
+
+
+
+ +

+getSuffixEnvName

+
+public String getSuffixEnvName()
+
+
Retrieve the name of the environment variable which value has been + loaded as a value for the "suffix" parameter. +

+

+
+
+
+ +
Returns:
the name of the variable
Since:
+
1.7
+
+
+
+
+ +

+setSuffixEnvName

+
+public void setSuffixEnvName(String suffixEnvName)
+
+
Set the config object to use the specified environment variable to + load the value for the "suffix" parameter. +

+

+
+
+
+
Parameters:
suffixEnvName - the name of the environment + variable
Since:
+
1.7
+
+
+
+
+ +

+getSuffixSysPropertyName

+
+public String getSuffixSysPropertyName()
+
+
Retrieve the name of the JVM system property which value has been + loaded as a value for the "suffix" parameter. +

+

+
+
+
+ +
Returns:
the name of the property
Since:
+
1.7
+
+
+
+
+ +

+setSuffixSysPropertyName

+
+public void setSuffixSysPropertyName(String suffixSysPropertyName)
+
+
Set the config object to use the specified JVM system property to + load a value for the "suffix" parameter. +

+

+
+
+
+
Parameters:
suffixSysPropertyName - the name of the property
Since:
+
1.7
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/SimpleDigesterConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/SimpleDigesterConfig.html new file mode 100644 index 00000000..aac36e73 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/SimpleDigesterConfig.html @@ -0,0 +1,1302 @@ + + + + + + + +SimpleDigesterConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.digest.config +
+Class SimpleDigesterConfig

+
+Object
+  extended by org.jasypt.digest.config.SimpleDigesterConfig
+
+
+
All Implemented Interfaces:
DigesterConfig
+
+
+
Direct Known Subclasses:
EnvironmentDigesterConfig, SimpleStringDigesterConfig
+
+
+
+
public class SimpleDigesterConfig
extends Object
implements DigesterConfig
+ + +

+

+ Bean implementation for DigesterConfig. This class allows + the values for the configuration parameters to be set + via "standard" setX methods. +

+

+ For any of the configuration parameters, if its setX + method is not called, a null value will be returned by the + corresponding getX method. +

+

+ Note that there is not an exact correspondence between setX() + and getX() methods, as sometimes two methods like + setProvider() and setProviderClassName() will affect the + same configuration parameter (getProvider()). This means that + several combinations of setX() methods collide, and + should not be called together (a call to setProviderClassName() + will override any previous call to setProvider()). +

+

+ +

+

+
Since:
+
1.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
SimpleDigesterConfig() + +
+           + Creates a new SimpleDigesterConfig instance.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringgetAlgorithm() + +
+           + Returns the name of an algorithm to be used for hashing, like "MD5" or + "SHA-1".
+ BooleangetInvertPositionOfPlainSaltInEncryptionResults() + +
+           + Returns Boolean.TRUE if the plain (not hashed) salt bytes are to + be appended after the digest operation result bytes.
+ BooleangetInvertPositionOfSaltInMessageBeforeDigesting() + +
+           + Returns Boolean.TRUE if the salt bytes are to be appended after the + message ones before performing the digest operation on the whole.
+ IntegergetIterations() + +
+           + Returns the number of times the hash function will be applied recursively.
+ IntegergetPoolSize() + +
+           + Get the size of the pool of digesters to be created.
+ java.security.ProvidergetProvider() + +
+           + Returns the java.security.Provider implementation object + to be used by the digester for obtaining the digest algorithm.
+ StringgetProviderName() + +
+           + Returns the name of the java.security.Provider implementation + to be used by the digester for obtaining the digest algorithm.
+ SaltGeneratorgetSaltGenerator() + +
+           + Returns a SaltGenerator implementation to be used by the digester.
+ IntegergetSaltSizeBytes() + +
+           + Returns the size of the salt to be used to compute the digest.
+ BooleangetUseLenientSaltSizeCheck() + +
+           + Returns Boolean.TRUE if digest matching operations will allow matching + digests with a salt size different to the one configured in the "saltSizeBytes" + property.
+ voidsetAlgorithm(String algorithm) + +
+           + Sets the name of the algorithm.
+ voidsetInvertPositionOfPlainSaltInEncryptionResults(Boolean invertPositionOfPlainSaltInEncryptionResults) + +
+           + Whether the plain (not hashed) salt bytes are to + be appended after the digest operation result bytes.
+ voidsetInvertPositionOfSaltInMessageBeforeDigesting(Boolean invertPositionOfSaltInMessageBeforeDigesting) + +
+           + Whether the salt bytes are to be appended after the + message ones before performing the digest operation on the whole.
+ voidsetIterations(Integer iterations) + +
+           + Sets the number of hashing iterations.
+ voidsetIterations(String iterations) + +
+           + Sets the number of hashing iterations.
+ voidsetPoolSize(Integer poolSize) + +
+           + Sets the size of the pool of digesters to be created.
+ voidsetPoolSize(String poolSize) + +
+           + Sets the size of the pool of digesters to be created.
+ voidsetProvider(java.security.Provider provider) + +
+           + Sets the security provider to be used for obtaining the digest + algorithm.
+ voidsetProviderClassName(String providerClassName) + +
+           + Sets the class name for the security provider to be used for + obtaining the digest algorithm.
+ voidsetProviderName(String providerName) + +
+           + Sets the name of the security provider to be asked for the digest + algorithm.
+ voidsetSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator.
+ voidsetSaltGeneratorClassName(String saltGeneratorClassName) + +
+           + Sets the class name of the salt generator.
+ voidsetSaltSizeBytes(Integer saltSizeBytes) + +
+           + Size in bytes of the salt to be used.
+ voidsetSaltSizeBytes(String saltSizeBytes) + +
+           + Size in bytes of the salt to be used.
+ voidsetUseLenientSaltSizeCheck(Boolean useLenientSaltSizeCheck) + +
+           + Whether digest matching operations will allow matching + digests with a salt size different to the one configured in the "saltSizeBytes" + property.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+SimpleDigesterConfig

+
+public SimpleDigesterConfig()
+
+

+ Creates a new SimpleDigesterConfig instance. +

+

+

+ + + + + + + + +
+Method Detail
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+

+ Sets the name of the algorithm. +

+

+ This algorithm has to be supported by your security infrastructure, and + it should be allowed as an algorithm for creating + java.security.MessageDigest instances. +

+

+ If you are specifying a security provider with setProvider(Provider) or + setProviderName(String), this algorithm should be + supported by your specified provider. +

+

+ If you are not specifying a provider, you will be able to use those + algorithms provided by the default security provider of your JVM vendor. + For valid names in the Sun JVM, see Java + Cryptography Architecture API Specification & + Reference. +

+

+ Determines the result of: getAlgorithm() +

+

+

+
+
+
+
Parameters:
algorithm - the name of the algorithm.
+
+
+
+ +

+setIterations

+
+public void setIterations(Integer iterations)
+
+

+ Sets the number of hashing iterations. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: getIterations() +

+

+

+
+
+
+
Parameters:
iterations - the number of iterations.
+
+
+
+ +

+setIterations

+
+public void setIterations(String iterations)
+
+

+ Sets the number of hashing iterations. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: getIterations() +

+

+

+
+
+
+
Parameters:
iterations - the number of iterations.
Since:
+
1.4
+
+
+
+
+ +

+setSaltSizeBytes

+
+public void setSaltSizeBytes(Integer saltSizeBytes)
+
+

+ Size in bytes of the salt to be used. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: getSaltSizeBytes() +

+

+

+
+
+
+
Parameters:
saltSizeBytes - the size of the salt, in bytes.
+
+
+
+ +

+setSaltSizeBytes

+
+public void setSaltSizeBytes(String saltSizeBytes)
+
+

+ Size in bytes of the salt to be used. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: getSaltSizeBytes() +

+

+

+
+
+
+
Parameters:
saltSizeBytes - the size of the salt, in bytes.
Since:
+
1.4
+
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(SaltGenerator saltGenerator)
+
+

+ Sets the salt generator. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: getSaltGenerator() +

+

+

+
+
+
+
Parameters:
saltGenerator - the salt generator.
Since:
+
1.2
+
+
+
+
+ +

+setSaltGeneratorClassName

+
+public void setSaltGeneratorClassName(String saltGeneratorClassName)
+
+

+ Sets the class name of the salt generator. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: getSaltGenerator() +

+

+

+
+
+
+
Parameters:
saltGeneratorClassName - the name of the salt generator class.
Since:
+
1.4
+
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+

+ Sets the name of the security provider to be asked for the digest + algorithm. This provider should be already registered. +

+

+ If both the providerName and provider properties + are set, only provider will be used, and providerName + will have no meaning for the digester object. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: getProviderName() +

+

+

+
+
+
+
Parameters:
providerName - the name of the security provider.
Since:
+
1.3
+
+
+
+
+ +

+setProvider

+
+public void setProvider(java.security.Provider provider)
+
+

+ Sets the security provider to be used for obtaining the digest + algorithm. This method is an alternative to + both setProviderName(String) and + setProviderClassName(String) and they should not be used + altogether. + The provider specified with setProvider(Provider) does not + have to be registered beforehand, and its use will not result in its + being registered. +

+

+ If both the providerName and provider properties + are set, only provider will be used, and providerName + will have no meaning for the digester object. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: getProvider() +

+

+

+
+
+
+
Parameters:
provider - the security provider object.
Since:
+
1.3
+
+
+
+
+ +

+setProviderClassName

+
+public void setProviderClassName(String providerClassName)
+
+

+ Sets the class name for the security provider to be used for + obtaining the digest algorithm. This method is an alternative to + both setProviderName(String) setProvider(Provider) + and they should not be used altogether. + The provider specified with setProviderClassName(String) does not + have to be registered beforehand, and its use will not result in its + being registered. +

+

+ If both the providerName and provider properties + are set, only provider will be used, and providerName + will have no meaning for the digester object. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: getProvider() +

+

+

+
+
+
+
Parameters:
providerClassName - the name of the security provider class.
Since:
+
1.4
+
+
+
+
+ +

+setInvertPositionOfSaltInMessageBeforeDigesting

+
+public void setInvertPositionOfSaltInMessageBeforeDigesting(Boolean invertPositionOfSaltInMessageBeforeDigesting)
+
+

+ Whether the salt bytes are to be appended after the + message ones before performing the digest operation on the whole. The + default behaviour is to insert those bytes before the message bytes, but + setting this configuration item to true allows compatibility + with some external systems and specifications (e.g. LDAP {SSHA}). +

+

+ If not set, null will be returned. +

+

+ Determines the result of: getInvertPositionOfSaltInMessageBeforeDigesting() +

+

+

+
+
+
+
Parameters:
invertPositionOfSaltInMessageBeforeDigesting - whether salt will be appended after the message before applying + the digest operation on the whole, instead of inserted before it + (which is the default).
Since:
+
1.7
+
+
+
+
+ +

+setInvertPositionOfPlainSaltInEncryptionResults

+
+public void setInvertPositionOfPlainSaltInEncryptionResults(Boolean invertPositionOfPlainSaltInEncryptionResults)
+
+

+ Whether the plain (not hashed) salt bytes are to + be appended after the digest operation result bytes. The default behaviour is + to insert them before the digest result, but setting this configuration + item to true allows compatibility with some external systems + and specifications (e.g. LDAP {SSHA}). +

+

+ If not set, null will be returned. +

+

+ Determines the result of: getInvertPositionOfPlainSaltInEncryptionResults() +

+

+

+
+
+
+
Parameters:
invertPositionOfPlainSaltInEncryptionResults - whether plain salt will be appended after the digest operation + result instead of inserted before it (which is the + default).
Since:
+
1.7
+
+
+
+
+ +

+setUseLenientSaltSizeCheck

+
+public void setUseLenientSaltSizeCheck(Boolean useLenientSaltSizeCheck)
+
+

+ Whether digest matching operations will allow matching + digests with a salt size different to the one configured in the "saltSizeBytes" + property. This is possible because digest algorithms will produce a fixed-size + result, so the remaining bytes from the hashed input will be considered salt. +

+

+ This will allow the digester to match digests produced in environments which do not + establish a fixed salt size as standard (for example, SSHA password encryption + in LDAP systems). +

+

+ The value of this property will not affect the creation of digests, + which will always have a salt of the size established by the "saltSizeBytes" + property. It will only affect digest matching. +

+

+ Setting this property to true is not compatible with SaltGenerator + implementations which return false for their + SaltGenerator.includePlainSaltInEncryptionResults() property. +

+

+ Also, be aware that some algorithms or algorithm providers might not support + knowing the size of the digests beforehand, which is also incompatible with + a lenient behaviour. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: getUseLenientSaltSizeCheck() +

+

+

+
+
+
+
Parameters:
useLenientSaltSizeCheck - whether the digester will allow matching of + digests with different salt sizes than established or not (default + is false).
Since:
+
1.7
+
+
+
+
+ +

+setPoolSize

+
+public void setPoolSize(Integer poolSize)
+
+

+ Sets the size of the pool of digesters to be created. +

+

+ This parameter will be ignored if used with a non-pooled digester. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: getPoolSize() +

+

+

+
+
+
+
Parameters:
poolSize - the size of the pool to be used if this configuration is used with a + pooled digester
Since:
+
1.7
+
+
+
+
+ +

+setPoolSize

+
+public void setPoolSize(String poolSize)
+
+

+ Sets the size of the pool of digesters to be created. +

+

+ This parameter will be ignored if used with a non-pooled digester. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: getPoolSize() +

+

+

+
+
+
+
Parameters:
poolSize - the size of the pool to be used if this configuration is used with a + pooled digester
Since:
+
1.7
+
+
+
+
+ +

+getAlgorithm

+
+public String getAlgorithm()
+
+
Description copied from interface: DigesterConfig
+

+ Returns the name of an algorithm to be used for hashing, like "MD5" or + "SHA-1". +

+

+ This algorithm has to be supported by your Java Virtual Machine, and + it should be allowed as an algorithm for creating + java.security.MessageDigest instances. +

+

+ If this method returns null, the digester will ignore the config object + when deciding the algorithm to be used. +

+

+

+
Specified by:
getAlgorithm in interface DigesterConfig
+
+
+ +
Returns:
the name of the algorithm to be used, or null if this object + will not want to set an algorithm. See Appendix A + in the Java + Cryptography Architecture API Specification & + Reference + for information about standard algorithm names.
+
+
+
+ +

+getIterations

+
+public Integer getIterations()
+
+
Description copied from interface: DigesterConfig
+

+ Returns the number of times the hash function will be applied recursively. +
+ The hash function will be applied to its own results as many times as + specified: h(h(...h(x)...)) +

+

+ This mechanism is explained in + PKCS #5: Password-Based Cryptography Standard. +

+

+ If this method returns null, the digester will ignore the config object + when deciding the number of hashing iterations. +

+

+

+
Specified by:
getIterations in interface DigesterConfig
+
+
+ +
Returns:
the number of iterations, or null if this object will not want + to set the number of iterations.
+
+
+
+ +

+getSaltSizeBytes

+
+public Integer getSaltSizeBytes()
+
+
Description copied from interface: DigesterConfig
+

+ Returns the size of the salt to be used to compute the digest. + This mechanism is explained in + PKCS #5: Password-Based Cryptography Standard. +

+

+ If salt size is set to zero, then no salt will be used. +

+

+ If this method returns null, the digester will ignore the config object + when deciding the size of the salt to be used. +

+

+

+
Specified by:
getSaltSizeBytes in interface DigesterConfig
+
+
+ +
Returns:
the size of the salt to be used, in bytes, or null if + this object will not want to set a size for salt.
+
+
+
+ +

+getSaltGenerator

+
+public SaltGenerator getSaltGenerator()
+
+
Description copied from interface: DigesterConfig
+

+ Returns a SaltGenerator implementation to be used by the digester. +

+

+ If this method returns null, the digester will ignore the config object + when deciding the salt generator to be used. +

+

+

+
Specified by:
getSaltGenerator in interface DigesterConfig
+
+
+ +
Returns:
the salt generator, or null if this object will not want to set + a specific SaltGenerator implementation.
+
+
+
+ +

+getProviderName

+
+public String getProviderName()
+
+
Description copied from interface: DigesterConfig
+

+ Returns the name of the java.security.Provider implementation + to be used by the digester for obtaining the digest algorithm. This + provider must have been registered beforehand. +

+

+ If this method returns null, the digester will ignore this parameter + when deciding the name of the security provider to be used. +

+

+ If this method does not return null, and neither does DigesterConfig.getProvider(), + providerName will be ignored, and the provider object returned + by getProvider() will be used. +

+

+

+
Specified by:
getProviderName in interface DigesterConfig
+
+
+ +
Returns:
the name of the security provider to be used.
+
+
+
+ +

+getProvider

+
+public java.security.Provider getProvider()
+
+
Description copied from interface: DigesterConfig
+

+ Returns the java.security.Provider implementation object + to be used by the digester for obtaining the digest algorithm. +

+

+ If this method returns null, the digester will ignore this parameter + when deciding the security provider object to be used. +

+

+ If this method does not return null, and neither does DigesterConfig.getProviderName(), + providerName will be ignored, and the provider object returned + by getProvider() will be used. +

+

+ The provider returned by this method does not need to be + registered beforehand, and its use will not result in its + being registered. +

+

+

+
Specified by:
getProvider in interface DigesterConfig
+
+
+ +
Returns:
the security provider object to be asked for the digest + algorithm.
+
+
+
+ +

+getInvertPositionOfSaltInMessageBeforeDigesting

+
+public Boolean getInvertPositionOfSaltInMessageBeforeDigesting()
+
+
Description copied from interface: DigesterConfig
+

+ Returns Boolean.TRUE if the salt bytes are to be appended after the + message ones before performing the digest operation on the whole. The + default behaviour is to insert those bytes before the message bytes, but + setting this configuration item to true allows compatibility + with some external systems and specifications (e.g. LDAP {SSHA}). +

+

+

+
Specified by:
getInvertPositionOfSaltInMessageBeforeDigesting in interface DigesterConfig
+
+
+ +
Returns:
whether salt will be appended after the message before applying + the digest operation on the whole, instead of inserted before it + (which is the default). If null is returned, the default + behaviour will be applied.
+
+
+
+ +

+getInvertPositionOfPlainSaltInEncryptionResults

+
+public Boolean getInvertPositionOfPlainSaltInEncryptionResults()
+
+
Description copied from interface: DigesterConfig
+

+ Returns Boolean.TRUE if the plain (not hashed) salt bytes are to + be appended after the digest operation result bytes. The default behaviour is + to insert them before the digest result, but setting this configuration + item to true allows compatibility with some external systems + and specifications (e.g. LDAP {SSHA}). +

+

+

+
Specified by:
getInvertPositionOfPlainSaltInEncryptionResults in interface DigesterConfig
+
+
+ +
Returns:
whether plain salt will be appended after the digest operation + result instead of inserted before it (which is the + default). If null is returned, the default behaviour will be + applied.
+
+
+
+ +

+getUseLenientSaltSizeCheck

+
+public Boolean getUseLenientSaltSizeCheck()
+
+
Description copied from interface: DigesterConfig
+

+ Returns Boolean.TRUE if digest matching operations will allow matching + digests with a salt size different to the one configured in the "saltSizeBytes" + property. This is possible because digest algorithms will produce a fixed-size + result, so the remaining bytes from the hashed input will be considered salt. +

+

+ This will allow the digester to match digests produced in environments which do not + establish a fixed salt size as standard (for example, SSHA password encryption + in LDAP systems). +

+

+ The value of this property will not affect the creation of digests, + which will always have a salt of the size established by the "saltSizeBytes" + property. It will only affect digest matching. +

+

+ Setting this property to true is not compatible with SaltGenerator + implementations which return false for their + SaltGenerator.includePlainSaltInEncryptionResults() property. +

+

+ Also, be aware that some algorithms or algorithm providers might not support + knowing the size of the digests beforehand, which is also incompatible with + a lenient behaviour. +

+

+ Default is FALSE. +

+

+

+
Specified by:
getUseLenientSaltSizeCheck in interface DigesterConfig
+
+
+ +
Returns:
whether the digester will allow matching of digests with different + salt sizes than established or not (default is false).
+
+
+
+ +

+getPoolSize

+
+public Integer getPoolSize()
+
+
Description copied from interface: DigesterConfig
+

+ Get the size of the pool of digesters to be created. +

+

+ This parameter will be ignored if used with a non-pooled digester. +

+

+

+
Specified by:
getPoolSize in interface DigesterConfig
+
+
+ +
Returns:
the size of the pool to be used if this configuration is used with a + pooled digester
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/SimpleStringDigesterConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/SimpleStringDigesterConfig.html new file mode 100644 index 00000000..ababdf0e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/SimpleStringDigesterConfig.html @@ -0,0 +1,655 @@ + + + + + + + +SimpleStringDigesterConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.digest.config +
+Class SimpleStringDigesterConfig

+
+Object
+  extended by org.jasypt.digest.config.SimpleDigesterConfig
+      extended by org.jasypt.digest.config.SimpleStringDigesterConfig
+
+
+
All Implemented Interfaces:
DigesterConfig, StringDigesterConfig
+
+
+
+
public class SimpleStringDigesterConfig
extends SimpleDigesterConfig
implements StringDigesterConfig
+ + +

+

+ Bean implementation for StringDigesterConfig. This class allows + the values for the configuration parameters to be set + via "standard" setX methods. +

+

+ For any of the configuration parameters, if its setX + method is not called, a null value will be returned by the + corresponding getX method. +

+

+ +

+

+
Since:
+
1.3
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
SimpleStringDigesterConfig() + +
+           + Creates a new SimpleStringDigesterConfig instance.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringgetPrefix() + +
+           + Adds the returned (plain) prefix at the beginning of generated digests, + and also expects to find it in any plain message provided for matching + operations (raising an EncryptionOperationNotPossibleException + if not).
+ StringgetStringOutputType() + +
+           + This parameter lets the user specify the form in which String output + will be encoded.
+ StringgetSuffix() + +
+           + Adds the returned (plain) suffix at the end of generated digests, + and also expects to find it in any plain message provided for matching + operations (raising an EncryptionOperationNotPossibleException + if not).
+ BooleanisUnicodeNormalizationIgnored() + +
+           + This parameter lets the user specify if the Unicode text normalization + step performed during String digest and matching should be ignored.
+ voidsetPrefix(String prefix) + +
+           + Sets the prefix to be added at the beginning of encryption results, and also to + be expected at the beginning of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not).
+ voidsetStringOutputType(String stringOutputType) + +
+           + Sets the the form in which String output + will be encoded.
+ voidsetSuffix(String suffix) + +
+           + Sets the suffix to be added at the end of encryption results, and also to + be expected at the end of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not).
+ voidsetUnicodeNormalizationIgnored(Boolean unicodeNormalizationIgnored) + +
+           + Sets whether the unicode text normalization step should be ignored.
+ voidsetUnicodeNormalizationIgnored(String unicodeNormalizationIgnored) + +
+           + Sets whether the unicode text normalization step should be ignored.
+ + + + + + + +
Methods inherited from class org.jasypt.digest.config.SimpleDigesterConfig
getAlgorithm, getInvertPositionOfPlainSaltInEncryptionResults, getInvertPositionOfSaltInMessageBeforeDigesting, getIterations, getPoolSize, getProvider, getProviderName, getSaltGenerator, getSaltSizeBytes, getUseLenientSaltSizeCheck, setAlgorithm, setInvertPositionOfPlainSaltInEncryptionResults, setInvertPositionOfSaltInMessageBeforeDigesting, setIterations, setIterations, setPoolSize, setPoolSize, setProvider, setProviderClassName, setProviderName, setSaltGenerator, setSaltGeneratorClassName, setSaltSizeBytes, setSaltSizeBytes, setUseLenientSaltSizeCheck
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+ + + + + + + +
Methods inherited from interface org.jasypt.digest.config.DigesterConfig
getAlgorithm, getInvertPositionOfPlainSaltInEncryptionResults, getInvertPositionOfSaltInMessageBeforeDigesting, getIterations, getPoolSize, getProvider, getProviderName, getSaltGenerator, getSaltSizeBytes, getUseLenientSaltSizeCheck
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+SimpleStringDigesterConfig

+
+public SimpleStringDigesterConfig()
+
+

+ Creates a new SimpleStringDigesterConfig instance. +

+

+

+ + + + + + + + +
+Method Detail
+ +

+setUnicodeNormalizationIgnored

+
+public void setUnicodeNormalizationIgnored(Boolean unicodeNormalizationIgnored)
+
+

+ Sets whether the unicode text normalization step should be ignored. +

+

+ The Java Virtual Machine internally handles all Strings as UNICODE. When + digesting or matching digests in jasypt, these Strings are first + normalized to + its NFC form so that digest matching is not affected by the specific + form in which the messages where input. +

+

+ It is normally safe (and recommended) to leave this parameter set to + its default FALSE value (and thus DO perform normalization + operations). But in some specific cases in which issues with legacy + software could arise, it might be useful to set this to TRUE. +

+

+ For more information on unicode text normalization, see this issue of + Core Java Technologies Tech Tips. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: isUnicodeNormalizationIgnored() +

+

+

+
+
+
+
Parameters:
unicodeNormalizationIgnored - whether the unicode text + normalization step should be ignored or not.
+
+
+
+ +

+setUnicodeNormalizationIgnored

+
+public void setUnicodeNormalizationIgnored(String unicodeNormalizationIgnored)
+
+

+ Sets whether the unicode text normalization step should be ignored. +

+

+ The Java Virtual Machine internally handles all Strings as UNICODE. When + digesting or matching digests in jasypt, these Strings are first + normalized to + its NFC form so that digest matching is not affected by the specific + form in which the messages where input. +

+

+ It is normally safe (and recommended) to leave this parameter set to + its default FALSE value (and thus DO perform normalization + operations). But in some specific cases in which issues with legacy + software could arise, it might be useful to set this to TRUE. +

+

+ For more information on unicode text normalization, see this issue of + Core Java Technologies Tech Tips. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: isUnicodeNormalizationIgnored() +

+

+

+
+
+
+
Parameters:
unicodeNormalizationIgnored - whether the unicode text + normalization step should be ignored or not.
Since:
+
1.4
+
+
+
+
+ +

+setStringOutputType

+
+public void setStringOutputType(String stringOutputType)
+
+

+ Sets the the form in which String output + will be encoded. Available encoding types are: +

+
    +
  • base64 (default)
  • +
  • hexadecimal
  • +
+

+ If not set, null will be returned. +

+

+ Determines the result of: getStringOutputType() +

+

+

+
+
+
+
Parameters:
stringOutputType - the string output type.
+
+
+
+ +

+setPrefix

+
+public void setPrefix(String prefix)
+
+

+ Sets the prefix to be added at the beginning of encryption results, and also to + be expected at the beginning of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not). +

+

+ If not set, null will be returned. +

+

+ Determines the result of: getPrefix() +

+

+

+
+
+
+
Parameters:
prefix -
Since:
+
1.7
+
+
+
+
+ +

+setSuffix

+
+public void setSuffix(String suffix)
+
+

+ Sets the suffix to be added at the end of encryption results, and also to + be expected at the end of plain messages provided for matching operations + (raising an EncryptionOperationNotPossibleException if not). +

+

+ If not set, null will be returned. +

+

+ Determines the result of: getSuffix() +

+

+

+
+
+
+
Parameters:
suffix -
Since:
+
1.7
+
+
+
+
+ +

+isUnicodeNormalizationIgnored

+
+public Boolean isUnicodeNormalizationIgnored()
+
+
Description copied from interface: StringDigesterConfig
+

+ This parameter lets the user specify if the Unicode text normalization + step performed during String digest and matching should be ignored. +

+

+ The Java Virtual Machine internally handles all Strings as UNICODE. When + digesting or matching digests in jasypt, these Strings are first + normalized to + its NFC form so that digest matching is not affected by the specific + form in which the messages where input. +

+

+ It is normally safe (and recommended) to leave this parameter set to + its default FALSE value (and thus DO perform normalization + operations). But in some specific cases in which issues with legacy + software could arise, it might be useful to set this to TRUE. +

+

+ For more information on unicode text normalization, see this issue of + Core Java Technologies Tech Tips. +

+

+

+
Specified by:
isUnicodeNormalizationIgnored in interface StringDigesterConfig
+
+
+ +
Returns:
whether the unicode text normalization step should be ignored or + not.
+
+
+
+ +

+getStringOutputType

+
+public String getStringOutputType()
+
+
Description copied from interface: StringDigesterConfig
+

+ This parameter lets the user specify the form in which String output + will be encoded. Available encoding types are: +

+
    +
  • base64 (default)
  • +
  • hexadecimal
  • +
+

+

+
Specified by:
getStringOutputType in interface StringDigesterConfig
+
+
+ +
Returns:
The name of the encoding type for String output
+
+
+
+ +

+getPrefix

+
+public String getPrefix()
+
+
Description copied from interface: StringDigesterConfig
+

+ Adds the returned (plain) prefix at the beginning of generated digests, + and also expects to find it in any plain message provided for matching + operations (raising an EncryptionOperationNotPossibleException + if not). +

+

+

+
Specified by:
getPrefix in interface StringDigesterConfig
+
+
+ +
Returns:
the prefix to be added to all digests
+
+
+
+ +

+getSuffix

+
+public String getSuffix()
+
+
Description copied from interface: StringDigesterConfig
+

+ Adds the returned (plain) suffix at the end of generated digests, + and also expects to find it in any plain message provided for matching + operations (raising an EncryptionOperationNotPossibleException + if not). +

+

+

+
Specified by:
getSuffix in interface StringDigesterConfig
+
+
+ +
Returns:
the suffix to be added to all digests
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/StringDigesterConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/StringDigesterConfig.html new file mode 100644 index 00000000..cd82a498 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/StringDigesterConfig.html @@ -0,0 +1,386 @@ + + + + + + + +StringDigesterConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.digest.config +
+Interface StringDigesterConfig

+
+
All Superinterfaces:
DigesterConfig
+
+
+
All Known Implementing Classes:
EnvironmentStringDigesterConfig, SimpleStringDigesterConfig
+
+
+
+
public interface StringDigesterConfig
extends DigesterConfig
+ + +

+

+ Common interface for config classes applicable to + StandardStringDigester objects. This interface + extends DigesterConfig to add config parameters specific to + String digesting. +

+

+ This interface lets the user create new StringDigesterConfig + classes which retrieve values for this parameters from different + (and maybe more secure) sources (remote servers, LDAP, other databases...), + and do this transparently for the digester object. +

+

+ The config objects passed to a digester will only be queried once + for each configuration parameter, and this will happen + during the initialization of the digester object. +

+

+ For a default implementation, see SimpleStringDigesterConfig. +

+

+ +

+

+
Since:
+
1.3
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringgetPrefix() + +
+           + Adds the returned (plain) prefix at the beginning of generated digests, + and also expects to find it in any plain message provided for matching + operations (raising an EncryptionOperationNotPossibleException + if not).
+ StringgetStringOutputType() + +
+           + This parameter lets the user specify the form in which String output + will be encoded.
+ StringgetSuffix() + +
+           + Adds the returned (plain) suffix at the end of generated digests, + and also expects to find it in any plain message provided for matching + operations (raising an EncryptionOperationNotPossibleException + if not).
+ BooleanisUnicodeNormalizationIgnored() + +
+           + This parameter lets the user specify if the Unicode text normalization + step performed during String digest and matching should be ignored.
+ + + + + + + +
Methods inherited from interface org.jasypt.digest.config.DigesterConfig
getAlgorithm, getInvertPositionOfPlainSaltInEncryptionResults, getInvertPositionOfSaltInMessageBeforeDigesting, getIterations, getPoolSize, getProvider, getProviderName, getSaltGenerator, getSaltSizeBytes, getUseLenientSaltSizeCheck
+  +

+ + + + + + + + +
+Method Detail
+ +

+isUnicodeNormalizationIgnored

+
+Boolean isUnicodeNormalizationIgnored()
+
+

+ This parameter lets the user specify if the Unicode text normalization + step performed during String digest and matching should be ignored. +

+

+ The Java Virtual Machine internally handles all Strings as UNICODE. When + digesting or matching digests in jasypt, these Strings are first + normalized to + its NFC form so that digest matching is not affected by the specific + form in which the messages where input. +

+

+ It is normally safe (and recommended) to leave this parameter set to + its default FALSE value (and thus DO perform normalization + operations). But in some specific cases in which issues with legacy + software could arise, it might be useful to set this to TRUE. +

+

+ For more information on unicode text normalization, see this issue of + Core Java Technologies Tech Tips. +

+

+

+
+
+
+ +
Returns:
whether the unicode text normalization step should be ignored or + not.
+
+
+
+ +

+getStringOutputType

+
+String getStringOutputType()
+
+

+ This parameter lets the user specify the form in which String output + will be encoded. Available encoding types are: +

+
    +
  • base64 (default)
  • +
  • hexadecimal
  • +
+

+

+
+
+
+ +
Returns:
The name of the encoding type for String output
+
+
+
+ +

+getPrefix

+
+String getPrefix()
+
+

+ Adds the returned (plain) prefix at the beginning of generated digests, + and also expects to find it in any plain message provided for matching + operations (raising an EncryptionOperationNotPossibleException + if not). +

+

+

+
+
+
+ +
Returns:
the prefix to be added to all digests
Since:
+
1.7
+
+
+
+
+ +

+getSuffix

+
+String getSuffix()
+
+

+ Adds the returned (plain) suffix at the end of generated digests, + and also expects to find it in any plain message provided for matching + operations (raising an EncryptionOperationNotPossibleException + if not). +

+

+

+
+
+
+ +
Returns:
the suffix to be added to all digests
Since:
+
1.7
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/DigesterConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/DigesterConfig.html new file mode 100644 index 00000000..99a161a7 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/DigesterConfig.html @@ -0,0 +1,323 @@ + + + + + + + +Uses of Interface org.jasypt.digest.config.DigesterConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.digest.config.DigesterConfig

+
+ + + + + + + + + + + + + + + + + +
+Packages that use DigesterConfig
org.jasypt.digest  
org.jasypt.digest.config  
org.jasypt.util.password  
+  +

+ + + + + +
+Uses of DigesterConfig in org.jasypt.digest
+  +

+ + + + + + + + + + + + + + + + + + + + + +
Methods in org.jasypt.digest with parameters of type DigesterConfig
+ voidPooledByteDigester.setConfig(DigesterConfig config) + +
+           + Sets a DigesterConfig object + for the digester.
+ voidStandardStringDigester.setConfig(DigesterConfig config) + +
+           + Sets a DigesterConfig + or StringDigesterConfig object + for the digester.
+ voidPooledStringDigester.setConfig(DigesterConfig config) + +
+           + Sets a DigesterConfig + or StringDigesterConfig object + for the digester.
+ voidStandardByteDigester.setConfig(DigesterConfig config) + +
+           + Sets a DigesterConfig object + for the digester.
+  +

+ + + + + +
+Uses of DigesterConfig in org.jasypt.digest.config
+  +

+ + + + + + + + + +
Subinterfaces of DigesterConfig in org.jasypt.digest.config
+ interfaceStringDigesterConfig + +
+           + Common interface for config classes applicable to + StandardStringDigester objects.
+  +

+ + + + + + + + + + + + + + + + + + + + + +
Classes in org.jasypt.digest.config that implement DigesterConfig
+ classEnvironmentDigesterConfig + +
+           + Implementation for DigesterConfig which can retrieve configuration + values from environment variables or system properties.
+ classEnvironmentStringDigesterConfig + +
+           + Implementation for StringDigesterConfig which can retrieve configuration + values from environment variables or system properties.
+ classSimpleDigesterConfig + +
+           + Bean implementation for DigesterConfig.
+ classSimpleStringDigesterConfig + +
+           + Bean implementation for StringDigesterConfig.
+  +

+ + + + + +
+Uses of DigesterConfig in org.jasypt.util.password
+  +

+ + + + + + + + + +
Methods in org.jasypt.util.password with parameters of type DigesterConfig
+ voidConfigurablePasswordEncryptor.setConfig(DigesterConfig config) + +
+          Lets the user configure this encryptor with a DigesterConfig + object, like if he/she were using a StandardStringDigester object + directly.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/EnvironmentDigesterConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/EnvironmentDigesterConfig.html new file mode 100644 index 00000000..bf764b71 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/EnvironmentDigesterConfig.html @@ -0,0 +1,183 @@ + + + + + + + +Uses of Class org.jasypt.digest.config.EnvironmentDigesterConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.digest.config.EnvironmentDigesterConfig

+
+ + + + + + + + + +
+Packages that use EnvironmentDigesterConfig
org.jasypt.digest.config  
+  +

+ + + + + +
+Uses of EnvironmentDigesterConfig in org.jasypt.digest.config
+  +

+ + + + + + + + + +
Subclasses of EnvironmentDigesterConfig in org.jasypt.digest.config
+ classEnvironmentStringDigesterConfig + +
+           + Implementation for StringDigesterConfig which can retrieve configuration + values from environment variables or system properties.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/EnvironmentStringDigesterConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/EnvironmentStringDigesterConfig.html new file mode 100644 index 00000000..0257f40c --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/EnvironmentStringDigesterConfig.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.digest.config.EnvironmentStringDigesterConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.digest.config.EnvironmentStringDigesterConfig

+
+No usage of org.jasypt.digest.config.EnvironmentStringDigesterConfig +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/SimpleDigesterConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/SimpleDigesterConfig.html new file mode 100644 index 00000000..363d8651 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/SimpleDigesterConfig.html @@ -0,0 +1,202 @@ + + + + + + + +Uses of Class org.jasypt.digest.config.SimpleDigesterConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.digest.config.SimpleDigesterConfig

+
+ + + + + + + + + +
+Packages that use SimpleDigesterConfig
org.jasypt.digest.config  
+  +

+ + + + + +
+Uses of SimpleDigesterConfig in org.jasypt.digest.config
+  +

+ + + + + + + + + + + + + + + + + +
Subclasses of SimpleDigesterConfig in org.jasypt.digest.config
+ classEnvironmentDigesterConfig + +
+           + Implementation for DigesterConfig which can retrieve configuration + values from environment variables or system properties.
+ classEnvironmentStringDigesterConfig + +
+           + Implementation for StringDigesterConfig which can retrieve configuration + values from environment variables or system properties.
+ classSimpleStringDigesterConfig + +
+           + Bean implementation for StringDigesterConfig.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/SimpleStringDigesterConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/SimpleStringDigesterConfig.html new file mode 100644 index 00000000..93ffaf2b --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/SimpleStringDigesterConfig.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.digest.config.SimpleStringDigesterConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.digest.config.SimpleStringDigesterConfig

+
+No usage of org.jasypt.digest.config.SimpleStringDigesterConfig +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/StringDigesterConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/StringDigesterConfig.html new file mode 100644 index 00000000..9a382adb --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/class-use/StringDigesterConfig.html @@ -0,0 +1,192 @@ + + + + + + + +Uses of Interface org.jasypt.digest.config.StringDigesterConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.digest.config.StringDigesterConfig

+
+ + + + + + + + + +
+Packages that use StringDigesterConfig
org.jasypt.digest.config  
+  +

+ + + + + +
+Uses of StringDigesterConfig in org.jasypt.digest.config
+  +

+ + + + + + + + + + + + + +
Classes in org.jasypt.digest.config that implement StringDigesterConfig
+ classEnvironmentStringDigesterConfig + +
+           + Implementation for StringDigesterConfig which can retrieve configuration + values from environment variables or system properties.
+ classSimpleStringDigesterConfig + +
+           + Bean implementation for StringDigesterConfig.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/package-frame.html new file mode 100644 index 00000000..d292c4f3 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/package-frame.html @@ -0,0 +1,52 @@ + + + + + + + +org.jasypt.digest.config (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.digest.config + + + + +
+Interfaces  + +
+DigesterConfig +
+StringDigesterConfig
+ + + + + + +
+Classes  + +
+EnvironmentDigesterConfig +
+EnvironmentStringDigesterConfig +
+SimpleDigesterConfig +
+SimpleStringDigesterConfig
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/package-summary.html new file mode 100644 index 00000000..7554d278 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/package-summary.html @@ -0,0 +1,202 @@ + + + + + + + +org.jasypt.digest.config (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.digest.config +

+ + + + + + + + + + + + + +
+Interface Summary
DigesterConfig + Common interface for config classes applicable to + StandardByteDigester, + StandardStringDigester, + PooledByteDigester or + PooledStringDigester + objects.
StringDigesterConfig + Common interface for config classes applicable to + StandardStringDigester objects.
+  + +

+ + + + + + + + + + + + + + + + + + + + + +
+Class Summary
EnvironmentDigesterConfig + Implementation for DigesterConfig which can retrieve configuration + values from environment variables or system properties.
EnvironmentStringDigesterConfig + Implementation for StringDigesterConfig which can retrieve configuration + values from environment variables or system properties.
SimpleDigesterConfig + Bean implementation for DigesterConfig.
SimpleStringDigesterConfig + Bean implementation for StringDigesterConfig.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/package-tree.html new file mode 100644 index 00000000..5c72f624 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/package-tree.html @@ -0,0 +1,168 @@ + + + + + + + +org.jasypt.digest.config Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.digest.config +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/package-use.html new file mode 100644 index 00000000..8b8576e9 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/config/package-use.html @@ -0,0 +1,250 @@ + + + + + + + +Uses of Package org.jasypt.digest.config (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.digest.config

+
+ + + + + + + + + + + + + + + + + +
+Packages that use org.jasypt.digest.config
org.jasypt.digest  
org.jasypt.digest.config  
org.jasypt.util.password  
+  +

+ + + + + + + + +
+Classes in org.jasypt.digest.config used by org.jasypt.digest
DigesterConfig + +
+           + Common interface for config classes applicable to + StandardByteDigester, + StandardStringDigester, + PooledByteDigester or + PooledStringDigester + objects.
+  +

+ + + + + + + + + + + + + + + + + +
+Classes in org.jasypt.digest.config used by org.jasypt.digest.config
DigesterConfig + +
+           + Common interface for config classes applicable to + StandardByteDigester, + StandardStringDigester, + PooledByteDigester or + PooledStringDigester + objects.
EnvironmentDigesterConfig + +
+           + Implementation for DigesterConfig which can retrieve configuration + values from environment variables or system properties.
SimpleDigesterConfig + +
+           + Bean implementation for DigesterConfig.
StringDigesterConfig + +
+           + Common interface for config classes applicable to + StandardStringDigester objects.
+  +

+ + + + + + + + +
+Classes in org.jasypt.digest.config used by org.jasypt.util.password
DigesterConfig + +
+           + Common interface for config classes applicable to + StandardByteDigester, + StandardStringDigester, + PooledByteDigester or + PooledStringDigester + objects.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/package-frame.html new file mode 100644 index 00000000..506bc832 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/package-frame.html @@ -0,0 +1,52 @@ + + + + + + + +org.jasypt.digest (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.digest + + + + +
+Interfaces  + +
+ByteDigester +
+StringDigester
+ + + + + + +
+Classes  + +
+PooledByteDigester +
+PooledStringDigester +
+StandardByteDigester +
+StandardStringDigester
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/package-summary.html new file mode 100644 index 00000000..89bb62c5 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/package-summary.html @@ -0,0 +1,200 @@ + + + + + + + +org.jasypt.digest (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.digest +

+ + + + + + + + + + + + + +
+Interface Summary
ByteDigester + Common interface for all digesters which receive a byte array message and + return a byte array digest.
StringDigester + Common interface for all digesters which receive a String message and + return a String digest.
+  + +

+ + + + + + + + + + + + + + + + + + + + + +
+Class Summary
PooledByteDigester + Pooled implementation of ByteDigester that in fact contains + an array of StandardByteDigester objects which are used + to attend digest and match requests in round-robin.
PooledStringDigester + Pooled implementation of StringDigester that in fact contains + an array of StandardStringDigester objects which are used + to attend digest and match requests in round-robin.
StandardByteDigester + Standard implementation of the ByteDigester interface.
StandardStringDigester + Standard implementation of the StringDigester interface.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/package-tree.html new file mode 100644 index 00000000..6c138208 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/package-tree.html @@ -0,0 +1,163 @@ + + + + + + + +org.jasypt.digest Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.digest +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/package-use.html new file mode 100644 index 00000000..5c68c6e2 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/digest/package-use.html @@ -0,0 +1,181 @@ + + + + + + + +Uses of Package org.jasypt.digest (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.digest

+
+ + + + + + + + + +
+Packages that use org.jasypt.digest
org.jasypt.digest  
+  +

+ + + + + + + + + + + +
+Classes in org.jasypt.digest used by org.jasypt.digest
ByteDigester + +
+           + Common interface for all digesters which receive a byte array message and + return a byte array digest.
StringDigester + +
+           + Common interface for all digesters which receive a String message and + return a String digest.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/BigDecimalEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/BigDecimalEncryptor.html new file mode 100644 index 00000000..964354c5 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/BigDecimalEncryptor.html @@ -0,0 +1,259 @@ + + + + + + + +BigDecimalEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption +
+Interface BigDecimalEncryptor

+
+
All Known Subinterfaces:
PBEBigDecimalCleanablePasswordEncryptor, PBEBigDecimalEncryptor
+
+
+
All Known Implementing Classes:
PooledPBEBigDecimalEncryptor, StandardPBEBigDecimalEncryptor
+
+
+
+
public interface BigDecimalEncryptor
+ + +

+

+ Common interface for all Encryptors which receive a + BigDecimal (arbitrary precision) message and return a BigDecimal result. +

+

+ Important: The size of the result of encrypting a number, depending + on the algorithm, may be much bigger (in bytes) than the size of the + encrypted number itself. For example, encrypting a 4-byte integer can + result in an encrypted 16-byte number. This can lead the user into + problems if the encrypted values are to be stored and not enough room + has been provided. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + +
+Method Summary
+ java.math.BigDecimaldecrypt(java.math.BigDecimal encryptedMessage) + +
+          Decrypt an encrypted message
+ java.math.BigDecimalencrypt(java.math.BigDecimal message) + +
+          Encrypt the input message
+  +

+ + + + + + + + +
+Method Detail
+ +

+encrypt

+
+java.math.BigDecimal encrypt(java.math.BigDecimal message)
+
+
Encrypt the input message +

+

+
Parameters:
message - the message to be encrypted +
Returns:
the result of encryption
+
+
+
+ +

+decrypt

+
+java.math.BigDecimal decrypt(java.math.BigDecimal encryptedMessage)
+
+
Decrypt an encrypted message +

+

+
Parameters:
encryptedMessage - the encrypted message to be decrypted +
Returns:
the result of decryption
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/BigIntegerEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/BigIntegerEncryptor.html new file mode 100644 index 00000000..8d059553 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/BigIntegerEncryptor.html @@ -0,0 +1,259 @@ + + + + + + + +BigIntegerEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption +
+Interface BigIntegerEncryptor

+
+
All Known Subinterfaces:
PBEBigIntegerCleanablePasswordEncryptor, PBEBigIntegerEncryptor
+
+
+
All Known Implementing Classes:
PooledPBEBigIntegerEncryptor, StandardPBEBigIntegerEncryptor
+
+
+
+
public interface BigIntegerEncryptor
+ + +

+

+ Common interface for all Encryptors which receive a + BigInteger (arbitrary precision) message and return a BigInteger result. +

+

+ Important: The size of the result of encrypting a number, depending + on the algorithm, may be much bigger (in bytes) than the size of the + encrypted number itself. For example, encrypting a 4-byte integer can + result in an encrypted 16-byte number. This can lead the user into + problems if the encrypted values are to be stored and not enough room + has been provided. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + +
+Method Summary
+ java.math.BigIntegerdecrypt(java.math.BigInteger encryptedMessage) + +
+          Decrypt an encrypted message
+ java.math.BigIntegerencrypt(java.math.BigInteger message) + +
+          Encrypt the input message
+  +

+ + + + + + + + +
+Method Detail
+ +

+encrypt

+
+java.math.BigInteger encrypt(java.math.BigInteger message)
+
+
Encrypt the input message +

+

+
Parameters:
message - the message to be encrypted +
Returns:
the result of encryption
+
+
+
+ +

+decrypt

+
+java.math.BigInteger decrypt(java.math.BigInteger encryptedMessage)
+
+
Decrypt an encrypted message +

+

+
Parameters:
encryptedMessage - the encrypted message to be decrypted +
Returns:
the result of decryption
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/ByteEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/ByteEncryptor.html new file mode 100644 index 00000000..6715a9d7 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/ByteEncryptor.html @@ -0,0 +1,251 @@ + + + + + + + +ByteEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption +
+Interface ByteEncryptor

+
+
All Known Subinterfaces:
PBEByteCleanablePasswordEncryptor, PBEByteEncryptor
+
+
+
All Known Implementing Classes:
PooledPBEByteEncryptor, StandardPBEByteEncryptor
+
+
+
+
public interface ByteEncryptor
+ + +

+

+ Common interface for all Encryptors which receive a + byte array message and return a byte array result. +

+

+ +

+

+
Since:
+
1.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + +
+Method Summary
+ byte[]decrypt(byte[] encryptedMessage) + +
+          Decrypt an encrypted message
+ byte[]encrypt(byte[] message) + +
+          Encrypt the input message
+  +

+ + + + + + + + +
+Method Detail
+ +

+encrypt

+
+byte[] encrypt(byte[] message)
+
+
Encrypt the input message +

+

+
Parameters:
message - the message to be encrypted +
Returns:
the result of encryption
+
+
+
+ +

+decrypt

+
+byte[] decrypt(byte[] encryptedMessage)
+
+
Decrypt an encrypted message +

+

+
Parameters:
encryptedMessage - the encrypted message to be decrypted +
Returns:
the result of decryption
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/StringEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/StringEncryptor.html new file mode 100644 index 00000000..699acd98 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/StringEncryptor.html @@ -0,0 +1,251 @@ + + + + + + + +StringEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption +
+Interface StringEncryptor

+
+
All Known Subinterfaces:
PBEStringCleanablePasswordEncryptor, PBEStringEncryptor
+
+
+
All Known Implementing Classes:
PooledPBEStringEncryptor, StandardPBEStringEncryptor
+
+
+
+
public interface StringEncryptor
+ + +

+

+ Common interface for all Encryptors which receive a + String message and return a String result. +

+

+ +

+

+
Since:
+
1.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + +
+Method Summary
+ Stringdecrypt(String encryptedMessage) + +
+          Decrypt an encrypted message
+ Stringencrypt(String message) + +
+          Encrypt the input message
+  +

+ + + + + + + + +
+Method Detail
+ +

+encrypt

+
+String encrypt(String message)
+
+
Encrypt the input message +

+

+
Parameters:
message - the message to be encrypted +
Returns:
the result of encryption
+
+
+
+ +

+decrypt

+
+String decrypt(String encryptedMessage)
+
+
Decrypt an encrypted message +

+

+
Parameters:
encryptedMessage - the encrypted message to be decrypted +
Returns:
the result of decryption
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/class-use/BigDecimalEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/class-use/BigDecimalEncryptor.html new file mode 100644 index 00000000..2d88b6c0 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/class-use/BigDecimalEncryptor.html @@ -0,0 +1,223 @@ + + + + + + + +Uses of Interface org.jasypt.encryption.BigDecimalEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.encryption.BigDecimalEncryptor

+
+ + + + + + + + + +
+Packages that use BigDecimalEncryptor
org.jasypt.encryption.pbe  
+  +

+ + + + + +
+Uses of BigDecimalEncryptor in org.jasypt.encryption.pbe
+  +

+ + + + + + + + + + + + + +
Subinterfaces of BigDecimalEncryptor in org.jasypt.encryption.pbe
+ interfacePBEBigDecimalCleanablePasswordEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + BigDecimal message and return a BigDecimal result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
+ interfacePBEBigDecimalEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + BigDecimal message and return a BigDecimal result.
+  +

+ + + + + + + + + + + + + +
Classes in org.jasypt.encryption.pbe that implement BigDecimalEncryptor
+ classPooledPBEBigDecimalEncryptor + +
+           + Pooled implementation of PBEBigDecimalEncryptor that in fact contains + an array of StandardPBEBigDecimalEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
+ classStandardPBEBigDecimalEncryptor + +
+           + Standard implementation of the PBEBigDecimalEncryptor interface.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/class-use/BigIntegerEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/class-use/BigIntegerEncryptor.html new file mode 100644 index 00000000..04495bb5 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/class-use/BigIntegerEncryptor.html @@ -0,0 +1,223 @@ + + + + + + + +Uses of Interface org.jasypt.encryption.BigIntegerEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.encryption.BigIntegerEncryptor

+
+ + + + + + + + + +
+Packages that use BigIntegerEncryptor
org.jasypt.encryption.pbe  
+  +

+ + + + + +
+Uses of BigIntegerEncryptor in org.jasypt.encryption.pbe
+  +

+ + + + + + + + + + + + + +
Subinterfaces of BigIntegerEncryptor in org.jasypt.encryption.pbe
+ interfacePBEBigIntegerCleanablePasswordEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a BigInteger + message and return a BigInteger result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
+ interfacePBEBigIntegerEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a BigInteger + message and return a BigInteger result.
+  +

+ + + + + + + + + + + + + +
Classes in org.jasypt.encryption.pbe that implement BigIntegerEncryptor
+ classPooledPBEBigIntegerEncryptor + +
+           + Pooled implementation of PBEBigIntegerEncryptor that in fact contains + an array of StandardPBEBigIntegerEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
+ classStandardPBEBigIntegerEncryptor + +
+           + Standard implementation of the PBEBigIntegerEncryptor interface.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/class-use/ByteEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/class-use/ByteEncryptor.html new file mode 100644 index 00000000..d7220035 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/class-use/ByteEncryptor.html @@ -0,0 +1,223 @@ + + + + + + + +Uses of Interface org.jasypt.encryption.ByteEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.encryption.ByteEncryptor

+
+ + + + + + + + + +
+Packages that use ByteEncryptor
org.jasypt.encryption.pbe  
+  +

+ + + + + +
+Uses of ByteEncryptor in org.jasypt.encryption.pbe
+  +

+ + + + + + + + + + + + + +
Subinterfaces of ByteEncryptor in org.jasypt.encryption.pbe
+ interfacePBEByteCleanablePasswordEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + byte array message and return a byte array result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
+ interfacePBEByteEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + byte array message and return a byte array result.
+  +

+ + + + + + + + + + + + + +
Classes in org.jasypt.encryption.pbe that implement ByteEncryptor
+ classPooledPBEByteEncryptor + +
+           + Pooled implementation of PBEByteEncryptor that in fact contains + an array of StandardPBEByteEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
+ classStandardPBEByteEncryptor + +
+           + Standard implementation of the PBEByteEncryptor interface.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/class-use/StringEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/class-use/StringEncryptor.html new file mode 100644 index 00000000..33d170f2 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/class-use/StringEncryptor.html @@ -0,0 +1,288 @@ + + + + + + + +Uses of Interface org.jasypt.encryption.StringEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.encryption.StringEncryptor

+
+ + + + + + + + + + + + + +
+Packages that use StringEncryptor
org.jasypt.encryption.pbe  
org.jasypt.properties  
+  +

+ + + + + +
+Uses of StringEncryptor in org.jasypt.encryption.pbe
+  +

+ + + + + + + + + + + + + +
Subinterfaces of StringEncryptor in org.jasypt.encryption.pbe
+ interfacePBEStringCleanablePasswordEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + String message and return a String result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
+ interfacePBEStringEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + String message and return a String result.
+  +

+ + + + + + + + + + + + + +
Classes in org.jasypt.encryption.pbe that implement StringEncryptor
+ classPooledPBEStringEncryptor + +
+           + Pooled implementation of PBEStringEncryptor that in fact contains + an array of StandardPBEStringEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
+ classStandardPBEStringEncryptor + +
+           + Standard implementation of the PBEStringEncryptor interface.
+  +

+ + + + + +
+Uses of StringEncryptor in org.jasypt.properties
+  +

+ + + + + + + + + + + + + +
Methods in org.jasypt.properties with parameters of type StringEncryptor
+static StringPropertyValueEncryptionUtils.decrypt(String encodedValue, + StringEncryptor encryptor) + +
+           
+static StringPropertyValueEncryptionUtils.encrypt(String decodedValue, + StringEncryptor encryptor) + +
+           
+  +

+ + + + + + + + + + + +
Constructors in org.jasypt.properties with parameters of type StringEncryptor
EncryptableProperties(java.util.Properties defaults, + StringEncryptor stringEncryptor) + +
+           + Creates an EncryptableProperties instance which will use + the passed StringEncryptor object to decrypt encrypted values, + and the passed defaults as default values (may contain encrypted values).
EncryptableProperties(StringEncryptor stringEncryptor) + +
+           + Creates an EncryptableProperties instance which will use + the passed StringEncryptor object to decrypt encrypted values.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/package-frame.html new file mode 100644 index 00000000..e4958f66 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/package-frame.html @@ -0,0 +1,39 @@ + + + + + + + +org.jasypt.encryption (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.encryption + + + + +
+Interfaces  + +
+BigDecimalEncryptor +
+BigIntegerEncryptor +
+ByteEncryptor +
+StringEncryptor
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/package-summary.html new file mode 100644 index 00000000..e983dd3c --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/package-summary.html @@ -0,0 +1,178 @@ + + + + + + + +org.jasypt.encryption (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.encryption +

+ + + + + + + + + + + + + + + + + + + + + +
+Interface Summary
BigDecimalEncryptor + Common interface for all Encryptors which receive a + BigDecimal (arbitrary precision) message and return a BigDecimal result.
BigIntegerEncryptor + Common interface for all Encryptors which receive a + BigInteger (arbitrary precision) message and return a BigInteger result.
ByteEncryptor + Common interface for all Encryptors which receive a + byte array message and return a byte array result.
StringEncryptor + Common interface for all Encryptors which receive a + String message and return a String result.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/package-tree.html new file mode 100644 index 00000000..44ec6a02 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/package-tree.html @@ -0,0 +1,152 @@ + + + + + + + +org.jasypt.encryption Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.encryption +

+
+
+
Package Hierarchies:
All Packages
+
+

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/package-use.html new file mode 100644 index 00000000..ce8c0eb8 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/package-use.html @@ -0,0 +1,218 @@ + + + + + + + +Uses of Package org.jasypt.encryption (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.encryption

+
+ + + + + + + + + + + + + +
+Packages that use org.jasypt.encryption
org.jasypt.encryption.pbe  
org.jasypt.properties  
+  +

+ + + + + + + + + + + + + + + + + +
+Classes in org.jasypt.encryption used by org.jasypt.encryption.pbe
BigDecimalEncryptor + +
+           + Common interface for all Encryptors which receive a + BigDecimal (arbitrary precision) message and return a BigDecimal result.
BigIntegerEncryptor + +
+           + Common interface for all Encryptors which receive a + BigInteger (arbitrary precision) message and return a BigInteger result.
ByteEncryptor + +
+           + Common interface for all Encryptors which receive a + byte array message and return a byte array result.
StringEncryptor + +
+           + Common interface for all Encryptors which receive a + String message and return a String result.
+  +

+ + + + + + + + +
+Classes in org.jasypt.encryption used by org.jasypt.properties
StringEncryptor + +
+           + Common interface for all Encryptors which receive a + String message and return a String result.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/CleanablePasswordBased.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/CleanablePasswordBased.html new file mode 100644 index 00000000..ef470477 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/CleanablePasswordBased.html @@ -0,0 +1,249 @@ + + + + + + + +CleanablePasswordBased (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe +
+Interface CleanablePasswordBased

+
+
All Superinterfaces:
PasswordBased
+
+
+
All Known Subinterfaces:
PBEBigDecimalCleanablePasswordEncryptor, PBEBigIntegerCleanablePasswordEncryptor, PBEByteCleanablePasswordEncryptor, PBEStringCleanablePasswordEncryptor
+
+
+
All Known Implementing Classes:
PooledPBEBigDecimalEncryptor, PooledPBEBigIntegerEncryptor, PooledPBEByteEncryptor, PooledPBEStringEncryptor, StandardPBEBigDecimalEncryptor, StandardPBEBigIntegerEncryptor, StandardPBEByteEncryptor, StandardPBEStringEncryptor
+
+
+
+
public interface CleanablePasswordBased
extends PasswordBased
+ + +

+

+ Common interface for all entities which can be set a password in char[] shape, + which can be cleaned once the encryptor is initialized so that no immutable + Strings containing the password are left in memory. +

+

+ +

+

+
Since:
+
1.8
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + +
+Method Summary
+ voidsetPasswordCharArray(char[] password) + +
+           + Sets a password to be used by the encryptor, as a (cleanable) char[].
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.pbe.PasswordBased
setPassword
+  +

+ + + + + + + + +
+Method Detail
+ +

+setPasswordCharArray

+
+void setPasswordCharArray(char[] password)
+
+

+ Sets a password to be used by the encryptor, as a (cleanable) char[]. +

+

+

+
+
+
+
Parameters:
password - the password to be used.
Since:
+
1.8
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEBigDecimalCleanablePasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEBigDecimalCleanablePasswordEncryptor.html new file mode 100644 index 00000000..27474101 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEBigDecimalCleanablePasswordEncryptor.html @@ -0,0 +1,238 @@ + + + + + + + +PBEBigDecimalCleanablePasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe +
+Interface PBEBigDecimalCleanablePasswordEncryptor

+
+
All Superinterfaces:
BigDecimalEncryptor, CleanablePasswordBased, PasswordBased, PBEBigDecimalEncryptor
+
+
+
All Known Implementing Classes:
PooledPBEBigDecimalEncryptor, StandardPBEBigDecimalEncryptor
+
+
+
+
public interface PBEBigDecimalCleanablePasswordEncryptor
extends PBEBigDecimalEncryptor, CleanablePasswordBased
+ + +

+

+ Common interface for all Password Based Encryptors which receive a + BigDecimal message and return a BigDecimal result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings). +

+

+ Important: The size of the result of encrypting a number, depending + on the algorithm, may be much bigger (in bytes) than the size of the + encrypted number itself. For example, encrypting a 4-byte integer can + result in an encrypted 16-byte number. This can lead the user into + problems if the encrypted values are to be stored and not enough room + has been provided. +

+

+ For a default implementation, see StandardPBEBigDecimalEncryptor. +

+

+ +

+

+
Since:
+
1.8
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + +
+Method Summary
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.BigDecimalEncryptor
decrypt, encrypt
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.pbe.CleanablePasswordBased
setPasswordCharArray
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.pbe.PasswordBased
setPassword
+  +

+ +


+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEBigDecimalEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEBigDecimalEncryptor.html new file mode 100644 index 00000000..26dabebe --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEBigDecimalEncryptor.html @@ -0,0 +1,230 @@ + + + + + + + +PBEBigDecimalEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe +
+Interface PBEBigDecimalEncryptor

+
+
All Superinterfaces:
BigDecimalEncryptor, PasswordBased
+
+
+
All Known Subinterfaces:
PBEBigDecimalCleanablePasswordEncryptor
+
+
+
All Known Implementing Classes:
PooledPBEBigDecimalEncryptor, StandardPBEBigDecimalEncryptor
+
+
+
+
public interface PBEBigDecimalEncryptor
extends BigDecimalEncryptor, PasswordBased
+ + +

+

+ Common interface for all Password Based Encryptors which receive a + BigDecimal message and return a BigDecimal result. +

+

+ Important: The size of the result of encrypting a number, depending + on the algorithm, may be much bigger (in bytes) than the size of the + encrypted number itself. For example, encrypting a 4-byte integer can + result in an encrypted 16-byte number. This can lead the user into + problems if the encrypted values are to be stored and not enough room + has been provided. +

+

+ For a default implementation, see StandardPBEBigDecimalEncryptor. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + +
+Method Summary
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.BigDecimalEncryptor
decrypt, encrypt
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.pbe.PasswordBased
setPassword
+  +

+ +


+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEBigIntegerCleanablePasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEBigIntegerCleanablePasswordEncryptor.html new file mode 100644 index 00000000..9f3cf800 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEBigIntegerCleanablePasswordEncryptor.html @@ -0,0 +1,237 @@ + + + + + + + +PBEBigIntegerCleanablePasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe +
+Interface PBEBigIntegerCleanablePasswordEncryptor

+
+
All Superinterfaces:
BigIntegerEncryptor, CleanablePasswordBased, PasswordBased, PBEBigIntegerEncryptor
+
+
+
All Known Implementing Classes:
PooledPBEBigIntegerEncryptor, StandardPBEBigIntegerEncryptor
+
+
+
+
public interface PBEBigIntegerCleanablePasswordEncryptor
extends PBEBigIntegerEncryptor, CleanablePasswordBased
+ + +

+

+ Common interface for all Password Based Encryptors which receive a BigInteger + message and return a BigInteger result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings). +

+

+ Important: The size of the result of encrypting a number, depending + on the algorithm, may be much bigger (in bytes) than the size of the + encrypted number itself. For example, encrypting a 4-byte integer can result + in an encrypted 16-byte number. This can lead the user into problems if the + encrypted values are to be stored and not enough room has been provided. +

+

+ For a default implementation, see StandardPBEBigIntegerEncryptor. +

+

+ +

+

+
Since:
+
1.8
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + +
+Method Summary
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.BigIntegerEncryptor
decrypt, encrypt
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.pbe.CleanablePasswordBased
setPasswordCharArray
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.pbe.PasswordBased
setPassword
+  +

+ +


+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEBigIntegerEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEBigIntegerEncryptor.html new file mode 100644 index 00000000..42deae60 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEBigIntegerEncryptor.html @@ -0,0 +1,229 @@ + + + + + + + +PBEBigIntegerEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe +
+Interface PBEBigIntegerEncryptor

+
+
All Superinterfaces:
BigIntegerEncryptor, PasswordBased
+
+
+
All Known Subinterfaces:
PBEBigIntegerCleanablePasswordEncryptor
+
+
+
All Known Implementing Classes:
PooledPBEBigIntegerEncryptor, StandardPBEBigIntegerEncryptor
+
+
+
+
public interface PBEBigIntegerEncryptor
extends BigIntegerEncryptor, PasswordBased
+ + +

+

+ Common interface for all Password Based Encryptors which receive a BigInteger + message and return a BigInteger result. +

+

+ Important: The size of the result of encrypting a number, depending + on the algorithm, may be much bigger (in bytes) than the size of the + encrypted number itself. For example, encrypting a 4-byte integer can result + in an encrypted 16-byte number. This can lead the user into problems if the + encrypted values are to be stored and not enough room has been provided. +

+

+ For a default implementation, see StandardPBEBigIntegerEncryptor. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + +
+Method Summary
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.BigIntegerEncryptor
decrypt, encrypt
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.pbe.PasswordBased
setPassword
+  +

+ +


+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEByteCleanablePasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEByteCleanablePasswordEncryptor.html new file mode 100644 index 00000000..2d33fc39 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEByteCleanablePasswordEncryptor.html @@ -0,0 +1,230 @@ + + + + + + + +PBEByteCleanablePasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe +
+Interface PBEByteCleanablePasswordEncryptor

+
+
All Superinterfaces:
ByteEncryptor, CleanablePasswordBased, PasswordBased, PBEByteEncryptor
+
+
+
All Known Implementing Classes:
PooledPBEByteEncryptor, StandardPBEByteEncryptor
+
+
+
+
public interface PBEByteCleanablePasswordEncryptor
extends PBEByteEncryptor, CleanablePasswordBased
+ + +

+

+ Common interface for all Password Based Encryptors which receive a + byte array message and return a byte array result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings). +

+

+ For a default implementation, see StandardPBEByteEncryptor. +

+

+ +

+

+
Since:
+
1.8
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + +
+Method Summary
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.ByteEncryptor
decrypt, encrypt
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.pbe.CleanablePasswordBased
setPasswordCharArray
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.pbe.PasswordBased
setPassword
+  +

+ +


+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEByteEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEByteEncryptor.html new file mode 100644 index 00000000..e608e7dd --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEByteEncryptor.html @@ -0,0 +1,222 @@ + + + + + + + +PBEByteEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe +
+Interface PBEByteEncryptor

+
+
All Superinterfaces:
ByteEncryptor, PasswordBased
+
+
+
All Known Subinterfaces:
PBEByteCleanablePasswordEncryptor
+
+
+
All Known Implementing Classes:
PooledPBEByteEncryptor, StandardPBEByteEncryptor
+
+
+
+
public interface PBEByteEncryptor
extends ByteEncryptor, PasswordBased
+ + +

+

+ Common interface for all Password Based Encryptors which receive a + byte array message and return a byte array result. +

+

+ For a default implementation, see StandardPBEByteEncryptor. +

+

+ +

+

+
Since:
+
1.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + +
+Method Summary
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.ByteEncryptor
decrypt, encrypt
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.pbe.PasswordBased
setPassword
+  +

+ +


+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEStringCleanablePasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEStringCleanablePasswordEncryptor.html new file mode 100644 index 00000000..cbcf6098 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEStringCleanablePasswordEncryptor.html @@ -0,0 +1,229 @@ + + + + + + + +PBEStringCleanablePasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe +
+Interface PBEStringCleanablePasswordEncryptor

+
+
All Superinterfaces:
CleanablePasswordBased, PasswordBased, PBEStringEncryptor, StringEncryptor
+
+
+
All Known Implementing Classes:
PooledPBEStringEncryptor, StandardPBEStringEncryptor
+
+
+
+
public interface PBEStringCleanablePasswordEncryptor
extends PBEStringEncryptor, CleanablePasswordBased
+ + +

+

+ Common interface for all Password Based Encryptors which receive a + String message and return a String result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings). +

+ For a default implementation, see StandardPBEStringEncryptor. +

+

+ +

+

+
Since:
+
1.8
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + +
+Method Summary
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.StringEncryptor
decrypt, encrypt
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.pbe.CleanablePasswordBased
setPasswordCharArray
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.pbe.PasswordBased
setPassword
+  +

+ +


+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEStringEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEStringEncryptor.html new file mode 100644 index 00000000..1b68872f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PBEStringEncryptor.html @@ -0,0 +1,222 @@ + + + + + + + +PBEStringEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe +
+Interface PBEStringEncryptor

+
+
All Superinterfaces:
PasswordBased, StringEncryptor
+
+
+
All Known Subinterfaces:
PBEStringCleanablePasswordEncryptor
+
+
+
All Known Implementing Classes:
PooledPBEStringEncryptor, StandardPBEStringEncryptor
+
+
+
+
public interface PBEStringEncryptor
extends StringEncryptor, PasswordBased
+ + +

+

+ Common interface for all Password Based Encryptors which receive a + String message and return a String result. +

+

+ For a default implementation, see StandardPBEStringEncryptor. +

+

+ +

+

+
Since:
+
1.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + +
+Method Summary
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.StringEncryptor
decrypt, encrypt
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.pbe.PasswordBased
setPassword
+  +

+ +


+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PasswordBased.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PasswordBased.html new file mode 100644 index 00000000..6a5e5a61 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PasswordBased.html @@ -0,0 +1,230 @@ + + + + + + + +PasswordBased (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe +
+Interface PasswordBased

+
+
All Known Subinterfaces:
CleanablePasswordBased, PBEBigDecimalCleanablePasswordEncryptor, PBEBigDecimalEncryptor, PBEBigIntegerCleanablePasswordEncryptor, PBEBigIntegerEncryptor, PBEByteCleanablePasswordEncryptor, PBEByteEncryptor, PBEStringCleanablePasswordEncryptor, PBEStringEncryptor
+
+
+
All Known Implementing Classes:
PooledPBEBigDecimalEncryptor, PooledPBEBigIntegerEncryptor, PooledPBEByteEncryptor, PooledPBEStringEncryptor, StandardPBEBigDecimalEncryptor, StandardPBEBigIntegerEncryptor, StandardPBEByteEncryptor, StandardPBEStringEncryptor
+
+
+
+
public interface PasswordBased
+ + +

+

+ Common interface for all entities which can be set a password. +

+

+ +

+

+
Since:
+
1.3
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + +
+Method Summary
+ voidsetPassword(String password) + +
+           + Sets a password to be used by the encryptor.
+  +

+ + + + + + + + +
+Method Detail
+ +

+setPassword

+
+void setPassword(String password)
+
+

+ Sets a password to be used by the encryptor. +

+

+

+
Parameters:
password - the password to be used.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PooledPBEBigDecimalEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PooledPBEBigDecimalEncryptor.html new file mode 100644 index 00000000..633208f0 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PooledPBEBigDecimalEncryptor.html @@ -0,0 +1,805 @@ + + + + + + + +PooledPBEBigDecimalEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe +
+Class PooledPBEBigDecimalEncryptor

+
+Object
+  extended by org.jasypt.encryption.pbe.PooledPBEBigDecimalEncryptor
+
+
+
All Implemented Interfaces:
BigDecimalEncryptor, CleanablePasswordBased, PasswordBased, PBEBigDecimalCleanablePasswordEncryptor, PBEBigDecimalEncryptor
+
+
+
+
public final class PooledPBEBigDecimalEncryptor
extends Object
implements PBEBigDecimalCleanablePasswordEncryptor
+ + +

+

+ Pooled implementation of PBEBigDecimalEncryptor that in fact contains + an array of StandardPBEBigDecimalEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin. This should + result in higher performance in multiprocessor systems. +

+

+ Configuration of this class is equivalent to that of + StandardPBEBigDecimalEncryptor. +

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.7
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
PooledPBEBigDecimalEncryptor() + +
+          Creates a new instance of PooledStandardPBEBigDecimalEncryptor.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.math.BigDecimaldecrypt(java.math.BigDecimal encryptedMessage) + +
+           + Decrypts a message using the specified configuration.
+ java.math.BigDecimalencrypt(java.math.BigDecimal message) + +
+           + Encrypts a message using the specified configuration.
+ voidinitialize() + +
+           + Initialize the encryptor.
+ booleanisInitialized() + +
+           + Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens:
+ voidsetAlgorithm(String algorithm) + +
+           + Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES.
+ voidsetConfig(PBEConfig config) + +
+           + Sets a PBEConfig object + for the encryptor.
+ voidsetKeyObtentionIterations(int keyObtentionIterations) + +
+           + Set the number of hashing iterations applied to obtain the + encryption key.
+ voidsetPassword(String password) + +
+           + Sets the password to be used.
+ voidsetPasswordCharArray(char[] password) + +
+           + Sets the password to be used, as a char[].
+ voidsetPoolSize(int poolSize) + +
+           + Sets the size of the pool of digesters to be created.
+ voidsetProvider(java.security.Provider provider) + +
+           + Sets the security provider to be asked for the encryption algorithm.
+ voidsetProviderName(String providerName) + +
+           + Sets the name of the security provider to be asked for the + encryption algorithm.
+ voidsetSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+PooledPBEBigDecimalEncryptor

+
+public PooledPBEBigDecimalEncryptor()
+
+
Creates a new instance of PooledStandardPBEBigDecimalEncryptor. +

+

+ + + + + + + + +
+Method Detail
+ +

+setConfig

+
+public void setConfig(PBEConfig config)
+
+

+ Sets a PBEConfig object + for the encryptor. If this config + object is set, it will be asked values for: +

+ +
    +
  • Algorithm
  • +
  • Security Provider (or provider name)
  • +
  • Password
  • +
  • Hashing iterations for obtaining the encryption key
  • +
  • Salt generator
  • +
  • Output type (base64, hexadecimal) + (only StringPBEConfig)
  • +
+ +

+ The non-null values it returns will override the default ones, + and will be overriden by any values specified with a setX + method. +

+

+

+
+
+
+
Parameters:
config - the PBEConfig object to be used as the + source for configuration parameters.
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+

+ Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES. +

+

+ This algorithm has to be supported by your JCE provider (if you specify + one, or the default JVM provider if you don't) and, if it is supported, + you can also specify mode and padding for + it, like ALGORITHM/MODE/PADDING. +

+

+

+
+
+
+
Parameters:
algorithm - the name of the algorithm to be used.
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+

+ Sets the password to be used. +

+

+ There is no default value for password, so not setting + this parameter either from a + PBEConfig object or from + a call to setPassword will result in an + EncryptionInitializationException being thrown during initialization. +

+

+

+
Specified by:
setPassword in interface PasswordBased
+
+
+
Parameters:
password - the password to be used.
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+

+ Sets the password to be used, as a char[]. +

+

+ This allows the password to be specified as a cleanable + char[] instead of a String, in extreme security conscious environments + in which no copy of the password as an immutable String should + be kept in memory. +

+

+ Important: the array specified as a parameter WILL BE COPIED + in order to be stored as encryptor configuration. The caller of + this method will therefore be responsible for its cleaning (jasypt + will only clean the internally stored copy). +

+

+ There is no default value for password, so not setting + this parameter either from a + PBEConfig object or from + a call to setPassword will result in an + EncryptionInitializationException being thrown during initialization. +

+

+

+
Specified by:
setPasswordCharArray in interface CleanablePasswordBased
+
+
+
Parameters:
password - the password to be used.
Since:
+
1.8
+
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(int keyObtentionIterations)
+
+

+ Set the number of hashing iterations applied to obtain the + encryption key. +

+

+ This mechanism is explained in + PKCS #5: Password-Based Cryptography Standard. +

+

+

+
+
+
+
Parameters:
keyObtentionIterations - the number of iterations
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(SaltGenerator saltGenerator)
+
+

+ Sets the salt generator to be used. If no salt generator is specified, + an instance of RandomSaltGenerator will be used. +

+

+

+
+
+
+
Parameters:
saltGenerator - the salt generator to be used.
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+

+ Sets the name of the security provider to be asked for the + encryption algorithm. This security provider has to be registered + beforehand at the JVM security framework. +

+

+ The provider can also be set with the setProvider(Provider) + method, in which case it will not be necessary neither registering + the provider beforehand, + nor calling this setProviderName(String) method to specify + a provider name. +

+

+ Note that a call to setProvider(Provider) overrides any value + set by this method. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
providerName - the name of the security provider to be asked + for the encryption algorithm.
+
+
+
+ +

+setProvider

+
+public void setProvider(java.security.Provider provider)
+
+

+ Sets the security provider to be asked for the encryption algorithm. + The provider does not have to be registered at the security + infrastructure beforehand, and its being used here will not result in + its being registered. +

+

+ If this method is called, calling setProviderName(String) + becomes unnecessary. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
provider - the provider to be asked for the chosen algorithm
+
+
+
+ +

+setPoolSize

+
+public void setPoolSize(int poolSize)
+
+

+ Sets the size of the pool of digesters to be created. +

+

+ This parameter is required. +

+

+

+
+
+
+
Parameters:
poolSize - size of the pool
+
+
+
+ +

+isInitialized

+
+public boolean isInitialized()
+
+

+ Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens: +

+
    +
  • When initialize is called.
  • +
  • When encrypt or decrypt are called for the + first time, if initialize has not been called before.
  • +
+

+ Once an encryptor has been initialized, trying to + change its configuration will + result in an AlreadyInitializedException being thrown. +

+

+

+
+
+
+ +
Returns:
true if the encryptor has already been initialized, false if + not.
+
+
+
+ +

+initialize

+
+public void initialize()
+
+

+ Initialize the encryptor. +

+

+ This operation will consist in determining the actual configuration + values to be used, and then initializing the encryptor with them. +
+ These values are decided by applying the following priorities: +

+
    +
  1. First, the default values are considered (except for password). +
  2. +
  3. Then, if a + PBEConfig + object has been set with + setConfig, the non-null values returned by its + getX methods override the default values.
  4. +
  5. Finally, if the corresponding setX method has been called + on the encryptor itself for any of the configuration parameters, + the values set by these calls override all of the above.
  6. +
+

+ Once an encryptor has been initialized, trying to + change its configuration will + result in an AlreadyInitializedException being thrown. +

+

+

+
+
+
+ +
Throws: +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+
+ +

+encrypt

+
+public java.math.BigDecimal encrypt(java.math.BigDecimal message)
+
+

+ Encrypts a message using the specified configuration. +

+

+ Important: The size of the result of encrypting a number, depending + on the algorithm, may be much bigger (in bytes) than the size of the + encrypted number itself. For example, encrypting a 4-byte integer can + result in an encrypted 16-byte number. This can lead the user into + problems if the encrypted values are to be stored and not enough room + has been provided. +

+

+ The mechanisms applied to perform the encryption operation are described + in PKCS #5: Password-Based Cryptography Standard. +

+

+ This encryptor uses a salt for each encryption + operation. The size of the salt depends on the algorithm + being used. This salt is used + for creating the encryption key and, if generated by a random generator, + it is also appended unencrypted at the beginning + of the results so that a decryption operation can be performed. +

+

+ If a random salt generator is used, two encryption results for + the same message will always be different + (except in the case of random salt coincidence). This may enforce + security by difficulting brute force attacks on sets of data at a time + and forcing attackers to perform a brute force attack on each separate + piece of encrypted data. +

+

+

+
Specified by:
encrypt in interface BigDecimalEncryptor
+
+
+
Parameters:
message - the BigDecimal message to be encrypted +
Returns:
the result of encryption +
Throws: +
EncryptionOperationNotPossibleException - if the encryption + operation fails, ommitting any further information about the + cause for security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+
+ +

+decrypt

+
+public java.math.BigDecimal decrypt(java.math.BigDecimal encryptedMessage)
+
+

+ Decrypts a message using the specified configuration. +

+

+ The mechanisms applied to perform the decryption operation are described + in PKCS #5: Password-Based Cryptography Standard. +

+

+ If a random salt generator is used, this decryption operation will + expect to find an unencrypted salt at the + beginning of the encrypted input, so that the decryption operation can be + correctly performed (there is no other way of knowing it). +

+

+

+
Specified by:
decrypt in interface BigDecimalEncryptor
+
+
+
Parameters:
encryptedMessage - the BigDecimal message to be decrypted +
Returns:
the result of decryption +
Throws: +
EncryptionOperationNotPossibleException - if the decryption + operation fails, ommitting any further information about the + cause for security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PooledPBEBigIntegerEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PooledPBEBigIntegerEncryptor.html new file mode 100644 index 00000000..a3456cd7 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PooledPBEBigIntegerEncryptor.html @@ -0,0 +1,805 @@ + + + + + + + +PooledPBEBigIntegerEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe +
+Class PooledPBEBigIntegerEncryptor

+
+Object
+  extended by org.jasypt.encryption.pbe.PooledPBEBigIntegerEncryptor
+
+
+
All Implemented Interfaces:
BigIntegerEncryptor, CleanablePasswordBased, PasswordBased, PBEBigIntegerCleanablePasswordEncryptor, PBEBigIntegerEncryptor
+
+
+
+
public final class PooledPBEBigIntegerEncryptor
extends Object
implements PBEBigIntegerCleanablePasswordEncryptor
+ + +

+

+ Pooled implementation of PBEBigIntegerEncryptor that in fact contains + an array of StandardPBEBigIntegerEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin. This should + result in higher performance in multiprocessor systems. +

+

+ Configuration of this class is equivalent to that of + StandardPBEBigIntegerEncryptor. +

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.7
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
PooledPBEBigIntegerEncryptor() + +
+          Creates a new instance of PooledStandardPBEBigIntegerEncryptor.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.math.BigIntegerdecrypt(java.math.BigInteger encryptedMessage) + +
+           + Decrypts a message using the specified configuration.
+ java.math.BigIntegerencrypt(java.math.BigInteger message) + +
+           + Encrypts a message using the specified configuration.
+ voidinitialize() + +
+           + Initialize the encryptor.
+ booleanisInitialized() + +
+           + Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens:
+ voidsetAlgorithm(String algorithm) + +
+           + Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES.
+ voidsetConfig(PBEConfig config) + +
+           + Sets a PBEConfig object + for the encryptor.
+ voidsetKeyObtentionIterations(int keyObtentionIterations) + +
+           + Set the number of hashing iterations applied to obtain the + encryption key.
+ voidsetPassword(String password) + +
+           + Sets the password to be used.
+ voidsetPasswordCharArray(char[] password) + +
+           + Sets the password to be used, as a char[].
+ voidsetPoolSize(int poolSize) + +
+           + Sets the size of the pool of digesters to be created.
+ voidsetProvider(java.security.Provider provider) + +
+           + Sets the security provider to be asked for the encryption algorithm.
+ voidsetProviderName(String providerName) + +
+           + Sets the name of the security provider to be asked for the + encryption algorithm.
+ voidsetSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+PooledPBEBigIntegerEncryptor

+
+public PooledPBEBigIntegerEncryptor()
+
+
Creates a new instance of PooledStandardPBEBigIntegerEncryptor. +

+

+ + + + + + + + +
+Method Detail
+ +

+setConfig

+
+public void setConfig(PBEConfig config)
+
+

+ Sets a PBEConfig object + for the encryptor. If this config + object is set, it will be asked values for: +

+ +
    +
  • Algorithm
  • +
  • Security Provider (or provider name)
  • +
  • Password
  • +
  • Hashing iterations for obtaining the encryption key
  • +
  • Salt generator
  • +
  • Output type (base64, hexadecimal) + (only StringPBEConfig)
  • +
+ +

+ The non-null values it returns will override the default ones, + and will be overriden by any values specified with a setX + method. +

+

+

+
+
+
+
Parameters:
config - the PBEConfig object to be used as the + source for configuration parameters.
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+

+ Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES. +

+

+ This algorithm has to be supported by your JCE provider (if you specify + one, or the default JVM provider if you don't) and, if it is supported, + you can also specify mode and padding for + it, like ALGORITHM/MODE/PADDING. +

+

+

+
+
+
+
Parameters:
algorithm - the name of the algorithm to be used.
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+

+ Sets the password to be used. +

+

+ There is no default value for password, so not setting + this parameter either from a + PBEConfig object or from + a call to setPassword will result in an + EncryptionInitializationException being thrown during initialization. +

+

+

+
Specified by:
setPassword in interface PasswordBased
+
+
+
Parameters:
password - the password to be used.
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+

+ Sets the password to be used, as a char[]. +

+

+ This allows the password to be specified as a cleanable + char[] instead of a String, in extreme security conscious environments + in which no copy of the password as an immutable String should + be kept in memory. +

+

+ Important: the array specified as a parameter WILL BE COPIED + in order to be stored as encryptor configuration. The caller of + this method will therefore be responsible for its cleaning (jasypt + will only clean the internally stored copy). +

+

+ There is no default value for password, so not setting + this parameter either from a + PBEConfig object or from + a call to setPassword will result in an + EncryptionInitializationException being thrown during initialization. +

+

+

+
Specified by:
setPasswordCharArray in interface CleanablePasswordBased
+
+
+
Parameters:
password - the password to be used.
Since:
+
1.8
+
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(int keyObtentionIterations)
+
+

+ Set the number of hashing iterations applied to obtain the + encryption key. +

+

+ This mechanism is explained in + PKCS #5: Password-Based Cryptography Standard. +

+

+

+
+
+
+
Parameters:
keyObtentionIterations - the number of iterations
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(SaltGenerator saltGenerator)
+
+

+ Sets the salt generator to be used. If no salt generator is specified, + an instance of RandomSaltGenerator will be used. +

+

+

+
+
+
+
Parameters:
saltGenerator - the salt generator to be used.
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+

+ Sets the name of the security provider to be asked for the + encryption algorithm. This security provider has to be registered + beforehand at the JVM security framework. +

+

+ The provider can also be set with the setProvider(Provider) + method, in which case it will not be necessary neither registering + the provider beforehand, + nor calling this setProviderName(String) method to specify + a provider name. +

+

+ Note that a call to setProvider(Provider) overrides any value + set by this method. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
providerName - the name of the security provider to be asked + for the encryption algorithm.
+
+
+
+ +

+setProvider

+
+public void setProvider(java.security.Provider provider)
+
+

+ Sets the security provider to be asked for the encryption algorithm. + The provider does not have to be registered at the security + infrastructure beforehand, and its being used here will not result in + its being registered. +

+

+ If this method is called, calling setProviderName(String) + becomes unnecessary. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
provider - the provider to be asked for the chosen algorithm
+
+
+
+ +

+setPoolSize

+
+public void setPoolSize(int poolSize)
+
+

+ Sets the size of the pool of digesters to be created. +

+

+ This parameter is required. +

+

+

+
+
+
+
Parameters:
poolSize - size of the pool
+
+
+
+ +

+isInitialized

+
+public boolean isInitialized()
+
+

+ Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens: +

+
    +
  • When initialize is called.
  • +
  • When encrypt or decrypt are called for the + first time, if initialize has not been called before.
  • +
+

+ Once an encryptor has been initialized, trying to + change its configuration will + result in an AlreadyInitializedException being thrown. +

+

+

+
+
+
+ +
Returns:
true if the encryptor has already been initialized, false if + not.
+
+
+
+ +

+initialize

+
+public void initialize()
+
+

+ Initialize the encryptor. +

+

+ This operation will consist in determining the actual configuration + values to be used, and then initializing the encryptor with them. +
+ These values are decided by applying the following priorities: +

+
    +
  1. First, the default values are considered (except for password). +
  2. +
  3. Then, if a + PBEConfig + object has been set with + setConfig, the non-null values returned by its + getX methods override the default values.
  4. +
  5. Finally, if the corresponding setX method has been called + on the encryptor itself for any of the configuration parameters, + the values set by these calls override all of the above.
  6. +
+

+ Once an encryptor has been initialized, trying to + change its configuration will + result in an AlreadyInitializedException being thrown. +

+

+

+
+
+
+ +
Throws: +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+
+ +

+encrypt

+
+public java.math.BigInteger encrypt(java.math.BigInteger message)
+
+

+ Encrypts a message using the specified configuration. +

+

+ Important: The size of the result of encrypting a number, depending + on the algorithm, may be much bigger (in bytes) than the size of the + encrypted number itself. For example, encrypting a 4-byte integer can + result in an encrypted 16-byte number. This can lead the user into + problems if the encrypted values are to be stored and not enough room + has been provided. +

+

+ The mechanisms applied to perform the encryption operation are described + in PKCS #5: Password-Based Cryptography Standard. +

+

+ This encryptor uses a salt for each encryption + operation. The size of the salt depends on the algorithm + being used. This salt is used + for creating the encryption key and, if generated by a random generator, + it is also appended unencrypted at the beginning + of the results so that a decryption operation can be performed. +

+

+ If a random salt generator is used, two encryption results for + the same message will always be different + (except in the case of random salt coincidence). This may enforce + security by difficulting brute force attacks on sets of data at a time + and forcing attackers to perform a brute force attack on each separate + piece of encrypted data. +

+

+

+
Specified by:
encrypt in interface BigIntegerEncryptor
+
+
+
Parameters:
message - the BigInteger message to be encrypted +
Returns:
the result of encryption +
Throws: +
EncryptionOperationNotPossibleException - if the encryption + operation fails, ommitting any further information about the + cause for security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+
+ +

+decrypt

+
+public java.math.BigInteger decrypt(java.math.BigInteger encryptedMessage)
+
+

+ Decrypts a message using the specified configuration. +

+

+ The mechanisms applied to perform the decryption operation are described + in PKCS #5: Password-Based Cryptography Standard. +

+

+ If a random salt generator is used, this decryption operation will + expect to find an unencrypted salt at the + beginning of the encrypted input, so that the decryption operation can be + correctly performed (there is no other way of knowing it). +

+

+

+
Specified by:
decrypt in interface BigIntegerEncryptor
+
+
+
Parameters:
encryptedMessage - the BigInteger message to be decrypted +
Returns:
the result of decryption +
Throws: +
EncryptionOperationNotPossibleException - if the decryption + operation fails, ommitting any further information about the + cause for security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PooledPBEByteEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PooledPBEByteEncryptor.html new file mode 100644 index 00000000..ac1a726b --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PooledPBEByteEncryptor.html @@ -0,0 +1,797 @@ + + + + + + + +PooledPBEByteEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe +
+Class PooledPBEByteEncryptor

+
+Object
+  extended by org.jasypt.encryption.pbe.PooledPBEByteEncryptor
+
+
+
All Implemented Interfaces:
ByteEncryptor, CleanablePasswordBased, PasswordBased, PBEByteCleanablePasswordEncryptor, PBEByteEncryptor
+
+
+
+
public final class PooledPBEByteEncryptor
extends Object
implements PBEByteCleanablePasswordEncryptor
+ + +

+

+ Pooled implementation of PBEByteEncryptor that in fact contains + an array of StandardPBEByteEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin. This should + result in higher performance in multiprocessor systems. +

+

+ Configuration of this class is equivalent to that of + StandardPBEByteEncryptor. +

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.7
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
PooledPBEByteEncryptor() + +
+          Creates a new instance of PooledStandardPBEByteEncryptor.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ byte[]decrypt(byte[] encryptedMessage) + +
+           + Decrypts a message using the specified configuration.
+ byte[]encrypt(byte[] message) + +
+           + Encrypts a message using the specified configuration.
+ voidinitialize() + +
+           + Initialize the encryptor.
+ booleanisInitialized() + +
+           + Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens:
+ voidsetAlgorithm(String algorithm) + +
+           + Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES.
+ voidsetConfig(PBEConfig config) + +
+           + Sets a PBEConfig object + for the encryptor.
+ voidsetKeyObtentionIterations(int keyObtentionIterations) + +
+           + Set the number of hashing iterations applied to obtain the + encryption key.
+ voidsetPassword(String password) + +
+           + Sets the password to be used.
+ voidsetPasswordCharArray(char[] password) + +
+           + Sets the password to be used, as a char[].
+ voidsetPoolSize(int poolSize) + +
+           + Sets the size of the pool of digesters to be created.
+ voidsetProvider(java.security.Provider provider) + +
+           + Sets the security provider to be asked for the encryption algorithm.
+ voidsetProviderName(String providerName) + +
+           + Sets the name of the security provider to be asked for the + encryption algorithm.
+ voidsetSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+PooledPBEByteEncryptor

+
+public PooledPBEByteEncryptor()
+
+
Creates a new instance of PooledStandardPBEByteEncryptor. +

+

+ + + + + + + + +
+Method Detail
+ +

+setConfig

+
+public void setConfig(PBEConfig config)
+
+

+ Sets a PBEConfig object + for the encryptor. If this config + object is set, it will be asked values for: +

+ +
    +
  • Algorithm
  • +
  • Security Provider (or provider name)
  • +
  • Password
  • +
  • Hashing iterations for obtaining the encryption key
  • +
  • Salt generator
  • +
+ +

+ The non-null values it returns will override the default ones, + and will be overriden by any values specified with a setX + method. +

+

+

+
+
+
+
Parameters:
config - the PBEConfig object to be used as the + source for configuration parameters.
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+

+ Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES. +

+

+ This algorithm has to be supported by your JCE provider (if you specify + one, or the default JVM provider if you don't) and, if it is supported, + you can also specify mode and padding for + it, like ALGORITHM/MODE/PADDING. +

+

+

+
+
+
+
Parameters:
algorithm - the name of the algorithm to be used.
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+

+ Sets the password to be used. +

+

+ There is no default value for password, so not setting + this parameter either from a + PBEConfig object or from + a call to setPassword will result in an + EncryptionInitializationException being thrown during initialization. +

+

+

+
Specified by:
setPassword in interface PasswordBased
+
+
+
Parameters:
password - the password to be used.
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+

+ Sets the password to be used, as a char[]. +

+

+ This allows the password to be specified as a cleanable + char[] instead of a String, in extreme security conscious environments + in which no copy of the password as an immutable String should + be kept in memory. +

+

+ Important: the array specified as a parameter WILL BE COPIED + in order to be stored as encryptor configuration. The caller of + this method will therefore be responsible for its cleaning (jasypt + will only clean the internally stored copy). +

+

+ There is no default value for password, so not setting + this parameter either from a + PBEConfig object or from + a call to setPassword will result in an + EncryptionInitializationException being thrown during initialization. +

+

+

+
Specified by:
setPasswordCharArray in interface CleanablePasswordBased
+
+
+
Parameters:
password - the password to be used.
Since:
+
1.8
+
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(int keyObtentionIterations)
+
+

+ Set the number of hashing iterations applied to obtain the + encryption key. +

+

+ This mechanism is explained in + PKCS #5: Password-Based Cryptography Standard. +

+

+

+
+
+
+
Parameters:
keyObtentionIterations - the number of iterations
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(SaltGenerator saltGenerator)
+
+

+ Sets the salt generator to be used. If no salt generator is specified, + an instance of RandomSaltGenerator will be used. +

+

+

+
+
+
+
Parameters:
saltGenerator - the salt generator to be used.
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+

+ Sets the name of the security provider to be asked for the + encryption algorithm. This security provider has to be registered + beforehand at the JVM security framework. +

+

+ The provider can also be set with the setProvider(Provider) + method, in which case it will not be necessary neither registering + the provider beforehand, + nor calling this setProviderName(String) method to specify + a provider name. +

+

+ Note that a call to setProvider(Provider) overrides any value + set by this method. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
providerName - the name of the security provider to be asked + for the encryption algorithm.
+
+
+
+ +

+setProvider

+
+public void setProvider(java.security.Provider provider)
+
+

+ Sets the security provider to be asked for the encryption algorithm. + The provider does not have to be registered at the security + infrastructure beforehand, and its being used here will not result in + its being registered. +

+

+ If this method is called, calling setProviderName(String) + becomes unnecessary. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
provider - the provider to be asked for the chosen algorithm
+
+
+
+ +

+setPoolSize

+
+public void setPoolSize(int poolSize)
+
+

+ Sets the size of the pool of digesters to be created. +

+

+ This parameter is required. +

+

+

+
+
+
+
Parameters:
poolSize - size of the pool
+
+
+
+ +

+isInitialized

+
+public boolean isInitialized()
+
+

+ Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens: +

+
    +
  • When initialize is called.
  • +
  • When encrypt or decrypt are called for the + first time, if initialize has not been called before.
  • +
+

+ Once an encryptor has been initialized, trying to + change its configuration will + result in an AlreadyInitializedException being thrown. +

+

+

+
+
+
+ +
Returns:
true if the encryptor has already been initialized, false if + not.
+
+
+
+ +

+initialize

+
+public void initialize()
+
+

+ Initialize the encryptor. +

+

+ This operation will consist in determining the actual configuration + values to be used, and then initializing the encryptor with them. +
+ These values are decided by applying the following priorities: +

+
    +
  1. First, the default values are considered (except for password). +
  2. +
  3. Then, if a + PBEConfig + object has been set with + setConfig, the non-null values returned by its + getX methods override the default values.
  4. +
  5. Finally, if the corresponding setX method has been called + on the encryptor itself for any of the configuration parameters, + the values set by these calls override all of the above.
  6. +
+

+ Once an encryptor has been initialized, trying to + change its configuration will + result in an AlreadyInitializedException being thrown. +

+

+

+
+
+
+ +
Throws: +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+
+ +

+encrypt

+
+public byte[] encrypt(byte[] message)
+               throws EncryptionOperationNotPossibleException
+
+

+ Encrypts a message using the specified configuration. +

+

+ The mechanisms applied to perform the encryption operation are described + in PKCS #5: Password-Based Cryptography Standard. +

+

+ This encryptor uses a salt for each encryption + operation. The size of the salt depends on the algorithm + being used. This salt is used + for creating the encryption key and, if generated by a random generator, + it is also appended unencrypted at the beginning + of the results so that a decryption operation can be performed. +

+

+ If a random salt generator is used, two encryption results for + the same message will always be different + (except in the case of random salt coincidence). This may enforce + security by difficulting brute force attacks on sets of data at a time + and forcing attackers to perform a brute force attack on each separate + piece of encrypted data. +

+

+

+
Specified by:
encrypt in interface ByteEncryptor
+
+
+
Parameters:
message - the byte array message to be encrypted +
Returns:
the result of encryption +
Throws: +
EncryptionOperationNotPossibleException - if the encryption + operation fails, ommitting any further information about the + cause for security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+
+ +

+decrypt

+
+public byte[] decrypt(byte[] encryptedMessage)
+               throws EncryptionOperationNotPossibleException
+
+

+ Decrypts a message using the specified configuration. +

+

+ The mechanisms applied to perform the decryption operation are described + in PKCS #5: Password-Based Cryptography Standard. +

+

+ If a random salt generator is used, this decryption operation will + expect to find an unencrypted salt at the + beginning of the encrypted input, so that the decryption operation can be + correctly performed (there is no other way of knowing it). +

+

+

+
Specified by:
decrypt in interface ByteEncryptor
+
+
+
Parameters:
encryptedMessage - the byte array message to be decrypted +
Returns:
the result of decryption +
Throws: +
EncryptionOperationNotPossibleException - if the decryption + operation fails, ommitting any further information about the + cause for security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PooledPBEStringEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PooledPBEStringEncryptor.html new file mode 100644 index 00000000..67b989c9 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/PooledPBEStringEncryptor.html @@ -0,0 +1,841 @@ + + + + + + + +PooledPBEStringEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe +
+Class PooledPBEStringEncryptor

+
+Object
+  extended by org.jasypt.encryption.pbe.PooledPBEStringEncryptor
+
+
+
All Implemented Interfaces:
CleanablePasswordBased, PasswordBased, PBEStringCleanablePasswordEncryptor, PBEStringEncryptor, StringEncryptor
+
+
+
+
public final class PooledPBEStringEncryptor
extends Object
implements PBEStringCleanablePasswordEncryptor
+ + +

+

+ Pooled implementation of PBEStringEncryptor that in fact contains + an array of StandardPBEStringEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin. This should + result in higher performance in multiprocessor systems. +

+

+ Configuration of this class is equivalent to that of + StandardPBEStringEncryptor. +

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.7
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
PooledPBEStringEncryptor() + +
+          Creates a new instance of PooledStandardPBEStringEncryptor.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Stringdecrypt(String encryptedMessage) + +
+           + Decrypts a message using the specified configuration.
+ Stringencrypt(String message) + +
+           + Encrypts a message using the specified configuration.
+ voidinitialize() + +
+           + Initialize the encryptor.
+ booleanisInitialized() + +
+           + Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens:
+ voidsetAlgorithm(String algorithm) + +
+           + Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES.
+ voidsetConfig(PBEConfig config) + +
+           + Sets a PBEConfig object + for the encryptor.
+ voidsetKeyObtentionIterations(int keyObtentionIterations) + +
+           + Set the number of hashing iterations applied to obtain the + encryption key.
+ voidsetPassword(String password) + +
+           + Sets the password to be used.
+ voidsetPasswordCharArray(char[] password) + +
+           + Sets the password to be used, as a char[].
+ voidsetPoolSize(int poolSize) + +
+           + Sets the size of the pool of digesters to be created.
+ voidsetProvider(java.security.Provider provider) + +
+           + Sets the security provider to be asked for the encryption algorithm.
+ voidsetProviderName(String providerName) + +
+           + Sets the name of the security provider to be asked for the + encryption algorithm.
+ voidsetSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+ voidsetStringOutputType(String stringOutputType) + +
+           + Sets the the form in which String output + will be encoded.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+PooledPBEStringEncryptor

+
+public PooledPBEStringEncryptor()
+
+
Creates a new instance of PooledStandardPBEStringEncryptor. +

+

+ + + + + + + + +
+Method Detail
+ +

+setConfig

+
+public void setConfig(PBEConfig config)
+
+

+ Sets a PBEConfig object + for the encryptor. If this config + object is set, it will be asked values for: +

+ +
    +
  • Algorithm
  • +
  • Security Provider (or provider name)
  • +
  • Password
  • +
  • Hashing iterations for obtaining the encryption key
  • +
  • Salt generator
  • +
  • Output type (base64, hexadecimal) + (only StringPBEConfig)
  • +
+ +

+ The non-null values it returns will override the default ones, + and will be overriden by any values specified with a setX + method. +

+

+

+
+
+
+
Parameters:
config - the PBEConfig object to be used as the + source for configuration parameters.
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+

+ Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES. +

+

+ This algorithm has to be supported by your JCE provider (if you specify + one, or the default JVM provider if you don't) and, if it is supported, + you can also specify mode and padding for + it, like ALGORITHM/MODE/PADDING. +

+

+

+
+
+
+
Parameters:
algorithm - the name of the algorithm to be used.
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+

+ Sets the password to be used. +

+

+ There is no default value for password, so not setting + this parameter either from a + PBEConfig object or from + a call to setPassword will result in an + EncryptionInitializationException being thrown during initialization. +

+

+

+
Specified by:
setPassword in interface PasswordBased
+
+
+
Parameters:
password - the password to be used.
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+

+ Sets the password to be used, as a char[]. +

+

+ This allows the password to be specified as a cleanable + char[] instead of a String, in extreme security conscious environments + in which no copy of the password as an immutable String should + be kept in memory. +

+

+ Important: the array specified as a parameter WILL BE COPIED + in order to be stored as encryptor configuration. The caller of + this method will therefore be responsible for its cleaning (jasypt + will only clean the internally stored copy). +

+

+ There is no default value for password, so not setting + this parameter either from a + PBEConfig object or from + a call to setPassword will result in an + EncryptionInitializationException being thrown during initialization. +

+

+

+
Specified by:
setPasswordCharArray in interface CleanablePasswordBased
+
+
+
Parameters:
password - the password to be used.
Since:
+
1.8
+
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(int keyObtentionIterations)
+
+

+ Set the number of hashing iterations applied to obtain the + encryption key. +

+

+ This mechanism is explained in + PKCS #5: Password-Based Cryptography Standard. +

+

+

+
+
+
+
Parameters:
keyObtentionIterations - the number of iterations
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(SaltGenerator saltGenerator)
+
+

+ Sets the salt generator to be used. If no salt generator is specified, + an instance of RandomSaltGenerator will be used. +

+

+

+
+
+
+
Parameters:
saltGenerator - the salt generator to be used.
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+

+ Sets the name of the security provider to be asked for the + encryption algorithm. This security provider has to be registered + beforehand at the JVM security framework. +

+

+ The provider can also be set with the setProvider(Provider) + method, in which case it will not be necessary neither registering + the provider beforehand, + nor calling this setProviderName(String) method to specify + a provider name. +

+

+ Note that a call to setProvider(Provider) overrides any value + set by this method. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
providerName - the name of the security provider to be asked + for the encryption algorithm.
+
+
+
+ +

+setProvider

+
+public void setProvider(java.security.Provider provider)
+
+

+ Sets the security provider to be asked for the encryption algorithm. + The provider does not have to be registered at the security + infrastructure beforehand, and its being used here will not result in + its being registered. +

+

+ If this method is called, calling setProviderName(String) + becomes unnecessary. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
provider - the provider to be asked for the chosen algorithm
+
+
+
+ +

+setStringOutputType

+
+public void setStringOutputType(String stringOutputType)
+
+

+ Sets the the form in which String output + will be encoded. Available encoding types are: +

+
    +
  • base64 (default)
  • +
  • hexadecimal
  • +
+

+ If not set, null will be returned. +

+

+

+
+
+
+
Parameters:
stringOutputType - the string output type.
+
+
+
+ +

+setPoolSize

+
+public void setPoolSize(int poolSize)
+
+

+ Sets the size of the pool of digesters to be created. +

+

+ This parameter is required. +

+

+

+
+
+
+
Parameters:
poolSize - size of the pool
+
+
+
+ +

+isInitialized

+
+public boolean isInitialized()
+
+

+ Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens: +

+
    +
  • When initialize is called.
  • +
  • When encrypt or decrypt are called for the + first time, if initialize has not been called before.
  • +
+

+ Once an encryptor has been initialized, trying to + change its configuration will + result in an AlreadyInitializedException being thrown. +

+

+

+
+
+
+ +
Returns:
true if the encryptor has already been initialized, false if + not.
+
+
+
+ +

+initialize

+
+public void initialize()
+
+

+ Initialize the encryptor. +

+

+ This operation will consist in determining the actual configuration + values to be used, and then initializing the encryptor with them. +
+ These values are decided by applying the following priorities: +

+
    +
  1. First, the default values are considered (except for password). +
  2. +
  3. Then, if a + PBEConfig + object has been set with + setConfig, the non-null values returned by its + getX methods override the default values.
  4. +
  5. Finally, if the corresponding setX method has been called + on the encryptor itself for any of the configuration parameters, + the values set by these calls override all of the above.
  6. +
+

+ Once an encryptor has been initialized, trying to + change its configuration will + result in an AlreadyInitializedException being thrown. +

+

+

+
+
+
+ +
Throws: +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+
+ +

+encrypt

+
+public String encrypt(String message)
+
+

+ Encrypts a message using the specified configuration. +

+

+ The Strings returned by this method are BASE64-encoded (default) or + HEXADECIMAL ASCII Strings. +

+

+ The mechanisms applied to perform the encryption operation are described + in PKCS #5: Password-Based Cryptography Standard. +

+

+ This encryptor uses a salt for each encryption + operation. The size of the salt depends on the algorithm + being used. This salt is used + for creating the encryption key and, if generated by a random generator, + it is also appended unencrypted at the beginning + of the results so that a decryption operation can be performed. +

+

+ If a random salt generator is used, two encryption results for + the same message will always be different + (except in the case of random salt coincidence). This may enforce + security by difficulting brute force attacks on sets of data at a time + and forcing attackers to perform a brute force attack on each separate + piece of encrypted data. +

+

+

+
Specified by:
encrypt in interface StringEncryptor
+
+
+
Parameters:
message - the String message to be encrypted +
Returns:
the result of encryption +
Throws: +
EncryptionOperationNotPossibleException - if the encryption + operation fails, ommitting any further information about the + cause for security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+
+ +

+decrypt

+
+public String decrypt(String encryptedMessage)
+
+

+ Decrypts a message using the specified configuration. +

+

+ This method expects to receive a BASE64-encoded (default) + or HEXADECIMAL ASCII String. +

+

+ The mechanisms applied to perform the decryption operation are described + in PKCS #5: Password-Based Cryptography Standard. +

+

+ If a random salt generator is used, this decryption operation will + expect to find an unencrypted salt at the + beginning of the encrypted input, so that the decryption operation can be + correctly performed (there is no other way of knowing it). +

+

+

+
Specified by:
decrypt in interface StringEncryptor
+
+
+
Parameters:
encryptedMessage - the String message to be decrypted +
Returns:
the result of decryption +
Throws: +
EncryptionOperationNotPossibleException - if the decryption + operation fails, ommitting any further information about the + cause for security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/StandardPBEBigDecimalEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/StandardPBEBigDecimalEncryptor.html new file mode 100644 index 00000000..d6708c4a --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/StandardPBEBigDecimalEncryptor.html @@ -0,0 +1,855 @@ + + + + + + + +StandardPBEBigDecimalEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe +
+Class StandardPBEBigDecimalEncryptor

+
+Object
+  extended by org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor
+
+
+
All Implemented Interfaces:
BigDecimalEncryptor, CleanablePasswordBased, PasswordBased, PBEBigDecimalCleanablePasswordEncryptor, PBEBigDecimalEncryptor
+
+
+
+
public final class StandardPBEBigDecimalEncryptor
extends Object
implements PBEBigDecimalCleanablePasswordEncryptor
+ + +

+

+ Standard implementation of the PBEBigDecimalEncryptor interface. + This class lets the user specify the algorithm (and provider) to be used for + encryption, the password to use, + the number of hashing iterations and the salt generator + that will be applied for obtaining + the encryption key. +

+

+ Important: The size of the result of encrypting a number, depending + on the algorithm, may be much bigger (in bytes) than the size of the + encrypted number itself. For example, encrypting a 4-byte integer can + result in an encrypted 16-byte number. This can lead the user into + problems if the encrypted values are to be stored and not enough room + has been provided. +

+

+ This class is thread-safe. +

+

+
Configuration +

+

+ The algorithm, provider, password, key-obtention iterations and salt generator can take + values in any of these ways: +

    +
  • Using its default values (except for password).
  • +
  • Setting a PBEConfig + object which provides new + configuration values.
  • +
  • Calling the corresponding setAlgorithm(...), + setProvider(...), setProviderName(...), + setPassword(...), setKeyObtentionIterations(...) or + setSaltGenerator(...) methods.
  • +
+ And the actual values to be used for initialization will be established + by applying the following priorities: +
    +
  1. First, the default values are considered (except for password).
  2. +
  3. Then, if a PBEConfig + object has been set with + setConfig(...), the non-null values returned by its + getX() methods override the default values.
  4. +
  5. Finally, if the corresponding setX(...) method has been called + on the encryptor itself for any of the configuration parameters, the + values set by these calls override all of the above.
  6. +
+

+ +

+
Initialization +

+

+ Before it is ready to encrypt, an object of this class has to be + initialized. Initialization happens: +

    +
  • When initialize() is called.
  • +
  • When encrypt(...) or decrypt(...) are called for the + first time, if initialize() has not been called before.
  • +
+ Once an encryptor has been initialized, trying to + change its configuration will + result in an AlreadyInitializedException being thrown. +

+ +

+
Usage +

+

+ An encryptor may be used for: +

    +
  • Encrypting messages, by calling the encrypt(...) method.
  • +
  • Decrypting messages, by calling the decrypt(...) method.
  • +
+ If a random salt generator is used, two encryption results for + the same message will always be different + (except in the case of random salt coincidence). This may enforce + security by difficulting brute force attacks on sets of data at a time + and forcing attackers to perform a brute force attack on each separate + piece of encrypted data. +

+

+ To learn more about the mechanisms involved in encryption, read + PKCS #5: Password-Based Cryptography Standard. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
StandardPBEBigDecimalEncryptor() + +
+          Creates a new instance of StandardPBEBigDecimalEncryptor.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.math.BigDecimaldecrypt(java.math.BigDecimal encryptedMessage) + +
+           + Decrypts a message using the specified configuration.
+ java.math.BigDecimalencrypt(java.math.BigDecimal message) + +
+           + Encrypts a message using the specified configuration.
+ voidinitialize() + +
+           + Initialize the encryptor.
+ booleanisInitialized() + +
+           + Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens:
+ voidsetAlgorithm(String algorithm) + +
+           + Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES.
+ voidsetConfig(PBEConfig config) + +
+           + Sets a PBEConfig object + for the encryptor.
+ voidsetKeyObtentionIterations(int keyObtentionIterations) + +
+           + Set the number of hashing iterations applied to obtain the + encryption key.
+ voidsetPassword(String password) + +
+           + Sets the password to be used.
+ voidsetPasswordCharArray(char[] password) + +
+           + Sets the password to be used, as a char[].
+ voidsetProvider(java.security.Provider provider) + +
+           + Sets the security provider to be asked for the encryption algorithm.
+ voidsetProviderName(String providerName) + +
+           + Sets the name of the security provider to be asked for the + encryption algorithm.
+ voidsetSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+StandardPBEBigDecimalEncryptor

+
+public StandardPBEBigDecimalEncryptor()
+
+
Creates a new instance of StandardPBEBigDecimalEncryptor. +

+

+ + + + + + + + +
+Method Detail
+ +

+setConfig

+
+public void setConfig(PBEConfig config)
+
+

+ Sets a PBEConfig object + for the encryptor. If this config + object is set, it will be asked values for: +

+ +
    +
  • Algorithm
  • +
  • Security Provider (or provider name)
  • +
  • Password
  • +
  • Hashing iterations for obtaining the encryption key
  • +
  • Salt generator
  • +
+ +

+ The non-null values it returns will override the default ones, + and will be overriden by any values specified with a setX + method. +

+

+

+
+
+
+
Parameters:
config - the PBEConfig object to be used as the + source for configuration parameters.
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+

+ Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES. +

+

+ This algorithm has to be supported by your JCE provider (if you specify + one, or the default JVM provider if you don't) and, if it is supported, + you can also specify mode and padding for + it, like ALGORITHM/MODE/PADDING. +

+

+

+
+
+
+
Parameters:
algorithm - the name of the algorithm to be used.
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+

+ Sets the password to be used. +

+

+ There is no default value for password, so not setting + this parameter either from a + PBEConfig object or from + a call to setPassword will result in an + EncryptionInitializationException being thrown during initialization. +

+

+

+
Specified by:
setPassword in interface PasswordBased
+
+
+
Parameters:
password - the password to be used.
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+

+ Sets the password to be used, as a char[]. +

+

+ This allows the password to be specified as a cleanable + char[] instead of a String, in extreme security conscious environments + in which no copy of the password as an immutable String should + be kept in memory. +

+

+ Important: the array specified as a parameter WILL BE COPIED + in order to be stored as encryptor configuration. The caller of + this method will therefore be responsible for its cleaning (jasypt + will only clean the internally stored copy). +

+

+ There is no default value for password, so not setting + this parameter either from a + PBEConfig object or from + a call to setPassword will result in an + EncryptionInitializationException being thrown during initialization. +

+

+

+
Specified by:
setPasswordCharArray in interface CleanablePasswordBased
+
+
+
Parameters:
password - the password to be used.
Since:
+
1.8
+
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(int keyObtentionIterations)
+
+

+ Set the number of hashing iterations applied to obtain the + encryption key. +

+

+ This mechanism is explained in + PKCS #5: Password-Based Cryptography Standard. +

+

+

+
+
+
+
Parameters:
keyObtentionIterations - the number of iterations
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(SaltGenerator saltGenerator)
+
+

+ Sets the salt generator to be used. If no salt generator is specified, + an instance of RandomSaltGenerator will be used. +

+

+

+
+
+
+
Parameters:
saltGenerator - the salt generator to be used.
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+

+ Sets the name of the security provider to be asked for the + encryption algorithm. This security provider has to be registered + beforehand at the JVM security framework. +

+

+ The provider can also be set with the setProvider(Provider) + method, in which case it will not be necessary neither registering + the provider beforehand, + nor calling this setProviderName(String) method to specify + a provider name. +

+

+ Note that a call to setProvider(Provider) overrides any value + set by this method. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
providerName - the name of the security provider to be asked + for the encryption algorithm.
Since:
+
1.3
+
+
+
+
+ +

+setProvider

+
+public void setProvider(java.security.Provider provider)
+
+

+ Sets the security provider to be asked for the encryption algorithm. + The provider does not have to be registered at the security + infrastructure beforehand, and its being used here will not result in + its being registered. +

+

+ If this method is called, calling setProviderName(String) + becomes unnecessary. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
provider - the provider to be asked for the chosen algorithm
Since:
+
1.3
+
+
+
+
+ +

+isInitialized

+
+public boolean isInitialized()
+
+

+ Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens: +

+
    +
  • When initialize is called.
  • +
  • When encrypt or decrypt are called for the + first time, if initialize has not been called before.
  • +
+

+ Once an encryptor has been initialized, trying to + change its configuration will + result in an AlreadyInitializedException being thrown. +

+

+

+
+
+
+ +
Returns:
true if the encryptor has already been initialized, false if + not.
+
+
+
+ +

+initialize

+
+public void initialize()
+
+

+ Initialize the encryptor. +

+

+ This operation will consist in determining the actual configuration + values to be used, and then initializing the encryptor with them. +
+ These values are decided by applying the following priorities: +

+
    +
  1. First, the default values are considered (except for password). +
  2. +
  3. Then, if a + PBEConfig + object has been set with + setConfig, the non-null values returned by its + getX methods override the default values.
  4. +
  5. Finally, if the corresponding setX method has been called + on the encryptor itself for any of the configuration parameters, + the values set by these calls override all of the above.
  6. +
+

+ Once an encryptor has been initialized, trying to + change its configuration will + result in an AlreadyInitializedException being thrown. +

+

+

+
+
+
+ +
Throws: +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+
+ +

+encrypt

+
+public java.math.BigDecimal encrypt(java.math.BigDecimal message)
+
+

+ Encrypts a message using the specified configuration. +

+

+ The resulting + BigDecimal will have the same scale as the original one (although the + total number of bytes will be higher). +

+

+ Important: The size of the result of encrypting a number, depending + on the algorithm, may be much bigger (in bytes) than the size of the + encrypted number itself. For example, encrypting a 4-byte integer can + result in an encrypted 16-byte number. This can lead the user into + problems if the encrypted values are to be stored and not enough room + has been provided. +

+

+ The mechanisms applied to perform the encryption operation are described + in PKCS #5: Password-Based Cryptography Standard. +

+

+ This encryptor uses a salt for each encryption + operation. The size of the salt depends on the algorithm + being used. This salt is used + for creating the encryption key and, if generated by a random generator, + it is also appended unencrypted at the beginning + of the results so that a decryption operation can be performed. +

+

+ If a random salt generator is used, two encryption results for + the same message will always be different + (except in the case of random salt coincidence). This may enforce + security by difficulting brute force attacks on sets of data at a time + and forcing attackers to perform a brute force attack on each separate + piece of encrypted data. +

+

+

+
Specified by:
encrypt in interface BigDecimalEncryptor
+
+
+
Parameters:
message - the BigDecimal message to be encrypted +
Returns:
the result of encryption +
Throws: +
EncryptionOperationNotPossibleException - if the encryption + operation fails, ommitting any further information about the + cause for security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+
+ +

+decrypt

+
+public java.math.BigDecimal decrypt(java.math.BigDecimal encryptedMessage)
+
+

+ Decrypts a message using the specified configuration. +

+

+ The mechanisms applied to perform the decryption operation are described + in PKCS #5: Password-Based Cryptography Standard. +

+

+ If a random salt generator is used, this decryption operation will + expect to find an unencrypted salt at the + beginning of the encrypted input, so that the decryption operation can be + correctly performed (there is no other way of knowing it). +

+

+

+
Specified by:
decrypt in interface BigDecimalEncryptor
+
+
+
Parameters:
encryptedMessage - the BigDecimal message to be decrypted +
Returns:
the result of decryption +
Throws: +
EncryptionOperationNotPossibleException - if the decryption + operation fails, ommitting any further information about the + cause for security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/StandardPBEBigIntegerEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/StandardPBEBigIntegerEncryptor.html new file mode 100644 index 00000000..bcdc5038 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/StandardPBEBigIntegerEncryptor.html @@ -0,0 +1,850 @@ + + + + + + + +StandardPBEBigIntegerEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe +
+Class StandardPBEBigIntegerEncryptor

+
+Object
+  extended by org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor
+
+
+
All Implemented Interfaces:
BigIntegerEncryptor, CleanablePasswordBased, PasswordBased, PBEBigIntegerCleanablePasswordEncryptor, PBEBigIntegerEncryptor
+
+
+
+
public final class StandardPBEBigIntegerEncryptor
extends Object
implements PBEBigIntegerCleanablePasswordEncryptor
+ + +

+

+ Standard implementation of the PBEBigIntegerEncryptor interface. + This class lets the user specify the algorithm (and provider) to be used for + encryption, the password to use, + the number of hashing iterations and the salt generator + that will be applied for obtaining + the encryption key. +

+

+ Important: The size of the result of encrypting a number, depending + on the algorithm, may be much bigger (in bytes) than the size of the + encrypted number itself. For example, encrypting a 4-byte integer can + result in an encrypted 16-byte number. This can lead the user into + problems if the encrypted values are to be stored and not enough room + has been provided. +

+

+ This class is thread-safe. +

+

+
Configuration +

+

+ The algorithm, provider, password, key-obtention iterations and salt generator can take + values in any of these ways: +

    +
  • Using its default values (except for password).
  • +
  • Setting a PBEConfig + object which provides new + configuration values.
  • +
  • Calling the corresponding setAlgorithm(...), + setProvider(...), setProviderName(...), + setPassword(...), setKeyObtentionIterations(...) or + setSaltGenerator(...) methods.
  • +
+ And the actual values to be used for initialization will be established + by applying the following priorities: +
    +
  1. First, the default values are considered (except for password).
  2. +
  3. Then, if a PBEConfig + object has been set with + setConfig(...), the non-null values returned by its + getX() methods override the default values.
  4. +
  5. Finally, if the corresponding setX(...) method has been called + on the encryptor itself for any of the configuration parameters, the + values set by these calls override all of the above.
  6. +
+

+ +

+
Initialization +

+

+ Before it is ready to encrypt, an object of this class has to be + initialized. Initialization happens: +

    +
  • When initialize() is called.
  • +
  • When encrypt(...) or decrypt(...) are called for the + first time, if initialize() has not been called before.
  • +
+ Once an encryptor has been initialized, trying to + change its configuration will + result in an AlreadyInitializedException being thrown. +

+ +

+
Usage +

+

+ An encryptor may be used for: +

    +
  • Encrypting messages, by calling the encrypt(...) method.
  • +
  • Decrypting messages, by calling the decrypt(...) method.
  • +
+ If a random salt generator is used, two encryption results for + the same message will always be different + (except in the case of random salt coincidence). This may enforce + security by difficulting brute force attacks on sets of data at a time + and forcing attackers to perform a brute force attack on each separate + piece of encrypted data. +

+

+ To learn more about the mechanisms involved in encryption, read + PKCS #5: Password-Based Cryptography Standard. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
StandardPBEBigIntegerEncryptor() + +
+          Creates a new instance of StandardPBEBigIntegerEncryptor.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.math.BigIntegerdecrypt(java.math.BigInteger encryptedMessage) + +
+           + Decrypts a message using the specified configuration.
+ java.math.BigIntegerencrypt(java.math.BigInteger message) + +
+           + Encrypts a message using the specified configuration.
+ voidinitialize() + +
+           + Initialize the encryptor.
+ booleanisInitialized() + +
+           + Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens:
+ voidsetAlgorithm(String algorithm) + +
+           + Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES.
+ voidsetConfig(PBEConfig config) + +
+           + Sets a PBEConfig object + for the encryptor.
+ voidsetKeyObtentionIterations(int keyObtentionIterations) + +
+           + Set the number of hashing iterations applied to obtain the + encryption key.
+ voidsetPassword(String password) + +
+           + Sets the password to be used.
+ voidsetPasswordCharArray(char[] password) + +
+           + Sets the password to be used, as a char[].
+ voidsetProvider(java.security.Provider provider) + +
+           + Sets the security provider to be asked for the encryption algorithm.
+ voidsetProviderName(String providerName) + +
+           + Sets the name of the security provider to be asked for the + encryption algorithm.
+ voidsetSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+StandardPBEBigIntegerEncryptor

+
+public StandardPBEBigIntegerEncryptor()
+
+
Creates a new instance of StandardPBEBigIntegerEncryptor. +

+

+ + + + + + + + +
+Method Detail
+ +

+setConfig

+
+public void setConfig(PBEConfig config)
+
+

+ Sets a PBEConfig object + for the encryptor. If this config + object is set, it will be asked values for: +

+ +
    +
  • Algorithm
  • +
  • Security Provider (or provider name)
  • +
  • Password
  • +
  • Hashing iterations for obtaining the encryption key
  • +
  • Salt generator
  • +
+ +

+ The non-null values it returns will override the default ones, + and will be overriden by any values specified with a setX + method. +

+

+

+
+
+
+
Parameters:
config - the PBEConfig object to be used as the + source for configuration parameters.
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+

+ Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES. +

+

+ This algorithm has to be supported by your JCE provider (if you specify + one, or the default JVM provider if you don't) and, if it is supported, + you can also specify mode and padding for + it, like ALGORITHM/MODE/PADDING. +

+

+

+
+
+
+
Parameters:
algorithm - the name of the algorithm to be used.
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+

+ Sets the password to be used. +

+

+ There is no default value for password, so not setting + this parameter either from a + PBEConfig object or from + a call to setPassword will result in an + EncryptionInitializationException being thrown during initialization. +

+

+

+
Specified by:
setPassword in interface PasswordBased
+
+
+
Parameters:
password - the password to be used.
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+

+ Sets the password to be used, as a char[]. +

+

+ This allows the password to be specified as a cleanable + char[] instead of a String, in extreme security conscious environments + in which no copy of the password as an immutable String should + be kept in memory. +

+

+ Important: the array specified as a parameter WILL BE COPIED + in order to be stored as encryptor configuration. The caller of + this method will therefore be responsible for its cleaning (jasypt + will only clean the internally stored copy). +

+

+ There is no default value for password, so not setting + this parameter either from a + PBEConfig object or from + a call to setPassword will result in an + EncryptionInitializationException being thrown during initialization. +

+

+

+
Specified by:
setPasswordCharArray in interface CleanablePasswordBased
+
+
+
Parameters:
password - the password to be used.
Since:
+
1.8
+
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(int keyObtentionIterations)
+
+

+ Set the number of hashing iterations applied to obtain the + encryption key. +

+

+ This mechanism is explained in + PKCS #5: Password-Based Cryptography Standard. +

+

+

+
+
+
+
Parameters:
keyObtentionIterations - the number of iterations
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(SaltGenerator saltGenerator)
+
+

+ Sets the salt generator to be used. If no salt generator is specified, + an instance of RandomSaltGenerator will be used. +

+

+

+
+
+
+
Parameters:
saltGenerator - the salt generator to be used.
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+

+ Sets the name of the security provider to be asked for the + encryption algorithm. This security provider has to be registered + beforehand at the JVM security framework. +

+

+ The provider can also be set with the setProvider(Provider) + method, in which case it will not be necessary neither registering + the provider beforehand, + nor calling this setProviderName(String) method to specify + a provider name. +

+

+ Note that a call to setProvider(Provider) overrides any value + set by this method. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
providerName - the name of the security provider to be asked + for the encryption algorithm.
Since:
+
1.3
+
+
+
+
+ +

+setProvider

+
+public void setProvider(java.security.Provider provider)
+
+

+ Sets the security provider to be asked for the encryption algorithm. + The provider does not have to be registered at the security + infrastructure beforehand, and its being used here will not result in + its being registered. +

+

+ If this method is called, calling setProviderName(String) + becomes unnecessary. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
provider - the provider to be asked for the chosen algorithm
Since:
+
1.3
+
+
+
+
+ +

+isInitialized

+
+public boolean isInitialized()
+
+

+ Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens: +

+
    +
  • When initialize is called.
  • +
  • When encrypt or decrypt are called for the + first time, if initialize has not been called before.
  • +
+

+ Once an encryptor has been initialized, trying to + change its configuration will + result in an AlreadyInitializedException being thrown. +

+

+

+
+
+
+ +
Returns:
true if the encryptor has already been initialized, false if + not.
+
+
+
+ +

+initialize

+
+public void initialize()
+
+

+ Initialize the encryptor. +

+

+ This operation will consist in determining the actual configuration + values to be used, and then initializing the encryptor with them. +
+ These values are decided by applying the following priorities: +

+
    +
  1. First, the default values are considered (except for password). +
  2. +
  3. Then, if a + PBEConfig + object has been set with + setConfig, the non-null values returned by its + getX methods override the default values.
  4. +
  5. Finally, if the corresponding setX method has been called + on the encryptor itself for any of the configuration parameters, + the values set by these calls override all of the above.
  6. +
+

+ Once an encryptor has been initialized, trying to + change its configuration will + result in an AlreadyInitializedException being thrown. +

+

+

+
+
+
+ +
Throws: +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+
+ +

+encrypt

+
+public java.math.BigInteger encrypt(java.math.BigInteger message)
+
+

+ Encrypts a message using the specified configuration. +

+

+ Important: The size of the result of encrypting a number, depending + on the algorithm, may be much bigger (in bytes) than the size of the + encrypted number itself. For example, encrypting a 4-byte integer can + result in an encrypted 16-byte number. This can lead the user into + problems if the encrypted values are to be stored and not enough room + has been provided. +

+

+ The mechanisms applied to perform the encryption operation are described + in PKCS #5: Password-Based Cryptography Standard. +

+

+ This encryptor uses a salt for each encryption + operation. The size of the salt depends on the algorithm + being used. This salt is used + for creating the encryption key and, if generated by a random generator, + it is also appended unencrypted at the beginning + of the results so that a decryption operation can be performed. +

+

+ If a random salt generator is used, two encryption results for + the same message will always be different + (except in the case of random salt coincidence). This may enforce + security by difficulting brute force attacks on sets of data at a time + and forcing attackers to perform a brute force attack on each separate + piece of encrypted data. +

+

+

+
Specified by:
encrypt in interface BigIntegerEncryptor
+
+
+
Parameters:
message - the BigInteger message to be encrypted +
Returns:
the result of encryption +
Throws: +
EncryptionOperationNotPossibleException - if the encryption + operation fails, ommitting any further information about the + cause for security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+
+ +

+decrypt

+
+public java.math.BigInteger decrypt(java.math.BigInteger encryptedMessage)
+
+

+ Decrypts a message using the specified configuration. +

+

+ The mechanisms applied to perform the decryption operation are described + in PKCS #5: Password-Based Cryptography Standard. +

+

+ If a random salt generator is used, this decryption operation will + expect to find an unencrypted salt at the + beginning of the encrypted input, so that the decryption operation can be + correctly performed (there is no other way of knowing it). +

+

+

+
Specified by:
decrypt in interface BigIntegerEncryptor
+
+
+
Parameters:
encryptedMessage - the BigInteger message to be decrypted +
Returns:
the result of decryption +
Throws: +
EncryptionOperationNotPossibleException - if the decryption + operation fails, ommitting any further information about the + cause for security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/StandardPBEByteEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/StandardPBEByteEncryptor.html new file mode 100644 index 00000000..d0dcfaa9 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/StandardPBEByteEncryptor.html @@ -0,0 +1,918 @@ + + + + + + + +StandardPBEByteEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe +
+Class StandardPBEByteEncryptor

+
+Object
+  extended by org.jasypt.encryption.pbe.StandardPBEByteEncryptor
+
+
+
All Implemented Interfaces:
ByteEncryptor, CleanablePasswordBased, PasswordBased, PBEByteCleanablePasswordEncryptor, PBEByteEncryptor
+
+
+
+
public final class StandardPBEByteEncryptor
extends Object
implements PBEByteCleanablePasswordEncryptor
+ + +

+

+ Standard implementation of the PBEByteEncryptor interface. + This class lets the user specify the algorithm (and provider) to be used for + encryption, the password to use, + the number of hashing iterations and the salt generator + that will be applied for obtaining + the encryption key. +

+

+ This class is thread-safe. +

+

+
Configuration +

+

+ The algorithm, provider, password, key-obtention iterations and salt generator can take + values in any of these ways: +

    +
  • Using its default values (except for password).
  • +
  • Setting a PBEConfig + object which provides new + configuration values.
  • +
  • Calling the corresponding setAlgorithm(...), + setProvider(...), setProviderName(...), + setPassword(...), setKeyObtentionIterations(...) or + setSaltGenerator(...) methods.
  • +
+ And the actual values to be used for initialization will be established + by applying the following priorities: +
    +
  1. First, the default values are considered (except for password).
  2. +
  3. Then, if a PBEConfig + object has been set with + setConfig(...), the non-null values returned by its + getX() methods override the default values.
  4. +
  5. Finally, if the corresponding setX(...) method has been called + on the encryptor itself for any of the configuration parameters, the + values set by these calls override all of the above.
  6. +
+

+ +

+
Initialization +

+

+ Before it is ready to encrypt, an object of this class has to be + initialized. Initialization happens: +

    +
  • When initialize() is called.
  • +
  • When encrypt(...) or decrypt(...) are called for the + first time, if initialize() has not been called before.
  • +
+ Once an encryptor has been initialized, trying to + change its configuration will + result in an AlreadyInitializedException being thrown. +

+ +

+
Usage +

+

+ An encryptor may be used for: +

    +
  • Encrypting messages, by calling the encrypt(...) method.
  • +
  • Decrypting messages, by calling the decrypt(...) method.
  • +
+ If a random salt generator is used, two encryption results for + the same message will always be different + (except in the case of random salt coincidence). This may enforce + security by difficulting brute force attacks on sets of data at a time + and forcing attackers to perform a brute force attack on each separate + piece of encrypted data. +

+

+ To learn more about the mechanisms involved in encryption, read + PKCS #5: Password-Based Cryptography Standard. +

+

+ +

+

+
Since:
+
1.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + + + + +
+Field Summary
+static StringDEFAULT_ALGORITHM + +
+          The default algorithm to be used if none specified: PBEWithMD5AndDES.
+static intDEFAULT_KEY_OBTENTION_ITERATIONS + +
+          The default number of hashing iterations applied for obtaining the + encryption key from the specified password, set to 1000.
+static intDEFAULT_SALT_SIZE_BYTES + +
+          The default salt size, only used if the chosen encryption algorithm + is not a block algorithm and thus block size cannot be used as salt size.
+  + + + + + + + + + + +
+Constructor Summary
StandardPBEByteEncryptor() + +
+          Creates a new instance of StandardPBEByteEncryptor.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ byte[]decrypt(byte[] encryptedMessage) + +
+           + Decrypts a message using the specified configuration.
+ byte[]encrypt(byte[] message) + +
+           + Encrypts a message using the specified configuration.
+ voidinitialize() + +
+           + Initialize the encryptor.
+ booleanisInitialized() + +
+           + Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens:
+ voidsetAlgorithm(String algorithm) + +
+           + Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES.
+ voidsetConfig(PBEConfig config) + +
+           + Sets a PBEConfig object + for the encryptor.
+ voidsetKeyObtentionIterations(int keyObtentionIterations) + +
+           + Set the number of hashing iterations applied to obtain the + encryption key.
+ voidsetPassword(String password) + +
+           + Sets the password to be used.
+ voidsetPasswordCharArray(char[] password) + +
+           + Sets the password to be used, as a char[].
+ voidsetProvider(java.security.Provider provider) + +
+           + Sets the security provider to be asked for the encryption algorithm.
+ voidsetProviderName(String providerName) + +
+           + Sets the name of the security provider to be asked for the + encryption algorithm.
+ voidsetSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+DEFAULT_ALGORITHM

+
+public static final String DEFAULT_ALGORITHM
+
+
The default algorithm to be used if none specified: PBEWithMD5AndDES. +

+

+
See Also:
Constant Field Values
+
+
+ +

+DEFAULT_KEY_OBTENTION_ITERATIONS

+
+public static final int DEFAULT_KEY_OBTENTION_ITERATIONS
+
+
The default number of hashing iterations applied for obtaining the + encryption key from the specified password, set to 1000. +

+

+
See Also:
Constant Field Values
+
+
+ +

+DEFAULT_SALT_SIZE_BYTES

+
+public static final int DEFAULT_SALT_SIZE_BYTES
+
+
The default salt size, only used if the chosen encryption algorithm + is not a block algorithm and thus block size cannot be used as salt size. +

+

+
See Also:
Constant Field Values
+
+ + + + + + + + +
+Constructor Detail
+ +

+StandardPBEByteEncryptor

+
+public StandardPBEByteEncryptor()
+
+
Creates a new instance of StandardPBEByteEncryptor. +

+

+ + + + + + + + +
+Method Detail
+ +

+setConfig

+
+public void setConfig(PBEConfig config)
+
+

+ Sets a PBEConfig object + for the encryptor. If this config + object is set, it will be asked values for: +

+ +
    +
  • Algorithm
  • +
  • Security Provider (or provider name)
  • +
  • Password
  • +
  • Hashing iterations for obtaining the encryption key
  • +
  • Salt generator
  • +
+ +

+ The non-null values it returns will override the default ones, + and will be overriden by any values specified with a setX + method. +

+

+

+
+
+
+
Parameters:
config - the PBEConfig object to be used as the + source for configuration parameters.
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+

+ Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES. +

+

+ This algorithm has to be supported by your JCE provider (if you specify + one, or the default JVM provider if you don't) and, if it is supported, + you can also specify mode and padding for + it, like ALGORITHM/MODE/PADDING. +

+

+

+
+
+
+
Parameters:
algorithm - the name of the algorithm to be used.
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+

+ Sets the password to be used. +

+

+ There is no default value for password, so not setting + this parameter either from a + PBEConfig object or from + a call to setPassword will result in an + EncryptionInitializationException being thrown during initialization. +

+

+

+
Specified by:
setPassword in interface PasswordBased
+
+
+
Parameters:
password - the password to be used.
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+

+ Sets the password to be used, as a char[]. +

+

+ This allows the password to be specified as a cleanable + char[] instead of a String, in extreme security conscious environments + in which no copy of the password as an immutable String should + be kept in memory. +

+

+ Important: the array specified as a parameter WILL BE COPIED + in order to be stored as encryptor configuration. The caller of + this method will therefore be responsible for its cleaning (jasypt + will only clean the internally stored copy). +

+

+ There is no default value for password, so not setting + this parameter either from a + PBEConfig object or from + a call to setPassword will result in an + EncryptionInitializationException being thrown during initialization. +

+

+

+
Specified by:
setPasswordCharArray in interface CleanablePasswordBased
+
+
+
Parameters:
password - the password to be used.
Since:
+
1.8
+
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(int keyObtentionIterations)
+
+

+ Set the number of hashing iterations applied to obtain the + encryption key. +

+

+ This mechanism is explained in + PKCS #5: Password-Based Cryptography Standard. +

+

+

+
+
+
+
Parameters:
keyObtentionIterations - the number of iterations
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(SaltGenerator saltGenerator)
+
+

+ Sets the salt generator to be used. If no salt generator is specified, + an instance of RandomSaltGenerator will be used. +

+

+

+
+
+
+
Parameters:
saltGenerator - the salt generator to be used.
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+

+ Sets the name of the security provider to be asked for the + encryption algorithm. This security provider has to be registered + beforehand at the JVM security framework. +

+

+ The provider can also be set with the setProvider(Provider) + method, in which case it will not be necessary neither registering + the provider beforehand, + nor calling this setProviderName(String) method to specify + a provider name. +

+

+ Note that a call to setProvider(Provider) overrides any value + set by this method. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
providerName - the name of the security provider to be asked + for the encryption algorithm.
Since:
+
1.3
+
+
+
+
+ +

+setProvider

+
+public void setProvider(java.security.Provider provider)
+
+

+ Sets the security provider to be asked for the encryption algorithm. + The provider does not have to be registered at the security + infrastructure beforehand, and its being used here will not result in + its being registered. +

+

+ If this method is called, calling setProviderName(String) + becomes unnecessary. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
provider - the provider to be asked for the chosen algorithm
Since:
+
1.3
+
+
+
+
+ +

+isInitialized

+
+public boolean isInitialized()
+
+

+ Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens: +

+
    +
  • When initialize is called.
  • +
  • When encrypt or decrypt are called for the + first time, if initialize has not been called before.
  • +
+

+ Once an encryptor has been initialized, trying to + change its configuration will + result in an AlreadyInitializedException being thrown. +

+

+

+
+
+
+ +
Returns:
true if the encryptor has already been initialized, false if + not.
+
+
+
+ +

+initialize

+
+public void initialize()
+
+

+ Initialize the encryptor. +

+

+ This operation will consist in determining the actual configuration + values to be used, and then initializing the encryptor with them. +
+ These values are decided by applying the following priorities: +

+
    +
  1. First, the default values are considered (except for password). +
  2. +
  3. Then, if a + PBEConfig + object has been set with + setConfig, the non-null values returned by its + getX methods override the default values.
  4. +
  5. Finally, if the corresponding setX method has been called + on the encryptor itself for any of the configuration parameters, + the values set by these calls override all of the above.
  6. +
+

+ Once an encryptor has been initialized, trying to + change its configuration will + result in an AlreadyInitializedException being thrown. +

+

+

+
+
+
+ +
Throws: +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+
+ +

+encrypt

+
+public byte[] encrypt(byte[] message)
+               throws EncryptionOperationNotPossibleException
+
+

+ Encrypts a message using the specified configuration. +

+

+ The mechanisms applied to perform the encryption operation are described + in PKCS #5: Password-Based Cryptography Standard. +

+

+ This encryptor uses a salt for each encryption + operation. The size of the salt depends on the algorithm + being used. This salt is used + for creating the encryption key and, if generated by a random generator, + it is also appended unencrypted at the beginning + of the results so that a decryption operation can be performed. +

+

+ If a random salt generator is used, two encryption results for + the same message will always be different + (except in the case of random salt coincidence). This may enforce + security by difficulting brute force attacks on sets of data at a time + and forcing attackers to perform a brute force attack on each separate + piece of encrypted data. +

+

+

+
Specified by:
encrypt in interface ByteEncryptor
+
+
+
Parameters:
message - the byte array message to be encrypted +
Returns:
the result of encryption +
Throws: +
EncryptionOperationNotPossibleException - if the encryption + operation fails, ommitting any further information about the + cause for security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+
+ +

+decrypt

+
+public byte[] decrypt(byte[] encryptedMessage)
+               throws EncryptionOperationNotPossibleException
+
+

+ Decrypts a message using the specified configuration. +

+

+ The mechanisms applied to perform the decryption operation are described + in PKCS #5: Password-Based Cryptography Standard. +

+

+ If a random salt generator is used, this decryption operation will + expect to find an unencrypted salt at the + beginning of the encrypted input, so that the decryption operation can be + correctly performed (there is no other way of knowing it). +

+

+

+
Specified by:
decrypt in interface ByteEncryptor
+
+
+
Parameters:
encryptedMessage - the byte array message to be decrypted +
Returns:
the result of decryption +
Throws: +
EncryptionOperationNotPossibleException - if the decryption + operation fails, ommitting any further information about the + cause for security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/StandardPBEStringEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/StandardPBEStringEncryptor.html new file mode 100644 index 00000000..24467b3a --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/StandardPBEStringEncryptor.html @@ -0,0 +1,926 @@ + + + + + + + +StandardPBEStringEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe +
+Class StandardPBEStringEncryptor

+
+Object
+  extended by org.jasypt.encryption.pbe.StandardPBEStringEncryptor
+
+
+
All Implemented Interfaces:
CleanablePasswordBased, PasswordBased, PBEStringCleanablePasswordEncryptor, PBEStringEncryptor, StringEncryptor
+
+
+
+
public final class StandardPBEStringEncryptor
extends Object
implements PBEStringCleanablePasswordEncryptor
+ + +

+

+ Standard implementation of the PBEStringEncryptor interface. + This class lets the user specify the algorithm (and provider) to be used for + encryption, the password to use, + the number of hashing iterations and the salt generator + that will be applied for obtaining + the encryption key. +

+

+ This class avoids byte-conversion problems related to the fact of + different platforms having different default charsets, and returns + encryption results in the form of BASE64-encoded or HEXADECIMAL + ASCII Strings. +

+

+ This class is thread-safe. +

+

+
Configuration +

+

+ The algorithm, provider, password, key-obtention iterations and salt generator can take + values in any of these ways: +

    +
  • Using its default values (except for password).
  • +
  • Setting a PBEConfig + object which provides new + configuration values.
  • +
  • Calling the corresponding setX(...) methods.
  • +
+ And the actual values to be used for initialization will be established + by applying the following priorities: +
    +
  1. First, the default values are considered (except for password).
  2. +
  3. Then, if a PBEConfig + object has been set with + setConfig(...), the non-null values returned by its + getX() methods override the default values.
  4. +
  5. Finally, if the corresponding setX(...) method has been called + on the encryptor itself for any of the configuration parameters, the + values set by these calls override all of the above.
  6. +
+

+ +

+
Initialization +

+

+ Before it is ready to encrypt, an object of this class has to be + initialized. Initialization happens: +

    +
  • When initialize() is called.
  • +
  • When encrypt(...) or decrypt(...) are called for the + first time, if initialize() has not been called before.
  • +
+ Once an encryptor has been initialized, trying to + change its configuration will + result in an AlreadyInitializedException being thrown. +

+ +

+
Usage +

+

+ An encryptor may be used for: +

    +
  • Encrypting messages, by calling the encrypt(...) method.
  • +
  • Decrypting messages, by calling the decrypt(...) method.
  • +
+ If a random salt generator is used, two encryption results for + the same message will always be different + (except in the case of random salt coincidence). This may enforce + security by difficulting brute force attacks on sets of data at a time + and forcing attackers to perform a brute force attack on each separate + piece of encrypted data. +

+

+ To learn more about the mechanisms involved in encryption, read + PKCS #5: Password-Based Cryptography Standard. +

+

+ +

+

+
Since:
+
1.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+static StringDEFAULT_STRING_OUTPUT_TYPE + +
+           + Default type of String output.
+  + + + + + + + + + + +
+Constructor Summary
StandardPBEStringEncryptor() + +
+          Creates a new instance of StandardPBEStringEncryptor.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Stringdecrypt(String encryptedMessage) + +
+           + Decrypts a message using the specified configuration.
+ Stringencrypt(String message) + +
+           + Encrypts a message using the specified configuration.
+ voidinitialize() + +
+           + Initialize the encryptor.
+ booleanisInitialized() + +
+           + Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens:
+ voidsetAlgorithm(String algorithm) + +
+           + Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES.
+ voidsetConfig(PBEConfig config) + +
+           + Sets a PBEConfig object + for the encryptor.
+ voidsetKeyObtentionIterations(int keyObtentionIterations) + +
+           + Set the number of hashing iterations applied to obtain the + encryption key.
+ voidsetPassword(String password) + +
+           + Sets the password to be used.
+ voidsetPasswordCharArray(char[] password) + +
+           + Sets the password to be used, as a char[].
+ voidsetProvider(java.security.Provider provider) + +
+           + Sets the security provider to be asked for the encryption algorithm.
+ voidsetProviderName(String providerName) + +
+           + Sets the name of the security provider to be asked for the + encryption algorithm.
+ voidsetSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+ voidsetStringOutputType(String stringOutputType) + +
+           + Sets the the form in which String output + will be encoded.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+DEFAULT_STRING_OUTPUT_TYPE

+
+public static final String DEFAULT_STRING_OUTPUT_TYPE
+
+

+ Default type of String output. Set to BASE64. +

+

+

+
See Also:
Constant Field Values
+
+ + + + + + + + +
+Constructor Detail
+ +

+StandardPBEStringEncryptor

+
+public StandardPBEStringEncryptor()
+
+
Creates a new instance of StandardPBEStringEncryptor. +

+

+ + + + + + + + +
+Method Detail
+ +

+setConfig

+
+public void setConfig(PBEConfig config)
+
+

+ Sets a PBEConfig object + for the encryptor. If this config + object is set, it will be asked values for: +

+ +
    +
  • Algorithm
  • +
  • Security Provider (or provider name)
  • +
  • Password
  • +
  • Hashing iterations for obtaining the encryption key
  • +
  • Salt generator
  • +
  • Output type (base64, hexadecimal) + (only StringPBEConfig)
  • +
+ +

+ The non-null values it returns will override the default ones, + and will be overriden by any values specified with a setX + method. +

+

+

+
+
+
+
Parameters:
config - the PBEConfig object to be used as the + source for configuration parameters.
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+

+ Sets the algorithm to be used for encryption, like + PBEWithMD5AndDES. +

+

+ This algorithm has to be supported by your JCE provider (if you specify + one, or the default JVM provider if you don't) and, if it is supported, + you can also specify mode and padding for + it, like ALGORITHM/MODE/PADDING. +

+

+

+
+
+
+
Parameters:
algorithm - the name of the algorithm to be used.
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+

+ Sets the password to be used. +

+

+ There is no default value for password, so not setting + this parameter either from a + PBEConfig object or from + a call to setPassword will result in an + EncryptionInitializationException being thrown during initialization. +

+

+

+
Specified by:
setPassword in interface PasswordBased
+
+
+
Parameters:
password - the password to be used.
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+

+ Sets the password to be used, as a char[]. +

+

+ This allows the password to be specified as a cleanable + char[] instead of a String, in extreme security conscious environments + in which no copy of the password as an immutable String should + be kept in memory. +

+

+ Important: the array specified as a parameter WILL BE COPIED + in order to be stored as encryptor configuration. The caller of + this method will therefore be responsible for its cleaning (jasypt + will only clean the internally stored copy). +

+

+ There is no default value for password, so not setting + this parameter either from a + PBEConfig object or from + a call to setPassword will result in an + EncryptionInitializationException being thrown during initialization. +

+

+

+
Specified by:
setPasswordCharArray in interface CleanablePasswordBased
+
+
+
Parameters:
password - the password to be used.
Since:
+
1.8
+
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(int keyObtentionIterations)
+
+

+ Set the number of hashing iterations applied to obtain the + encryption key. +

+

+ This mechanism is explained in + PKCS #5: Password-Based Cryptography Standard. +

+

+

+
+
+
+
Parameters:
keyObtentionIterations - the number of iterations
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(SaltGenerator saltGenerator)
+
+

+ Sets the salt generator to be used. If no salt generator is specified, + an instance of RandomSaltGenerator will be used. +

+

+

+
+
+
+
Parameters:
saltGenerator - the salt generator to be used.
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+

+ Sets the name of the security provider to be asked for the + encryption algorithm. This security provider has to be registered + beforehand at the JVM security framework. +

+

+ The provider can also be set with the setProvider(Provider) + method, in which case it will not be necessary neither registering + the provider beforehand, + nor calling this setProviderName(String) method to specify + a provider name. +

+

+ Note that a call to setProvider(Provider) overrides any value + set by this method. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
providerName - the name of the security provider to be asked + for the encryption algorithm.
Since:
+
1.3
+
+
+
+
+ +

+setProvider

+
+public void setProvider(java.security.Provider provider)
+
+

+ Sets the security provider to be asked for the encryption algorithm. + The provider does not have to be registered at the security + infrastructure beforehand, and its being used here will not result in + its being registered. +

+

+ If this method is called, calling setProviderName(String) + becomes unnecessary. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
provider - the provider to be asked for the chosen algorithm
Since:
+
1.3
+
+
+
+
+ +

+setStringOutputType

+
+public void setStringOutputType(String stringOutputType)
+
+

+ Sets the the form in which String output + will be encoded. Available encoding types are: +

+
    +
  • base64 (default)
  • +
  • hexadecimal
  • +
+

+ If not set, null will be returned. +

+

+

+
+
+
+
Parameters:
stringOutputType - the string output type.
Since:
+
1.3
+
+
+
+
+ +

+isInitialized

+
+public boolean isInitialized()
+
+

+ Returns true if the encryptor has already been initialized, false if + not.
+ Initialization happens: +

+
    +
  • When initialize is called.
  • +
  • When encrypt or decrypt are called for the + first time, if initialize has not been called before.
  • +
+

+ Once an encryptor has been initialized, trying to + change its configuration will + result in an AlreadyInitializedException being thrown. +

+

+

+
+
+
+ +
Returns:
true if the encryptor has already been initialized, false if + not.
+
+
+
+ +

+initialize

+
+public void initialize()
+
+

+ Initialize the encryptor. +

+

+ This operation will consist in determining the actual configuration + values to be used, and then initializing the encryptor with them. +
+ These values are decided by applying the following priorities: +

+
    +
  1. First, the default values are considered (except for password). +
  2. +
  3. Then, if a + PBEConfig + object has been set with + setConfig, the non-null values returned by its + getX methods override the default values.
  4. +
  5. Finally, if the corresponding setX method has been called + on the encryptor itself for any of the configuration parameters, + the values set by these calls override all of the above.
  6. +
+

+ Once an encryptor has been initialized, trying to + change its configuration will + result in an AlreadyInitializedException being thrown. +

+

+

+
+
+
+ +
Throws: +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+
+ +

+encrypt

+
+public String encrypt(String message)
+
+

+ Encrypts a message using the specified configuration. +

+

+ The Strings returned by this method are BASE64-encoded (default) or + HEXADECIMAL ASCII Strings. +

+

+ The mechanisms applied to perform the encryption operation are described + in PKCS #5: Password-Based Cryptography Standard. +

+

+ This encryptor uses a salt for each encryption + operation. The size of the salt depends on the algorithm + being used. This salt is used + for creating the encryption key and, if generated by a random generator, + it is also appended unencrypted at the beginning + of the results so that a decryption operation can be performed. +

+

+ If a random salt generator is used, two encryption results for + the same message will always be different + (except in the case of random salt coincidence). This may enforce + security by difficulting brute force attacks on sets of data at a time + and forcing attackers to perform a brute force attack on each separate + piece of encrypted data. +

+

+

+
Specified by:
encrypt in interface StringEncryptor
+
+
+
Parameters:
message - the String message to be encrypted +
Returns:
the result of encryption +
Throws: +
EncryptionOperationNotPossibleException - if the encryption + operation fails, ommitting any further information about the + cause for security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+
+ +

+decrypt

+
+public String decrypt(String encryptedMessage)
+
+

+ Decrypts a message using the specified configuration. +

+

+ This method expects to receive a BASE64-encoded (default) + or HEXADECIMAL ASCII String. +

+

+ The mechanisms applied to perform the decryption operation are described + in PKCS #5: Password-Based Cryptography Standard. +

+

+ If a random salt generator is used, this decryption operation will + expect to find an unencrypted salt at the + beginning of the encrypted input, so that the decryption operation can be + correctly performed (there is no other way of knowing it). +

+

+

+
Specified by:
decrypt in interface StringEncryptor
+
+
+
Parameters:
encryptedMessage - the String message to be decrypted +
Returns:
the result of decryption +
Throws: +
EncryptionOperationNotPossibleException - if the decryption + operation fails, ommitting any further information about the + cause for security reasons. +
EncryptionInitializationException - if initialization could not + be correctly done (for example, no password has been set).
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/CleanablePasswordBased.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/CleanablePasswordBased.html new file mode 100644 index 00000000..cf998360 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/CleanablePasswordBased.html @@ -0,0 +1,309 @@ + + + + + + + +Uses of Interface org.jasypt.encryption.pbe.CleanablePasswordBased (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.encryption.pbe.CleanablePasswordBased

+
+ + + + + + + + + +
+Packages that use CleanablePasswordBased
org.jasypt.encryption.pbe  
+  +

+ + + + + +
+Uses of CleanablePasswordBased in org.jasypt.encryption.pbe
+  +

+ + + + + + + + + + + + + + + + + + + + + +
Subinterfaces of CleanablePasswordBased in org.jasypt.encryption.pbe
+ interfacePBEBigDecimalCleanablePasswordEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + BigDecimal message and return a BigDecimal result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
+ interfacePBEBigIntegerCleanablePasswordEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a BigInteger + message and return a BigInteger result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
+ interfacePBEByteCleanablePasswordEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + byte array message and return a byte array result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
+ interfacePBEStringCleanablePasswordEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + String message and return a String result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
+  +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Classes in org.jasypt.encryption.pbe that implement CleanablePasswordBased
+ classPooledPBEBigDecimalEncryptor + +
+           + Pooled implementation of PBEBigDecimalEncryptor that in fact contains + an array of StandardPBEBigDecimalEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
+ classPooledPBEBigIntegerEncryptor + +
+           + Pooled implementation of PBEBigIntegerEncryptor that in fact contains + an array of StandardPBEBigIntegerEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
+ classPooledPBEByteEncryptor + +
+           + Pooled implementation of PBEByteEncryptor that in fact contains + an array of StandardPBEByteEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
+ classPooledPBEStringEncryptor + +
+           + Pooled implementation of PBEStringEncryptor that in fact contains + an array of StandardPBEStringEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
+ classStandardPBEBigDecimalEncryptor + +
+           + Standard implementation of the PBEBigDecimalEncryptor interface.
+ classStandardPBEBigIntegerEncryptor + +
+           + Standard implementation of the PBEBigIntegerEncryptor interface.
+ classStandardPBEByteEncryptor + +
+           + Standard implementation of the PBEByteEncryptor interface.
+ classStandardPBEStringEncryptor + +
+           + Standard implementation of the PBEStringEncryptor interface.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEBigDecimalCleanablePasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEBigDecimalCleanablePasswordEncryptor.html new file mode 100644 index 00000000..c245644e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEBigDecimalCleanablePasswordEncryptor.html @@ -0,0 +1,193 @@ + + + + + + + +Uses of Interface org.jasypt.encryption.pbe.PBEBigDecimalCleanablePasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.encryption.pbe.PBEBigDecimalCleanablePasswordEncryptor

+
+ + + + + + + + + +
+Packages that use PBEBigDecimalCleanablePasswordEncryptor
org.jasypt.encryption.pbe  
+  +

+ + + + + +
+Uses of PBEBigDecimalCleanablePasswordEncryptor in org.jasypt.encryption.pbe
+  +

+ + + + + + + + + + + + + +
Classes in org.jasypt.encryption.pbe that implement PBEBigDecimalCleanablePasswordEncryptor
+ classPooledPBEBigDecimalEncryptor + +
+           + Pooled implementation of PBEBigDecimalEncryptor that in fact contains + an array of StandardPBEBigDecimalEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
+ classStandardPBEBigDecimalEncryptor + +
+           + Standard implementation of the PBEBigDecimalEncryptor interface.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEBigDecimalEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEBigDecimalEncryptor.html new file mode 100644 index 00000000..9c60ece5 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEBigDecimalEncryptor.html @@ -0,0 +1,213 @@ + + + + + + + +Uses of Interface org.jasypt.encryption.pbe.PBEBigDecimalEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.encryption.pbe.PBEBigDecimalEncryptor

+
+ + + + + + + + + +
+Packages that use PBEBigDecimalEncryptor
org.jasypt.encryption.pbe  
+  +

+ + + + + +
+Uses of PBEBigDecimalEncryptor in org.jasypt.encryption.pbe
+  +

+ + + + + + + + + +
Subinterfaces of PBEBigDecimalEncryptor in org.jasypt.encryption.pbe
+ interfacePBEBigDecimalCleanablePasswordEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + BigDecimal message and return a BigDecimal result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
+  +

+ + + + + + + + + + + + + +
Classes in org.jasypt.encryption.pbe that implement PBEBigDecimalEncryptor
+ classPooledPBEBigDecimalEncryptor + +
+           + Pooled implementation of PBEBigDecimalEncryptor that in fact contains + an array of StandardPBEBigDecimalEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
+ classStandardPBEBigDecimalEncryptor + +
+           + Standard implementation of the PBEBigDecimalEncryptor interface.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEBigIntegerCleanablePasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEBigIntegerCleanablePasswordEncryptor.html new file mode 100644 index 00000000..a08e10db --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEBigIntegerCleanablePasswordEncryptor.html @@ -0,0 +1,193 @@ + + + + + + + +Uses of Interface org.jasypt.encryption.pbe.PBEBigIntegerCleanablePasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.encryption.pbe.PBEBigIntegerCleanablePasswordEncryptor

+
+ + + + + + + + + +
+Packages that use PBEBigIntegerCleanablePasswordEncryptor
org.jasypt.encryption.pbe  
+  +

+ + + + + +
+Uses of PBEBigIntegerCleanablePasswordEncryptor in org.jasypt.encryption.pbe
+  +

+ + + + + + + + + + + + + +
Classes in org.jasypt.encryption.pbe that implement PBEBigIntegerCleanablePasswordEncryptor
+ classPooledPBEBigIntegerEncryptor + +
+           + Pooled implementation of PBEBigIntegerEncryptor that in fact contains + an array of StandardPBEBigIntegerEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
+ classStandardPBEBigIntegerEncryptor + +
+           + Standard implementation of the PBEBigIntegerEncryptor interface.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEBigIntegerEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEBigIntegerEncryptor.html new file mode 100644 index 00000000..4ad5c82f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEBigIntegerEncryptor.html @@ -0,0 +1,213 @@ + + + + + + + +Uses of Interface org.jasypt.encryption.pbe.PBEBigIntegerEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.encryption.pbe.PBEBigIntegerEncryptor

+
+ + + + + + + + + +
+Packages that use PBEBigIntegerEncryptor
org.jasypt.encryption.pbe  
+  +

+ + + + + +
+Uses of PBEBigIntegerEncryptor in org.jasypt.encryption.pbe
+  +

+ + + + + + + + + +
Subinterfaces of PBEBigIntegerEncryptor in org.jasypt.encryption.pbe
+ interfacePBEBigIntegerCleanablePasswordEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a BigInteger + message and return a BigInteger result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
+  +

+ + + + + + + + + + + + + +
Classes in org.jasypt.encryption.pbe that implement PBEBigIntegerEncryptor
+ classPooledPBEBigIntegerEncryptor + +
+           + Pooled implementation of PBEBigIntegerEncryptor that in fact contains + an array of StandardPBEBigIntegerEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
+ classStandardPBEBigIntegerEncryptor + +
+           + Standard implementation of the PBEBigIntegerEncryptor interface.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEByteCleanablePasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEByteCleanablePasswordEncryptor.html new file mode 100644 index 00000000..0737977d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEByteCleanablePasswordEncryptor.html @@ -0,0 +1,193 @@ + + + + + + + +Uses of Interface org.jasypt.encryption.pbe.PBEByteCleanablePasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.encryption.pbe.PBEByteCleanablePasswordEncryptor

+
+ + + + + + + + + +
+Packages that use PBEByteCleanablePasswordEncryptor
org.jasypt.encryption.pbe  
+  +

+ + + + + +
+Uses of PBEByteCleanablePasswordEncryptor in org.jasypt.encryption.pbe
+  +

+ + + + + + + + + + + + + +
Classes in org.jasypt.encryption.pbe that implement PBEByteCleanablePasswordEncryptor
+ classPooledPBEByteEncryptor + +
+           + Pooled implementation of PBEByteEncryptor that in fact contains + an array of StandardPBEByteEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
+ classStandardPBEByteEncryptor + +
+           + Standard implementation of the PBEByteEncryptor interface.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEByteEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEByteEncryptor.html new file mode 100644 index 00000000..24d73d98 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEByteEncryptor.html @@ -0,0 +1,213 @@ + + + + + + + +Uses of Interface org.jasypt.encryption.pbe.PBEByteEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.encryption.pbe.PBEByteEncryptor

+
+ + + + + + + + + +
+Packages that use PBEByteEncryptor
org.jasypt.encryption.pbe  
+  +

+ + + + + +
+Uses of PBEByteEncryptor in org.jasypt.encryption.pbe
+  +

+ + + + + + + + + +
Subinterfaces of PBEByteEncryptor in org.jasypt.encryption.pbe
+ interfacePBEByteCleanablePasswordEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + byte array message and return a byte array result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
+  +

+ + + + + + + + + + + + + +
Classes in org.jasypt.encryption.pbe that implement PBEByteEncryptor
+ classPooledPBEByteEncryptor + +
+           + Pooled implementation of PBEByteEncryptor that in fact contains + an array of StandardPBEByteEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
+ classStandardPBEByteEncryptor + +
+           + Standard implementation of the PBEByteEncryptor interface.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEStringCleanablePasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEStringCleanablePasswordEncryptor.html new file mode 100644 index 00000000..0469e1e2 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEStringCleanablePasswordEncryptor.html @@ -0,0 +1,193 @@ + + + + + + + +Uses of Interface org.jasypt.encryption.pbe.PBEStringCleanablePasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.encryption.pbe.PBEStringCleanablePasswordEncryptor

+
+ + + + + + + + + +
+Packages that use PBEStringCleanablePasswordEncryptor
org.jasypt.encryption.pbe  
+  +

+ + + + + +
+Uses of PBEStringCleanablePasswordEncryptor in org.jasypt.encryption.pbe
+  +

+ + + + + + + + + + + + + +
Classes in org.jasypt.encryption.pbe that implement PBEStringCleanablePasswordEncryptor
+ classPooledPBEStringEncryptor + +
+           + Pooled implementation of PBEStringEncryptor that in fact contains + an array of StandardPBEStringEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
+ classStandardPBEStringEncryptor + +
+           + Standard implementation of the PBEStringEncryptor interface.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEStringEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEStringEncryptor.html new file mode 100644 index 00000000..f0e5c955 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PBEStringEncryptor.html @@ -0,0 +1,213 @@ + + + + + + + +Uses of Interface org.jasypt.encryption.pbe.PBEStringEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.encryption.pbe.PBEStringEncryptor

+
+ + + + + + + + + +
+Packages that use PBEStringEncryptor
org.jasypt.encryption.pbe  
+  +

+ + + + + +
+Uses of PBEStringEncryptor in org.jasypt.encryption.pbe
+  +

+ + + + + + + + + +
Subinterfaces of PBEStringEncryptor in org.jasypt.encryption.pbe
+ interfacePBEStringCleanablePasswordEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + String message and return a String result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
+  +

+ + + + + + + + + + + + + +
Classes in org.jasypt.encryption.pbe that implement PBEStringEncryptor
+ classPooledPBEStringEncryptor + +
+           + Pooled implementation of PBEStringEncryptor that in fact contains + an array of StandardPBEStringEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
+ classStandardPBEStringEncryptor + +
+           + Standard implementation of the PBEStringEncryptor interface.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PasswordBased.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PasswordBased.html new file mode 100644 index 00000000..7b7945f7 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PasswordBased.html @@ -0,0 +1,360 @@ + + + + + + + +Uses of Interface org.jasypt.encryption.pbe.PasswordBased (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.encryption.pbe.PasswordBased

+
+ + + + + + + + + +
+Packages that use PasswordBased
org.jasypt.encryption.pbe  
+  +

+ + + + + +
+Uses of PasswordBased in org.jasypt.encryption.pbe
+  +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Subinterfaces of PasswordBased in org.jasypt.encryption.pbe
+ interfaceCleanablePasswordBased + +
+           + Common interface for all entities which can be set a password in char[] shape, + which can be cleaned once the encryptor is initialized so that no immutable + Strings containing the password are left in memory.
+ interfacePBEBigDecimalCleanablePasswordEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + BigDecimal message and return a BigDecimal result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
+ interfacePBEBigDecimalEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + BigDecimal message and return a BigDecimal result.
+ interfacePBEBigIntegerCleanablePasswordEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a BigInteger + message and return a BigInteger result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
+ interfacePBEBigIntegerEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a BigInteger + message and return a BigInteger result.
+ interfacePBEByteCleanablePasswordEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + byte array message and return a byte array result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
+ interfacePBEByteEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + byte array message and return a byte array result.
+ interfacePBEStringCleanablePasswordEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + String message and return a String result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
+ interfacePBEStringEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + String message and return a String result.
+  +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Classes in org.jasypt.encryption.pbe that implement PasswordBased
+ classPooledPBEBigDecimalEncryptor + +
+           + Pooled implementation of PBEBigDecimalEncryptor that in fact contains + an array of StandardPBEBigDecimalEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
+ classPooledPBEBigIntegerEncryptor + +
+           + Pooled implementation of PBEBigIntegerEncryptor that in fact contains + an array of StandardPBEBigIntegerEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
+ classPooledPBEByteEncryptor + +
+           + Pooled implementation of PBEByteEncryptor that in fact contains + an array of StandardPBEByteEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
+ classPooledPBEStringEncryptor + +
+           + Pooled implementation of PBEStringEncryptor that in fact contains + an array of StandardPBEStringEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
+ classStandardPBEBigDecimalEncryptor + +
+           + Standard implementation of the PBEBigDecimalEncryptor interface.
+ classStandardPBEBigIntegerEncryptor + +
+           + Standard implementation of the PBEBigIntegerEncryptor interface.
+ classStandardPBEByteEncryptor + +
+           + Standard implementation of the PBEByteEncryptor interface.
+ classStandardPBEStringEncryptor + +
+           + Standard implementation of the PBEStringEncryptor interface.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PooledPBEBigDecimalEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PooledPBEBigDecimalEncryptor.html new file mode 100644 index 00000000..6c1af3b5 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PooledPBEBigDecimalEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.encryption.pbe.PooledPBEBigDecimalEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.encryption.pbe.PooledPBEBigDecimalEncryptor

+
+No usage of org.jasypt.encryption.pbe.PooledPBEBigDecimalEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PooledPBEBigIntegerEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PooledPBEBigIntegerEncryptor.html new file mode 100644 index 00000000..66187e0a --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PooledPBEBigIntegerEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.encryption.pbe.PooledPBEBigIntegerEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.encryption.pbe.PooledPBEBigIntegerEncryptor

+
+No usage of org.jasypt.encryption.pbe.PooledPBEBigIntegerEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PooledPBEByteEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PooledPBEByteEncryptor.html new file mode 100644 index 00000000..2eeeadff --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PooledPBEByteEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.encryption.pbe.PooledPBEByteEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.encryption.pbe.PooledPBEByteEncryptor

+
+No usage of org.jasypt.encryption.pbe.PooledPBEByteEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PooledPBEStringEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PooledPBEStringEncryptor.html new file mode 100644 index 00000000..687687e0 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/PooledPBEStringEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.encryption.pbe.PooledPBEStringEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.encryption.pbe.PooledPBEStringEncryptor

+
+No usage of org.jasypt.encryption.pbe.PooledPBEStringEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/StandardPBEBigDecimalEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/StandardPBEBigDecimalEncryptor.html new file mode 100644 index 00000000..fa7bbbed --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/StandardPBEBigDecimalEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor

+
+No usage of org.jasypt.encryption.pbe.StandardPBEBigDecimalEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/StandardPBEBigIntegerEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/StandardPBEBigIntegerEncryptor.html new file mode 100644 index 00000000..7be7ee32 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/StandardPBEBigIntegerEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor

+
+No usage of org.jasypt.encryption.pbe.StandardPBEBigIntegerEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/StandardPBEByteEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/StandardPBEByteEncryptor.html new file mode 100644 index 00000000..54485787 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/StandardPBEByteEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.encryption.pbe.StandardPBEByteEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.encryption.pbe.StandardPBEByteEncryptor

+
+No usage of org.jasypt.encryption.pbe.StandardPBEByteEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/StandardPBEStringEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/StandardPBEStringEncryptor.html new file mode 100644 index 00000000..6269175e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/class-use/StandardPBEStringEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.encryption.pbe.StandardPBEStringEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.encryption.pbe.StandardPBEStringEncryptor

+
+No usage of org.jasypt.encryption.pbe.StandardPBEStringEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/EnvironmentPBEConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/EnvironmentPBEConfig.html new file mode 100644 index 00000000..66f48fb1 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/EnvironmentPBEConfig.html @@ -0,0 +1,1461 @@ + + + + + + + +EnvironmentPBEConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe.config +
+Class EnvironmentPBEConfig

+
+Object
+  extended by org.jasypt.encryption.pbe.config.SimplePBEConfig
+      extended by org.jasypt.encryption.pbe.config.EnvironmentPBEConfig
+
+
+
All Implemented Interfaces:
PBECleanablePasswordConfig, PBEConfig
+
+
+
Direct Known Subclasses:
EnvironmentStringPBEConfig
+
+
+
+
public class EnvironmentPBEConfig
extends SimplePBEConfig
+ + +

+

+ Implementation for PBEConfig which can retrieve configuration + values from environment variables or system properties. +

+

+ The name of the environment variable or system property (JVM property) to + query for each parameter can be set with its corresponding + setXEnvName or setXSysProperty method. +

+

+ As this class extends SimplePBEConfig, parameter values + can be also set with the usual setX methods. +

+

+ For any of the configuration parameters, if its value is not configured + in any way, a null value will be returned by the + corresponding getX method. +

+

+ +

+

+
Since:
+
1.1
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
EnvironmentPBEConfig() + +
+           + Creates a new EnvironmentPBEConfig instance.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringgetAlgorithmEnvName() + +
+          Retrieve the name of the environment variable which value has been + loaded as the algorithm.
+ StringgetAlgorithmSysPropertyName() + +
+          Retrieve the name of the JVM system property which value has been + loaded as the algorithm.
+ StringgetKeyObtentionIterationsEnvName() + +
+          Retrieve the name of the environment variable which value has been + loaded as the key obtention iteration count.
+ StringgetKeyObtentionIterationsSysPropertyName() + +
+          Retrieve the name of the JVM system property which value has been + loaded as the key obtention iteration count.
+ StringgetPasswordEnvName() + +
+          Retrieve the name of the environment variable which value has been + loaded as the password.
+ StringgetPasswordSysPropertyName() + +
+          Retrieve the name of the JVM system property which value has been + loaded as the password.
+ StringgetPoolSizeEnvName() + +
+          Retrieve the name of the environment variable which value has been + loaded as the value for the poolSize + property.
+ StringgetPoolSizeSysPropertyName() + +
+          Retrieve the name of the JVM system property which value has been + loaded as the value for the poolSize + property.
+ StringgetProviderClassNameEnvName() + +
+          Retrieve the name of the environment variable which value has been + loaded as the provider class name.
+ StringgetProviderClassNameSysPropertyName() + +
+          Retrieve the name of the JVM system property which value has been + loaded as the provider class name.
+ StringgetProviderNameEnvName() + +
+          Retrieve the name of the environment variable which value has been + loaded as the provider name.
+ StringgetProviderNameSysPropertyName() + +
+          Retrieve the name of the JVM system property which value has been + loaded as the provider name.
+ StringgetSaltGeneratorClassNameEnvName() + +
+          Retrieve the name of the environment variable which value has been + loaded as the salt generator class name.
+ StringgetSaltGeneratorClassNameSysPropertyName() + +
+          Retrieve the name of the JVM system property which value has been + loaded as the salt generator class name.
+ voidsetAlgorithm(String algorithm) + +
+           + Sets a value for the encryption algorithm
+ voidsetAlgorithmEnvName(String algorithmEnvName) + +
+          Set the config object to use the specified environment variable to + load the value for the algorithm.
+ voidsetAlgorithmSysPropertyName(String algorithmSysPropertyName) + +
+          Set the config object to use the specified JVM system property to + load the value for the algorithm.
+ voidsetKeyObtentionIterations(Integer keyObtentionIterations) + +
+          Sets the number of hashing iterations applied to obtain the + encryption key.
+ voidsetKeyObtentionIterations(String keyObtentionIterations) + +
+          Sets the number of hashing iterations applied to obtain the + encryption key.
+ voidsetKeyObtentionIterationsEnvName(String keyObtentionIterationsEnvName) + +
+          Set the config object to use the specified environment variable to + load the value for the key obtention iteration count.
+ voidsetKeyObtentionIterationsSysPropertyName(String keyObtentionIterationsSysPropertyName) + +
+          Set the config object to use the specified JVM system property to + load the value for the key obtention iteration count.
+ voidsetPassword(String password) + +
+          Sets the password to be used for encryption.
+ voidsetPasswordCharArray(char[] password) + +
+          Sets the password to be used for encryption, as a char[].
+ voidsetPasswordEnvName(String passwordEnvName) + +
+          Set the config object to use the specified environment variable to + load the value for the password.
+ voidsetPasswordSysPropertyName(String passwordSysPropertyName) + +
+          Set the config object to use the specified JVM system property to + load the value for the password.
+ voidsetPoolSize(Integer poolSize) + +
+           + Sets the size of the pool of encryptors to be created.
+ voidsetPoolSize(String poolSize) + +
+           + Sets the size of the pool of encryptors to be created.
+ voidsetPoolSizeEnvName(String poolSizeEnvName) + +
+           + Set the config object to use the specified environment variable to + load the value for the poolSize + property.
+ voidsetPoolSizeSysPropertyName(String poolSizeSysPropertyName) + +
+           + Set the config object to use the specified JVM system property to + load the value for the useLenientSaltSizeCheck + property.
+ voidsetProvider(java.security.Provider provider) + +
+           + Sets the security provider to be used for obtaining the encryption + algorithm.
+ voidsetProviderClassName(String providerClassName) + +
+           + Sets the security provider to be used for obtaining the encryption + algorithm.
+ voidsetProviderClassNameEnvName(String providerClassNameEnvName) + +
+           + Set the config object to use the specified environment variable to + load the value for the provider class name.
+ voidsetProviderClassNameSysPropertyName(String providerClassNameSysPropertyName) + +
+           + Set the config object to use the specified JVM system property to + load the value for the provider class name.
+ voidsetProviderName(String providerName) + +
+           + Sets the name of the security provider to be asked for the encryption + algorithm.
+ voidsetProviderNameEnvName(String providerNameEnvName) + +
+           + Set the config object to use the specified environment variable to + load the value for the provider name.
+ voidsetProviderNameSysPropertyName(String providerNameSysPropertyName) + +
+          Set the config object to use the specified JVM system property to + load the value for the provider name.
+ voidsetSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator.
+ voidsetSaltGeneratorClassName(String saltGeneratorClassName) + +
+           + Sets the salt generator.
+ voidsetSaltGeneratorClassNameEnvName(String saltGeneratorClassNameEnvName) + +
+           + Set the config object to use the specified environment variable to + load the value for the salt generator class name.
+ voidsetSaltGeneratorClassNameSysPropertyName(String saltGeneratorClassNameSysPropertyName) + +
+           + Set the config object to use the specified JVM system property to + load the value for the salt generator class name.
+ + + + + + + +
Methods inherited from class org.jasypt.encryption.pbe.config.SimplePBEConfig
cleanPassword, getAlgorithm, getKeyObtentionIterations, getPassword, getPasswordCharArray, getPoolSize, getProvider, getProviderName, getSaltGenerator
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EnvironmentPBEConfig

+
+public EnvironmentPBEConfig()
+
+

+ Creates a new EnvironmentPBEConfig instance. +

+

+

+ + + + + + + + +
+Method Detail
+ +

+getAlgorithmEnvName

+
+public String getAlgorithmEnvName()
+
+
Retrieve the name of the environment variable which value has been + loaded as the algorithm. +

+

+ +
Returns:
the name of the variable
+
+
+
+ +

+setAlgorithmEnvName

+
+public void setAlgorithmEnvName(String algorithmEnvName)
+
+
Set the config object to use the specified environment variable to + load the value for the algorithm. +

+

+
Parameters:
algorithmEnvName - the name of the environment variable
+
+
+
+ +

+getAlgorithmSysPropertyName

+
+public String getAlgorithmSysPropertyName()
+
+
Retrieve the name of the JVM system property which value has been + loaded as the algorithm. +

+

+ +
Returns:
the name of the property
+
+
+
+ +

+setAlgorithmSysPropertyName

+
+public void setAlgorithmSysPropertyName(String algorithmSysPropertyName)
+
+
Set the config object to use the specified JVM system property to + load the value for the algorithm. +

+

+
Parameters:
algorithmSysPropertyName - the name of the property
+
+
+
+ +

+getKeyObtentionIterationsEnvName

+
+public String getKeyObtentionIterationsEnvName()
+
+
Retrieve the name of the environment variable which value has been + loaded as the key obtention iteration count. +

+

+ +
Returns:
the name of the variable
+
+
+
+ +

+setKeyObtentionIterationsEnvName

+
+public void setKeyObtentionIterationsEnvName(String keyObtentionIterationsEnvName)
+
+
Set the config object to use the specified environment variable to + load the value for the key obtention iteration count. +

+

+
Parameters:
keyObtentionIterationsEnvName - the name of the environment variable
+
+
+
+ +

+getKeyObtentionIterationsSysPropertyName

+
+public String getKeyObtentionIterationsSysPropertyName()
+
+
Retrieve the name of the JVM system property which value has been + loaded as the key obtention iteration count. +

+

+ +
Returns:
the name of the property
+
+
+
+ +

+setKeyObtentionIterationsSysPropertyName

+
+public void setKeyObtentionIterationsSysPropertyName(String keyObtentionIterationsSysPropertyName)
+
+
Set the config object to use the specified JVM system property to + load the value for the key obtention iteration count. +

+

+
Parameters:
keyObtentionIterationsSysPropertyName - the name of the property
+
+
+
+ +

+getPasswordEnvName

+
+public String getPasswordEnvName()
+
+
Retrieve the name of the environment variable which value has been + loaded as the password. +

+

+ +
Returns:
the name of the variable
+
+
+
+ +

+setPasswordEnvName

+
+public void setPasswordEnvName(String passwordEnvName)
+
+
Set the config object to use the specified environment variable to + load the value for the password. +

+

+
Parameters:
passwordEnvName - the name of the environment variable
+
+
+
+ +

+getPasswordSysPropertyName

+
+public String getPasswordSysPropertyName()
+
+
Retrieve the name of the JVM system property which value has been + loaded as the password. +

+

+ +
Returns:
the name of the property
+
+
+
+ +

+setPasswordSysPropertyName

+
+public void setPasswordSysPropertyName(String passwordSysPropertyName)
+
+
Set the config object to use the specified JVM system property to + load the value for the password. +

+

+
Parameters:
passwordSysPropertyName - the name of the property
+
+
+
+ +

+getSaltGeneratorClassNameEnvName

+
+public String getSaltGeneratorClassNameEnvName()
+
+
Retrieve the name of the environment variable which value has been + loaded as the salt generator class name. +

+

+ +
Returns:
the name of the variable
Since:
+
1.3
+
+
+
+
+ +

+setSaltGeneratorClassNameEnvName

+
+public void setSaltGeneratorClassNameEnvName(String saltGeneratorClassNameEnvName)
+
+

+ Set the config object to use the specified environment variable to + load the value for the salt generator class name. +

+

+ The salt generator class name which is set here must have a no-argument + constructor, so that it can be instantiated and passed to the encryptor. +

+

+

+
Parameters:
saltGeneratorClassNameEnvName - the name of the environment variable
Since:
+
1.3
+
+
+
+
+ +

+getSaltGeneratorClassNameSysPropertyName

+
+public String getSaltGeneratorClassNameSysPropertyName()
+
+
Retrieve the name of the JVM system property which value has been + loaded as the salt generator class name. +

+

+ +
Returns:
the name of the property
Since:
+
1.3
+
+
+
+
+ +

+setSaltGeneratorClassNameSysPropertyName

+
+public void setSaltGeneratorClassNameSysPropertyName(String saltGeneratorClassNameSysPropertyName)
+
+

+ Set the config object to use the specified JVM system property to + load the value for the salt generator class name. +

+

+ The salt generator class name which is set here must have a no-argument + constructor, so that it can be instantiated and passed to the encryptor. +

+

+

+
Parameters:
saltGeneratorClassNameSysPropertyName - the name of the property
Since:
+
1.3
+
+
+
+
+ +

+getProviderNameEnvName

+
+public String getProviderNameEnvName()
+
+
Retrieve the name of the environment variable which value has been + loaded as the provider name. +

+

+ +
Returns:
the name of the variable
Since:
+
1.3
+
+
+
+
+ +

+setProviderNameEnvName

+
+public void setProviderNameEnvName(String providerNameEnvName)
+
+

+ Set the config object to use the specified environment variable to + load the value for the provider name. +

+

+

+
Parameters:
providerNameEnvName - the name of the environment variable
Since:
+
1.3
+
+
+
+
+ +

+getProviderNameSysPropertyName

+
+public String getProviderNameSysPropertyName()
+
+
Retrieve the name of the JVM system property which value has been + loaded as the provider name. +

+

+ +
Returns:
the name of the property
Since:
+
1.3
+
+
+
+
+ +

+setProviderNameSysPropertyName

+
+public void setProviderNameSysPropertyName(String providerNameSysPropertyName)
+
+
Set the config object to use the specified JVM system property to + load the value for the provider name. +

+

+
Parameters:
providerNameSysPropertyName - the name of the property
Since:
+
1.3
+
+
+
+
+ +

+getProviderClassNameEnvName

+
+public String getProviderClassNameEnvName()
+
+
Retrieve the name of the environment variable which value has been + loaded as the provider class name. +

+

+ +
Returns:
the name of the variable
Since:
+
1.3
+
+
+
+
+ +

+setProviderClassNameEnvName

+
+public void setProviderClassNameEnvName(String providerClassNameEnvName)
+
+

+ Set the config object to use the specified environment variable to + load the value for the provider class name. +

+

+ The provider class name which is set here must have a no-argument + constructor, so that it can be instantiated and passed to the encryptor. +

+

+

+
Parameters:
providerClassNameEnvName - the name of the environment variable
Since:
+
1.3
+
+
+
+
+ +

+getProviderClassNameSysPropertyName

+
+public String getProviderClassNameSysPropertyName()
+
+
Retrieve the name of the JVM system property which value has been + loaded as the provider class name. +

+

+ +
Returns:
the name of the property
Since:
+
1.3
+
+
+
+
+ +

+setProviderClassNameSysPropertyName

+
+public void setProviderClassNameSysPropertyName(String providerClassNameSysPropertyName)
+
+

+ Set the config object to use the specified JVM system property to + load the value for the provider class name. +

+

+ The provider class name which is set here must have a no-argument + constructor, so that it can be instantiated and passed to the encryptor. +

+

+

+
Parameters:
providerClassNameSysPropertyName - the name of the property
Since:
+
1.3
+
+
+
+
+ +

+getPoolSizeEnvName

+
+public String getPoolSizeEnvName()
+
+
Retrieve the name of the environment variable which value has been + loaded as the value for the poolSize + property. +

+

+ +
Returns:
the name of the variable
Since:
+
1.7
+
+
+
+
+ +

+setPoolSizeEnvName

+
+public void setPoolSizeEnvName(String poolSizeEnvName)
+
+

+ Set the config object to use the specified environment variable to + load the value for the poolSize + property. +

+

+

+
Parameters:
poolSizeEnvName - the name of the environment variable
Since:
+
1.7
+
+
+
+
+ +

+getPoolSizeSysPropertyName

+
+public String getPoolSizeSysPropertyName()
+
+
Retrieve the name of the JVM system property which value has been + loaded as the value for the poolSize + property. +

+

+ +
Returns:
the name of the property
Since:
+
1.7
+
+
+
+
+ +

+setPoolSizeSysPropertyName

+
+public void setPoolSizeSysPropertyName(String poolSizeSysPropertyName)
+
+

+ Set the config object to use the specified JVM system property to + load the value for the useLenientSaltSizeCheck + property. +

+

+

+
Parameters:
poolSizeSysPropertyName - the name of the property
Since:
+
1.7
+
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+
Description copied from class: SimplePBEConfig
+

+ Sets a value for the encryption algorithm +

+

+ This algorithm has to be supported by your JCE provider and, if this provider + supports it, you can also specify mode and padding for + it, like ALGORITHM/MODE/PADDING. +

+

+ Determines the result of: SimplePBEConfig.getAlgorithm() +

+

+

+
Overrides:
setAlgorithm in class SimplePBEConfig
+
+
+
Parameters:
algorithm - the name of the algorithm to be used
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(Integer keyObtentionIterations)
+
+
Description copied from class: SimplePBEConfig
+
Sets the number of hashing iterations applied to obtain the + encryption key. +

+ Determines the result of: SimplePBEConfig.getKeyObtentionIterations() +

+

+

+
Overrides:
setKeyObtentionIterations in class SimplePBEConfig
+
+
+
Parameters:
keyObtentionIterations - the number of iterations.
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(String keyObtentionIterations)
+
+
Description copied from class: SimplePBEConfig
+
Sets the number of hashing iterations applied to obtain the + encryption key. +

+ Determines the result of: SimplePBEConfig.getKeyObtentionIterations() +

+

+

+
Overrides:
setKeyObtentionIterations in class SimplePBEConfig
+
+
+
Parameters:
keyObtentionIterations - the number of iterations.
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+
Description copied from class: SimplePBEConfig
+
Sets the password to be used for encryption. +

+ Determines the result of: SimplePBEConfig.getPassword() and + SimplePBEConfig.getPasswordCharArray(). +

+

+

+
Overrides:
setPassword in class SimplePBEConfig
+
+
+
Parameters:
password - the password to be used.
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+
Description copied from class: SimplePBEConfig
+
Sets the password to be used for encryption, as a char[]. +

+ This allows the password to be specified as a cleanable + char[] instead of a String, in extreme security conscious environments + in which no copy of the password as an immutable String should + be kept in memory. +

+

+ Important: the array specified as a parameter WILL BE COPIED + in order to be stored in the configuration object. The caller of + this method will therefore be responsible for its cleaning (jasypt + will only clean the internally stored copy). +

+

+ Determines the result of: SimplePBEConfig.getPassword() and + SimplePBEConfig.getPasswordCharArray(). +

+

+

+
Overrides:
setPasswordCharArray in class SimplePBEConfig
+
+
+
Parameters:
password - the password to be used.
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(SaltGenerator saltGenerator)
+
+
Description copied from class: SimplePBEConfig
+

+ Sets the salt generator. +

+

+ If not set, null will returned. +

+

+ Determines the result of: SimplePBEConfig.getSaltGenerator() +

+

+

+
Overrides:
setSaltGenerator in class SimplePBEConfig
+
+
+
Parameters:
saltGenerator - the salt generator.
+
+
+
+ +

+setSaltGeneratorClassName

+
+public void setSaltGeneratorClassName(String saltGeneratorClassName)
+
+
Description copied from class: SimplePBEConfig
+

+ Sets the salt generator. +

+

+ If not set, null will returned. +

+

+ Determines the result of: SimplePBEConfig.getSaltGenerator() +

+

+

+
Overrides:
setSaltGeneratorClassName in class SimplePBEConfig
+
+
+
Parameters:
saltGeneratorClassName - the name of the salt generator class.
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+
Description copied from class: SimplePBEConfig
+

+ Sets the name of the security provider to be asked for the encryption + algorithm. This provider should be already registered. +

+

+ If both the providerName and provider properties + are set, only provider will be used, and providerName + will have no meaning for the encryptor object. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: SimplePBEConfig.getProviderName() +

+

+

+
Overrides:
setProviderName in class SimplePBEConfig
+
+
+
Parameters:
providerName - the name of the security provider.
+
+
+
+ +

+setProvider

+
+public void setProvider(java.security.Provider provider)
+
+
Description copied from class: SimplePBEConfig
+

+ Sets the security provider to be used for obtaining the encryption + algorithm. This method is an alternative to + both SimplePBEConfig.setProviderName(String) and + SimplePBEConfig.setProviderClassName(String) and they should not be used + altogether. + The provider specified with SimplePBEConfig.setProvider(Provider) does not + have to be registered beforehand, and its use will not result in its + being registered. +

+

+ If both the providerName and provider properties + are set, only provider will be used, and providerName + will have no meaning for the encryptor object. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: SimplePBEConfig.getProvider() +

+

+

+
Overrides:
setProvider in class SimplePBEConfig
+
+
+
Parameters:
provider - the security provider object.
+
+
+
+ +

+setProviderClassName

+
+public void setProviderClassName(String providerClassName)
+
+
Description copied from class: SimplePBEConfig
+

+ Sets the security provider to be used for obtaining the encryption + algorithm. This method is an alternative to + both SimplePBEConfig.setProviderName(String) and SimplePBEConfig.setProvider(Provider) + and they should not be used altogether. + The provider specified with SimplePBEConfig.setProviderClassName(String) does not + have to be registered beforehand, and its use will not result in its + being registered. +

+

+ If both the providerName and provider properties + are set, only provider will be used, and providerName + will have no meaning for the encryptor object. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: SimplePBEConfig.getProvider() +

+

+

+
Overrides:
setProviderClassName in class SimplePBEConfig
+
+
+
Parameters:
providerClassName - the name of the security provider class.
+
+
+
+ +

+setPoolSize

+
+public void setPoolSize(Integer poolSize)
+
+
Description copied from class: SimplePBEConfig
+

+ Sets the size of the pool of encryptors to be created. +

+

+ This parameter will be ignored if used with a non-pooled encryptor. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: SimplePBEConfig.getPoolSize() +

+

+

+
Overrides:
setPoolSize in class SimplePBEConfig
+
+
+
Parameters:
poolSize - the size of the pool to be used if this configuration is used with a + pooled encryptor
+
+
+
+ +

+setPoolSize

+
+public void setPoolSize(String poolSize)
+
+
Description copied from class: SimplePBEConfig
+

+ Sets the size of the pool of encryptors to be created. +

+

+ This parameter will be ignored if used with a non-pooled encryptor. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: SimplePBEConfig.getPoolSize() +

+

+

+
Overrides:
setPoolSize in class SimplePBEConfig
+
+
+
Parameters:
poolSize - the size of the pool to be used if this configuration is used with a + pooled encryptor
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/EnvironmentStringPBEConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/EnvironmentStringPBEConfig.html new file mode 100644 index 00000000..453ebd21 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/EnvironmentStringPBEConfig.html @@ -0,0 +1,475 @@ + + + + + + + +EnvironmentStringPBEConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe.config +
+Class EnvironmentStringPBEConfig

+
+Object
+  extended by org.jasypt.encryption.pbe.config.SimplePBEConfig
+      extended by org.jasypt.encryption.pbe.config.EnvironmentPBEConfig
+          extended by org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig
+
+
+
All Implemented Interfaces:
PBECleanablePasswordConfig, PBEConfig, StringPBEConfig
+
+
+
+
public class EnvironmentStringPBEConfig
extends EnvironmentPBEConfig
implements StringPBEConfig
+ + +

+

+ Implementation for StringPBEConfig which can retrieve configuration + values from environment variables or system properties. +

+

+ The name of the environment variable or system property (JVM property) to + query for each parameter can be set with its corresponding + setXEnvName or setXSysProperty method. +

+

+ As this class extends SimplePBEConfig, parameter values + can be also set with the usual setX methods. +

+

+ For any of the configuration parameters, if its value is not configured + in any way, a null value will be returned by the + corresponding getX method. +

+

+ +

+

+
Since:
+
1.3
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
EnvironmentStringPBEConfig() + +
+           + Creates a new EnvironmentStringPBEConfig instance.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringgetStringOutputType() + +
+           + This parameter lets the user specify the form in which String output + will be encoded.
+ StringgetStringOutputTypeEnvName() + +
+          Retrieve the name of the environment variable which value has been + loaded as the String output type.
+ StringgetStringOutputTypeSysPropertyName() + +
+          Retrieve the name of the JVM system property which value has been + loaded as the String output type.
+ voidsetStringOutputType(String stringOutputType) + +
+           + Sets the the form in which String output + will be encoded.
+ voidsetStringOutputTypeEnvName(String stringOutputTypeEnvName) + +
+          Set the config object to use the specified environment variable to + load the value for the String output type.
+ voidsetStringOutputTypeSysPropertyName(String stringOutputTypeSysPropertyName) + +
+          Set the config object to use the specified JVM system property to + load the value for the String output type.
+ + + + + + + +
Methods inherited from class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig
getAlgorithmEnvName, getAlgorithmSysPropertyName, getKeyObtentionIterationsEnvName, getKeyObtentionIterationsSysPropertyName, getPasswordEnvName, getPasswordSysPropertyName, getPoolSizeEnvName, getPoolSizeSysPropertyName, getProviderClassNameEnvName, getProviderClassNameSysPropertyName, getProviderNameEnvName, getProviderNameSysPropertyName, getSaltGeneratorClassNameEnvName, getSaltGeneratorClassNameSysPropertyName, setAlgorithm, setAlgorithmEnvName, setAlgorithmSysPropertyName, setKeyObtentionIterations, setKeyObtentionIterations, setKeyObtentionIterationsEnvName, setKeyObtentionIterationsSysPropertyName, setPassword, setPasswordCharArray, setPasswordEnvName, setPasswordSysPropertyName, setPoolSize, setPoolSize, setPoolSizeEnvName, setPoolSizeSysPropertyName, setProvider, setProviderClassName, setProviderClassNameEnvName, setProviderClassNameSysPropertyName, setProviderName, setProviderNameEnvName, setProviderNameSysPropertyName, setSaltGenerator, setSaltGeneratorClassName, setSaltGeneratorClassNameEnvName, setSaltGeneratorClassNameSysPropertyName
+ + + + + + + +
Methods inherited from class org.jasypt.encryption.pbe.config.SimplePBEConfig
cleanPassword, getAlgorithm, getKeyObtentionIterations, getPassword, getPasswordCharArray, getPoolSize, getProvider, getProviderName, getSaltGenerator
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.pbe.config.PBEConfig
getAlgorithm, getKeyObtentionIterations, getPassword, getPoolSize, getProvider, getProviderName, getSaltGenerator
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EnvironmentStringPBEConfig

+
+public EnvironmentStringPBEConfig()
+
+

+ Creates a new EnvironmentStringPBEConfig instance. +

+

+

+ + + + + + + + +
+Method Detail
+ +

+getStringOutputTypeEnvName

+
+public String getStringOutputTypeEnvName()
+
+
Retrieve the name of the environment variable which value has been + loaded as the String output type. +

+

+
+
+
+ +
Returns:
the name of the variable
+
+
+
+ +

+setStringOutputTypeEnvName

+
+public void setStringOutputTypeEnvName(String stringOutputTypeEnvName)
+
+
Set the config object to use the specified environment variable to + load the value for the String output type. +

+

+
+
+
+
Parameters:
stringOutputTypeEnvName - the name of the environment variable
+
+
+
+ +

+getStringOutputTypeSysPropertyName

+
+public String getStringOutputTypeSysPropertyName()
+
+
Retrieve the name of the JVM system property which value has been + loaded as the String output type. +

+

+
+
+
+ +
Returns:
the name of the property
+
+
+
+ +

+setStringOutputTypeSysPropertyName

+
+public void setStringOutputTypeSysPropertyName(String stringOutputTypeSysPropertyName)
+
+
Set the config object to use the specified JVM system property to + load the value for the String output type. +

+

+
+
+
+
Parameters:
stringOutputTypeSysPropertyName - the name of the property
+
+
+
+ +

+setStringOutputType

+
+public void setStringOutputType(String stringOutputType)
+
+

+ Sets the the form in which String output + will be encoded. Available encoding types are: +

+
    +
  • base64 (default)
  • +
  • hexadecimal
  • +
+

+ If not set, null will be returned. +

+

+

+
+
+
+
Parameters:
stringOutputType - the string output type.
+
+
+
+ +

+getStringOutputType

+
+public String getStringOutputType()
+
+
Description copied from interface: StringPBEConfig
+

+ This parameter lets the user specify the form in which String output + will be encoded. Available encoding types are: +

+
    +
  • base64 (default)
  • +
  • hexadecimal
  • +
+

+

+
Specified by:
getStringOutputType in interface StringPBEConfig
+
+
+ +
Returns:
The name of the encoding type for String output
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/PBECleanablePasswordConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/PBECleanablePasswordConfig.html new file mode 100644 index 00000000..665316fc --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/PBECleanablePasswordConfig.html @@ -0,0 +1,266 @@ + + + + + + + +PBECleanablePasswordConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe.config +
+Interface PBECleanablePasswordConfig

+
+
All Known Implementing Classes:
EnvironmentPBEConfig, EnvironmentStringPBEConfig, SimplePBEConfig, SimpleStringPBEConfig, WebPBEConfig, WebStringPBEConfig
+
+
+
+
public interface PBECleanablePasswordConfig
+ + +

+

+ Common interface for all PBEConfig implementations that store passwords as char[] instead + of String and also allow this passwords to be set as char[] instead of Strings. +

+

+ +

+

+
Since:
+
1.8
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + +
+Method Summary
+ voidcleanPassword() + +
+           + Clean the password stored in this configuration object.
+ char[]getPasswordCharArray() + +
+           + Return the password set, as a char array.
+  +

+ + + + + + + + +
+Method Detail
+ +

+getPasswordCharArray

+
+char[] getPasswordCharArray()
+
+

+ Return the password set, as a char array. +

+

+ Important: the returned array MUST BE A COPY of the one + stored in the configuration object. The caller of + this method is therefore be responsible for cleaning this + resulting char[]. +

+

+

+
Since:
+
1.8
+
+
+
+
+ +

+cleanPassword

+
+void cleanPassword()
+
+

+ Clean the password stored in this configuration object. +

+

+ A common implementation of this cleaning operation consists of + iterating the array of chars and setting each of its positions to (char)0. +

+

+

+
Since:
+
1.8
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/PBEConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/PBEConfig.html new file mode 100644 index 00000000..4df71090 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/PBEConfig.html @@ -0,0 +1,468 @@ + + + + + + + +PBEConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe.config +
+Interface PBEConfig

+
+
All Known Subinterfaces:
StringPBEConfig
+
+
+
All Known Implementing Classes:
EnvironmentPBEConfig, EnvironmentStringPBEConfig, SimplePBEConfig, SimpleStringPBEConfig, WebPBEConfig, WebStringPBEConfig
+
+
+
+
public interface PBEConfig
+ + +

+

+ Common interface for config classes applicable to + StandardPBEByteEncryptor, + StandardPBEStringEncryptor, + StandardPBEBigIntegerEncryptor or + StandardPBEBigDecimalEncryptor objects. +

+

+ This interface lets the user create new PBEConfig + classes which retrieve values for this parameters from different + (and maybe more secure) sources (remote servers, LDAP, other databases...), + and do this transparently for the encryptor object. +

+

+ The config objects passed to an encryptor will only be queried once + for each configuration parameter, and this will happen + during the initialization of the encryptor object. +

+

+ For a default implementation, see SimplePBEConfig. +

+

+ +

+

+
Since:
+
1.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringgetAlgorithm() + +
+           + Returns the algorithm to be used for encryption, like + PBEWithMD5AndDES.
+ IntegergetKeyObtentionIterations() + +
+           + Returns the number of hashing iterations applied to obtain the + encryption key.
+ StringgetPassword() + +
+           + Returns the password to be used.
+ IntegergetPoolSize() + +
+           + Get the size of the pool of encryptors to be created.
+ java.security.ProvidergetProvider() + +
+           + Returns the java.security.Provider implementation object + to be used by the encryptor for obtaining the encryption algorithm.
+ StringgetProviderName() + +
+           + Returns the name of the java.security.Provider implementation + to be used by the encryptor for obtaining the encryption algorithm.
+ SaltGeneratorgetSaltGenerator() + +
+           + Returns a SaltGenerator implementation to be used by the + encryptor.
+  +

+ + + + + + + + +
+Method Detail
+ +

+getAlgorithm

+
+String getAlgorithm()
+
+

+ Returns the algorithm to be used for encryption, like + PBEWithMD5AndDES. +

+ +

+ This algorithm has to be supported by the specified JCE provider + (or the default one if no provider has been specified) and, if the + provider supports it, you can also specify mode and + padding for it, like ALGORITHM/MODE/PADDING. +

+

+

+ +
Returns:
the name of the algorithm to be used.
+
+
+
+ +

+getPassword

+
+String getPassword()
+
+

+ Returns the password to be used. +

+

+ There is no default value for password, so not setting + this parameter either from a + PBEConfig object or from + a call to setPassword will result in an + EncryptionInitializationException being thrown during initialization. +

+

+

+ +
Returns:
the password to be used.
+
+
+
+ +

+getKeyObtentionIterations

+
+Integer getKeyObtentionIterations()
+
+

+ Returns the number of hashing iterations applied to obtain the + encryption key. +

+

+ This mechanism is explained in + PKCS #5: Password-Based Cryptography Standard. +

+

+

+ +
Returns:
the number of iterations
+
+
+
+ +

+getSaltGenerator

+
+SaltGenerator getSaltGenerator()
+
+

+ Returns a SaltGenerator implementation to be used by the + encryptor. +

+

+ If this method returns null, the encryptor will ignore the config object + when deciding the salt generator to be used. +

+

+

+ +
Returns:
the salt generator, or null if this object will not want to set + a specific SaltGenerator implementation.
+
+
+
+ +

+getProviderName

+
+String getProviderName()
+
+

+ Returns the name of the java.security.Provider implementation + to be used by the encryptor for obtaining the encryption algorithm. This + provider must have been registered beforehand. +

+

+ If this method returns null, the encryptor will ignore this parameter + when deciding the name of the security provider to be used. +

+

+ If this method does not return null, and neither does getProvider(), + providerName will be ignored, and the provider object returned + by getProvider() will be used. +

+

+

+ +
Returns:
the name of the security provider to be used.
Since:
+
1.3
+
+
+
+
+ +

+getProvider

+
+java.security.Provider getProvider()
+
+

+ Returns the java.security.Provider implementation object + to be used by the encryptor for obtaining the encryption algorithm. +

+

+ If this method returns null, the encryptor will ignore this parameter + when deciding the security provider object to be used. +

+

+ If this method does not return null, and neither does getProviderName(), + providerName will be ignored, and the provider object returned + by getProvider() will be used. +

+

+ The provider returned by this method does not need to be + registered beforehand, and its use will not result in its + being registered. +

+

+

+ +
Returns:
the security provider object to be asked for the digest + algorithm.
Since:
+
1.3
+
+
+
+
+ +

+getPoolSize

+
+Integer getPoolSize()
+
+

+ Get the size of the pool of encryptors to be created. +

+

+ This parameter will be ignored if used with a non-pooled encryptor. +

+

+

+ +
Returns:
the size of the pool to be used if this configuration is used with a + pooled encryptor
Since:
+
1.7
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/SimplePBEConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/SimplePBEConfig.html new file mode 100644 index 00000000..c6f60421 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/SimplePBEConfig.html @@ -0,0 +1,1065 @@ + + + + + + + +SimplePBEConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe.config +
+Class SimplePBEConfig

+
+Object
+  extended by org.jasypt.encryption.pbe.config.SimplePBEConfig
+
+
+
All Implemented Interfaces:
PBECleanablePasswordConfig, PBEConfig
+
+
+
Direct Known Subclasses:
EnvironmentPBEConfig, SimpleStringPBEConfig, WebPBEConfig
+
+
+
+
public class SimplePBEConfig
extends Object
implements PBEConfig, PBECleanablePasswordConfig
+ + +

+

+ Bean implementation for PBEConfig. This class allows + the values for the configuration parameters to be set + via "standard" setX methods. +

+

+ For any of the configuration parameters, if its setX + method is not called, a null value will be returned by the + corresponding getX method. +

+

+ Note that there is not an exact correspondence between setX() + and getX() methods, as sometimes two methods like + setProvider() and setProviderClassName() will affect the + same configuration parameter (getProvider()). This means that + several combinations of setX() methods collide, and + should not be called together (a call to setProviderClassName() + will override any previous call to setProvider()). +

+

+ Also note that, in order to satisfy the needs of extreme security-conscious + environments in which no immutable String containing the password is allowed + to be kept in memory, this configuration objects stores the password as char[] + that is cleaned (reset to '') by the jasypt engine as soon as encryption operations + start (and therefore the specified password is no longer needed as an attribute) + (see PBECleanablePasswordConfig). +

+

+ Setting and getting the password as a char[] is also allowed via the + getPasswordCharArray() and setPasswordCharArray(char[]) methods. +

+

+ +

+

+
Since:
+
1.0
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
SimplePBEConfig() + +
+           + Creates a new SimplePBEConfig instance.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidcleanPassword() + +
+           + Clean the password stored in this configuration object.
+ StringgetAlgorithm() + +
+           + Returns the algorithm to be used for encryption, like + PBEWithMD5AndDES.
+ IntegergetKeyObtentionIterations() + +
+           + Returns the number of hashing iterations applied to obtain the + encryption key.
+ StringgetPassword() + +
+           + Returns the password to be used.
+ char[]getPasswordCharArray() + +
+           + Return the password set, as a char array.
+ IntegergetPoolSize() + +
+           + Get the size of the pool of encryptors to be created.
+ java.security.ProvidergetProvider() + +
+           + Returns the java.security.Provider implementation object + to be used by the encryptor for obtaining the encryption algorithm.
+ StringgetProviderName() + +
+           + Returns the name of the java.security.Provider implementation + to be used by the encryptor for obtaining the encryption algorithm.
+ SaltGeneratorgetSaltGenerator() + +
+           + Returns a SaltGenerator implementation to be used by the + encryptor.
+ voidsetAlgorithm(String algorithm) + +
+           + Sets a value for the encryption algorithm
+ voidsetKeyObtentionIterations(Integer keyObtentionIterations) + +
+          Sets the number of hashing iterations applied to obtain the + encryption key.
+ voidsetKeyObtentionIterations(String keyObtentionIterations) + +
+          Sets the number of hashing iterations applied to obtain the + encryption key.
+ voidsetPassword(String password) + +
+          Sets the password to be used for encryption.
+ voidsetPasswordCharArray(char[] password) + +
+          Sets the password to be used for encryption, as a char[].
+ voidsetPoolSize(Integer poolSize) + +
+           + Sets the size of the pool of encryptors to be created.
+ voidsetPoolSize(String poolSize) + +
+           + Sets the size of the pool of encryptors to be created.
+ voidsetProvider(java.security.Provider provider) + +
+           + Sets the security provider to be used for obtaining the encryption + algorithm.
+ voidsetProviderClassName(String providerClassName) + +
+           + Sets the security provider to be used for obtaining the encryption + algorithm.
+ voidsetProviderName(String providerName) + +
+           + Sets the name of the security provider to be asked for the encryption + algorithm.
+ voidsetSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator.
+ voidsetSaltGeneratorClassName(String saltGeneratorClassName) + +
+           + Sets the salt generator.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+SimplePBEConfig

+
+public SimplePBEConfig()
+
+

+ Creates a new SimplePBEConfig instance. +

+

+

+ + + + + + + + +
+Method Detail
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+

+ Sets a value for the encryption algorithm +

+

+ This algorithm has to be supported by your JCE provider and, if this provider + supports it, you can also specify mode and padding for + it, like ALGORITHM/MODE/PADDING. +

+

+ Determines the result of: getAlgorithm() +

+

+

+
+
+
+
Parameters:
algorithm - the name of the algorithm to be used
+
+
+
+ +

+setPassword

+
+public void setPassword(String password)
+
+
Sets the password to be used for encryption. +

+ Determines the result of: getPassword() and + getPasswordCharArray(). +

+

+

+
+
+
+
Parameters:
password - the password to be used.
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+
Sets the password to be used for encryption, as a char[]. +

+ This allows the password to be specified as a cleanable + char[] instead of a String, in extreme security conscious environments + in which no copy of the password as an immutable String should + be kept in memory. +

+

+ Important: the array specified as a parameter WILL BE COPIED + in order to be stored in the configuration object. The caller of + this method will therefore be responsible for its cleaning (jasypt + will only clean the internally stored copy). +

+

+ Determines the result of: getPassword() and + getPasswordCharArray(). +

+

+

+
+
+
+
Parameters:
password - the password to be used.
Since:
+
1.8
+
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(Integer keyObtentionIterations)
+
+
Sets the number of hashing iterations applied to obtain the + encryption key. +

+ Determines the result of: getKeyObtentionIterations() +

+

+

+
+
+
+
Parameters:
keyObtentionIterations - the number of iterations.
+
+
+
+ +

+setKeyObtentionIterations

+
+public void setKeyObtentionIterations(String keyObtentionIterations)
+
+
Sets the number of hashing iterations applied to obtain the + encryption key. +

+ Determines the result of: getKeyObtentionIterations() +

+

+

+
+
+
+
Parameters:
keyObtentionIterations - the number of iterations.
Since:
+
1.4
+
+
+
+
+ +

+setSaltGenerator

+
+public void setSaltGenerator(SaltGenerator saltGenerator)
+
+

+ Sets the salt generator. +

+

+ If not set, null will returned. +

+

+ Determines the result of: getSaltGenerator() +

+

+

+
+
+
+
Parameters:
saltGenerator - the salt generator.
+
+
+
+ +

+setSaltGeneratorClassName

+
+public void setSaltGeneratorClassName(String saltGeneratorClassName)
+
+

+ Sets the salt generator. +

+

+ If not set, null will returned. +

+

+ Determines the result of: getSaltGenerator() +

+

+

+
+
+
+
Parameters:
saltGeneratorClassName - the name of the salt generator class.
Since:
+
1.4
+
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+

+ Sets the name of the security provider to be asked for the encryption + algorithm. This provider should be already registered. +

+

+ If both the providerName and provider properties + are set, only provider will be used, and providerName + will have no meaning for the encryptor object. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: getProviderName() +

+

+

+
+
+
+
Parameters:
providerName - the name of the security provider.
Since:
+
1.3
+
+
+
+
+ +

+setProvider

+
+public void setProvider(java.security.Provider provider)
+
+

+ Sets the security provider to be used for obtaining the encryption + algorithm. This method is an alternative to + both setProviderName(String) and + setProviderClassName(String) and they should not be used + altogether. + The provider specified with setProvider(Provider) does not + have to be registered beforehand, and its use will not result in its + being registered. +

+

+ If both the providerName and provider properties + are set, only provider will be used, and providerName + will have no meaning for the encryptor object. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: getProvider() +

+

+

+
+
+
+
Parameters:
provider - the security provider object.
Since:
+
1.3
+
+
+
+
+ +

+setProviderClassName

+
+public void setProviderClassName(String providerClassName)
+
+

+ Sets the security provider to be used for obtaining the encryption + algorithm. This method is an alternative to + both setProviderName(String) and setProvider(Provider) + and they should not be used altogether. + The provider specified with setProviderClassName(String) does not + have to be registered beforehand, and its use will not result in its + being registered. +

+

+ If both the providerName and provider properties + are set, only provider will be used, and providerName + will have no meaning for the encryptor object. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: getProvider() +

+

+

+
+
+
+
Parameters:
providerClassName - the name of the security provider class.
Since:
+
1.4
+
+
+
+
+ +

+setPoolSize

+
+public void setPoolSize(Integer poolSize)
+
+

+ Sets the size of the pool of encryptors to be created. +

+

+ This parameter will be ignored if used with a non-pooled encryptor. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: getPoolSize() +

+

+

+
+
+
+
Parameters:
poolSize - the size of the pool to be used if this configuration is used with a + pooled encryptor
Since:
+
1.7
+
+
+
+
+ +

+setPoolSize

+
+public void setPoolSize(String poolSize)
+
+

+ Sets the size of the pool of encryptors to be created. +

+

+ This parameter will be ignored if used with a non-pooled encryptor. +

+

+ If not set, null will be returned. +

+

+ Determines the result of: getPoolSize() +

+

+

+
+
+
+
Parameters:
poolSize - the size of the pool to be used if this configuration is used with a + pooled encryptor
Since:
+
1.7
+
+
+
+
+ +

+getAlgorithm

+
+public String getAlgorithm()
+
+
Description copied from interface: PBEConfig
+

+ Returns the algorithm to be used for encryption, like + PBEWithMD5AndDES. +

+ +

+ This algorithm has to be supported by the specified JCE provider + (or the default one if no provider has been specified) and, if the + provider supports it, you can also specify mode and + padding for it, like ALGORITHM/MODE/PADDING. +

+

+

+
Specified by:
getAlgorithm in interface PBEConfig
+
+
+ +
Returns:
the name of the algorithm to be used.
+
+
+
+ +

+getPassword

+
+public String getPassword()
+
+
Description copied from interface: PBEConfig
+

+ Returns the password to be used. +

+

+ There is no default value for password, so not setting + this parameter either from a + PBEConfig object or from + a call to setPassword will result in an + EncryptionInitializationException being thrown during initialization. +

+

+

+
Specified by:
getPassword in interface PBEConfig
+
+
+ +
Returns:
the password to be used.
+
+
+
+ +

+getPasswordCharArray

+
+public char[] getPasswordCharArray()
+
+
Description copied from interface: PBECleanablePasswordConfig
+

+ Return the password set, as a char array. +

+

+ Important: the returned array MUST BE A COPY of the one + stored in the configuration object. The caller of + this method is therefore be responsible for cleaning this + resulting char[]. +

+

+

+
Specified by:
getPasswordCharArray in interface PBECleanablePasswordConfig
+
+
+
+
+
+
+ +

+getKeyObtentionIterations

+
+public Integer getKeyObtentionIterations()
+
+
Description copied from interface: PBEConfig
+

+ Returns the number of hashing iterations applied to obtain the + encryption key. +

+

+ This mechanism is explained in + PKCS #5: Password-Based Cryptography Standard. +

+

+

+
Specified by:
getKeyObtentionIterations in interface PBEConfig
+
+
+ +
Returns:
the number of iterations
+
+
+
+ +

+getSaltGenerator

+
+public SaltGenerator getSaltGenerator()
+
+
Description copied from interface: PBEConfig
+

+ Returns a SaltGenerator implementation to be used by the + encryptor. +

+

+ If this method returns null, the encryptor will ignore the config object + when deciding the salt generator to be used. +

+

+

+
Specified by:
getSaltGenerator in interface PBEConfig
+
+
+ +
Returns:
the salt generator, or null if this object will not want to set + a specific SaltGenerator implementation.
+
+
+
+ +

+getProviderName

+
+public String getProviderName()
+
+
Description copied from interface: PBEConfig
+

+ Returns the name of the java.security.Provider implementation + to be used by the encryptor for obtaining the encryption algorithm. This + provider must have been registered beforehand. +

+

+ If this method returns null, the encryptor will ignore this parameter + when deciding the name of the security provider to be used. +

+

+ If this method does not return null, and neither does PBEConfig.getProvider(), + providerName will be ignored, and the provider object returned + by getProvider() will be used. +

+

+

+
Specified by:
getProviderName in interface PBEConfig
+
+
+ +
Returns:
the name of the security provider to be used.
+
+
+
+ +

+getProvider

+
+public java.security.Provider getProvider()
+
+
Description copied from interface: PBEConfig
+

+ Returns the java.security.Provider implementation object + to be used by the encryptor for obtaining the encryption algorithm. +

+

+ If this method returns null, the encryptor will ignore this parameter + when deciding the security provider object to be used. +

+

+ If this method does not return null, and neither does PBEConfig.getProviderName(), + providerName will be ignored, and the provider object returned + by getProvider() will be used. +

+

+ The provider returned by this method does not need to be + registered beforehand, and its use will not result in its + being registered. +

+

+

+
Specified by:
getProvider in interface PBEConfig
+
+
+ +
Returns:
the security provider object to be asked for the digest + algorithm.
+
+
+
+ +

+getPoolSize

+
+public Integer getPoolSize()
+
+
Description copied from interface: PBEConfig
+

+ Get the size of the pool of encryptors to be created. +

+

+ This parameter will be ignored if used with a non-pooled encryptor. +

+

+

+
Specified by:
getPoolSize in interface PBEConfig
+
+
+ +
Returns:
the size of the pool to be used if this configuration is used with a + pooled encryptor
+
+
+
+ +

+cleanPassword

+
+public void cleanPassword()
+
+
Description copied from interface: PBECleanablePasswordConfig
+

+ Clean the password stored in this configuration object. +

+

+ A common implementation of this cleaning operation consists of + iterating the array of chars and setting each of its positions to (char)0. +

+

+

+
Specified by:
cleanPassword in interface PBECleanablePasswordConfig
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/SimpleStringPBEConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/SimpleStringPBEConfig.html new file mode 100644 index 00000000..365106fe --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/SimpleStringPBEConfig.html @@ -0,0 +1,354 @@ + + + + + + + +SimpleStringPBEConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe.config +
+Class SimpleStringPBEConfig

+
+Object
+  extended by org.jasypt.encryption.pbe.config.SimplePBEConfig
+      extended by org.jasypt.encryption.pbe.config.SimpleStringPBEConfig
+
+
+
All Implemented Interfaces:
PBECleanablePasswordConfig, PBEConfig, StringPBEConfig
+
+
+
+
public class SimpleStringPBEConfig
extends SimplePBEConfig
implements StringPBEConfig
+ + +

+

+ Bean implementation for StringPBEConfig. This class allows + the values for the configuration parameters to be set + via "standard" setX methods. +

+

+ For any of the configuration parameters, if its setX + method is not called, a null value will be returned by the + corresponding getX method. +

+

+ +

+

+
Since:
+
1.3
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
SimpleStringPBEConfig() + +
+           + Creates a new SimpleStringPBEConfig instance.
+  + + + + + + + + + + + + + + + +
+Method Summary
+ StringgetStringOutputType() + +
+           + This parameter lets the user specify the form in which String output + will be encoded.
+ voidsetStringOutputType(String stringOutputType) + +
+           + Sets the the form in which String output + will be encoded.
+ + + + + + + +
Methods inherited from class org.jasypt.encryption.pbe.config.SimplePBEConfig
cleanPassword, getAlgorithm, getKeyObtentionIterations, getPassword, getPasswordCharArray, getPoolSize, getProvider, getProviderName, getSaltGenerator, setAlgorithm, setKeyObtentionIterations, setKeyObtentionIterations, setPassword, setPasswordCharArray, setPoolSize, setPoolSize, setProvider, setProviderClassName, setProviderName, setSaltGenerator, setSaltGeneratorClassName
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.pbe.config.PBEConfig
getAlgorithm, getKeyObtentionIterations, getPassword, getPoolSize, getProvider, getProviderName, getSaltGenerator
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+SimpleStringPBEConfig

+
+public SimpleStringPBEConfig()
+
+

+ Creates a new SimpleStringPBEConfig instance. +

+

+

+ + + + + + + + +
+Method Detail
+ +

+setStringOutputType

+
+public void setStringOutputType(String stringOutputType)
+
+

+ Sets the the form in which String output + will be encoded. Available encoding types are: +

+
    +
  • base64 (default)
  • +
  • hexadecimal
  • +
+

+ If not set, null will be returned. +

+

+ Determines the result of: getStringOutputType() +

+

+

+
+
+
+
Parameters:
stringOutputType - the string output type.
+
+
+
+ +

+getStringOutputType

+
+public String getStringOutputType()
+
+
Description copied from interface: StringPBEConfig
+

+ This parameter lets the user specify the form in which String output + will be encoded. Available encoding types are: +

+
    +
  • base64 (default)
  • +
  • hexadecimal
  • +
+

+

+
Specified by:
getStringOutputType in interface StringPBEConfig
+
+
+ +
Returns:
The name of the encoding type for String output
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/StringPBEConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/StringPBEConfig.html new file mode 100644 index 00000000..100f6653 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/StringPBEConfig.html @@ -0,0 +1,266 @@ + + + + + + + +StringPBEConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe.config +
+Interface StringPBEConfig

+
+
All Superinterfaces:
PBEConfig
+
+
+
All Known Implementing Classes:
EnvironmentStringPBEConfig, SimpleStringPBEConfig, WebStringPBEConfig
+
+
+
+
public interface StringPBEConfig
extends PBEConfig
+ + +

+

+ Common interface for config classes applicable to + StandardPBEStringEncryptor objects. + This interface extends PBEConfig to add config parameters specific + to String encryption. +

+

+ This interface lets the user create new PBEConfig + classes which retrieve values for this parameters from different + (and maybe more secure) sources (remote servers, LDAP, other databases...), + and do this transparently for the encryptor object. +

+

+ The config objects passed to an encryptor will only be queried once + for each configuration parameter, and this will happen + during the initialization of the encryptor object. +

+

+ For a default implementation, see SimpleStringPBEConfig. +

+

+ +

+

+
Since:
+
1.3
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + +
+Method Summary
+ StringgetStringOutputType() + +
+           + This parameter lets the user specify the form in which String output + will be encoded.
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.pbe.config.PBEConfig
getAlgorithm, getKeyObtentionIterations, getPassword, getPoolSize, getProvider, getProviderName, getSaltGenerator
+  +

+ + + + + + + + +
+Method Detail
+ +

+getStringOutputType

+
+String getStringOutputType()
+
+

+ This parameter lets the user specify the form in which String output + will be encoded. Available encoding types are: +

+
    +
  • base64 (default)
  • +
  • hexadecimal
  • +
+

+

+
+
+
+ +
Returns:
The name of the encoding type for String output
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/WebPBEConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/WebPBEConfig.html new file mode 100644 index 00000000..f387225e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/WebPBEConfig.html @@ -0,0 +1,427 @@ + + + + + + + +WebPBEConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe.config +
+Class WebPBEConfig

+
+Object
+  extended by org.jasypt.encryption.pbe.config.SimplePBEConfig
+      extended by org.jasypt.encryption.pbe.config.WebPBEConfig
+
+
+
All Implemented Interfaces:
PBECleanablePasswordConfig, PBEConfig
+
+
+
Direct Known Subclasses:
WebStringPBEConfig
+
+
+
+
public class WebPBEConfig
extends SimplePBEConfig
+ + +

+

+ Implementation for PBEConfig which can be used from the + Web PBE Config infrastructure (Filter + Servlet) to set the + password for an encryptor from the web at initialization time. +

+

+ For an encryptor to be assigned a password from the web, it only has + to be assigned a WebPBEConfig object, which must be initialized with + both a unique name an a validation word. The name will identify + the config object (and thus the encryptor) and the validation word will + make sure that only an authorized person (for example, the application + deployer) sets the passwords. +

+

+ As this class extends SimplePBEConfig, parameter values + can be also set with the usual setX methods. +

+

+ For any of the configuration parameters, if its setX + method is not called, a null value will be returned by the + corresponding getX method. +

+

+ +

+

+
Since:
+
1.3
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
WebPBEConfig() + +
+           + Creates a new WebPBEConfig instance.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ StringgetName() + +
+           + Returns the name by which this WebPBEConfig object will be identified + from the web.
+ StringgetValidationWord() + +
+           + Returns the validation word which will be asked from the web to the + person setting the password for the encryptor this config object belongs + to.
+ booleanisComplete() + +
+           + Returns whether this config object is complete or not (both name and + validation word have been set).
+ voidsetName(String name) + +
+           + Sets the name by which this WebPBEConfig object will be identified + from the web.
+ voidsetValidationWord(String validation) + +
+           + Sets the validation word which will be asked from the web to the + person setting the password for the encryptor this config object belongs + to.
+ + + + + + + +
Methods inherited from class org.jasypt.encryption.pbe.config.SimplePBEConfig
cleanPassword, getAlgorithm, getKeyObtentionIterations, getPassword, getPasswordCharArray, getPoolSize, getProvider, getProviderName, getSaltGenerator, setAlgorithm, setKeyObtentionIterations, setKeyObtentionIterations, setPassword, setPasswordCharArray, setPoolSize, setPoolSize, setProvider, setProviderClassName, setProviderName, setSaltGenerator, setSaltGeneratorClassName
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+WebPBEConfig

+
+public WebPBEConfig()
+
+

+ Creates a new WebPBEConfig instance. +

+

+

+ + + + + + + + +
+Method Detail
+ +

+getName

+
+public String getName()
+
+

+ Returns the name by which this WebPBEConfig object will be identified + from the web. This name must be unique for each WebPBEConfig object. +

+

+

+ +
Returns:
the config name.
+
+
+
+ +

+setName

+
+public void setName(String name)
+
+

+ Sets the name by which this WebPBEConfig object will be identified + from the web. This name must be unique for each WebPBEConfig object. +

+

+

+
Parameters:
name - the unique name which will identify this config object.
+
+
+
+ +

+getValidationWord

+
+public String getValidationWord()
+
+

+ Returns the validation word which will be asked from the web to the + person setting the password for the encryptor this config object belongs + to. This validation word will make sure that only an authorized person + (for example, the application deployer) sets the value for the + encryption password. +

+

+

+ +
Returns:
the validation word assigned to this config object
+
+
+
+ +

+setValidationWord

+
+public void setValidationWord(String validation)
+
+

+ Sets the validation word which will be asked from the web to the + person setting the password for the encryptor this config object belongs + to. This validation word will make sure that only an authorized person + (for example, the application deployer) sets the value for the + encryption password. +

+

+

+
Parameters:
validation - the validation word to be assigned to this config object
+
+
+
+ +

+isComplete

+
+public boolean isComplete()
+
+

+ Returns whether this config object is complete or not (both name and + validation word have been set). Intended for internal use only. +

+

+

+ +
Returns:
whether the config object is complete or not.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/WebStringPBEConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/WebStringPBEConfig.html new file mode 100644 index 00000000..14a18198 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/WebStringPBEConfig.html @@ -0,0 +1,373 @@ + + + + + + + +WebStringPBEConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.encryption.pbe.config +
+Class WebStringPBEConfig

+
+Object
+  extended by org.jasypt.encryption.pbe.config.SimplePBEConfig
+      extended by org.jasypt.encryption.pbe.config.WebPBEConfig
+          extended by org.jasypt.encryption.pbe.config.WebStringPBEConfig
+
+
+
All Implemented Interfaces:
PBECleanablePasswordConfig, PBEConfig, StringPBEConfig
+
+
+
+
public class WebStringPBEConfig
extends WebPBEConfig
implements StringPBEConfig
+ + +

+

+ Implementation for StringPBEConfig which can be used from the + Web PBE Config infrastructure (Filter + Servlet) to set the + password for an encryptor from the web at initialization time. +

+

+ For an encryptor to be assigned a password from the web, it only has + to be assigned a WebPBEConfig object, which must be initialized with + both a unique name an a validation word. The name will identify + the config object (and thus the encryptor) and the validation word will + make sure that only an authorized person (for example, the application + deployer) sets the passwords. +

+

+ As this class extends SimplePBEConfig, parameter values + can be also set with the usual setX methods. +

+

+ For any of the configuration parameters, if its setX + method is not called, a null value will be returned by the + corresponding getX method. +

+

+ +

+

+
Since:
+
1.3
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
WebStringPBEConfig() + +
+           + Creates a new WebStringPBEConfig instance.
+  + + + + + + + + + + + + + + + +
+Method Summary
+ StringgetStringOutputType() + +
+           + This parameter lets the user specify the form in which String output + will be encoded.
+ voidsetStringOutputType(String stringOutputType) + +
+           + Sets the the form in which String output + will be encoded.
+ + + + + + + +
Methods inherited from class org.jasypt.encryption.pbe.config.WebPBEConfig
getName, getValidationWord, isComplete, setName, setValidationWord
+ + + + + + + +
Methods inherited from class org.jasypt.encryption.pbe.config.SimplePBEConfig
cleanPassword, getAlgorithm, getKeyObtentionIterations, getPassword, getPasswordCharArray, getPoolSize, getProvider, getProviderName, getSaltGenerator, setAlgorithm, setKeyObtentionIterations, setKeyObtentionIterations, setPassword, setPasswordCharArray, setPoolSize, setPoolSize, setProvider, setProviderClassName, setProviderName, setSaltGenerator, setSaltGeneratorClassName
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+ + + + + + + +
Methods inherited from interface org.jasypt.encryption.pbe.config.PBEConfig
getAlgorithm, getKeyObtentionIterations, getPassword, getPoolSize, getProvider, getProviderName, getSaltGenerator
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+WebStringPBEConfig

+
+public WebStringPBEConfig()
+
+

+ Creates a new WebStringPBEConfig instance. +

+

+

+ + + + + + + + +
+Method Detail
+ +

+setStringOutputType

+
+public void setStringOutputType(String stringOutputType)
+
+

+ Sets the the form in which String output + will be encoded. Available encoding types are: +

+
    +
  • base64 (default)
  • +
  • hexadecimal
  • +
+

+ If not set, null will be returned. +

+

+

+
+
+
+
Parameters:
stringOutputType - the string output type.
+
+
+
+ +

+getStringOutputType

+
+public String getStringOutputType()
+
+
Description copied from interface: StringPBEConfig
+

+ This parameter lets the user specify the form in which String output + will be encoded. Available encoding types are: +

+
    +
  • base64 (default)
  • +
  • hexadecimal
  • +
+

+

+
Specified by:
getStringOutputType in interface StringPBEConfig
+
+
+ +
Returns:
The name of the encoding type for String output
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/EnvironmentPBEConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/EnvironmentPBEConfig.html new file mode 100644 index 00000000..3d343364 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/EnvironmentPBEConfig.html @@ -0,0 +1,183 @@ + + + + + + + +Uses of Class org.jasypt.encryption.pbe.config.EnvironmentPBEConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.encryption.pbe.config.EnvironmentPBEConfig

+
+ + + + + + + + + +
+Packages that use EnvironmentPBEConfig
org.jasypt.encryption.pbe.config  
+  +

+ + + + + +
+Uses of EnvironmentPBEConfig in org.jasypt.encryption.pbe.config
+  +

+ + + + + + + + + +
Subclasses of EnvironmentPBEConfig in org.jasypt.encryption.pbe.config
+ classEnvironmentStringPBEConfig + +
+           + Implementation for StringPBEConfig which can retrieve configuration + values from environment variables or system properties.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/EnvironmentStringPBEConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/EnvironmentStringPBEConfig.html new file mode 100644 index 00000000..3a3f4cdb --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/EnvironmentStringPBEConfig.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig

+
+No usage of org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/PBECleanablePasswordConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/PBECleanablePasswordConfig.html new file mode 100644 index 00000000..515ff8a2 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/PBECleanablePasswordConfig.html @@ -0,0 +1,233 @@ + + + + + + + +Uses of Interface org.jasypt.encryption.pbe.config.PBECleanablePasswordConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.encryption.pbe.config.PBECleanablePasswordConfig

+
+ + + + + + + + + +
+Packages that use PBECleanablePasswordConfig
org.jasypt.encryption.pbe.config  
+  +

+ + + + + +
+Uses of PBECleanablePasswordConfig in org.jasypt.encryption.pbe.config
+  +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Classes in org.jasypt.encryption.pbe.config that implement PBECleanablePasswordConfig
+ classEnvironmentPBEConfig + +
+           + Implementation for PBEConfig which can retrieve configuration + values from environment variables or system properties.
+ classEnvironmentStringPBEConfig + +
+           + Implementation for StringPBEConfig which can retrieve configuration + values from environment variables or system properties.
+ classSimplePBEConfig + +
+           + Bean implementation for PBEConfig.
+ classSimpleStringPBEConfig + +
+           + Bean implementation for StringPBEConfig.
+ classWebPBEConfig + +
+           + Implementation for PBEConfig which can be used from the + Web PBE Config infrastructure (Filter + Servlet) to set the + password for an encryptor from the web at initialization time.
+ classWebStringPBEConfig + +
+           + Implementation for StringPBEConfig which can be used from the + Web PBE Config infrastructure (Filter + Servlet) to set the + password for an encryptor from the web at initialization time.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/PBEConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/PBEConfig.html new file mode 100644 index 00000000..7f4f78ce --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/PBEConfig.html @@ -0,0 +1,352 @@ + + + + + + + +Uses of Interface org.jasypt.encryption.pbe.config.PBEConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.encryption.pbe.config.PBEConfig

+
+ + + + + + + + + + + + + +
+Packages that use PBEConfig
org.jasypt.encryption.pbe  
org.jasypt.encryption.pbe.config  
+  +

+ + + + + +
+Uses of PBEConfig in org.jasypt.encryption.pbe
+  +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Methods in org.jasypt.encryption.pbe with parameters of type PBEConfig
+ voidStandardPBEStringEncryptor.setConfig(PBEConfig config) + +
+           + Sets a PBEConfig object + for the encryptor.
+ voidPooledPBEStringEncryptor.setConfig(PBEConfig config) + +
+           + Sets a PBEConfig object + for the encryptor.
+ voidStandardPBEBigDecimalEncryptor.setConfig(PBEConfig config) + +
+           + Sets a PBEConfig object + for the encryptor.
+ voidPooledPBEBigIntegerEncryptor.setConfig(PBEConfig config) + +
+           + Sets a PBEConfig object + for the encryptor.
+ voidPooledPBEBigDecimalEncryptor.setConfig(PBEConfig config) + +
+           + Sets a PBEConfig object + for the encryptor.
+ voidPooledPBEByteEncryptor.setConfig(PBEConfig config) + +
+           + Sets a PBEConfig object + for the encryptor.
+ voidStandardPBEBigIntegerEncryptor.setConfig(PBEConfig config) + +
+           + Sets a PBEConfig object + for the encryptor.
+ voidStandardPBEByteEncryptor.setConfig(PBEConfig config) + +
+           + Sets a PBEConfig object + for the encryptor.
+  +

+ + + + + +
+Uses of PBEConfig in org.jasypt.encryption.pbe.config
+  +

+ + + + + + + + + +
Subinterfaces of PBEConfig in org.jasypt.encryption.pbe.config
+ interfaceStringPBEConfig + +
+           + Common interface for config classes applicable to + StandardPBEStringEncryptor objects.
+  +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Classes in org.jasypt.encryption.pbe.config that implement PBEConfig
+ classEnvironmentPBEConfig + +
+           + Implementation for PBEConfig which can retrieve configuration + values from environment variables or system properties.
+ classEnvironmentStringPBEConfig + +
+           + Implementation for StringPBEConfig which can retrieve configuration + values from environment variables or system properties.
+ classSimplePBEConfig + +
+           + Bean implementation for PBEConfig.
+ classSimpleStringPBEConfig + +
+           + Bean implementation for StringPBEConfig.
+ classWebPBEConfig + +
+           + Implementation for PBEConfig which can be used from the + Web PBE Config infrastructure (Filter + Servlet) to set the + password for an encryptor from the web at initialization time.
+ classWebStringPBEConfig + +
+           + Implementation for StringPBEConfig which can be used from the + Web PBE Config infrastructure (Filter + Servlet) to set the + password for an encryptor from the web at initialization time.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/SimplePBEConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/SimplePBEConfig.html new file mode 100644 index 00000000..13755f34 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/SimplePBEConfig.html @@ -0,0 +1,224 @@ + + + + + + + +Uses of Class org.jasypt.encryption.pbe.config.SimplePBEConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.encryption.pbe.config.SimplePBEConfig

+
+ + + + + + + + + +
+Packages that use SimplePBEConfig
org.jasypt.encryption.pbe.config  
+  +

+ + + + + +
+Uses of SimplePBEConfig in org.jasypt.encryption.pbe.config
+  +

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Subclasses of SimplePBEConfig in org.jasypt.encryption.pbe.config
+ classEnvironmentPBEConfig + +
+           + Implementation for PBEConfig which can retrieve configuration + values from environment variables or system properties.
+ classEnvironmentStringPBEConfig + +
+           + Implementation for StringPBEConfig which can retrieve configuration + values from environment variables or system properties.
+ classSimpleStringPBEConfig + +
+           + Bean implementation for StringPBEConfig.
+ classWebPBEConfig + +
+           + Implementation for PBEConfig which can be used from the + Web PBE Config infrastructure (Filter + Servlet) to set the + password for an encryptor from the web at initialization time.
+ classWebStringPBEConfig + +
+           + Implementation for StringPBEConfig which can be used from the + Web PBE Config infrastructure (Filter + Servlet) to set the + password for an encryptor from the web at initialization time.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/SimpleStringPBEConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/SimpleStringPBEConfig.html new file mode 100644 index 00000000..f8c26c84 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/SimpleStringPBEConfig.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.encryption.pbe.config.SimpleStringPBEConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.encryption.pbe.config.SimpleStringPBEConfig

+
+No usage of org.jasypt.encryption.pbe.config.SimpleStringPBEConfig +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/StringPBEConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/StringPBEConfig.html new file mode 100644 index 00000000..b5113ace --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/StringPBEConfig.html @@ -0,0 +1,203 @@ + + + + + + + +Uses of Interface org.jasypt.encryption.pbe.config.StringPBEConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.encryption.pbe.config.StringPBEConfig

+
+ + + + + + + + + +
+Packages that use StringPBEConfig
org.jasypt.encryption.pbe.config  
+  +

+ + + + + +
+Uses of StringPBEConfig in org.jasypt.encryption.pbe.config
+  +

+ + + + + + + + + + + + + + + + + +
Classes in org.jasypt.encryption.pbe.config that implement StringPBEConfig
+ classEnvironmentStringPBEConfig + +
+           + Implementation for StringPBEConfig which can retrieve configuration + values from environment variables or system properties.
+ classSimpleStringPBEConfig + +
+           + Bean implementation for StringPBEConfig.
+ classWebStringPBEConfig + +
+           + Implementation for StringPBEConfig which can be used from the + Web PBE Config infrastructure (Filter + Servlet) to set the + password for an encryptor from the web at initialization time.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/WebPBEConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/WebPBEConfig.html new file mode 100644 index 00000000..1c199696 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/WebPBEConfig.html @@ -0,0 +1,213 @@ + + + + + + + +Uses of Class org.jasypt.encryption.pbe.config.WebPBEConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.encryption.pbe.config.WebPBEConfig

+
+ + + + + + + + + + + + + +
+Packages that use WebPBEConfig
org.jasypt.encryption.pbe.config  
org.jasypt.web.pbeconfig  
+  +

+ + + + + +
+Uses of WebPBEConfig in org.jasypt.encryption.pbe.config
+  +

+ + + + + + + + + +
Subclasses of WebPBEConfig in org.jasypt.encryption.pbe.config
+ classWebStringPBEConfig + +
+           + Implementation for StringPBEConfig which can be used from the + Web PBE Config infrastructure (Filter + Servlet) to set the + password for an encryptor from the web at initialization time.
+  +

+ + + + + +
+Uses of WebPBEConfig in org.jasypt.web.pbeconfig
+  +

+ + + + + + + + + +
Methods in org.jasypt.web.pbeconfig with parameters of type WebPBEConfig
+ voidWebPBEConfigRegistry.registerConfig(WebPBEConfig config) + +
+           
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/WebStringPBEConfig.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/WebStringPBEConfig.html new file mode 100644 index 00000000..551ab4a6 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/class-use/WebStringPBEConfig.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.encryption.pbe.config.WebStringPBEConfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.encryption.pbe.config.WebStringPBEConfig

+
+No usage of org.jasypt.encryption.pbe.config.WebStringPBEConfig +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/package-frame.html new file mode 100644 index 00000000..cdea4c52 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/package-frame.html @@ -0,0 +1,58 @@ + + + + + + + +org.jasypt.encryption.pbe.config (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.encryption.pbe.config + + + + +
+Interfaces  + +
+PBECleanablePasswordConfig +
+PBEConfig +
+StringPBEConfig
+ + + + + + +
+Classes  + +
+EnvironmentPBEConfig +
+EnvironmentStringPBEConfig +
+SimplePBEConfig +
+SimpleStringPBEConfig +
+WebPBEConfig +
+WebStringPBEConfig
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/package-summary.html new file mode 100644 index 00000000..a15f890b --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/package-summary.html @@ -0,0 +1,221 @@ + + + + + + + +org.jasypt.encryption.pbe.config (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.encryption.pbe.config +

+ + + + + + + + + + + + + + + + + +
+Interface Summary
PBECleanablePasswordConfig + Common interface for all PBEConfig implementations that store passwords as char[] instead + of String and also allow this passwords to be set as char[] instead of Strings.
PBEConfig + Common interface for config classes applicable to + StandardPBEByteEncryptor, + StandardPBEStringEncryptor, + StandardPBEBigIntegerEncryptor or + StandardPBEBigDecimalEncryptor objects.
StringPBEConfig + Common interface for config classes applicable to + StandardPBEStringEncryptor objects.
+  + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Class Summary
EnvironmentPBEConfig + Implementation for PBEConfig which can retrieve configuration + values from environment variables or system properties.
EnvironmentStringPBEConfig + Implementation for StringPBEConfig which can retrieve configuration + values from environment variables or system properties.
SimplePBEConfig + Bean implementation for PBEConfig.
SimpleStringPBEConfig + Bean implementation for StringPBEConfig.
WebPBEConfig + Implementation for PBEConfig which can be used from the + Web PBE Config infrastructure (Filter + Servlet) to set the + password for an encryptor from the web at initialization time.
WebStringPBEConfig + Implementation for StringPBEConfig which can be used from the + Web PBE Config infrastructure (Filter + Servlet) to set the + password for an encryptor from the web at initialization time.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/package-tree.html new file mode 100644 index 00000000..2fbcc04e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/package-tree.html @@ -0,0 +1,171 @@ + + + + + + + +org.jasypt.encryption.pbe.config Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.encryption.pbe.config +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/package-use.html new file mode 100644 index 00000000..93f1fc86 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/config/package-use.html @@ -0,0 +1,262 @@ + + + + + + + +Uses of Package org.jasypt.encryption.pbe.config (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.encryption.pbe.config

+
+ + + + + + + + + + + + + + + + + +
+Packages that use org.jasypt.encryption.pbe.config
org.jasypt.encryption.pbe  
org.jasypt.encryption.pbe.config  
org.jasypt.web.pbeconfig  
+  +

+ + + + + + + + +
+Classes in org.jasypt.encryption.pbe.config used by org.jasypt.encryption.pbe
PBEConfig + +
+           + Common interface for config classes applicable to + StandardPBEByteEncryptor, + StandardPBEStringEncryptor, + StandardPBEBigIntegerEncryptor or + StandardPBEBigDecimalEncryptor objects.
+  +

+ + + + + + + + + + + + + + + + + + + + + + + +
+Classes in org.jasypt.encryption.pbe.config used by org.jasypt.encryption.pbe.config
EnvironmentPBEConfig + +
+           + Implementation for PBEConfig which can retrieve configuration + values from environment variables or system properties.
PBECleanablePasswordConfig + +
+           + Common interface for all PBEConfig implementations that store passwords as char[] instead + of String and also allow this passwords to be set as char[] instead of Strings.
PBEConfig + +
+           + Common interface for config classes applicable to + StandardPBEByteEncryptor, + StandardPBEStringEncryptor, + StandardPBEBigIntegerEncryptor or + StandardPBEBigDecimalEncryptor objects.
SimplePBEConfig + +
+           + Bean implementation for PBEConfig.
StringPBEConfig + +
+           + Common interface for config classes applicable to + StandardPBEStringEncryptor objects.
WebPBEConfig + +
+           + Implementation for PBEConfig which can be used from the + Web PBE Config infrastructure (Filter + Servlet) to set the + password for an encryptor from the web at initialization time.
+  +

+ + + + + + + + +
+Classes in org.jasypt.encryption.pbe.config used by org.jasypt.web.pbeconfig
WebPBEConfig + +
+           + Implementation for PBEConfig which can be used from the + Web PBE Config infrastructure (Filter + Servlet) to set the + password for an encryptor from the web at initialization time.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/package-frame.html new file mode 100644 index 00000000..fbe63fdf --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/package-frame.html @@ -0,0 +1,76 @@ + + + + + + + +org.jasypt.encryption.pbe (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.encryption.pbe + + + + +
+Interfaces  + +
+CleanablePasswordBased +
+PasswordBased +
+PBEBigDecimalCleanablePasswordEncryptor +
+PBEBigDecimalEncryptor +
+PBEBigIntegerCleanablePasswordEncryptor +
+PBEBigIntegerEncryptor +
+PBEByteCleanablePasswordEncryptor +
+PBEByteEncryptor +
+PBEStringCleanablePasswordEncryptor +
+PBEStringEncryptor
+ + + + + + +
+Classes  + +
+PooledPBEBigDecimalEncryptor +
+PooledPBEBigIntegerEncryptor +
+PooledPBEByteEncryptor +
+PooledPBEStringEncryptor +
+StandardPBEBigDecimalEncryptor +
+StandardPBEBigIntegerEncryptor +
+StandardPBEByteEncryptor +
+StandardPBEStringEncryptor
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/package-summary.html new file mode 100644 index 00000000..d308531f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/package-summary.html @@ -0,0 +1,280 @@ + + + + + + + +org.jasypt.encryption.pbe (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.encryption.pbe +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Interface Summary
CleanablePasswordBased + Common interface for all entities which can be set a password in char[] shape, + which can be cleaned once the encryptor is initialized so that no immutable + Strings containing the password are left in memory.
PasswordBased + Common interface for all entities which can be set a password.
PBEBigDecimalCleanablePasswordEncryptor + Common interface for all Password Based Encryptors which receive a + BigDecimal message and return a BigDecimal result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
PBEBigDecimalEncryptor + Common interface for all Password Based Encryptors which receive a + BigDecimal message and return a BigDecimal result.
PBEBigIntegerCleanablePasswordEncryptor + Common interface for all Password Based Encryptors which receive a BigInteger + message and return a BigInteger result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
PBEBigIntegerEncryptor + Common interface for all Password Based Encryptors which receive a BigInteger + message and return a BigInteger result.
PBEByteCleanablePasswordEncryptor + Common interface for all Password Based Encryptors which receive a + byte array message and return a byte array result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
PBEByteEncryptor + Common interface for all Password Based Encryptors which receive a + byte array message and return a byte array result.
PBEStringCleanablePasswordEncryptor + Common interface for all Password Based Encryptors which receive a + String message and return a String result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
PBEStringEncryptor + Common interface for all Password Based Encryptors which receive a + String message and return a String result.
+  + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Class Summary
PooledPBEBigDecimalEncryptor + Pooled implementation of PBEBigDecimalEncryptor that in fact contains + an array of StandardPBEBigDecimalEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
PooledPBEBigIntegerEncryptor + Pooled implementation of PBEBigIntegerEncryptor that in fact contains + an array of StandardPBEBigIntegerEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
PooledPBEByteEncryptor + Pooled implementation of PBEByteEncryptor that in fact contains + an array of StandardPBEByteEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
PooledPBEStringEncryptor + Pooled implementation of PBEStringEncryptor that in fact contains + an array of StandardPBEStringEncryptor objects which are used + to attend encrypt and decrypt requests in round-robin.
StandardPBEBigDecimalEncryptor + Standard implementation of the PBEBigDecimalEncryptor interface.
StandardPBEBigIntegerEncryptor + Standard implementation of the PBEBigIntegerEncryptor interface.
StandardPBEByteEncryptor + Standard implementation of the PBEByteEncryptor interface.
StandardPBEStringEncryptor + Standard implementation of the PBEStringEncryptor interface.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/package-tree.html new file mode 100644 index 00000000..567f8b29 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/package-tree.html @@ -0,0 +1,215 @@ + + + + + + + +org.jasypt.encryption.pbe Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.encryption.pbe +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/package-use.html new file mode 100644 index 00000000..7a136e46 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/encryption/pbe/package-use.html @@ -0,0 +1,253 @@ + + + + + + + +Uses of Package org.jasypt.encryption.pbe (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.encryption.pbe

+
+ + + + + + + + + +
+Packages that use org.jasypt.encryption.pbe
org.jasypt.encryption.pbe  
+  +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Classes in org.jasypt.encryption.pbe used by org.jasypt.encryption.pbe
CleanablePasswordBased + +
+           + Common interface for all entities which can be set a password in char[] shape, + which can be cleaned once the encryptor is initialized so that no immutable + Strings containing the password are left in memory.
PasswordBased + +
+           + Common interface for all entities which can be set a password.
PBEBigDecimalCleanablePasswordEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + BigDecimal message and return a BigDecimal result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
PBEBigDecimalEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + BigDecimal message and return a BigDecimal result.
PBEBigIntegerCleanablePasswordEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a BigInteger + message and return a BigInteger result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
PBEBigIntegerEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a BigInteger + message and return a BigInteger result.
PBEByteCleanablePasswordEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + byte array message and return a byte array result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
PBEByteEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + byte array message and return a byte array result.
PBEStringCleanablePasswordEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + String message and return a String result, and provide means + to set passwords as cleanable char[] objects (instead of + immutable Strings).
PBEStringEncryptor + +
+           + Common interface for all Password Based Encryptors which receive a + String message and return a String result.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/AlreadyInitializedException.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/AlreadyInitializedException.html new file mode 100644 index 00000000..bb2d61e7 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/AlreadyInitializedException.html @@ -0,0 +1,251 @@ + + + + + + + +AlreadyInitializedException (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.exceptions +
+Class AlreadyInitializedException

+
+Object
+  extended by Throwable
+      extended by Exception
+          extended by RuntimeException
+              extended by org.jasypt.exceptions.AlreadyInitializedException
+
+
+
All Implemented Interfaces:
java.io.Serializable
+
+
+
+
public final class AlreadyInitializedException
extends RuntimeException
+ + +

+Exception thrown when an attempt is made to change the configuration + of an entity once it has been initialized. +

+ +

+

+
Since:
+
1.0
+
Author:
+
Daniel Fernández
+
See Also:
Serialized Form
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
AlreadyInitializedException() + +
+           
+  + + + + + + + +
+Method Summary
+ + + + + + + +
Methods inherited from class Throwable
fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+AlreadyInitializedException

+
+public AlreadyInitializedException()
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/EncryptionInitializationException.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/EncryptionInitializationException.html new file mode 100644 index 00000000..acda781b --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/EncryptionInitializationException.html @@ -0,0 +1,295 @@ + + + + + + + +EncryptionInitializationException (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.exceptions +
+Class EncryptionInitializationException

+
+Object
+  extended by Throwable
+      extended by Exception
+          extended by RuntimeException
+              extended by org.jasypt.exceptions.EncryptionInitializationException
+
+
+
All Implemented Interfaces:
java.io.Serializable
+
+
+
+
public final class EncryptionInitializationException
extends RuntimeException
+ + +

+Exception thrown when an error is raised during initialization of + an entity. +

+ +

+

+
Since:
+
1.0
+
Author:
+
Daniel Fernández
+
See Also:
Serialized Form
+
+ +

+ + + + + + + + + + + + + + + + + + + + +
+Constructor Summary
EncryptionInitializationException() + +
+           
EncryptionInitializationException(String msg) + +
+           
EncryptionInitializationException(String msg, + Throwable t) + +
+           
EncryptionInitializationException(Throwable t) + +
+           
+  + + + + + + + +
+Method Summary
+ + + + + + + +
Methods inherited from class Throwable
fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptionInitializationException

+
+public EncryptionInitializationException()
+
+
+
+ +

+EncryptionInitializationException

+
+public EncryptionInitializationException(Throwable t)
+
+
+
+ +

+EncryptionInitializationException

+
+public EncryptionInitializationException(String msg,
+                                         Throwable t)
+
+
+
+ +

+EncryptionInitializationException

+
+public EncryptionInitializationException(String msg)
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/EncryptionOperationNotPossibleException.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/EncryptionOperationNotPossibleException.html new file mode 100644 index 00000000..6366a2c9 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/EncryptionOperationNotPossibleException.html @@ -0,0 +1,286 @@ + + + + + + + +EncryptionOperationNotPossibleException (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.exceptions +
+Class EncryptionOperationNotPossibleException

+
+Object
+  extended by Throwable
+      extended by Exception
+          extended by RuntimeException
+              extended by org.jasypt.exceptions.EncryptionOperationNotPossibleException
+
+
+
All Implemented Interfaces:
java.io.Serializable
+
+
+
+
public final class EncryptionOperationNotPossibleException
extends RuntimeException
+ + +

+

+ General exception thrown when any errors are raised during encryption, + digesting, etc. +

+

+ It is intended to provide very little information (if any) of the error + causes, so that encryption internals are not revealed through error + messages. +

+

+ +

+

+
Since:
+
1.0
+
Author:
+
Daniel Fernández
+
See Also:
Serialized Form
+
+ +

+ + + + + + + + + + + + + + + + + +
+Constructor Summary
EncryptionOperationNotPossibleException() + +
+           
EncryptionOperationNotPossibleException(String message) + +
+           
EncryptionOperationNotPossibleException(Throwable t) + +
+           
+  + + + + + + + +
+Method Summary
+ + + + + + + +
Methods inherited from class Throwable
fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptionOperationNotPossibleException

+
+public EncryptionOperationNotPossibleException()
+
+
+
+ +

+EncryptionOperationNotPossibleException

+
+public EncryptionOperationNotPossibleException(Throwable t)
+
+
+
+ +

+EncryptionOperationNotPossibleException

+
+public EncryptionOperationNotPossibleException(String message)
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/PasswordAlreadyCleanedException.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/PasswordAlreadyCleanedException.html new file mode 100644 index 00000000..af290628 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/PasswordAlreadyCleanedException.html @@ -0,0 +1,252 @@ + + + + + + + +PasswordAlreadyCleanedException (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.exceptions +
+Class PasswordAlreadyCleanedException

+
+Object
+  extended by Throwable
+      extended by Exception
+          extended by RuntimeException
+              extended by org.jasypt.exceptions.PasswordAlreadyCleanedException
+
+
+
All Implemented Interfaces:
java.io.Serializable
+
+
+
+
public final class PasswordAlreadyCleanedException
extends RuntimeException
+ + +

+Exception thrown when an attempt is made to access the configured + password of an encryptor when this password has already been + cleaned (so that it appears no more as an immutable String in memory). +

+ +

+

+
Since:
+
1.8
+
Author:
+
Daniel Fernández
+
See Also:
Serialized Form
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
PasswordAlreadyCleanedException() + +
+           
+  + + + + + + + +
+Method Summary
+ + + + + + + +
Methods inherited from class Throwable
fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+PasswordAlreadyCleanedException

+
+public PasswordAlreadyCleanedException()
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/class-use/AlreadyInitializedException.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/class-use/AlreadyInitializedException.html new file mode 100644 index 00000000..7a42de74 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/class-use/AlreadyInitializedException.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.exceptions.AlreadyInitializedException (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.exceptions.AlreadyInitializedException

+
+No usage of org.jasypt.exceptions.AlreadyInitializedException +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/class-use/EncryptionInitializationException.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/class-use/EncryptionInitializationException.html new file mode 100644 index 00000000..b9a7abe9 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/class-use/EncryptionInitializationException.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.exceptions.EncryptionInitializationException (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.exceptions.EncryptionInitializationException

+
+No usage of org.jasypt.exceptions.EncryptionInitializationException +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/class-use/EncryptionOperationNotPossibleException.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/class-use/EncryptionOperationNotPossibleException.html new file mode 100644 index 00000000..00dcd1a5 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/class-use/EncryptionOperationNotPossibleException.html @@ -0,0 +1,209 @@ + + + + + + + +Uses of Class org.jasypt.exceptions.EncryptionOperationNotPossibleException (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.exceptions.EncryptionOperationNotPossibleException

+
+ + + + + + + + + +
+Packages that use EncryptionOperationNotPossibleException
org.jasypt.encryption.pbe  
+  +

+ + + + + +
+Uses of EncryptionOperationNotPossibleException in org.jasypt.encryption.pbe
+  +

+ + + + + + + + + + + + + + + + + + + + + +
Methods in org.jasypt.encryption.pbe that throw EncryptionOperationNotPossibleException
+ byte[]PooledPBEByteEncryptor.decrypt(byte[] encryptedMessage) + +
+           + Decrypts a message using the specified configuration.
+ byte[]StandardPBEByteEncryptor.decrypt(byte[] encryptedMessage) + +
+           + Decrypts a message using the specified configuration.
+ byte[]PooledPBEByteEncryptor.encrypt(byte[] message) + +
+           + Encrypts a message using the specified configuration.
+ byte[]StandardPBEByteEncryptor.encrypt(byte[] message) + +
+           + Encrypts a message using the specified configuration.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/class-use/PasswordAlreadyCleanedException.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/class-use/PasswordAlreadyCleanedException.html new file mode 100644 index 00000000..b3a28e59 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/class-use/PasswordAlreadyCleanedException.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.exceptions.PasswordAlreadyCleanedException (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.exceptions.PasswordAlreadyCleanedException

+
+No usage of org.jasypt.exceptions.PasswordAlreadyCleanedException +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/package-frame.html new file mode 100644 index 00000000..bf7b0694 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/package-frame.html @@ -0,0 +1,39 @@ + + + + + + + +org.jasypt.exceptions (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.exceptions + + + + +
+Exceptions  + +
+AlreadyInitializedException +
+EncryptionInitializationException +
+EncryptionOperationNotPossibleException +
+PasswordAlreadyCleanedException
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/package-summary.html new file mode 100644 index 00000000..4aabba06 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/package-summary.html @@ -0,0 +1,176 @@ + + + + + + + +org.jasypt.exceptions (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.exceptions +

+ + + + + + + + + + + + + + + + + + + + + +
+Exception Summary
AlreadyInitializedExceptionException thrown when an attempt is made to change the configuration + of an entity once it has been initialized.
EncryptionInitializationExceptionException thrown when an error is raised during initialization of + an entity.
EncryptionOperationNotPossibleException + General exception thrown when any errors are raised during encryption, + digesting, etc.
PasswordAlreadyCleanedExceptionException thrown when an attempt is made to access the configured + password of an encryptor when this password has already been + cleaned (so that it appears no more as an immutable String in memory).
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/package-tree.html new file mode 100644 index 00000000..c4badc75 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/package-tree.html @@ -0,0 +1,161 @@ + + + + + + + +org.jasypt.exceptions Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.exceptions +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/package-use.html new file mode 100644 index 00000000..2bee1fa9 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/exceptions/package-use.html @@ -0,0 +1,173 @@ + + + + + + + +Uses of Package org.jasypt.exceptions (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.exceptions

+
+ + + + + + + + + +
+Packages that use org.jasypt.exceptions
org.jasypt.encryption.pbe  
+  +

+ + + + + + + + +
+Classes in org.jasypt.exceptions used by org.jasypt.encryption.pbe
EncryptionOperationNotPossibleException + +
+           + General exception thrown when any errors are raised during encryption, + digesting, etc.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/AlgorithmRegistryCLI.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/AlgorithmRegistryCLI.html new file mode 100644 index 00000000..b82576bd --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/AlgorithmRegistryCLI.html @@ -0,0 +1,241 @@ + + + + + + + +AlgorithmRegistryCLI (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.intf.cli +
+Class AlgorithmRegistryCLI

+
+Object
+  extended by org.jasypt.intf.cli.AlgorithmRegistryCLI
+
+
+
+
public final class AlgorithmRegistryCLI
extends Object
+ + +

+

+ This class supports the CLI "listAlgorithms" operation. +

+

+ It should NEVER be used inside your code, only from the supplied + command-line tools. +

+

+ +

+

+
Since:
+
1.7
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + +
+Method Summary
+static voidmain(String[] args) + +
+           + CLI execution method.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Method Detail
+ +

+main

+
+public static void main(String[] args)
+
+

+ CLI execution method. +

+

+

+
Parameters:
args - the command execution arguments
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/JasyptPBEStringDecryptionCLI.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/JasyptPBEStringDecryptionCLI.html new file mode 100644 index 00000000..a5c1892e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/JasyptPBEStringDecryptionCLI.html @@ -0,0 +1,241 @@ + + + + + + + +JasyptPBEStringDecryptionCLI (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.intf.cli +
+Class JasyptPBEStringDecryptionCLI

+
+Object
+  extended by org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI
+
+
+
+
public final class JasyptPBEStringDecryptionCLI
extends Object
+ + +

+

+ This class supports the CLI "decrypt" operation. +

+

+ It should NEVER be used inside your code, only from the supplied + command-line tools. +

+

+ +

+

+
Since:
+
1.4
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + +
+Method Summary
+static voidmain(String[] args) + +
+           + CLI execution method.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Method Detail
+ +

+main

+
+public static void main(String[] args)
+
+

+ CLI execution method. +

+

+

+
Parameters:
args - the command execution arguments
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/JasyptPBEStringEncryptionCLI.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/JasyptPBEStringEncryptionCLI.html new file mode 100644 index 00000000..ebcf859f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/JasyptPBEStringEncryptionCLI.html @@ -0,0 +1,241 @@ + + + + + + + +JasyptPBEStringEncryptionCLI (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.intf.cli +
+Class JasyptPBEStringEncryptionCLI

+
+Object
+  extended by org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI
+
+
+
+
public final class JasyptPBEStringEncryptionCLI
extends Object
+ + +

+

+ This class supports the CLI "encrypt" operation. +

+

+ It should NEVER be used inside your code, only from the supplied + command-line tools. +

+

+ +

+

+
Since:
+
1.4
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + +
+Method Summary
+static voidmain(String[] args) + +
+           + CLI execution method.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Method Detail
+ +

+main

+
+public static void main(String[] args)
+
+

+ CLI execution method. +

+

+

+
Parameters:
args - the command execution arguments
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/JasyptStringDigestCLI.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/JasyptStringDigestCLI.html new file mode 100644 index 00000000..d2fad871 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/JasyptStringDigestCLI.html @@ -0,0 +1,241 @@ + + + + + + + +JasyptStringDigestCLI (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.intf.cli +
+Class JasyptStringDigestCLI

+
+Object
+  extended by org.jasypt.intf.cli.JasyptStringDigestCLI
+
+
+
+
public final class JasyptStringDigestCLI
extends Object
+ + +

+

+ This class supports the CLI "digest" operation. +

+

+ It should NEVER be used inside your code, only from the supplied + command-line tools. +

+

+ +

+

+
Since:
+
1.4
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + +
+Method Summary
+static voidmain(String[] args) + +
+           + CLI execution method.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Method Detail
+ +

+main

+
+public static void main(String[] args)
+
+

+ CLI execution method. +

+

+

+
Parameters:
args - the command execution arguments
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/class-use/AlgorithmRegistryCLI.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/class-use/AlgorithmRegistryCLI.html new file mode 100644 index 00000000..e84b30bd --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/class-use/AlgorithmRegistryCLI.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.intf.cli.AlgorithmRegistryCLI (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.intf.cli.AlgorithmRegistryCLI

+
+No usage of org.jasypt.intf.cli.AlgorithmRegistryCLI +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/class-use/JasyptPBEStringDecryptionCLI.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/class-use/JasyptPBEStringDecryptionCLI.html new file mode 100644 index 00000000..a0671a6e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/class-use/JasyptPBEStringDecryptionCLI.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI

+
+No usage of org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/class-use/JasyptPBEStringEncryptionCLI.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/class-use/JasyptPBEStringEncryptionCLI.html new file mode 100644 index 00000000..183ee383 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/class-use/JasyptPBEStringEncryptionCLI.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI

+
+No usage of org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/class-use/JasyptStringDigestCLI.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/class-use/JasyptStringDigestCLI.html new file mode 100644 index 00000000..5ab9fe35 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/class-use/JasyptStringDigestCLI.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.intf.cli.JasyptStringDigestCLI (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.intf.cli.JasyptStringDigestCLI

+
+No usage of org.jasypt.intf.cli.JasyptStringDigestCLI +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/package-frame.html new file mode 100644 index 00000000..67842145 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/package-frame.html @@ -0,0 +1,39 @@ + + + + + + + +org.jasypt.intf.cli (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.intf.cli + + + + +
+Classes  + +
+AlgorithmRegistryCLI +
+JasyptPBEStringDecryptionCLI +
+JasyptPBEStringEncryptionCLI +
+JasyptStringDigestCLI
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/package-summary.html new file mode 100644 index 00000000..9674b3c9 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/package-summary.html @@ -0,0 +1,174 @@ + + + + + + + +org.jasypt.intf.cli (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.intf.cli +

+ + + + + + + + + + + + + + + + + + + + + +
+Class Summary
AlgorithmRegistryCLI + This class supports the CLI "listAlgorithms" operation.
JasyptPBEStringDecryptionCLI + This class supports the CLI "decrypt" operation.
JasyptPBEStringEncryptionCLI + This class supports the CLI "encrypt" operation.
JasyptStringDigestCLI + This class supports the CLI "digest" operation.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/package-tree.html new file mode 100644 index 00000000..27c6af80 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/package-tree.html @@ -0,0 +1,154 @@ + + + + + + + +org.jasypt.intf.cli Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.intf.cli +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/package-use.html new file mode 100644 index 00000000..5be2917a --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/cli/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.intf.cli (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.intf.cli

+
+No usage of org.jasypt.intf.cli +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/JasyptStatelessService.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/JasyptStatelessService.html new file mode 100644 index 00000000..30f94825 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/JasyptStatelessService.html @@ -0,0 +1,505 @@ + + + + + + + +JasyptStatelessService (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.intf.service +
+Class JasyptStatelessService

+
+Object
+  extended by org.jasypt.intf.service.JasyptStatelessService
+
+
+
+
public final class JasyptStatelessService
extends Object
+ + +

+

+ This class acts as a stateless service for encryption, decryption and + digest operations, letting its clients configure all the jasypt environment + (algorithms, passwords, providers...) from Strings in a single call, be it + using direct values, environment variables or java vm properties. +

+

+ It is meant to service the CLI interfaces, but it can also be used for other + purposes. For instance, by subclassing or wrapping it with a JAX-WS web + service class, developers can easily create an encryption web service. +

+

+ +

+

+
Since:
+
1.4
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
JasyptStatelessService() + +
+          Creates a new instance of JasyptStatelessService.
+  + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Stringdecrypt(String input, + String password, + String passwordEnvName, + String passwordSysPropertyName, + String algorithm, + String algorithmEnvName, + String algorithmSysPropertyName, + String keyObtentionIterations, + String keyObtentionIterationsEnvName, + String keyObtentionIterationsSysPropertyName, + String saltGeneratorClassName, + String saltGeneratorClassNameEnvName, + String saltGeneratorClassNameSysPropertyName, + String providerName, + String providerNameEnvName, + String providerNameSysPropertyName, + String providerClassName, + String providerClassNameEnvName, + String providerClassNameSysPropertyName, + String stringOutputType, + String stringOutputTypeEnvName, + String stringOutputTypeSysPropertyName) + +
+           + Configure and perform a decryption operation.
+ Stringdigest(String input, + String algorithm, + String algorithmEnvName, + String algorithmSysPropertyName, + String iterations, + String iterationsEnvName, + String iterationsSysPropertyName, + String saltSizeBytes, + String saltSizeBytesEnvName, + String saltSizeBytesSysPropertyName, + String saltGeneratorClassName, + String saltGeneratorClassNameEnvName, + String saltGeneratorClassNameSysPropertyName, + String providerName, + String providerNameEnvName, + String providerNameSysPropertyName, + String providerClassName, + String providerClassNameEnvName, + String providerClassNameSysPropertyName, + String invertPositionOfSaltInMessageBeforeDigesting, + String invertPositionOfSaltInMessageBeforeDigestingEnvName, + String invertPositionOfSaltInMessageBeforeDigestingSysPropertyName, + String invertPositionOfPlainSaltInEncryptionResults, + String invertPositionOfPlainSaltInEncryptionResultsEnvName, + String invertPositionOfPlainSaltInEncryptionResultsSysPropertyName, + String useLenientSaltSizeCheck, + String useLenientSaltSizeCheckEnvName, + String useLenientSaltSizeCheckSysPropertyName, + String unicodeNormalizationIgnored, + String unicodeNormalizationIgnoredEnvName, + String unicodeNormalizationIgnoredSysPropertyName, + String stringOutputType, + String stringOutputTypeEnvName, + String stringOutputTypeSysPropertyName, + String prefix, + String prefixEnvName, + String prefixSysPropertyName, + String suffix, + String suffixEnvName, + String suffixSysPropertyName) + +
+           + Configure and perform a digest operation.
+ Stringencrypt(String input, + String password, + String passwordEnvName, + String passwordSysPropertyName, + String algorithm, + String algorithmEnvName, + String algorithmSysPropertyName, + String keyObtentionIterations, + String keyObtentionIterationsEnvName, + String keyObtentionIterationsSysPropertyName, + String saltGeneratorClassName, + String saltGeneratorClassNameEnvName, + String saltGeneratorClassNameSysPropertyName, + String providerName, + String providerNameEnvName, + String providerNameSysPropertyName, + String providerClassName, + String providerClassNameEnvName, + String providerClassNameSysPropertyName, + String stringOutputType, + String stringOutputTypeEnvName, + String stringOutputTypeSysPropertyName) + +
+           + Configure and perform an encryption operation.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+JasyptStatelessService

+
+public JasyptStatelessService()
+
+
Creates a new instance of JasyptStatelessService. +

+

+ + + + + + + + +
+Method Detail
+ +

+digest

+
+public String digest(String input,
+                     String algorithm,
+                     String algorithmEnvName,
+                     String algorithmSysPropertyName,
+                     String iterations,
+                     String iterationsEnvName,
+                     String iterationsSysPropertyName,
+                     String saltSizeBytes,
+                     String saltSizeBytesEnvName,
+                     String saltSizeBytesSysPropertyName,
+                     String saltGeneratorClassName,
+                     String saltGeneratorClassNameEnvName,
+                     String saltGeneratorClassNameSysPropertyName,
+                     String providerName,
+                     String providerNameEnvName,
+                     String providerNameSysPropertyName,
+                     String providerClassName,
+                     String providerClassNameEnvName,
+                     String providerClassNameSysPropertyName,
+                     String invertPositionOfSaltInMessageBeforeDigesting,
+                     String invertPositionOfSaltInMessageBeforeDigestingEnvName,
+                     String invertPositionOfSaltInMessageBeforeDigestingSysPropertyName,
+                     String invertPositionOfPlainSaltInEncryptionResults,
+                     String invertPositionOfPlainSaltInEncryptionResultsEnvName,
+                     String invertPositionOfPlainSaltInEncryptionResultsSysPropertyName,
+                     String useLenientSaltSizeCheck,
+                     String useLenientSaltSizeCheckEnvName,
+                     String useLenientSaltSizeCheckSysPropertyName,
+                     String unicodeNormalizationIgnored,
+                     String unicodeNormalizationIgnoredEnvName,
+                     String unicodeNormalizationIgnoredSysPropertyName,
+                     String stringOutputType,
+                     String stringOutputTypeEnvName,
+                     String stringOutputTypeSysPropertyName,
+                     String prefix,
+                     String prefixEnvName,
+                     String prefixSysPropertyName,
+                     String suffix,
+                     String suffixEnvName,
+                     String suffixSysPropertyName)
+
+

+ Configure and perform a digest operation. +

+

+

+
Parameters:
input -
algorithm -
algorithmEnvName -
algorithmSysPropertyName -
iterations -
iterationsEnvName -
iterationsSysPropertyName -
saltSizeBytes -
saltSizeBytesEnvName -
saltSizeBytesSysPropertyName -
saltGeneratorClassName -
saltGeneratorClassNameEnvName -
saltGeneratorClassNameSysPropertyName -
providerName -
providerNameEnvName -
providerNameSysPropertyName -
providerClassName -
providerClassNameEnvName -
providerClassNameSysPropertyName -
invertPositionOfSaltInMessageBeforeDigesting -
invertPositionOfSaltInMessageBeforeDigestingEnvName -
invertPositionOfSaltInMessageBeforeDigestingSysPropertyName -
invertPositionOfPlainSaltInEncryptionResults -
invertPositionOfPlainSaltInEncryptionResultsEnvName -
invertPositionOfPlainSaltInEncryptionResultsSysPropertyName -
useLenientSaltSizeCheck -
useLenientSaltSizeCheckEnvName -
useLenientSaltSizeCheckSysPropertyName -
unicodeNormalizationIgnored -
unicodeNormalizationIgnoredEnvName -
unicodeNormalizationIgnoredSysPropertyName -
stringOutputType -
stringOutputTypeEnvName -
stringOutputTypeSysPropertyName -
prefix -
prefixEnvName -
prefixSysPropertyName -
suffix -
suffixEnvName -
suffixSysPropertyName - +
Returns:
the result of the digest operation +
Throws: +
EncryptionOperationNotPossibleException - if the operation could + not be performed (either because of wrong input or wrong + parametrization).
+
+
+
+ +

+encrypt

+
+public String encrypt(String input,
+                      String password,
+                      String passwordEnvName,
+                      String passwordSysPropertyName,
+                      String algorithm,
+                      String algorithmEnvName,
+                      String algorithmSysPropertyName,
+                      String keyObtentionIterations,
+                      String keyObtentionIterationsEnvName,
+                      String keyObtentionIterationsSysPropertyName,
+                      String saltGeneratorClassName,
+                      String saltGeneratorClassNameEnvName,
+                      String saltGeneratorClassNameSysPropertyName,
+                      String providerName,
+                      String providerNameEnvName,
+                      String providerNameSysPropertyName,
+                      String providerClassName,
+                      String providerClassNameEnvName,
+                      String providerClassNameSysPropertyName,
+                      String stringOutputType,
+                      String stringOutputTypeEnvName,
+                      String stringOutputTypeSysPropertyName)
+
+

+ Configure and perform an encryption operation. +

+

+

+
Parameters:
input -
password -
passwordEnvName -
passwordSysPropertyName -
algorithm -
algorithmEnvName -
algorithmSysPropertyName -
keyObtentionIterations -
keyObtentionIterationsEnvName -
keyObtentionIterationsSysPropertyName -
saltGeneratorClassName -
saltGeneratorClassNameEnvName -
saltGeneratorClassNameSysPropertyName -
providerName -
providerNameEnvName -
providerNameSysPropertyName -
providerClassName -
providerClassNameEnvName -
providerClassNameSysPropertyName -
stringOutputType -
stringOutputTypeEnvName -
stringOutputTypeSysPropertyName - +
Returns:
the result of the encryption operation +
Throws: +
EncryptionOperationNotPossibleException - if the operation could + not be performed (either because of wrong input or wrong + parametrization).
+
+
+
+ +

+decrypt

+
+public String decrypt(String input,
+                      String password,
+                      String passwordEnvName,
+                      String passwordSysPropertyName,
+                      String algorithm,
+                      String algorithmEnvName,
+                      String algorithmSysPropertyName,
+                      String keyObtentionIterations,
+                      String keyObtentionIterationsEnvName,
+                      String keyObtentionIterationsSysPropertyName,
+                      String saltGeneratorClassName,
+                      String saltGeneratorClassNameEnvName,
+                      String saltGeneratorClassNameSysPropertyName,
+                      String providerName,
+                      String providerNameEnvName,
+                      String providerNameSysPropertyName,
+                      String providerClassName,
+                      String providerClassNameEnvName,
+                      String providerClassNameSysPropertyName,
+                      String stringOutputType,
+                      String stringOutputTypeEnvName,
+                      String stringOutputTypeSysPropertyName)
+
+

+ Configure and perform a decryption operation. +

+

+

+
Parameters:
input -
password -
passwordEnvName -
passwordSysPropertyName -
algorithm -
algorithmEnvName -
algorithmSysPropertyName -
keyObtentionIterations -
keyObtentionIterationsEnvName -
keyObtentionIterationsSysPropertyName -
saltGeneratorClassName -
saltGeneratorClassNameEnvName -
saltGeneratorClassNameSysPropertyName -
providerName -
providerNameEnvName -
providerNameSysPropertyName -
providerClassName -
providerClassNameEnvName -
providerClassNameSysPropertyName -
stringOutputType -
stringOutputTypeEnvName -
stringOutputTypeSysPropertyName - +
Returns:
the result of the decryption operation +
Throws: +
EncryptionOperationNotPossibleException - if the operation could + not be performed (either because of wrong input or wrong + parametrization).
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/class-use/JasyptStatelessService.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/class-use/JasyptStatelessService.html new file mode 100644 index 00000000..5d758e17 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/class-use/JasyptStatelessService.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.intf.service.JasyptStatelessService (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.intf.service.JasyptStatelessService

+
+No usage of org.jasypt.intf.service.JasyptStatelessService +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/package-frame.html new file mode 100644 index 00000000..3192584a --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/package-frame.html @@ -0,0 +1,33 @@ + + + + + + + +org.jasypt.intf.service (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.intf.service + + + + +
+Classes  + +
+JasyptStatelessService
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/package-summary.html new file mode 100644 index 00000000..0ca42f83 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/package-summary.html @@ -0,0 +1,162 @@ + + + + + + + +org.jasypt.intf.service (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.intf.service +

+ + + + + + + + + +
+Class Summary
JasyptStatelessService + This class acts as a stateless service for encryption, decryption and + digest operations, letting its clients configure all the jasypt environment + (algorithms, passwords, providers...) from Strings in a single call, be it + using direct values, environment variables or java vm properties.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/package-tree.html new file mode 100644 index 00000000..cce3b908 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/package-tree.html @@ -0,0 +1,154 @@ + + + + + + + +org.jasypt.intf.service Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.intf.service +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/package-use.html new file mode 100644 index 00000000..f29985c9 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/intf/service/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.intf.service (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.intf.service

+
+No usage of org.jasypt.intf.service +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/Normalizer.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/Normalizer.html new file mode 100644 index 00000000..c30ecd99 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/Normalizer.html @@ -0,0 +1,281 @@ + + + + + + + +Normalizer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.normalization +
+Class Normalizer

+
+Object
+  extended by org.jasypt.normalization.Normalizer
+
+
+
+
public final class Normalizer
extends Object
+ + +

+

+ Utility for the normalization of Unicode Strings to NFC form. +

+

+ This class tries to use the java.text.Normalizer class in JDK 1.6 + first and, if it the class is not found (Java version < 6), then it will use + the ICU4J com.ibm.icu.text.Normalizer class (in this case, a + ClassNotFoundException will be thrown if ICU4J is not present). +

+

+ +

+

+
Since:
+
1.5
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + +
+Method Summary
+static char[]normalizeToNfc(char[] message) + +
+           + Normalize Unicode-input message to NFC.
+static StringnormalizeToNfc(String message) + +
+           + Normalize Unicode-input message to NFC.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Method Detail
+ +

+normalizeToNfc

+
+public static String normalizeToNfc(String message)
+
+

+ Normalize Unicode-input message to NFC. +

+

+ This algorithm will first try to normalize the input's UNICODE using icu4j's + com.ibm.icu.text.Normalizer and, if it is not present at the + classpath, will try to use java.text.Normalizer. If this is not present + either (this class appeared in JavaSE 6), it will raise an exception. +

+

+

+
Parameters:
message - the message to be normalized +
Returns:
the result of the normalization operation
+
+
+
+ +

+normalizeToNfc

+
+public static char[] normalizeToNfc(char[] message)
+
+

+ Normalize Unicode-input message to NFC. +

+

+ This algorithm will first try to normalize the input's UNICODE using icu4j's + com.ibm.icu.text.Normalizer and, if it is not present at the + classpath, will try to use java.text.Normalizer. If this is not present + either (this class appeared in JavaSE 6), it will raise an exception. +

+

+

+
Parameters:
message - the message to be normalized +
Returns:
the result of the normalization operation
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/class-use/Normalizer.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/class-use/Normalizer.html new file mode 100644 index 00000000..aef0e925 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/class-use/Normalizer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.normalization.Normalizer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.normalization.Normalizer

+
+No usage of org.jasypt.normalization.Normalizer +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/package-frame.html new file mode 100644 index 00000000..9a1c5f8f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/package-frame.html @@ -0,0 +1,33 @@ + + + + + + + +org.jasypt.normalization (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.normalization + + + + +
+Classes  + +
+Normalizer
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/package-summary.html new file mode 100644 index 00000000..8193ace3 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/package-summary.html @@ -0,0 +1,159 @@ + + + + + + + +org.jasypt.normalization (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.normalization +

+ + + + + + + + + +
+Class Summary
Normalizer + Utility for the normalization of Unicode Strings to NFC form.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/package-tree.html new file mode 100644 index 00000000..56635451 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/package-tree.html @@ -0,0 +1,154 @@ + + + + + + + +org.jasypt.normalization Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.normalization +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/package-use.html new file mode 100644 index 00000000..7b6990bd --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/normalization/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.normalization (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.normalization

+
+No usage of org.jasypt.normalization +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/EncryptableProperties.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/EncryptableProperties.html new file mode 100644 index 00000000..4b43d303 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/EncryptableProperties.html @@ -0,0 +1,506 @@ + + + + + + + +EncryptableProperties (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.properties +
+Class EncryptableProperties

+
+Object
+  extended by java.util.Dictionary<K,V>
+      extended by java.util.Hashtable<Object,Object>
+          extended by java.util.Properties
+              extended by org.jasypt.properties.EncryptableProperties
+
+
+
All Implemented Interfaces:
java.io.Serializable, Cloneable, java.util.Map<Object,Object>
+
+
+
+
public final class EncryptableProperties
extends java.util.Properties
+ + +

+

+ Subclass of java.util.Properties which can make use of a + StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the .properties file. +

+

+ A value is considered "encrypted" when it appears surrounded by + ENC(...), like: +

+

+

+ my.value=ENC(!"DGAS24FaIO$) +
+

+

+ Decryption is performed on-the-fly when the getProperty(String) or + getProperty(String, String) methods are called, and only these two + methods perform decryption (note that neither get(Object) nor + Hashtable.toString() do). Load and store operations are not affected + by decryption in any manner. +

+

+ Encrypted and unencrypted objects can be combined in the same + properties file. +

+

+ Please note that, altough objects of this class are Serializable, they + cannot be serialized and then de-serialized in different classloaders or + virtual machines. This is so because encryptors are not serializable themselves + (they cannot, as they contain sensitive information) and so they remain + in memory, and live for as long as the classloader lives. +

+

+ +

+

+
Since:
+
1.4
+
Author:
+
Daniel Fernández
+
See Also:
Serialized Form
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class java.util.Properties
defaults
+  + + + + + + + + + + + + + + + + + + + +
+Constructor Summary
EncryptableProperties(java.util.Properties defaults, + StringEncryptor stringEncryptor) + +
+           + Creates an EncryptableProperties instance which will use + the passed StringEncryptor object to decrypt encrypted values, + and the passed defaults as default values (may contain encrypted values).
EncryptableProperties(java.util.Properties defaults, + TextEncryptor textEncryptor) + +
+           + Creates an EncryptableProperties instance which will use + the passed TextEncryptor object to decrypt encrypted values, + and the passed defaults as default values (may contain encrypted values).
EncryptableProperties(StringEncryptor stringEncryptor) + +
+           + Creates an EncryptableProperties instance which will use + the passed StringEncryptor object to decrypt encrypted values.
EncryptableProperties(TextEncryptor textEncryptor) + +
+           + Creates an EncryptableProperties instance which will use + the passed TextEncryptor object to decrypt encrypted values.
+  + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Objectget(Object key) + +
+           + Obtains the property value for the specified key (see + Hashtable#get(Object)), decrypting it if needed.
+ StringgetProperty(String key) + +
+           + Obtains the property value for the specified key (see + Properties.getProperty(String)), decrypting it if needed.
+ StringgetProperty(String key, + String defaultValue) + +
+           + Obtains the property value for the specified key (see + Properties.getProperty(String)), decrypting it if needed.
+ + + + + + + +
Methods inherited from class java.util.Properties
list, list, load, load, loadFromXML, propertyNames, save, setProperty, store, store, storeToXML, storeToXML, stringPropertyNames
+ + + + + + + +
Methods inherited from class java.util.Hashtable
clear, clone, contains, containsKey, containsValue, elements, entrySet, equals, hashCode, isEmpty, keys, keySet, put, putAll, rehash, remove, size, toString, values
+ + + + + + + +
Methods inherited from class Object
finalize, getClass, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+EncryptableProperties

+
+public EncryptableProperties(StringEncryptor stringEncryptor)
+
+

+ Creates an EncryptableProperties instance which will use + the passed StringEncryptor object to decrypt encrypted values. +

+

+

+
Parameters:
stringEncryptor - the StringEncryptor to be used do decrypt + values. It can not be null.
+
+
+ +

+EncryptableProperties

+
+public EncryptableProperties(TextEncryptor textEncryptor)
+
+

+ Creates an EncryptableProperties instance which will use + the passed TextEncryptor object to decrypt encrypted values. +

+

+

+
Parameters:
textEncryptor - the TextEncryptor to be used do decrypt + values. It can not be null.
+
+
+ +

+EncryptableProperties

+
+public EncryptableProperties(java.util.Properties defaults,
+                             StringEncryptor stringEncryptor)
+
+

+ Creates an EncryptableProperties instance which will use + the passed StringEncryptor object to decrypt encrypted values, + and the passed defaults as default values (may contain encrypted values). +

+

+

+
Parameters:
defaults - default values for properties (may be encrypted).
stringEncryptor - the StringEncryptor to be used do decrypt + values. It can not be null.
+
+
+ +

+EncryptableProperties

+
+public EncryptableProperties(java.util.Properties defaults,
+                             TextEncryptor textEncryptor)
+
+

+ Creates an EncryptableProperties instance which will use + the passed TextEncryptor object to decrypt encrypted values, + and the passed defaults as default values (may contain encrypted values). +

+

+

+
Parameters:
defaults - default values for properties (may be encrypted).
textEncryptor - the TextEncryptor to be used do decrypt + values. It can not be null.
+
+ + + + + + + + +
+Method Detail
+ +

+getProperty

+
+public String getProperty(String key)
+
+

+ Obtains the property value for the specified key (see + Properties.getProperty(String)), decrypting it if needed. +

+

+

+
Overrides:
getProperty in class java.util.Properties
+
+
+
Parameters:
key - the property key +
Returns:
the (decrypted) value
+
+
+
+ +

+getProperty

+
+public String getProperty(String key,
+                          String defaultValue)
+
+

+ Obtains the property value for the specified key (see + Properties.getProperty(String)), decrypting it if needed. +

+

+ If no value is found for the specified key, the default value will + be returned (decrypted if needed). +

+

+

+
Overrides:
getProperty in class java.util.Properties
+
+
+
Parameters:
key - the property key
defaultValue - the default value to return +
Returns:
the (decrypted) value
+
+
+
+ +

+get

+
+public Object get(Object key)
+
+

+ Obtains the property value for the specified key (see + Hashtable#get(Object)), decrypting it if needed. +

+

+

+
Specified by:
get in interface java.util.Map<Object,Object>
Overrides:
get in class java.util.Hashtable<Object,Object>
+
+
+
Parameters:
key - the property key +
Returns:
the (decrypted) value
Since:
+
1.9.0
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/PropertyValueEncryptionUtils.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/PropertyValueEncryptionUtils.html new file mode 100644 index 00000000..61c7f9ad --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/PropertyValueEncryptionUtils.html @@ -0,0 +1,329 @@ + + + + + + + +PropertyValueEncryptionUtils (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.properties +
+Class PropertyValueEncryptionUtils

+
+Object
+  extended by org.jasypt.properties.PropertyValueEncryptionUtils
+
+
+
+
public final class PropertyValueEncryptionUtils
extends Object
+ + +

+

+ Utility class to encrypt/decrypt values in properties files which could be + encrypted. +

+

+ A value is considered "encrypted" when it appears surrounded by + ENC(...), like: +

+

+

+ my.value=ENC(!"DGAS24FaIO$) +
+

+

+ This class is meant for internal Jasypt use only. +

+

+ +

+

+
Since:
+
1.4
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+static Stringdecrypt(String encodedValue, + StringEncryptor encryptor) + +
+           
+static Stringdecrypt(String encodedValue, + TextEncryptor encryptor) + +
+           
+static Stringencrypt(String decodedValue, + StringEncryptor encryptor) + +
+           
+static Stringencrypt(String decodedValue, + TextEncryptor encryptor) + +
+           
+static booleanisEncryptedValue(String value) + +
+           
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Method Detail
+ +

+isEncryptedValue

+
+public static boolean isEncryptedValue(String value)
+
+
+
+
+
+
+ +

+decrypt

+
+public static String decrypt(String encodedValue,
+                             StringEncryptor encryptor)
+
+
+
+
+
+
+ +

+decrypt

+
+public static String decrypt(String encodedValue,
+                             TextEncryptor encryptor)
+
+
+
+
+
+
+ +

+encrypt

+
+public static String encrypt(String decodedValue,
+                             StringEncryptor encryptor)
+
+
+
+
+
+
+ +

+encrypt

+
+public static String encrypt(String decodedValue,
+                             TextEncryptor encryptor)
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/class-use/EncryptableProperties.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/class-use/EncryptableProperties.html new file mode 100644 index 00000000..d5f437ea --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/class-use/EncryptableProperties.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.properties.EncryptableProperties (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.properties.EncryptableProperties

+
+No usage of org.jasypt.properties.EncryptableProperties +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/class-use/PropertyValueEncryptionUtils.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/class-use/PropertyValueEncryptionUtils.html new file mode 100644 index 00000000..d4f96b4d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/class-use/PropertyValueEncryptionUtils.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.properties.PropertyValueEncryptionUtils (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.properties.PropertyValueEncryptionUtils

+
+No usage of org.jasypt.properties.PropertyValueEncryptionUtils +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/package-frame.html new file mode 100644 index 00000000..d1fb4031 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/package-frame.html @@ -0,0 +1,35 @@ + + + + + + + +org.jasypt.properties (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.properties + + + + +
+Classes  + +
+EncryptableProperties +
+PropertyValueEncryptionUtils
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/package-summary.html new file mode 100644 index 00000000..b3520191 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/package-summary.html @@ -0,0 +1,168 @@ + + + + + + + +org.jasypt.properties (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.properties +

+ + + + + + + + + + + + + +
+Class Summary
EncryptableProperties + Subclass of java.util.Properties which can make use of a + StringEncryptor or + TextEncryptor object to decrypt property values + if they are encrypted in the .properties file.
PropertyValueEncryptionUtils + Utility class to encrypt/decrypt values in properties files which could be + encrypted.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/package-tree.html new file mode 100644 index 00000000..a101e3c5 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/package-tree.html @@ -0,0 +1,161 @@ + + + + + + + +org.jasypt.properties Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.properties +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+
    +
  • Object +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/package-use.html new file mode 100644 index 00000000..cd101691 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/properties/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.properties (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.properties

+
+No usage of org.jasypt.properties +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/AlgorithmRegistry.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/AlgorithmRegistry.html new file mode 100644 index 00000000..ea73319e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/AlgorithmRegistry.html @@ -0,0 +1,279 @@ + + + + + + + +AlgorithmRegistry (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.registry +
+Class AlgorithmRegistry

+
+Object
+  extended by org.jasypt.registry.AlgorithmRegistry
+
+
+
+
public final class AlgorithmRegistry
extends Object
+ + +

+

+ Utility class for retrieving the names of all the digest or encryption + algorithms available to Jasypt. +

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.7
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + +
+Method Summary
+static java.util.SetgetAllDigestAlgorithms() + +
+           + Returns a set with the names of all the registered digest algorithms.
+static java.util.SetgetAllPBEAlgorithms() + +
+           + Returns a set with the names of all the registered PBE (Password-Based + Encryption) algorithms.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Method Detail
+ +

+getAllDigestAlgorithms

+
+public static java.util.Set getAllDigestAlgorithms()
+
+

+ Returns a set with the names of all the registered digest algorithms. + This set will also include algorithms from any third-party (non-JVM) registered + providers. +

+

+

+ +
Returns:
a Set of Strings with the names of all the registered + digest algorithms.
Since:
+
1.7
+
+
+
+
+ +

+getAllPBEAlgorithms

+
+public static java.util.Set getAllPBEAlgorithms()
+
+

+ Returns a set with the names of all the registered PBE (Password-Based + Encryption) algorithms. + This set will also include algorithms from any third-party (non-JVM) registered + providers. +

+

+

+ +
Returns:
a Set of Strings with the names of all the registered + PBE algorithms.
Since:
+
1.7
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/class-use/AlgorithmRegistry.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/class-use/AlgorithmRegistry.html new file mode 100644 index 00000000..dc0a7e7f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/class-use/AlgorithmRegistry.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.registry.AlgorithmRegistry (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.registry.AlgorithmRegistry

+
+No usage of org.jasypt.registry.AlgorithmRegistry +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/package-frame.html new file mode 100644 index 00000000..e7c54614 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/package-frame.html @@ -0,0 +1,33 @@ + + + + + + + +org.jasypt.registry (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.registry + + + + +
+Classes  + +
+AlgorithmRegistry
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/package-summary.html new file mode 100644 index 00000000..a226d6c1 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/package-summary.html @@ -0,0 +1,160 @@ + + + + + + + +org.jasypt.registry (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.registry +

+ + + + + + + + + +
+Class Summary
AlgorithmRegistry + Utility class for retrieving the names of all the digest or encryption + algorithms available to Jasypt.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/package-tree.html new file mode 100644 index 00000000..b9ba1536 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/package-tree.html @@ -0,0 +1,154 @@ + + + + + + + +org.jasypt.registry Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.registry +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/package-use.html new file mode 100644 index 00000000..ed653a46 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/registry/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.registry (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.registry

+
+No usage of org.jasypt.registry +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/ByteArrayFixedSaltGenerator.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/ByteArrayFixedSaltGenerator.html new file mode 100644 index 00000000..043f1c59 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/ByteArrayFixedSaltGenerator.html @@ -0,0 +1,315 @@ + + + + + + + +ByteArrayFixedSaltGenerator (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.salt +
+Class ByteArrayFixedSaltGenerator

+
+Object
+  extended by org.jasypt.salt.ByteArrayFixedSaltGenerator
+
+
+
All Implemented Interfaces:
FixedSaltGenerator, SaltGenerator
+
+
+
+
public class ByteArrayFixedSaltGenerator
extends Object
implements FixedSaltGenerator
+ + +

+

+ Byte-array based implementation of FixedSaltGenerator, that will + always return the same salt. +

+

+ If the requested salt has a size in bytes smaller than the specified salt, + the first n bytes are returned. If it is larger, an exception is thrown. +

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.9.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
ByteArrayFixedSaltGenerator(byte[] salt) + +
+          Creates a new instance of FixedByteArraySaltGenerator
+  + + + + + + + + + + + + + + + +
+Method Summary
+ byte[]generateSalt(int lengthBytes) + +
+          Return salt with the specified byte length.
+ booleanincludePlainSaltInEncryptionResults() + +
+          As this salt generator provides a fixed salt, its inclusion + unencrypted in encryption results + is not necessary, and in fact not desirable (so that it remains hidden).
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+ByteArrayFixedSaltGenerator

+
+public ByteArrayFixedSaltGenerator(byte[] salt)
+
+
Creates a new instance of FixedByteArraySaltGenerator +

+

+
Parameters:
salt - the specified salt.
+
+ + + + + + + + +
+Method Detail
+ +

+generateSalt

+
+public byte[] generateSalt(int lengthBytes)
+
+
Return salt with the specified byte length. +

+

+
Specified by:
generateSalt in interface SaltGenerator
+
+
+
Parameters:
lengthBytes - length in bytes. +
Returns:
the generated salt.
+
+
+
+ +

+includePlainSaltInEncryptionResults

+
+public boolean includePlainSaltInEncryptionResults()
+
+
As this salt generator provides a fixed salt, its inclusion + unencrypted in encryption results + is not necessary, and in fact not desirable (so that it remains hidden). +

+

+
Specified by:
includePlainSaltInEncryptionResults in interface SaltGenerator
+
+
+ +
Returns:
false
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/FixedByteArraySaltGenerator.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/FixedByteArraySaltGenerator.html new file mode 100644 index 00000000..30bacac0 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/FixedByteArraySaltGenerator.html @@ -0,0 +1,342 @@ + + + + + + + +FixedByteArraySaltGenerator (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.salt +
+Class FixedByteArraySaltGenerator

+
+Object
+  extended by org.jasypt.salt.FixedByteArraySaltGenerator
+
+
+
All Implemented Interfaces:
SaltGenerator
+
+
+Deprecated. Deprecated in 1.9.2 in favour of ByteArrayFixedSaltGenerator, which + implements the new FixedSaltGenerator interface and therefore is able to benefit + from the performance improvements associated with it. This class will be removed + in 1.10.0 (or 2.0.0). +

+

+
public class FixedByteArraySaltGenerator
extends Object
implements SaltGenerator
+ + +

+

+ This implementation of SaltGenerator always returns a fixed salt + set by the user. +

+

+ If the requested salt has a size in bytes smaller than the specified salt, + the first n bytes are returned. If it is larger, an exception is thrown. +

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
FixedByteArraySaltGenerator() + +
+          Deprecated. Creates a new instance of FixedByteArraySaltGenerator
+  + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ byte[]generateSalt(int lengthBytes) + +
+          Deprecated. Return salt with the specified byte length.
+ booleanincludePlainSaltInEncryptionResults() + +
+          Deprecated. As this salt generator provides a fixed salt, its inclusion + unencrypted in encryption results + is not necessary, and in fact not desirable (so that it remains hidden).
+ voidsetSalt(byte[] salt) + +
+          Deprecated. Sets the salt to be returned.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+FixedByteArraySaltGenerator

+
+public FixedByteArraySaltGenerator()
+
+
Deprecated. 
Creates a new instance of FixedByteArraySaltGenerator +

+

+ + + + + + + + +
+Method Detail
+ +

+setSalt

+
+public void setSalt(byte[] salt)
+
+
Deprecated. 
Sets the salt to be returned. +

+

+
+
+
+
Parameters:
salt - the specified salt.
+
+
+
+ +

+generateSalt

+
+public byte[] generateSalt(int lengthBytes)
+
+
Deprecated. 
Return salt with the specified byte length. +

+

+
Specified by:
generateSalt in interface SaltGenerator
+
+
+
Parameters:
lengthBytes - length in bytes. +
Returns:
the generated salt.
+
+
+
+ +

+includePlainSaltInEncryptionResults

+
+public boolean includePlainSaltInEncryptionResults()
+
+
Deprecated. 
As this salt generator provides a fixed salt, its inclusion + unencrypted in encryption results + is not necessary, and in fact not desirable (so that it remains hidden). +

+

+
Specified by:
includePlainSaltInEncryptionResults in interface SaltGenerator
+
+
+ +
Returns:
false
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/FixedSaltGenerator.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/FixedSaltGenerator.html new file mode 100644 index 00000000..a1f2845f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/FixedSaltGenerator.html @@ -0,0 +1,211 @@ + + + + + + + +FixedSaltGenerator (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.salt +
+Interface FixedSaltGenerator

+
+
All Superinterfaces:
SaltGenerator
+
+
+
All Known Implementing Classes:
ByteArrayFixedSaltGenerator, StringFixedSaltGenerator
+
+
+
+
public interface FixedSaltGenerator
extends SaltGenerator
+ + +

+

+ Marker interface for all implementations of SaltGenerator that + will always return the same salt (for the same amount of bytes asked). +

+

+ Use of this interface in salt generators enables encryptors to perform + some performance optimizations whenever they are used. +

+

+ +

+

+
Since:
+
1.9.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + +
+Method Summary
+ + + + + + + +
Methods inherited from interface org.jasypt.salt.SaltGenerator
generateSalt, includePlainSaltInEncryptionResults
+  +

+ +


+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/FixedStringSaltGenerator.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/FixedStringSaltGenerator.html new file mode 100644 index 00000000..b356f0a0 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/FixedStringSaltGenerator.html @@ -0,0 +1,367 @@ + + + + + + + +FixedStringSaltGenerator (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.salt +
+Class FixedStringSaltGenerator

+
+Object
+  extended by org.jasypt.salt.FixedStringSaltGenerator
+
+
+
All Implemented Interfaces:
SaltGenerator
+
+
+Deprecated. Deprecated in 1.9.2 in favour of StringFixedSaltGenerator, which + implements the new FixedSaltGenerator interface and therefore is able to benefit + from the performance improvements associated with it. This class will be removed + in 1.10.0 (or 2.0.0). +

+

+
public class FixedStringSaltGenerator
extends Object
implements SaltGenerator
+ + +

+

+ This implementation of SaltGenerator always returns a fixed salt + set by the user as a String, which is returned as salt bytes using the + specified charset for conversion (UTF-8 by default). +

+

+ If the requested salt has a size in bytes smaller than the specified salt, + the first n bytes are returned. If it is larger, an exception is thrown. +

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
FixedStringSaltGenerator() + +
+          Deprecated. Creates a new instance of FixedStringSaltGenerator
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ byte[]generateSalt(int lengthBytes) + +
+          Deprecated. Return salt with the specified byte length.
+ booleanincludePlainSaltInEncryptionResults() + +
+          Deprecated. As this salt generator provides a fixed salt, its inclusion + unencrypted in encryption results + is not necessary, and in fact not desirable (so that it remains hidden).
+ voidsetCharset(String charset) + +
+          Deprecated. Sets the charset to be applied to the salt for conversion into bytes.
+ voidsetSalt(String salt) + +
+          Deprecated. Sets the salt to be returned.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+FixedStringSaltGenerator

+
+public FixedStringSaltGenerator()
+
+
Deprecated. 
Creates a new instance of FixedStringSaltGenerator +

+

+ + + + + + + + +
+Method Detail
+ +

+setSalt

+
+public void setSalt(String salt)
+
+
Deprecated. 
Sets the salt to be returned. +

+

+
+
+
+
Parameters:
salt - the specified salt.
+
+
+
+ +

+setCharset

+
+public void setCharset(String charset)
+
+
Deprecated. 
Sets the charset to be applied to the salt for conversion into bytes. +

+

+
+
+
+
Parameters:
charset - the specified charset
+
+
+
+ +

+generateSalt

+
+public byte[] generateSalt(int lengthBytes)
+
+
Deprecated. 
Return salt with the specified byte length. +

+

+
Specified by:
generateSalt in interface SaltGenerator
+
+
+
Parameters:
lengthBytes - length in bytes. +
Returns:
the generated salt.
+
+
+
+ +

+includePlainSaltInEncryptionResults

+
+public boolean includePlainSaltInEncryptionResults()
+
+
Deprecated. 
As this salt generator provides a fixed salt, its inclusion + unencrypted in encryption results + is not necessary, and in fact not desirable (so that it remains hidden). +

+

+
Specified by:
includePlainSaltInEncryptionResults in interface SaltGenerator
+
+
+ +
Returns:
false
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/RandomSaltGenerator.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/RandomSaltGenerator.html new file mode 100644 index 00000000..65f153b8 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/RandomSaltGenerator.html @@ -0,0 +1,377 @@ + + + + + + + +RandomSaltGenerator (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.salt +
+Class RandomSaltGenerator

+
+Object
+  extended by org.jasypt.salt.RandomSaltGenerator
+
+
+
All Implemented Interfaces:
SaltGenerator
+
+
+
+
public class RandomSaltGenerator
extends Object
implements SaltGenerator
+ + +

+

+ This implementation of SaltGenerator holds a secure random + generator which can be used for generating random salts for encryption + or digesting. +

+

+ The algorithm used for random number generation can be configured at + instantiation time. If not, the default algorithm will be used. +

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+static StringDEFAULT_SECURE_RANDOM_ALGORITHM + +
+          The default algorithm to be used for secure random number + generation: set to SHA1PRNG.
+  + + + + + + + + + + + + + +
+Constructor Summary
RandomSaltGenerator() + +
+          Creates a new instance of RandomSaltGenerator using the + default secure random number generation algorithm.
RandomSaltGenerator(String secureRandomAlgorithm) + +
+          Creates a new instance of RandomSaltGenerator specifying a + secure random number generation algorithm.
+  + + + + + + + + + + + + + + + +
+Method Summary
+ byte[]generateSalt(int lengthBytes) + +
+          Generate a random salt of the specified length in bytes.
+ booleanincludePlainSaltInEncryptionResults() + +
+          This salt generator needs the salt to be included unencrypted in + encryption results, because of its being random.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+DEFAULT_SECURE_RANDOM_ALGORITHM

+
+public static final String DEFAULT_SECURE_RANDOM_ALGORITHM
+
+
The default algorithm to be used for secure random number + generation: set to SHA1PRNG. +

+

+
See Also:
Constant Field Values
+
+ + + + + + + + +
+Constructor Detail
+ +

+RandomSaltGenerator

+
+public RandomSaltGenerator()
+
+
Creates a new instance of RandomSaltGenerator using the + default secure random number generation algorithm. +

+

+
+ +

+RandomSaltGenerator

+
+public RandomSaltGenerator(String secureRandomAlgorithm)
+
+
Creates a new instance of RandomSaltGenerator specifying a + secure random number generation algorithm. +

+

+
Since:
+
1.5
+
+
+ + + + + + + + +
+Method Detail
+ +

+generateSalt

+
+public byte[] generateSalt(int lengthBytes)
+
+
Generate a random salt of the specified length in bytes. +

+

+
Specified by:
generateSalt in interface SaltGenerator
+
+
+
Parameters:
lengthBytes - length in bytes. +
Returns:
the generated salt.
+
+
+
+ +

+includePlainSaltInEncryptionResults

+
+public boolean includePlainSaltInEncryptionResults()
+
+
This salt generator needs the salt to be included unencrypted in + encryption results, because of its being random. This method will always + return true. +

+

+
Specified by:
includePlainSaltInEncryptionResults in interface SaltGenerator
+
+
+ +
Returns:
true
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/SaltGenerator.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/SaltGenerator.html new file mode 100644 index 00000000..0aadb1af --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/SaltGenerator.html @@ -0,0 +1,277 @@ + + + + + + + +SaltGenerator (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.salt +
+Interface SaltGenerator

+
+
All Known Subinterfaces:
FixedSaltGenerator
+
+
+
All Known Implementing Classes:
ByteArrayFixedSaltGenerator, FixedByteArraySaltGenerator, FixedStringSaltGenerator, RandomSaltGenerator, StringFixedSaltGenerator, ZeroSaltGenerator
+
+
+
+
public interface SaltGenerator
+ + +

+

+ Common interface for all salt generators which can be applied in digest + or encryption operations. +

+

+ Every implementation of this interface must be thread-safe. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + +
+Method Summary
+ byte[]generateSalt(int lengthBytes) + +
+           + This method will be called for requesting the generation of a new + salt of the specified length.
+ booleanincludePlainSaltInEncryptionResults() + +
+           + Determines if the digests and encrypted messages created with a + specific salt generator will include (prepended) the unencrypted + salt itself, so that it can be used for matching and decryption + operations.
+  +

+ + + + + + + + +
+Method Detail
+ +

+generateSalt

+
+byte[] generateSalt(int lengthBytes)
+
+

+ This method will be called for requesting the generation of a new + salt of the specified length. +

+

+

+
Parameters:
lengthBytes - the requested length for the salt. +
Returns:
the generated salt.
+
+
+
+ +

+includePlainSaltInEncryptionResults

+
+boolean includePlainSaltInEncryptionResults()
+
+

+ Determines if the digests and encrypted messages created with a + specific salt generator will include (prepended) the unencrypted + salt itself, so that it can be used for matching and decryption + operations. +

+

+ Generally, including the salt unencrypted in encryption results will + be mandatory for randomly generated salts, or for those generated in a + non-predictable manner. + Otherwise, digest matching and decryption operations will always fail. + For fixed salts, inclusion will be optional (and in fact undesirable + if we want to hide the salt value). +

+

+

+ +
Returns:
whether the plain (unencrypted) salt has to be included in + encryption results or not.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/StringFixedSaltGenerator.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/StringFixedSaltGenerator.html new file mode 100644 index 00000000..fc5b3c3c --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/StringFixedSaltGenerator.html @@ -0,0 +1,338 @@ + + + + + + + +StringFixedSaltGenerator (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.salt +
+Class StringFixedSaltGenerator

+
+Object
+  extended by org.jasypt.salt.StringFixedSaltGenerator
+
+
+
All Implemented Interfaces:
FixedSaltGenerator, SaltGenerator
+
+
+
+
public class StringFixedSaltGenerator
extends Object
implements FixedSaltGenerator
+ + +

+

+ String based implementation of FixedSaltGenerator, that will + always return the same salt. This salt is returned as bytes using the + specified charset for conversion (UTF-8 by default). +

+

+ If the requested salt has a size in bytes smaller than the specified salt, + the first n bytes are returned. If it is larger, an exception is thrown. +

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.9.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + +
+Constructor Summary
StringFixedSaltGenerator(String salt) + +
+          Creates a new instance of FixedStringSaltGenerator using + the default charset.
StringFixedSaltGenerator(String salt, + String charset) + +
+          Creates a new instance of FixedStringSaltGenerator
+  + + + + + + + + + + + + + + + +
+Method Summary
+ byte[]generateSalt(int lengthBytes) + +
+          Return salt with the specified byte length.
+ booleanincludePlainSaltInEncryptionResults() + +
+          As this salt generator provides a fixed salt, its inclusion + unencrypted in encryption results + is not necessary, and in fact not desirable (so that it remains hidden).
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+StringFixedSaltGenerator

+
+public StringFixedSaltGenerator(String salt)
+
+
Creates a new instance of FixedStringSaltGenerator using + the default charset. +

+

+
Parameters:
salt - the specified salt.
+
+
+ +

+StringFixedSaltGenerator

+
+public StringFixedSaltGenerator(String salt,
+                                String charset)
+
+
Creates a new instance of FixedStringSaltGenerator +

+

+
Parameters:
salt - the specified salt.
charset - the specified charset
+
+ + + + + + + + +
+Method Detail
+ +

+generateSalt

+
+public byte[] generateSalt(int lengthBytes)
+
+
Return salt with the specified byte length. +

+

+
Specified by:
generateSalt in interface SaltGenerator
+
+
+
Parameters:
lengthBytes - length in bytes. +
Returns:
the generated salt.
+
+
+
+ +

+includePlainSaltInEncryptionResults

+
+public boolean includePlainSaltInEncryptionResults()
+
+
As this salt generator provides a fixed salt, its inclusion + unencrypted in encryption results + is not necessary, and in fact not desirable (so that it remains hidden). +

+

+
Specified by:
includePlainSaltInEncryptionResults in interface SaltGenerator
+
+
+ +
Returns:
false
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/ZeroSaltGenerator.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/ZeroSaltGenerator.html new file mode 100644 index 00000000..fe0c1e1d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/ZeroSaltGenerator.html @@ -0,0 +1,310 @@ + + + + + + + +ZeroSaltGenerator (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.salt +
+Class ZeroSaltGenerator

+
+Object
+  extended by org.jasypt.salt.ZeroSaltGenerator
+
+
+
All Implemented Interfaces:
SaltGenerator
+
+
+
+
public class ZeroSaltGenerator
extends Object
implements SaltGenerator
+ + +

+

+ This implementation of SaltGenerator always returns a salt + of the required length, filled with zero bytes. +

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.4
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
ZeroSaltGenerator() + +
+          Creates a new instance of ZeroSaltGenerator
+  + + + + + + + + + + + + + + + +
+Method Summary
+ byte[]generateSalt(int lengthBytes) + +
+          Return salt with the specified byte length.
+ booleanincludePlainSaltInEncryptionResults() + +
+          As this salt generator provides a predictable salt, its inclusion + unencrypted in encryption results + is not necessary, and in fact not desirable (so that it remains hidden).
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+ZeroSaltGenerator

+
+public ZeroSaltGenerator()
+
+
Creates a new instance of ZeroSaltGenerator +

+

+ + + + + + + + +
+Method Detail
+ +

+generateSalt

+
+public byte[] generateSalt(int lengthBytes)
+
+
Return salt with the specified byte length. This will return + an array of zero bytes, with the specified length. +

+

+
Specified by:
generateSalt in interface SaltGenerator
+
+
+
Parameters:
lengthBytes - length in bytes. +
Returns:
the generated salt.
+
+
+
+ +

+includePlainSaltInEncryptionResults

+
+public boolean includePlainSaltInEncryptionResults()
+
+
As this salt generator provides a predictable salt, its inclusion + unencrypted in encryption results + is not necessary, and in fact not desirable (so that it remains hidden). +

+

+
Specified by:
includePlainSaltInEncryptionResults in interface SaltGenerator
+
+
+ +
Returns:
false
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/ByteArrayFixedSaltGenerator.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/ByteArrayFixedSaltGenerator.html new file mode 100644 index 00000000..df6f2c8d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/ByteArrayFixedSaltGenerator.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.salt.ByteArrayFixedSaltGenerator (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.salt.ByteArrayFixedSaltGenerator

+
+No usage of org.jasypt.salt.ByteArrayFixedSaltGenerator +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/FixedByteArraySaltGenerator.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/FixedByteArraySaltGenerator.html new file mode 100644 index 00000000..f8a8de74 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/FixedByteArraySaltGenerator.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.salt.FixedByteArraySaltGenerator (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.salt.FixedByteArraySaltGenerator

+
+No usage of org.jasypt.salt.FixedByteArraySaltGenerator +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/FixedSaltGenerator.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/FixedSaltGenerator.html new file mode 100644 index 00000000..51eeac06 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/FixedSaltGenerator.html @@ -0,0 +1,193 @@ + + + + + + + +Uses of Interface org.jasypt.salt.FixedSaltGenerator (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.salt.FixedSaltGenerator

+
+ + + + + + + + + +
+Packages that use FixedSaltGenerator
org.jasypt.salt  
+  +

+ + + + + +
+Uses of FixedSaltGenerator in org.jasypt.salt
+  +

+ + + + + + + + + + + + + +
Classes in org.jasypt.salt that implement FixedSaltGenerator
+ classByteArrayFixedSaltGenerator + +
+           + Byte-array based implementation of FixedSaltGenerator, that will + always return the same salt.
+ classStringFixedSaltGenerator + +
+           + String based implementation of FixedSaltGenerator, that will + always return the same salt.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/FixedStringSaltGenerator.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/FixedStringSaltGenerator.html new file mode 100644 index 00000000..a0eca08c --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/FixedStringSaltGenerator.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.salt.FixedStringSaltGenerator (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.salt.FixedStringSaltGenerator

+
+No usage of org.jasypt.salt.FixedStringSaltGenerator +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/RandomSaltGenerator.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/RandomSaltGenerator.html new file mode 100644 index 00000000..dce1953f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/RandomSaltGenerator.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.salt.RandomSaltGenerator (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.salt.RandomSaltGenerator

+
+No usage of org.jasypt.salt.RandomSaltGenerator +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/SaltGenerator.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/SaltGenerator.html new file mode 100644 index 00000000..0f7a3a28 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/SaltGenerator.html @@ -0,0 +1,531 @@ + + + + + + + +Uses of Interface org.jasypt.salt.SaltGenerator (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.salt.SaltGenerator

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Packages that use SaltGenerator
org.jasypt.digest  
org.jasypt.digest.config  
org.jasypt.encryption.pbe  
org.jasypt.encryption.pbe.config  
org.jasypt.salt  
+  +

+ + + + + +
+Uses of SaltGenerator in org.jasypt.digest
+  +

+ + + + + + + + + + + + + + + + + + + + + +
Methods in org.jasypt.digest with parameters of type SaltGenerator
+ voidPooledByteDigester.setSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+ voidStandardStringDigester.setSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+ voidPooledStringDigester.setSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+ voidStandardByteDigester.setSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+  +

+ + + + + +
+Uses of SaltGenerator in org.jasypt.digest.config
+  +

+ + + + + + + + + + + + + +
Methods in org.jasypt.digest.config that return SaltGenerator
+ SaltGeneratorSimpleDigesterConfig.getSaltGenerator() + +
+           
+ SaltGeneratorDigesterConfig.getSaltGenerator() + +
+           + Returns a SaltGenerator implementation to be used by the digester.
+  +

+ + + + + + + + + + + + + +
Methods in org.jasypt.digest.config with parameters of type SaltGenerator
+ voidSimpleDigesterConfig.setSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator.
+ voidEnvironmentDigesterConfig.setSaltGenerator(SaltGenerator saltGenerator) + +
+           
+  +

+ + + + + +
+Uses of SaltGenerator in org.jasypt.encryption.pbe
+  +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Methods in org.jasypt.encryption.pbe with parameters of type SaltGenerator
+ voidStandardPBEStringEncryptor.setSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+ voidPooledPBEStringEncryptor.setSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+ voidStandardPBEBigDecimalEncryptor.setSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+ voidPooledPBEBigIntegerEncryptor.setSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+ voidPooledPBEBigDecimalEncryptor.setSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+ voidPooledPBEByteEncryptor.setSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+ voidStandardPBEBigIntegerEncryptor.setSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+ voidStandardPBEByteEncryptor.setSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator to be used.
+  +

+ + + + + +
+Uses of SaltGenerator in org.jasypt.encryption.pbe.config
+  +

+ + + + + + + + + + + + + +
Methods in org.jasypt.encryption.pbe.config that return SaltGenerator
+ SaltGeneratorSimplePBEConfig.getSaltGenerator() + +
+           
+ SaltGeneratorPBEConfig.getSaltGenerator() + +
+           + Returns a SaltGenerator implementation to be used by the + encryptor.
+  +

+ + + + + + + + + + + + + +
Methods in org.jasypt.encryption.pbe.config with parameters of type SaltGenerator
+ voidEnvironmentPBEConfig.setSaltGenerator(SaltGenerator saltGenerator) + +
+           
+ voidSimplePBEConfig.setSaltGenerator(SaltGenerator saltGenerator) + +
+           + Sets the salt generator.
+  +

+ + + + + +
+Uses of SaltGenerator in org.jasypt.salt
+  +

+ + + + + + + + + +
Subinterfaces of SaltGenerator in org.jasypt.salt
+ interfaceFixedSaltGenerator + +
+           + Marker interface for all implementations of SaltGenerator that + will always return the same salt (for the same amount of bytes asked).
+  +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Classes in org.jasypt.salt that implement SaltGenerator
+ classByteArrayFixedSaltGenerator + +
+           + Byte-array based implementation of FixedSaltGenerator, that will + always return the same salt.
+ classFixedByteArraySaltGenerator + +
+          Deprecated. Deprecated in 1.9.2 in favour of ByteArrayFixedSaltGenerator, which + implements the new FixedSaltGenerator interface and therefore is able to benefit + from the performance improvements associated with it. This class will be removed + in 1.10.0 (or 2.0.0).
+ classFixedStringSaltGenerator + +
+          Deprecated. Deprecated in 1.9.2 in favour of StringFixedSaltGenerator, which + implements the new FixedSaltGenerator interface and therefore is able to benefit + from the performance improvements associated with it. This class will be removed + in 1.10.0 (or 2.0.0).
+ classRandomSaltGenerator + +
+           + This implementation of SaltGenerator holds a secure random + generator which can be used for generating random salts for encryption + or digesting.
+ classStringFixedSaltGenerator + +
+           + String based implementation of FixedSaltGenerator, that will + always return the same salt.
+ classZeroSaltGenerator + +
+           + This implementation of SaltGenerator always returns a salt + of the required length, filled with zero bytes.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/StringFixedSaltGenerator.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/StringFixedSaltGenerator.html new file mode 100644 index 00000000..c340dc9f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/StringFixedSaltGenerator.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.salt.StringFixedSaltGenerator (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.salt.StringFixedSaltGenerator

+
+No usage of org.jasypt.salt.StringFixedSaltGenerator +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/ZeroSaltGenerator.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/ZeroSaltGenerator.html new file mode 100644 index 00000000..edce50f0 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/class-use/ZeroSaltGenerator.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.salt.ZeroSaltGenerator (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.salt.ZeroSaltGenerator

+
+No usage of org.jasypt.salt.ZeroSaltGenerator +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/package-frame.html new file mode 100644 index 00000000..d54eca1d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/package-frame.html @@ -0,0 +1,56 @@ + + + + + + + +org.jasypt.salt (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.salt + + + + +
+Interfaces  + +
+FixedSaltGenerator +
+SaltGenerator
+ + + + + + +
+Classes  + +
+ByteArrayFixedSaltGenerator +
+FixedByteArraySaltGenerator +
+FixedStringSaltGenerator +
+RandomSaltGenerator +
+StringFixedSaltGenerator +
+ZeroSaltGenerator
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/package-summary.html new file mode 100644 index 00000000..476d3ae5 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/package-summary.html @@ -0,0 +1,213 @@ + + + + + + + +org.jasypt.salt (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.salt +

+ + + + + + + + + + + + + +
+Interface Summary
FixedSaltGenerator + Marker interface for all implementations of SaltGenerator that + will always return the same salt (for the same amount of bytes asked).
SaltGenerator + Common interface for all salt generators which can be applied in digest + or encryption operations.
+  + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Class Summary
ByteArrayFixedSaltGenerator + Byte-array based implementation of FixedSaltGenerator, that will + always return the same salt.
FixedByteArraySaltGeneratorDeprecated. Deprecated in 1.9.2 in favour of ByteArrayFixedSaltGenerator, which + implements the new FixedSaltGenerator interface and therefore is able to benefit + from the performance improvements associated with it.
FixedStringSaltGeneratorDeprecated. Deprecated in 1.9.2 in favour of StringFixedSaltGenerator, which + implements the new FixedSaltGenerator interface and therefore is able to benefit + from the performance improvements associated with it.
RandomSaltGenerator + This implementation of SaltGenerator holds a secure random + generator which can be used for generating random salts for encryption + or digesting.
StringFixedSaltGenerator + String based implementation of FixedSaltGenerator, that will + always return the same salt.
ZeroSaltGenerator + This implementation of SaltGenerator always returns a salt + of the required length, filled with zero bytes.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/package-tree.html new file mode 100644 index 00000000..08699644 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/package-tree.html @@ -0,0 +1,167 @@ + + + + + + + +org.jasypt.salt Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.salt +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/package-use.html new file mode 100644 index 00000000..f2353884 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/salt/package-use.html @@ -0,0 +1,265 @@ + + + + + + + +Uses of Package org.jasypt.salt (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.salt

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Packages that use org.jasypt.salt
org.jasypt.digest  
org.jasypt.digest.config  
org.jasypt.encryption.pbe  
org.jasypt.encryption.pbe.config  
org.jasypt.salt  
+  +

+ + + + + + + + +
+Classes in org.jasypt.salt used by org.jasypt.digest
SaltGenerator + +
+           + Common interface for all salt generators which can be applied in digest + or encryption operations.
+  +

+ + + + + + + + +
+Classes in org.jasypt.salt used by org.jasypt.digest.config
SaltGenerator + +
+           + Common interface for all salt generators which can be applied in digest + or encryption operations.
+  +

+ + + + + + + + +
+Classes in org.jasypt.salt used by org.jasypt.encryption.pbe
SaltGenerator + +
+           + Common interface for all salt generators which can be applied in digest + or encryption operations.
+  +

+ + + + + + + + +
+Classes in org.jasypt.salt used by org.jasypt.encryption.pbe.config
SaltGenerator + +
+           + Common interface for all salt generators which can be applied in digest + or encryption operations.
+  +

+ + + + + + + + + + + +
+Classes in org.jasypt.salt used by org.jasypt.salt
FixedSaltGenerator + +
+           + Marker interface for all implementations of SaltGenerator that + will always return the same salt (for the same amount of bytes asked).
SaltGenerator + +
+           + Common interface for all salt generators which can be applied in digest + or encryption operations.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/BasicBinaryEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/BasicBinaryEncryptor.html new file mode 100644 index 00000000..1415ceab --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/BasicBinaryEncryptor.html @@ -0,0 +1,371 @@ + + + + + + + +BasicBinaryEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.util.binary +
+Class BasicBinaryEncryptor

+
+Object
+  extended by org.jasypt.util.binary.BasicBinaryEncryptor
+
+
+
All Implemented Interfaces:
BinaryEncryptor
+
+
+
+
public final class BasicBinaryEncryptor
extends Object
implements BinaryEncryptor
+ + +

+

+ Utility class for easily performing normal-strength encryption of + binaries (byte arrays). +

+

+ This class internally holds a StandardPBEByteEncryptor + configured this way: +

    +
  • Algorithm: PBEWithMD5AndDES.
  • +
  • Key obtention iterations: 1000.
  • +
+

+

+ The required steps to use it are: +

    +
  1. Create an instance (using new).
  2. +
  3. Set a password (using setPassword(String) or + setPasswordCharArray(char[])).
  4. +
  5. Perform the desired encrypt(byte[]) or + decrypt(byte[]) operations.
  6. +
+

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
BasicBinaryEncryptor() + +
+          Creates a new instance of BasicBinaryEncryptor.
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ byte[]decrypt(byte[] encryptedBinary) + +
+          Decrypts a byte array.
+ byte[]encrypt(byte[] binary) + +
+          Encrypts a byte array
+ voidsetPassword(String password) + +
+          Sets a password.
+ voidsetPasswordCharArray(char[] password) + +
+          Sets a password, as a char[].
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+BasicBinaryEncryptor

+
+public BasicBinaryEncryptor()
+
+
Creates a new instance of BasicBinaryEncryptor. +

+

+ + + + + + + + +
+Method Detail
+ +

+setPassword

+
+public void setPassword(String password)
+
+
Sets a password. +

+

+
+
+
+
Parameters:
password - the password to be set.
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+
Sets a password, as a char[]. +

+

+
+
+
+
Parameters:
password - the password to be set.
Since:
+
1.8
+
+
+
+
+ +

+encrypt

+
+public byte[] encrypt(byte[] binary)
+
+
Encrypts a byte array +

+

+
Specified by:
encrypt in interface BinaryEncryptor
+
+
+
Parameters:
binary - the byte array to be encrypted.
See Also:
StandardPBEByteEncryptor.encrypt(byte[])
+
+
+
+ +

+decrypt

+
+public byte[] decrypt(byte[] encryptedBinary)
+
+
Decrypts a byte array. +

+

+
Specified by:
decrypt in interface BinaryEncryptor
+
+
+
Parameters:
encryptedBinary - the byte array to be decrypted.
See Also:
StandardPBEByteEncryptor.decrypt(byte[])
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/BinaryEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/BinaryEncryptor.html new file mode 100644 index 00000000..28342083 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/BinaryEncryptor.html @@ -0,0 +1,245 @@ + + + + + + + +BinaryEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.util.binary +
+Interface BinaryEncryptor

+
+
All Known Implementing Classes:
BasicBinaryEncryptor, StrongBinaryEncryptor
+
+
+
+
public interface BinaryEncryptor
+ + +

+

+ Common interface for all util classes aimed at binary encryption +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + +
+Method Summary
+ byte[]decrypt(byte[] encryptedBinary) + +
+          Decrypts a byte array.
+ byte[]encrypt(byte[] binary) + +
+          Encrypts a byte array
+  +

+ + + + + + + + +
+Method Detail
+ +

+encrypt

+
+byte[] encrypt(byte[] binary)
+
+
Encrypts a byte array +

+

+
Parameters:
binary - the byte array to be encrypted.
+
+
+
+ +

+decrypt

+
+byte[] decrypt(byte[] encryptedBinary)
+
+
Decrypts a byte array. +

+

+
Parameters:
encryptedBinary - the byte array to be decrypted.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/StrongBinaryEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/StrongBinaryEncryptor.html new file mode 100644 index 00000000..59ae30e6 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/StrongBinaryEncryptor.html @@ -0,0 +1,371 @@ + + + + + + + +StrongBinaryEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.util.binary +
+Class StrongBinaryEncryptor

+
+Object
+  extended by org.jasypt.util.binary.StrongBinaryEncryptor
+
+
+
All Implemented Interfaces:
BinaryEncryptor
+
+
+
+
public final class StrongBinaryEncryptor
extends Object
implements BinaryEncryptor
+ + +

+

+ Utility class for easily performing high-strength encryption of + binaries (byte arrays). +

+

+ This class internally holds a StandardPBEByteEncryptor + configured this way: +

    +
  • Algorithm: PBEWithMD5AndTripleDES.
  • +
  • Key obtention iterations: 1000.
  • +
+

+

+ The required steps to use it are: +

    +
  1. Create an instance (using new).
  2. +
  3. Set a password (using setPassword(String) or + setPasswordCharArray(char[])).
  4. +
  5. Perform the desired encrypt(byte[]) or + decrypt(byte[]) operations.
  6. +
+

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
StrongBinaryEncryptor() + +
+          Creates a new instance of StrongBinaryEncryptor.
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ byte[]decrypt(byte[] encryptedBinary) + +
+          Decrypts a byte array.
+ byte[]encrypt(byte[] binary) + +
+          Encrypts a byte array
+ voidsetPassword(String password) + +
+          Sets a password.
+ voidsetPasswordCharArray(char[] password) + +
+          Sets a password, as a char[].
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+StrongBinaryEncryptor

+
+public StrongBinaryEncryptor()
+
+
Creates a new instance of StrongBinaryEncryptor. +

+

+ + + + + + + + +
+Method Detail
+ +

+setPassword

+
+public void setPassword(String password)
+
+
Sets a password. +

+

+
+
+
+
Parameters:
password - the password to be set.
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+
Sets a password, as a char[]. +

+

+
+
+
+
Parameters:
password - the password to be set.
Since:
+
1.8
+
+
+
+
+ +

+encrypt

+
+public byte[] encrypt(byte[] binary)
+
+
Encrypts a byte array +

+

+
Specified by:
encrypt in interface BinaryEncryptor
+
+
+
Parameters:
binary - the byte array to be encrypted.
See Also:
StandardPBEByteEncryptor.encrypt(byte[])
+
+
+
+ +

+decrypt

+
+public byte[] decrypt(byte[] encryptedBinary)
+
+
Decrypts a byte array. +

+

+
Specified by:
decrypt in interface BinaryEncryptor
+
+
+
Parameters:
encryptedBinary - the byte array to be decrypted.
See Also:
StandardPBEByteEncryptor.decrypt(byte[])
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/class-use/BasicBinaryEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/class-use/BasicBinaryEncryptor.html new file mode 100644 index 00000000..e474f595 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/class-use/BasicBinaryEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.util.binary.BasicBinaryEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.util.binary.BasicBinaryEncryptor

+
+No usage of org.jasypt.util.binary.BasicBinaryEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/class-use/BinaryEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/class-use/BinaryEncryptor.html new file mode 100644 index 00000000..b248a566 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/class-use/BinaryEncryptor.html @@ -0,0 +1,193 @@ + + + + + + + +Uses of Interface org.jasypt.util.binary.BinaryEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.util.binary.BinaryEncryptor

+
+ + + + + + + + + +
+Packages that use BinaryEncryptor
org.jasypt.util.binary  
+  +

+ + + + + +
+Uses of BinaryEncryptor in org.jasypt.util.binary
+  +

+ + + + + + + + + + + + + +
Classes in org.jasypt.util.binary that implement BinaryEncryptor
+ classBasicBinaryEncryptor + +
+           + Utility class for easily performing normal-strength encryption of + binaries (byte arrays).
+ classStrongBinaryEncryptor + +
+           + Utility class for easily performing high-strength encryption of + binaries (byte arrays).
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/class-use/StrongBinaryEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/class-use/StrongBinaryEncryptor.html new file mode 100644 index 00000000..e16683ae --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/class-use/StrongBinaryEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.util.binary.StrongBinaryEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.util.binary.StrongBinaryEncryptor

+
+No usage of org.jasypt.util.binary.StrongBinaryEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/package-frame.html new file mode 100644 index 00000000..7886098e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/package-frame.html @@ -0,0 +1,46 @@ + + + + + + + +org.jasypt.util.binary (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.util.binary + + + + +
+Interfaces  + +
+BinaryEncryptor
+ + + + + + +
+Classes  + +
+BasicBinaryEncryptor +
+StrongBinaryEncryptor
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/package-summary.html new file mode 100644 index 00000000..9e97f735 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/package-summary.html @@ -0,0 +1,181 @@ + + + + + + + +org.jasypt.util.binary (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.util.binary +

+ + + + + + + + + +
+Interface Summary
BinaryEncryptor + Common interface for all util classes aimed at binary encryption
+  + +

+ + + + + + + + + + + + + +
+Class Summary
BasicBinaryEncryptor + Utility class for easily performing normal-strength encryption of + binaries (byte arrays).
StrongBinaryEncryptor + Utility class for easily performing high-strength encryption of + binaries (byte arrays).
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/package-tree.html new file mode 100644 index 00000000..8d8305ad --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/package-tree.html @@ -0,0 +1,161 @@ + + + + + + + +org.jasypt.util.binary Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.util.binary +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/package-use.html new file mode 100644 index 00000000..38456e4e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/binary/package-use.html @@ -0,0 +1,172 @@ + + + + + + + +Uses of Package org.jasypt.util.binary (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.util.binary

+
+ + + + + + + + + +
+Packages that use org.jasypt.util.binary
org.jasypt.util.binary  
+  +

+ + + + + + + + +
+Classes in org.jasypt.util.binary used by org.jasypt.util.binary
BinaryEncryptor + +
+           + Common interface for all util classes aimed at binary encryption
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/Digester.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/Digester.html new file mode 100644 index 00000000..6491d25e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/Digester.html @@ -0,0 +1,545 @@ + + + + + + + +Digester (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.util.digest +
+Class Digester

+
+Object
+  extended by org.jasypt.util.digest.Digester
+
+
+
+
public final class Digester
extends Object
+ + +

+

+ Utility class for creating digests without using a salt or iterating + the hash function. This means that digests created by this class will + be compatible (and equivalent) to the ones which could be created by + the user by directly using a MessageDigest object. +

+

+ This class can be thought of as convenience wrapper for + MessageDigest, adding thread-safety and + a more javabean-like interface to it. These two features enable a more + adequate use from an IoC container like Spring. +

+

+ This class internally holds a StandardByteDigester + configured this way: +

    +
  • Algorithm: MD5 by default, but configurable.
  • +
  • Provider: Default JVM security provider, but configurable.
  • +
  • Salt size: 0 bytes, no salt used.
  • +
  • Iterations: 1, hash function will not be iterated.
  • +
+

+

+ This class is thread-safe +

+

+ +

+

+
Since:
+
1.2 (class existed as org.jasypt.util.MessageDigester since 1.1)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+static StringDEFAULT_ALGORITHM + +
+          MD5 will be the default algorithm to be used if none is specified.
+  + + + + + + + + + + + + + + + + + + + +
+Constructor Summary
Digester() + +
+          Creates a new instance of Digester.
Digester(String algorithm) + +
+           + Creates a new instance of Digester, specifying + the algorithm to be used.
Digester(String algorithm, + java.security.Provider provider) + +
+           + Creates a new instance of Digester, specifying + the algorithm to be used.
Digester(String algorithm, + String providerName) + +
+           + Creates a new instance of Digester, specifying + the algorithm to be used.
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ byte[]digest(byte[] binary) + +
+          Creates a digest.
+ voidsetAlgorithm(String algorithm) + +
+           + Sets the algorithm to be used for digesting, like MD5 + or SHA-1.
+ voidsetProvider(java.security.Provider provider) + +
+           + Sets the security provider to be asked for the digest algorithm.
+ voidsetProviderName(String providerName) + +
+           + Sets the name of the security provider to be asked for the + digest algorithm.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+DEFAULT_ALGORITHM

+
+public static final String DEFAULT_ALGORITHM
+
+
MD5 will be the default algorithm to be used if none is specified. +

+

+
See Also:
Constant Field Values
+
+ + + + + + + + +
+Constructor Detail
+ +

+Digester

+
+public Digester()
+
+
Creates a new instance of Digester. It will use + the default algorithm unless one is specified with + setAlgorithm(String). +

+

+
+ +

+Digester

+
+public Digester(String algorithm)
+
+

+ Creates a new instance of Digester, specifying + the algorithm to be used. +

+

+

+
+ +

+Digester

+
+public Digester(String algorithm,
+                String providerName)
+
+

+ Creates a new instance of Digester, specifying + the algorithm to be used. +

+

+

+
Since:
+
1.3
+
+
+
+ +

+Digester

+
+public Digester(String algorithm,
+                java.security.Provider provider)
+
+

+ Creates a new instance of Digester, specifying + the algorithm to be used. +

+

+

+
Since:
+
1.3
+
+
+ + + + + + + + +
+Method Detail
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+

+ Sets the algorithm to be used for digesting, like MD5 + or SHA-1. +

+

+ This algorithm has to be supported by your security infrastructure, and + it should be allowed as an algorithm for creating + java.security.MessageDigest instances. +

+

+ If you are specifying a security provider with setProvider(Provider) or + setProviderName(String), this algorithm should be + supported by your specified provider. +

+

+ If you are not specifying a provider, you will be able to use those + algorithms provided by the default security provider of your JVM vendor. + For valid names in the Sun JVM, see Java + Cryptography Architecture API Specification & + Reference. +

+

+

+
Parameters:
algorithm - the name of the algorithm to be used. +
Throws: +
AlreadyInitializedException - if it has already been initialized, + this is, if digest(byte[]) has been called at least + once.
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+

+ Sets the name of the security provider to be asked for the + digest algorithm. This security provider has to be registered beforehand + at the JVM security framework. +

+

+ The provider can also be set with the setProvider(Provider) + method, in which case it will not be necessary neither registering + the provider beforehand, + nor calling this setProviderName(String) method to specify + a provider name. +

+

+ Note that a call to setProvider(Provider) overrides any value + set by this method. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
Parameters:
providerName - the name of the security provider to be asked + for the digest algorithm. +
Throws: +
AlreadyInitializedException - if it has already been initialized, + this is, if digest(byte[]) has been called at least + once.
Since:
+
1.3
+
+
+
+
+ +

+setProvider

+
+public void setProvider(java.security.Provider provider)
+
+

+ Sets the security provider to be asked for the digest algorithm. + The provider does not have to be registered at the security + infrastructure beforehand, and its being used here will not result in + it being registered. +

+

+ If this method is called, calling setProviderName(String) + becomes unnecessary. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
Parameters:
provider - the provider to be asked for the chosen algorithm +
Throws: +
AlreadyInitializedException - if it has already been initialized, + this is, if digest(byte[]) has been called at least + once.
Since:
+
1.3
+
+
+
+
+ +

+digest

+
+public byte[] digest(byte[] binary)
+
+
Creates a digest. +

+

+
Parameters:
binary - the byte array to be digested. +
Returns:
the resulting digest.
See Also:
StandardByteDigester.digest(byte[])
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/class-use/Digester.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/class-use/Digester.html new file mode 100644 index 00000000..afd9a952 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/class-use/Digester.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.util.digest.Digester (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.util.digest.Digester

+
+No usage of org.jasypt.util.digest.Digester +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/package-frame.html new file mode 100644 index 00000000..4b73eb8c --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/package-frame.html @@ -0,0 +1,33 @@ + + + + + + + +org.jasypt.util.digest (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.util.digest + + + + +
+Classes  + +
+Digester
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/package-summary.html new file mode 100644 index 00000000..2a6291e5 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/package-summary.html @@ -0,0 +1,160 @@ + + + + + + + +org.jasypt.util.digest (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.util.digest +

+ + + + + + + + + +
+Class Summary
Digester + Utility class for creating digests without using a salt or iterating + the hash function.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/package-tree.html new file mode 100644 index 00000000..fdf6687e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/package-tree.html @@ -0,0 +1,154 @@ + + + + + + + +org.jasypt.util.digest Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.util.digest +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+
    +
  • Object +
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/package-use.html new file mode 100644 index 00000000..5bfecb8b --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/digest/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.util.digest (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.util.digest

+
+No usage of org.jasypt.util.digest +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/BasicDecimalNumberEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/BasicDecimalNumberEncryptor.html new file mode 100644 index 00000000..978ae704 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/BasicDecimalNumberEncryptor.html @@ -0,0 +1,371 @@ + + + + + + + +BasicDecimalNumberEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.util.numeric +
+Class BasicDecimalNumberEncryptor

+
+Object
+  extended by org.jasypt.util.numeric.BasicDecimalNumberEncryptor
+
+
+
All Implemented Interfaces:
DecimalNumberEncryptor
+
+
+
+
public final class BasicDecimalNumberEncryptor
extends Object
implements DecimalNumberEncryptor
+ + +

+

+ Utility class for easily performing normal-strength encryption of + BigDecimal objects. +

+

+ This class internally holds a StandardPBEBigDecimalEncryptor + configured this way: +

    +
  • Algorithm: PBEWithMD5AndDES.
  • +
  • Key obtention iterations: 1000.
  • +
+

+

+ The required steps to use it are: +

    +
  1. Create an instance (using new).
  2. +
  3. Set a password (using setPassword(String) or + setPasswordCharArray(char[])).
  4. +
  5. Perform the desired encrypt(BigDecimal) or + decrypt(BigDecimal) operations.
  6. +
+

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
BasicDecimalNumberEncryptor() + +
+          Creates a new instance of BasicDecimalNumberEncryptor.
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.math.BigDecimaldecrypt(java.math.BigDecimal encryptedNumber) + +
+          Decrypts a number.
+ java.math.BigDecimalencrypt(java.math.BigDecimal number) + +
+          Encrypts a number
+ voidsetPassword(String password) + +
+          Sets a password.
+ voidsetPasswordCharArray(char[] password) + +
+          Sets a password, as a char[].
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+BasicDecimalNumberEncryptor

+
+public BasicDecimalNumberEncryptor()
+
+
Creates a new instance of BasicDecimalNumberEncryptor. +

+

+ + + + + + + + +
+Method Detail
+ +

+setPassword

+
+public void setPassword(String password)
+
+
Sets a password. +

+

+
+
+
+
Parameters:
password - the password to be set.
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+
Sets a password, as a char[]. +

+

+
+
+
+
Parameters:
password - the password to be set.
Since:
+
1.8
+
+
+
+
+ +

+encrypt

+
+public java.math.BigDecimal encrypt(java.math.BigDecimal number)
+
+
Encrypts a number +

+

+
Specified by:
encrypt in interface DecimalNumberEncryptor
+
+
+
Parameters:
number - the number to be encrypted.
See Also:
StandardPBEBigDecimalEncryptor.encrypt(BigDecimal)
+
+
+
+ +

+decrypt

+
+public java.math.BigDecimal decrypt(java.math.BigDecimal encryptedNumber)
+
+
Decrypts a number. +

+

+
Specified by:
decrypt in interface DecimalNumberEncryptor
+
+
+
Parameters:
encryptedNumber - the number to be decrypted.
See Also:
StandardPBEBigDecimalEncryptor.decrypt(BigDecimal)
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/BasicIntegerNumberEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/BasicIntegerNumberEncryptor.html new file mode 100644 index 00000000..d0081c7f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/BasicIntegerNumberEncryptor.html @@ -0,0 +1,371 @@ + + + + + + + +BasicIntegerNumberEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.util.numeric +
+Class BasicIntegerNumberEncryptor

+
+Object
+  extended by org.jasypt.util.numeric.BasicIntegerNumberEncryptor
+
+
+
All Implemented Interfaces:
IntegerNumberEncryptor
+
+
+
+
public final class BasicIntegerNumberEncryptor
extends Object
implements IntegerNumberEncryptor
+ + +

+

+ Utility class for easily performing normal-strength encryption of + BigInteger objects. +

+

+ This class internally holds a StandardPBEBigIntegerEncryptor + configured this way: +

    +
  • Algorithm: PBEWithMD5AndDES.
  • +
  • Key obtention iterations: 1000.
  • +
+

+

+ The required steps to use it are: +

    +
  1. Create an instance (using new).
  2. +
  3. Set a password (using setPassword(String) or + setPasswordCharArray(char[])).
  4. +
  5. Perform the desired encrypt(BigInteger) or + decrypt(BigInteger) operations.
  6. +
+

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
BasicIntegerNumberEncryptor() + +
+          Creates a new instance of BasicIntegerNumberEncryptor.
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.math.BigIntegerdecrypt(java.math.BigInteger encryptedNumber) + +
+          Decrypts a number.
+ java.math.BigIntegerencrypt(java.math.BigInteger number) + +
+          Encrypts a number
+ voidsetPassword(String password) + +
+          Sets a password.
+ voidsetPasswordCharArray(char[] password) + +
+          Sets a password, as a char[].
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+BasicIntegerNumberEncryptor

+
+public BasicIntegerNumberEncryptor()
+
+
Creates a new instance of BasicIntegerNumberEncryptor. +

+

+ + + + + + + + +
+Method Detail
+ +

+setPassword

+
+public void setPassword(String password)
+
+
Sets a password. +

+

+
+
+
+
Parameters:
password - the password to be set.
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+
Sets a password, as a char[]. +

+

+
+
+
+
Parameters:
password - the password to be set.
Since:
+
1.8
+
+
+
+
+ +

+encrypt

+
+public java.math.BigInteger encrypt(java.math.BigInteger number)
+
+
Encrypts a number +

+

+
Specified by:
encrypt in interface IntegerNumberEncryptor
+
+
+
Parameters:
number - the number to be encrypted.
See Also:
StandardPBEBigIntegerEncryptor.encrypt(BigInteger)
+
+
+
+ +

+decrypt

+
+public java.math.BigInteger decrypt(java.math.BigInteger encryptedNumber)
+
+
Decrypts a number. +

+

+
Specified by:
decrypt in interface IntegerNumberEncryptor
+
+
+
Parameters:
encryptedNumber - the number to be decrypted.
See Also:
StandardPBEBigIntegerEncryptor.decrypt(BigInteger)
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/DecimalNumberEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/DecimalNumberEncryptor.html new file mode 100644 index 00000000..27d60559 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/DecimalNumberEncryptor.html @@ -0,0 +1,245 @@ + + + + + + + +DecimalNumberEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.util.numeric +
+Interface DecimalNumberEncryptor

+
+
All Known Implementing Classes:
BasicDecimalNumberEncryptor, StrongDecimalNumberEncryptor
+
+
+
+
public interface DecimalNumberEncryptor
+ + +

+

+ Common interface for all util classes aimed at decimal number encryption. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + +
+Method Summary
+ java.math.BigDecimaldecrypt(java.math.BigDecimal encryptedNumber) + +
+          Decrypts a BigDecimal.
+ java.math.BigDecimalencrypt(java.math.BigDecimal number) + +
+          Encrypts a BigDecimal
+  +

+ + + + + + + + +
+Method Detail
+ +

+encrypt

+
+java.math.BigDecimal encrypt(java.math.BigDecimal number)
+
+
Encrypts a BigDecimal +

+

+
Parameters:
number - the number to be encrypted.
+
+
+
+ +

+decrypt

+
+java.math.BigDecimal decrypt(java.math.BigDecimal encryptedNumber)
+
+
Decrypts a BigDecimal. +

+

+
Parameters:
encryptedNumber - the number to be decrypted.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/IntegerNumberEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/IntegerNumberEncryptor.html new file mode 100644 index 00000000..3e6283e9 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/IntegerNumberEncryptor.html @@ -0,0 +1,245 @@ + + + + + + + +IntegerNumberEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.util.numeric +
+Interface IntegerNumberEncryptor

+
+
All Known Implementing Classes:
BasicIntegerNumberEncryptor, StrongIntegerNumberEncryptor
+
+
+
+
public interface IntegerNumberEncryptor
+ + +

+

+ Common interface for all util classes aimed at integer number encryption. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + +
+Method Summary
+ java.math.BigIntegerdecrypt(java.math.BigInteger encryptedNumber) + +
+          Decrypts a BigInteger.
+ java.math.BigIntegerencrypt(java.math.BigInteger number) + +
+          Encrypts a BigInteger
+  +

+ + + + + + + + +
+Method Detail
+ +

+encrypt

+
+java.math.BigInteger encrypt(java.math.BigInteger number)
+
+
Encrypts a BigInteger +

+

+
Parameters:
number - the number to be encrypted.
+
+
+
+ +

+decrypt

+
+java.math.BigInteger decrypt(java.math.BigInteger encryptedNumber)
+
+
Decrypts a BigInteger. +

+

+
Parameters:
encryptedNumber - the number to be decrypted.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/StrongDecimalNumberEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/StrongDecimalNumberEncryptor.html new file mode 100644 index 00000000..dafa15ed --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/StrongDecimalNumberEncryptor.html @@ -0,0 +1,371 @@ + + + + + + + +StrongDecimalNumberEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.util.numeric +
+Class StrongDecimalNumberEncryptor

+
+Object
+  extended by org.jasypt.util.numeric.StrongDecimalNumberEncryptor
+
+
+
All Implemented Interfaces:
DecimalNumberEncryptor
+
+
+
+
public final class StrongDecimalNumberEncryptor
extends Object
implements DecimalNumberEncryptor
+ + +

+

+ Utility class for easily performing normal-strength encryption of + BigDecimal objects. +

+

+ This class internally holds a StandardPBEBigDecimalEncryptor + configured this way: +

    +
  • Algorithm: PBEWithMD5AndTripleDES.
  • +
  • Key obtention iterations: 1000.
  • +
+

+

+ The required steps to use it are: +

    +
  1. Create an instance (using new).
  2. +
  3. Set a password (using setPassword(String) or + setPasswordCharArray(char[])).
  4. +
  5. Perform the desired encrypt(BigDecimal) or + decrypt(BigDecimal) operations.
  6. +
+

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
StrongDecimalNumberEncryptor() + +
+          Creates a new instance of StrongDecimalNumberEncryptor.
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.math.BigDecimaldecrypt(java.math.BigDecimal encryptedNumber) + +
+          Decrypts a number.
+ java.math.BigDecimalencrypt(java.math.BigDecimal number) + +
+          Encrypts a number
+ voidsetPassword(String password) + +
+          Sets a password.
+ voidsetPasswordCharArray(char[] password) + +
+          Sets a password, as a char[].
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+StrongDecimalNumberEncryptor

+
+public StrongDecimalNumberEncryptor()
+
+
Creates a new instance of StrongDecimalNumberEncryptor. +

+

+ + + + + + + + +
+Method Detail
+ +

+setPassword

+
+public void setPassword(String password)
+
+
Sets a password. +

+

+
+
+
+
Parameters:
password - the password to be set.
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+
Sets a password, as a char[]. +

+

+
+
+
+
Parameters:
password - the password to be set.
Since:
+
1.8
+
+
+
+
+ +

+encrypt

+
+public java.math.BigDecimal encrypt(java.math.BigDecimal number)
+
+
Encrypts a number +

+

+
Specified by:
encrypt in interface DecimalNumberEncryptor
+
+
+
Parameters:
number - the number to be encrypted.
See Also:
StandardPBEBigDecimalEncryptor.encrypt(BigDecimal)
+
+
+
+ +

+decrypt

+
+public java.math.BigDecimal decrypt(java.math.BigDecimal encryptedNumber)
+
+
Decrypts a number. +

+

+
Specified by:
decrypt in interface DecimalNumberEncryptor
+
+
+
Parameters:
encryptedNumber - the number to be decrypted.
See Also:
StandardPBEBigDecimalEncryptor.decrypt(BigDecimal)
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/StrongIntegerNumberEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/StrongIntegerNumberEncryptor.html new file mode 100644 index 00000000..eb10c0a4 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/StrongIntegerNumberEncryptor.html @@ -0,0 +1,371 @@ + + + + + + + +StrongIntegerNumberEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.util.numeric +
+Class StrongIntegerNumberEncryptor

+
+Object
+  extended by org.jasypt.util.numeric.StrongIntegerNumberEncryptor
+
+
+
All Implemented Interfaces:
IntegerNumberEncryptor
+
+
+
+
public final class StrongIntegerNumberEncryptor
extends Object
implements IntegerNumberEncryptor
+ + +

+

+ Utility class for easily performing normal-strength encryption of + BigInteger objects. +

+

+ This class internally holds a StandardPBEBigIntegerEncryptor + configured this way: +

    +
  • Algorithm: PBEWithMD5AndTripleDES.
  • +
  • Key obtention iterations: 1000.
  • +
+

+

+ The required steps to use it are: +

    +
  1. Create an instance (using new).
  2. +
  3. Set a password (using setPassword(String) or + setPasswordCharArray(char[])).
  4. +
  5. Perform the desired encrypt(BigInteger) or + decrypt(BigInteger) operations.
  6. +
+

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
StrongIntegerNumberEncryptor() + +
+          Creates a new instance of StrongIntegerNumberEncryptor.
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.math.BigIntegerdecrypt(java.math.BigInteger encryptedNumber) + +
+          Decrypts a number.
+ java.math.BigIntegerencrypt(java.math.BigInteger number) + +
+          Encrypts a number
+ voidsetPassword(String password) + +
+          Sets a password.
+ voidsetPasswordCharArray(char[] password) + +
+          Sets a password, as a char[].
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+StrongIntegerNumberEncryptor

+
+public StrongIntegerNumberEncryptor()
+
+
Creates a new instance of StrongIntegerNumberEncryptor. +

+

+ + + + + + + + +
+Method Detail
+ +

+setPassword

+
+public void setPassword(String password)
+
+
Sets a password. +

+

+
+
+
+
Parameters:
password - the password to be set.
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+
Sets a password, as a char[]. +

+

+
+
+
+
Parameters:
password - the password to be set.
Since:
+
1.8
+
+
+
+
+ +

+encrypt

+
+public java.math.BigInteger encrypt(java.math.BigInteger number)
+
+
Encrypts a number +

+

+
Specified by:
encrypt in interface IntegerNumberEncryptor
+
+
+
Parameters:
number - the number to be encrypted.
See Also:
StandardPBEBigIntegerEncryptor.encrypt(BigInteger)
+
+
+
+ +

+decrypt

+
+public java.math.BigInteger decrypt(java.math.BigInteger encryptedNumber)
+
+
Decrypts a number. +

+

+
Specified by:
decrypt in interface IntegerNumberEncryptor
+
+
+
Parameters:
encryptedNumber - the number to be decrypted.
See Also:
StandardPBEBigIntegerEncryptor.decrypt(BigInteger)
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/BasicDecimalNumberEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/BasicDecimalNumberEncryptor.html new file mode 100644 index 00000000..d10d2d0e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/BasicDecimalNumberEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.util.numeric.BasicDecimalNumberEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.util.numeric.BasicDecimalNumberEncryptor

+
+No usage of org.jasypt.util.numeric.BasicDecimalNumberEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/BasicIntegerNumberEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/BasicIntegerNumberEncryptor.html new file mode 100644 index 00000000..04a59c4b --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/BasicIntegerNumberEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.util.numeric.BasicIntegerNumberEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.util.numeric.BasicIntegerNumberEncryptor

+
+No usage of org.jasypt.util.numeric.BasicIntegerNumberEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/DecimalNumberEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/DecimalNumberEncryptor.html new file mode 100644 index 00000000..ccbe7c82 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/DecimalNumberEncryptor.html @@ -0,0 +1,193 @@ + + + + + + + +Uses of Interface org.jasypt.util.numeric.DecimalNumberEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.util.numeric.DecimalNumberEncryptor

+
+ + + + + + + + + +
+Packages that use DecimalNumberEncryptor
org.jasypt.util.numeric  
+  +

+ + + + + +
+Uses of DecimalNumberEncryptor in org.jasypt.util.numeric
+  +

+ + + + + + + + + + + + + +
Classes in org.jasypt.util.numeric that implement DecimalNumberEncryptor
+ classBasicDecimalNumberEncryptor + +
+           + Utility class for easily performing normal-strength encryption of + BigDecimal objects.
+ classStrongDecimalNumberEncryptor + +
+           + Utility class for easily performing normal-strength encryption of + BigDecimal objects.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/IntegerNumberEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/IntegerNumberEncryptor.html new file mode 100644 index 00000000..9cee1d40 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/IntegerNumberEncryptor.html @@ -0,0 +1,193 @@ + + + + + + + +Uses of Interface org.jasypt.util.numeric.IntegerNumberEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.util.numeric.IntegerNumberEncryptor

+
+ + + + + + + + + +
+Packages that use IntegerNumberEncryptor
org.jasypt.util.numeric  
+  +

+ + + + + +
+Uses of IntegerNumberEncryptor in org.jasypt.util.numeric
+  +

+ + + + + + + + + + + + + +
Classes in org.jasypt.util.numeric that implement IntegerNumberEncryptor
+ classBasicIntegerNumberEncryptor + +
+           + Utility class for easily performing normal-strength encryption of + BigInteger objects.
+ classStrongIntegerNumberEncryptor + +
+           + Utility class for easily performing normal-strength encryption of + BigInteger objects.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/StrongDecimalNumberEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/StrongDecimalNumberEncryptor.html new file mode 100644 index 00000000..2e5b5df1 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/StrongDecimalNumberEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.util.numeric.StrongDecimalNumberEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.util.numeric.StrongDecimalNumberEncryptor

+
+No usage of org.jasypt.util.numeric.StrongDecimalNumberEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/StrongIntegerNumberEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/StrongIntegerNumberEncryptor.html new file mode 100644 index 00000000..35510f08 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/class-use/StrongIntegerNumberEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.util.numeric.StrongIntegerNumberEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.util.numeric.StrongIntegerNumberEncryptor

+
+No usage of org.jasypt.util.numeric.StrongIntegerNumberEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/package-frame.html new file mode 100644 index 00000000..dad55ce2 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/package-frame.html @@ -0,0 +1,52 @@ + + + + + + + +org.jasypt.util.numeric (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.util.numeric + + + + +
+Interfaces  + +
+DecimalNumberEncryptor +
+IntegerNumberEncryptor
+ + + + + + +
+Classes  + +
+BasicDecimalNumberEncryptor +
+BasicIntegerNumberEncryptor +
+StrongDecimalNumberEncryptor +
+StrongIntegerNumberEncryptor
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/package-summary.html new file mode 100644 index 00000000..aecfbf4d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/package-summary.html @@ -0,0 +1,198 @@ + + + + + + + +org.jasypt.util.numeric (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.util.numeric +

+ + + + + + + + + + + + + +
+Interface Summary
DecimalNumberEncryptor + Common interface for all util classes aimed at decimal number encryption.
IntegerNumberEncryptor + Common interface for all util classes aimed at integer number encryption.
+  + +

+ + + + + + + + + + + + + + + + + + + + + +
+Class Summary
BasicDecimalNumberEncryptor + Utility class for easily performing normal-strength encryption of + BigDecimal objects.
BasicIntegerNumberEncryptor + Utility class for easily performing normal-strength encryption of + BigInteger objects.
StrongDecimalNumberEncryptor + Utility class for easily performing normal-strength encryption of + BigDecimal objects.
StrongIntegerNumberEncryptor + Utility class for easily performing normal-strength encryption of + BigInteger objects.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/package-tree.html new file mode 100644 index 00000000..55b268ad --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/package-tree.html @@ -0,0 +1,163 @@ + + + + + + + +org.jasypt.util.numeric Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.util.numeric +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/package-use.html new file mode 100644 index 00000000..5973b767 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/numeric/package-use.html @@ -0,0 +1,179 @@ + + + + + + + +Uses of Package org.jasypt.util.numeric (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.util.numeric

+
+ + + + + + + + + +
+Packages that use org.jasypt.util.numeric
org.jasypt.util.numeric  
+  +

+ + + + + + + + + + + +
+Classes in org.jasypt.util.numeric used by org.jasypt.util.numeric
DecimalNumberEncryptor + +
+           + Common interface for all util classes aimed at decimal number encryption.
IntegerNumberEncryptor + +
+           + Common interface for all util classes aimed at integer number encryption.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/BasicPasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/BasicPasswordEncryptor.html new file mode 100644 index 00000000..65ed6c5e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/BasicPasswordEncryptor.html @@ -0,0 +1,326 @@ + + + + + + + +BasicPasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.util.password +
+Class BasicPasswordEncryptor

+
+Object
+  extended by org.jasypt.util.password.BasicPasswordEncryptor
+
+
+
All Implemented Interfaces:
PasswordEncryptor
+
+
+
+
public final class BasicPasswordEncryptor
extends Object
implements PasswordEncryptor
+ + +

+

+ Utility class for easily performing password digesting and checking. +

+

+ This class internally holds a StandardStringDigester + configured this way: +

    +
  • Algorithm: MD5.
  • +
  • Salt size: 8 bytes.
  • +
  • Iterations: 1000.
  • +
+

+

+ The required steps to use it are: +

    +
  1. Create an instance (using new).
  2. +
  3. Perform the desired encryptPassword(String) or + checkPassword(String, String) + operations.
  4. +
+

+

+ This class is thread-safe +

+

+ +

+

+
Since:
+
1.2 (class existed as org.jasypt.util.PasswordEncryptor since 1.0)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
BasicPasswordEncryptor() + +
+          Creates a new instance of BasicPasswordEncryptor
+  + + + + + + + + + + + + + + + +
+Method Summary
+ booleancheckPassword(String plainPassword, + String encryptedPassword) + +
+          Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match.
+ StringencryptPassword(String password) + +
+          Encrypts (digests) a password.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+BasicPasswordEncryptor

+
+public BasicPasswordEncryptor()
+
+
Creates a new instance of BasicPasswordEncryptor +

+

+ + + + + + + + +
+Method Detail
+ +

+encryptPassword

+
+public String encryptPassword(String password)
+
+
Encrypts (digests) a password. +

+

+
Specified by:
encryptPassword in interface PasswordEncryptor
+
+
+
Parameters:
password - the password to be encrypted. +
Returns:
the resulting digest.
See Also:
StandardStringDigester.digest(String)
+
+
+
+ +

+checkPassword

+
+public boolean checkPassword(String plainPassword,
+                             String encryptedPassword)
+
+
Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match. +

+

+
Specified by:
checkPassword in interface PasswordEncryptor
+
+
+
Parameters:
plainPassword - the plain password to check.
encryptedPassword - the digest against which to check the password. +
Returns:
true if passwords match, false if not.
See Also:
StandardStringDigester.matches(String, String)
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/ConfigurablePasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/ConfigurablePasswordEncryptor.html new file mode 100644 index 00000000..4f96d848 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/ConfigurablePasswordEncryptor.html @@ -0,0 +1,571 @@ + + + + + + + +ConfigurablePasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.util.password +
+Class ConfigurablePasswordEncryptor

+
+Object
+  extended by org.jasypt.util.password.ConfigurablePasswordEncryptor
+
+
+
All Implemented Interfaces:
PasswordEncryptor
+
+
+
+
public final class ConfigurablePasswordEncryptor
extends Object
implements PasswordEncryptor
+ + +

+

+ Utility class for easily performing password digesting and checking. +

+

+ This class internally holds a StandardStringDigester + which can be configured by the user by optionally choosing the algorithm + to be used, the output format (BASE64 or hexadecimal) the mechanism of + encryption (plain digests vs. use of random salt + and iteration count (default)) and even use a DigesterConfig object for + more advanced configuration. +

+

+ The results obtained when encoding with this class are encoded in + BASE64 form. +

+

+ The required steps to use it are: +

    +
  1. Create an instance (using new).
  2. +
  3. Configure if needed with the setX() methods.
  4. +
  5. Perform the desired encryptPassword(String) or + checkPassword(String, String) + operations.
  6. +
+

+

+ This class is thread-safe +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
ConfigurablePasswordEncryptor() + +
+          Creates a new instance of ConfigurablePasswordEncryptor
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ booleancheckPassword(String plainPassword, + String encryptedPassword) + +
+          Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match.
+ StringencryptPassword(String password) + +
+          Encrypts (digests) a password.
+ voidsetAlgorithm(String algorithm) + +
+           + Sets the algorithm to be used for digesting, like MD5 + or SHA-1.
+ voidsetConfig(DigesterConfig config) + +
+          Lets the user configure this encryptor with a DigesterConfig + object, like if he/she were using a StandardStringDigester object + directly.
+ voidsetPlainDigest(boolean plainDigest) + +
+          Lets the user specify if he/she wants a plain digest used as an + encryption mechanism (no salt or iterations, as with + MessageDigest), or rather use the + jasypt's usual stronger mechanism for password encryption (based + on the use of a salt and the iteration of the hash function).
+ voidsetProvider(java.security.Provider provider) + +
+           + Sets the security provider to be asked for the digest algorithm.
+ voidsetProviderName(String providerName) + +
+           + Sets the name of the security provider to be asked for the + digest algorithm.
+ voidsetStringOutputType(String stringOutputType) + +
+           + Sets the the form in which String output + will be encoded.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+ConfigurablePasswordEncryptor

+
+public ConfigurablePasswordEncryptor()
+
+
Creates a new instance of ConfigurablePasswordEncryptor +

+

+ + + + + + + + +
+Method Detail
+ +

+setConfig

+
+public void setConfig(DigesterConfig config)
+
+
Lets the user configure this encryptor with a DigesterConfig + object, like if he/she were using a StandardStringDigester object + directly. +

+

+
+
+
+
Parameters:
config - the DigesterConfig object to be set for configuration.
See Also:
StandardStringDigester.setConfig(DigesterConfig)
+
+
+
+ +

+setAlgorithm

+
+public void setAlgorithm(String algorithm)
+
+

+ Sets the algorithm to be used for digesting, like MD5 + or SHA-1. +

+

+ This algorithm has to be supported by your security infrastructure, and + it should be allowed as an algorithm for creating + java.security.MessageDigest instances. +

+

+ If you are specifying a security provider with setProvider(Provider) or + setProviderName(String), this algorithm should be + supported by your specified provider. +

+

+ If you are not specifying a provider, you will be able to use those + algorithms provided by the default security provider of your JVM vendor. + For valid names in the Sun JVM, see Java + Cryptography Architecture API Specification & + Reference. +

+

+

+
+
+
+
Parameters:
algorithm - the name of the algorithm to be used.
See Also:
StandardStringDigester.setAlgorithm(String)
+
+
+
+ +

+setProviderName

+
+public void setProviderName(String providerName)
+
+

+ Sets the name of the security provider to be asked for the + digest algorithm. This security provider has to be registered beforehand + at the JVM security framework. +

+

+ The provider can also be set with the setProvider(Provider) + method, in which case it will not be necessary neither registering + the provider beforehand, + nor calling this setProviderName(String) method to specify + a provider name. +

+

+ Note that a call to setProvider(Provider) overrides any value + set by this method. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
providerName - the name of the security provider to be asked + for the digest algorithm. +
Throws: +
AlreadyInitializedException - if it has already been initialized, + this is, if encryptPassword(String) or + checkPassword(String, String) have been called at least + once.
Since:
+
1.3
+
+
+
+
+ +

+setProvider

+
+public void setProvider(java.security.Provider provider)
+
+

+ Sets the security provider to be asked for the digest algorithm. + The provider does not have to be registered at the security + infrastructure beforehand, and its being used here will not result in + it being registered. +

+

+ If this method is called, calling setProviderName(String) + becomes unnecessary. +

+

+ If no provider name / provider is explicitly set, the default JVM + provider will be used. +

+

+

+
+
+
+
Parameters:
provider - the provider to be asked for the chosen algorithm +
Throws: +
AlreadyInitializedException - if it has already been initialized, + this is, if encryptPassword(String) or + checkPassword(String, String) have been called at least + once.
Since:
+
1.3
+
+
+
+
+ +

+setPlainDigest

+
+public void setPlainDigest(boolean plainDigest)
+
+
Lets the user specify if he/she wants a plain digest used as an + encryption mechanism (no salt or iterations, as with + MessageDigest), or rather use the + jasypt's usual stronger mechanism for password encryption (based + on the use of a salt and the iteration of the hash function). +

+

+
+
+
+
Parameters:
plainDigest - true for using plain digests, false for the strong + salt and iteration count based mechanism.
+
+
+
+ +

+setStringOutputType

+
+public void setStringOutputType(String stringOutputType)
+
+

+ Sets the the form in which String output + will be encoded. Available encoding types are: +

+
    +
  • base64 (default)
  • +
  • hexadecimal
  • +
+

+

+
+
+
+
Parameters:
stringOutputType - the string output type.
Since:
+
1.3
+
+
+
+
+ +

+encryptPassword

+
+public String encryptPassword(String password)
+
+
Encrypts (digests) a password. +

+

+
Specified by:
encryptPassword in interface PasswordEncryptor
+
+
+
Parameters:
password - the password to be encrypted. +
Returns:
the resulting digest.
See Also:
StandardStringDigester.digest(String)
+
+
+
+ +

+checkPassword

+
+public boolean checkPassword(String plainPassword,
+                             String encryptedPassword)
+
+
Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match. +

+

+
Specified by:
checkPassword in interface PasswordEncryptor
+
+
+
Parameters:
plainPassword - the plain password to check.
encryptedPassword - the digest against which to check the password. +
Returns:
true if passwords match, false if not.
See Also:
StandardStringDigester.matches(String, String)
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/PasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/PasswordEncryptor.html new file mode 100644 index 00000000..374ac45c --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/PasswordEncryptor.html @@ -0,0 +1,251 @@ + + + + + + + +PasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.util.password +
+Interface PasswordEncryptor

+
+
All Known Implementing Classes:
BasicPasswordEncryptor, ConfigurablePasswordEncryptor, RFC2307MD5PasswordEncryptor, RFC2307SHAPasswordEncryptor, RFC2307SMD5PasswordEncryptor, RFC2307SSHAPasswordEncryptor, StrongPasswordEncryptor
+
+
+
+
public interface PasswordEncryptor
+ + +

+

+ Common interface for all util classes aimed at password encryption. +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + +
+Method Summary
+ booleancheckPassword(String plainPassword, + String encryptedPassword) + +
+          Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match.
+ StringencryptPassword(String password) + +
+          Encrypts (digests) a password.
+  +

+ + + + + + + + +
+Method Detail
+ +

+encryptPassword

+
+String encryptPassword(String password)
+
+
Encrypts (digests) a password. +

+

+
Parameters:
password - the password to be encrypted. +
Returns:
the resulting digest.
+
+
+
+ +

+checkPassword

+
+boolean checkPassword(String plainPassword,
+                      String encryptedPassword)
+
+
Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match. +

+

+
Parameters:
plainPassword - the plain password to check.
encryptedPassword - the digest against which to check the password. +
Returns:
true if passwords match, false if not.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/StrongPasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/StrongPasswordEncryptor.html new file mode 100644 index 00000000..f0cc4a78 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/StrongPasswordEncryptor.html @@ -0,0 +1,327 @@ + + + + + + + +StrongPasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.util.password +
+Class StrongPasswordEncryptor

+
+Object
+  extended by org.jasypt.util.password.StrongPasswordEncryptor
+
+
+
All Implemented Interfaces:
PasswordEncryptor
+
+
+
+
public final class StrongPasswordEncryptor
extends Object
implements PasswordEncryptor
+ + +

+

+ Utility class for easily performing high-strength password + digesting and checking. +

+

+ This class internally holds a StandardStringDigester + configured this way: +

    +
  • Algorithm: SHA-256.
  • +
  • Salt size: 16 bytes.
  • +
  • Iterations: 100000.
  • +
+

+

+ The required steps to use it are: +

    +
  1. Create an instance (using new).
  2. +
  3. Perform the desired encryptPassword(String) or + checkPassword(String, String) + operations.
  4. +
+

+

+ This class is thread-safe +

+

+ +

+

+
Since:
+
1.2 (class existed in org.jasypt.util package since 1.1)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
StrongPasswordEncryptor() + +
+          Creates a new instance of StrongPasswordEncryptor
+  + + + + + + + + + + + + + + + +
+Method Summary
+ booleancheckPassword(String plainPassword, + String encryptedPassword) + +
+          Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match.
+ StringencryptPassword(String password) + +
+          Encrypts (digests) a password.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+StrongPasswordEncryptor

+
+public StrongPasswordEncryptor()
+
+
Creates a new instance of StrongPasswordEncryptor +

+

+ + + + + + + + +
+Method Detail
+ +

+encryptPassword

+
+public String encryptPassword(String password)
+
+
Encrypts (digests) a password. +

+

+
Specified by:
encryptPassword in interface PasswordEncryptor
+
+
+
Parameters:
password - the password to be encrypted. +
Returns:
the resulting digest.
See Also:
StandardStringDigester.digest(String)
+
+
+
+ +

+checkPassword

+
+public boolean checkPassword(String plainPassword,
+                             String encryptedPassword)
+
+
Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match. +

+

+
Specified by:
checkPassword in interface PasswordEncryptor
+
+
+
Parameters:
plainPassword - the plain password to check.
encryptedPassword - the digest against which to check the password. +
Returns:
true if passwords match, false if not.
See Also:
StandardStringDigester.matches(String, String)
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/class-use/BasicPasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/class-use/BasicPasswordEncryptor.html new file mode 100644 index 00000000..caa9085a --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/class-use/BasicPasswordEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.util.password.BasicPasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.util.password.BasicPasswordEncryptor

+
+No usage of org.jasypt.util.password.BasicPasswordEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/class-use/ConfigurablePasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/class-use/ConfigurablePasswordEncryptor.html new file mode 100644 index 00000000..be55ce36 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/class-use/ConfigurablePasswordEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.util.password.ConfigurablePasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.util.password.ConfigurablePasswordEncryptor

+
+No usage of org.jasypt.util.password.ConfigurablePasswordEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/class-use/PasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/class-use/PasswordEncryptor.html new file mode 100644 index 00000000..13c66818 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/class-use/PasswordEncryptor.html @@ -0,0 +1,266 @@ + + + + + + + +Uses of Interface org.jasypt.util.password.PasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.util.password.PasswordEncryptor

+
+ + + + + + + + + + + + + +
+Packages that use PasswordEncryptor
org.jasypt.util.password  
org.jasypt.util.password.rfc2307  
+  +

+ + + + + +
+Uses of PasswordEncryptor in org.jasypt.util.password
+  +

+ + + + + + + + + + + + + + + + + +
Classes in org.jasypt.util.password that implement PasswordEncryptor
+ classBasicPasswordEncryptor + +
+           + Utility class for easily performing password digesting and checking.
+ classConfigurablePasswordEncryptor + +
+           + Utility class for easily performing password digesting and checking.
+ classStrongPasswordEncryptor + +
+           + Utility class for easily performing high-strength password + digesting and checking.
+  +

+ + + + + +
+Uses of PasswordEncryptor in org.jasypt.util.password.rfc2307
+  +

+ + + + + + + + + + + + + + + + + + + + + +
Classes in org.jasypt.util.password.rfc2307 that implement PasswordEncryptor
+ classRFC2307MD5PasswordEncryptor + +
+           + Utility class for easily performing password digesting and checking + according to {MD5}, a password encryption scheme defined in RFC2307 + and commonly found in LDAP systems.
+ classRFC2307SHAPasswordEncryptor + +
+           + Utility class for easily performing password digesting and checking + according to {SHA}, a password encryption scheme defined in RFC2307 + and commonly found in LDAP systems.
+ classRFC2307SMD5PasswordEncryptor + +
+           + Utility class for easily performing password digesting and checking + according to {SMD5}, a password encryption scheme defined in RFC2307 + and commonly found in LDAP systems.
+ classRFC2307SSHAPasswordEncryptor + +
+           + Utility class for easily performing password digesting and checking + according to {SSHA}, a password encryption scheme defined in RFC2307 + and commonly found in LDAP systems.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/class-use/StrongPasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/class-use/StrongPasswordEncryptor.html new file mode 100644 index 00000000..43ade5e7 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/class-use/StrongPasswordEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.util.password.StrongPasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.util.password.StrongPasswordEncryptor

+
+No usage of org.jasypt.util.password.StrongPasswordEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/package-frame.html new file mode 100644 index 00000000..5f99787c --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/package-frame.html @@ -0,0 +1,48 @@ + + + + + + + +org.jasypt.util.password (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.util.password + + + + +
+Interfaces  + +
+PasswordEncryptor
+ + + + + + +
+Classes  + +
+BasicPasswordEncryptor +
+ConfigurablePasswordEncryptor +
+StrongPasswordEncryptor
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/package-summary.html new file mode 100644 index 00000000..11157cb0 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/package-summary.html @@ -0,0 +1,185 @@ + + + + + + + +org.jasypt.util.password (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.util.password +

+ + + + + + + + + +
+Interface Summary
PasswordEncryptor + Common interface for all util classes aimed at password encryption.
+  + +

+ + + + + + + + + + + + + + + + + +
+Class Summary
BasicPasswordEncryptor + Utility class for easily performing password digesting and checking.
ConfigurablePasswordEncryptor + Utility class for easily performing password digesting and checking.
StrongPasswordEncryptor + Utility class for easily performing high-strength password + digesting and checking.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/package-tree.html new file mode 100644 index 00000000..ed1fd274 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/package-tree.html @@ -0,0 +1,162 @@ + + + + + + + +org.jasypt.util.password Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.util.password +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/package-use.html new file mode 100644 index 00000000..02ccc41d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/package-use.html @@ -0,0 +1,192 @@ + + + + + + + +Uses of Package org.jasypt.util.password (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.util.password

+
+ + + + + + + + + + + + + +
+Packages that use org.jasypt.util.password
org.jasypt.util.password  
org.jasypt.util.password.rfc2307  
+  +

+ + + + + + + + +
+Classes in org.jasypt.util.password used by org.jasypt.util.password
PasswordEncryptor + +
+           + Common interface for all util classes aimed at password encryption.
+  +

+ + + + + + + + +
+Classes in org.jasypt.util.password used by org.jasypt.util.password.rfc2307
PasswordEncryptor + +
+           + Common interface for all util classes aimed at password encryption.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/RFC2307MD5PasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/RFC2307MD5PasswordEncryptor.html new file mode 100644 index 00000000..b14bdae9 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/RFC2307MD5PasswordEncryptor.html @@ -0,0 +1,353 @@ + + + + + + + +RFC2307MD5PasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.util.password.rfc2307 +
+Class RFC2307MD5PasswordEncryptor

+
+Object
+  extended by org.jasypt.util.password.rfc2307.RFC2307MD5PasswordEncryptor
+
+
+
All Implemented Interfaces:
PasswordEncryptor
+
+
+
+
public final class RFC2307MD5PasswordEncryptor
extends Object
implements PasswordEncryptor
+ + +

+

+ Utility class for easily performing password digesting and checking + according to {MD5}, a password encryption scheme defined in RFC2307 + and commonly found in LDAP systems. +

+

+ This class internally holds a StandardStringDigester + configured this way: +

    +
  • Algorithm: MD5.
  • +
  • Salt size: 0 bytes (no salt).
  • +
  • Iterations: 1 (no hash iteration).
  • +
  • Prefix: {MD5}.
  • +
+

+

+ This class is thread-safe +

+

+ +

+

+
Since:
+
1.7
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
RFC2307MD5PasswordEncryptor() + +
+          Creates a new instance of RFC2307MD5PasswordEncryptor
+  + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ booleancheckPassword(String plainPassword, + String encryptedPassword) + +
+          Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match.
+ StringencryptPassword(String password) + +
+          Encrypts (digests) a password.
+ voidsetStringOutputType(String stringOutputType) + +
+           + Sets the the form in which String output + will be encoded.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+RFC2307MD5PasswordEncryptor

+
+public RFC2307MD5PasswordEncryptor()
+
+
Creates a new instance of RFC2307MD5PasswordEncryptor +

+

+ + + + + + + + +
+Method Detail
+ +

+setStringOutputType

+
+public void setStringOutputType(String stringOutputType)
+
+

+ Sets the the form in which String output + will be encoded. Available encoding types are: +

+
    +
  • base64 (default)
  • +
  • hexadecimal
  • +
+

+

+
+
+
+
Parameters:
stringOutputType - the string output type.
+
+
+
+ +

+encryptPassword

+
+public String encryptPassword(String password)
+
+
Encrypts (digests) a password. +

+

+
Specified by:
encryptPassword in interface PasswordEncryptor
+
+
+
Parameters:
password - the password to be encrypted. +
Returns:
the resulting digest.
See Also:
StandardStringDigester.digest(String)
+
+
+
+ +

+checkPassword

+
+public boolean checkPassword(String plainPassword,
+                             String encryptedPassword)
+
+
Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match. +

+

+
Specified by:
checkPassword in interface PasswordEncryptor
+
+
+
Parameters:
plainPassword - the plain password to check.
encryptedPassword - the digest against which to check the password. +
Returns:
true if passwords match, false if not.
See Also:
StandardStringDigester.matches(String, String)
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/RFC2307SHAPasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/RFC2307SHAPasswordEncryptor.html new file mode 100644 index 00000000..553fa405 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/RFC2307SHAPasswordEncryptor.html @@ -0,0 +1,353 @@ + + + + + + + +RFC2307SHAPasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.util.password.rfc2307 +
+Class RFC2307SHAPasswordEncryptor

+
+Object
+  extended by org.jasypt.util.password.rfc2307.RFC2307SHAPasswordEncryptor
+
+
+
All Implemented Interfaces:
PasswordEncryptor
+
+
+
+
public final class RFC2307SHAPasswordEncryptor
extends Object
implements PasswordEncryptor
+ + +

+

+ Utility class for easily performing password digesting and checking + according to {SHA}, a password encryption scheme defined in RFC2307 + and commonly found in LDAP systems. +

+

+ This class internally holds a StandardStringDigester + configured this way: +

    +
  • Algorithm: SHA-1.
  • +
  • Salt size: 0 bytes (no salt).
  • +
  • Iterations: 1 (no hash iteration).
  • +
  • Prefix: {SHA}.
  • +
+

+

+ This class is thread-safe +

+

+ +

+

+
Since:
+
1.7
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
RFC2307SHAPasswordEncryptor() + +
+          Creates a new instance of RFC2307SHAPasswordEncryptor
+  + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ booleancheckPassword(String plainPassword, + String encryptedPassword) + +
+          Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match.
+ StringencryptPassword(String password) + +
+          Encrypts (digests) a password.
+ voidsetStringOutputType(String stringOutputType) + +
+           + Sets the the form in which String output + will be encoded.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+RFC2307SHAPasswordEncryptor

+
+public RFC2307SHAPasswordEncryptor()
+
+
Creates a new instance of RFC2307SHAPasswordEncryptor +

+

+ + + + + + + + +
+Method Detail
+ +

+setStringOutputType

+
+public void setStringOutputType(String stringOutputType)
+
+

+ Sets the the form in which String output + will be encoded. Available encoding types are: +

+
    +
  • base64 (default)
  • +
  • hexadecimal
  • +
+

+

+
+
+
+
Parameters:
stringOutputType - the string output type.
+
+
+
+ +

+encryptPassword

+
+public String encryptPassword(String password)
+
+
Encrypts (digests) a password. +

+

+
Specified by:
encryptPassword in interface PasswordEncryptor
+
+
+
Parameters:
password - the password to be encrypted. +
Returns:
the resulting digest.
See Also:
StandardStringDigester.digest(String)
+
+
+
+ +

+checkPassword

+
+public boolean checkPassword(String plainPassword,
+                             String encryptedPassword)
+
+
Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match. +

+

+
Specified by:
checkPassword in interface PasswordEncryptor
+
+
+
Parameters:
plainPassword - the plain password to check.
encryptedPassword - the digest against which to check the password. +
Returns:
true if passwords match, false if not.
See Also:
StandardStringDigester.matches(String, String)
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/RFC2307SMD5PasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/RFC2307SMD5PasswordEncryptor.html new file mode 100644 index 00000000..d3d23d50 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/RFC2307SMD5PasswordEncryptor.html @@ -0,0 +1,393 @@ + + + + + + + +RFC2307SMD5PasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.util.password.rfc2307 +
+Class RFC2307SMD5PasswordEncryptor

+
+Object
+  extended by org.jasypt.util.password.rfc2307.RFC2307SMD5PasswordEncryptor
+
+
+
All Implemented Interfaces:
PasswordEncryptor
+
+
+
+
public final class RFC2307SMD5PasswordEncryptor
extends Object
implements PasswordEncryptor
+ + +

+

+ Utility class for easily performing password digesting and checking + according to {SMD5}, a password encryption scheme defined in RFC2307 + and commonly found in LDAP systems. +

+

+ This class internally holds a StandardStringDigester + configured this way: +

    +
  • Algorithm: MD5.
  • +
  • Salt size: 8 bytes (configurable with setSaltSizeBytes(int)).
  • +
  • Iterations: 1 (no hash iteration).
  • +
  • Prefix: {SMD5}.
  • +
  • Invert position of salt in message before digesting: true.
  • +
  • Invert position of plain salt in encryption results: true.
  • +
  • Use lenient salt size check: true.
  • . +
+

+

+ This class is thread-safe +

+

+ +

+

+
Since:
+
1.7
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
RFC2307SMD5PasswordEncryptor() + +
+          Creates a new instance of RFC2307OpenLDAPSSHAPasswordEncryptor
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ booleancheckPassword(String plainPassword, + String encryptedPassword) + +
+           + Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match.
+ StringencryptPassword(String password) + +
+          Encrypts (digests) a password.
+ voidsetSaltSizeBytes(int saltSizeBytes) + +
+           + Sets the size (in bytes) of the salt to be used.
+ voidsetStringOutputType(String stringOutputType) + +
+           + Sets the the form in which String output + will be encoded.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+RFC2307SMD5PasswordEncryptor

+
+public RFC2307SMD5PasswordEncryptor()
+
+
Creates a new instance of RFC2307OpenLDAPSSHAPasswordEncryptor +

+

+ + + + + + + + +
+Method Detail
+ +

+setSaltSizeBytes

+
+public void setSaltSizeBytes(int saltSizeBytes)
+
+

+ Sets the size (in bytes) of the salt to be used. +

+

+ Default is 8. +

+

+

+
+
+
+
Parameters:
saltSizeBytes - the salt size in bytes
+
+
+
+ +

+setStringOutputType

+
+public void setStringOutputType(String stringOutputType)
+
+

+ Sets the the form in which String output + will be encoded. Available encoding types are: +

+
    +
  • base64 (default)
  • +
  • hexadecimal
  • +
+

+

+
+
+
+
Parameters:
stringOutputType - the string output type.
+
+
+
+ +

+encryptPassword

+
+public String encryptPassword(String password)
+
+
Encrypts (digests) a password. +

+

+
Specified by:
encryptPassword in interface PasswordEncryptor
+
+
+
Parameters:
password - the password to be encrypted. +
Returns:
the resulting digest.
See Also:
StandardStringDigester.digest(String)
+
+
+
+ +

+checkPassword

+
+public boolean checkPassword(String plainPassword,
+                             String encryptedPassword)
+
+

+ Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match. +

+

+ This password encryptor expects encrypted passwords being matched to + include the "{SMD5}" prefix, and will fail if not. +

+

+

+
Specified by:
checkPassword in interface PasswordEncryptor
+
+
+
Parameters:
plainPassword - the plain password to check.
encryptedPassword - the digest against which to check the password. +
Returns:
true if passwords match, false if not.
See Also:
StandardStringDigester.matches(String, String)
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/RFC2307SSHAPasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/RFC2307SSHAPasswordEncryptor.html new file mode 100644 index 00000000..264754ae --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/RFC2307SSHAPasswordEncryptor.html @@ -0,0 +1,393 @@ + + + + + + + +RFC2307SSHAPasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.util.password.rfc2307 +
+Class RFC2307SSHAPasswordEncryptor

+
+Object
+  extended by org.jasypt.util.password.rfc2307.RFC2307SSHAPasswordEncryptor
+
+
+
All Implemented Interfaces:
PasswordEncryptor
+
+
+
+
public final class RFC2307SSHAPasswordEncryptor
extends Object
implements PasswordEncryptor
+ + +

+

+ Utility class for easily performing password digesting and checking + according to {SSHA}, a password encryption scheme defined in RFC2307 + and commonly found in LDAP systems. +

+

+ This class internally holds a StandardStringDigester + configured this way: +

    +
  • Algorithm: SHA-1.
  • +
  • Salt size: 8 bytes (configurable with setSaltSizeBytes(int)).
  • +
  • Iterations: 1 (no hash iteration).
  • +
  • Prefix: {SSHA}.
  • +
  • Invert position of salt in message before digesting: true.
  • +
  • Invert position of plain salt in encryption results: true.
  • +
  • Use lenient salt size check: true.
  • . +
+

+

+ This class is thread-safe +

+

+ +

+

+
Since:
+
1.7
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
RFC2307SSHAPasswordEncryptor() + +
+          Creates a new instance of RFC2307OpenLDAPSSHAPasswordEncryptor
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ booleancheckPassword(String plainPassword, + String encryptedPassword) + +
+           + Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match.
+ StringencryptPassword(String password) + +
+          Encrypts (digests) a password.
+ voidsetSaltSizeBytes(int saltSizeBytes) + +
+           + Sets the size (in bytes) of the salt to be used.
+ voidsetStringOutputType(String stringOutputType) + +
+           + Sets the the form in which String output + will be encoded.
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+RFC2307SSHAPasswordEncryptor

+
+public RFC2307SSHAPasswordEncryptor()
+
+
Creates a new instance of RFC2307OpenLDAPSSHAPasswordEncryptor +

+

+ + + + + + + + +
+Method Detail
+ +

+setSaltSizeBytes

+
+public void setSaltSizeBytes(int saltSizeBytes)
+
+

+ Sets the size (in bytes) of the salt to be used. +

+

+ Default is 8. +

+

+

+
+
+
+
Parameters:
saltSizeBytes - the salt size in bytes
+
+
+
+ +

+setStringOutputType

+
+public void setStringOutputType(String stringOutputType)
+
+

+ Sets the the form in which String output + will be encoded. Available encoding types are: +

+
    +
  • base64 (default)
  • +
  • hexadecimal
  • +
+

+

+
+
+
+
Parameters:
stringOutputType - the string output type.
+
+
+
+ +

+encryptPassword

+
+public String encryptPassword(String password)
+
+
Encrypts (digests) a password. +

+

+
Specified by:
encryptPassword in interface PasswordEncryptor
+
+
+
Parameters:
password - the password to be encrypted. +
Returns:
the resulting digest.
See Also:
StandardStringDigester.digest(String)
+
+
+
+ +

+checkPassword

+
+public boolean checkPassword(String plainPassword,
+                             String encryptedPassword)
+
+

+ Checks an unencrypted (plain) password against an encrypted one + (a digest) to see if they match. +

+

+ This password encryptor expects encrypted passwords being matched to + include the "{SSHA}" prefix, and will fail if not. +

+

+

+
Specified by:
checkPassword in interface PasswordEncryptor
+
+
+
Parameters:
plainPassword - the plain password to check.
encryptedPassword - the digest against which to check the password. +
Returns:
true if passwords match, false if not.
See Also:
StandardStringDigester.matches(String, String)
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/class-use/RFC2307MD5PasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/class-use/RFC2307MD5PasswordEncryptor.html new file mode 100644 index 00000000..9b7fed4f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/class-use/RFC2307MD5PasswordEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.util.password.rfc2307.RFC2307MD5PasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.util.password.rfc2307.RFC2307MD5PasswordEncryptor

+
+No usage of org.jasypt.util.password.rfc2307.RFC2307MD5PasswordEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/class-use/RFC2307SHAPasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/class-use/RFC2307SHAPasswordEncryptor.html new file mode 100644 index 00000000..3371fdf2 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/class-use/RFC2307SHAPasswordEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.util.password.rfc2307.RFC2307SHAPasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.util.password.rfc2307.RFC2307SHAPasswordEncryptor

+
+No usage of org.jasypt.util.password.rfc2307.RFC2307SHAPasswordEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/class-use/RFC2307SMD5PasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/class-use/RFC2307SMD5PasswordEncryptor.html new file mode 100644 index 00000000..e24edf71 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/class-use/RFC2307SMD5PasswordEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.util.password.rfc2307.RFC2307SMD5PasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.util.password.rfc2307.RFC2307SMD5PasswordEncryptor

+
+No usage of org.jasypt.util.password.rfc2307.RFC2307SMD5PasswordEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/class-use/RFC2307SSHAPasswordEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/class-use/RFC2307SSHAPasswordEncryptor.html new file mode 100644 index 00000000..65f48f86 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/class-use/RFC2307SSHAPasswordEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.util.password.rfc2307.RFC2307SSHAPasswordEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.util.password.rfc2307.RFC2307SSHAPasswordEncryptor

+
+No usage of org.jasypt.util.password.rfc2307.RFC2307SSHAPasswordEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/package-frame.html new file mode 100644 index 00000000..6d437040 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/package-frame.html @@ -0,0 +1,39 @@ + + + + + + + +org.jasypt.util.password.rfc2307 (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.util.password.rfc2307 + + + + +
+Classes  + +
+RFC2307MD5PasswordEncryptor +
+RFC2307SHAPasswordEncryptor +
+RFC2307SMD5PasswordEncryptor +
+RFC2307SSHAPasswordEncryptor
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/package-summary.html new file mode 100644 index 00000000..536d8570 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/package-summary.html @@ -0,0 +1,182 @@ + + + + + + + +org.jasypt.util.password.rfc2307 (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.util.password.rfc2307 +

+ + + + + + + + + + + + + + + + + + + + + +
+Class Summary
RFC2307MD5PasswordEncryptor + Utility class for easily performing password digesting and checking + according to {MD5}, a password encryption scheme defined in RFC2307 + and commonly found in LDAP systems.
RFC2307SHAPasswordEncryptor + Utility class for easily performing password digesting and checking + according to {SHA}, a password encryption scheme defined in RFC2307 + and commonly found in LDAP systems.
RFC2307SMD5PasswordEncryptor + Utility class for easily performing password digesting and checking + according to {SMD5}, a password encryption scheme defined in RFC2307 + and commonly found in LDAP systems.
RFC2307SSHAPasswordEncryptor + Utility class for easily performing password digesting and checking + according to {SSHA}, a password encryption scheme defined in RFC2307 + and commonly found in LDAP systems.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/package-tree.html new file mode 100644 index 00000000..c017a005 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/package-tree.html @@ -0,0 +1,158 @@ + + + + + + + +org.jasypt.util.password.rfc2307 Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.util.password.rfc2307 +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/package-use.html new file mode 100644 index 00000000..6eae204a --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/password/rfc2307/package-use.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Package org.jasypt.util.password.rfc2307 (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.util.password.rfc2307

+
+No usage of org.jasypt.util.password.rfc2307 +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/BasicTextEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/BasicTextEncryptor.html new file mode 100644 index 00000000..45b5756f --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/BasicTextEncryptor.html @@ -0,0 +1,370 @@ + + + + + + + +BasicTextEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.util.text +
+Class BasicTextEncryptor

+
+Object
+  extended by org.jasypt.util.text.BasicTextEncryptor
+
+
+
All Implemented Interfaces:
TextEncryptor
+
+
+
+
public final class BasicTextEncryptor
extends Object
implements TextEncryptor
+ + +

+

+ Utility class for easily performing normal-strength encryption of texts. +

+

+ This class internally holds a StandardPBEStringEncryptor + configured this way: +

    +
  • Algorithm: PBEWithMD5AndDES.
  • +
  • Key obtention iterations: 1000.
  • +
+

+

+ The required steps to use it are: +

    +
  1. Create an instance (using new).
  2. +
  3. Set a password (using setPassword(String) or + setPasswordCharArray(char[])).
  4. +
  5. Perform the desired encrypt(String) or + decrypt(String) operations.
  6. +
+

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.2 (class existed as org.jasypt.util.TextEncryptor since 1.0)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
BasicTextEncryptor() + +
+          Creates a new instance of BasicTextEncryptor.
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Stringdecrypt(String encryptedMessage) + +
+          Decrypts a message.
+ Stringencrypt(String message) + +
+          Encrypts a message.
+ voidsetPassword(String password) + +
+          Sets a password.
+ voidsetPasswordCharArray(char[] password) + +
+          Sets a password, as a char[]
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+BasicTextEncryptor

+
+public BasicTextEncryptor()
+
+
Creates a new instance of BasicTextEncryptor. +

+

+ + + + + + + + +
+Method Detail
+ +

+setPassword

+
+public void setPassword(String password)
+
+
Sets a password. +

+

+
+
+
+
Parameters:
password - the password to be set.
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+
Sets a password, as a char[] +

+

+
+
+
+
Parameters:
password - the password to be set.
Since:
+
1.8
+
+
+
+
+ +

+encrypt

+
+public String encrypt(String message)
+
+
Encrypts a message. +

+

+
Specified by:
encrypt in interface TextEncryptor
+
+
+
Parameters:
message - the message to be encrypted.
See Also:
StandardPBEStringEncryptor.encrypt(String)
+
+
+
+ +

+decrypt

+
+public String decrypt(String encryptedMessage)
+
+
Decrypts a message. +

+

+
Specified by:
decrypt in interface TextEncryptor
+
+
+
Parameters:
encryptedMessage - the message to be decrypted.
See Also:
StandardPBEStringEncryptor.decrypt(String)
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/StrongTextEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/StrongTextEncryptor.html new file mode 100644 index 00000000..f86d3c05 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/StrongTextEncryptor.html @@ -0,0 +1,376 @@ + + + + + + + +StrongTextEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.util.text +
+Class StrongTextEncryptor

+
+Object
+  extended by org.jasypt.util.text.StrongTextEncryptor
+
+
+
All Implemented Interfaces:
TextEncryptor
+
+
+
+
public final class StrongTextEncryptor
extends Object
implements TextEncryptor
+ + +

+

+ Utility class for easily performing high-strength encryption of texts. +

+

+ This class internally holds a StandardPBEStringEncryptor + configured this way: +

    +
  • Algorithm: PBEWithMD5AndTripleDES.
  • +
  • Key obtention iterations: 1000.
  • +
+

+

+ The required steps to use it are: +

    +
  1. Create an instance (using new).
  2. +
  3. Set a password (using setPassword(String) or + setPasswordCharArray(char[])).
  4. +
  5. Perform the desired encrypt(String) or + decrypt(String) operations.
  6. +
+

+

+ To use this class, you may need to download and install the + Java + Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy + Files. +

+

+ This class is thread-safe. +

+

+ +

+

+
Since:
+
1.2 (class existed in org.jasypt.util package since 1.0)
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
StrongTextEncryptor() + +
+          Creates a new instance of StrongTextEncryptor.
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Stringdecrypt(String encryptedMessage) + +
+          Decrypts a message.
+ Stringencrypt(String message) + +
+          Encrypts a message.
+ voidsetPassword(String password) + +
+          Sets a password.
+ voidsetPasswordCharArray(char[] password) + +
+          Sets a password, as a char[].
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+StrongTextEncryptor

+
+public StrongTextEncryptor()
+
+
Creates a new instance of StrongTextEncryptor. +

+

+ + + + + + + + +
+Method Detail
+ +

+setPassword

+
+public void setPassword(String password)
+
+
Sets a password. +

+

+
+
+
+
Parameters:
password - the password to be set.
+
+
+
+ +

+setPasswordCharArray

+
+public void setPasswordCharArray(char[] password)
+
+
Sets a password, as a char[]. +

+

+
+
+
+
Parameters:
password - the password to be set.
Since:
+
1.8
+
+
+
+
+ +

+encrypt

+
+public String encrypt(String message)
+
+
Encrypts a message. +

+

+
Specified by:
encrypt in interface TextEncryptor
+
+
+
Parameters:
message - the message to be encrypted.
See Also:
StandardPBEStringEncryptor.encrypt(String)
+
+
+
+ +

+decrypt

+
+public String decrypt(String encryptedMessage)
+
+
Decrypts a message. +

+

+
Specified by:
decrypt in interface TextEncryptor
+
+
+
Parameters:
encryptedMessage - the message to be decrypted.
See Also:
StandardPBEStringEncryptor.decrypt(String)
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/TextEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/TextEncryptor.html new file mode 100644 index 00000000..6184306e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/TextEncryptor.html @@ -0,0 +1,245 @@ + + + + + + + +TextEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.util.text +
+Interface TextEncryptor

+
+
All Known Implementing Classes:
BasicTextEncryptor, StrongTextEncryptor
+
+
+
+
public interface TextEncryptor
+ + +

+

+ Common interface for all util classes aimed at text encryption +

+

+ +

+

+
Since:
+
1.2
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + +
+Method Summary
+ Stringdecrypt(String encryptedMessage) + +
+          Decrypts a message.
+ Stringencrypt(String message) + +
+          Encrypts a message.
+  +

+ + + + + + + + +
+Method Detail
+ +

+encrypt

+
+String encrypt(String message)
+
+
Encrypts a message. +

+

+
Parameters:
message - the message to be encrypted.
+
+
+
+ +

+decrypt

+
+String decrypt(String encryptedMessage)
+
+
Decrypts a message. +

+

+
Parameters:
encryptedMessage - the message to be decrypted.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/class-use/BasicTextEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/class-use/BasicTextEncryptor.html new file mode 100644 index 00000000..8d97e4f4 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/class-use/BasicTextEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.util.text.BasicTextEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.util.text.BasicTextEncryptor

+
+No usage of org.jasypt.util.text.BasicTextEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/class-use/StrongTextEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/class-use/StrongTextEncryptor.html new file mode 100644 index 00000000..a11b6c06 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/class-use/StrongTextEncryptor.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.util.text.StrongTextEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.util.text.StrongTextEncryptor

+
+No usage of org.jasypt.util.text.StrongTextEncryptor +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/class-use/TextEncryptor.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/class-use/TextEncryptor.html new file mode 100644 index 00000000..ca156dfb --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/class-use/TextEncryptor.html @@ -0,0 +1,256 @@ + + + + + + + +Uses of Interface org.jasypt.util.text.TextEncryptor (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.util.text.TextEncryptor

+
+ + + + + + + + + + + + + +
+Packages that use TextEncryptor
org.jasypt.properties  
org.jasypt.util.text  
+  +

+ + + + + +
+Uses of TextEncryptor in org.jasypt.properties
+  +

+ + + + + + + + + + + + + +
Methods in org.jasypt.properties with parameters of type TextEncryptor
+static StringPropertyValueEncryptionUtils.decrypt(String encodedValue, + TextEncryptor encryptor) + +
+           
+static StringPropertyValueEncryptionUtils.encrypt(String decodedValue, + TextEncryptor encryptor) + +
+           
+  +

+ + + + + + + + + + + +
Constructors in org.jasypt.properties with parameters of type TextEncryptor
EncryptableProperties(java.util.Properties defaults, + TextEncryptor textEncryptor) + +
+           + Creates an EncryptableProperties instance which will use + the passed TextEncryptor object to decrypt encrypted values, + and the passed defaults as default values (may contain encrypted values).
EncryptableProperties(TextEncryptor textEncryptor) + +
+           + Creates an EncryptableProperties instance which will use + the passed TextEncryptor object to decrypt encrypted values.
+  +

+ + + + + +
+Uses of TextEncryptor in org.jasypt.util.text
+  +

+ + + + + + + + + + + + + +
Classes in org.jasypt.util.text that implement TextEncryptor
+ classBasicTextEncryptor + +
+           + Utility class for easily performing normal-strength encryption of texts.
+ classStrongTextEncryptor + +
+           + Utility class for easily performing high-strength encryption of texts.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/package-frame.html new file mode 100644 index 00000000..a873e55e --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/package-frame.html @@ -0,0 +1,46 @@ + + + + + + + +org.jasypt.util.text (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.util.text + + + + +
+Interfaces  + +
+TextEncryptor
+ + + + + + +
+Classes  + +
+BasicTextEncryptor +
+StrongTextEncryptor
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/package-summary.html new file mode 100644 index 00000000..6248d0cc --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/package-summary.html @@ -0,0 +1,179 @@ + + + + + + + +org.jasypt.util.text (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.util.text +

+ + + + + + + + + +
+Interface Summary
TextEncryptor + Common interface for all util classes aimed at text encryption
+  + +

+ + + + + + + + + + + + + +
+Class Summary
BasicTextEncryptor + Utility class for easily performing normal-strength encryption of texts.
StrongTextEncryptor + Utility class for easily performing high-strength encryption of texts.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/package-tree.html new file mode 100644 index 00000000..605265be --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/package-tree.html @@ -0,0 +1,161 @@ + + + + + + + +org.jasypt.util.text Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.util.text +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/package-use.html new file mode 100644 index 00000000..60682e65 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/util/text/package-use.html @@ -0,0 +1,192 @@ + + + + + + + +Uses of Package org.jasypt.util.text (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.util.text

+
+ + + + + + + + + + + + + +
+Packages that use org.jasypt.util.text
org.jasypt.properties  
org.jasypt.util.text  
+  +

+ + + + + + + + +
+Classes in org.jasypt.util.text used by org.jasypt.properties
TextEncryptor + +
+           + Common interface for all util classes aimed at text encryption
+  +

+ + + + + + + + +
+Classes in org.jasypt.util.text used by org.jasypt.util.text
TextEncryptor + +
+           + Common interface for all util classes aimed at text encryption
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/WebPBEConfigFilter.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/WebPBEConfigFilter.html new file mode 100644 index 00000000..3fdc6643 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/WebPBEConfigFilter.html @@ -0,0 +1,344 @@ + + + + + + + +WebPBEConfigFilter (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.web.pbeconfig +
+Class WebPBEConfigFilter

+
+Object
+  extended by org.jasypt.web.pbeconfig.WebPBEConfigFilter
+
+
+
All Implemented Interfaces:
javax.servlet.Filter
+
+
+
+
public final class WebPBEConfigFilter
extends Object
implements javax.servlet.Filter
+ + +

+

+ This filter is intended to avoid access to the web application until + an admin has set the encryption passwords. It will query the web PBE config + system to know whether passwords have been set and, if not, it will show the + user a plain Access Forbidden page. +

+

+ An example web.xml fragment (being applied on a Struts servlet): +

+
+    <filter>
+        <filter-name>webPBEConfigFilter</filter-name>
+        <filter-class>org.jasypt.web.pbeconfig.WebPBEConfigFilter</filter-class>
+    </filter>
+
+    <filter-mapping>
+        <filter-name>webPBEConfigFilter</filter-name>
+        <servlet-name>strutsActionServlet</servlet-name>
+    </filter-mapping>    
+ 
+

+ +

+

+
Since:
+
1.3
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
WebPBEConfigFilter() + +
+           
+  + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voiddestroy() + +
+           
+ voiddoFilter(javax.servlet.ServletRequest request, + javax.servlet.ServletResponse response, + javax.servlet.FilterChain chain) + +
+           
+ voidinit(javax.servlet.FilterConfig filterConfig) + +
+           
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+WebPBEConfigFilter

+
+public WebPBEConfigFilter()
+
+
+ + + + + + + + +
+Method Detail
+ +

+doFilter

+
+public void doFilter(javax.servlet.ServletRequest request,
+                     javax.servlet.ServletResponse response,
+                     javax.servlet.FilterChain chain)
+              throws java.io.IOException,
+                     javax.servlet.ServletException
+
+
+
Specified by:
doFilter in interface javax.servlet.Filter
+
+
+ +
Throws: +
java.io.IOException +
javax.servlet.ServletException
+
+
+
+ +

+init

+
+public void init(javax.servlet.FilterConfig filterConfig)
+          throws javax.servlet.ServletException
+
+
+
Specified by:
init in interface javax.servlet.Filter
+
+
+ +
Throws: +
javax.servlet.ServletException
+
+
+
+ +

+destroy

+
+public void destroy()
+
+
+
Specified by:
destroy in interface javax.servlet.Filter
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/WebPBEConfigRegistry.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/WebPBEConfigRegistry.html new file mode 100644 index 00000000..4c8cb4d5 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/WebPBEConfigRegistry.html @@ -0,0 +1,310 @@ + + + + + + + +WebPBEConfigRegistry (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.web.pbeconfig +
+Class WebPBEConfigRegistry

+
+Object
+  extended by org.jasypt.web.pbeconfig.WebPBEConfigRegistry
+
+
+
+
public final class WebPBEConfigRegistry
extends Object
+ + +

+

+ Registry for WebPBEConfig objects. This class is intended + for internal use only, and should not be accessed from the user's + code. +

+

+ +

+

+
Since:
+
1.3
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.util.ListgetConfigs() + +
+           
+static WebPBEConfigRegistrygetInstance() + +
+           
+ booleanisWebConfigurationDone() + +
+           
+ voidregisterConfig(WebPBEConfig config) + +
+           
+ voidsetWebConfigurationDone(boolean configurationDone) + +
+           
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Method Detail
+ +

+getInstance

+
+public static WebPBEConfigRegistry getInstance()
+
+
+
+
+
+
+ +

+registerConfig

+
+public void registerConfig(WebPBEConfig config)
+
+
+
+
+
+
+ +

+getConfigs

+
+public java.util.List getConfigs()
+
+
+
+
+
+
+ +

+isWebConfigurationDone

+
+public boolean isWebConfigurationDone()
+
+
+
+
+
+
+ +

+setWebConfigurationDone

+
+public void setWebConfigurationDone(boolean configurationDone)
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/WebPBEConfigServlet.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/WebPBEConfigServlet.html new file mode 100644 index 00000000..90596371 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/WebPBEConfigServlet.html @@ -0,0 +1,367 @@ + + + + + + + +WebPBEConfigServlet (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.web.pbeconfig +
+Class WebPBEConfigServlet

+
+Object
+  extended by javax.servlet.GenericServlet
+      extended by javax.servlet.http.HttpServlet
+          extended by org.jasypt.web.pbeconfig.WebPBEConfigServlet
+
+
+
All Implemented Interfaces:
java.io.Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig
+
+
+
+
public final class WebPBEConfigServlet
extends javax.servlet.http.HttpServlet
+ + +

+

+ Servlet for web PBE config processing. +

+

+ This servlet's URL should be called by the webapp administrator at deploy + time, for setting the passwords of all the PBE encryptors which have + been previously assigned a WebPBEConfig configuration object. +

+

+ If web PBE configuration has not been done yet, it will show the user a + form containing two inputs for each encryptor: the validation word + and the password (retyped). +

+
    +
  • The validation word must be input to the value set on the + WebPBEConfig object with its setValidationWord(...) + method. This will ensure that only an authorized person will set + the encryption passwords.
  • . +
  • The password (retyped) must be input to the value which is + desired to be the encryption password for each specific encryptor.
  • +
+

+ An example web.xml fragment: +

+
+  <servlet>
+    <servlet-name>webPBEConfigServlet</servlet-name>
+    <servlet-class>
+      org.jasypt.web.pbeconfig.WebPBEConfigServlet
+    </servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+  <servlet-mapping>
+    <servlet-name>webPBEConfigServlet</servlet-name>
+    <url-pattern>/webPBEConfig.do</url-pattern>
+  </servlet-mapping>
+ 
+

+ If this servlet's context is set a logger, it will output messages for + both successful and failed attempts to set passwords, including + date, time and originating IP address. +

+

+ +

+

+
Since:
+
1.3
+
Author:
+
Daniel Fernández
+
See Also:
Serialized Form
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
WebPBEConfigServlet() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+protected  voiddoGet(javax.servlet.http.HttpServletRequest req, + javax.servlet.http.HttpServletResponse resp) + +
+           
+protected  voiddoPost(javax.servlet.http.HttpServletRequest req, + javax.servlet.http.HttpServletResponse resp) + +
+           
+ + + + + + + +
Methods inherited from class javax.servlet.http.HttpServlet
doDelete, doHead, doOptions, doPut, doTrace, getLastModified, service, service
+ + + + + + + +
Methods inherited from class javax.servlet.GenericServlet
destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, init, log, log
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+WebPBEConfigServlet

+
+public WebPBEConfigServlet()
+
+
+ + + + + + + + +
+Method Detail
+ +

+doGet

+
+protected void doGet(javax.servlet.http.HttpServletRequest req,
+                     javax.servlet.http.HttpServletResponse resp)
+              throws javax.servlet.ServletException,
+                     java.io.IOException
+
+
+
Overrides:
doGet in class javax.servlet.http.HttpServlet
+
+
+ +
Throws: +
javax.servlet.ServletException +
java.io.IOException
+
+
+
+ +

+doPost

+
+protected void doPost(javax.servlet.http.HttpServletRequest req,
+                      javax.servlet.http.HttpServletResponse resp)
+               throws javax.servlet.ServletException,
+                      java.io.IOException
+
+
+
Overrides:
doPost in class javax.servlet.http.HttpServlet
+
+
+ +
Throws: +
javax.servlet.ServletException +
java.io.IOException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/WebPBEInitializationContextListener.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/WebPBEInitializationContextListener.html new file mode 100644 index 00000000..6962e113 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/WebPBEInitializationContextListener.html @@ -0,0 +1,355 @@ + + + + + + + +WebPBEInitializationContextListener (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.web.pbeconfig +
+Class WebPBEInitializationContextListener

+
+Object
+  extended by org.jasypt.web.pbeconfig.WebPBEInitializationContextListener
+
+
+
All Implemented Interfaces:
java.util.EventListener, javax.servlet.ServletContextListener
+
+
+
+
public final class WebPBEInitializationContextListener
extends Object
implements javax.servlet.ServletContextListener
+ + +

+

+ ContextListener which takes a WebPBEInitializer implementation + class name as a parameter (<context-param>) and calls its + initializeWebPBEConfigs() method to allow the webapp to + create its PBE encryptors and declare their associated WebPBEConfig + objects. +

+

+ An example web.xml fragment: +

+
+    <context-param>
+      <param-name>webPBEInitializerClassName</param-name>
+      <param-value>myapp.MyWebPBEInitializer</param-value>
+    </context-param>
+
+    <listener>
+      <listener-class>
+        org.jasypt.web.pbeconfig.WebPBEInitializationContextListener
+      </listener-class>
+    </listener>
+ 
+

+ Important: If the web application uses Spring Framework, WebPBEConfig + objects are declared as beans in the Spring context and this Spring context + is initialized at application deploy time + (with Spring's ContextLoaderListener), the use + of this context listener will become unnecessary. +

+

+ +

+

+
Since:
+
1.3
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+static StringINIT_PARAM_INITIALIZER_CLASS_NAME + +
+           
+  + + + + + + + + + + +
+Constructor Summary
WebPBEInitializationContextListener() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+ voidcontextDestroyed(javax.servlet.ServletContextEvent sce) + +
+           
+ voidcontextInitialized(javax.servlet.ServletContextEvent sce) + +
+           
+ + + + + + + +
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+INIT_PARAM_INITIALIZER_CLASS_NAME

+
+public static final String INIT_PARAM_INITIALIZER_CLASS_NAME
+
+
+
See Also:
Constant Field Values
+
+ + + + + + + + +
+Constructor Detail
+ +

+WebPBEInitializationContextListener

+
+public WebPBEInitializationContextListener()
+
+
+ + + + + + + + +
+Method Detail
+ +

+contextDestroyed

+
+public void contextDestroyed(javax.servlet.ServletContextEvent sce)
+
+
+
Specified by:
contextDestroyed in interface javax.servlet.ServletContextListener
+
+
+
+
+
+
+ +

+contextInitialized

+
+public void contextInitialized(javax.servlet.ServletContextEvent sce)
+
+
+
Specified by:
contextInitialized in interface javax.servlet.ServletContextListener
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/WebPBEInitializer.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/WebPBEInitializer.html new file mode 100644 index 00000000..60fd58ba --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/WebPBEInitializer.html @@ -0,0 +1,272 @@ + + + + + + + +WebPBEInitializer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.jasypt.web.pbeconfig +
+Interface WebPBEInitializer

+
+
+
public interface WebPBEInitializer
+ + +

+

+ Interface which must be implemented by the user-defined classes which + create and initialize webapp PBE encryptors for being configured through + the web pbe configuration servlet. +

+

+ This interface only has one method, initializeWebPBEConfigs(), + which the implementation class should use for creating encryptors and + setting WebPBEConfig objects to them, like: +

+
+  package myapp;
+  ... 
+  public class MyWebPBEInitializer implements WebPBEInitializer {
+  
+      public void initializeWebPBEConfigs() {
+      
+          StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
+          encryptor.setAlgorithm("PBEWithMD5AndDES");
+          
+          WebPBEConfig webConfig = new WebPBEConfig();
+          webConfig.setValidationWord("jasypt");
+          webConfig.setName("Main Password");
+
+          encryptor.setConfig(webConfig);
+          
+          // Get some user-defined singleton or similar, and register
+          // the encryptor with it so that it can be accessed from the
+          // rest of the application.
+          
+      }
+      
+  }
+ 
+

+ All WebPBEConfig objects get internally registered at + instantiation time, and once assigned to an encryptor they will appear + in the web form for password setting. +

+

+ Important: If the web application uses Spring Framework, WebPBEConfig + objects are declared as beans in the Spring context and this Spring context + is initialized at application deploy time + (with Spring's ContextLoaderListener), it will NOT be necessary + to create + any classes implementing this WebPBEInitializer interface. + The use WebPBEInitializationContextListener will also become + unnecessary. +

+

+ +

+

+
Since:
+
1.3
+
Author:
+
Daniel Fernández
+
+
+ +

+ + + + + + + + + + + + +
+Method Summary
+ voidinitializeWebPBEConfigs() + +
+           + Method called by WebPBEInitializationContextListener at + application deploy time for initialization of jasypt encryptors.
+  +

+ + + + + + + + +
+Method Detail
+ +

+initializeWebPBEConfigs

+
+void initializeWebPBEConfigs()
+
+

+ Method called by WebPBEInitializationContextListener at + application deploy time for initialization of jasypt encryptors. +

+

+

+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/class-use/WebPBEConfigFilter.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/class-use/WebPBEConfigFilter.html new file mode 100644 index 00000000..d134c5c2 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/class-use/WebPBEConfigFilter.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.web.pbeconfig.WebPBEConfigFilter (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.web.pbeconfig.WebPBEConfigFilter

+
+No usage of org.jasypt.web.pbeconfig.WebPBEConfigFilter +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/class-use/WebPBEConfigRegistry.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/class-use/WebPBEConfigRegistry.html new file mode 100644 index 00000000..77a28594 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/class-use/WebPBEConfigRegistry.html @@ -0,0 +1,181 @@ + + + + + + + +Uses of Class org.jasypt.web.pbeconfig.WebPBEConfigRegistry (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.web.pbeconfig.WebPBEConfigRegistry

+
+ + + + + + + + + +
+Packages that use WebPBEConfigRegistry
org.jasypt.web.pbeconfig  
+  +

+ + + + + +
+Uses of WebPBEConfigRegistry in org.jasypt.web.pbeconfig
+  +

+ + + + + + + + + +
Methods in org.jasypt.web.pbeconfig that return WebPBEConfigRegistry
+static WebPBEConfigRegistryWebPBEConfigRegistry.getInstance() + +
+           
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/class-use/WebPBEConfigServlet.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/class-use/WebPBEConfigServlet.html new file mode 100644 index 00000000..6b100093 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/class-use/WebPBEConfigServlet.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.web.pbeconfig.WebPBEConfigServlet (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.web.pbeconfig.WebPBEConfigServlet

+
+No usage of org.jasypt.web.pbeconfig.WebPBEConfigServlet +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/class-use/WebPBEInitializationContextListener.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/class-use/WebPBEInitializationContextListener.html new file mode 100644 index 00000000..d6db22c4 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/class-use/WebPBEInitializationContextListener.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Class org.jasypt.web.pbeconfig.WebPBEInitializationContextListener (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.jasypt.web.pbeconfig.WebPBEInitializationContextListener

+
+No usage of org.jasypt.web.pbeconfig.WebPBEInitializationContextListener +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/class-use/WebPBEInitializer.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/class-use/WebPBEInitializer.html new file mode 100644 index 00000000..c9014bc1 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/class-use/WebPBEInitializer.html @@ -0,0 +1,145 @@ + + + + + + + +Uses of Interface org.jasypt.web.pbeconfig.WebPBEInitializer (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.jasypt.web.pbeconfig.WebPBEInitializer

+
+No usage of org.jasypt.web.pbeconfig.WebPBEInitializer +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/package-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/package-frame.html new file mode 100644 index 00000000..59a6bb96 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/package-frame.html @@ -0,0 +1,50 @@ + + + + + + + +org.jasypt.web.pbeconfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + +org.jasypt.web.pbeconfig + + + + +
+Interfaces  + +
+WebPBEInitializer
+ + + + + + +
+Classes  + +
+WebPBEConfigFilter +
+WebPBEConfigRegistry +
+WebPBEConfigServlet +
+WebPBEInitializationContextListener
+ + + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/package-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/package-summary.html new file mode 100644 index 00000000..1afdad82 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/package-summary.html @@ -0,0 +1,196 @@ + + + + + + + +org.jasypt.web.pbeconfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.jasypt.web.pbeconfig +

+ + + + + + + + + +
+Interface Summary
WebPBEInitializer + Interface which must be implemented by the user-defined classes which + create and initialize webapp PBE encryptors for being configured through + the web pbe configuration servlet.
+  + +

+ + + + + + + + + + + + + + + + + + + + + +
+Class Summary
WebPBEConfigFilter + This filter is intended to avoid access to the web application until + an admin has set the encryption passwords.
WebPBEConfigRegistry + Registry for WebPBEConfig objects.
WebPBEConfigServlet + Servlet for web PBE config processing.
WebPBEInitializationContextListener + ContextListener which takes a WebPBEInitializer implementation + class name as a parameter (<context-param>) and calls its + initializeWebPBEConfigs() method to allow the webapp to + create its PBE encryptors and declare their associated WebPBEConfig + objects.
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/package-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/package-tree.html new file mode 100644 index 00000000..c394fafa --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/package-tree.html @@ -0,0 +1,167 @@ + + + + + + + +org.jasypt.web.pbeconfig Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.jasypt.web.pbeconfig +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+
    +
  • Object
      +
    • javax.servlet.GenericServlet (implements java.io.Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig) +
        +
      • javax.servlet.http.HttpServlet (implements java.io.Serializable) + +
      +
    • org.jasypt.web.pbeconfig.WebPBEConfigFilter (implements javax.servlet.Filter) +
    • org.jasypt.web.pbeconfig.WebPBEConfigRegistry
    • org.jasypt.web.pbeconfig.WebPBEInitializationContextListener (implements javax.servlet.ServletContextListener) +
    +
+

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/package-use.html b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/package-use.html new file mode 100644 index 00000000..a117eace --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/org/jasypt/web/pbeconfig/package-use.html @@ -0,0 +1,172 @@ + + + + + + + +Uses of Package org.jasypt.web.pbeconfig (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.jasypt.web.pbeconfig

+
+ + + + + + + + + +
+Packages that use org.jasypt.web.pbeconfig
org.jasypt.web.pbeconfig  
+  +

+ + + + + + + + +
+Classes in org.jasypt.web.pbeconfig used by org.jasypt.web.pbeconfig
WebPBEConfigRegistry + +
+           + Registry for WebPBEConfig objects.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/overview-frame.html b/utils/jasypt-1.9.2/apidocs/jasypt/overview-frame.html new file mode 100644 index 00000000..e407d2cf --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/overview-frame.html @@ -0,0 +1,81 @@ + + + + + + + +Overview List (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + + + + +
+
+ + + + + +
All Classes +

+ +Packages +
+org.jasypt.commons +
+org.jasypt.digest +
+org.jasypt.digest.config +
+org.jasypt.encryption +
+org.jasypt.encryption.pbe +
+org.jasypt.encryption.pbe.config +
+org.jasypt.exceptions +
+org.jasypt.intf.cli +
+org.jasypt.intf.service +
+org.jasypt.normalization +
+org.jasypt.properties +
+org.jasypt.registry +
+org.jasypt.salt +
+org.jasypt.util.binary +
+org.jasypt.util.digest +
+org.jasypt.util.numeric +
+org.jasypt.util.password +
+org.jasypt.util.password.rfc2307 +
+org.jasypt.util.text +
+org.jasypt.web.pbeconfig +
+

+ +

+  + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/overview-summary.html b/utils/jasypt-1.9.2/apidocs/jasypt/overview-summary.html new file mode 100644 index 00000000..896ecae4 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/overview-summary.html @@ -0,0 +1,233 @@ + + + + + + + +Overview (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+JASYPT: Java Simplified Encryption 1.9.2 API +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Packages
org.jasypt.commons 
org.jasypt.digest 
org.jasypt.digest.config 
org.jasypt.encryption 
org.jasypt.encryption.pbe 
org.jasypt.encryption.pbe.config 
org.jasypt.exceptions 
org.jasypt.intf.cli 
org.jasypt.intf.service 
org.jasypt.normalization 
org.jasypt.properties 
org.jasypt.registry 
org.jasypt.salt 
org.jasypt.util.binary 
org.jasypt.util.digest 
org.jasypt.util.numeric 
org.jasypt.util.password 
org.jasypt.util.password.rfc2307 
org.jasypt.util.text 
org.jasypt.web.pbeconfig 
+ +


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/overview-tree.html b/utils/jasypt-1.9.2/apidocs/jasypt/overview-tree.html new file mode 100644 index 00000000..12763c4d --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/overview-tree.html @@ -0,0 +1,292 @@ + + + + + + + +Class Hierarchy (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For All Packages

+
+
+
Package Hierarchies:
org.jasypt.commons, org.jasypt.digest, org.jasypt.digest.config, org.jasypt.encryption, org.jasypt.encryption.pbe, org.jasypt.encryption.pbe.config, org.jasypt.exceptions, org.jasypt.intf.cli, org.jasypt.intf.service, org.jasypt.normalization, org.jasypt.properties, org.jasypt.registry, org.jasypt.salt, org.jasypt.util.binary, org.jasypt.util.digest, org.jasypt.util.numeric, org.jasypt.util.password, org.jasypt.util.password.rfc2307, org.jasypt.util.text, org.jasypt.web.pbeconfig
+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/package-list b/utils/jasypt-1.9.2/apidocs/jasypt/package-list new file mode 100644 index 00000000..160e9985 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/package-list @@ -0,0 +1,20 @@ +org.jasypt.commons +org.jasypt.digest +org.jasypt.digest.config +org.jasypt.encryption +org.jasypt.encryption.pbe +org.jasypt.encryption.pbe.config +org.jasypt.exceptions +org.jasypt.intf.cli +org.jasypt.intf.service +org.jasypt.normalization +org.jasypt.properties +org.jasypt.registry +org.jasypt.salt +org.jasypt.util.binary +org.jasypt.util.digest +org.jasypt.util.numeric +org.jasypt.util.password +org.jasypt.util.password.rfc2307 +org.jasypt.util.text +org.jasypt.web.pbeconfig diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/resources/inherit.gif b/utils/jasypt-1.9.2/apidocs/jasypt/resources/inherit.gif new file mode 100644 index 0000000000000000000000000000000000000000..c814867a13deb0ca7ea2156c6ca1d5a03372af7e GIT binary patch literal 57 zcmZ?wbhEHbIIT!9-C*e{wE9>Kx3D)-;0v)C; KYxQGgum%9JOA&7X literal 0 HcmV?d00001 diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/serialized-form.html b/utils/jasypt-1.9.2/apidocs/jasypt/serialized-form.html new file mode 100644 index 00000000..b15006df --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/serialized-form.html @@ -0,0 +1,305 @@ + + + + + + + +Serialized Form (JASYPT: Java Simplified Encryption 1.9.2 API) + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Serialized Form

+
+
+ + + + + +
+Package org.jasypt.exceptions
+ +

+ + + + + +
+Class org.jasypt.exceptions.AlreadyInitializedException extends RuntimeException implements Serializable
+ +

+serialVersionUID: 4592515503937873874L + +

+ +

+ + + + + +
+Class org.jasypt.exceptions.EncryptionInitializationException extends RuntimeException implements Serializable
+ +

+serialVersionUID: 8929638240023639778L + +

+ +

+ + + + + +
+Class org.jasypt.exceptions.EncryptionOperationNotPossibleException extends RuntimeException implements Serializable
+ +

+serialVersionUID: 6304674109588715145L + +

+ +

+ + + + + +
+Class org.jasypt.exceptions.PasswordAlreadyCleanedException extends RuntimeException implements Serializable
+ +

+serialVersionUID: 7988484935273871733L + +

+


+ + + + + +
+Package org.jasypt.properties
+ +

+ + + + + +
+Class org.jasypt.properties.EncryptableProperties extends java.util.Properties implements Serializable
+ +

+serialVersionUID: 6479795856725500639L + +

+ + + + + +
+Serialization Methods
+ +

+

+readObject

+
+private void readObject(java.io.ObjectInputStream in)
+                 throws java.io.IOException,
+                        ClassNotFoundException
+
+
+ +
Throws: +
java.io.IOException +
ClassNotFoundException
+
+
+
+

+writeObject

+
+private void writeObject(java.io.ObjectOutputStream outputStream)
+                  throws java.io.IOException
+
+
+ +
Throws: +
java.io.IOException
+
+
+ + + + + +
+Serialized Fields
+ +

+ident

+
+Integer ident
+
+
+
+
+
+ + + + + +
+Package org.jasypt.web.pbeconfig
+ +

+ + + + + +
+Class org.jasypt.web.pbeconfig.WebPBEConfigServlet extends javax.servlet.http.HttpServlet implements Serializable
+ +

+serialVersionUID: -7201635392816652667L + +

+ +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2014 The JASYPT team. All Rights Reserved. + + diff --git a/utils/jasypt-1.9.2/apidocs/jasypt/stylesheet.css b/utils/jasypt-1.9.2/apidocs/jasypt/stylesheet.css new file mode 100644 index 00000000..6ea9e516 --- /dev/null +++ b/utils/jasypt-1.9.2/apidocs/jasypt/stylesheet.css @@ -0,0 +1,29 @@ +/* Javadoc style sheet */ + +/* Define colors, fonts and other style attributes here to override the defaults */ + +/* Page background color */ +body { background-color: #FFFFFF; color:#000000 } + +/* Headings */ +h1 { font-size: 145% } + +/* Table colors */ +.TableHeadingColor { background: #CCCCFF; color:#000000 } /* Dark mauve */ +.TableSubHeadingColor { background: #EEEEFF; color:#000000 } /* Light mauve */ +.TableRowColor { background: #FFFFFF; color:#000000 } /* White */ + +/* Font used in left-hand frame lists */ +.FrameTitleFont { font-size: 100%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameHeadingFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } +.FrameItemFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } + +/* Navigation bar fonts and colors */ +.NavBarCell1 { background-color:#EEEEFF; color:#000000} /* Light mauve */ +.NavBarCell1Rev { background-color:#00008B; color:#FFFFFF} /* Dark Blue */ +.NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;color:#000000;} +.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;color:#FFFFFF;} + +.NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} +.NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} + diff --git a/utils/jasypt-1.9.2/bin/decrypt.bat b/utils/jasypt-1.9.2/bin/decrypt.bat new file mode 100644 index 00000000..4d9c8403 --- /dev/null +++ b/utils/jasypt-1.9.2/bin/decrypt.bat @@ -0,0 +1,19 @@ +@ECHO OFF + +set SCRIPT_NAME=decrypt.bat +set EXECUTABLE_CLASS=org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI +set EXEC_CLASSPATH=. +if "%JASYPT_CLASSPATH%" == "" goto computeclasspath +set EXEC_CLASSPATH=%EXEC_CLASSPATH%;%JASYPT_CLASSPATH% + +:computeclasspath +IF "%OS%" == "Windows_NT" setlocal ENABLEDELAYEDEXPANSION +FOR %%c in (%~dp0..\lib\*.jar) DO set EXEC_CLASSPATH=!EXEC_CLASSPATH!;%%c +IF "%OS%" == "Windows_NT" setlocal DISABLEDELAYEDEXPANSION + +set JAVA_EXECUTABLE=java +if "%JAVA_HOME%" == "" goto execute +set JAVA_EXECUTABLE="%JAVA_HOME%\bin\java" + +:execute +%JAVA_EXECUTABLE% -classpath %EXEC_CLASSPATH% %EXECUTABLE_CLASS% %SCRIPT_NAME% %* diff --git a/utils/jasypt-1.9.2/bin/decrypt.sh b/utils/jasypt-1.9.2/bin/decrypt.sh new file mode 100644 index 00000000..3aa44c9c --- /dev/null +++ b/utils/jasypt-1.9.2/bin/decrypt.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +SCRIPT_NAME=decrypt.sh +EXECUTABLE_CLASS=org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI +BIN_DIR=`dirname $0` +DIST_DIR=$BIN_DIR/.. +LIB_DIR=$DIST_DIR/lib +EXEC_CLASSPATH="." + +if [ -n "$JASYPT_CLASSPATH" ] +then + EXEC_CLASSPATH=$EXEC_CLASSPATH:$JASYPT_CLASSPATH +fi + +for a in `find $LIB_DIR -name '*.jar'` +do + EXEC_CLASSPATH=$EXEC_CLASSPATH:$a +done + +JAVA_EXECUTABLE=java +if [ -n "$JAVA_HOME" ] +then + JAVA_EXECUTABLE=$JAVA_HOME/bin/java +fi + +if [ "$OSTYPE" = "cygwin" ] +then + EXEC_CLASSPATH=`echo $EXEC_CLASSPATH | sed 's/:/;/g' | sed 's/\/cygdrive\/\([a-z]\)/\1:/g'` + JAVA_EXECUTABLE=`cygpath --unix "$JAVA_EXECUTABLE"` +fi + +"$JAVA_EXECUTABLE" -classpath $EXEC_CLASSPATH $EXECUTABLE_CLASS $SCRIPT_NAME "$@" diff --git a/utils/jasypt-1.9.2/bin/digest.bat b/utils/jasypt-1.9.2/bin/digest.bat new file mode 100644 index 00000000..ee62ca66 --- /dev/null +++ b/utils/jasypt-1.9.2/bin/digest.bat @@ -0,0 +1,19 @@ +@ECHO OFF + +set SCRIPT_NAME=digest.bat +set EXECUTABLE_CLASS=org.jasypt.intf.cli.JasyptStringDigestCLI +set EXEC_CLASSPATH=. +if "%JASYPT_CLASSPATH%" == "" goto computeclasspath +set EXEC_CLASSPATH=%EXEC_CLASSPATH%;%JASYPT_CLASSPATH% + +:computeclasspath +IF "%OS%" == "Windows_NT" setlocal ENABLEDELAYEDEXPANSION +FOR %%c in (%~dp0..\lib\*.jar) DO set EXEC_CLASSPATH=!EXEC_CLASSPATH!;%%c +IF "%OS%" == "Windows_NT" setlocal DISABLEDELAYEDEXPANSION + +set JAVA_EXECUTABLE=java +if "%JAVA_HOME%" == "" goto execute +set JAVA_EXECUTABLE="%JAVA_HOME%\bin\java" + +:execute +%JAVA_EXECUTABLE% -classpath %EXEC_CLASSPATH% %EXECUTABLE_CLASS% %SCRIPT_NAME% %* diff --git a/utils/jasypt-1.9.2/bin/digest.sh b/utils/jasypt-1.9.2/bin/digest.sh new file mode 100644 index 00000000..97495c1e --- /dev/null +++ b/utils/jasypt-1.9.2/bin/digest.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +SCRIPT_NAME=digest.sh +EXECUTABLE_CLASS=org.jasypt.intf.cli.JasyptStringDigestCLI +BIN_DIR=`dirname $0` +DIST_DIR=$BIN_DIR/.. +LIB_DIR=$DIST_DIR/lib +EXEC_CLASSPATH="." + +if [ -n "$JASYPT_CLASSPATH" ] +then + EXEC_CLASSPATH=$EXEC_CLASSPATH:$JASYPT_CLASSPATH +fi + +for a in `find $LIB_DIR -name '*.jar'` +do + EXEC_CLASSPATH=$EXEC_CLASSPATH:$a +done + +JAVA_EXECUTABLE=java +if [ -n "$JAVA_HOME" ] +then + JAVA_EXECUTABLE=$JAVA_HOME/bin/java +fi + +if [ "$OSTYPE" = "cygwin" ] +then + EXEC_CLASSPATH=`echo $EXEC_CLASSPATH | sed 's/:/;/g' | sed 's/\/cygdrive\/\([a-z]\)/\1:/g'` + JAVA_EXECUTABLE=`cygpath --unix "$JAVA_EXECUTABLE"` +fi + +"$JAVA_EXECUTABLE" -classpath $EXEC_CLASSPATH $EXECUTABLE_CLASS $SCRIPT_NAME "$@" diff --git a/utils/jasypt-1.9.2/bin/encrypt.bat b/utils/jasypt-1.9.2/bin/encrypt.bat new file mode 100644 index 00000000..edcb39e2 --- /dev/null +++ b/utils/jasypt-1.9.2/bin/encrypt.bat @@ -0,0 +1,19 @@ +@ECHO OFF + +set SCRIPT_NAME=encrypt.bat +set EXECUTABLE_CLASS=org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI +set EXEC_CLASSPATH=. +if "%JASYPT_CLASSPATH%" == "" goto computeclasspath +set EXEC_CLASSPATH=%EXEC_CLASSPATH%;%JASYPT_CLASSPATH% + +:computeclasspath +IF "%OS%" == "Windows_NT" setlocal ENABLEDELAYEDEXPANSION +FOR %%c in (%~dp0..\lib\*.jar) DO set EXEC_CLASSPATH=!EXEC_CLASSPATH!;%%c +IF "%OS%" == "Windows_NT" setlocal DISABLEDELAYEDEXPANSION + +set JAVA_EXECUTABLE=java +if "%JAVA_HOME%" == "" goto execute +set JAVA_EXECUTABLE="%JAVA_HOME%\bin\java" + +:execute +%JAVA_EXECUTABLE% -classpath %EXEC_CLASSPATH% %EXECUTABLE_CLASS% %SCRIPT_NAME% %* diff --git a/utils/jasypt-1.9.2/bin/encrypt.sh b/utils/jasypt-1.9.2/bin/encrypt.sh new file mode 100755 index 00000000..c4b013f9 --- /dev/null +++ b/utils/jasypt-1.9.2/bin/encrypt.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +SCRIPT_NAME=encrypt.sh +EXECUTABLE_CLASS=org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI +BIN_DIR=`dirname $0` +DIST_DIR=$BIN_DIR/.. +LIB_DIR=$DIST_DIR/lib +EXEC_CLASSPATH="." + +if [ -n "$JASYPT_CLASSPATH" ] +then + EXEC_CLASSPATH=$EXEC_CLASSPATH:$JASYPT_CLASSPATH +fi + +for a in `find $LIB_DIR -name '*.jar'` +do + EXEC_CLASSPATH=$EXEC_CLASSPATH:$a +done + +JAVA_EXECUTABLE=java +if [ -n "$JAVA_HOME" ] +then + JAVA_EXECUTABLE=$JAVA_HOME/bin/java +fi + +if [ "$OSTYPE" = "cygwin" ] +then + EXEC_CLASSPATH=`echo $EXEC_CLASSPATH | sed 's/:/;/g' | sed 's/\/cygdrive\/\([a-z]\)/\1:/g'` + JAVA_EXECUTABLE=`cygpath --unix "$JAVA_EXECUTABLE"` +fi + +"$JAVA_EXECUTABLE" -classpath $EXEC_CLASSPATH $EXECUTABLE_CLASS $SCRIPT_NAME "$@" diff --git a/utils/jasypt-1.9.2/bin/listAlgorithms.bat b/utils/jasypt-1.9.2/bin/listAlgorithms.bat new file mode 100644 index 00000000..a6e90626 --- /dev/null +++ b/utils/jasypt-1.9.2/bin/listAlgorithms.bat @@ -0,0 +1,19 @@ +@ECHO OFF + +set SCRIPT_NAME=listAlgorithms.bat +set EXECUTABLE_CLASS=org.jasypt.intf.cli.AlgorithmRegistryCLI +set EXEC_CLASSPATH=. +if "%JASYPT_CLASSPATH%" == "" goto computeclasspath +set EXEC_CLASSPATH=%EXEC_CLASSPATH%;%JASYPT_CLASSPATH% + +:computeclasspath +IF "%OS%" == "Windows_NT" setlocal ENABLEDELAYEDEXPANSION +FOR %%c in (%~dp0..\lib\*.jar) DO set EXEC_CLASSPATH=!EXEC_CLASSPATH!;%%c +IF "%OS%" == "Windows_NT" setlocal DISABLEDELAYEDEXPANSION + +set JAVA_EXECUTABLE=java +if "%JAVA_HOME%" == "" goto execute +set JAVA_EXECUTABLE="%JAVA_HOME%\bin\java" + +:execute +%JAVA_EXECUTABLE% -classpath %EXEC_CLASSPATH% %EXECUTABLE_CLASS% %SCRIPT_NAME% %* diff --git a/utils/jasypt-1.9.2/bin/listAlgorithms.sh b/utils/jasypt-1.9.2/bin/listAlgorithms.sh new file mode 100644 index 00000000..5275143f --- /dev/null +++ b/utils/jasypt-1.9.2/bin/listAlgorithms.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +SCRIPT_NAME=listAlgorithms.sh +EXECUTABLE_CLASS=org.jasypt.intf.cli.AlgorithmRegistryCLI +BIN_DIR=`dirname $0` +DIST_DIR=$BIN_DIR/.. +LIB_DIR=$DIST_DIR/lib +EXEC_CLASSPATH="." + +if [ -n "$JASYPT_CLASSPATH" ] +then + EXEC_CLASSPATH=$EXEC_CLASSPATH:$JASYPT_CLASSPATH +fi + +for a in `find $LIB_DIR -name '*.jar'` +do + EXEC_CLASSPATH=$EXEC_CLASSPATH:$a +done + +JAVA_EXECUTABLE=java +if [ -n "$JAVA_HOME" ] +then + JAVA_EXECUTABLE=$JAVA_HOME/bin/java +fi + +if [ "$OSTYPE" = "cygwin" ] +then + EXEC_CLASSPATH=`echo $EXEC_CLASSPATH | sed 's/:/;/g' | sed 's/\/cygdrive\/\([a-z]\)/\1:/g'` + JAVA_EXECUTABLE=`cygpath --unix "$JAVA_EXECUTABLE"` +fi + +"$JAVA_EXECUTABLE" -classpath $EXEC_CLASSPATH $EXECUTABLE_CLASS $SCRIPT_NAME "$@" diff --git a/utils/jasypt-1.9.2/lib/icu4j-3.4.4.jar b/utils/jasypt-1.9.2/lib/icu4j-3.4.4.jar new file mode 100644 index 0000000000000000000000000000000000000000..f5e8c167e7f7f3d078407859cb50b8abf23c697e GIT binary patch literal 3233439 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

Q(lhq<|cHM&!lAV_n> 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%0D2Jk^kmZkWdckUz!M$?zEw;0l>~ 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°%!5`c*hJaAlK|;nCqQ({mb&OA(06Jiad!%@jOyv9Mp!Ibs9(Wn# zH%u45WDf}@-GgwsPbQy%H}8-`+wlgWOt?iuIxWnhHm~+8SPkrvE$5`U|HwLGh&<_8 z&%K9h{2^G$H^Ro*au#8E=+^r6$@b6DHRIMr?()+t5c^rwApHMC*FOSE`Hu{iD*P8L z`byfdf}^;(f(4|tmw(%ji35JVG_?3Ox+5C{K~rS+9*GH?dae8hn>b$Hn`RL}ftWC* zLi{_nw_ne1x?S~6bV%X&W2V!o^f!~9^t-zo-|r77KXPb13;Lox7a-m~9FRd?H~OPP zeIbi$%C^%$w8H3DKwZ`YUfeMf(pW>tk#4s$K_*=BV^sx=R2^L^w@X1TM2GY^NrfHh ziS48S^It6H93vO5jvSh+4csHrimit3)pB!CfV_*{(rW3afL}u$E#<-w8SSXqTI#Dz zGvGK=ieK?UBO76uR39c0@`i`PyqK}moea?1*IXD;GcfLjduPyNa@8b{1%^k35Ebs) zzN_>wrb>CN=n@ca1}Z9OX5#22In*{)XU|zJ39H5iDk77m%$sqi4GV`y&;u^IY4Cx} z7VB08Ss{JNd*RF@Y|e}2ThVP4=rK(eeEP_xB97D$B=>;Y-+$=lto~rFl;}jSC{gNA zk0xAH=|rZCpV4IvbRIW~4LSJ6TzNOD%+H*`!KeqUAW7AVqoZ`66@K-4E8P)vs8?3- zs!yGkQV$Zh->EW^4KgZk^+}`fysG6@XDoYfu53XQzefeAqd2Ci#wpbMkx?$FDcvDU z0;X2H+J{?NyxDKIq`BAz^Y_uSHFw3sRB5>UcA?i(0T+8UrA(PGJ;3s+JRkxF7P#TI zUC2dI;};QD2{=DIZMtzW^bMA+*5+@&ss?PNsNWJ`5L$meb4H)n7x0_-f%D2`MTU( zHbeAINl_2EvNMQiV|xC9noXzi+T7wpLba#*Qe+497{_XUQfX+d0t{Z4#_RE%y($sb zxr7X=F;5V-VomPtqhCru14|ba!j7nPh67f!X3c1+R;Kwc1Glh+0BNmbahf;$F!kB zK%PHg9<5@d)Z@f7DK9w zAA-o7c+js_@?eKwN7tC&hOa^h%?c5G=*lSuZ%PyuB(E@orX0G}4ky<kmI|mCv@tq@y-**JbxyTQMJ_#c*00)V#hi8SHv}B9mGmF0GW;$BxfAkLfwbX z6Niv?sP{4WP)59)D(H21O}f0MUf=KNKZnp4EJ}oI2S_r>6T5}yU4m>{x_PF}|E!5* zD!IGNQ5?h4ipwAT?dgNlesBtCmxf>1XDT zT21_X{+((msQxrGE&svM`2Uxs#hc8X?fKGafzQisnxU-31J^CT+00PrRnJY8Ur zDKjeG-ZOV{YCSv1c746xK=GrG!8hn<=n?q2NHfBu8KoGu4AV^7W(nY&xTEj`Ab?`m zOwdiBxmoEg@h$aYa5!)tIPU@TSz5{Q9RT;685eIgqNUBMPi)uB6lI3*O2#uWwMcAB zI`pBkCb>}lp8L3OyQo$@A-Ws9S?ZbF($>#ahyr+)4ZdRjEzb!SsvDs+u zNugVnvN*$8ec-b}ag(ypKJ{>nR`l4Ri<^#2ufXwTZzGIKMg=o2kepEz1yt@ESuZlS zT{0D-O5;|exQ=Kh33K9F)vD5Aq};O5QL%+_3o(?meP2#)KcR~eo-LG@NJ_G}cz(egBh-x3{R+_8PB>+LAI~ZY zVU(WX8l9)`_ZQ5to&I`lSQqzDy4oXvsq}=C-^m(BZsnAwR}BN-jbpa^)G6p4P?L`p za-sOT>gao}HF82;KNaIAySIG6FUnjQY+Mc(sAhY$VP}q)%-{GfRPdPulQ7Fu`GR45 zl_Z~GAsHeTpZA?1n?;qt9gx>zU6GSUhC>@>XQ^eO<_&&#NdGJmR|~wErav*H1oQ9h z;Ql*~{?P_hIk#0(M*iNOX=2Le)gVu5o};i#Z$UOvh7VH6V{DphP}7=lde;CgVLE<- z0YOW7wa_pu2E-}xZ`;3efs5N z+DZ2Cw4191CKsBBaHMYv-U%rmzTI#Mu^$e8KTn$3UBE-Jp%}cBlX8r)-Xhv|i9|zS zibFs=cowC{Ew%1CerhxS92%c6{fmH;T!S+RHy(pyJYt1vl0coB;}29nEI}y%NFhTa zL-o5;LGA3N;+SnS605O(Z*s%58>_oqKC=(LJ-d9Wj8Vs*3@+F-anELfHAbZD>zCiY zz6$&-lt=2~>k}Efr-0KjWQ{z|<*;95j?U#dJ5Jh$pEW5w4$d`#B6S5NC)v@N8ylG! znV85U%ce|S+4Zhu3mi;+%nP#y)(xe__NIc8m01=0izy*bSWo6T0{t0Eq{g+yRLW4U zRKR~4vr7cTxsw?(9e8j`nwjR~SxM@w7~^-c>l7MRL-{>@BYaY0_t|)2)J$^C{}@eI zYrN_fQ14}HZJZn%ZAhuTJG5;MLO7dVp_VM$d(~b_chfaVZE{{*#M6qbw(f2Rxf{nO zO@J&|3^A-`60YjpgiQ&ckR*gUP)s`UBhME05VDzAEjBoGx2&(*5t~16lv{~Z7^OdU z%IY#Q2aT{ij&|ZUnK-H}Y$YWmp?bEf5fg)|=oJsV&TAX%@uH%a4FGmLs*Z z5o`4NTMR*C#~+tbLm998c>u8#@IpFCW%*b6$c zc<(I@%!!JxB!Ns;He@+XSiTp!7;Uo0dhI9ocX5B~f5ug1cg(ArSXHZTNuF@B-1J!; zL--6w-WBF2wJhz3Y1q~__U4?9R~`=sL3S|q90N*)wI{Z`9J8RYY%)@mlR15iws)X* znMtwxj55O*xyo$BYrVqYp@I|ZzNcwMq!I#Ea~+y-ysaZ-Hx_E)Rz?8l+#TA%Z)#SN z=Mx-<`8)iTM)MsP*M!{eGUio*UYTe%g{9-z0Z8l?K-%M-Jxl>>Z%keafc(~e-UQvci26*#8 zH=-?|e3=alen-W-@dT7lmMeH~t}k2n0Law`^Pt#3YTquAgKIIKAf_FiWwjX{5C0ZM zwzv4$)#;CCPXwOX0}PT#6Ot{s&B zuGsr$w+@DXoWlQSfjNsf(*{jLQ3JfypgJxn348~tz`7V-3aAC1T1PJtd!hQA^wNg% z$pa*L`t&9HW>f3? zWkU65eOYdp6`D043GCQ`+%G6%&`pM4As8>v0V6?@(vRpDw(=c!2uf6$S|C5jC^9x2 zesuu~nNrgpNPCn792tmk z=VB&WMmUHbP$AN#R<+|3G4f$A>M6X*#H`^w7?Jvd(q_nqpT|t5K_m`?1u?(UGn0rL zZQJpygVZUxf&%Br#Dc>~8i>GVjD^P;B1)2^DbWq(V&TXZL#)|_BT#kRX%X=jj@_%S zH#2Npoal90AfYWS5v2CTtP>~HrBFC%qvFn7hmshHMf<~zU97_D72SjE$5hA^SMTW3H2P2b z7USiGppe0;*Qhvp$F)zuCQQfAh09{Qqquyst|iKQzUr>t{#!Fs;8~1L73oh0>(k^(H%pc3GzPY0CC}9bW}QW@58*mY(hJDmGGpj}>a5YoJ(R z`b*n+wtL6j3O72WOWErDDITL%&vJ}w(&SuE-Yeh%e7RpdKf13yfczUX^o>pI&NlvJ zw||eXZy)M4Om}efgOm4|?~wZ&0_~M9?WFer@f#-hVV7a_yHELxtml-?F8cd8KudsW zVJ(!$Ep3k#d_we=yo+5j**j|QdA>JB&<$Hw4i-)9Tl^7`B@}jbAhJ@f9__DqY+h|D zWrR8RRf4X*^mc$5$4CP#%Xb}K~gulmhn`-LgYgsP8 zTzzr|r(z^Td(*9*_?s~e1zHn0DtTo7f)<&6Xw!AJrf4@BTiwjomTWq+4oz9}KGbNw z7~xFKp0j;uo^#a7(ZnBnjkpz((=S5~p~4`qUNb^3cfp>CD~F2ZgLBo~@-=VOib#8s z*>uTlp-b9@iy?m#ywD=fF7y?o zm=&!5A$AT=yc4g;=$F6b8dHrJ_!n1ga66w!_Cv|tnGA6 z8o}zju(8%m;B|A(<+wg5=UyjZvYRIOH#G~U0!E7w9d{JtvGX)j1C!PD56BaRackk2Sok}C|;ChAW##u?V`u{f#& zwL)9A7bK}?v3~{Pm?*?q?-f{N{FV098?1viRs2o8o+*DJD`9zc<_2gugwB@kW zM5{`1W0J+>wtts{nZh9=0!U{pL{DxAK98?6?iS6)xKdAGh)%?~W1u)fZos&sFDa5G ziD3ny_Fl^?&vNyKgIuE)ukc9r25$NVQ-B+PZAIpo#4%}+?)4?bHFkN43n}KL1?3u| zq0VQ@+AO>fDXdaHRbD}fe`@djh3Ni$nX!Z-qkY?vlv8LGQhi^iUR#$_&nmd0ghJ_E zuKzypckghJaD4Ri_?nr-wG^Y>b8GwWnfTr>;HdZ{qV8B1icc5;k9yEu(^c2374Q!~ zb^!S#1jNBKeC@95XmKf^nju*fF^`~8m=Y0tEvB3=$Zwni^9^rZ{GEbYP(D?k3r<6D zeujuN_JbUP)k00vDZLi{okDUONqAzr&@jm!;kpojRVTy4AZa}{>_2^^8fzR=o_c>b z*W_S6wHBkZi7%1$OL^*Lx$70Mxa10L5=*eS1lQCDW<2%0)$CS@aXX|-bCEu?OXPL`Tll$olc(W0{B7N55a)6<>GaJu=mCCvhjw_TCUaZ zw{FFSfNkgPL)ozVg=#T>67uOBjJD#4PWx_orsLI`y;dN>brPhy>>+qXgMAAQ-n8i> z`=sXk#^UXsj`~`>0>Su}?Zqr!3AIe&fDWBCT~86)r59n89I&$_=#vmqa7ZheCA z`HaWv-W{%fyhdaBM%r>Q{2Y~f28nL&4|`wlxO_f#U>fh>e!dL3xx0btdh{mq=?nUd zU;PLVJwD-kIHcS1PBi`Agt2}tLHZsI$K$*sg5h%!jP8%>z5gKV`mjBJb^S=f%Qb&> z=llZdox9Eb_*)#JdKXbB6bfJgaTIDd7%gBAnal-yU1TqLn3AYTYtzmWe;wj@3$IV) z&QN{(83AGS&%5k^w5L^C18 z5v$ZT%*>F@PHfUPB*idEA>$aie&E!aMl@qLPl-1>?L260kVAS>I{0MZPdY;!aR(wz z?KC*;76wMeB0n5i!BRg4(;A8CLwz!e2wImkTVY&7UHAuivi?2^Dz-3ugmg!nzZH3Us52vG(pQOJwO#W(t6YL5!ZRoBqHSO%mwU?E| z!!{65m*0y5UG>`xaF(|8l(#S3)T#?bR#JVkNP}B=3-aiPHbZ6t1~rwOjBLDnwre))kNeit*|*N9vVkSCnNeLx-0E= z`6x>}I|>rT8X=~lvav2z>q?0!E344`;MaT%1qGS3qpavE)V10dWVfBxS>Q{f^$Q|s z3n_5JUgnz1GXpmbSFE3g1otD9`&-B?X!=8$nZlJu1)8fB%_9A$5;LXBN@7b#`iK5C za)GJQRb~Q{Z%NqG)9wIKuP-mXEb%_Asj%49J5VDy-N< zw1a*L?gB<+%}=Ojg|&NF)M9p8BuDkx{3HeG>=H~i-yR8g2auoPb=ow(+{A;piyjra zafW*uOql-)Xdrx7UKxh6JnvG#If)km{Ku11GjMy_f5k3t9nBglNEM_*aElFW`E>-o z-X$S-rZ(?^>g)rOw>MzMmf2lx8Oa=usb;-iZ!6b{ZMfO1f(ntFk0GgBe~eO~I^{Z< z^rA2lXy48<&$ zet8WW=XHdZ+d;c55Tc9{0lcOXCD9iVRDhzqc_`!}8oET2t+JfJ6UR78oZAsoCe9=x zeo#7vwaw(5W%KK7I-L3wvn%X ztN2ZJz71){Gkg~&HW56y-mDlocI=3y5hFYOuvRtEk;(cuFGwVCTs(ov^Y@KFoFP~X zr}WgrvoJ*3ktnSMj2IC%x)>KaNEcv_0ei)=3UELc^LawT#YcS;q)wQ|j;%fo5mE*U z|G~E8r4l&9z{A{-6=|bgw*Xs0vti5xB$oIb8CHJKhX?D;3^o_hSTS>5h`F0z= z0`;ZD%}o{RMg#$>B3a=L%gqfYx$f3}TMb==c+}#D;t?Kl30P>bX8}`{x}D7+JU2?$ zz)Pc)$MDeNK}E*$<+3G>p>w4ePR0W3UE$f42aYmPV;#Z`hmDyJkMa|-fSbmWP+6z} zjkNEg)ioeq`e+`hLi2QK#aAEpA$qWni z0UlW&Sg?RC*rl?uY+g@Jty46FWy0w)QE_!-tECiNo{^VW7Lp-D})QYs!;QZr(0 z=65AW2M2mSv80J$Q!uLnI1YH@DIKnbBm3|Wxv;*xM4C991N$*kk#>rEn~>ek_i$Zl zlvOBv>N0LbeJReKo6HzFQ?L~-Y2h|F1QP2GP781}=Or8>6Rjf&R|IomkRSaUa0;(H zFZ^Z+Q()qclH3hrmv2m0t+7VK!ZtO7ocozCT4kR<&p>;clDcL+Yz&xa6Vgy)2t#EM z%c6#+`NazgKVLlP%g-0! z`ih#$uu*VmhFz$LDio_YFRAKe0MK+c1c7AFrA`}l06Nfi@!QCvD-1?ZzQ9Cf3E_&C zk#LPr+bJ@Q^q}JmLDSium-AdeGLn3OZowY7Ucrj#wOxA@(Z)L*DLv*+YSc|z%TGpH zt1PlMtoGvP_lQI7mBkd^BI7v9pOrC0McTormm0b=;kf4I*-az6<>+Z_m&Cm1dF1=BVYR2S~9cy;JK3L;`lUsJw(Y`z8YAuD` zp>A?=675vG7OY7gDboSa z&<-I^IHDrQtRSOMa_G|adlc#oVKmaY3wXPM5n0nVrLv*e9yS!o7-1t}a3LX<$k`r= z$cgFU3)P+~QL0Q9GbA%>#=#?#H0-=JQkzpJdNpo|MBj=aKXUsZGowuq%{8La>4Q_J zJiOD{KDJFY6mB0#daE?@?=aB4S%98-{Fap>0qaf=p)_|{WT;Rn>GRovKItAp)#^Uc zYg$km3Atfh<4M0L!i3Dk8ytcrC^0Tltm2G!79q3aF+@W(*?nu*wYWC-aMbQ(#h2&V z>YY!QD%xK$wBf}AjFlIb4mXv{(mz!va^cP~HH~9Z%>$c}8j%7F<|-Z(;Fh>?a6}D+ zU&CHaM7?1GCk4c%9J#GH_!NnWBR%*0!pCo%lu^2Phxb`-IrSH-!>vR7+Fkgt=eMe_ zLv_r@LKYnH8Z%ZjY?W7>yiu`d2f}v=q&?Mfa3&y2LsT7Z%Gff)RRk^^reoXn zzO9uE14D;@INI~G>LGMI&$@tySU)Pg9VW_j7i+(8LNqFOyc-2tBB}u*Wjfh zO0AYBDF*GV7+sg%q#=7z&27}>2a_L+KXCOf>L5!Sq%hAeARVr%oYb1JDh+b8u|XAn z3k0PvouHILMzp2q-S%O`lIqYy*AAp)NNQPEH(10DlaaPFm<@@ao3xLurB!hAP6?=} zD2&7F4~GwY^dG113$;))P$A(K;TscdNJzB%#J9zLBpqX__k}GBcLuWT>yfELcho+L z*=cTFlJ-7elu<)h6vS2Q?|c7lsltp({x*iK>k~^p z=BjA9mQ&S|Pz>Oj$rDaoj1n(9$4?!UV>sUz?VUrtwo>a7g zqN;ddK1UbqPGi~BoBG6TlAVpixw`1jPa4^OivNmShF<=J7l z0DKm+@svvWm25Wq8-@|t_?}2>90HW{lr*5af6ysidkabw^jFbqtWs8DYtBqfNt+aq zHj6V=hUN;}GBcU-1!y6ATC)V2Av4+Vy*}WNVMVQk_P4b4Hlq|v@;<**&#xWSRGdL# zH99tC40skN^qUCF>D9lHorT%UBH0FlcML{PyEYXPvVFV6(s+tp&+LuoLFQeo{FziM ziFX{@vrCPt+Dt;PkexRQ8TAtvP@)Y?k(fa+?M(4`zZu;G7zF*3Je6)V} zDt>^qe!`Z15^8=p2R<5Vevr<8mR9_NR(_^eemI_XnxA$Gzv-;M^b~*8Bu>6O|9arQ z&g4IE-);z;K+;BzKXcvE`aKOD!MuHNanw2<()s-W+)V7e>;X@t@hS2Fp2#izMAhU$ z7VY)fcwZEJ|E#^6$^QsJj?Gvg{3_$kbI$z4@XZ8JT7Kd1mYkR^S%HRV0*Gt_?>5$fDe%L`b(P-9#SM3G&6#ZR#1Kh znYsXzdISC>?}+nuK*~wVf&zC--ZX%FQ}Uc=A!}{ZxenYkyb-p zFV+oxP#5#r21q6a&8@*Zr0XloT29ZD9Geyp-*B66P#_ZL11~1J?Qa+7h$&t#{k6Ex zHeuY@g6p8^@Br5zE+B@mTf=XsfuMDU!y2qp6ciWpS%c@5gCqcE3WE+fl>sG~>TE|6 zLeD@He3sx(&qfrKmE4;UM+D5y6?Bikus%L+lBSp~nEB@u&u16y3dfEe7l#3mECmJB z4v_6mYP>5rK1i9Rf0E9hvpdMGR4=CPXgFqLoETrgM`HUn%xLr=oy1b>i@q$V=_ASL zpTY`23*Ar7Jpw`>M{kCmv(0dN1uA#{?H}`}tR!FdQJhnmwl_0=n-t{DtH0b$+Cqaa z`ndx438I=H-$*wY=o%*!CXSMfXY_E>m)!a+tbqnxU)xrJF1l<4$*mmNR}&O;eUaTC1Ea|tlG3_ieLz|axgcpnTs1gii*h#r(p2r{$)wv8XXi$tIa zMwuqCkW^rkvR_cb7I|!;T2P+L9=k<(qP>tHn#y3*BMHOJ!E#ihPM_Yk8}dwOkR-;p z&0Q*;jReeYg_KEF)-z_}jalP7g_`_u9)> zD%?d4@uHS=MF-gFmJ?!M27VxmL<1UPk3&8bDIDGO5H+fwhBRQQ5xrx?@K7`rhYB>h(a4Zc#}sQ)?R*TO(w%OEU4jFUEMvoC;)p&q4n0Phyp;G9&+>42km|!b&`r8-x~|$f zG?QyklCSBtj6nd*mS14@N>cHM+%HzQDMv%!p|l^lff+qwgqc+N5DoRPT-g_rpNd;O z(gf_!xvOTHl-M*)k(1dQwzEaq+rr0);^~{qrvr)U8+44eUC3;4w!vzEi#TR-uH^)?lyIB zujnuD&0#tW*|g^%%0>e_SkV#mVjVCI7NE^M9X$;U=#(YdodJK$K5h3pD5{$}RCJYW zq%;hwkSe7xsaTf#bFbs%y6_gb-*rm|Hi;Sze4I!Tg|%?qJd5_=r&6IiyF}By_e3O@2V9`}GFT zUa`u@+6oYM0#aVR)PrskOnmTI_rQ%AejqmPpZ+ML8yzOiFx<06%`~u2kDajtJJ$ckTgezE6Wab7jnIzb z6^jLU2P@Xx+0h_Pr&}0Cy3F(tUJFYmVUF1nRZL?fn}_m}0rWy&-Yfe-b%k)~@}t1J z;S8pVqfm+As*q%Y;vr=QASw%KaJsvu$Y=$y+dI`IB;4pP1C^ys3BJ7z+8&GF7(;RydZ zClHhm;yj`|XvS>qFC%Z4se`u%V@Sh3!nr@vL9dxD*4!!>VjlF55CU2Rd?^yPUN%@i z=rmA<5XL}rl_nY@KgeB4DzO(N4e^9jfMsQYhlBi=J#|A1YdYkt9Xb^;WZ>cEdv;DM zv5C_no8)#9Y@;3)t;XtX09=codn7=XE8=~WUXWl2Mu0Q51rm@Anxk@3Lq{>h%U)Ic z2$Ai&Pj4W5 zN2@DM$}tG-k+s8Pei@wnJ>=g2QX{KP;&!{+&~o}w=MbuLQhOS(+>UA8ikoN|W4DsI z*Z5G%T~2(jPCab;lQ^0kb)l5k!unP{6g10d9PyHuc3$l=VfN*}0#?uRq+v#u_wT+z%me!tujQaknoX$PWT^pNLVxk09wW0)?-`pir3z zwc2A%pmK!Zk$RKAfag~~Wz%^7m`S5R32{jv1DRtC7T9beFz7Ye(~`0r>R=+s6gpHb=lL=rs}ML&2UB!d8U8x6ofq!JvBIzd{mIT8%lqjNPCj@sEsT zXvx$f#USjW3MDZmQ*nUdHFH*TJ7k@#r9&h_Lwl2wB?o_pL?qrtGH6IP%no>&J2b~6 z4Moa?s{4}()Ykfq6xf|yYCtmeAWN40OaOu;ZM5pWK4FWT%011dvtzus9yQ64>I#=g z>TrAxf@sNz!(A90s%@ykqr&?lc+QiFn11FKz9RbpT7~}6X6q%qGJrq{8a7yR3vg09T!Z}Wb_^*?y+m@1Ma`5n=Rl>IhqZv zQG*%bbkX+1b($c@KL&oZr;{G>Wgz;=3zDh@G0io=k}0sp7_39oBp^*GGQ@j1s4Pv8 zU3I%^uo`XUcN$Bt(w6t+<#=Wj`y!+)&}XZ!b=4EA-6N@UP|&sY#`5X*80#Zs!L2MT z%+OPS=4t9Fe~nZPQlJ%;4a6Q^;*Mwa5cJxEw{~Z)D9(avTuM4llw!vuzFI+%hf#5Z z|M7x9wPFcefPS{yqak}@zfpn~iY}}{>m>xNp2>K{_Qts2jsajEA!`IRCP^Q_#+Pi0 z@4F)Dtj)-mZwjKhQXx~d4KN>J)l2^a^)+b|cB=?TG>OG5M%Wj3jG$J4K%DMq7s6an zK#s#qFeb?GilxONW-M{X(3Pb|pV{%sEM6JU|ARji&HX8Sqn6~I?}$d=*(PJdBu$*X z8~>d$X#H(D1@Z<)&|gl=!}{`B(ayGTs2k`s-1?%}a0NJcEMT}HG~CKF+!_{P69>P6 zOVY|CYVCzxnL<_|>M=RmT7tTfs%fod-teoe(|U%wAsKF?CebR>y5`EFYqYQ?ZKaOt z^sz_CC-ZPA;ez_sWq^yKL{GOMi3G-eeG7&*a^pvAf6K1yB2d zS-VT^T!&x;Jmi_M`W}JcLrw4*sj=ISXyeHZz06y3<%LN--}_I>Bp*%Pad5)DEBcl+ z(v|~q0!@)}hQVsOamSmGTv9MzCUJHY@)$SlDo!Yn=kws~FPFb_VJKeX+~<$&Zugxi zUxT|W-{yGBUDju^mCR{aRz$YexnvK?+&~Rf^>x^W=J~)P*IJUFEO*DwpA4PxK;Icp_DQH6Ccw${733br4<`5^80& zA;K2W)bfj6>L+W6s*64E78F|L4gE08=Hzu~5BIKW%WT2ve<58Fphn|wj`$bx)#i*S zSB@Fwh1M9hg8hF!OEF$I1KctR9RoC!X=ywlpnhWL7wp z2VcKIN+kY_pxt&rX>&Ua@uKf_7MoQ#=>AE%7#|3bKx8Xvp3kX;n)ZI$oTlE<(UzruOG!cNICK zlK}HbUuc@IyyzP^UkEG}&Kt>I3^<(88{Izx<2S@8p2~T9`6amsaD`EGF}9clIIToPU;%4<`Hq$416HJ%?hnc%-0jH^kO)yOp8C) zg%UacL#|XuqSEsxwQ^Oc$P>6)(JoMGDQnO1Np-E_IuNg-YY*q?&ufk(P%$q6UKQMc z+4)d;d7OUhJGrbp-VoxGM0O2t$nv?acIEX@(~?=eh!3jP@>jdS)d+11p3!;REzlGG zwLILO%ej<$)4PqgxDUolW!5)>^&G%N24L)f%7XmZT$A8%wRX> zNz!fS#2j6M(HV6!n5jRe z2-51F5VL3pn{KRE`B5Pb+yRj(Pxbb6q$9;&$4e6M%9i+TPB{OIcx4Wi-oH(KCVD0! z+7|f-MX%}DGb3XpE2CwYvV(_;42}?t{pEJ>WN)_aGrSqb#Tc##X4y_^fjgaCa}?AEy&52^|Q}^kGN_2 zR1sgJy?LSMB&w)(MalhnBS&Z%>)-YM`>e=eG|YX`?~KUx@0a%fXjVkxmr?eAy3I%N zKeqXn4C}*{EOaGhE6r>LVs%vwH3*4*`6nj25~7w8ri@&`Y(zn#j=r_Nrik!lY3F7@ zDQ8B@)rRBa{r%(p2N`K;nupm*>e|_w)8qI6jEa0@40Jj>d=ykH9l;3#G3*cM$o{1a z4Ez90@QeT+)G*chykziBfJYb@YyQ-K{+F%3L6P~X*5AuS0R#YG`9Hth|03f5=ghZk z7t|m>eD;&We7U}f0Zn1d3!p1lu#f=#?;yMO;Dkp4H;CWNAlz-yuo65LG@7Yf`j*D= zcl$Pg_#<~Sw=)Fck>d#3pnlY=!+BKSS!xCDRfL9s((Vla@EhYj6$Vs{smt9$T* zd_L&AKd+!(vrJa1qWHSH>jd)mLzYFsqF#;x7`iE^QYomZ`(yU9r_t1f06#v)R?o?$ zhxf^b6Q1u~&`Bw zglnF5J(hbBo}$voj=kzk(ks+}%z=t*j?zp`(R>H#J+{@VU4KwX-g?Fw^;9kji7H7 zA=6rbns$IRcHitT3$Bk z2RnmrGFn<#Fnb+*#$2Nzg)CYvc0L`Btz{>@tx~7eC*SNN5&54`9 z?E6RK>1XvvN}e+MhU0Ol>AK8#%2v!}5QJyHxgiv}}!=%_K7 zu32v0itEB@X)PYtNB>fr7-gBd1wKW0C!-1$tsC3SuW=;i5z$$(0T_ED0WtbUFfjUt zZcK*fDGn$;1x6QNi=xeLt>Mi$&N(o`;tQXWcZK~D@658(9N;N1K5kJk7Re{l_Y6?| z67EUEa`R}`Qn$IQPJCXu{(7OmubgMN z^28knYT&IU)S6n1jY0Gr4usI_G#c#&mFKb%d)A&vap{ct{G!Y@MHVF7CBO*hA8tQU zw!h6GdwI66?hrrA{=#cHEl`=`k`u7I9}lq^nN6$&*IyWy zg0DpQ83Omjr5+d(vCcCIyZ?4)l3P$|)}m>UO*m8ys9F(#0G1OE^4oo<|?5t$6fXzK2V*vG&W=2}?#{3f8^Ehl}l4jC~`Q z_#L5SWQDF6TRnWp4#l>)AK{WxcYOvr972=#atCvHnvzmSDAI$Z`aN_BOzO(5fUhIK z*A1iI=1+289BgR7UL8nqwkNJgyqL%`iyoJHEou)Kzt>n>h&s2~^Gs7&`M4pu*lI1` z=H)u>f+!5lMWWe6Dr>j|!YuC|MH9Eq6k$^OyWi!4s@L8!wi7-j-s6c%BlE4%yzOVG zanP8FW{P7g~%QcV)e8n&jw46YiopVMUC1@Y||2ylmYUei`D z_=#3E{PUM~dzAF#rOWpNCE98vp`} za87$#I9vi8&JZgsTf%TN%Z7S@M-0_0jkb@nVNBS! z?UVc8)4RgugCWg0KV7R9j?3nMUI25ay#@`7qiG1x7Fav_)hnF{VK&NJ&zvwR7rJWm znz_5(CFqW+`w1nVed=d)9k0;XB-=V)L@D1cwcpMrjt_JNMGJlzvk9+RALkll##z} zG1n3I8-Zw1)wf1ETLZR|zXEhL?QI-Zm!R6IUxWCvLZOXilt?93&#+!0ctdB^uh?VZ zc7-@{vy2fe(W|Z=4>z6ea~`&m=-T`~-!5(doUx+~f#8s<3#q#!16it}Z*=x}kdJu` zDxoabRQz)$XPh_JDs3|JY*il<(6BdbcV6eN zt;4LH>d7>E=Pmo3jE{aexq#21PS}nL#Yc++hVRt44FfuXPD! zSeIlMvbCm{?(qgXncpw1JbRF75}^-K?Lr7Oh=n(MnTNC%i)%VMy|c~2b+fp58`he$ zOUIv-ZTB^fx@U?Y>L6jSOdqtuu&!7e9iy}rnA?qr#Nk$P09~YXZ7ADE@~+%x^3EOT zjikFRi6rd(<->@eu!UrdX;Jo$GNF{x%cxUc8)WQl|0seFefAxolOj3G8osYE$)P)j ze4UHf4aV%L&!fvs?f2&CQKSS*UWgzbt7B_vA`XlcprA{BB71B3FAmSMt2H6BKn11E zg_mD|cZ*2U^UPgpULj#7sInI|)*L(8f|?K!7zbCrt5q!ZDo{X1@ zXlwSX+%KQvb_ZM-FIRQ%af@)<|zjD1YVy&`I2rFu#5Y2|&j=bDs`3=Em4V< z`eg+P$Z8I`SbV`$y``tz7E(aRZ97yFa(m8KwB4R2yj>k zzTOFV(*VxdhozJ4)4}cIk?o%aOAh`-tAXD=313wQKlAcX@E2@?d=2zLp3(hxACN~7 zl|ugO15SRE@&BFJ!GDz>g8x&H>wgwt|Mi!It@D2rB{eEGa=+ve-`3<->@ae}6sSV= z25dSXKtNCgiozNch2R@8jlE{tPrz?7`zW)T5)IAcTN)w%4Onh7PO^$>Iw5KPKJ;XrHO;@G8G}c8^ zZ>1JwGg|p&im6C;Wol_914g3_CeH>Z1DkPAp*ilEO;npaZFSpVbknkRdA0L>Uy#GZ zWim>e6FGSD(waHsO?3Bsh?9%*?lY-KO(hx$WjbOpOAX>6r|>V z!Z=NgBwc5gDdA4B^d9MTB}bAxFm?7&!`Dla{mr4^6GO}>q+}NB+>FO&E;u=A?iGX& zsZ$_o17^zXKKQWCp&Cd+{l)AeA03meZ#pp zTg2VhhJtrkGhg{J*puWo5t?4zjd{F$NKg)E?Lnym{PpAj&E{}r&JFerf<5QZIMXcI zFT`|jX}9}NaE2<=%RaC=?rR@7kXbE?fjuIA$h|XKPSF`Q=1HX6t^4Z;H$;$Vm=$Qh zNC@eWfmNZ(#jd~X$-2J|v`h#N>Pe20qzX?-R)u#wm59_1F6TcZ~M`GPVDI>r*xPAM$wrVS_m;HcD73$iCMz zjUEOzpaq$U3uua&))bH}ip9t*^48|TYy6d^2hK>e^{m#}TQX+1O@94-yJ&sq(F&!D zci^x8_;&FW<|JCv7p~B=a(G@goo1b`oo0L79zOKs{D9+!hS)`Kd80-^Yz-n>HmYfw zUj0YHAfxw*T#?nQ>(yoA+lRJUQ1P1DrwY+WJds~OLUYw;S`p)03jMEdHgq}Z;we}( z!8y8Q?TT`m;CgM3BdIoCQdTXyU{%byxMWm_FK7bXkN)1hq}Z{6MDrY>;q+Bv`c9$z zWz?9htZ8;N4_PGHP{6th>U3RHa!x_RwES59%L(7cU?SGSljX9)L{neqsLM%7o_bQAW{f-7#5UTP!4`N1cuz zA?em@>h#`JK$Bq-3${I&9-whpNRIIef(16}FxpQ#3C26(1B_ygF>biguQH8ZZaCS` zvO-H}u?xt{bjuM%C(m??dkl)I`{E9v{ccy@|ET{~0j*k8z)k1Fly@T4kXtguioJGx zyvELS3plv~<+FPMv%=IOco&lWwk@b*L_9Pm@o;IUtT)UpMh)9*c`D(VTdlQvXB}Wx z^+WVT6^BjxchxGn*Dn#56Tdj-zQMnLV^=S^*)5*fqxB=D*oyxk{*7rkPG=27A}6LX z8u?6=4&a2G<%144=m*~_c@!3Ciby!sd?}Wm*#YG18N^~SB13rhv4qfwZlWpsIraZ+~+&0U6%@pO}}! zG@Vqp2np1*(+tArVTxU>A3xKzx>x*6W}M+!X3c+!B?t|4FZ9=l+vWpa&(hzC*+h8-wKdsEE`<96iZ=&} zm4*GDkN%!{m>)REV zKg9Kf`Cxh8aC)?9bQ3Fq5u#GHjuC`JNvgea(Bg)=P{!^&A6t!VURk~DFKdQTmiOIowlMM?7K&tm951qqI*&y3XnYT=P>jjy!FR$x3tgfYlhe z13%CVcrM&{O0mWHo3JPqvh#XgIm70z0`9E)Iz6nFs(#0Da-5mVX5(5Psr-xj4#Ms6 z(_o{i4dmWb86y!BNtV${7NMyi=GAW(J~?xn@lWh-t$k_s%xVeHl3!eJ4rJ18YV0gRd0Ry zymzMZOj)N)knX1ivq>wHK4lYjz(3u^Ee9|Y{$D;NRuVU!Pte?X)@vGxu-3?Q^8%fU zy#7w7jV~6Z*tbsN&WI3|ALYLsYjI0;`XNL-ivU@#W^lwB2YsoN{nb}kGe-2pn? zBAIT1F!w0iyFWeqJy&+g-Uwv}aV?Io)$`Mc&{oV%L)BY69fSBr{T0p80%Z$~q1lpC%+%TzD}~_*t=#gsk!eQ|vl~Ol z1%TPbw7>PgUF0p=e>bf5V~&-QU!zj|6$JQy=rt=F7+RbBhh4R(eK=vM{q~xhJ!@Fw zI8!5P*k!Pjs!6ySamH*7$C_Pr9XHu$qF5nGe!I<8DI_AAA;dHm7VrMe+^{qOs6fb2 zCHzn=2L(*GTt9!9ru*rWovv$F8+&pocRfYTZg^g@Z?e5+-EL}sp7Z#AK>4AZD4+F1 zMRG+51PjOaBO?(fsi|{S-JMfL)PN4dB4R!BT2dE&ec@9L+hH(*pyFM2W@oSb7Xe(?_^MS4DW1EcOdt=2)yZn zH3ITka%kFIp-zi32Bj&vWc#E^QgSGc70>pZ%4Qr36erV#Qa*)erIT9q@Ewmmw=-F5 ztV2f^!RoM?Xac0(Pnkwlh*FsDl`5E2DYEj;>i}E&YEX#)P1@-VpsX=xj%SimG8~$m zSJ3AYN^P6t85~by6jM)P758Ewt<{4amNYr@*rbLyinLiRI@(5c+Gv9cj6dfxS2^x0 zVU;8#k5eKwTBjicR@PfpZ!5Exl&h_2T{g+(_-v6^o6-TNYR6FH=!YW*4~;XlC>N9m zrAw3YIsO`R3!2bjt~B>U^7Q0Rm_8sKvq)M^Hp|*?VLdu`&Qv{H zny!=6l%f{k(!}PK2JX}$wA5!$xiI^-TC>)RjcagJF{r0B7kj}&H&@S^fiKSL8+f+Mvz^cH*7`;?m%f19Uf z?HpQkq#2o`4^g0&u{iJMhq5u0?=irH+@^-&?Z<}V?Tuj~id(v4-I%{Z%K1fhVfu#V zS+NH-ISW)vyOlF?SfrxApke0n=Y_i6Nf|my4%OM~4tc$@jA6~+Vs-znOaIDMt|E$O z(&aZmZ3PH~tlcjH zn|4bQko$AgLiG3k%oeBue7Ka$+oF7RUAgmo>L1o&Ll-NYp?|_e`jMlR9vOq?yx6Ou z_7acb#lmtYa5dG+^gm}ByKEDz7krknIL^B+P7Xk~m64|B%tebXcIBhZnOT9a{rF9S z9^}_QjFBQtd;|h&WQ~$0OzE)>Ym{r5l%GD)Ki}`V%6V5G3o<=s70g2_=U>&fspl8&eM8mUc}iR(1&0b{Ij#6L5S0kC``Om-#ndIomQe zk5va<@wr!@b)c*Q1zy&4GfK={l1zL&LlMR1d0{`eF+Qin7{t)Kc&CINL#+aA&r;F! zdIpX>(PH-g+~^PaF%<6zfs$5kh(qxRfi*M&%5*;5HHO2y=<>`{-cnU9D{b3mdH(n>9eF!q`6t4-Bz2Ro?j2@I; z?%*rVj~hyAbA=OqAHs2>>-8E5me4J3)cJ=NNM8sg@AHyx```!qDwOl^X}!(Se4V4< zJ%vGx2qPT|_FC8QqZ}frEu3r_uG>f2gM4A&8ROcieFwc@!|272A`VD<`HKKr48YVh znyZ0t?1l*>!-SImvA=xi2=j>|wa|a7!SxOU-FaAZp=-~?y_PKqktCVgg~Fe@rV+#l zz(rmjyGGSOM2T9XIxt6GnIpgvQMm4gn-3%zqS;1lsVt?tNHJct8m^R#Rtv?5ZrYd6 z2U7iENlYJwEEIs3OYD(}(NgBj!sPunwO@CSFx`9xD^muZU9l+Bg0uP17dcob{{Ug3 z)euPsBb%cChn=Xgk~Amrj~&m?h$8`Jl0baUobcavzVqwN&`SYy-F@n?ZaJaKNJP1o zf4S4sZMa;7TV50zP|~45Vg3 zMxr^)bb&2J+SMglCp^N|8u_z9)Mpiy$NGp`L|UXAF(qVj&1dEYq_b{Oy$bKdb5wNRWIZu&thQf}4)Md3u}1i+Ojq zPPn`f`$PD=Q2Ry!{tT68Gd4gCz0S7W6|f6_o#{)X4;jXlFNX{&b12XjEoJFAljRf( zu8_fTdXtz%l?5ddxGJwRQI!Ptyen*_(&Q7-i8vCtY*3o6#Z{5zIyB4ZkguLjLY4iK zyfjs~w6SoNAxM+@q0B5k9nFat@=%y_HYIUrqAMlzrJhn@{@IhJ%Yt^I^DZecuF4(P z$C3OX;~$Zp5lwu}=9E$bJ?hFXLO6)#wYDA{ZRZ)8g#{*wA1FSL@rin~f$y+Y%2hfG z@Jx#nFX;~yT#1QW8(A4c{RuxrInV&Js0F&| zUUD*52<0&yzv15#S%;@OdhwhjGpE@bWMvc;ZRIlRE0qo5AFe{WYjcFQ4Bk1vx}Lp7 zbc#z?V?i))d>ia4wGG-Z9SFX?M~0WmRl%Yy;gfXh-QQUua5ydZwaFpY0QaW>kkZsN z(74t=XYCa`WeyLk?V7wp9LCrq0B~c*-jOFJo%UTOkA`yaZN{6UW{kcOT#T9x8lyU& zlDlUie{dI^bLvwBZ*ruoJcOo9Kyxo=P?&^d{$@QuGB`XxI6k)4fKQ1i<Ajry$H{+@2{HAnaD*1`13 z{T7=DYxTQ%`-|0m;^3BWdBvT;N~6BTf$2vOPS|$3qkm$((Z3kKL+y;S$6idjgVR7c zf7-gD&YyO0KojH8b7%uW8B}SQPJ92hP~5Mn=YY?POO&bT*lll%ZVaMv^_N)q@6)n&d_SYFqNP`UlXjN;D_@2UdZ^^HvpbaAYwob-}b30(?w0l1+uWn2O5 zHkz1=7CGI5zpS2ICRyXhcy|@u(e$C1eM;tVt9Qb8tsS$b+p6-8rh4nn#9<6lZTMp~ zwO}bII=hfOvNL$sr@r0v-Su^7pKoV$8e?jas{2rR4?Hd}mX150{$ZvZl(ijkc(^s- z@xl$%lGc4YFU+U1@BEMSv@aCS&69VCFTNg;ms51Zd|S3jiTPo{N#)bZ-EN5PdJL)1 z1-191_%T0d6vZ0<9UeIh9`$QYu#8WZXh`H`*OMw240}~J5)AWx^v8N%b+{)5oeEyF{^*-Kv{|CsHY7PQ$IS4vMX9G!9ClI}8*J&!|lf2m(SgVfgt}97aMFK9L zl19Zg%nIFjXnZj^Zh5*|;%J&iC(%~aUQE9G}bXQLLD|*9qQ(+$3_2{+W=9zHT>=A-4rN>hfxp&dHcm)XVWE*&$q^4~6Ljq_8JRbTb#DvF?A%KMWhhTOSzGC`xqtgwa@ zuh_J&$7|R8taDU#&|~z-Nj*VsIssyBUI5=VXV9@bGkwrHd(Yc8O!uAV4@~asIHREFsNlSj1fFAiP)j}VWX0DtbuVJT zQR`*`k{R>QS>DMx=8Vc+E{vg9D--Aq97IM-$I&n|hcHq`?jeQhY(z!lYviG4JYs1O zBgdRO*uh+2QEiDq0*>_Jf50N>)gKcefEU9^Vi>_Mr*WgRj8JnPwS`(~=<8#cgMRY~ zveP#S{`dbyD1~J+r2-2H0O0g@T9NwyIG^~B_Q8w>w72q63g1r7SWd=fJUqHSBCdk& z1U$r?|B%pwAP~U-u|HtSCb1ABeTIY?DSAIRrTY4NZEIloYcX$>NTPXlyDdVM&6bOm znpKz0)yn#n?M6%2mTMc;2j5N)QwA}xwD+ekmhVH)+}rF2*UA0+7+trp@W{Re+EIAK zru4okBb!pT`F%%+e-^Zd4JF%Rd&cYx%y#-j5s)oZ$DJe76iMW;waWCK1OuDX+bOro z^ocJZ8?=W<0;MGOBPiNY~5SHRY!+1N|iRVTJl4PiX$KNhoe7VRmfbGVM|mh0C*-# zWx4CTVuLCQ3#}%tWyZKmW&5;9+O1(u)TD3?<++YB!3yIqg?+!}&wRW<*RW^luL7L) z;jyC%^Zg{LEo;{>%D$v+t>OqO+VWkDOQ8fxrx0_OIZu-!ndYlC6`QYZtK;Hv{svBA zP6h<~>7QeFEVd0C!f|Ccdn89glIc~~N+3iVGz8ni&EZ#PG&U|}hn6V8LM;?7&;os+oGE<&2`N_p#`J`&Ve2uu_`D(K)xh%a2L5&nk8trX2kN)a!CwxNZY3C0reJv$HTCo~RsmcmhYHN4!-gOA({=_+ zM-r>6cN%M(4VF{iCtb8A)lyahmK>uV*%YfLSJjePlYt~$Y&*rA=B!J-@t1Y_=@==Evf+V(4}&-uso7MJHQx7n zjtf(s00IR{k)zpSq|QGbG+45{QHlXoLR9*Vo8OFsuA7s^!X{=gZ~!ul&n0ki92@O{(QlaHj&r}TsUd`yi2pU0 zdSqM*jOZ zajgj|nF=Zxum&Y?b!NWPoFQlQ9p5#2?Pg&zlo~qfa!YG9a4sls7-1ieg|btn)6v-5 z7yz8!A+NF+57MbCi-F7_Hk>$HQ(%9?>s0q1u@qr}ipD4)``DbC- z`3brEB*UWXTA|m2iaW$@FYL#OmeJ%wZ&7TSXFqWXHMsgw|7EQ23U)h4igI7bcwT(T z$mm_*iOYK1tY3Df192jic{pZNi1^2yi&7$ENML3Px%(C*PqX_E$)f1p556|}T14WJ z4tsc}P@oAhmqtoYx+0q{!1@ke864)*ViaZ%e-EaQc;CD^-d6RzZl^>MR)D9;j=`5u`>w0&K>Y*E{3J83PN7qbH}j$n8OZ%=b)WwS04TVxh< zL)sq;!@PEkfQwHze31|0V0#Q!U;b5hvCo8f-0EoI_CqW!l=T8|;F>qBp@cs?sW&Gk zrC(8-m#f2R!)YvcC=OAgVrN+67PF>Nm_7;5(3okQNAtrq`>X;{qT~JnffOA+hy9`m zQ~hq{j|g81e?Jin| zY&`3k7gm-7+!`CZMs_fugM|W3Q@{ynbOd;S-t$%cAP5Nf;3wlql&rbu6lAcGUo7_F zxz+wZ#@;!|lQ3AZ=YumPM+qQe!w(ag|Oxw1NY1_6j+b8b1yL(RT-FqXd{;jCU z%Bt_H%zWPm59P&XpApqxlb6Wyp0VE%XQ=V-YEbBO7N_tBTSt8NfzTb2{+BU(K{(qT zRN5*05S-_9afPqfn9Z!Qrz|R?o}6#+JRg0Yp?`kN15Myxh$1Dy;pK$g^ul~$^6WC4 zJ21?6#RDtiT9ymP8kB>Bmf4Rgp`wDFueF|=?1gF1C(wy2FfFz}!Gza=_ zi8e)?dkVQXBRAOtTV-|W-8t`fq>XEla&3}9kY;Gr!h)DKA)YeD4(_2v5WM)8p)W%t z##k3^G@bFB1Pk7wu=362W4L0{A$m%FvHjK)Ks8%>jdbC%WA@ouoC~4ZbfRlyJhhPE zjw7UcmFyo|>tx2%_-jb$(C1sjmOsjRQ3ZO~iV(b81ZfS};x?9|GH zWJCBW-AtJpTE1tNU)YI}D?uzGyMYWls@HP17&0Me)ow>^BXu>FdFAbDmqCZjfMy)W za(ELr9=W$|dmA)hG5q3%E-s@S#X&b0El#}?!g&fZQD`NaA_PPEi3P~VFL4DX@?8SGydrQsONn~{>5_Vq5b;VTgiAu#C zm;Ve9f7{j)^JDEWf3|9fH2F$dNxiMNEDh{FngEy94G9wED#yiwn~WfZk3l z_%!k!3NZ*=gvo!N;TF2KK%Jv+_eQ_AO~M+%E|-Pl6%K{OQ?F4|W@P@ZAPxajW-N02 zV+j<^s~H~EYy-?&7|%O-Z!7V;Cf^yiJ1E`xzPc!#qK3{pjzTM5Q7WyBFPdy~S>m1qnW${sn)1vR(oc$Q>QF(71 zY@UV+)((pKBBW5v5=P95V%QSFt$($nzBifL5;LVUn?9V!E(lc*xOj1oRf!Xhr4t5D zZBEl0rOa|riib~3p*UAW>=8~J!!S!|XQ&4KHGT1i=pp^4t-_12`9#N!01VL8%2wuw z(6zm!>FPdwnmH$?l7EORC4oD+?ED6k+a2CVW!=_s1@X@H3sQ9un6}H=l6jC9TB+n`qI6Wl*!8Bb9(tM6n8dAN?ff_2rJk9#xN3Q0AUZC$>2@H&=p9-01qqV z%n2bO4cz~6_4c9wJ~wqc@poHMy!{~{g^B{QpQ^x3X9jzOT;8OJldS2yFO$eX)Ig+nFv((MP))@A=r{yVL1M z-pM0XN;6W26;e%<6IUyFDF(y1bi8CCC|uktkOkG@VTkmx!1^8k3SDUkfo~As;u{7q zVD%>VguniyKzqTE@1g^560Uqw9cY#p5*vYakJ3*M8!YB9t=pYv+N~R(e=$>3dOgSm zC?l$72X@D%p=6g1g#lP~(!-PxBj}aM)b1JdgEQFRmFJNp6smAt*AWm(mBXVPWI7BA^(d}fw zE*zMaeRVp6D`!!&;j)5sp|&a2Qyn;&FP+8uP8kDM_XUTCC<@^PgK#R(LjmyXlCJYlSu^`cg>gVX?V8H@|e_B!q_Lx zD47SN_Nf}>RB0-bNNPS96fN*8C?;A%Mh7I(iM`8<-Trb)@oBEJjDm@kzJHE0nK)EH zDBH6aaktr)sSM3Q+rt=HDRAsp(`RYpH96(u7Bv; zW&e-l56BQ%wQZ~`v#LjvGKxe0M=xBOH=Z$GyvL0}shwO<^Ea;TO5Ev-&wKE=b}06j za~Gegjb8$DmtRv&IK2<`xQcjvGxf(<;il}`#CJ(XhR8qrvJJv{Lim_8zcw1&xK9Ey z#vKbxezhNQEEqYB&zaT2dj&$g7@r0IWg~p8vbn$?hpDwW8C->XZFzk}y`K4l3Hs~8 zk>I5nQX51&>haw~p277Y)aiqU4i<0A#@RC`>}ZWw)z&gz!MBkhodZ2|)amshjph5z zJ*Q(`04hD*33dL1PSbGsYu##B+)V_jOB>5C+Kqz-tQVq^HeQ5aLNY7<@>?^gd6a3w7<3>X}-}+YlVc4AY`lqJPOK+v(*$ulK z`nx3CQ!gj%N&p^nSV!_%1)E}+RFZuuK9-5j40_dg1=L4G%QP=a$<7fifESf?=L~m| zwvSX&*V=nVz7k&HctHFD%f!J_6|Yb&mBNAzV}EO^#i`y=_9N<%mbU?ye6Mm|F=8s} zW8#8HfV%ftt#tmFavtVE3Z`h!0z+krLp07&iKVhWve8jW1fVtwH)YZIXNI;-?X9Lw z$4ig*cNZ~%N)IK0hCfjpjR4x$MEnrV1kZlceT}DtmqOOdBx~4tB3@&oSwW1Z$iKiu z@r_-^f6&Pu`D_O=c|P?h9%p* zpoaB8ObIOu@rW!DTT+8;#JuDLGqE@+U@`R3B#YBI`j9U}3GFq3$UT%hslNrFqEW3&@=y=IBtMz_kXX`TWt zB&u;czZC6(ig%A0S)Kr}+JPh5#3HHSo=_5#Dy<*cjKr`UG+NYHs$E`nsygYR8_B_L zM-!YMnr2#Yd||ENPUttvBhMUzSODAm*=eWQR+b3Q{Ecw$#`U|ve{I_3{KKI9^#f8M z`T;30{+|`uel#;i|Mwtls>;rP%)fnKuQ%7I`$NCtA{*g?R}3hk!ihsuM7vNRAbS?k za2zE4(d(Fz{fB4Zdnbe%D2nR$63?9HQxP13bTY`-dh(ce^D*PGVbI(A1+=?g82XSg z(I>1PmILPnyXa_|!Ng?KKa?VSosq$^$Beb?UZ-*bmrO2T+g2n!>Cjm;U)?#Jx>D;& zV=KWQP$^HxR3cV4$OBhBR?s@+bIwW-DL6C<*Y3-JwRo}Aj&iMN5g-NDwP~;F)pV>@ z8da!#>ht8rfWoX0<=sW24cEw5fN4VD<%E@}+${~h4zeAI-SBp{4bh~|!|yOc0vEB6 zG@Z(cA{1+sLG;|!ny2#;l;xwU$Ly3Y8|fL18kv?pnAxdcRV@kFAxVfb_M|wZHL;M+ zOI~G%V6rbp{9=bNt#j%h;=_H=tW)YE8Ejjaixb>tnMxe3eA#yz@QL7;YPd7#gJeQF4J+C6oUHJ^$T;4x+N*sj=s8Zq+`;a?9nwo!3OcHW2 ze=g*i(Kv;aRQVPIhEwT+3Et;*eNSd~gz^pi1%ow6B7Qo3ii~%a4)o-jX*#D6OtX}& zT!JeNmOvhaMt21&PM+Q<^_JEnM~z_U`;Fl8fOO*T-u_`pYnTb)E95UEWrHBvu+fTIc^Wjl1#> zw%+VNhq_ZWzC3iy@c;3S%h_jb*H>Rmt~V>LYA!a}U=72!GD$AD!@AP7oat8JI3#bd zlge4^x1bvpAOHiq6;Nf537Wo!;p!}Q!~q9&$sXeU1D>5Ph76e7;g#T%n7?^x_pnMU zMQvR?@$a2|IeO#WY4vg0D{edie!aux;C8Hy`q-@7Q$)9R>cvIem67#Zlbh7owYb3s6>&dk=TX z6t#B#k=p*47EGU2Y!dKga)7DFCg`#9&MkIwtncvDu{6jChFqaBK`o_2g_DZx1?CRU zkL~8tqJ!8-mtZ0?OxS_Ak>Br*2`U8Kh!yG?+C@5g7&@?`KqYO8_EAriJ_kbK6XHca zA~enk1yUhv>*sg#^-q+Ty3k2~?XxBePn2bsBwR3&K@={sQ)$(H;WtjP3@E3!FV z+@O#5_#j|LC_O+sP5p{YVM@p+;9y4fEmzX8XXl1t>5$bqL`sm*dW-_6W zFa&r>+fxex`F+(tHVH7v2h?{7F!3cnssPW?ExgH2K^?2yl`xr}I+2R7&s2kXL@uIC zfoO-pC4a=e{^Fko8aWF|E3#)4U@|g|c`apEOBSEu6*64#dF!riLzO;XvklPRxA_-P zvyZdV7#6vZd$_6e#q~_pBi**bZ38psoY8&TrBdZ{5 z3XjscS|U;ACwFAqSV1Sx9xKLlVSw}7T1)Lq+?ts~Y&#iakKR1>vI>yl_h!1#H8o90 zlXI2oy&)GDmAZA_&D!#&OLEp)vbQ9f^@xkImRD*HHH4L<6^d}9S(lq7wq;<8c5fFZ za@X=Or8Q1&$R0nH`fF=LKDIIF8B*Fi+lA(W;jUoAgzNaK? zgGmPT00w=WIxH;qRQZktp5fpG$9t}n7(rxM3ch@G@Ek^te69&?tk9P_J%e33 z9g*@CFZwUE@J{6(dQKU;wVbJr$(byLKyq>NtYMrII_qX^Nt72n>}%++mxDAO+{Hs{ z&9Wxe95HVI_OOqrsG9EFtxXrhu2#p_?khj3xZS)ubO2-G0!!ls=-XzB5OT~J z*F=T-NSF$MlyoEMquR<#08RJ0TTgxRS@pW7-f(za33!5CtEP&EvyeNUd{ImIWXZxj zMpd__s^%cl2l>fv+l*qX zVU+>*ojP1|M#xNi_LgRb#-cFzJZRJaebS3+`o5$@2vC~m{Ld`mCyPpM(!+AaOO}1tnkl|LKQM{a<*at-(7{^?}4Rtf*>v=KN_!*HZ zEu}uS+((VZq%;uT*a=?sZucnO+CH~70yWnK`}^)ds$DVeGxDUa81bwejRV%R9P&Rb zmLh?5bjH7$>`7Sd$gqcUOBC8}0dRL30Hwi*1cx$lDpdA+H`wRh#k%Bw-B```k7R3H zXYDg9^}n(LXJTPByVa~zw+m-SlcRs*+o_(4yXoM^#w9b;cA7b_9ja;1CU2}L1#|oc z+ZLq(k1)Do)Z3@$#!A9T9`0MRxYfGf7mW@vqx|rORwK6I;g`6@f4m5!Xar|eK>4<} zyRhW9MU~5Ad%=s;EU}1mm1;PXJXA$C?VeidOzD4#==o)1rR&i5fnr#7hSD*`r*e>D zM_hq*wRS4djc!E_Wen?OY%q$UG>h%9dQ~i1lPN+f;O^Q&<>XfRi^5=%>jm%c`;6hA zZZpNT>Lmc(Y;oEfcc>a9BF+9#!1un5Q}-{NZFe_7cwSg#&M)J95f%ro&ZUa!s9Jfh zlPnR~E7k>rXg^>Lmc=3zp_-aA(~*Np72X<8;6E}e*MrpB0WwnG_)5LyRsVojcH>>2 z1e9$2CI8%7SjQq(tp1Z``o?|UyBXUhI4ULhDxLwK`n z@iqfqL9dJRG3#EVp`;U%ILn(|RO@?cIaob2VSpJn3LgDOt4(J{NYgsMpwypS>zm)@ z^$G5I!&u0g!d+pgv#5VvkP(PmI8TSJ3JYl+f{H&7sw2iWAUvpF58_pi5+9AjORj!^ ztrV?Nq%YpN9V1%Kz!PoSGZkq zlDIil&>4;R==T}}hdu4+Zk1&hAtW^xM>?)Uwc+J}(3JLwc_FCHvP+Fprv(*rrDx38 z@4@8Q7;e7)F)OO_Loc!Pws?d#34#Z)TPOQBYF{7$C-txYHlh#OgEFf3_Y(siDLWmxD&H zI+}DAN^FyY1SUn0d0#<4mG*6^BVb4-XQr+%eH_eBuD*`Yf5p>bvS`xxk3=z5A^gQ( z!miXU!A6`lBWc1ZtvCPO4B9lR#4HdZ#Kz&1bS| z^C|uh;?e`_lE|N^Ls~}co*UP_wC8Ax5iUsZgSU3qD zVj~sTs_E(%A=}rQ{E-n=`L#CGv%o<7=`M%Jw1 zbTD-F@g7)cIUct{i@0c=x{;0zmDUB7j$6u^zYk2Y8tDDlSRF63Fvg$Z95ZOxb}~P% zzrSPN|C>Z<&y)b>Kdg(ceonyu;=k;FJ|=Oa{}3krr%6v};;j6SWzk44uq`+;Qn%M_ z0c2Yn;#@RzNJ+i5G3blg7OPBJ%NZexer)iM9RPN?wJPtDoV!KR*R(IsPEYrZJ}{JS z+i52!DJS(}!yJ8B$Z_{JN{2t*g{`q!-bKzWFN|sfhWWTo>Oi#$&F47p(%J}>-ypd@ z{%&k=>ZYWT8D3=hk#yAnDcrDibg|F8V??Q1Q}laPy!KnrDbsS*D6 zowePYkdUeXUQ*q^NC<&*eg14ZpA3$`aif+R^}(n;Rs}k_<&K;PTsDQ_q~@y}a5>Na zEw=sG{#pt@>0kE4xg`JJ#8$@aKjRv!GHJgkh{pHhadg>HLT87nT~LBHR=m`ub(>J2 zRuU0G50Ywl(w59TTpvuB`igBh3`3kilqzUE7zZxH59vh7WR(>bPCL8V&VMrH_qH*s zU;vcSRx{X_6y}uk*Gfy>Nn8R&#wsWEgX@e|vg&tnNJG>EwK_Ih{V=26M!h@TV*RFF zBfSrfBfE$Z%AHK!<8y!%!bxiN(Y^DkluG{VT+xu+p!VAIjpL^+RS zb(+~812U-ssKuP+0`J&*LTOTNKiMA@*Gj=c$T=Aw!_s>Rs++SCB%BcWx%Z&5Cvw)V z0VVF~r@0Ivj8ko8HETH{Oq;AGmi19-!h)`g$V>t(mf!`Tv-7N>$nTL9b$cn|qwCo0V!>iXq(sEzqYt{aOV(2$drv zLr0}1^KR8Et26D4-k?+1gS`dXHZhhdioA=0H5gMV`eq@=OF`*gee2Eq_xQDQ>HGcm zO$vl721-GZbUIw3X@8c%TtH08?iEOjzX)Njh!hBp-x9Y02QA==pU(o9zEx-MqxQa8 zwiUy-qfaNZ0}_mLhcjsDHM!JohmV#TZu(Rr?QeWhWarm zLbv^h12-wI&knT`p#iV6YDx-)$X?uPkhonx#-Pzn~9OcYGcOii4SQ+Fx34DF47RUoqvkF#aQ+uvEe}S^g>&2$4sj zqAILX3J_?LDAAxGX-l|+a4`L32~&(e9+FLk0Ry2&1HiQF)Qfgx9!&Czxn99Bb&#j& z8|*Q9k7&=U+sK_wzl%SG8Q3yZ*ruu?QKzCLrlOJ%lO=DJBpX1WJ#sSuZNwK_LyTI% zMcz!&G>rbB|20>;-3EaNe{z)NXJumg-{k6lu28a8F0N+w|Fg{Er}&?ydWnm#m$bID zv}pYwK$8VTP#8iVp7h?%;^X9RoUj6Y@hG#9not;xjZ@b%^gf*iH9%zAAZmdfg28i5 zIfvR#b@BW74$$5G!ntwE4tS~*Pj|M5yqcjmE#r=Iw}UEaRC!i|A%9yr`9;0R=E!2c zH6I1K=Gc!iP%Z9?mrm*r`b7UWkT>OzEVRKMIlCC9qHr?+WSSEfa}FMPHoh7+NReO= z#9pANk)^3RtATFN!L8%`csr?YyU+hyM3A+Aax?!%h(3~yTv1T?wcp7kv`MNv< z72{U+^>^mAI494ekxbP1QDpnWEAJu4W!vN7ecB)ZbgU3f2(Fd%ba(~jI>eC!MBsR^ ztBoj2Y@Sw(G4cqir@vKi>>$tbT80X$Dix}OiEyCubVb;c=smnhE3uAvFEK<;Sdzo0 z#kdlOSlhD*kBUo#Nv6GdA62gT1d89U*3DwD#kFyWXCY93F&YAQfu7h?g~RQG-H61E z;JEAU5QDf*an0lc7JO?-J=a;OkpMui-=wI7ZX#3f%JhN(`pn=RJJ(&9UKQ3-{o8$* zn{3Q$aj6khJb z7LwQCoOG1a3N@G6bW^&&MswvK4OwA_?M}wXsMNU^6mL2s?l58^chjM}$Qb^|$+jPx zxXvFN8qJZHSD}G;X8(a%W;8VHvhGf1bH>T~apuR^5IA(-uZ{-jo0{eHHW;nDLr4wo z^uCQ!ajYxTZN?Ow;=-2{GD;HiN~*tQ%tPLqZnV)NnFh8_C#>y4R~!;d)(&evFUCoP z8P{o9rY)6&)aKkfyDA^<8nKhzx?Hw>-EsL+$AeRbP?(0`bns5)K zJFo-j{vV)49j}W>NZ`lMx+a^DUI9oVn-rez@he}O;R~6zyI_x$@qRI&qHU0Rfuc?^ zx4cRM;Ywt{9%Q%U_|Opf(L8&5-+SIbWQ&xyX5XPHUx-_^yE~E0lM??*eoX7i8YL1I zKqa8qv>=I@E|5S{e#s7=mMT3iVxh3cIZ1cqm0XO$D!Ve)iZ;)}zIn(Dt68;$3H)=K` z{FbZd_O*rA$SHnyadf|AiUq+;C0ml;@+{_OP?qZ&B7So|{dHn_Xf}G(>C`IAKlB=3 z-g*{V;4|}d*u=N%3dR|7{`8F3HAZIRa_ES{i*PX*CT9g5;gY&$0Z04{xZ&|OX31)n z82g|tkgM!vuPoXrS_3R9Ke#83DdcTuid#b@!1J5<@MCHygXFHSbYxk+K}pS1Z+{luaXeKNW4A8^y#o_TXrKv zuxhbC`*s&<;IrPW%a!mj(8x4s=;w6S{l&`7d7f(Ct?K?eH&d6Frj5{NH}O+GJU895 zFP=Lt_n#gLyx>6SuMC)*5u~PgXCQ&3IgX%lN%I#Vo!=&`0wYwMX`@c`-Z3YmVA#>< zv`#_@@`pR6_K!x`vlCti(DK!NH{+f~uu+a7L6mo%4MEAeb7 z`T;+iDoR7Q5iOX!VWLL#Y9}E;V;yvF?Jl0b zR@JU9M@&CA_6dN~pr4ScO>o2;d{*7D5Ej#@6qn+_7*lqD9EP2$O|{>Q_SV_I+OXOM zjdw-r;sk(YSe@F1;%Y(~_Bu~?Kn+b9cczgjS$p#5CW2u#JKXGb<8fb|h+W=9F#eHXenW9E&kcWG8}qwE|LaPL z|5^oi>XIFq)T_hcU@E0C?OK3W>WU)N=)A+(&o`_|z2n~Y;dA(e?(GQ*eFIFogAQ&{ z9mvtI{^EFu*Lk&9IfZXuX@A=G_>$u|HYE=j~J(>CC8#WZu3C`?2HOes#fI z;G^-Z4SE51_JVZky#jp;kGNw8L?&nuM*V?@6lvb`Bte58Mq0|Eid9P#VR^LEz?FO)a%vR~p)Cv*+I#}}7lN83 z@U$}OU6dA2j}5$EpU-7vpb^Ot5Y#CpAmOS`3Rer?(xMuov0%Wc)sIGPU5P=jIaTF4 zSK)xbV)4f9%#0kT%J|WAX%EK+o|Gu+=LwoPf&)fAMmw7Efs7%4DkkP2A zxB%q6Cff2ecqGZvXh{eXSm8)h+9*bFe36JSO?H@-nf`TY}ITw;$ z3{twbsNmQ#d`lU(Sp%18PV~SXqnD8!o0p-`xM(!k6Y;U1?T)|M8u>u%Gjkj6h}AC zZ4Bt@+C}5r`l8^oS_|{FRgnXnw@~lPNrb%!%V?;NWFN#Kl_n_Xi@vm?INuiTka4lDgzlsc zm`|+rPJjSpVi*x;lO@K|BK`uj=`1!-`b#Ihu-20i;i|T@h_gE=BYCMCqSV-jz+wIh zx1%?xX3zm$Zbe0}Ki6T}Kv6B?gFNs@!V; zTIXkms8H+QK+upRsxMR08j>@Pn{WZDS&sF~C=q|ycensUkSK+!Vc&!dVzZsshGb|F zR*C5*zn>>pjY2-V1R1fcWrh~Xk8e?;x2AMu*2tU7B14hE6!Lk-hKl|~IxfBk?kPo@ zma8Tc9Yds>MrtziOY)pQ;hVfy@Q+>ZGx)pE;>XHJwwj=HkR)i4|1!uwlc7nTM_w z+%LfJ1X@+y67h=m*E?`iZ-RTM#7!s3s$!5`z4$1Gm?hkEBQMFr*w9YqE74 zmo)Xa;goh~bHS$(*p!C8d3C)yv6C7>)n6#~FdM@y-I~&X1my!9h){pS5UTINuT~7; z3)&5nQu9akmLX+S^k9#dQS<SvSf%BXV?}53eU_Y9w z>J`Pn&%Z2JDdqtJ2luT_4SkqQlBsH?3e#g9w_5Se%vWq!!%2V~pch?2I4O4(wp00v z!?TYh7pv8R_lrY~6D&aW&W&?*a^ZJF@*O;SKs==C5BjQLU&vQwq*c{7JJb`hwdxhp zS7TVDO+*~T3vowdPvli|7;%hvm(jOanCCMo2BhaQ(BGXFjfBVi=}T%DG4r{A7CKuu z)yg+y!;EZB;a26G5Mrs8`QGA_vwHvJG751Ylll|)JDRax;1|IafBw5Nxn6OU0W#Fq z!wPkW*RzGc?_m7w+w~PM&p;)CTa0PY?nS!)EFwDfH~7EG{hiyJ!{77jwa5o|!tb4u zBLTl(6?g@e3J4{o@z&HYI6FhQD!t-U;m6Q@Fa(z%hMFA^Q|xWL*YCXdJ40bJOgl7S zTGgj0ALJ7f!$IhD`5@QVg_X{K9K2K;F7`a6Cq%sml*+6R43J^It_2$B$_Wn*M!Te06oPHA&&`9ucEjL_6h*k`iud z6fwlWzx;aECOX-h0ri{t-YIqSX37PZN|!nvvjf`>$JQkxz2y9S z$4CsEMv`d`Dh%_l+}l@ULVx$f;F@0+pcLm_7|4_se5nuKX@%*(mq<>ikf!mkTPv?+ zT@tTpL{Or*`O`MBZ)TAhD6LOf`8WJYgd2a4EUZi4nS(zeFQ)qwi{||5Q*f*=@?i~D z(RNtIrPhnckhyA*e8tMYh^e$N3VP?C9x^djSn@N8kC`p7R6 zU0{phc{yQbOm*nrW+m#5$VWlDqBSN4sT5g1^6cPTOH@>k#gD zN#4Iqu)wDo2?lPV91n^M2a0cPa59aW*Hju#5D*eFbvCt>sEfiqTtn>kW8V6P#? zs4+uT4zu?ZKFHEm0JX#bBtR#7PeK6%eiSsJT*IQuaAbLX(g8O+2BkVmS_ndMWQ=Z!`sUGKoo7iH)M)fmFh+`XxVjGCO8b912Fi*J5~*{QOJyo$Cp9Y8sa+;s28=71Td7(lyD`PnAB>gkIb==4 zRid5kPSiR!`n|O1TL}4754S;vc?z3|han>Qnz~RYU?wvOvyce&90%wtn8VYkKO06~ zBdtbMcmv`I#A+sWUA-tV@B|@>Sf@&-&cDPffm5tRnC+P$_9699u#_!C-}G47zqThO`c%dSYG<`xpvrLptn!EjbGSIhgQtMI#RQydwF=^#;}6 z8gT~2_qD!Kb=<9J{=(e|rW8DzJ|95k1 z;tPy;5d8|@LuUKhz=>^uym+go6#6mj>nmqFv=i-fmtZ+65cTJ^=X69Ma_cqG6GH%F z_JDF9%AcCppMvYQE+sf$W^@m8LGx2tJI+9+>h5L%=QBNJ=$~Zze(M7KYi^SklvR11 zlurmrH+{|mFpdCHxcl z4lK)_)p{c3Q6JYW9IuR)MPL)~^8kO{APNAux0tyP*dZcdz@_n(G*nD; zl6Tsph(THjgud*Nvq4drGAFK7(&!E&rU6~L;1wm$+BIkyoQaOYz{V}*-q^B9B+f>x z8ooS>FdLo;t|!_ZI4*+h(Rp|pFrIUvcsqNota4Pze4@`?6cyt9Yo|I+(2*#Xe#){z zfH8zDrrNEa5`6TqR-NjSW!EglciAA(kMZ0zu*sgPC+;?}-+O^@rv;CT!?`urr%)BC zZrv}|e+cu_;o6?*kE7^A#IMEl95v)%q0b(MbZ<9YE`Sur<$;REH0mt6Qg}C?3C|k`Y9&g+cH_EF}8pt;q{cP)=yr~^mtS!l= zS7kNn%0ghq{7`qG3Bw?c(cV~O7z0km$aoAGA{Cktlu<{HS(?Bu!(1f~F2qzb!M`=3 zosdIfi=f#f)f~}dTO*)sk?9<3Ekh;5WINNPO5TXh68shrT=vL35w|I?CCf+b>c9g8 zza`vw(fa~O{+Y;pA@MWY-nbT5x}+s(QwfDJ$G!;5=$)|Eu2y7%SSu3ZD%PT)VU9hl z#avAIiDNTrF@TPd`I&afp}1O(Olt@O;_v;q6x5$q{T>e1T-Eo+#|5_eRsSs=+ zM7*^_#&FacT_dy*k!H<`|aMYa%U*S|A9^7j<)e> zJiX{I8Z@;<0JlHa@_Yg*VQk(ZbpdC|l66L`a6!aABY1#e?~}~B2A1N5mlyIMVBHFrX?$8;DV-M919?E+PZ z^4RmbBe*Q*^%3+1a)^xI{lSpqA?NqC?yIN{S#ZkYjX3SgT&+74e{+DDIf8vl7aGE6 z0`sIrd++yWp|%5bLfA%=j0k9pVfM8Y6$^Wm1%xOPn6b04DMVPd;JijgM5gKDf_n!A z#?W#(lZsXt#sM#bB(Ie1<-x)V=tt=RNU@}jQEB05&Idlb24T<~xL0>zEHO!{ z$|+%)DPh+COYayaBFaL2JP(HK^?9rt0l=osnk+~ zDf60uTm*lsEOH`wwxi6-WiLrQ*c7<9{6fAQa0@N2H2KzBS=xV^2|V0(5SIH~3MDH^w@>;xt@u+UEkr__ zkmQS;Dx0uoQqmOpI+l!q8)do7v7HYGOdHO5B87q1r{YZoiV~0LrN-x=)1OQ?8P8;V zvj$qNJ0HdlUTtO=?UuX<2HDclN^ESvTG5KEyRpM0jc(^S)wv0yN|!NU8Kg=Xzaew` zCr#P)Y!FWR9!8kA|?z$B;BGl zFU)9?wc1p0>{L`shlm3QtS};SFz8{xE{S^+U4Mfyn%Cq$ZZpD9aH0sa-+dQK{bZ=S zX71H)yuWlrDISSoA6L=BIj6c7=htD>Rzd~VfCc>UAnHk&;DM?t4EXYdoH#dS58zO4 zrQ3k*ojHl+59ms6rC7gXc>O_RTa{~aWe@C{dLqT6JdjGEZZX4AqoK^8JiihDYs2#$ zvc~!^ED(?s1`rVS|7U6ar=@3QV&y6#Ch;F#&i_Xo5v$?jn6ixiZ_9LNEo6E?dhB`t zhZdd&iHHe=*a`&-iwqH32nn!eDv*T8(RpEx8q{K4(W3oF-9}BcitP8F(&hqSFha{J za6&a6zqL`zuc}4ut0t3NZv4xe?VHJC(h?JvWS3d4AM@~8z7vmGkC#-I(R@(FK#rWY zmBePw=kK3_{_{yO+(0aHjJG3De4EwBZ?gDt zwVek;z;nl~A0~mv9;9-BViKYBJ*iY)!r^EVUeaM5nS%6vimt%%05SkC^)Lfgq0@0Q z6qTNr)FOWxk^o|yQq1|AYn*Pz!gT3~@11@)e0x%YX?N&BJ_oI?*53M3mxibYiApzB z8o|_L{IX2bSaCAF9M#cW$_AMU5)nnev}jET#O(0Y?GRh8A1AcNLw){L3> z>6Ig;{&Y2?C|pts>Ma(J-&y?6wW|4XGGC6NlXkDx@zF zRl{O`?EY*V39bLFKC?{n8hbWV?#yD&L>uI*_5GSzRjejKmU&ipHD&Q`Xf5;lrU2fk zRLwccZqZk;{uBJQrEP9f%_9^W;8#hRwu&}+s?46+Vw*p6KCQEpd|o@(`L@HNS@=?p ziat%|9iOMS+@vmJovF#5T0#7)!TYbH`^+_n7vEV0s17CQvcmZqx4rgu^%S41B7G}?IXz{Y74bh+5bx!4D=W4N8_-lf z@vW!~0l8$)AF%FhCM#S$h`2b#U$x8&--hjx24ae$baC)CRrWN?<)$_a%Dm(#s}*K* z!4dfTlO-Fn47k#mIE$y@Ct|)DHnIa;(|(@CV?ZVl@<9McItwzcapzxC<*$QgMidEL z5Alomv+*{t8q#8Tq|uO!JeJ9eniSItG8r;0+gDrbYcmG_FqMVVCe&KbJ8FHGeK!XGxJCV@g6-(1B(gpj47bt! z#1QcXJJw+<<;2uTtd$h1*r7e)ipayh<6-f$a+Rb>va^H|wIsQuCYc7Ir0FExXofq{ zuVBzMNdsHSXfoqWeLB>{-J&XXD`&2AY!uWgvxuGu^T$|}%o|B<3f?4~!+&v-VSss( z%U(5cS@kEF^9Kykt~R|glW143{(p0PLUsGm9U?T z3;XbZz&o&hg3%t(OtjpaiY7@?#VIQGw->hyAtk8 zF}#og4q@KZO&KOtTrHUhjv_1KU2kh$F0f#7h~@jTwA+s3$LtX#kOtRwr$&3v6B_swr$(C z?HMO4wr}=5_kQQ@xAs?cevGPFX;+0F9; z`6agJt&3xXRTe;dcy}F9h%i9WTp$%xi_PFv@p5=#fbLEi+KM5ZDX_{uok1BoYIdP+ zvSzPqJL2Akb1Xpg;~<)A*6K3#P?Ptombw*gNx*lH92HMAuFd(H)QD?;vCmP~8)O0Y z(2!j5jW!^JtRrUg_!QZpcC=$ zrNoJd8J%s0!&{KosY4snHK>BV*ambn>*j)MIqdNQSonefTPX)9M=(lZMI3Pl3KiK? zZX5O)sruA~)}8Sa1!*(?l3zkZ*MZ?Tr$ET#h;L@2jKNQN?AWzYx%m1GlfMqMdj+}( za>x$N-JqEYfHu%2^ZOVk!-I$AF=1A1bd1Q0d9hoZ$E1me;Uj~`e%aVlJlXRaPsa$z zmX38>nvsjEG*RtBvICYb{}Ao|t#}j;00O%(6$8#@n7l!ocaiOE$CroyjVDyNj&+@m z+wZMNs~o-W*Dvg>kV}qs^FnDzc`}X$gB+bFJ)~T0csrJQ1iCps!A^00hZarO!%v%2 zI)rPAN1Yj!mfeRvBMKV9@COCm_$Xvm$E6{2<@(V#Ozmuch&9)T-2Z z1(2UEj7(1h6{+#SwZ}NjPB)ev_31qRRKTnQ<0YxH&Qx()h?i!!-4DM z(>P1Q{;06OivDy-?Q!X!mwQ78>_-cQQ(z3;*XEJO?r#E{+2j`koE@%ZtcwPPvk z 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%0ABW3hg#p{L2whxr61_L81KOi81DQN@bSg?v@ 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%0AWq5{mbSGBSZ6H_i(^sRX8@J0K5Xo$ z>?o^LF4=g1>wy&&@l96~2g%`lCWP84qDf@BeuKK{hoFb(gY4*`f%Q5z>9F@O!5q%B z_d0%P^PIkNUhe+9w&DVg?Um|#LC^-5rSBz-WRBCl5Y85t|8eSJ!S0hn!=HK>*`uU& zJV)L^8UWLyfkIRP6V`$lI9Vj#VdGBt zd_&NEbNHhRZa^Q^-8M0*3%zFvpp_`6>R>gPh2C5>AnB+f|F<(OF;8a&!uTslrE12S zwVC~^%{qCzzIT=mnv{}XTpP;_GZhb3L$M?1AN=5wY|1H#^G6hmdR}@6JY_BN2=nHi zp{s(6NpwO`AKyBe)HzE!CX4ho4wYGPf(+y}p}QrGq0|Dc?hKmau)xVxnKiQWrn*~= zo>`N5uIGz7IFF`hawj+5et5!7Qsg1*drgr8`%Qt-oNby{Ye}g&CN!B0v2C(+!ljjV z=7c*D5!0h0s;JHijb(a($&67&q>;?TqOF`jTa$(7VTh);aAd)~bV@04Q`IJ&Tuu%O zKv3w(qsKfwRU=a0Dmlc>)Hw2iGN8}Ctj)7>TS}!()^D0;eaJMqcMe#ogEd!IfwlC- zK?V?@aHF*~zkt!P$10ZPLsG3enB{wy4#oB5)m745x<}MUIflt&cGr0V+yr&nOw|qA zd&UY)jkB>`7%W4qp@5w_yU$yFETqDImU7GEKl;E^Q={u07#~*(5jz243~LIR!=woM z9jrcn#C{Qb__%wjU5g;};Ho%tBz2TO^{LI%ExQ(Kkz@Xr} zpaj{fB@9evj7_G7{#Xlj#pF<)$&G7*l4#AoQ9N#i3S2f6F*c?79n${%RsvilHXJz# zkt=7Zi@-olMl=0yTc^zHg04W9OU_4n)_%+iQj|TgwPue7__(uYDCjHSAt$XGc1c9y-#c?0`oqse$0{d2iLuqbNg+hYN8 zWCy!2nL?m-=Bn3ReFYK3@k4Il5k1;Z&T($Y3Y+|eRMU(XU*|8Lay~RK#%0it>gTs|zeeuF5$R>^vjKfR zvF$T_Y=oFSbk$W$IXuN)R_q_`vsJwwD}rx;jD_C6l0yibpN)u;hmkzy@BO-#E*WP~ zMZN@hUy#lVz3_!S%Ku{P(n+lGoAwsZirvI&O}%MzgmKl66?ny?j;LZ3WPQYlIZ%t5 zKhD*FzuUO(;s25@E;-f))Z@Gh2F>gWwyEN;2Jq~*Z5_tG9r6xB$`7mdw>SY`baMNP z?RmeY%A+b1_(QbhYWm!v_V6CWjvay$ewQimYts-Ux|IcZxEmOhi|RZnx+U-Gje4TJ z0q593Gczg8q1Eb{3I+uQGF;nQnH>};Abts0m4rO0%sJfEfSv<0#g*~t@;Jr8+;T(MYUNi>Cy+eOM&M7qNqGlJeqExm9;9};9aZ0lpu6=WS29NBYDK5-o zF1tx;2vUlN&XOz7;h&$$;DZs4#0xN@$-?i;u;dqjd{?=}4#ABL$UDp6W_ZD}1S{=E zR1TvidTeM|!PRw$DFtfaqbHb)Ldme|U<5Mw{hSe2XqXxV!x~HLW3fq!l6IMH3`Obs za{37_QO_EXWDu9pKuhlWxb#+kFD*R)E#x#Wqe}=L(Ph%wfuXn8`Rc4rrcp{$rWM>? zaq`P2#p^qxk2k=peeVKJAI#_aOd|HlI7CTTA^fjdYtp?}G?r4wt=#F~&tfF3>dy}ZWq)YD{vAZvM zUEi*3E*q=Z(#^x|PZU&i_xDzfcGf$(b#|cjNVB}2U~RaP#Djhdgpzkb#Ahkdakor5 z?~Os{z$Uvu(Q!Oq?J*O^+r#bpO}PWtvZd62skoo+%-Khz^YFEBnL{ior3V=TjN_hb zQxvNRM;f_y*JY<0^05==qK#(TLBqtqqN7O3p@DUV$ogruUnR->Gu4X+RgTuE!LA01 zYS{4Q&;hi8eXyF=_U|u58{I4rQC7o;H-`>5>f7ptQTUJSO8#xMg`fLO9c8%i(n_Ao z!g`O*c;GhJ=bvVw0pA~tYfzI}3p8YpSH zwp_{Op27{H3VjH3L4QZ5o)I&iQ$zhHw2& z+1A-n*v8pf$yU+K*1_q2h`p7x|63Ig_aaIQb);T#8B(23o;5H98D2_3aX^iVr2;-a zkM(9g%=!(>rZ(Yi&pRa@eb1W#L0s6pt8Wx9e|O_jfggVT_*N}@_v=(QC@IT#V0qLdS9MEE>6;@f&0W1aZc2I}%Pn&5Rw9nLxdbHeqiPD%Gjgy* zUYAQ_8{Xwf5Mct~$^uNv4(g&^2#~DPf^oQM%@RV3nqwB!@*Ty>WW{Bv#7%cWTNd_y z6G-IB928>>WLD}6Xu|H#p%#oS7Z!(*IdG@*F{$(welV?)ifqRLq#3S3u>(61>fSCq zsqGyyc9zx4^dksofjNS|s4=08PD)g(L=XGJsmMEaLB=e|RB^fuTAc%_L0oQ6c=z|t zU%@p6u=2=XzkXzNG0YBiNz0Ia%Z~U)OPlOW8BSWkAD*xa$i|kvnreH^Vc{cm5T?gq zn=lKl9B-~29BVF2ReRJ(1uA-{(M`dU?A@MKN?3Q;S7QO`Ve>5cJHBB-Bqgo^Ltx>M z^dBq;!CRgW1NUrIGA0+VhF%4yujA|o1PID%>6v-b{@3@611`75lwbVW`)&VX_`kxR z|5jC`Wc%O#h5rsZ$x4!nn4)ms8VDLhEFh4RNB(qcY-h+QP-vSC_I`V6F;FflB=+x3 z8qvcE%QX!f#Q4dDz9JN$x?bbN$|v&n6YZr6@3`zov_$9X@_P(LRFcixjN6Ngy1t8y zy+4nWl7BFIr1qFhiqfPFU{Z_IQWq&9YAD)Lf&vt1Yb3n|BZ7$z+R}v}iisTF)FOn* zQ;?`A--6=cWahMEn2Lu`?+VW z!Dn}Mny3q@H;7|aTd{ow-%`ZoFa~t@zrfF}j2G7!m^SS&GHyIm7Rip;G_BUFAq9Mg z9fmCCs=#Y4maJNeC~C~tE<;Sm-~Hp=WDm$1*c1i`h*Z&SmamQECu0b^j5o~~Q3j4O z0b+53Q(-Jlk(=TA==-LIohR!*fq^NtwiNW%o%i8yOgr^TAgMqxQyea}45H=SBGCk5 z&p~2lqpG|tBT{VJWi8^xp;hBODaZL!aytAu|_wEh%%f|`?*pyvbpf)RFB?4-rE7~HJkuBRu zzh0HSV6=siVU?;5AqDQOXQJusl02(h$fZc|SD77y`subDnjbbOfupHog#jJ5addtgWU3{6xS310>z50b1na)`XMOWs?e9>;FN zK8$XUGZ14U1-%Mr2KBz)1I&iHKVi{-11_IM?|(YZO_rw7+~GCEmSw@tYHx^I;Xe`{ z%-V501}XtwouTJ^o{I`KH#DWS*v`5LyW@O`T~9#hxk5f z!#SV4-Ou*Y2aP|Vk6N;%31Qr zm-2eFCKXb&ZpWTu#yV%e;fI1yb)|q1nBQ(He?ol&I6RqznM%S_x29%T8-ME=ZhXG( z?}7Ycq|o%CB<%%^DEQj>?84~sB1g+*hX*y9|%U_>RDMW zx2*YqLslSMAvIeL8GsVo;ROQJJp&n=j)R9&yDh>wD@DeMinwi4p&QNE1U8)G!2gju z&ut?xhvXPc zKb(HdmV{?Fb$$a6u0B=qu`FRs=cN=nL{b^f^}-`JE?7T9S5m-aXZPF?c%`Je_7E31 z%Yk7kjt1gJh8{wL;Kt*C9gB?#DiUymN)>BKd=Al3@N*)e!<6;@!?`XhapBhCiklDU zv>M&I5Eh?5RJzlxverLqn+vCA3yV{D9GTl3c%&S}SNj+K1&sTOK13bI&`7qySc}9r zz=AxDkF>+f1l?&7=dDs_0ImAqj4=1eMQEOXL9*O1NF+9IruZL^WvE`!K&V`p!!8ep zSI9#5!Q($45K06a>YRaFOsYjD)VflzhQ9+=$n-5CHY!5Ao*_i%Oq!!eo-ytVkypjD zT+S0k{jT6&Z6aQ^dR;rxXpKv{sP;H`zHwfGK{~IMF!ESsr0B^au-Vc=x zX`(bM_kiES+yYeet(=Xe_3i%0;;n40xX1_R)6xVDy`N2yhi6NXBmj@x z+(o7|N714e@2?L+DlHq{0!~s+$UCgNXKE^hoqiAcR*3a#0IX{VWkTZG>N(5p+1lCq zdVEAd9lWi4F9kxmLV1cJO?5sDm_1S6 zPP3nYA6ccj!Q}KQLat88Ozr7-Am-W)h}u$pU_8lr6`2OV*=j90N&RTItYm7!hW*)W zxZXAR@OnB`I-6gRw>sCvBQku|s@w?wHIWX-?-FcQN#1tUDU<{(@JDC-PECLI!6nEP zqswWeNy=8HA3LByj(L)JA5J9{5Ds|FINHv`C>w5OjhNp|hlM)6QYB(QeKFE_rHOho zL`P>8TXBM!xSL>zvE?{jw$f$!YxtS#`BEU-=iu2UN}%F~Y@^H96*G|Aj)E)6>B?R82wtNa7qqmbKi z##^?3IQUJ&BTCzJL6gL00g-b;eh2nxLz=*fmTjqCC=3N_;50&OT1iWkL~pruYaL z3qDr!vtkh_1;mjubj6`r=;r&xg%~bpy}*ODl0`CkQXM%|kn~gh3;GZfsQteMV;_b3 zIQQpt0rEdjGSjFINk&d!(q#HsyWJd4dYFh@5R4{(scuO9M1+G;y;Eb9-!ZiWGhalH zEriiAWnPa9XGiHeH?#LR1Y5bGUTBMLW7d$b;6XkAv6icVGy#J^|M`RZ>v<;qzd5k} z#~iA=>uC+U|9E?LZ!ae{C3Lq06Tz(wEljj{iNkFc+wSxk;3NC$~0En866s$bi@ z(6Na}ZoB2L@&Jhb>{qlnV4lD<5HkzeS(4ObS(9z_k_|DmDumlvu zTMX{5GLVB2H zwSCNQ;TT_JVZNijWhcCWZ?vDS{y+DJsQgcRzF%*>csm1|A$@T4L&H6tX;RT74u2Ul zWJn#j%hh;t#~=f~>hFj2N?5hAP^m6vi#!?51stl<$WNBH^i1@0NmS{E2*Gkq$0^Im z(&64*M-_<GUbw5Iy+G;jPv%W}{k(Mc*P(Hxmxml{Raz+of3IDY333hz*&{#^0&b zWYy0R6ji5$QwC?ZkyD5_nD~zYHiv4oXk6s#yk@bEq}zqflP6NB+ok9`2@}P^wLC%0 z^m^hXOGc~G-91}wVzI-Tiw(}}TL8NIymzF#w>w+FjyU+2OKSRS_NO;pZ7wmeVr&!y zI@)WUTwHHw{Lfx|9vq7k{KruZ&I4Korx)Nv#hff}?R-~Tboi~=oAIZYyDcA2cCrTn z=P$=dom$lL(!oL`v2o;4lIYO_RD7BC!Zl&*qTH=g4&<+X_ z4Z{bJT9v~gGYaQZ9KsJ~H@sZhpRXo~4!7iv-4LZ?No+F67c0i>9j28qlly*pN0V++jLCcKSgO|^#j8m$gdb{fRt0!BQ@+z#TM3*He-&Az`;>BVg zxD02)$gk^3xKNIzHHvP;I~{&IP=9;Mq*sPsjTzjrGt4wbwb8ldc=!gQk)50{TsAYt z-Sz!gl2=~dX{1h+t*>Q{9;OOw+9b#-kGiKlJ2b&`M*u9N`6KPwb9Ea`jwSk&rycwJ zQyTWpI>J8y0YMjoy~701jRLFoyLhb<& zZwEi5i}GyRTaGmr%t8SEvse!Xy}@L^vZ@m<*zsQkK|9 zDV<^AT~ZCRL~~?;rv^66sKc=i>u^F&ahMWh4Vy`1YZ-}klS40W>DlsKXL=7uwx7Q!I5op`d{3Q`*ntqgtVJUC4im=pDWnp~))=T!s z$CPfD*dc6t!mc(Ekfz+`Y2bxFt!{Q&X)&9vxiR8M;cP3a94jz6I;{U&xtt}gb3Y?b z;c4a7+Wk0#{`r^{I{K2ZMnz%TMqygQXzy%#5I9Wa-&bK-V%45`!zG*1anb-O|Gd<3 z_IXdx5pVls@r}e_ML}yU`)XB1jq5-_qZ=1F5jj8GbFX#-;xfI_;HO{{8r8;0ci09B za{>t-(w|L^BC+ehi56x)>RoS@!iraU_Bo#s?7yYDt96p#sPYvY#VjaiLF0)&Lum*@ zTUk}0aQ?`pc-Fw0I#){{>#*H(TyP;EbC1(v-k^Lwmelo#$^r|O)H`E=Wcf373zU1J zGAmC(X;Nz8>!!86q0?M8^P97EM@2*Hn8;D8>EMKn^0J}Jpy+xc;cQxyHE4Xrh4pH7 zygGIK-Sekh;v`ABGD%u-$U?YDJItTM&IhF^JDozE-Oz5tW2JeTe{ITkVy^vkgiwNb z!7$jH<39aQ&s&dL&E(3;;3t)GKI_c|z9^NBT=0aXtL2G^kM5|_LK!uZyef(g0^u<=05;y*cn)Q{rPIuR-SE)j^|63yv;ltN+-+f3N8Tl zfDf6x3#y7x68MVhbUy1fMt}F_NA?P6%7x1~NThSevET?MEQff4FBtXGF+V|_qOm-| z70QMId`u*B4x>T>N^zOJ18^+_mYk>B%7Ss}$;%27yYpr&9T$|y(2EL^dLwP;q8bh> zitkC;!Q!wygs+-KwTXIN^!X`(ZHw?MVWYAd4}|K{`l=cZ2Z%`-{de@Ly^d84Tg(Wu zkmS<(h{PU8mg<#El}l+$g8e>4HBXG|n;1DZBp57Zh|7xEJVGoBRZQ7@ZY++-=9Do? z5SY-TwN2VpW!b%nQ6~hWH6A~d7FGs+o}na;AmBG=t$Nn~bHLC}Dks~-rW_;X!TSub<5D&Yw zLJ5yA>k)Gx<)>GsUpt2qqe`BPepk?aM=&*HH1X956`VrpESJ~oh?wCZ(F*rPmRKD3 z9k#_!%?pRY{bo2JrkuHv!d<@#VMXV(ta4$iI{ z7+pc5zqjlWucBe-+SogFulf?}Gr78Uu4|(vO@oLpcE8FjnaSk6RvkweJziVP zx+ZQ1$jC>Pr3ve@#7%k%SG}m=W?i1i*+D|Gh9jGl*+ch~AJ$_?H~E`>Ne5mXWA`5N z(K|>@IldF7dg4gfX8N zXLhKtXdX|%*{d||Sgw~*k8njd^5~?HZm-zKV}ODgcC?~88{1(YY!C5?zh9njwqO34X~z$ANFzO+&BJii+2&+~*h=jCig_rl z6I~M=Hp3b<@MTIn(0_xZ1KA#^fsTZ$%f}CLgV`WVaTYRwU=gFK-?dq0lv+Ag-AWS9 zu&UxyCF@ES;I+beNz5L$Lq+e1FNp^vMVl0LkgG&ZBlMvfI98bfah45m77ISv{1aQk zK)Pj~jv)on2^fi_?sE?gM<4bmuz%CNuTL1)91sRDeaEmTU|`$@&inCg$ynHqAfsV( zf_~^lvw#^^73MzJII5wu`&3>o(MpEB*1s@TH`Z(qC4#(pU#(1g1HYKBT>mZo1l624 zUl@e*P}=D3rT$m$kKTFf6ZMz(EB)Vc8wyfl`Zh*Z#tuXx=2pha|MT&G@cYV^ikQl1 zJ}~W6RF?jB^LFO&=Fs5QaLpEh%PA<4B0^^6e3Uff2rV`)jGdSvUJsGDS@%3MXL*bq zE9mIF7i)P8ioG9&OQ%+J`N8_Xw!jze+h_NgkDGB_-yeHiK8%IH$2R>zXHW37e}_}#ch5Socs$I)@d zr$1vKKsW0@^-lkKS$awFEOPB7+|)K!STR~QQ}b?_Iq#5nvKvyM1-6K6J1)o$l2cKr zE!0J6Vu08sRIlgqacr&3h5A6-8VV0`s>%1YDIWoG7%%sC8M+0w9KvE`mYh=l#)jBw z>Xr2yZ!|;&*l0UI9vA3;sIoeWjI&~E4q~W?5mo2=IYY}HqC=MiIf$B^xxX>dq^_<& zsSbA59Vsm79j5R-ye$&Wxdt`%r5`p&Fs8*-&%MOrW$MsrXbF1B%+uVl6~nrLOXP+h!3Z%Z3omj9C3J$(lK2XnfyR4= zDMYB`dquz5n(YW&(wc>rD>vN;Xm0fr`hH_Ap&xi4K&-;1KN9Y=<2F8&vPI9bCFT+a z(%u18b2odSjU)n8fD_RPFk$g$Z3{l*6ifjWSrp4!<&&mg;D$9Xzg%;kt%-c(Fu!ne zWX}D8hZN`yil`NHk2LQEhaj~izYJDn8~s6o7c+FD@Jk+GD~2=n5n-ky5TKiGQWiM< zH4M5PeQPHj#NV8~0Tb5%?Tvi2+A03s5=NCR;>4*b5Zy5FYAvmFYl;{>>H+a$V(wFf zy4pPBrV6HII5<7)!Po1A-gYM;*o02MBu8*wkKFMTgAGXR`(+EC`68^ih? z^}m7)6`tyv#jk{c5aNF)SNxx-LL{N@@Shm->zr{!bVmAak#0CQA#Wn)%MeYY=ZaUzz^3&PZquL+&8ox{-@{Uu70T75#4X5jI^f7(h_C=)u2-|B4&}bre1G_eEL&o-TqFD3K4sZg0p+WCN zeybM^d!0B#0r{A?qkEY=lb4HO;e`qN;OEDIKZ*+wwO0!{5mn;rwAkZ-Oq$o+>&ae)91vd!?BWPZrN@<`1mn^|z!2D-Lq8ZyRGGU+>j?!<*V1XWW zeh!{Kdd-Lh?)YG`$xLZ;QKe#C+`VmO5mTtx)xn)2AreJat43l#v}j@^(dm*w?VVy` zr6}>g=AO_y*u}jWT7Z43qv6(*+5Wh)BX|{B;2?;Pe2q! z28k?)WM@6AQ6;6&+WeOd5W$86prh$oZNvpl_d*{A=BreF_C{$W=KTFVjnlYOMo3v6 zR8>S|_)kn(8?-))ox9LTUIac=rQ2WG3bu$+qM({h5#(RcL8h#i5KxX+sc=IXHR38g zaPPv?@1J_#OgO(rj;_`Vc4-RXTRv;aZosru>IzE*a#tUwWFt6KMy}m&3qn@p(U4Y@ zH9IlkHAIe#8!mKVS|$=8}z>4VLcJk39(6`G)L7? zi$smGh+W!}pO3HVF#CiMf~6{}(Dx!k14oFwK3=3%Qer7yzud&+7%8cySkAQZTiBh@Y-4aw@6tS0e{Z?-b7;+po0@u5_EDI!2lO!*oZ`HQB}CE%n!6j){#S@ zWyj#+z{zeKh{}5|+bx@&8nIbn+^z*fixjIZ|I^O-1SRvJE#sQw1B%{UI8r~?tHg#l z=D&0)sb#^ktwXJ*hC3vOW{;Wu{ zUEY}XlSK&-Zm`x>n|?W0Qp0ajlF&#Ui{m%<=)_!cIcpX!5>eQRmH>FcM7h+EBB+q;LKlLHlpOuEDNXE z?GvHp&ayDk`v2Nv>xr2ZazqJbta*(Ksno{_md?Q4XAJ9u;Ge=vi4g{sSv>@Is8Vu- zQrmVH&LH1`gw&}p`%4BKq4yCI+~cWIYEuIp#z(=FbAxQJE=VOs7B1p$ zxm1$$t}ep=AHv=-Mwlqd7X8|`ZQHhO+qP|gZQJht+O}=mw%vVua_8l}nasO4IaNtj z{i^Jot+V!83{}>Thr8OGK+|z%h;jkw^rLd(0ClX&3BJ*c-a(Y!Q6{fBTi*fVpQGo# z{jQ&XX+HyfUX#PWLWN#&6g~rpzl(DHPS5CkqrQhNJ~M^x@p)Vve1Q`f&w^HkAAKG- zqCf8bIM513cKAYhIVUxc&Y~zWb4FZ~XVkHzo{($S(u94He_0dtlT3x5qMw6PF|`<4%Ww-O3y8m;A#{OXs_N_0zo>LHZ*^ zC&(q33a?xtPh!9>L)W=4?c`*tVUf&1X9^~mb>v2MC}|;adgFGMk(rp{dVK~CVL*6K zr6jhpKfU-=q9GHV&Hd`X$yvEWw1!S}rT9<~2Vx)}W*3V_u_;!_*G&*G>rZEikYUcT z#DAMjVAx{hPAW)t>HXgT_Tz_R>$MPn{>UT!`9tu3{`LRNgViCtk<~DMdW_x7n4rZ_ z1vRGO0f{vn|ImoBkHbJoghN2UB+ZYRCg`kQhOTK~a#ud_SGpS{d*-Vas@s6K^BZYZ zp)}&U>(M;*SE^Jr={|k-q|4MxqzvrPdE88S?R-rCy!bGE9Qxt$HI}n z<^{r)6MxmBji`77$(W_85Xt1oPG!PP9p=m7EdU!!?yfvUh<&%uz>)i~ zALZz)UGYjHaTko;eK|x+aoHINMX9jKbJo?r6I;im4O#1A!W z7}~~LL53(QsDG)tb$Ex$vy95(&TXqiY-w!keu34zvQk~WMZR0PR*JVsRp?n&SU<-| zR2PF{T+53qrS3Utxm+j_^k{HG>JjU9ny5;wsZr?`zuIMR&|WeHXqei28Mm0vj(kHM z(|FI9L>=SoDiXyMa$+Xls6rasIV{9LWvw0$&*JDVUa+5LFxCN>lN_%;s7Vv2rMOPL ztBGgFRKyscrjUAR%`%DOX|))4JSgPZsKG{b&(U>O-;YqiTNvu8qF5t&u0rutfju83 zdFYCs!tW7Lh$k{}fKt5DRvZiljfAX{WS~ut$-?<~x-LH|PR!~W_Lr6lG4@W<0hO?U zXw71M;@((btti}Svu_4S#6G_9j9l%qJk33N4U++gghhE zNH$zIGrO;fb~_C^1Si$(J|n(7tC7VJ2a}X)ehM6v!m!67yqoXTI43HQ-J{)E>4rGe zr=vk*QPND#0haJ?+-2<9b%1#t6S`|E)I3JmuW#3bemS}E6kq5jsjLok#=3;7-}I9< zo$a1l`UC4gg2{Lku|F6qQaGfuARpBQvpXP-fA5K#lAdWnjuoNr7(U%}bMaP2dvP}0 zZpJzRtQ zsX1VGs}*PpOwY_LKAo}oPamVAmg@8H@)qURtgqUM)aE-IJ7?)OYjEu5=oU4J)>J?1a5DM!& zK$HN0+MozG>$c%OKywjy)e5F!fxdW9`ggY|-(&OHSt)?N_6*wg^XT24N|a6l2RjP?=ihT!)o8`%9_ zEToRT&jM&6i$rK7LgJlGha~Z+1EJ22KJg`BCo4mq&)Kh9N7=b9J>iSxzO14Qq1i~# zK=T(#A!mt`u&R<|{dkshI?axG)hqwvJ>uB1uqRI&F?y#YsqxNC zi(c4kV4oxNtkJTuf{C-zv@zQ|&);n%^%M|Mwj|JhYoC|1uRe#Ncv|qmy{f!NdEvSA z*2&s($v)`~YN!r5JSz=d!d!E3WQnngK zkVZ2G+B$C@trK2ewXOf)_R$x4rOD+8dcZ`8*zUvZlCt}XbbS#~4KP#M};D?NjSibM{hUWUC?J*X)&EZIKUJ zz0r8aR^J)klu1q?+{P!( z1>nFZ#Eib<2-)*xI9M;)XM}^y|?!M7vbp16uA?r;S2cCd~;u2e;_+A4H|1dh4Lh z?leb?Kg=6aus0uSQ`WHI&J@Kaq22brRzE>VF$MKSp8+F3#F4x&{^mYcj z;{-$XNsm){AxjVkW*mnnqz4(ss#HHsC-lFpQiEt7HGLZ8It}ZgcIVlf0qqzj^a8<9 z6WH8i#NLP6@B_r8Izx#+sYvoD;sualb?`6yrr1YkUz7VIb%1E;L#g&uJAx~_kQ_b! zPwo(z!I?GLy4DDkfrgMP3$-$n{L$d{Isu#tAy4=}R7h-~5eXy^jf*+Bk<5FpPUeqs)=5=o`I?;Fz!J*M^3k*UfxKo z>u0%ATq6cSWU&_xtH5s;%k0*n@Bb~+g{!;LZ;FRq&n{iv^S zpq2U4dI}gEM3D**$dDwp8zVVv= z=$zsBdb`211p+td4g14sB_Br1VVyYO%5gdC&s5gGzzdtr>s%-%l&4)0+u#(oZ$#l47_=tL?ZTcTHGY$zi%6h9@_YQUQcUv|uXIOr6^Y;z*dnh_td zL3qzB2#D@ZpOfBbVs5M);@MDK@6FMMIQDm=ftv56pSzH{nKOQh{mz*5hSVrdd_GH3 zw%%O8w^8|-T|?5?jM4VHbKgI|JO5Ie*5F2J98qmYZ!D$o&d7lew|~Hw5$~}O;mMbI z)PUt2WO?FAKJrcQTzL+IjB{>=XZXR(4C%QsaniJ+b|aSe5vp-JNVfQL%)Nq+jU%y{ zNfv~9_MYz$5;$c+cqC>$;zLJ>>^>&j^dlJ`am|8q&=Tv@P1@}cfYud2t9V# zqz4MFNK~fyV&5N;SUKuG=oAwRv429}j~Db+&m|nO;0p#mU^J&ZE&w{q;8QB4QKhFg zJzGU1hl*AH{>5`nNGe2Z@;;@A<#hTy25_JfbOe^FD2-BiVpq>RmXAY{0$-8EsJN~) zYvv{ZShJxr;7*qVrk6n>U#Gp~bYH+Zy_LqSv8A_|oOh`0w+zixgv;$iDdBO;n)S3v zO)=>vXqt81!qc`(X!;DNOi;5m>3!>fnluw}*keHx0~rqkj>|GUtbCpR4Zu2sqEe|B zx~ZJ8s8uck?HSO~y$DRFRQh4Xh$_herug>tS@yo}vfv?l&z>@E5)D`;Nriv_Y{47U zQTl=u#lIt2CsfU;S36=LJVL0sBuWU}5ht}UGlgJ5t3hbyS0nTVhqoew_J3Gm4Kan% zh6wK2|F$@w zaNp`IrVMS|Az5V0%amw5y#H4t;;6(Z{Ve9Z`K3agJ zndsruS3>ik@(w(m!}7E;uIKl3ir~ebM^O&A$8PeEY4{}kLYEa}Lm!7cw|p|E)H#S` zlAUDTB~MY^X2A5n8)}-VPmLnWh#@#6H5IL8GhSFGj-{2BIU1?nI9Ee3nlI5e?6aI_ z=DiXQF4&{lZb?Vn-q@Z2svp>+q}WG7C-=l8ziBs~ptk#N+~NFoeLf`?^snzJG0g03V#d1&wZzNyLW{4g9k~?krYG(* z`%~oyHhSbgt0nkca8~hH4LIB)A|%!$c}{)7X;E2;QkR ziA<`?su|4hTY-5Cpwi`KU{?*Iw>hq%qVTj zOH!>GM?n4n{nx&O5Sgk^#jo~E zYqA7JqiqC`axoBam@AMcCsf~RwZH_@wL!ALDyJQko4uKhrmExR<^Pf3VS_*s25K`q z-keMy^Z2>!0vPREBrxI(NC!5>XoR`Gn!5Uo{lFTeylE(&{5va>jOp5OrD)f@|2lxBcVT4L_YFAmiyUJS8>_@r`;)20LJ zGXtj?(=jDN%G0R9TQ_rsj9do2@Iz`K{^JwoA>K%G7oIrm?>+FOKwM$@jBxp@9tfPR zx!Ng|Fs=Lu016&(3m!8$qaFxolEDu0qz$@PspA=f9d6 z6|{z}=KpSH>HopZ8Shn?eIZaby^1>IG-+Zz6PvLX zp*kgNuu$E*6sRtfTTszVFQ-rtS+QS&30S;pbtxhAnmm_L8PD{y^GAx|xd2`^psR%E z0^{OP-|HliDmcz7H~Ahpq2F!cS#|89qNF{InfxxZI5EiOF@}F+`sv?aa7qZ~QU-}+ zF@f%*m&M}CD&DwiwEz(noh=m}AS^hU?!Zn7fct$;oQz-`Lbx75uISBZC3z_lUOUCHv?;^RkYlB}#`S84mzX4%-!x?Faq69MVXW(__P|OtLw?JqqRpEmw>Udr6!aS6HtX?#*U_HSiFT9N)8OR(1&dQ5)Pp; z5dRe!$M!5gcP4ZFNAv~rUu_K(+~V%`d(15Gn_yx8|8D93y`Ozlbd<16kbPO#VvRL; zB_TkhwG=dk{D%c2Qs`{v_2$}7pC3UptA4a%9uC@qFWZH<%cat zxXeBQbUiL=W)*T@WTeqEJmY<4IBq<0AGl9=I^Ldc{(}Wae?l0Jk<|1q#a)}p0n(}8 zbEB7w)Va)oT2E3HUwj0bxKg(2`Rb5BI$Gn^Zzpsej2!K0it#UN zAEOi09#P1-5$#=(%~AOL7%0a1oWcdq$-*m-DqaBsP^eYH5vNn7Hk#^rR2--D9~F6f zE*SNkBvBM}W>oGyTBtMJxp_$3+{LNfH*)9>tBNxUnr&NsDHqJ0^{j8-)CdzA#1gbl z**f=3X}oyVM``LAqzgEXkS$-VXp<;SMzWs=tAJ&o& zZ0@?}r6twC#H0V?ob0l7$OXh`CZ`fcF)^YlR(+ICg$T0UP{yq4!2K`FRxFjP!An}2 zB^@c4UFFwj(&KF*ia*75R0_pEk$;isAiN)E(GDuDmUkoaxZ^-{V?}>*$@2HvI;AHn zNDcV;%PP{a+Z?&k)#$_BVQ$TG7+PhaaR}*gSXlj_r@#^|>B~hLPjNv*3D*e%C3tud z=ZMY$7Q<2J;PSU*Ea8-&I{bX`)@mBqW9f5KHQWGc(uA=}D6B#scZ|2F(2IXK|4D|f zs6SC-z!{|JZ6g`83Q8eKS5y_d1n4<*FQSiBZoxoENqKTOlV@5mpx=<5#VigGBI5nrfH$vqt8| z?S~|dWh7Z#hkx38le0fQ{-J^KY!9Xu$J|;f@*K0THdgPS9 zxk8|R|8T?ww#1SEcnSB-^>fWdG$_Fk><~W1?~f2OFZILTV$`Tl8sQ@P;n@0+6f$VZ3a$yiW%&u|$^W5wuXQtSF3c(gUV&G9N6LX-t)`*4E=c)%$M_3tmai@mC7jQT5Ls z-2c&G{eQ{3n!F&~m6zULyslZLNXKMG|BOur*M^Pt<38g<00i;_66pU4Ab_C9M3g4= z$0{fwFR1Rws|RMO78xo=uPkU@u5S9MSgNpTT5oS`YHp%=^Sxy6#H#LUS*dY-|_K)EewWM!w?S zK1SWxG7QtwKJ810Lhl{2b%@Z?K1b!++Got!Izmka8YeqMRdXLoHe_Q{Ya3d!tqTLt zJ3v{9?4mS*ze~Jux5az;_Y#RUsD?hMrn4{F(mF$yr3(+b?`%*wQ9?U0n|rM<8F-8Dm^-RX{mw>37= zGd#7@)|PwsDH_R6ifbPQ=CLFsZAT@CcXDiiYx@u>Hdwgn^_R^jagJ{fHTFR|Rg1eX zaYwPELx38edu&0@;h|A13wg%=Mnm@=n{7uHVFzKx>867+u_$5J=4>CtR`>9j#8&tC z7$x+Dr{%RP)(xM)yBg37Ml$5)`MpCdD`f1ts26Onb$u>Gt~eBj_gR zL+70+nJCIs<*Lf^vYZC%>H7+kKt{A|v^7+W4P=XL=4R4mOq*?HATydWcC)R`@wem& z5Q@rx_!`#;7`wYH%Phj&r9394b?oS5NX3VdD)^%07G`EhNj+p6TkZL76CtCE`_a%6 zQQqQW-uXttdCa3ap7J49u?^rO>I%CxM%H$KpYx3o(H3hPOf9S^RuLmKz{DhRE33o) zNT_up8TE|Z9!`L*3YZg?iuL(UcErk^O>k9YQX>(Q`Zmc> zf`Z-Rp#)5Luzn?K*j1vY@;VI17FA_tHt=~Y%uGWBbF=UBd&$paefqMh!JSuqTaxc# zFq7n0DzI);4_9sL5@LOiiFy%~lt>6naDJnN@|<4J0HbJ_D=aqFW=Kr$^$Nx}V5_a_ ztEqWme~$Jj%uKc+R;g8%F@qKQ8>_>}`y#5_JnFY)m|bvd#$huS))k?d)TSV#{Lk-M zAToV~eeTN*(>-(MHE>Tttrk{RHf7eJyS{IL+wbqamC+NScc1C`T@;LE0~ExQ(0Zu! zz|C(rjZ9%4=n;gKd(=G6Fq2Vi&TJl|Rm{imCjJQirAC@~oXhAu{e*Gj4$2Yz5Wc;* zj47IGGhWbw3CUIYZjO1+;isdn6{b5gZMX(!Hn!_<27P*fj4Bo_TpJ^)ixhEdT`8;R zD^*bvpg3u#$M+Oh(*TPA^xQuK=GK+5)+TbT2u$>Xr`*)#U27S+NJeCioRdolPL@K* zuEd&Y51Cj*wd!sY!_hX;b$2BGo9nB~+reLeoR-$V%JN4;phbjS-7s_NS}sOZpmXRO znpQj%!| zP7-Xh)AYWNR=9Bc%q?PVY`_2#@2RMM;69$N=0GPxlu6y>fF97E4_Z+7AFE|h@$!W; z3F}UqMNOyri!M$`5iWl~_L{3@sQVctdXsBp3kv9M)r6e28UuVT{E4aXYfHqj_}kAn zw6w4^Tpkhu@DiPCb~3ER{@_u`*eEp03~!XAq&#f2kcK5g%bB}tZoJJ^Q?ZE|{f09l zYdTAEjxB3YkZK8!9BzG@=I93BFuFajQHXV@?6VF5p z1CfLLFgvOgDlktJu+3L-)WzaW9gR*MVP_}3+0_G0OM1L_#;1cx`)xrGH zB!W@+gHGQ-DCl~jVgfj4Fc^Qh>#cYFn;_dXp?OK2!sp^IQ@@K% zohk(8dx(GBKYa*iFv&U8t;NkzUz(kIy_MtBk|~p_(kfn)EGO|DVkPBe5H;q1C?Y>V zO6bmzVK8E)kw0Nuh)i~sNBPIh0<2Iy($3PMVvIithCOu4UZuOM)Gzkvd;OSG6E1K~1mef=Jjuns(C zT!=IKmb*qq@x0K=f==m~Q<{3_n+cl0MTUuu!L~R2!W{2q9YHX(ZP3o2aun4roXx`( zhOLSBJ?Z-jvF9lwqF|kD8`19L)a}tL*Ilgh_vJ&xP88qksV68ib%2tLjCgCtaiguJ z837kBa(-1kMg@+|XhWy5uGRs_6@CN549WIW#LMenzIi{4r#kP)o>}l@FS}Rax-{Sy zO=cJE8$Q}QUSf$-?|q;;_Ytu} z%(>!5+eHuyWTKG@ymt}q3nbtBNPfwim@NZj-=w@x5j_v{GlR^juVHeZNSla1h`Aqw zzglr(Z1kz~*4u|;{@Ei*-&mh?_YvitO{$$|NDV`N-upfKNm9-q$OS9z2&mF%Ox}h$ zX*Y_&atg@FU}g;o0gsv@4-v_mi;Ou`ZRJYNSzrg2)V5Z^9}$C^nmUntO4^U0#B)0| za&)}vsi@kRYi?lQ#4E(u1DkazuR4ONzKRWORp^A|aaEjW5gl*!urjLCeK(j-+D7Zw z_1qRHP9=}VyJy{=Z``!A-mZs@2Z%yor~!jVh`Ka%k&7d%52Zxz`LmS*n%ngf+rs8= zj7}_tHWM7vB-|LjoGm!wOVu=5SX$|KK>kDZqt6-7)moWFUVj^PN9zhYwU2jrj0qa^ zC>2|Tk4O|gLRmAPAf!;6ZiOYQicziYXkr^3`f)A({4_P6ilDa|(zxDbKVsTR&wFvk zEwg2hAVg_4kHmuKP%MOG)P9o6>O+(?KX(gEOzR~RkJQoDf;#?_+;X7IpNYs27}P}JdRodS6VBD=&A2?wLJ)ZmQjpA zo#yfSEUH)r83jh~BhZVJ+YMKbQi6DUP$Ow-E&>H6$#^d&^iYh8xW4OeRwuFyMkcq` z_OamBkxqq=4|6VLftzC%IRljz9413}kIzU9sYU07-y!O#N=4>vo7 zJB|z4!H!{f^bY#09@HcTH@7={;du?|A>;XEj|d|P&z!|{oG;3pd#?gnu1Nhraka*s&@Dk^-SridCKgObB70WfHihsnJpbn){}cTy*{ zFb7H!6~GiGXl%RR<%VM468JdUNEvhXzaE?uz;{49Mvj==`c=XzRgf z>j&Y%8C<#se+lyF5<^YM&y;{b%!<4tcSR}- zbn`u6%K2R9W9IeYPN>I@J1*MYmF3jae14$_1agNr9pA2?K!YADL4x<;cL<#% z(zo^v63!04(kK07DcVLXeVwNyL73jEc+ojgb1fkH4Qd9BP^S6bg%AD5PS32u?}IWW zPQYuNxbvB=8UxwnuA0J90N1o@F}V>4qBE>hjD$!dR+OE_a&k#g5!SLaV+Dq@IHCTI z()d}}ybb$a*SOlC(1j3oOD^c6ePBdESO^h(gIwbLQG$GM;>$#0WRCw>e_h3Y@iYBE zdMUw%QNjC6@%A+S*Fyj+0l_}_d!BLjIO4C8J;d13g8h9z@xfp=h_bs7iSk*0gR$f2 zw+RhCuRd@vzwI$$zyO}$W!a%IV`jlu*U2BD9Ax2O+F)UZVmioO&B;Mw!bo6-ejj0B z-e6${kj&jrCn60BLNhJD769!gBoePK_Jf?RDd4PM&U z&@5Licx$>HgQbN2Xxc~IssV#j@+461r;xxG;D)B<|&wUqhOQgr}p zyAXgdN7q-XSNMXN^?1>H#I}2lB_GbVhw2;kddE5i%-Wz3J>A#v_DH+A@0AdvsLu|F z?W^o)0l&OM#xc_ACtcBrW&4T7^c1YX+T*O`EQKl49dXcU7Kn1Wl($es%Lz|m-s$xzXhA+k}y z0#fun+V1Abx158qse^t{gR$cHzBu82iikb)q`u+A-&*V*=5+hH^$|Z>w)O2jwJ* zyTO0&g5I72x5wLyKZ7|Eg5BT=TEXW2qs9K{fJeCrQ>dwh( z7-|LbJ#m4(T?M6i(5>(KnKIeIFxfQ@b;cdWpncZLCW=Xbes?F5N`W2|>kxX7lLfMo zOup!A2$uIErV!8q5xFTew`SeX;t~BTsN1)sw}Y#?z|0_f?r;AWM0i!Wv>yr#3hRL0 zI-G9>bNZfQyo(tYFf%X38e*rv5gkU;_)&^v%%3j~Y{67bUNv`q$) zMf`vk#g95>8P>amZy!r+-z0^AI#pBuPFQ#A)C%u+UB)O_%rZ1eC5>ij&qA??--Pp!0hLjvnY7i+%8=G}yxg zkQM>u-Jm0`r~U&3reOwGYiYHZpPC#asU7LyMpss-3-`-);)vOT+#WTx$MUW@T+S6- zC98ZifM6{yxN2%0dcjrR13o7AUhiO_7IJ8o=TwoF;+&oCoP^S+XT)ArYujLPO6!+x z&mQAXO_HyLRso))lPJqiwxRP_%X~_l(fkp$Uu$VPOd;COn93r!Mb<%DN{scq# z)lOo(AH9tW;g4@-`k6V625ep>!30@AA>IMrdi>AHBUEPJ5^InhS9G7J9jM*;)NV*A z!)h~1SBecue2>Jc7M7Wvq<7-swT)h{&XCYqWGW~*#i5!vv$8}ngCu6O(!52ep<;T1 zKvXh7qw-h*OJr^{)tWQLvQBZZc};>;3%LiZ+X}~~j^##Jz*`@ql;QP1`__)3y=xm- zw-@%!F2v0(vNo@_fi1oH8tQ96Jd`G=xgEKKe_nN}k>L3$r`0A391ziSCh4t9WLeZO#F$#97+vYln~cVKis zcYO z6iQ~fO*mC3nD8eVEfp!tWYWdZD3hH-99e-iMSh1(+Ep|p-6$u{;_3rqD5%Z|ieqpU zri*VVtj@s3Ip6CP<$B~XPiahux@xQodMFgi|Dg5NO$FF19U_V;Z? z7E*eMkpuA!z&gw_tYDW&-5!Y8>c(+Iy4|QI%X&gM;c~F8r+Yy=l{?bzq;qNO|BDCd zC1M86Aj{dZz(kWdPiH8-zT|Pe$}&E(D;v0A*!DpFvj(Ehfun+A97;mr=waF?yO7$- zN0jXR3utJ`;L}i==S%J2AYFyS*mA25;1Wl(v8}_L^@Sn=Rq8iGMGgcG2t!izsrggCy z@|A_kahOM?Bhg<_N5r$&PRJjS>$gER;JFojzr;!z&E6vt(eCdy-c zHKs_vu*!^XKb2&WAUU(E2-l@2%x_Ku_XlG>O zQjanBj9)5mykAltOA-QM1a*yyv(TPgv~-*(sc1gOqZie!ou^J6kgY{E3Ja$HULz&n zD2v>`s41%U2p;MSkrVm@(T6n+(=_1Q#|)2xKCw67L9F*u?K^r32*zv5`8}eCscHsrxBYoKMJAG3%5^=! z7#`qawrPRB>;}>;c3&~m=^P!qhV}+XVDSv?!zaPu{1^=G1bk3GTGM=_t{|Lge_=46 zQBsO&BqY3kjvtPI|G3(to7f)@-CA`h1*`6}Y>|kPMK8ADATn?1Fb51=XD3C-h(-hm z0!Vc4=#0-@p+HG;)Vm4yrL)=!^i1%#*|n#il)&uL0`_Lb?KBPCY^$8-(K%(5R#^fq zzIA<2(3tCbhJ*2wJCjv0I~5fDj(2c6E1}7(%RzlotiLBHV?$Ktpco&apUWMgaI7nB zb1vm-vhdJkWiN{)nwgXaWR?q9Q?JRLeJ>^?&B}0RC~D@tD^&=N80X)E%kZoT3<-R` z^CZG5g?f{Vt-ni*T)x4U3^Z&MI=lYRn=j*)a6{EtXS#0_TU0WJ0lVQQ(g(^q(uw9n z;;Rsdgn*P`wy9(*DhJIg!Xcwc&lWmH-R*O0XXiAHzG&)mo zA#^EEJOy!K?5aqa)jCIh58_PzE|V>lTf}&zb0Kx9Ebf;#gKFUvE2=Ot^w*^Qv{Im=utJ=mub>jR|88g>#RS8 zV;pmb8fv|aNG8A75xGhxEt#|Sgmcn9?m?kTnEfEixj#A;nkVeDQTDl!+E`Qo^2K*j zX?aEY8f)i3<16KxKqi*?4CXyV7S;~n+~?K6GR@2Q1V_Ct4k%;d8`g#d8G2xxy4!mr zlSRHKaM`nTP}{7usBeTF;=wAtyQ2m^Z*P@{Q3-*{&(p@;6fw#zvT%7`o;b8s9BlDmwm9l2Nd3dpy~MQeNJn>a+Fl6 zD^R#ZRnEU9gS1#_9_h)lRJk(majx6Wza@rNspoJlOExS09(AaIn{705!o1N@*Ryuy z-h$KY_Ru%;rLsJP`<{7l!&h4qvqE|_+1Z^%aXOH`$nKN047a5-cG?Z(d;_)x#{ZI? z_dz@B!*l?QUJP@#BJ$oX^u;e5jGoXYN;do|m&obMGP^uic+Ef)_v zLgjmLB_*15jV+wF)+PUR5BQ{z_pUBDlp9dnri8nj@3(4jpcIx}8UO=ysUgvu1H5YH z84!Jt4gQ?Vx(e}}if9{7QWDvC)ElNL6_g1x9Y#SPGv9D8b*AeruQ`aMdjEHPYSLeCE zy0OoGOPu8em-S)PkD)P*q4A7iYrl_k@>l5@qo;WsWj!HN#UofdN zR>;bq2%h;!_v51#8fnpxFV1N=?2>?xdr~Is{fKlHUmY#GuHrY7Trf?7`%q^qMkfOq zvllWRw6-Ddmi!R$IY)_=dvYNxNdO!4=($iOhT+6U1?7_H5=oj|%ck0c0ClZ{*BbcH zPu$28UNl;Z&xw$YNV7&|_bPW$sY^6=>C%;w2d-vbS`{-M2{R!NRGAg*5w5>>`RR)Q zYntrn379SJCgNIrQr&v5GW*ue%8Mj&N=pzGz9}is;3mj=F&2pe`^b`WC4%$|vVQHAH}@JA$90kRG;ZOW3>4^ep&H-Rap|c3_^<(*_KdC;OL8NhQ@lddmy?Hb5{7 znAq6!y9qsJ2lRqP8|;7i$=7W5{0&$8^RcrIR470!(T4=kXll;q7|$9SNmqwbfYCDd z|47HzMF5zx3mnRR=qw~HSk~@!S<%ZwlrF7(eFVaXZBJjXc!6ygcmowR1x%wy2D{F- z!i2VEi&}8y9izB!+;hmoJE5d>zN2fs3-!tyIcM`oMH^0g#xZQq@&*w7Xd$xP_FF=Tb~nAK%=Dwq_S4l=!!*{RV^e+ zRY9)?{V~LNZLl=U8`o}rBy&&mcZ0J06)X7(Lb5&nMz{%VHxoDb4_;tAc4^)-IP^0^ z#cX$k;+=zLg^NP=GjR2CPD!|H0%oHbMFo!-SEJnm?UhHnpjW`NIo-VOmC1YLGvrp8 zPcE!Q&AiV#+^LoSTb?P%clGQ*@iP<^9HUq47Sud113C{|4xUSQFb8eDjRkhgRKSU& zbutGn;5`V|OJE#|SDRfpJWf*0RX3@l3GYljrr|^d_Qz|*y(EjTfnS=A=qlWKq~xQ1 zSx^B;AK58(h$M86?KQVF(PyagcO$-=KGdv_hmqYCE*AIkh@_W}Lj+XF&AUdKiOz)= z&YZ>4)iOu+mK*VFDas+(M?9_-UV_{QxbHq4v-}5^;9#lztRKI?j|5Va-yHOn6Xnvk z5LDC8JfTh@rcS9!yTFArn$6fOf zZ`16^*;Y%w;_GFUg~JYDU@2mbpsG{L7%pkvLB;B%8mz-a4EI0`ZevqfeXe#Wm*(v) z36IZrAkUt3j0ro5#=_68I%r^U_`6)AJ*9+&^C~wcvuexGBFPziHHPzjp2oIUAuicWqpm}}N zt^z*kBNomP=th-x>d33Qw=N&!)Vc(;rgr8dcWZm_7b&5S7Eb_}gBi`Bopgt=*sLZI z2b(-@d~a86@IS~kbXS+Yp~C&ijb89mfPE$Sk>9kDzZ!=yzBY`aAr<{%<--sNu=xdy}Hw79mjwSpsZ9F z%!W1!yQXgR*dGw&i{G(V1ZCb{-B)RdIrBQbX!I$a!`te5jKOW&X&vo4rR19^pLZfj z0l;(oCx7z!GTrr`2cBYV^v9X~s^)NrdigK znYAvmAIUyU=2e88w~uPOSFBD~*fKv?$#Z;ke%u7Vsg3y|n=>RPC<-QRhDEDI{9e9` zD5MRuqD5xBs2bLpbESb|SiHasIuPRJ3$GZ`P2#748okn_JJYR%yg`mR-dBSx z!;tnWF(Q+K(i$g+?0Cb@tEQe7awvZnKoaT-ZA}qKgmfjR5^i4V9_{*9H@l>NkI7HW z)GA|Zst$PxdnzLUg%d1d`dUq4dxTB4?tFF0GpNffi6?)E>=S}&I`Qcn>iO(o0QFGp z)LVFkeuh;bx>`5o(SLew^`(~7{Dz?zKR9R#MF2%&MlmV zXr?}%OYnmtM9QBA%pC8>k-JBc(AnP+s7gBL&qbDxc&{%-vo390W(nA2zE~M~FCCs3 z*rbD)`&*+IIXwNz=y!z|cnK;8phG4a4v8JVX=i}7Ob&{EjIn`!(33j(V_BegthIG8 zq;-jaD3#&~Di?bW*6vB4_phs;>aORyuUmL&c*v#E5%wQ5W9dcggrRlUDdPcL#zv~kWP6kXj`yk6 z0p4p|W4b`2kD65$ypKJu3=L>S&N z2m4+JMvmb(?Oc|8d+kfsi)ipAIv*&hQ!BN|+C!v2OjIa_NH=mk>yq@7uhWnt&u*)t zz2T2Efi+1M8^^zEeO1}i^wBU!l~|~CN$!4K*ld|sQd~c_#Gi~=bPI7mPqFGd)u^=y zK3d4);z`Q-&30>QkI!;xpRQRJt^_ZW;n#Wz8NLxI0l~~dI(}OTr{d9{7uEXqin9BO zWZkHav-u?|T_F9ABO<|yrno%?y%iFFd=|nCY?V>t#b#PAbyiR~hP<$Vn4O%29Zh%R z4)j(Mq~tNya>jQU6z&$)KX9Lo+Zl}Qkp+)^+8y6k{N2p$67E}{B??`mxB*aUq~G)Y zrSGaRz2%d@!%Fq%0jBhbBw|wNhnD}rWDbI`)9@6leID}^`Qe14(dB+&v?PxNPrM6} z6^<1S#p1v%zUTq*?xNt{{HMJAK_3ihxn;nd{2F8EtuAe>i zTAdoLd+8jQCKQ94*}TdMi1r@dcZ8gq#q#b*qNO4+-^>f(bmFhnytbl6&OHH_?~}8B z$UixTG)@fz9lf@CSh_sYbFFJic{)x}Zv$i2c}or5=UHbo-IEmGl(UhV`1o~sL&h9$ z5V9PF$pN-thlT%cAY$yx0;%Z-Mj9r!A^k{{x_*vImpo{74R7&|-Cv1$vih6WHmtp1 zfyz?HKxhH|>QE1fBporr8*42_+bLn=Er|YWp5y{hwIE#Nwmw&m@tZ*gBJy|p3X~@a zl1hz)B5B(%^e_LaeG04eA6H}D4bhBVDPh^is^87aan-d8lQ%7{o!o`3(?6+}mpdk< zTU_m(o$PY0GAJzdjxn0;ooTh>xe;qua)LRA=tVDBC+5nsoaf3iF)bISJX_-Daoz%8 zh$vAHY2jR} zth+h$4ER~|tW-jUc)I9U`=a?u+r_Fp( zY`%#9JFPqJL)?eTHQc63;<9+SiG}G4iXGWmw<)c2|4>VzL1@?Yl1kBTCbl(^ZGUlouXBeF; zAd*@@hGZNG`gdflv|C2h0d<+yWJ8A8jU(7r%v|imCFjU~GS0DEG1ff7^AW_DeoO-<`hb z+_#Ki$w@vFcgF42=2;XxHVKD0V{ABS^#>NF-WsL(*+1w~@Z~D0-GRRLpmgu~mLN27 zJiJ)Qz?WL|cYoE5F80p;e_v^F>B$j*5IV15Y?}KVaUidEQ^2tEg5d0_pTWT4?3>z$_Bo)>1fVwf;U2`nD9GBP`$}l;47rFCuXsQ2cgTh#GU) zazySeU{&UPxP)CI{{(c9v#&H1ndIs54(6$e#+&y+!xPk5tUsqxXW20qN-MfjL!)xe zmMODzKh(p2vR!FJ*$Wl2rp|Cu?zs~LUM-GdF_CmJMA=+zRYJ|-1;3;=VgCB?<@@I0 zi@#oacKfIy1Vxj4Z{1-Y80Qo3(Ic+MEdP=wO*u6p)+ea>K;Ivz&pY}R4jemJwq&{( zoLZKUCsh`m>9~}#5+>4$@Iya_YNGmKpvHfFIum{?y^{DL)}ud4lJECOs9>qZ2vl)M zl!Cu|T&+O7> ztwdfXZFt(GNge%&Z0@sTaN+%S(6hL7A*}vjK*A{sxIYaJ(6pTXK4NmO7g*!sH5YTt zn>Aa^NcGESd(l~U)Io2{!hZy8XAVQm2xA3$Tyf|S1my9_7**0?JV)VZQkpJ@lx*V{hb5yauomJPNN_ zyY~w7suT!hO?d_D&Ox5gv4!Ha3`x^MPnnJ zp_7GdK&`%?45eCzq5M&muzV9R%iVFumkL|2Qap^7D*ygJ=V~n9pdt+j$cF(42-*LZ zg3xxbH059gV=-E1KERH0$PGv0$YMz z16+ej`#bwP2fX^z0w01(2UrY!4L=Mg29O}}L3BXfa8~yWB?AayIbhr{GQc??I1o6% zj)Q6;@FDTR@A`)aDEpfXlMT6l65GPrV*Vnk0nvb<3#^6G0dK{!#j_<`oiiK>AcS`# zSiLda0ej#tu!nT%tdm8TFo@H2+T!vLt5=HJPFK2e&la} z@9#x^1aBY?(t~kBT^%w^572{qByX7L_d{^wUd1%j4AO&qL~p1br~~c7x-2&o1n)w+ zJTY7e-U4wWUzIoH4E_MS#A?tPum|rVyhLi?9k>GP!oMVH@E*7V?;^fTH|zuR2Dub& z2=6C?@`kunZW!tJLwv+<7#YX|@kYC(Y1j$kM||XM*a`jsy~J&>7{~+nCc1=d5DfZ& zy__-h2YsVkjW+ZL_lCW^He?F!0ehrfwK1#@?g4$ITovr!2J^feig^ z5Ib-_HbA@nHpm?$A8#OGzdOVZtd9jyum7Uo9nt`y7ytQc*E`@Ewio+(d-pBi8on38 zhvwOD_br$h#E;}zco#aD7)&2|8zc|H0m1?7dtDFe0OkH%zGWewcEIa^e2`B) zAo_qJm>}*u22gcC5nPb)9RbKXFasut|4smO9+&|aB!2ha#SZW%euv%_gy=(gCj&+g zFoE`Ayi4w;2Y%taI|1qX>mmB!-l=vqgAKs_7@ide{Gt2^pJxW@q5DAJC4kxe4p3i^ z&kVb5K|4@>yw8NY?m;_{ew@$zyH7zo(0+o?OauOqpCHe{yU2lp2%j*|#k=u=UwH4F zyYaz-pr1dURd@R!{qf%2cl)5fz@J%nXMzNwKlz^Fcl{y0(4X@MzQ8^;f!G6IP@ibe zI|Bw#{*dqLz?FUjXn*i`d7yv5_x*A_^X^^;^+A6s0-pv1LB3Gl$${|$Uyz>;K*fGR z$S;IlPczEDIk2~rpr zL=jODC>iV=%pAlV!W`Hf+#J*#(j4dJL~II;j}P|8Jepd5Js zxF{APIgpMV0B)2MksN480l*UpW5BZj0GY%O#*q{tj)E;MN6qHqteed&mD5IXg9(Q9H1JdUbq|S1`3dk z@)h6#zi$`ePO=^9fxMrOaxLluazhG`L?IS^hu_~p$rtj0yTJvVpcn}Gz}{d2{7HJl zo}t_@FClEiu^c{_)%09@xWlNzsu0cN_WfvjI84m*g_okQm_&W%Z!}-;m0P z^RIo-7D5-K8{H+x>c0kFL-)T516M&?h+WW+EUP^Y3k|FdZ-!5U`bcj|tKbcq{Q?M& zdkygczCSL7S0xAB43P(j!uY{9LVM62Pvu&x`8ft3%~ua1t1`!?hqnh>>yEF)mi`VR zT@biy@J9bpuy=9n%y@Dtexs_o1noARAhV%JM>nffUEV$`-q{&60$T6eff&ANMwby?9}hoy~K@><4}>EEQ8@GXN{>m)|S{LRoIjft(EEpTGBY zj+^+mvf_Ao!)~l-v3}Arsv{~Atu(y9u01HSR?0NMIZyQ3PU}gzwybusEJkN00*aJ> z+0(c2cuFE3!@)NFkaw{YYI!qJU_8M(T#Zc<>N&FwXXRFRtEeAhn`1scjP{FsO|fT_ zckw7zNb_36&m2Z#(!@zVkoC1@J6Jl4dBxDyV=%|#=_%~4wrCaiV%9)=P$ruoY?g+3XlBEr42VQC4b_rn*X-&&kD|2Q3FBI-nk{qUp*&K#ZGRtX|b@@ ziDc>_UCrb(`*eh~$UWx1Uq8ydr|`}gx#uza*v^xg5T_(cN7B(XSB~n-{5YDk-4@~m zGiZ>Vc}#X=s5BSF8cjE+4|`|~rkqX!bQPVZ%LrL(GgabRMd%jHZ0Vnz$W3~Ag}19) zC^!>tKMzor)8mZAv#Qs8tvcRDTTbT8HPDl|*VejOWq6&vI+a|g-msBNSY@H{N=H~z z<5Wp}H57d-IJ}&Q$E&F89LW1bx=&-%FgDTbBsi3v_}HNloz&WX0xIa#otmNLUdem5 ztt|jFincx9FjLuB3*K%RB0U1TfmNl9~^ZL$|5GEdg|#t0f8!OB`mBWC)<^ZhGo*- zA$Q$fLoDpifIHM%57@tAiFx9OrQxj0xb?f9AlZ%bPkkrnUcSQaZk^|RavW^K2L`8Q zY^%l+R_>H135l%%sBjI1CIMsZBvq&TJ12BUazBbA+=9oo#ll1`>G4|U)xxVMPH~(xZ?aPW}J)9R3_;e1VI5m()^krM}&B}xlw z{x~_FAW6IsFy4gmd{LRsbvmRP{yMJ;aAE7_6D_HWbPLxmnqUlU5>YW1?V zagC;UG{+W)P=&V67wJ9{PG>*5deGE^uW@;TTkiE`~+pW zQVqOm=`S5s7sGX@(xq*&l3=^)9NS1^Zn5>FG*zT+H{5R4zx8`q8;s6}XHwTw=g1kJ z5-cYw3PkpHgenbee9ZDMF*%}|Q^M4Yik(Cjg#SLa5)Zl;vVT~3Ws%VpCA(d2R`Bs2 zN==?hTcq6sG=4|SZZ97oc+=4s9%nMS>RsV+bMdo09=~~8r zJd)gS4<`+(#{x9bs{vREhrekYu!& zDEFsb56jW#%y%!&j{d9RP0na{;tQ@!mo(O8%0)?^eB50;KkouqVx+3L!<$D%cjAGD z_E~Q;pOvwU5*Lk_gi8z0j<-M2+fLz>@r4nslci{s2(T_>9ybqKvvCo%Jcv+ov{g#` z%|fF*LPN+{xWe!BIbozrjB6GdciipMCz}h({knASpx7XEW59prdfIzHTKU4s$tJMM&UiJCy-OD{4+XkTBM-TDY$xV zKJrej?F5@v&gHqbfPWL#YT{JDXZ#!YOWo+8)rPm>~h4Zt@ z=?pPQROp|hmCR!Fpve`UHc<;GrsRp(pWIO#)opqzR!#zWxpDql;xaT%rp4Q~pVRX$ zj}EoUqtA{zN2uxAqufepqN^r4TiI^fSD)FjCABvpfxk(4hLilc6 zB4;6CJiL@fT0G#TWwcWJw;*FkV9g2*Ei{kc?Es#Hp6u*$&s z5Mudv)5z?*vQ1?ZD!Fk{VyK)*mAS~cRgm058%ihZ9<>Q;wKVu4Ct)R}A-|6%u5Ie- zDKJ7z)Cw_AD-#0&t}SaaU0SJfY_Y~YHR-Y!#{nWLUg=;I%*%&plk*}6WeB-9iVo$+ z=QX(Sg@sQ%D*HbM8gQQw4;rAiFw?OLT}??T6e#~<|23J`GkLfm76b%Rc3vwBxy=_A zPn;*19oDe0X)z|OcZrg6k1wRCJUxbrR7bhAPc9q0lcpOh`O?M2j-Q7Zb0-%yAos&& zYVwl1c%jVh#>BWsnA&XmE1rfn#`YWb_=%HeaC@#|s-2fd z`B~UIg8-os&bpkIZd3KMu&;H2!q#&auLb%0#4=UV|C+u1v+q^=y*L!Qv|L%rV(-@A z*V3kaHD(vuePHfd&XYsxs;9S8gXqGQJZKWvS)PRs(llF2Cs|z{JUu-fV?=#*+nI<| zPCe)mVq9Jwj+Fp*r$Bn5$m@A7A&*!jb9guOAL^Z&dn(HBfoY~yHfG{()K3aI{b;M=9wVaU7Y{1O?^s>IVgf-z+r$wk9 zTFjkK>pHyBRf7J0*LmwJQ=ZCogVWw*p5h=KMpbV51ku~=1=mNGtZD7+dG)g z4XTOWiFj&{ka$tS7Mkm+-D~5Bw$98Hl(&YNs#lyQ%2wnpKHjCcY*>78AJiYSWzPH_ zycVWm*fZ)@MAgF5E@dSXCjF1b&;pIgWIuIGr9(&Ozp%8bHWYY|#Fo#?*>@B#Z0&_c z^=NIdq_WT^VN(%*`R*ZQy7^+36S8ER^la_DDoj9f@km^#P`XOXkg#OVCdE)_B~@t# zHg6`HO9V8j;!5UOTcu$jZSqt~+RamKmkB`6 zn`|GZbW%BthRmC|EY)-+-%yoV6{w{nNRyO;5%@)L|k_GXYp^O%f2bAK0z?715{Tz8L`Nwevf@g=fw*tcDy(w9>Q}Q|t^;716hJUP#Aj0}ORIImN14p=#n@WEu!;5SplODzRms?dSwq-QNy;oTB zPQjB{79ZY;PE9gvNs5UUZ<1GBvF>)s+U6_*Cy_>HV5$nbg7Uy6SS~!LTN_rx!Cg$( zzDd=ry=A7qX`9KT!^vyWayMp^6kgSD`8hG=>u@+nSv{T24X55LOy{vv-fJM6&$S2T zH^X*x_7CqYf#+qG0dh$Lbe%q%jEsJ>QVrQ-eEOeyHIbi3Wz7)Nu@w$ zt?-PVyp~XpW25R-UW!BjqnJ$b`LLqu!TiU~?Uq+3L(%?(bQ&$IHs1NT?>zXNmiC3h zJf--Wx<$TnBDCywF+JaVp1Kt$!}&SNg!fejYbDZ{D0!299Fk_W5sC544EH$;ZE8#q zWJmNwpuT?k6>IJl8Bsyqql!80f{N`XLtn*;TQKaBIbGyuzYxl{~KKp_*bts zVk;Vr+wC$(oQHGw=bQ>l-aOGPrzQscK{kQXBu(Vk5&J{#aBZ)vNwME{{G>`Bt4a~w z>okW+!%m^K-cfEMb&;<0P~l0pyyyuW`hzNIvWy`S^c&YI>G*@@v|IsT>*x=d==0}KKZsG zjN~O!RlGdv_=ctLb)%vyXMq+s^$_#=poL3qg=}lp*n;khikv<5k$pla4M-^{otCaUtli$7OJc&6E*%hbvfpwQnJlD4FI5*uypZoZ|q;1=% zihC7b>K!5n_hDkahNAN!UWVT}sR?-s?U)J&ok{v57ahY4L7E2V1uCev0D~_or}jrq zK7$2GZ53dC_=uCI_)POhZ5(}dPef8@qPjz$Mm|CsB;Ga9vWklET%Bv0P+*H#=}9%w z-mS)QIJc%6DIP=bhj@Sz`%z3f^$#0_1Os&^c#Ii|QG6}Ym9o7Q*RcpyO}L)KUUyIH zm5cLegz8CG%~!1l)|}&r0meSIvnt7Y(~>hHZmMAZqmA2FmlEy{hF29lr-Gn(=U4@e z+&caV^5B&N%y2@c`n=3evOm%@KB!ElM%S~l_afkj(ZQ9skUVFtVmTMCx4k*YEzwlG zWE!TZ{OY~<7m)?H7L(Ca$`V(r=e;Ztqrc`d$*x(q5*;TGWziGsCkVZG^DKJJm%Qs* zavtGgk+@WySMB8}J+t4x{7~@TC@h|4+j(_s)^q=jV|}laD5^L};BS-FQwxZL$Nis* zzWStCU|%#ZT_n}_&5PEyZw+(;|Evkz?r@udwle9EeFZTrjq|#zPbEk#O}{PvVC+)7 z5}oX=k3wvKgUGM5=LOXw+^zMx;sSL{WHLw+~WyFAEVzJrP~6g9=qQgwc8!0o_O+6 z0OA@y?l0Ot2aH-8TAM*dlM%?ZA`q0cTN#8{3Mfq4?Fd3F2P7r!mIhft-z<=HTmX?r zTgQQO!0MNW;0y;IgKmoawt;a#?YDzy3kRlwZlc;aR)hTe!G;OvK-jMb;T{g;0NoS? zHlb{D1bD+Lgah3`b4c5nLfVjb{esfNfk>b})C1t8-6kOQB+m^f+cW{lRL>D8+uQ;1 zKRkYhxWn!i!?=mGGX{ji5Fzd9fqR4)a)w|-17(6FMLpU;h!)`WVlS?Qbv;Ak!X4R# zH;Doz(%Q#nXY)XF$XAi~dV*Ye#DTPC26*EOEDR`pZTcod8A6c|8WX;j19(a6R4CfA zA`68#zTh5&1CrsuBoKkHT@%;*G^kU@5Tg3I53qY3W|uFJ4>tsU5}`hHQDlT!bmLQD z(AO;-uipWAQm4{|gW(XsF^GJ$zYm~3)-}Y4pk8=|<>7zFKm^DsH*pFq(7ZILH!=Dx zMnbZ|?+HX^5JPpqp7~fs(d-Z@AAJ^txgBl}Pk@xbQvI74U+Evt3yV z-H5e)Xl+5N&)0@MIglL`{E%Ldp2XQ~k-bll-ppMC z%e^B|FIig`WW-q=lhXiwns=!ZLnByCiLVLj%;u1FsG*}m`!Z_ybfWVS2T zTItxgNFK7;XS14cNvP9$7+;cRR-At1;gEQ^*>GcDN3eS%empaDQP6iOIS(!&Vv74l zC66Bg{_;QvkyXUq5m-O65KSmxGK3)J-(t{rouGWAy+)8v!ht?yBPN&>K|t6!ZdRa0 zBr$T>E%$yt^3w)(L^h1vCo`7UTK|5&@xp^e(=+xy6?kpmFqR#okU>nL-@_!!ds{|h z`snHojgYW{cY+ zs>b~D(SCAIC7>5uR1^AC5Y|_a;Ef&h9dv*=47h%72q75d`f751-&e8lrIGt7=K88S zpMkXbPG1J(R=x=0=#2;k&VjyC6dHsw5TmcY#G|IU^-`X%3LW4}FHu&Bq#lgZwnT=& z27z{Q7@>N8v(+x|*66xP?CLvB;2L7k)n(@!cx}aw>Z%Wfc6JioG}PZ5KD(+Xm#p_M z)d#()$+!((E#*`Rw@ z4L_>*Zs|nomk@4H2{6CWj#0=Q8}mEKrry2bo;+#3Q*^d~WB3=~#>uuk1n(~+Yb+xx zvk1)DG9vu`QHkxDD!7>ikoZ zD?hW5xzV(mVjObEpUSr^qY{wTwDHNDKV`>Tv7{uterds*0Wf^1J#{ekR^L|(Fln*~ zE_@Q>5vPL=>6bIqEA!BZD0tmA*DoCyt#ae^fWzmx{ z0b5z4>L^c^e>DMWQk&J0>QSTFR$Yp$kV6=vsc-DcDgf)^TiK}^<;iuWBh9Rgx`u}U z%4KyFgw$?9S>X!D4*n-k<2=x^|o05;rq8LpF3_myq)B&15)V6_NQg z`<)5T$&`Nj!tYwhOAk@)1JA#U@v5>@77dzTr)18t%bfj}CK)j6x+{3ytI6zH!yGi< zcbfMJF^g}LD6iB2dS$hJHpf>{t@_IV{;2kqiteJ!H<7ZM+bYT{O#oBuxXt>F0nIV! z!EuGk{U%K-tLAt%46b}kIs$3`O&jNJ1y9!UJJpFs)~UX-Itom zHGU;B#uxFFf5me=!dK&d-}2Q5oeLAroCDjP!;lXeOC+t`o$8Q}xvgK_bI9?x89qJi zOXeo+YRwCaK4RO=Bmso$$BV$9wx9RDG<5v%$fub+(3SJPimmq;}mLMcs)mNa_mYK!l>goK(r zbsIvmugSU=Q%EiT^5rB*lZQ=hI-0M^>K4<$U;KT`NufrruC+__UyF;{O=LCtN;YFj z4V|sa)~da>h0wM9E}^>&?3<{;ZS%h^5Vo}kD{;DG!@7)tt$0^)0~=QDR8S7}duGfY z(1=gNyM*jHaRa%fAf}w#5fOz9qwh6DGhqJOMT+re&ZI!nXV%oiXqVPkKn8VPx<_sT+{Pn{8F;gNuE6Q856i{r78?|0_NWXCHv#(LX&lvH_EIeW zcwC98vZz%aBq+dDZ_~~*LRyTeQml<^$P8vH99OcLuOO(wRkzpfHA0%3OflBLEz@W9 z9Kt|YD99`_mI;%#Hg7Rr#wk;FfVaV9wc|K(jdGaJs)}ijW6qk=zWX&qV8Irz=@Y%I zW>#W0J}Opiu7+!s$-**M_6>DOXj9>3Q&q~Jm{Kg&Jt$Uk@$j-aR;dUw{NQP+FAuj+ zHGD!CDsSG;j1rviSS;n|;muhTau)G)iAy?Pey!?ko@RaJ&*C;9?g4F-L$BIzmK(}E zU5csVVo-IYoX=9mEO#w5V#(@|V#dZVQ*{4G8Z}J(N~i5KpsONVWD&PC?$A&ZuW;=+ zd%=tnRI|~qe6Ef;4lq|6veL85z|889U|zvH{yC+FksUe6UKk~R!BgxMVy@O=rRR`A z&h9KKPJm#&FCo5ZsunjNQ^n7q>P<;7wON#*gUDKvxq;!_WfaCuYytInrg<{?)zA45x2 zYk`owGWjRUbNVOb6kmM?HiGJ63@sXi>JLhpEM@T`vnT+-da8nK&THJ?$s^U|-o|-b(5skKIwMQdM{Vj@tcP7UN3LTj;$`lz@cy zQ|r9nh=+TP`L_C`_nr%JIjlOi_BDR$0sCE`u>f0)U&$WuFL6BU*l{Z#=j~mp2mPTe_yo`&pA_8nw)Yg zh=CbZ=$V*2MF4ptHLLgIg`HKRXK z9K$HhHJ{6fFEgr;Gd<(wPN{gy;KZG}vHF+Idv%>)-nN`X8;7%|EO+X0g6Ilo|eyVvPTXW6GPk z82yLE%+-eVNq*S+`p6?t%n}GilOml>s}|a5#!%)S*YXl7gnk5p@62kof-RAjSApQD zkCiXa9@z}#5zZNu=YY4QVF40c_Fhlr@^G|qx1DXfUvqf&^?lv3l~BMa2!7^&y>!hi z*7rW#OOw$a__upfVxRKKo~+r=d&Fhi>YkRV>mHV6cW{9R?+j5eGENoH=UogdmEG}S z8&EF1F!t*9YM%O(`e2`SEA>XZ=wFr*FeW`6fmuanr{A*Rrge=C(wVlZ)Txa&$b`w@ zR=IRaUTMN-;Nfa?dBg@(E_v2w!+|ERIOS*8<#oMsT99E}jL@ zvZ+ScAo%e`@9_`IS)^XS+<8_0Ve_JB;|PC_`@F2WT@h*^x$a1sY8JdmDzHRAm{7Z*W%7ocgarv&YzPnd-m4Jt!fI!2 z;J?78PcdrUuviMYNA}oSc{!px5`u{P6m}}(LMh~F+v*EY-s(y(S346?Z+R0{U&v(> z8`|@84Ry6T*(;oEJp8JSY@IA?d=1X7XTR=&x#6g?s>kEbsAG0Uzko4iy}sVkSgZGA zmkO3v*qHUOED6dL4s;V%9JLMW`9*C_#9id^?!qE{4!w=4DjQnu3vJzZ8cJXMQM>wD zV<(4dTRVHJ8cleMifW$uoe4JPQ1><1VX#OgHn79BSl21T+5I9B*k-pwH!~9(@YZs- zFz_1>VTXQ@rGn3zEilA!Gw#pWAVUH59X`NKqn1O6y@l^gnED7V=inqFCiC!9mSP3J@St zU_s3WAwV`(^9+lOy-6_AI9t@)1F2=IHP$ArIZ0n&Jb^tG(c7ECq_K@&CkVi z!rTD?St>7!X2GP0f2OxsW##PU4Ub@Qmv{_hp*0kX_!!K4VSfbCqNs#&h&1DcT3Oe( z2(iidY3}Wm_;v%qSujm*!7O-Eh{Ww49zF{H1^)h-q-6Y5hRz!@AT+r_8mE+=6a&LR zw2sN9o(}h;=X^fd5SdykPN_r|a0#dqMDV-p>Sv9?EuafG5wL(~0 z`<=v0UKbd!c9tO(E!Zgg+!&5=c~kkDHe8)XjP1aSD`OLH12gI=6r9%vZ11;Zfiu3U zDqf70+w_7%^=*cs*Lm|VXv+%(ihy}s4eU%x1Dpskg=D~^!cpP$)$ftl031gL&V^=F zCiDTq$fj3AKB80DWigYUK!|M%tr&J1Xd~^+xLWsNv9#G89NBRso-1Xx4hCIX{dCMa z-|*jr8x$t}Aj@Fp4&CL7hCE$p!t6#U4j2D6iX<{37`7o{C;1G(rqC#Y)B^$Bq#lL9 zG>oF1|EAVz6Ab4IgHTl|6G)#zJ5!!w>F8x{4v!808mq;)TzXO+ z6!{KFnQ#%sB0!UuiCf8kCH*Zbro(|3kQwrdl4%hvBF!JG;K@5g1X_BTTKZseVpG=ita)DF$-WZZ z{@_U^O&bG)pUb!r@D%1Wf7vd`P`%pW=G=6L*-Y+*McI^tJ?2wsN$p1X68bPI2k6x| zr(_h_NpG5J_Eb#jgyvsJgP)ujMfQh4SdYr3NUIptA-kqz8-KBx0|oq63nV=Rp^TrRv#$mw?k>ye5@1HF=p0`#Vg50WIVE`^_=ViuD}N$n^t3MxSWkfvaz2B6;F~kV zMGcv}YaLe41+hOn-xGisbcZlMJL2JmC8)^ZG^Z1>oN9R~oCHJp=ZzSGw!Xl>hYW!G zjP4Gy@RD`=Yo#gPszQB4e-qUO^vFPEN)}7b9%4!_r1vZ#A9xwB+;9YeVZ{rd&0VHj z*x<*x!Jldo#*AXj*hLw1MH##`62axa>jL<#X4_63bMsNp_-%mBJ}~0TmasMF*H=hI z0geAw=j?%Z??D4hw}U+XW4o&NQ3K_|(YK56+afGf`z74)682oCFig#F7o zC1@Vs`FKPiV+nOgMS`~v9s0c||2jWwODH-Rdt7aUssH-*oE-)CiM4PaO-bL_I55LvHFDihijaHDa$kFF+V>Uhx_kpB7TzR&%G!@ePtT3 zJ~O>{4)`DSoxQsU@9c7-7Ec1LX2I_Ztb)(FumG(XnPk~1!u0YVMl_bLfQW!9(~-ES zpIoAdhLjqd#w}*ta_Ddi8VFVwj`xQ8Vxf;!QE5?+GA`9q|6F4+)tBVQ!fpuuc3Kw5 zhT4xIn7>!3GqkC}|4Y|sErb4+nU{`T@z3W=+1H9EJG5xJxk$Dce@SJ+g=!7POTG2N zn{)rMl#zBAxOfBKo9l@_^Pm-me=O@qjMexP;={0|R{$?i%A8=|~G9|+?iWV<(u!L7i zRKnJFX>77_msHw6yxc2o1zrE73kpY5q8c^umWS<`kF*=hVm$mMH^FK~f;?!hQdNIx zWiD4UQ34Oe`PpKq%Nsa+k#p-teeeUx-Asp7x2Oc=b&~0+muC1wZI1rD+pXuzsuXjc z?c<9^GMso>D9Yf;sHCa{Q@5${#IIEL`fF%I%Ui`Cu1g78VU4)|J)-+-1W5avGLbs> z8waE$D#dV*O*B=-gdp}DYbmh%4|OJ5IV(v%TJcjs+0XM*#A7D7 zQDmDlmd;EK)Wmek1qK&7<{oUi*lkJsN@M1yIq1{YLqEjjw(^?l#!tiXPPhwRmF0=X zURJXY(i*{>re1iDIdMaQ%q#gdcax9Aln0!eYgw%}laINShmnR)k8vLS3&oNe!N`Za z6j$=)r}7#H2nh_4jINRf)t#PYY;m5ef0}(aio*yW$itFHilWa&yHt`l%1%To0Rq8u zl^heNAkwS_jI$>9T0YTAt^)P~=EQD#s}}@hAAa-5$u|ATdyd3qlcX$pr8PW#7Lz2g zwNKtnH&)a%!@umG)}XC)I|fgRPgp&;+RV$OsMT1Lc&oP^`(&q7EE-Em0rqtqB z5EI_iqiSuagEf>G2}5FBy6XyO7O(@%Xx;Mr<-kkC*#a^VfsDnX8EfBaF{B05pS>yO zv&pkv=qQnSMZy$i3OsPR8OC@`rat&2mQC)U%(ZkHx0QFuN$!SvNo$#E38oyxKhRo0 zwCEJ-pgQbGT+r=p%d`w-ak8M;k_#A&f`6YY0mxx=4l~6F|3thJl1$|L^2DhsY$&T0 zx0-c?Th04vr|^pPwuY&ysqu&ezEf75;ZjJl4Pwo3?&ZE8 z(fT*1Mm=B1QVyO&oqGt;II+k}%LqzJpF`nnB86n;a;-rQb|}wjB2*14rJ3>REAbY@ zP;m}X-(r@MeVv>^MyI`f*LyI~5*1|@y#|?eyy}mSPPtu?*9)#}vrGNKlNnMk2ug;w zgHASPi``@7>%+g?0xx+|Ap)5eag5 za2x#9TO+0=_FY$?J*^kuzQ1WSbLmysD6C@$%?$}ppbrh>>P;wO z4UVGkbI1)ChYNTSR)Jau1ZJV%_FBDeXnAP;fa?SmYd|k0{0{t8LJ|V6?)z?W`}(8Z zj#8>}n{M+f45*r6v>9WU7YSfWuv7OxRu>(rq{qi0a6leqv)6%*8zwnDDBw?y7O~Hs9b&THcP_dS~^#Vm{f{PtgJa`>Pk>G$-1fop`sE z>Z$hK9_dnYiyDZVj&>W!RGb2Gmrcw3H~d1*QhFQ$*G}f+uzV-X0@^+?6D%mBphvt* zu;#>{X$m_k<2_)|pCFC;#3r9GN?)uthwKr~y(OWKOogZR6&U8RE)WWSh%cX@Q-9?p z!?VM2Uu}o|`QFaB>jdlT*B*5xrsAfW2b`uE6ZT&cf`_5qw3%k|Zx#`0zMVet95?D2 z>O5WlC>MX&K0rpzW(107TxJP8BJz9^ysq)1BXb@zzZaNJ*u5i12)GLH`*H6+zk%|= za1`ko#xkvnXF#=T(*F=9|OSklB7-SO~&hq6Z!b4Tu%Ju**b zyJ@buN+__Tsy(}h#& z?X^24U`V{`F-XAPStOe5DW{w{!z~z@{LJg#RHU+L^F_c-LwuEA9NOQ%Y!K8k>a|M% zn6;YA|0p(fCCfb$ZYtdL%vNi8%NDN?@>z8ZQfprOoVIn#EAmXBnw2aF90|@FC-i~= z%aP9DNp0}N@$}@94cU-6)?`UFS7yYV_?sxSQkUoDi9h_tv_7mpC+kDz8-h9i)s>Ea z^gVE)3n%>5?qnu0o>VfWr(~KqHLT=He;t8-{Kl)g+o6|E2RsX3;x_DfCt)@!5w(Y2{2;}knJ9w-6i{rP zlwJlUd;%iOQB)|yCZnye5%B(U%eDyi8`u@&dPj4=0^&RjMLu>64>4tFiBMP#Nw z#ZF%uUWi|smbNIBK`Sb|6+(tDm|YIU3e|-xjL!X(m~;AP_5qlI5%LG3Kbcx8ltF{O zxVsI{ng%PuO8Z;2cDbI&2I&@HZf>*inIwM9I9_1HA5|aj+m2gFixs3UUCNre(#^dh zssgtm*Zx@

*ibI2<}?Lbj;UgY2>uZaTxV{cT}1D@LKO5)@eeA?k2Le5>&ZHP;8mGw6;j5S7NJ6-+q~EIY#5wZ zf$RC*0yiz)?=++%e*$8j>&wsC6x{B)!Z}cGo2~c3=Y*dxs`mk6USDZS+K>zA2I&=9 zp|fY)}-Zjcn)!^X|NU=mxObAg|2gkD#k5k^Z~OxkklAdEC&w7 zA}Ct(!R^0~Rv3lW8Y3@AGDqgfD_Z{KsXoFiPt*_T%qg7yL?8A;P1gWd?JD=es~dEa zMq1GdnsZnwaB7kJv04F^2+Mj=x$UUT+^JHB3%ZKE>Kw$zZmuP@X=FMWG>GPd#Hna0 zh2AV~k#q$GUjG;93`*)bg-b1U`I8Cm3Z3HGoh5LVFyfOagRpV8$1D_P3~&xsWoWo1 z!{*9nZNgq+;n4qByOoYnosp~`Ztxc-#h-+rH_@e$@svSE1Uq}!m`23=R_M}vM&c!@ z5^F8Lb2{E*eNh1hc1z!)aGjZj40xtkBa8Mz>PUe7qUK1^ z2ultbqJ7C*eL>>lDJ2>zi0_O8>+l){wG300U~zUVznu1lP3}lh6MVHPNjVOl0Sl(7 z6*h~UGdbsMNF)>v@EP{8PNxnU{KA(GR^#!?R;lQ^j-5t-zM(KIdbxeWJ+(UqWEtRneWh51w$Q>6y?oT3aSeIU%OM3V5iK?6APQDdF zTm91ny#AiN-=u-5H$`NeanLTpP$!ZJFiIm(64)?Gal-vDG%mRL)JI!##j<&km6LZ+ zvDjg*0Zu0G*B8sH)L9;f%{N5qaYg7lIVuH;TFn>r7Gb*8yP*=As?_XkM~d39|Cfi7L+$v?-@H$|0?%>Ey@eVQKm2xgmMbq4%W zapo!2>w(fg?ur&OivMzt@AAy3cj6mh`W)M9(4oZ-_8L^HoP>-8x{bL7@rXP4gxD=0 zxgmM|9FNz^UKr^Wb4&T1@#%|3%OB3(6M|vTv2QZ+?^~jqAd)sEA-}goBLV@@{r`Cr zm>9Yk(hE768d^)bm^vA{*gGk?+L->!`DII8*M8$SHs3w@)w(ReL~_H_dW)-CBwX#c z9W9|cDh4R1TALjbI;Bz+vPEQ~lYkOOST!R5M0$A)7@;UG^m^p7zm#gD3XH*N}F3LE=4DOJefU zg5hpAlK+!-L@c_}*4i!FWWC;{2#H8OzihCw`bb-);b0y2^+%2hEh{9}RFX+?HHnqQK#WRqVW_tV;));nahMgU1f00_|?{`jODvB@L%}=xCcHn=- zkr!1TXU&%y$sD6Av$vs9cf_cbtAd-f{qYcH`{_iw9&ntsR-#piZd_p1bPe={?>pFZ zZ|LXKIb8t;nM7-az}x#2djCG)egV58EE+JtRy1 zqlIk+Hdc^Wo;n&^D*3B9f()w-YAwL@W9m( z3yXF_3N-9 zG$%GL@1;2kUJjvxB8)i&79><1B9(@siIouDUWw(Q0tkd1QNYt-896E`unVd(HZ;Mz zO7$uvvEfNMjl+M?NE3|2Ng9ff-qw_G4w8vP4xXw1+Oy>L9VR(>%b&u>l6^$13M^&V}=u{=qK?K5)^{4 zvA#_+a{*(TfKwR2AA>VTFhj{ml(BMkbj?swyx+X(QdYfDndW|qy8-yN2E}U9eH>Nl zhmBkIe#Ytd?5bD#l^m0oj7HY^}dR<~a6GiF>gnt<@tbuCCRAq(GB5kXV#V76f9P-SVTG&j(>fYal5G+?{=(|%7gaujzIZl8MrQwS+LqUairEIo=0|uMl;NX_7Z5 z04sQvgZ&iY-MFPf(GJwBN3xF=bEqyIBoOV7x%OuOMIYSQCx0enO`Wg8J6WPfN+?-a zP@egm0+Qb)W(?dgs3cW{<@nwq+h__7c7pIVh-nEjG;5R=aci9V&c2?F}aJb>+EL9@19 z8aDf(k1eBPHqq9*$nQ@NuT+Ni*}YE0B#hoRLYrMNgx69;?XH-E`9Ytd^^zx6F<6qs53Y*#`yN7L zeWU}u!LP}~e*r$@s1coy;{20Zj$}LH!(F)BY6Nm^IP^%n!TkT!H(va-fo3Q7vKll!u3E4!~=rD zU5)IkT{yFs+)&NbWe)yg;1g}cd8PlS5gWEX6)y+`5YWiC5gX%wLCX3r7XRC`K2qDV zUsOZmw_7KLhbI8%!nzDrB9xSDype_01T#%ekP4?TrizQq9xAp|?rg{b)*{F*{cs--4S#bUYc-=~dsV~VKzf+@rOvhIi*^z)fVwBFb6W%I#x_Ur8P z`6XB!2r2NzXAZuzd+sEdw{8XWg9qtWU=EfD@zL9`7jr-l>sDw8w$^jcmA-2)l%4k$ z0J&|J|8U!n3aLB@8SmF8@G{5omy%%oL5Ys3kg_l(nsJvPg-rE;?20sx9ty4vF(RqF zdp3X?iDz8kBR^ZzWiWvPdN6dnDL;F6(K8S$nc3$LX>Ei^OP`yqj0!dsqUqsyMEZz- zDH1Yy*?l5S?Omd9RG&QVJXq+8$&m*UeL1BqoUuk4Dhr%2Dk;4C3s?}%1=Lf~V_U+! z!Zd9*s%l|>woxBDF=k54ZGpsR&#TNN=#UuZV;}5k5JZ56R>o}~x9%-W*JK~SoO}IK z#^qoU>)QUFJN-meRUwOIn#(wZv|PB0$|S3$I4rag?vjVbj71UPapY441A4)qh>lv6 z!C2G#uB7QLPBo*38NGMDe|5eO(u1#(_UPbhS=zx8T`R5gOP-cOii&=8Z5f=m>;2Uc z4+mA*Q&8ALPCtjbW@bw}r}IVwwGm{^8T@7H0zv1%8EVH#NEsZzV58hKT%&A1uLEDN z^L@1Zu+iqR9PQ|qGT~%5gF-!i=`0GColN@I!@j3pl1U<|A7r2;h|B~k z1-);a6CkYtOQ6}QTB{Yj~2AHa}`heIQ z@Pu)p(4i5dO-hdlCo^B*-YvH1QpCDClz%KkHHjIE2{RK@{#nu8X}wK~cDw3gExC8{N7AEL+>a#Lr=;mZ!v}x zhEAqg$MLP>!e3Uub9u+RsUPHfs?K0pzv#vVV;g&FGX085cSP=fNoD6M73q*CN+1OS zNjC8tgo_RvP*?zXkYk=CQ%LrKlR`=&kWv-sf0xDH8A;7Cl^f<6yVfrt1=RyDY7-k^ z7b!8AL_eXS^oQhJI-hY}Y~I}F)p3`LRu!N@*Of`;yQ+33w_Ap+Ey7QaM3Lw#%_i^% zipmXXG$P{C_Jtz(bkHNQZ2Sy4Y|KTf3kF^H|I&8^+VGOh?Krel%Hp^f1hkq{a&@K87F?80&N-TUXh zq3|kV#6vC8X=wG+zWR{2c7d}_*$ho{Cv4}(mK{loG`X4hoB-(_+spK;WmB%1)+wLX zVRI9If*Vpk?IG9nmtO|Jp)oJ`D?jpW3@I*d6g(9nHXKF?5EHwh6@!QU`O2_v zY+#-5s)3Ljq+16a?g)f?YQSvM|Du+%ei~1d{FASBz5=gI#m7Cw5A2vubuCVw9sH{e zJAYCo0Ix0?#|K)kh3zjK-x4H+TPtnQMPJGt>ID zCzRgj<fr2;NK*>EdlUg7Q%hTz&~gW`VqQ*tlzam zqpn8vKkcr#Ws1aOm#2pO;2UgzSIzvO>u7!XHwU^Y%C#*cU?3oM5Fns$BRU{sds})- zqwizvN^fcFVDtT9=v(DU*xOi|7oY>bTYAD~>l0WOvEPPQ_-d2cug4agmrrI~tq6fXAQCb(u{a!tXgfXGt6z6G^HB z7TRpszKjnHh42ShMnQF3z+t7~O-83NqwsB8O!kixsG$}aSVHPg>v5806?Nf5kbUu5 zLTAmPIwIDB%%5zjm7rt9;~G9*(V2dw8|X{&C3y7vUd z?{y!Y86rjR4-_w){ptAoH=ED=c=X182N=sEaa2=h(hv$&6H8Oaysh6Mc@JaIHjEq2 z9s8Pb)7+!)Ho-8-FlrBZ&^U}7P9D1y+YHML`xxsO8v_di8_?hZ7+hU}_cQhV%FCK0+$H_g4XvHXVz+*+mJ6_`F za`REMnQ%$!x<~ItPB#*)4Dc1FB~NJ!FwCak#dU$_9eqcSXM)dJ45S{E$P~&u*htZA zY*t3k-HHJ{Div1tD0t+Z=mXSHXT#$s(C{Dhrs>)0FOKs{d%T+sB4gCfd;LZjTRbY@ z+fkvj3b&uLt(be@i4hS<_Od45EYxMwPjk)kHd!);9ZhVeK+^6}M-{}{aHV2s&yWR7~)GVIvC-E}9RD!A0po`9Znm{ zf<7p^#lH+nt-avmM*rzv5noFW)z{Dj{H-O5N%KA*n zJ9Grh1l<6P33`k&fqX7E00A5ZtO5E|B|jQSTA&p~6l5558d_8;3OB+F?M(GhV7W}9 zm$*G7Tjel?_$?$`%|swEE+kvgq)zEAre&+`I-KmR@J>pnw95bA#x|{Twr%gfp`rHe zP)z?HLqlIg`d^VuWkYFE0Zq3cjg(A)c1#xxoi=~z171Y>hedJIs&XG3V$Pfx6sl6G zY|b9$CsH0OA45?v!7lmRZkxPT!bQxu$yK)RGne^QxBUIZ>`NXH3WXR$fF$-;I*OyZ z7}Sf1jI@Nv=~GV#Izny5@VFcZSE|VX>uOFiI>&CwHmb3(+1?K|EH@a|VzWlaYtQ6& z+RiU1m$7Jcdb<@GwT&buyoD*(Pb&>ml%!dVKGQCKkyo+vIo2~+w%D{5i)u70QfI+p z>@@xjQZ3`u?}w_P#u{OT>G(wfv!DPTlbvO*)3O#-=z=Lb`V0H{RBC#a-MYw94zE8b zfWor26CnMo()mzdB_Xg<;NTW8h@yh52|hVSIp(afcN-@h2ztN}K?J;oc}&22QIupu z@Z!7QOHF66sy{x(r28S}2sJtTGkx5gh#8m-{#p_=vhaTSaG|DQ=O_bTr zI=Pm)2U$+z7##cDk|eXb=} zbG+bHk*-NwH|fMNyf^B=m?xix0i)$C&pIAuRWM{xkbH3D<4i-YDK*VVn@4i&B}Uz1 z#vqn=3iJiGUY@oj>-FPMJi!JCgg-H)=#RWm{tqZwe1X?<)Dft`o<>x5sMPP}p8FVU zj4=mp(L7tkki1R4oP&7${qQYqDA&05pV&;VPn7G95drwONG4vlkV0M@Tqs|7uml1o zUJ=}+lt1wV%)C~M?By_do0xU)^BH)hY7m$XFGz)F=$IP9DKa9$sZG{-hsG%IJJ#4A z!4Mr)5knB>t00Yho65rR#ZYZ|y!&Sfg))E?FBK6$_WjII{el0<_5p9C?dV&+kQWjkpuJ!y0-;xi0dXY0s9VO6coH3vSFizc zWWLZ_%MfX(Ji%9*ffFRY_*?K0dSV~wy-6s2!B?t*6(oF-wwPO_fk7yJ@mGie5~z4$ zAJjcOc+)N0}jwP1BJ;r$hruzC~oQ`x3mx_BS ztk}lqV$5N@C10a%Sf9gWMU~^H(sPy7Sl{i%Oplr_8_0wdbDwQYBb%iTwOYDHlbUpD zhz9LsI>qC7JXJgfnp}0hRO#qH3OPN-MxiBllczYz~xQz|tfl%7o(Z#&Q!3dd76uX`@l&_RX8*KSu^9-e{#gSZfSiBR-qp`%ATDCLQc@z@IT1aK`z|nh{CAS#R zKoOUrk2u3kD*q%dBC@GDHE3gWXZJHC#Nh>`1vY)kldV zp+FC%C4o7ptd2zC+k%))Q*0;0~}-Zk0$i`Q4=pjvT5WL`bgI9?u9932Z8`a&UFotyIf`s%qFfGP zI+UV)ZZcrGyh7g&pSH8KK)JI2)m)qfxVqI;U&`DRW>vE^)oo@j6tgDNlpQ2^uy&jp z#ukMPK0WSMNW^s|zxrxwDT$%XqqcTXnqyXWg#hfY1arep!AQ+z*008V7N0_vem+sx zh(;E=4Er`T3f<`2sg>Jp9hsLL%rlyh#|BHf1TvDHRj65lU+>#a8SmJjl}6H(yqyEw z!aJ$g;o)v@`XP z?p<@-$qs1{rj#WqrQPI<_PcuhB$XS?VHXnRrZIDt(9?LlS)qK9OAP79TFmV|h+gb! zmhG5_n|Hw*9&m=;>AJ=4c!HN5mde8#L`yQS1?YM(?Ub^HtrlO_7c^oPgsax?-@wi< z&lNJ$B&BQ?kI74ns>EEZ-o!-Ps|)(*2BlLMYZLft z0Hox7SGdb(zMGlaN@k~T)>%|xg%VYO?Lt#zhuAQDeh1MvLuLe9_m%bmtHfH&DOz^b z)wP}=In$0nNoy?-(XI80AmP6|FJw8acP|*GQ*^U)z#W9auagXCz>sHUiG_Jm*sHVp zelE+xE8p`od3K+uRKkCOS_pj6n9|OSet0~#lZ@~*?a#J>cA@#adn18BJ?$#;w!ILo zKJNnRQ{j!hpEN=!blXmdO#+KN^Iblv9)CUB^ulyg^9pZNQFjY-S3Xt{O$LB%us$+A zqF&A=7>}Wvu%cl_ft4Eu6o@EDjlwm+)fWecX}UEO7rE76nw>2+gqzY!_X2!rJ~W-Q zY79C1l2)8(CtYd4X;&JtXhdltHSG+r=bT6;WogK0*&A_d*f#L z5z8dpq^y>i=COv|Z>KQR+@l1*Nj*&+?(YFI?xr!O!Xq1V_BaboBTX~T%A+?LYMNFH zPvA*TfOd0N!jUM=Xj51E5k5eXmfjGV#*~&7Bl(Dp79-lET~|7%M6sF=Zi8;rT;%16 zcFvsJuY~>+@t;)7iwH1M0R;j&`EN2+Q++{||1VQ@+E78$jiOJo8Ai5K7V>hYv^_vG zx^4}@P*t=-*LLzfEG7<6uu1%0tsFx;cnkiC5D`ApS4`h^hx#cQ?rSn^yY2$v-Sx~V zZLL4UxAA^*mM0Iibn6SOu8{1AeG}y&FNS^N{3p z)4zuh-ih0TRv_7?o?kKpY9GZQVk6l`UqIKNaw{;PPK-mG335nqKIpgl;ExU4*0ynq z5O1}I|J9MaP73qU{CLKtem*FO21l%vyR&7B`_BK?+{3?GyXGA($WAQjM}iwNj|ZHQ zdfpQ7i|-N~1OsP}u!D`nOYasFp(UjBP| zn09vT$M?V$Sf1&EnBgx%FSXyHspo5<)KdnBAD z6=?pXz(x4e4N>(R|A6xR{Sz+zYAC+&Y&HbM@@ArWh>`Sw^^~0m&YKCb2=|OiRwQddz7vtMd$ET{By*T!)qG*M-un*840#D;o5U)mAiwgZo^jM1xn1?7a~c_s{k;3# zpE!4H&Z+mVH23|9g8l!fEgPF`%EZt(Q!2!@w_|x89~(zZp&Ls~r5cS*sYX&I5Y|uGc!6u5m4MqVKnsL%OYN%B$1N%S`w!?p z0Xl@)>GStnN-F+$02LAaKY(5+EefFh5t2?$5wI3K{E2~nRQRnWyF%CmnlLXh7zX3z zEI>n`DV3GXU$2~B5pet&&UZmy72?bngLKSo%68UxKXMv(I6F6X{QW*b5_(oqtV9O$J6KTz-;R)nGB+kB_?B4f%tM)o+vF>y;dryM-SAG%TgUnN-? zp^0n>eE%*qU0-#)T@%p1Y*W&b)39=?Zdr_zdsVDewV0hz)1G_eHFT+|J8hRiFr8xD z@uOm39iVy_fs#?LyWven$imh`LzrEoN()^7>q_fwk|NI=6T$!2cNnz5mr-oOh(>#G4>vp+X*X7^fH99hj`Eyz&8_+~i#d?lz zJ#*~+oRjPtHTpj)5?r`VsyI5ckPuY1AD0Dq&|D(Mx>ZXBSZZdyMzLRxX^Ybb*1}C^D0ysi6?zS_9 z6INe-z_oK0GXGW49~*q#pu4|z{NwOU;LB!Ly0sQp5Z$&(U@phasSO1cqG~hcVF8D0 z7p{ep#j;ZsV#%BAr5EpvZ&Otp*CQ;w>bh2J+Gdrx^vx)fXQ72NQk<#tZ!;Ktr*Ch^ z18d6jQ@XR21UXWpJ_QMsv*=IJV7a@=eR8sx)K>2CFroTjSaOAYgw!aBjN>Bp}}-n?aCSnTvhM zi@;IhqoVHfk(!CT^3aJ3L35@@^YJnX!*tDi5T~3%ZQey7hQiUhCnfs0BqsU}jfwaU zjk~F@s5@a;` z7v!HNU zz)~+J?7<-2xj?j`yI`lf%~B{)`12+pkWiU1)Mk*7Zw+G922fF$BaYJ9;qGidTODT2ki=b=fGu(e#Z8Lc{*;q0&lk&uDO;%Z zr;?l6!Qi7jI!i7db92-6>ALC0p`~wEt3iqE0l-kHV=Q9t*YeWp`twPphWy0iMWx(& zsLsUc36tUAd&1QM?yy|BqRl7*xT}ARdS|ZUChVIJ5%;mfMqwM?sOsH-@6Y3*hL0)V zQ@Ob>@5T=tZw5Y-$i%k|6X}r4Xrl~gBE)>x_MKnqNDz7tw#PP|> z{8IT@ZZSL6t>>3_6MR*fXlyAi%I;tGG4ZA@(Kd{CL*4R6JQ&O>LtPpv7m3m>Icguy zo6%j$U8SL%C_YJ!W!*th*TVIr)F_QG1EB97?b1(1>%O~kXAxLy#!l)V+YQX*hSa7vIO7k5Y)m zL6GIn%jO)a?H7M@HNi%AHy8x=X0Yx7Yq4$a1XFOW(@xvc8;yQ7PasQ-e9jzk9PO?f z?E=_xo;sisiDa0|LdL^>3ODZ}@;>~_5^vaN!(My4m+5}Qa*y7bjn8QIQ*Uf7byRA{tNyxwb2(>`WNh!|F;xMWSQIoY$R}PbQeTRq1pvo2rd-~7(fCe zLCk52Ws#9cPvSZdf5q#e`kzuLeb1X>%m*oW`x18YINzFiZTAe<$K}Jv>4!WJHroE_ zs0N%b7N#S27{xUMGZ8V#o?W)z4WoZj#y5-A-4QXzi|_z$N#hWBQg3AjQbH_89(0Cc zA}~?(qQ;`qkC423PdVL|KiftP9U2wx+?d=ldZb7eZ*9pJW8@eQvrpau7pM*1&W&}p zehkcUXLhE5$qlt(atW7pH(UQO&^)PHXQbn<%He`WgHE;jdgYdLYqPZi?B-on8S|}Q z8&mdjFn-fN&+nLVE^~Crm05isG{$TOtGU$1ouuAWwHWJ7-~3IViWjOwB^S}lC~0fF zW4(s8>ee!SX*I|-dSVQ9QW-<2!QRysO{NU>#1I~E!{`HCO1G?pI4LrSYVM8$|`)vesH=2s7^es^&?&$gbEcSUxcs3yZcDa6OR5# z!hDa6&Aejg#RkPXoLg?NnRw$w(d4#Fd-Nwj3oi(uoYSv+`Bb&0=Lkg-fr)O9O-h`s zIWKwp)lcMEk35@_jAv;ls;xPN0lk&Bz;c!1w^h4w{Tt0%(2>$QB<1c`O|Pbw<{}_^ zY0^2mDzm30Wtozp^HYubSXjkg%6laWn#9HX{YKkq1L(@w1QF1RWAF&_=8y%mXJH1-Wzp4S`{ulIyAZSbKy`AcKM};U zkJ_Q|EkrM(AbSKw;g3Xu2pr^+JoRBvi4No~aT)d@-wxQYAtNan?EPgCBozv(MS(px z9Exp23h|(IPoU6GtOrlQZnO@^W0;`IFgs!ac^E6qhu#8hjv>?Fc-+F#-Q{fog;u#h zHZ>f&RlV#MXqSCd+bChGRk!zllVK_+eB!3xO;3Ywr2NOsWcM$KBu>i>2%v?|&IwJ% z2YpgTz_LN;%(Vg95{B9=SdfKFw5%h&K$&HG^85;iN?e1>@I{N9-YLG`l|;u(GkD#;yh2XzY7IcVR&K>n1ZS?4^qx@s?k zb3cS|{um##3{0zNjbx7dPXw}w?REX60hdYR4=xu|a{CViS8tb*!JG1mXm7frA1w#+ zw0tS?s2V=+yILev<*s|3J|cNDAohn1+Q;LrXN;)SrA|fd851_#c0;M>@BLGTCpf;;tG=(Q_Ph1@pZ0f5 z?ev8O|1YRn%P$(B`AKy?2_XnE~tJ!hR~oO55U;`Q}=K^YVj7{aizPZH1*lM@GiMQ}p1 zqkDCe8R`WQ?X`q(qg*#!c~5Pc9|H^XqTNXh8AHpH@}Sof8YKpQ+Oa-%hkex#8ag#z zhR_aHEgrbU+8w@$HFWkd!5Sj93yNeEWn~@NdXKXCa9iM9JlU>9Qjm3@g6lO61{57vC3%}*8>f2ej|G4eyh%mc(rPU0MHwFrEQ48@-bh$px5 z_c~eG%hB(b9P7@+{4HZmoy$;@G4S{cO4AKnuiEH&e>;DsR6fAf8lfmt(HR6K{UM8r zGS81%B!89_+mLPGC|8}06vAO^91uwMkYj;yGhp9`3NHw1J>bj$4bW-1FzoCtv$I+2 z|By>&3i=tT>8Nd2wcP?bdX?rKNQUld2FT!ycSIm5tIWrXPh`-BEUT?6-72=e?nMk7 zRMBC>@49p?jM|7qzb2n|upVY-txB&=Z%*wRCUU+{!kdqdh%=WiStx*>DwiFkuj3}e zRHG(yK5*S89htnam$t5bH$`lwREutt!Ssva%L0~RkUX^w%K2H%!{OFuLO+s+F78jr z+6igL4k42)JKE3OCZcvlPADuYIE$_$+xGyiaca2xz<4=D^ee%DOo!Xz6P0PzUS0XQ zU)u*U$P#)dp+UqpWM$DCNtSxphnDuX1MTB%6*Dx2ZnOvM1LaNXQo5erT1ko^22_in zz#_P-=9$C@QMgHhH@iUe+Hmy~gtj@p5kp?B)x$R={V_kIi4-|h?@2M42{K(mho@W! z6m;-aB*~!-AJ*Z3{h#mN5rTPt^!wdI|2JfAr!Ow_fA9W6Y5iM_5~qAGx1z~>?*-Wd$%D0pm0KN7any#+QXPCaLuh+NO{x-66i6lvepJb!S zN+8kJZrA;a#;-d2?ex^x-tKK)U%i|Fx$j6gn?}VXRw4L%|GZ=`hYg< zGk?3ajphg`^)XnlT!=Ae&sBFPD@2vaJ~RoB=ajBBTzFk@P#LKTLRiBzY<_#?`wj9%-Cl>T%ZA8$4S*!~*Dwv%q6KNL;7yvo1%;Jn_X ztXVmdYTMdq1I7M)k%h+{DDvdGWr{_4OF#aA@BLZHe6A?L6EMWW?_RDOf9WxVz>6b$ zPB_NW`~!i@a2UD@?WQac2$W?E53V6k!8aUhfyYERlbq$!ri=+kXBJ9Ucm<2-!-E{G zEE7l-ynK~p8RVKnb^8nQpP1N7l7?^k7L~Q%L$Ln^7pN-#3ll0E|64&d%`?`PByE;m zEGDH>NNQ?2)}n(B)yW=OYBxAiLhd8kD65YmcC~4TTh< zra5ISNSEihdGeZl02?QYt+lUltdY2ZGDE zLQoBvyW!$@Ns-P|&Jt8qs9ok?qbF6Ph+=C z5G^J_nE}4yKKKEn)adLDvvibCi58=#qi^FDe_q&qu*54gB{k>J#anhY@d2hX2#_wZ z&s*HZ=e>)PC3levp>h2xCAS)=z0z7@^rsm3YZ5y>1CKF+iK9nMYYx8UCj6_T;p8=- z(w$6yP`0aN557xMvKA*QjEV+a8FL?yLYqXB)V$Xuyh5+iVJO`Mi>ULru8#POyHM3T(_nfsKnLlhFfeNgjT#sIc--IePUKH6L=#RorXv29s)@`Tsv-8?R?=~2z zC&s_Xz(YQy@amQPzBvbQ;J?G^lDEKY@rnTm`{AM6UlO=|N^fkUe(@+X^L4YBzw4z! z>6E|kHc)vgqBbg7?A+L--zXieTGi5EK~15fpy`)xkq)y41CNC8x9sOIbLaWh@on+#5_qyTj)nJ~<#g$N6 ztYPwExuLnS-Xc+b@sSfGjDg6vXe-1A`7|?#cn4O?yzmAf#82p3g?Q8&!60q@6GWUr zyb6PS7sGDx31WLBC&Y)HsEQZv>mB7~2D>KHfs-+5Bq|)2NTJ2`0gIA*IoN9LoIqlO z(wD{74DMN-V5(seMTu+({+TC;iIK(3EOv??;^O7Z+n^Eu9x&}aN249jls=>CylTKN zN}4mg+Vp1tmvOZb>yVLytRSl2OOcY7TCpa+^0>U;FOu0AWs!Mmslt)~Lhuc0-)fx& z{+U8daP6L@22<^^ky>?O>VxD*hh&}KSOk_PFj_6yaAc1nibSR7<5e*>?v2x;7C~Bw^ zB-{|3py+%gHRKr*4=6sN03_liWI93}5e?zCkXx96DyUkbt~dwmJ@^oIb%yB*E|)GDgDWpPxrOqXr8inv$<3eyj^QcC*+w?s z%{AkCs=d4D>@>jrw#LEU@c*d1jW|2)@RFu_l;N~}2+U$H+hE*j2tr2v^?!8d7ab%TjH&c~8iRWi<{}Nt$u^S^!{1*M%#= zq~<336z~#@%q1D2G*23g*7B zUD)Dc%s5DKR9)C-3oq5JW~-7NErls8>{_*LJ8RjEjM6{`+_&xZ7ZOJPjtR9oeXA!X z7t++Hr~97BDS``j&ecuM-6sVb2hdGq7OMYlZ%*>mG|rlvrPWor0x?_XiLMU;ZM+Yv zrx2YiW0xN^pHgCUQQFCNu&OT0$WUR;JSb1{R5UhJa(XOHdL=T3OVWht*tTpfDKPABLOv<3MmWQcX$ zMIiBaE>x)@n-&Qq2ek8}KU!|6C!UW2r27{zUax%w?-IsFi7~R&bTGG70vG~kDt0$; zPIS)yL)kZfSsG=4uY0YT_4=3l2YmOO zvt!4Oh`r5`XI;;-si%E8@tkb2OgR1n%Eda~Xig?iB8VT{5?BiE9Sasw5Dpy61kxmv zDJ$J1gEc5L9hSvX+}4bFfV6lVom?m5(W)V4+>P8f^YUjyl9YCmo~#?o*{TTwO3?T( z@06T~nn@q&xF!u+Nw`TL z8POI_;o~5(Ef)8LNnzxTXy< zNu}w$(ga!5^3W{}pvznTXZie0L)M z5v}NKAgB4yPGntvQxKJJM4lHapv{cRwDN3XA@Lf=1qw*ILa-QfUYl2x9IJ0^jnXlG z*Zv(SW#ciR0?l`?I_^)rpYSq|oAf$0o4T3LZ1>5`T}H-DZ;ua1eE%e=7h__dXLJRo z3}Gk^wHzZ-Pv~ASE;0FRGJ~OY82WhlV7tp>XX zS6OH@WfjV6J0pSSOT01fc0&p^1Z*4 z`gaWTVu7j7%-uwf(%wi{_d(KMFmG>(!*Z>i%3C`5AdO?B}4dKxYbSnxbqgn#|?1Zl!R;WLQ zrE_J0Dlm~<=+}~}qQ83>A4*K7O`^;!xvixbN(B(% zG1o%xn8>i$2SjV~w!c(Wf627TJ|NcYS|#!BkkY_4`Ed5*aSy0v>V{f}!F-7V@4tvx zZ-&{7!%>zL`-n{`r&o=>$*8^u^= zR+SQyl3GB~kzLp#4PaZ8QX!EiGHEGDcrXJu$!o0=7qN+IgT3em7h%s$E1W7m&s&by z`?_c~?8t54oHA0)6YC}mQzRZj#*dubR@R2W!+nAO>)q+4=s0KjX0E2cC6@nFveC@x zzb;Plx)YArw{ZWi#8{`r)Kfw25N@#X2qcFFaT|mQJg{diRvS`H%Wlz~x0;QcNv;KZx-+<+}%N{m5&mDNG zvZnkVxnamHKaqkaSrw8U(h3v-B0D750QsKC0Qw%uz-X}T07Wp~KxyzSWG;#wN)I9B z0DZnBB@(M)T%7_X3hn^Vo=l)j86t0>LK*TkBCxPzI3&|vyn`qwIRNpx#ZK<9KT z>!DlHTgk%E!JNWB4_<9XZO89=kP2?VA;&+cI&SgtCac*-c--!|87sdzP`C425pe7J)1kv&+nrcbC+Mj6 zU@g!=>r#VT2Z)5e3K3avr^^nv@N&uV(zLJ_rK=;xTdVBRNL=E(Xtuu@;%?HzuUc%v z*ze#oz3gIvQ7hF}#~*CsQSa3FI&m=7c1cmnWP%%h_Q|Wz9`3r6=`m=)0HGLP?HsNK z?KoU=|0PCGv-%X*bSwqWp|iWr*Fcq#wdJoCx|@A1(~XQ{^*c(;vw^|4GBPB0E$fIA zGAVGIhTHCY=hwTE7KHKMfm8dJ^i`+ehHPzlc&l2wYg|u<1c+0_4x6uuy|rs5={7G> zWY(#^hTV~i-!}cpjv^ZVFcU}T%%}mzpZH>z<<({b5-Dv;h`;$Q9G**3x~mn?n$OCF zS*r%&C6~fQm8Ms070={&dez%exL2M4;_f3UuF*O}Bfh7jaepo@pwf=}FT3Ut znenU0xA2pDp9OZ8blvq12>OT0d+c6ry6ErawrVuBZzK24+@8hSpFkTF{y|T_Fz7tO za`B*K55(_fac}8&4t`Ij_g6vXF!$RE6dskb)F;IawPa`x=oZ#JaVR6|`J0Lp6u5Ra z{~_9F(P_L2xoWYI2*?F50!0jR1K|d9VLoNdlM&45O%;BQEoh|X{oK?=dsd|NIAxA zJjvLlW?eEUn{oT&&tT9kJghsJA!It%M0hZ+P;1y#EIY<6leS@pti4!q8uyTPim6&`zrhAZnt?40HT*Jo8l=z1uFGn_XurL)7lL*EhE{6b{I$10ZqI z4ES07)&ft?bolpiK~>K|sWQ>99otx)wn`0~S z3Y-mOV}vUj8A#k+XFvm^&H!Kp3rdBAjiom_AsS+^v*C8TlyuKVl`66H@@XJ*Gb)x) zp4j)~n@l%HSu;#)X{5D_S6{12xxA|Gq9givI^rc~kEyCv|Dsl7$F_dsrqZDLyIzLz zz}Bg>MHS0kNqiGx=T2#BR;aCKU9~EWK-Eu$KjMU9vr9U3_*w2)O-+6#!?TZkmBe`DCO`u|ARQDjJZQvvkW6WGSfG zag|LyWGNW?VsfpRW=vg05iQ>U?Lf2x`GA@1oNQ`CG$*o(3k!+PfnzWnqmVq#&qM(K zFDZJKJ}9S=AL#9OKqZ%H-@@}-5j}Z4!xDNO3dTi)iUIL(Y%R4QzB zT;rsT8r=q;k3qxFBG7;mY@D}|=c+g1D%Up3wd{tgxKO3eraR86(rc#wFk;@d*jVwo z3I}yR^p96%<-943`Bc_lYc9jJc4(F`kh9a>NU9rn?fV$s+iXJ>4{J3ZtyGI;`8R$6 zY8C;tMwlej;7p=o7;s|4ybZwOGly7dwjpY)T-#M_+w)*Em?OaD`t=w3i`xf8K<8cU zGPI*s8i(;}^{kJ*F(O8kxx zM}d4O8QUZ&`I=PZjh;C&&W_oUK#CcPAZ@ISU-=Tpix}dRZRiw;9>=I6F8TG;F!^+s z1u4*V*wR;!gFk^{*R5{n@!u-Y!{Y6^)prH@{e4ybr|{R(<=^0My=i&%bb~PkDJUjH z_|*?|oi!t5n^71-29M|Me&+5hVagGjbXYMzVBu zPVMab3)VMNm+KEycJM)re%nu4b1(?ZPrYj#pa5zIRR!ro?Vz(8+h-1332Y5~0qhRO z4$2PJ0@?z`kMSzJD-#gf7u#3Um($nNrvVHB9MG5Fw+bu)`~up8WC87?)8`2E+cUkZ z*G{fPHq|SgkKc|r-d8KG*mC(r9>0vS^N6UoAZEtS8`D6S`#xT$HQ}Cdc~1Q5nVW)| zE17~RAtMyd)Q1#hdKUh;p`~OlDrU~@{5`nGu(pP0yA6L_cBR#}io~;Hg+-~#Zw^qi zq`cmkNl#DD*GpZGJW^9*^wV3ajGc`Fz(e4akv-WKz%ijYlo$px8>7K9TQU@6m4QBd4!?M!g_bw!w;%D4#;-kC}Clicj{SyL0k z!OUWyImxDyc-Vr}e6h&6wNq}WPzZamOt~VM0>N1o_VZ5rSL%MKf6Y`AmX7=2VD_ zzF)GxOMZKH1-WNGG&s-v39UDnebeVT$a3xhzKKEh=Ary`(V>;)7kGF4I)rkVdBB1q z#KMt;VBwnACy1Et@H0^;L2xGkIfywR5Cjce4R|1c3Y-nNIboJH35%Sh6h_u8Bf9H2 zUDt&9Y>bSYfsu;aDPtUsoJ>OB#3@B;Js~Zq2LEv9e<21&L-u8ESL;nxTo283^)IV(sD&KUEA|l@i zQA9n(6m9ouI2 zfWpF<@f|-j`%!q0ZlfhU=?#Sj3ZlOyWYQjFf^T)&4_g&~%87ouELJVKE!t)LO)=}h zYSZU_@94|O$RyzO6P)@xE$2M?*P@hf^SAWLB#%59p|sEZ)Anxh4@WOE5kXp&N^W2; zxm9Fov;h7Hp=UaCg*`fj++>wDM3Xs}KCkR0pD{_X9D1vQ?!FS3TE$I2WPr=Uco zBD~HPz%FNX|5?TZN)iT*ezJDpa^_QH=X5fgV->nc!Z0RifUJAi4j!h zuR9jf5odSeieLDP#o%iJIu8`7?QXDGRuz_M)=wg%%m^j_u+4^s$u<1+3j~|lX*uA4 zx2&8a#iZWZ&xTGKWTb~Vk`Z(<~|J%6?JTf3@Xj-xf2`x`@c|as3=q~SX z(BM+tCq0=-_H+M|vY9QIAhO4-s@jUn2tffS)REX9eM!&XIsidQ*w}`zQ=Rpm%c{UE zldJ@*-Kc5$SHiSahN}wAd9f^i+B``?q81%yRr<1~j@5gp-;UCm8;QfYgv4^SbyXRL zv<;uT5}j>ih_Mv=ELnO{C%Y&|TM&7;eAtfoD{TTA(d|4jE`t4cm7C-0MA*}zY?H=B z$mUBYR7HS7b&9+st=aP;&50YTN9XRzS&+}38zHWa#*x7B5BNuwQ$--uHiBU?Q_7P! zbNws26*)ST+=P&!<=B&KQ64N)F2*sIsB>zh&b$*S9qO}fVlpG^MkX<&sxT%;P4}26 z)npNSCIgeU=3Zn3aoRXE1M;Y2WJS2eK71+yVgCyeJt5ENmp-cn*{+%9R(0>c-jvI| z33#*rP)TO#{$JJY|0>DeP~ru^9Q#Lp!C%(Hc{obsnUd_3&F-Zx3%2G3a(jBS=LEber%{3aIHZIIxoV<|lXO{IN) zOBT(3Q+_Pv((CV(nK`fKKa^x($E=Bx#Yhr?d38(-tve(?`uo4?psXgYVXo8BbE9b3 zHDm=)$|n8o2_dV%VH*}q=n{%bmhq50f1U2(j0vM7*+|8dn_*-9Q%PofDB?`R`mH46 zt@V8PR+62@6yA2eN*V&8`9f9KilxncX!CDeT_|_dhSQ=xQ8SV>m!&56{F~Rglut32 z_4{S}{f$Wer}6LnDVw(I?K!2ES|K?^3Ar-a`FB4_xS@Z*zbl4WkReu z1P8@I(iXA_d=1$~Lr6nN@l&NQ6|$RRuP4|CGcp(g8J}5n2R#h^28Un-_N-+C2Of2& zxRgVQ9KIFR{(G(XHJt5e6JDgQUF)*(L3h4psBf8S=cw6ie*7GKYx_fHf9`ZMCb0Kl z&v;##(aBDi87WrkF}95E;n>CeI>PuLcN)x zFuBT>XG@KOrfRchqMheu<@yc5&|@Z{!pp&mQ^fA-NWaB%2$U;|uKif?E-q$f|@2POMT~hLDsMI-{1Ew<5IByMJJaZ1MTS4|Sh=as*S1SgGdV!ugu3 z=Q%F-TgvEAXFD*E4PCLu>aZ%<7@Z1*_o8~<6F>)oFyUdbn-IV*a_J=gpkQS7t$FZvYQcT-eOTUrJa~A!%=7^n0qHm6lG} zcRyxGtYbZ-u&}c>0{K`EfdbiWIbeL(H_0Tf&hW67xQ?Ue>hzdR-vKF;XC-)|crd?QdN{!fN%iLI@S3QD*cMEOOKQ zXD;&q^00C$V31kt0{9mitA&jrTC4NDy!?tl;q4u``x~~#Y`ZD5Bh@D~TG>g2AN=%c zkI>7Lwpt~|tm1u7U!KeQYUD}TtM>Mz&jKT_HYH^eEef*~VpFBKx(gpm-QB;X{xtG6 z+Pi!Y4jd7_$%g-Dw288*v%Ra6v8l4Dp^51~M+fTG&Nv!aek-YDGV8DS2fJ&{C>-^s z>rPugY&XD>d8FjXxMD6qLl)fVYLDc|synocq2_3co0^VRyxT~1S*C7@^4Df|vECz~ z7zb~WLMItPeD-0!^7cI4S82r5b*#lt0DLEWH=a8uzB8R4VK4rFaDF&`(gwn!i_D2= zM&<#nLt@wCio=St%!scEpbOInGTu*9O4>`SB&UoP*Aruk=(8sm)fZFAILoW&Lhkv1 zZnqImV~D&egYw*&YWXn-mmcn&LFV)~#`H~p)q8%G@bXjWwBMrfGQ=6AjA9(F)k-}W zfimn}5Or-uYY=1hJ3-cl-ok+i$*iKg$_Od!SGmbY;h23&dRj`gJ`N|%Ol(7|$}nV@ z(iE09b=BkzHcwfG*!aw}L<^^~PkRv=(>qlW{>&(;&g-7Ap)O64Zh}6J4$NUjqhx`8 zXJO_^W_l1A0shLkk56DY4mB$|E@jhELCon?tV?s<9CJ9~6YsA>pjzYTdV8H_At?Zk%bdwCdF)pr(q%(w1)&; zXRE|uN^2}6V3-OEr7nb0T(cPqWC%`hhaXgOh>@C#ZlaFipVhp_7;TBwkB{DUt!&=4MIL0Ka!1 z?Rf~${<`#A-XnF6ImXO6mQ~easY%O(x3ydcT5ziDB;62F1$TLxw00_jP_-mzS8#n? zyoD=tvBPEwj|kop1B(+1H;s%wQo?$RcCC|2D%%C)AQbFuv}}EJ$^;CVy)8uPx!!7y z9AJ7=e5Q_p(t_%4Ay=Q>rdxH18Md)g-i5^}BZ#XzzBx_nEwq%MbZf^8^K*GxlA3`e z@d~+McQ^H1SC5%#?ByO)fF$tKAuo{2DjsM5F-d>c`rxsP;WFzeHIM;i%$`TWeUDJ% z=2!&@$j|%7!Mp*n2S_zu{)L5nZ`3XtC|6^wgBM&vtZk*D#GAqJ^BT5x4cE?%Ax$pB zuBS2Yo_;L2u03b40#9iS&l;*Z=_&RtRxAi${b-kSO5NcUfTCcmGg2SAqK)~Im?;7u zZMT|%U_2E>B!Pb??4RiS%h$jK&UStt?K@MO<}^IEI*(iMLLdc^ydR|Oqu48a z0@qYk$ivqW8mA{z$&!4=_E=PKv6g|aGdQX-hhtmx2Mttt)k75Fn&eeapYdRAhTFGoXqvWgb>WNtf z%y|le`^dt43Zz=p;(ggGW<5UdxUlYu^igQ}93Y{$;jJ;BhH0xS=09qiR=14@rz`Hk zS{KE(@4WOX0`rA(ZB{xB+c$G$BIO}tvCGx{`RND4G-kx&`)Od zs7tovXIJHSaMwF_B>f@$o}=e`IF0}r{$jZy-i!DZ`S)W@-QX>$+$|~Ia8Kecv@7s- z6!>*oT_t9BZ!n>`j6dzpk>}b=5$~wW=jRmHTgG`(iH}j(95?FimiJqfsGbv>KDiJD zzbh#p=li`D+#JxnhksK)*S9PM>eSwE+<419EVSt-U5arSDs)6x$6Ee++ljY}8eG2N zeDP-fD;V z3l5WgyxagMCB3JtqpUd?`lIdE*i%CF0cyeT#KG2}q@i*4;h z0`sHzEdKZx1_X#h+Logwywrp8k8Dm_idaz2%f#-&1$Ws@JFd%w5{=BBAF+i3ztWfp zr}J=gZug52N`W;aG=M$OM1W2)pNaOw7GOmBl2{>VFWGRBIGj~RPKiOfnG%Qcl- zpEO$&W>KA>3U#VCsdl9^&^hRDcnjk$>XYqahP*BTmN5=9T)Lceij6<5?Drne7LHBC z?a+gCv!)N%qhLH#ymr({6e=w<+_D6X564eg@hQx_$)%XOyHv3#y7;F`^{0#}8)0SkDY9&$Oa*(EOO~2ZuGlNaL4r^F>+_0n;BYbF z7Hi?*7=_rftd^WXOmGZ&Vj|M;S@j}=4-ILdWOCw}RT$=Mhkcl9*w9YXoHLf3aWKG@ z$MTo-nk^aZX2#+>j@G&g8ROjGlC#*Z9eNa=29NuRpnlU)t885XlcYQ5N_rbjE}N1o z<>6z?z)uSCG9^D_#a3^zNcxj&6zN$|qTHvAhobANuycxjXkFd|kNdntXROl}uIEUV z!cCgpe|oA18pf;@7K5TJnVU;9nNvU6tkfj}XOX~6S{W8k>*p&L{i$!f8=YFAom(=` zqFOYIO+6a#^KpuZWgaWIhBTU+edVR>J9H%tvcCRsJ+9ud=FmUqSR~$nfge+F^!A1yAL~unH?H# zml;SxU9ua^UAh~&6X5+5JBP}nP-%1*)ko#lzc#OBt|makj#LoU515{07kZ|uUmYK{ z5UfIG7ncvDY==GZh$ryMVjoa+ivz#~@p_bKv+JX?Ydq+RYF28AB?eB6y9X_xU)bke ze>=P9j?yI7cpImy;9i`QcK(|MNK_`j{vu36uYY`|ePUOgV^`^eSGE^IO?t??n4E)ub4ks^ zyO2zKL+LcN5Mj}r$4=}frnc|DN{78t{#z-GsH^1-qvHFAl?F-k!akV3xXjL%{Q0qFI*Rig0 z)E+_SUgwlo<>Lt_CO|Bps>~m=VQ>_nmV;GwPO-GI67jKGp(*{>A>{%`RkgiGRLlcB zALmv{(L$L!H8|)=6+81_qCDcG+v&FmM6JHZ?Rk5Uh%=S1jNTwB40VjOX4M~BD~D92 z2_|mOzf#x|7&G}e80oJvoWll*M7krGHGLylZIZ#09yl6z@cez9ZLu%6Xgi}fZJ`2p zM1Kb)ULgn$415B;Uy~#L$iCjSm-S&3AajV~^r&+QjCJXouU{Y1J&wT&wE13+m;O?y z4X;}xIou{xZ#>*gpN}a(XJ|MfF74I&>%AmWuTgIO_1_$&<`Ryq>38Qk=-==B56u4` zuk;f~fMl4A7N>;X1E?1>afu>4P z_wQVt$@m!GLHP4%*3;gb&BAi>mHRg9e@q|RQ_t1|1SvUG7}pe%hY$LP1vNzMIS;%BT z)|$(Bp}Pyb8A;+Gk11={Q=i}A^Y2V#mGAE3KFeeg#8CPC@ zpdie>!okYHYmar8^$aV@FP(;1LzrGPwgYN4;9}ru7kzgGpoYG^BA4)@~J3q7kAIwknt(EF3NzEF3Ky zDU8OCv0^&U_f4^Y<`zKs!3yjRG@hOe$1C*_3XY47i)W(WDHCuE{PHl z(kH%4c#D*bI0T98a2G@!h0jpN6o{w|i5FZgDXb}|DU3-7izE&?`Rx(#?t6ts38osL z9>5;p9?%cI+!Qq-azbqXStX87OrX?PV1Qh&iZ~oz5uORFrb?@-%ScLtPYtFjT?SfK z$1fb>2xvInN#O>;;X^mV_{7w}I*_C#Wk-gPf{%zA5>Xc1C!r#yB7%w!mLw)MC1pxP zm4cH3kwPgCO70BG8WPbK)E3nSeo@DE+9afNJ|L7!SczXrU{`8Zd{Tr{l2f$J+Yp@= zo)(%Gn--atpxfsMao6J$8WbZDD~v1&F$*{APJu?%oils1jLLP=cJAR{jW*G3U>sM2$n*IF8R?-!x!#rAR)%e-|_hHsY({@Wiq3w2S@dCZCt>1)o z?}WB9iREuw)M&?Vl~mG-Dtjm_XoxUF2Hn#F+9B$TU_lkmkgcJ+j&FZm7Wo|?Mr)1+e|O{DJJJnR4cuu zmZP_>AgR)<|ztHw#v+}K0DV`_%;n#^R! zku3{8@xjzSncSx3#_tWToR#(V!6>;^OqN+Nm9$Nk`BIuoL+dMS_s}V`9sZ|I>ge3a z6*6N$o^@;t_|&Fap?$?HYNMRByX)r_)A8cvruMwxMa6S*vorTIh4}BGHVx9N#o9t= zabLHR+f>^n^B#&T*!pvAQgM9w=nu88Egg0nnhV_oOmD`$(~O!kKrZHq%|QEAwEfJc zVEeWY!ETqP^fhrC1~=5fVR<8r`c6!uXXMy17z5A(S|cU2k0_;mK_+orVtAB;AyFnN z0QC%F(lDxHPn)DHT3S@)Q1iaJV^*8U6l&v;4U@za+QSgdKHFWWhYT&EeU$r9=RV(E z&#RyhDL;Dd#PT7w6J2|(u0{<5M>5Xj^dY(vO?&f}{57F_iuV{_F`4s1k{H&6etYYd zMr<;~SkPg=Qx&f+K2=;Q$|2M}sb?gwUJlu8!pS(y5!pSnXK|PK4sq!u);+yvt&iYL za^s;5m&8oU!=dv%*ju8HS`Yp2xqz$pF8u7AjRVlFwiQ&`2 zgXM^G6W2^`mF(&nHH@;T<>GT_*X9oS?L0f>*0M9J&<>gHN_<6@Wm-0!X(i`n-Y0;U zPVPtmuk z_e)I#?pc^KKLMYCxYDtN5(&m*jwZwzqVimHj!bDwh?Ke;7Qywp=f|v&yFVaMlv%Vk0$gTfTi`+ zmbv~p9!;9jez;>|z?_IH2u}==RDbB;M9P&ZOGpu)G)8sk;)Ko>29Tg9O^cr#OF6{8 zm$|38xBfmQF|b*#h0w}EIq-A25HP$!{!+|2~y-uGVQo}>Zijp+@_ z&`rGyj4}r}QcL-cJ^vLW%&0}J3#^iSJ?v6JJON}J(+QF*I-2BQy#CO`iI^(`AU;EC zp5#0Zc4*{8)gGuTS3|-PpEX8j!kr;>P5hDwF(%6#HAU_`rpp}1E1^%wkf1SsaVW=} zOG_FxX4DW&OEx*?BwrxghHNznXMEZOyFGhL>YC^!DQt}7km(-OGcwg62(DBP z2fEpa5?tWH;Q!JIYTpnu_$59X73Rl}Jd7Vd$o`+Bfd2zA4bA=mEMqibqK(zC{>pFi z#OdKT(1sHi5kdx%#Iq3+2K1Cr?wel?PjN9@|(oK!n_P|Lc8ybw$h6^5%8(XV(AkL+|XF*gXfu zPrf`vk>#_Zlzm^|JqoA`EPdL2oUX22kWLo6+U=)Id5Cgc9L}CED7>BS)dFk6X~(!gmOZbpeb5rlXMaG zuuIYgF_Y5xY!Uh}UHo=nC$__L%-kUltOK<}m9f%L#eG`VYCo#XqNOb zBjT_KXmWO=g3t(V^2v07FjJTj{xEQ)DJl)6e4(b8BTA$*WwBC4fvSWhc(GP8dm%uW zE6xe%hfK?nOdbxRVic81%DAtHm!~+**m@#X>2D}l?X2y^{ zgv+by#8cioDs}|-Pj2UsB^|@MzFF4Qx=u&zs?fL{hnHIr?6Z3E7Tt5A%H}>>T4&j# z_Csu%j+3^0=Vm``dzKweW?}bFZwn9k!KX|&obnZyN*nJe?VZ5xMx$0ryUL5^OZv+< z&siF!U%A5k2KLpRGfz*&QnOTF!Ws3 z=1KF*^}%-QvDOr4n~cr9@Sca!6~`*M$kcTbJ}Mg0gyU|BalRT8oE^h^`h?@jbqZ5P zTJEN3eSX`RIc(v@#Od%c%wbgBd7(J3wFt2cmI*GteCzErVJ&N^oA9HDPg~`ztDfgi zTyeT)S_8j4PoXyVyVm}ByoMgzN9oBe@T1NBe)!@yFF403qHd)5C&GlRg|!0mTbkndj|7~7{ut%c!8{j z&uQk9_5MLkgtE&YB-uIYG=nRl>g?K}5ZJ3*+lRNN9J-7fZ;IVYCjLLKWMivIpD_0w zl-LX^I=$TJ!e0oEG2{|mV;x}y@}Arb*a?xI-voRD*>tP*TuId_tNs2Q>;t#;{zjs# zW^ghcJjHfOrp=cCe(aK#2<`c*mVAXVV-HuoiD%vlM}(>IWA==I&OYvIk+?pezxSAc zFqU3K=w!WLjnQ9P2vVmzmK_EwzjyLz>MiQ zWZFAzCVz*x1vfI>ysHxDXY-EvE06N5OyYFxqk?}-k9?**Ozxkp^BanzI&%qUqnJ7G z5^xCTzEwvlW_z-#$%Z9q38yhQQ)_;6HM{7@OL@&kAp<-!UE8xTC4be!Po$@}GLxYJ zzb8iAo39Zc(Y>Z>o@vXe7=($}OUTOThGN@pQ53zlhGqqdFW zfy}z~-3A;j9t$iz<&mFbXJfB!U)}G5

%!b`v?cfJ+}7gyS~-$=b>mz#}-b;Nw#2 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ëw_pf**{^6GI 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 z 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

!hicj^IGX{E zf%(LlR+yXLTDI%6QvVFj^iN@<3tSQB%$NPtQ+?#BxJy_4$5=?qXY!Y;)AWMx%#ViV zneQnLPWv*>vqr%kO)c-=J7-OfoPE#3zJC9}?dBdf!71`&Eh^}|q2fm470a$Q?*Ev1 z&nd)ps_sa9>8Jv|zs)aR`x~9_x>oOM(wvg?*WlS~^VY(-$zrkdBFSDrEa=C?z@vrM z=ZoOM=JC3HZ3>z&hyLBape6tY2UFMy}M zT7TWL+^GpP105Y;xF&Z-TJ8rq&pO{A#6s6D-dFt~4%JM_(>~HB$FJ;CZuE z{jE)SB;R5-zr77nO*I$dF!{?yPx3UKP;^jduzmG8icBESwvTF5#Vw+iepN|RJdgOqaYTT4L&sGuusz!9c zv|l=Y*;N@#lY+$1{ofO|NT@)^#=mqKe2iV{9tdad8{ z0=Ku=qtM1*Hc0YTf0OF zdWfILCue*PQVgj`qpp?=?x4oK-qYBo5xJhT8}~CFVJlAER8|^c_0MSGt2m?U706{d zff&1-|FS4;5w18hQ2d&AImUIdnA<@GQqGgS_t?BRx64D$F^trV)YvI3@3o1+HgQk* zPlB&&`cmw|Y_X+*&gC4DqEK|1ed$};qWksN4P$%s2_p4CX*Vs5%=g8(Dbl+2Zi@i9 z)vg=;H=X2i-Jir+BI@j$+W7goaKm%V@8*@oL}6;v()?p~C{tJ0ebor#=tCg`)54lm zZ{98G;@lJjG+e**FKl?vl~(}==9pcg5HK{?t?`Pqvh)d5{ew_H0sxD{tEQ46NFbwR z;smL|D7H?IK{k8tt(9KlOCHel$T%|=C#ka3v>8Pm?d~!h&Gl`W7p4+)xxk|% z?k?i@FHYe!6?_9lNDs!=z&4Vdz*#$M0!uEMaJ9VCd(p;umJObwZ&M zvy%s<2v!*1)^>GWn(s(?HbSaq?TLJ#@cEwrz5;dgk*UDj_V?pIG4@g@hUYhDiJT zs!&rY=OmA@BqEL0?Iw~U5wjG~j$oDof=Pr%B1l$FJcvhP2|T1th(Es~H|TBhF#Xfn z^0=NHN?L%joBI)gSnaw7ygo^VyeQ{zLa@=a2|6M0@C|H$?SN}HwCVGbu$qfIj#uG0 zw{h5YY&yhG96MbVd`LA|5;zVV365+o5!?o@7zN;l#i8xDg;Cf9uo(Fp%DV^d-N+Rd zhuH9Lz~SpZoyrafl0T9>P6%;QLR5rIH*lKRGCrv7vdoC$=Y@;wlM)tAx{ohTqo#LgKE%I&0gWwOjKv7s2nta} z%S^mc=}G{ruIu%MV6hDggTvaZ_Nx#cLSJ?(#BJ9<&x__Uc1f>OB7&b-n`quJi+&{$ z#B!bOot5anzaZ|D)xu_X2=-c#WXKbDtNj(}jv~H^gHX3Ylxa_UHidsI7AuKbCpw2Z zE4!W-saBR~6!p&~RebMgeg6K(IT&GnIME$}q6cjrq5|*i=cRJ-^&)p+ z$%VfX1czS%cym(zFz1?p9@!HL zp)%)zGL;Z_5O*YAxs5(yE2T!6h@AaIeM;+>q(vHrSRbYI`wN{hVC+$lNO|gDUe}zG zoRX7?!0iVs}q0G?E{IrBhUoks=vG!qg9Fv7$RXkRK?PMYD5^MZ5nx&T7Etb$B zYS}|}iP*ne9v&pI1i0v(jcjtBt6Uh8mazM}C`HMO3&~ak15luP+LXX;pP~2%tuF?n z7Y*?nEK}7OlO`|W@`zUaVB%l)Up)!Vo~~BP`7#+ON%;P-=Nk9%D98<$TpBP&rXq0t zdsxB9V8fG+uSh)e$Qs7OP?pg2Yj@%H9OteaXAH$zeCrROwZijTO0RI5&}7f^(rc{a zSSV}7os_qH;%#Wa!|Nwkw>Y5-iZ@epcV1vXp+9p7q?r410lq> z1kjvGgWQWpA+Ue$_^<96Zv{J@*s*&0*%ja+UjW{n3wsW1!e8O+b}2ZV=ltc4yC`yT z8%c_}kGzX+4lhHe^W6(R3eAC5k03v=!oz^~*W1^9w@l=36o#bO(r4rUD5wBS+3a(X zz+5EG<)a&LI2=*}Ru;n#34;*c;+nIgE*>PD7lL7gBa`?+WM4*^BGS*F!%Bo{+0Z$2 z^a^p>Jo8MW*A1TW<%|0P5XH_QL)U5a?u2BzgJVTW-zxg;k^dtfmH0W1^Z+ra-m3ja zEDy3_dGLDxNx;YCRDpa4{Jmp;qt*|RI7he}?YSg>4gN5J69|<}bv=4MpUiuvHOVi| z=ySOqnHNlVPR`8m${Q}oeAG=fzfOb&U(b=Ao@UK33P6(HkvA{@+0@lcNNQf*^)i!y z8q#*J=`8bKifZH}i__OF%d3kyQMoRBmMy?IlocVr!CnkxlHcO7>~pQPXr@rQOSnD6 zxAoX#L=;~h3?hvv53O~ZGwwk5p-@BLAOsW3_%NdcwE1A>_7#A?tzhUtbCmd8_GczG z`{F;M=_^Gi3qoT{{xSBiP7{J95jDKuyoWtM-BAC1hN0%Nf=KqR%)QzwVFXKt&07ra zc@!;-nB&Z702?>$lhuEWlVBjilbv@^tcZ8KmnaOUYI=2J>=ch!R}G&WT@PF7bwzn%^4 z{Z2?+#Z&Vqzje15B*DtR$Jdo4O~g7emUHEI{~h4yVy>?J-vW-5HtG_~ShFF~gZ~Y1 zbo*CyQHFw6uOfXsgnL>>-=P%cMWYEQWpDS{eq&HUYob}I9;D3PWkJPq19JPFwq9{G z%bnt;8GhJ#e_)1KlOLIl0prIAnAQ%oAV02wpxV!gCKE2-adyGyfq&8H9N$I^u2ecw*se?lPT$%&kLw#`lL z9Zor>$`M*ME5a>f2Py6h1EdG#;KwHbc!zZQrT6(K@Y*a;KJych9yW`Q+Et z=Jo$s7_U}h;ZWB04KL}uA^dM(dpC0po&W1cWQDcx(uy(>_XpzQ{J|yoU$^kO|0}w2 z+27~w#?^i3*rm)VBA85Y0QW&MUJNbgOGSJYm4EyxDL9?p_9dJ$K1X+5AcFsGK1&V* z&rQTnzz_vU6YK1%33^s33jYP~H5A=Ny$;qBQM$q>zRNxJH)^IUg!A0{t2giF!tbpScPD01R>Vv0ux!nA3mp^$AD!L06{3}Hp^w_ShsESk z-$+_dw%or2pe7=oUKE*3%9eiD+J*Lu?MBsSR>9X z%(qyryuXf074*6cEHb-!$Bbrx)aRL9y^}}lK!fwl?%q+Oi6FlDLKp83qu)Rk^M!8S zaie)4`}smw@6^#Y(AIpRyLaShEQoI2#Kk*t^fM@D-o(v2b~GDgFmK}Ooif@4nw>Xs z_l_P-0ZGm;xp*gyR)bpRm)yMLM~guI^GmMYX`@}Bi}@w@lZer15O7}3|03qbDkovtUTqa7gh ze5d)6aSoZ&lO! zv9+-^d3-WVJz@C6aN=+he**spuKw)4*Q;rL*^*?A==$+lv`POKyr$xNYkq4x#@dt2 z^QEWY5g%CAl3$Eoz@yMyFA+U5U2+jj>vb+!Ksh^WYtDJv=pDgq+P zCdhU|l`1Nbs8mszk+4G|ATk1^)+$;?7%H_Yh{zssBw!UuA}YuVUX(-`AreSPNbec}61L6W;dYYhk7rWMhEv;j3FAKKjTnv?jF{;5h4qm|+gM=MJ4=!E9U>>{iY3g} z$JWtypY2ZD!?v!r2W*4eejG549sbnXPf{i-lP(f3l01o?aq{(|;?!cSe~N#af2u#0 zo1CaNZ5R-=&u18&ps))*nx)YTf)ex0Pb`Nn5 zaSU+{aR_kh;u?g)2!{Z|glna#$l#4FrUo5;>aIwfU-?PxOz_X|=zpb#X zpsmO(->lHAz^te|zr3)#pu8w7KddmUAgpLCf2?q@-Bm7+?$z}U%H$97{p zWo%&l#yHLR$iPvzQnpenDERzS%v+teAx}Tg zIB!+n`nTpH43VbLlg zE844w)}z;;H=avqhn$)V)ZmC^nE$OS~EAOl8E8(l8lUi~v(-Cv7B)ue|B(3CpNv2T4SISq} zS5~m3)|}^w)Is_p?b!Yd9)nDkqrmgE3JJ~@j+mt2^x%ZxwBYl>nZfbFsliET{??;$ zm_H%QlAaX;qgvToLu*ZePOTO%maV{mP)!+lihU8rA<|8hHWDwC)4>XLdXxn+wd%DN zwFuMGGJrk6bHE6=0|WuXfDVug_yRqE9nb)6o^0@_hoiQkzC&$C9Yi^!zDMmw`Jfz8 z`%pVkhfz)Rg9LIKIhBkxNij(?Nj1Tirj+u)@0~>LLHVMbP@bq=C~uS-$_wRzf=_Lm z`fjS2dx2ZVP37L?Ugg$slgRPyLnfqBVks$vh)ETxiS&f(!mjtI46c1ds&blgDh-`+ zu$i`lvV$5zFupx}ui-K?$0x@zXJ5|FoKCtWp)I8?tu3_;YnEb`W|nG(E$3T1bpH1*_Ed&N4E3(;&n#}5w>O8I)0t6VS47w4-7*s^iMg(JmQA*XJ(DH2xZ3=9P2riKh1VL^21{#?PFo``x8Wy7{T9>IL zS|dC(g{`jRdLa~8A;3Wv6UYPXi4DXCQXDakBp?b%QbZ}zH=u>Jj&+iy!8*vY#7p6s z%~*pJgEWIw18i|hF=%d3&^@-kwobO5w!3V-ZQX3WY&~q@_1o&dtKVLKu->`;`}*DW zKJ||E`|5YrAFg+;KTz*p536^m-&?<<{!qP3{r>tr^}h9w=?@0WKC2H92M7QuAQ5l^ z9s_zn5#R^(1IkbtSV*o4emPzZ|KGuiKH3<)3cVivKCCai6ND8O93YTHDWW71!V2Cd z#Q6f}0B3**tO2e8KLGCl72s#6P43cM&D=$~YPs^cy15d$O1VpNSL90Ps^-e&>f}o0 zD(A}PYURr0s^=>Fb3pmIbgVO)8;LP@?1-bpQ3aF;b11Qul-zNZt7xMDIp+V?X=o!V zB{xZ-tbBCU;{5E>TYooS_P#(j{)^hi2#kc%G9qG#>s0 znl)D8_XM3S6R3MX`pLl2Y_~w&is+UBM7DuXD@~f-9=1GgX|=+c6nfHrB(BQPxe?~YgNsI0mp1? zpmAjlao|N?^RJT6D9@;d6hrDQ$}MUDC4f3e8Ki1aw5ZvXY^pcKo7zR`qS{bwsCAS& zYAhv|%BS$DG87qVG9{VnMgh~BP{UJ`Hq%xU`aXb8Zac+Z!9K*cVn?&3*)Ht0?Bi@z z_I~zOb~xMyQyQEfQW#PYQpC(>7BUN%MUZ?*p~%_(Q+Rx{IlcpRdhF_Rx;eZ9b!zO= z^LBGu$JDa{nz^WKvefV{{KYAC>s8iD)~41=tk+wwu(q<6wq9$kYQ5E3&f3UY$J)+X z%39A_+1kun*4ofo%i6|T#@fJI-P*!h!P>+cV!bdI;=90C(RZ=0hE5t9qH|ujVAxgN zLEWWG)AK&O7SgcCR>FfmPClMKyQWgBE4iKs9fU8!j^z*V05VCA2v5;UBdAy`$E*$B z7`!@oL$H3Zaqz0(^}%a{8`h5=?m}oGyb(5tSXO(sWNEohq#{OdWZlS`k&VIw-7ekx zwT*=C-Fv1QxZtn&lyj+_rk!{}%iHPNN!TgbEwNi+CvB%{CugT)Cl$mgT~@*OI^QWU zbQ%_3Du@t)zsH3+{%a3m^UD$Viqro;ni&z<|KT+<3GJ4S3WW*<3PrelTp_LiSL9JG z$r+QiONAyuGoZ@#t;=K7;^gCcBkek(`RWvPYL-ttzcC3mw{3`&9(kh{BNe9{CmW{~ zCljY0XA+fb!-n!Cc&m6G@MP${$&LZ#Y>yyl`DFKiY_>^IjWYGU%_`NGf&O^A80r=BEopozwmtZjq1x> zWke9G7_bIvff#^H94FziS}DUVzUef%M1Ln8%=+Lp!kyg*yPdng@7~?*)9u*3uX|_r z;cnON*Z##_1zkl1*T`*{#F3PdbF&*xRhe2<*Kjwi#$F*Mj73_O*PUsr^2;cOF~ z&vX%Gj-(2udSrv><2fUVBiNDT5uEN>-IS(D+vY!Q9{#ZKtSHt(mNRP&>j#z!>wDG~ z7Lv7$wVSn(70A+N`IP07v7Fe(sQ9R(qf;0AzaobZ$J{f$QoXS4DeYLiB#;0&0*`?2SbX4a-!D7XO&Bj4Qd3t_mxC24kYG(`zu~j6TpcAxLmWa_ zA)*mUeOvvSRY@0soxnPl8}Jm^0Q?4=20j8f(pKVDQU$S6Uy~c_-MT=wDh_%5>T=wU`2?459=h z{jMF;wiTZ2dpDXour@m@2v!#TYG7-2dr_Zo+DTyqZOxaYuf9CG&N?8rHk;}RI#bxhEz-(<(vrYq7_=*#J9bS1FP zN;x?t2$It_jEUpphSE|s7zS}EMCttZ?uRnApMM6yaB##Ll~ z<;NHKBR+QC}SI>lPSI>fRn>%lzyAj`lqb}^nY3>mi=0gOS079*SC z&FDH=mzB^}BCcCx%m-TCb4?YR7A3E$5qFw00=5SG+(Psp&d_Q<-Ccd4{~tFE@sWPC z;#g}#BUF(|GjjgL&H?-ia;QiAa<0wO%-$)8m~1rGSx#&QkYM^ipvPUg~2X;q$wHaS;Vl zU|4i3|5o9xf?GxQuI<~}o!cET2_+dq6<--&bzcR+idrZy3@OD{XPjr4P%|j-0Li?r>bMKQnJ#rQnRpLDPC#QEPy-2KFqde$FLW% zUD^8V6Kpm10k%0if-TQ>XB)GF*}7~P8_GtrCD;z^RqVHYThYyKL^o11v6*B5CV3VU zi%I@Oe-fQYC#e(FNm;}!k{8j7)J|+CSr9EqRm3V%WI}*`CNqth%EUraAZe^+(#<#` zj^sh~Ad!h=k_qukA5oK;N;h*Nwb5Y4N2H9sm~t`gV(LY#XNqT@O^EL`Rb$%yT?3|=X8?EY@*di4daA;J%#jPOL5A;J){h+POnM8F>#B0wGpA?lEF ziMb?NT3t$AS`mqs`YntGbRUlIZYHGqkqFq>G?5}_IY*77^wnl)Nr{ZL?uJZd1?6UJ zGS)4{EzK>}4cna3oYtKBg*WK$^h2iIUuQZP@drYyl`560mMWL3hbV@qge(tH3sDMD z4N(qJXDTvPn9G^+*4iAcrOkr#j}U}{Q13`ICuVcKz2>}g-68AdF6pN{rmz@q8A^-` zjJ+qt7n`m_EsNP0qa6cQ?Pw0RzC9Qz-&`AJ`8xM;*@$*#IDPcP$=f!`emz#&GmZGf zJZxTa9u9UEmI6BmONS-E(qQLdnXq_RDl7?>0ZW8oVaYID@7dmz%JD!tdH6r6^wIlw zu*qGuQPuy$0bX@#5O`Z@tQ-8lA3}WM$3u&K8RrHhv;B$)G(rOLu#eZ!Kg)rS-Nx7mw@njZRdwZL zEEc;fWmlRV08(MZdc-Nj3dFhU+toSM_0Mxnh5Ma7J)qFg7?j7$?;1kr2q$>ebGVxY!^q z*c=9gVqfS-u`j^5iV{XLg{nPL0xfGbflaLePXTFy3_(JWaHKsF!(PDN#$L%j!d7H| zht!Vwhud^JWjk3rEwHFa-A=&{(y*XGv0-t8M#I7em4;;v-H{lZVy}D}TG0E1_J!Xl zfv=|h?Nu;xD|DKtm{c<#vCu3DmIG@Q>nKZ!wU<@a*C^TiO|*=Q;4SBE=7DuEJWZZ8 zZxK(Qr^Ykq$@7ePy1dz~HCvDE$5v*~3*)i_*jj8jgFqGKiz?7nx&qzKB=;2ebMEQx z3GQj`=iM{iDR2wWoHBu>3)eTEfj#S2&2py)1EM2EAa{XB*zz6^**%AK(PJ&LO z=G5fWe$r!-9#M}}L@Xlt5&cO0#QwOgIZ)P?GM)oIn@Fu(Q0!G^JBKoj@{I1G3YBXB;& zb5UH(`4XH^yJvww`o9RQM7p>Y5u75OFgT%vK+k%SK$+*yHerk~;8Z&bp}>zyD2go< zZR0p{TsaOL7mgFhO<|jYvx1|7tAc}qOLIYTK|l2|Rga=aEus`r{V0Caeo8;J(xUp@ zaQQ}R^LuU&eXqjEWdB1ujBPa?C&QUy_2t>;NjwC<=p&xtaB`@DeS~>kCf3BRBlg3? z-dze4u$a4?7l{p7x-(7wTVj@Je$lKyUpD3KVLYGLxi0FT zy4Mx^p)4*-w=3*Jnc%W+R{;14Jotg1F6nl`|CdAFpm`AHdh>)=OyIW;y4B~AC<{pE zRNH`FHZBNSHu-YEESntEcz5!}fMIs2Z)^Lm|D1lXkn^4O%!Z*!cSrLf(i`F%k`>X4 zROz<4l{uZb0-%5yQ|N$L1(Ly&p&rHk9MVxRpG6SgVPw48c!RONy!v13anhc6I@P*l zU8aiHa<^3bPL(LvJN?tHplnGpKKv`oIO|OWn+V}P9#dDV8@XW!DSWO_vPV&{wpNK} zi1b4$BR!F3$S|ZVau?DN8GzJ6dLwO+vFvt+JR^jnL(Qe+QfY;C`E`XwR9Zn@0l^Kd zzgE&o6fO~%@zjx#>{5mS? z_?@wyag%Y1@u4wH(w)4G>`ZnfyOJHqE@UUNo5?m4XA?&gR}%*lmw%0UU0beQm&Icy zunH*(X$q+dd~NPj=+}{ESJVNNI|_z!KNPZ7v zHKUMmj1h`NAeSI_+?Nro>cko+8D|(LW^T)J$#Tka^V;U+>{e)4@V6VxW{&M`1iD?d zT^XZaVj}eE-Zqs~UBKOi&|`T4v(6r108j%i0|$WDfH_bJL;w>&DM^P&OPOaA$E`+L z>kd!lR%df#SqcDzWD4Lxi}8N}eaaMN>P5;$swc&h3Km#U%_wGZ{)C*oq`Zv0Z}agH z8;=3@Qua>v2KH$%spggDCuZO0d=-{H>jX;;?%r1v`LUE)o-DKZxhkK7%CzAk z;xNJ*5rbHSa7E}N2KwH(HyxUeM52Kr5%cy6d7>Y+=>imH#0ODzc3CnJSY`ZeBogJATO`{<3Gw+`R5Effny%|e?y<;e)|F<~@%b?F5vhaW#&e~~)*kgsbwovpGYPdPFN?z7G3 zJD=@72emh#;oAD2w_~z-&mulMCQ^o>M(%&DFvIORTYV;KhjM3`cj_&yy;{3syGr|V z%<2*&;rBjnK3;zqAC@|B9xx$g5aFp>*zA<-wCvP*USzH|H>~GCw|h5is-ilPtA%hw z7$E#vRe&*20-R(;0>Mz5ZwIr~Y{!_E2d3((i@6F26GR9Cf}r);EztftU^~sd<04`# zV;07&iBX9Gnb6$!KW25z@|evrOJg>~XvSE_EQ-;OQHwE;k&iKs(T#z|NW`p)QHn8* zS<;!8q{KBV|7OBUAo6^AQvHBk^0CJNHydEq&YGIDUWnV8Y6>|x=0ujid<}M zU%Q}oWvyc8NFqRb6JgR?8H=dw!Ilrha)LPWAcgG@tc%TKwzD^e^-NL*T^4_vjKzH^LNJ?Gmrn)rL%ATM@>EdB0CWbN$c3+n0AR! zEHoL4Ydl*Cej~b#A+zF(Lql*|>(kib+x6|=Jmk5&tMFHf9zNs@i&eYO{vSWa^)I!> zKKW-U7@G8VI{r%js{YFU>fi83FC>4knM;fA&#CX_IRH%E;; zDRWDwFSYv8?f9OgO8mP(BR(YnYp>d_G@mnwpAx*T68yhsu|T!fw024D`q~w>R<+W# zYim_&x7Nzl8rAC5+VKLAGHeS*Cc~Z4$_SzQQhcdY29wf5p%r1aiBd8hMCXJn1hTa@ zJTIgIJA`qN&1B>;>?sYD2I@bE3ei?b7B_PzTx|Z7AF;KX-0^j!nq|vEu_RfJtktYz ztmUkItj(-5tfj0k6I{>tK|`9gNZG{fM1H=`wD(bVBrF0b|^gpd-8dRtF+v(8%T@>+TY!lg%@PC2&--;dnyX>59w{EX)k8Zf_ zHrwxPx7%7)x3~Q%OMXLjWZPVd;(thBu#^7Yk968C;w@4DF@Q8k93*KG zr!|A*P4p&p5xYn>L>p2av5pi=j3x1je3A@NhLlW9CjIM>#XN||q(M?4SbPdT4WEj~ z!c*XB@KiXKmhw5*Ik>bX_SjeG4puwNmQ;M1?7ZAx?Qf9db0jNb;_-+7^W6B)UKN*6 zT5bPVG+=V*-|ayayZwj%c|QC)-8H%!byxpS0ScZrlk*uU%5wWt#$vxNmT(de?5lj| zhjE>mk!g{skyuU&CykTJncInCaVfYoTq+Lhk>Zi&k?MgZrwnT+x6vtd>U07W1*}J< zcu~O$RH_BVf?7qXqDE38sT>N2sz6boVhSMzkRp6Oz7Su4FM{X83*iOuB3i!4QIsK+ z38L%QTbjKkMK3XF-5G^&e}pw#4$Hxf0)gk$>8tB4mBFUPCaq3U2;E26F-2HT@+e^I zyl_J3c7%y>ruD)2Dd>lG<4RyQ+H?#)s>F9;UVwT$z0;+yCPHc6NAUXD+omsQ5Gi%= zA@Sg$Kaqb!Pk%0Fav^7@+in*RCl9x-UeV$%4&-R8P%n^xIX66xyBjA|s%*A@G{JG} z=oK#RY6ly6dV%&}<9o1iN~tm#Y-ECsg2i1`VB-XMC;Hs*E3lELROtpb(!s{5#a&ro z<0tS=u#p5da+NA&?2py$>57FM<&WqElH<+|SK;n9Oej^7p^qjy+&YB3#a-TD<3~OD z8p&9Uo_w7oKTt1oE=eulqtK%!hwkf~QyJYfa44G|m{%43aKI%yD-c#0O&Zvr-5v<5 zihew>C%Y=JH$v`|Aov^EAwx@tbTXs9u5RgHI^>keeWn`K>+rxB;b@u{**DG3PKDBb z>z~amp6@7_Ul4UHwl}`*4b_TbMXjOKP@^f))Je)J#uP)6k-%_dJYxJ`6}O;bPvi<0 z`hKGbDuL4y(Y>h}-p0xTTmkUQKS+Csdq~fT&q+o^Bhnq>9a0c6h%}tQchjj-#~6*Q z6uNesR%2d%&FBFp$vy?6(hNp||0+EV3{1=PsP`!JKA<4u3*C-8k7<1xRS#m_#me>(a6uT6GTj8pee^ic6w?xE(PPj&&s~ zadR5~S#iQN8%&SW$owIG)rw|Y8o zGTSdOv%;!XwK~H0C>Y)TVtZR_80uU12>f~y_C~nZmD!Tgnw<7R)qy(6SYN}9VwdX~ zX_(f5gXu6}aOpQQ|I2H72Nq>(1qI)$c{8Av?Hv?cUehxmpKaqCPo}Cy6hszr@;QZ^ z0#1=az5wPIyB*oZfqDPL$W=x+5BO$t0(+|_9}GBUV>(ekjFmk% zFvoYIPK?z&S2u@uqK=PMJhw0x-J6^kdss(5<0|xPgDNcii!iYcD$nm)T#E=YuO@Gf zrpiJ~H@$$`PvO9L;37O-?G)Zn*!)*nwSPp64~|+{XFg8!fB$tz5G=%6q!Vw9HBL6h zm7Fa}$#nK|bStoT^m6rb@N)5T@=}1AocWwvaItS(vAKeTPa8}bOdCwKS8i9w7=!6G zk6<1Rga2(JR#1TS-iE|dQlYpEg>`uA($f7!qldSC91eJu$sAajofsrvX7%z!&hw+@ z{Xz0oR*wd@XBP!#R$4U;9L(+y%&f9{IN+RpG0?rziZt-eGL(c^W)ZlIIW3uozsyq6 ztshXWkZf4qu(Y95wc0K6rRLYkS8xKqPOCz-L9RikL8?KyLAF7wL8d{y!6Yifj@zZE5%4;I58eG^cY19zs3l3#%u~LN+-N?U`4inP+oa-?|^i+dJybh^qU*Gms0MP zFW(z+VD-n^JvN3)$Nkq94&8Qs8I&Cv*jsUG=F`uAT=ledr?Xw<ep zF{Q`9_`gr!Xth?56?jhfEvkk6Gv7C0>F9I7$K40!~Dc^7tN(+ctj{i~HC4DIBl{S^|g%9Ds+w zDxd(cWZmt%>e>9cAo!u#l}tAoGR10s>3F5TzNOt38Dqr1c5>(85sW)3aa>s0@eX{1$py;u|LG+dkP8S)TTAq&Vh3k9bcffCk4#_lEz| z5UypeXqf3M#M97&!U=C&6|Gm;^E+*9xC$0R7?0-Pp>>5w!hgbWaf&DOb5=k=EB&**n;HzehTZP zaH^joq_tnZLS<+mH;NxHaoCTCX{?+%As)*Fp<&{RDR@8Q?9BaR&Ew9^V2V)@MF@{{ z%g!~Oo5PtITq>SD!H8cFEQ>jogK;gYD-ibwHq#?8T&5lKOL+Lq7-mL*181;R^9mJw zM@hztjFI!14r9%v={NXMgrXbP)1A>456ArDQSoq!C}0CEk!P-TL_FFa>g;&IXG_NX z6fT~jnZaltbuALmXc}g-5)_0K-F!YUJKDvwqDr11;0_;aDg=dVU$XTNaSKA~j81?v ztpi?=F=1}=`CTx^s@c(KcZ%rsW+%4rL}ih^to+aTDL8ExtOh3*V43*q2+cEc|?uA42LsBm!E8}&JsCP&OOE%s2TAH`;g-7h> z?XnuB;+u`{%4jbNUeu`50e*q#O7ZJ3r8lRK;A;h&_ehBU)7JME(_!hH7+p_^E9N#~l$bpq~Jr9@H0eM5bD4rcdZR`eG{?@c`QY7((!(Oh!Fa zzdfvRPP)_Le*WN=G)`h>_GdbFR$$v4KYdNLQk3azZ_k=yM7aiEX-eMKm4d;G4u>C@ z-<29F-YR_!Blvz*aRR&Trt~R^{&1P7^Szu4<6~9=nn=T)>3Y8r_{m^gQ%v?)?o#@l=J8^`t(GQ${`MaWS%b5;YNY;tf zLu2fa{7^f2;k;f}FXD(T(LZ+N`~3qV38bk_XjbrVlf--E==YK1<3C zIl18CpeuY@wB3uv(=sjGZ$NXNSlZ~A{<%p^KXooX`>f#1?gbw(2f!!KEed?^9}0aJ z-wQ6vcy{TlIamiF^}}_)UtWl zB%W6*wR!7qq7AA$Cv0&)$Kur&%&3dr=&@NCmhf8 z`sf@H_5MDCyJFOxo}42sZ4d*`*`-j7*f4{Gj~}3O_ehIX5X9`EVhg#?k5B(F$vpU_ zP4R;op7lN}Fx@BfqLi>=4p9X4px%N8W7Za;JIleBfEH(-6#Ev=Jm2+P{e-3BpMY%;+W$Y*-WyfEn(FFSS{UYgtrE^4qTRByU#CjC~^ z@QVqSpAj6(N=y!-n^);W;9_IYhdrw58g7$? zV(6OfR`v99-R5_7j|Y0G0$^5!+Y<1^C` zaduYMs+UwB`qLEnZxmZ<=$D3nVhl9Z z6lF#L;E2E;u86AnnxKfyl=-ORG^kAT=~?xf;fcGy5YGJoP&jBSG4KiKvkE^;={h~9 z<%VH?KfTyy^ts^_NG?y$sCYU#TCCy(>mSiQY zh;H`{Vt|S%&EkTV%Cavki)*VVP;n=$H^J3&jKbM>_SEBCeg)xnr zV*Yj)ZZd}!9)7c+?R#Xm9thf;3;OL45VXY{41~?k>|CVw6*&ZjQMOWmYKkY41LwpI z+MZtJKlE4(h?;ZS1h&Oo+-5C)c_wIZ#d|6-H0>svG^_k5^!Ie&MemkM#aoH#vez_j zeg-IwG1fD<3@ASR8F34cV&Vs`EDikF7|45P7<7k6$mgLbXtZH}4!QsP_&Jm5H#IJu z)pF>U4EKmV9vlRD2Gsu8-a!8}h&lEyUW6TF|K;M2fPlShT8;Z|f&1azCd;~)b+4W? z7NBj2DHiJ)NclwF-_PLEw2c7Ql$Zg4DDdlyg&o~5W|j1;oAPtK#%y*D?JZ{c-n15g z)gT^d@%?On%?6 zp^<6$>CNv`OEsl$HKiLgz>@SH|@GT5)Mskd+w2yPDunbql5*Tp24cr3>DLm>hT<^1K4i!C965 zNN_nMM`&nA_Zkh<$F@WxZUxd-PiEhFb)oX=?|jdn{Uz{nDEZNv2VrN)QhBnr3S1Pp zcUE8EaVn@Pn>yxstkomK%HC)Ib-HEp1K5wM$}WI0S$1dGd}|EUe6Ev;-jke*f~T0s z(%fVTh_L zx^sqxeuug=HOyg*AD--bC8c+2*Z`x4WMJ<`gm0a?bLg6_^qn&vA4+}T{4nWPK$U|O zT{_el9q@`Xc#9Nrs}hf;9gxe(Hl?pOrQbBApE9MdFr5UyE9pBUbe6@V{U%pGm77-! zSB$DZfJJP5GIrz2SoX2jY`@l!Oe;b<-)C>5Hb~iSSt`WSLV}q^KeQE3cI#Bj z(0}vZJ$Xn~w6V24Er)Z?KURV%le|7BlSH|gZ1+I19AjkqNBrPQ1(q$4I#UIx`z#dQcjI$b59p$_zG>Q|2 zoqXprHNkt3_0DEl{cfo8xUy~^$C;^4SZmK#FVREwv<>=~fmys{i95q%2dH#|C$>fO z#B09H@r5nSVDm)iqqrCT8b-*UnUF|jzjhA`&0TTp#{;+M#{RlrxaYOWR8JSj+NIUw zg76r7%IbqtdgJ-#Txz85Q+vogiI0of$onv-dmE|uXse#--nk{cd6+Tzrmu9WW$@Z- zf~)EFA9RDB+<9S<_S$>BhuO!FJC}v8xBZG`#L|q%w+%5*arn7|xe+4cii)1(beN6P z>!WOx^~(>sCFH5eMB%aB;mYRs;&k|WR*i@LYW&IO#h8{stInzy*9qEj&2CXzE?u!VhGeN|AAP=ism0q6 z&DHI%i5;<{`_GqTjVli8@hhJ)^W%kf-*XWcA~hz;I=mp0Lz~cchnb~MCbYRVQG_S- zkZ0r~L4iFxIr|8WNAA|G6!oaG-~Z-uv=RE#fbR?cVcIgL;`*_OH~xi8(G^tjQJeR+ zM=aDk`nozk<>9b=3OJx z#TTm)l@4#sjfcdPygO@azg}5@{f5aPhVOV9D@ctfp zuYz0KEtm%fv6UPHipA00F3nXv z8|X|uI&N(2q$nW0OqKJ5HG-=+S%=Z>!+I+495F#1}{`J7#;mCu)6QMPwr)ahS&Oi&l1H~jQkL!c^{Q? zYVoM#(4I7S+<$6bzc(|LQP)F$1{qdg@#*k=NNSCMTEgYOdomVByb|q-@<6;R?|1HT z`N+~&@^k&jVqBR-TH+=+k;gF*{a%TF5zPKk_uD|zERI<_9NptgwwHjgRd3c6jlawu ztYz?r^*+9}GrghL4jCBNun|F>TVB29j=#*X$7LM$o(h?dFOT`eXa4O+I74}6C!beM>A2=%;gvRFuqR3UWKQ%*h;6=`#sbx!u1~q zcCmCAedUqLarM5q+XF7-!w@9$aDens@8{X;}u2jSC| z^#U^`H)opYuu_2F=~w{HgID>Ka5KfHOTX9Zkx_j;^vD144X!om=6y$;$#|q zw~(7OM2tXK@7q3$Wl~+Q^6a_sRNi57TSjKTVScIW)3Kkmz4i)zSYorhUoRqYYdoXj zn2{c@Wglx9_q-GSy!EM!s~3~PH>Hmq>ldCB$yQWy>N+}%4>uVpk{4szs@i+<&UMtt zy}l-r=-0y+tMBo?O^^m`sK&$S-*tm83MOlXWNb|JzK?P*i>TJR8Zwx~@)`qTF_OziqyL;hz1%ab+v}%KbuLmGoxD z!S(SIy^q6pBXg#jhIbw@K5!eGiH1)#yefL6fcyD*z$Mx$)g1;mx1RPc8pkYVM~_zd z2?pcgsWl1s8spKpPDUL6DMF>8^@rH-u7!<<^|0l>48l~EHvv`m`$nukYUdgnd*hVL7(CT2oJCm7?yC-pZFiu>C|J@=f2`x&BV zlf~cvKowzyk-JzJk&sEl48VUi3U^`LYVm2>kSD)c>>sAIL}o1E`4vcwj~Cn- z&?|tacjxdk_6ZdG9gd%QjXM?lqGFBSWYJJ@oB4qDb=oB~ym#+a1$|6O_fN3_`wq8S zSgEgzyr!KyaeN}QzxBHdXYg;=ygzQA_5J1X+E3px64=T64$yON>0GF=d>>yg`*ZP& z+6~$FE^jCu@F{HBVf;JPnnSaK48ZdE+s<&_#kHuI8F=roS#P)XIu!ZSrvo3g{SL&G zn0nc`Pp*s>4Yl9nufq?h9v{9Knb4>|>0N$sQlC?v^Eixlpt1e*i(MJI>+f{lyb3XZ z{49vzMOw*hAe;(+L*o7V68M?k7QD;G3>npQuH|%4gsbOA$?~lNF9GS=PQRU>QqtG+ z%1*E2JigZW^#0Gddt|vD$j9Ff6>u`#%qrgby)b^lcl#7IR&&3%HrHyc#Wmlbx2$V$ z>wLyLvDMS)W$wF+o=sQ7T7nNJM(lrDbvmi$;P55%p^pkXl7AS+Z`m+@GA?_w85?*1 z&Z(@M0w=fY=*wYO-!%WaC-3rRs}Bd`>Z~51_UQa{sSti)Z-DXhT-}d%bT4n&JH~c6 zWVNGs&8valo4QxG?6QO9{tU|v-~GDkjY9F%m9fK5fn{dn^5Lgnb8jbZ4hVB6>t=1S z5ZoMk_M*i6w=kSV@-J_1Ukqz);chMtm|$8FuD>>Tb2x0^Hrs3Si+iG6Qw#pJ^h43f z{vB`B-?80?FPE<|SRc1z;9Ppp4);&E&fkV41{7|_yNUfcVfX4jz<(Qi zm2?w3HsXsJ-+iS1#|y=h9Zh8ghp4v5!-(z4QJL`-a%#ph~-=5-}u;e|>QNFL!Nl1@hzw4EU z8El!6sn<1mk6ll#ECw&6UpjvSeGw7rUPs#5Rf5LzV_P2&B>X?pu7jxwC0gHmQMihN z(mP5OkQ$|zt4I$ZpmYdQMS8CxDk>eMC$xY-0BO=Y5$Ov^Ex>dJm~8W@Jz__iO`#W_85Cru;^n zpO-YiuEEWzIk23@Rfl0lXHRt4VxH%Gk;-X(z4Wk}3guJh6u{?2vOI&lw;`y&&tfvc zT~x?x9Gf3zzovtMDl^nw>(CGIabSTp(F;s+;kRxdFygI624&?+=_INzTb_ zzcE9}-FPb>7OXcpezuejN{K88`qb>R=hF4C*ASk5V!4`@aa~Vid*u{9*L_8VgmL5S z$Cq*lQT8^g7GWK@s9}ZEDI5+rimN;&Z!?bbXK5%yfYc9{V#FpQ;1oR!ha+VmCe%#g z=&8>LC=(JwUA!E`DQqF3NF|63_54yA7qW9@S;!*9?))c1AW&k@>YGo`-`8Wz$PI~@45fb47!#artgte%+ljJ)r-Im@DI`qTP%WDoZGF-zo&-&Q?H`ltsN zb|yE|Z#LYdr#GPQU_X~S0JTEapL~pAO_t)ZQ7rns^#gDdEv{PY`((ZUBSgBh{dfD1 zTzVgg&JJI%_05mmH$mddrWf|>$v@EaNXg4OU9p?2E^Mr9FIir);w89V1nN$de{o6> zVavCDRQ=lZ&lh}Ly1jMpINmfcXd*~Ufqlh1&}X9ki)g$&OV^9W($_W<=U=2Ti{oF^ z`mO)i8fg1H@nhE#L#)17ZVA2GDC+Nx(`Ml}Q|-R!+n9>KGQFJJz$HjaQ6o-f{`i3f z_!*q2^<(4V59~pgjwd@CUj6*+5EE29MBGIGsW6PCjy3B=#@R!RgFiHX>FRFutxTNse5Ty zsY_{QDcFD@tyUiR3?o~*X<#gsZ?0T?mN!X^H*NpcSa+5)iPg{5x5!$3Npipxm!dP& zElAdwrBeQ^C~J}-CZrUZQQ;!yqU0j%VmBI|eP|(Ha`3HQa5Py$rS4$5zP-L-bX*~<%4SalvxH>7_J@aK?=~Xy0o)vx;*XH!!rP&qpmG~#~TeXVyl!J>apj5_b zYdl(_yZWN8a`JJTNATQ6%}V<@M!69Cv!=I$ZzaffZrH9YD4$3t2CRXy5o;-t*1wQ7 zR~2aq%dSxdS66GQ=R0tia}G-w)Rl{uGte2f13B*6Mt*k8(Ni%55TA~0JfAvHO59ox z90-fF~N>nHWmV)VJf7)Y~gt#H#xdA_ztU7S}bFtE%CqOAQ> zwjddhR#3J(YsQs5Sr?m(oFek+7q_^do1lbe0?&$zHF#MaA*&{ z3cOY3B*a^cQA|rN#&Bp3S}G@(Iq~o^@0AxhG4ZBjpigy9fPT5-#;9f>5OpAvz{AW)_nxCT53GBTuT)V-~es zk0(-hYvm2u_5mr$F9SXGNW%WzDcU-W%G#4A1~Hn0`pWY4&mY@WB0OdSt8;2zPBp!0 zH}5J)K72TxT|=lYar%ch0OO0X)EsnG4n}~O^pGGaUK&hc1ZhHzvR4r0VPy4M>V8}1 z$MaGwc@huCkh%lGp!RO*(mH87tnnOas)-s{t?_@yjHs*phmHJpYd&{)Uo=z7J;^2u z=f(AhIxgIWr68VR$X}WNyH)^ik2wD$+_E$#>eP6-kp??pVWVGSr5th^?u+9^amAC% zKAal-cEhz0XW5`hUDpGJ91Q5lVLz!D)0riv?IN)9qfup7*6C>Pm)o`tv@UD`K4F5g zRZWGZj3xjai)jJxJ;_L^0j1PgmKV zY7fr6#(CtZ{Xf2<<)DmN0oUbkshk?#&TnpX5wLuKWBY+=t|Zvw7jxmg_FXalKikV+ z7+a3wR$8{v`yS!&NW_9oInV=Ehki|kdHE{6_I<%M=;OSj8-6T7Ck)g?2GC7$sUdc@ z)Y&<*Bk#%s zL_@<)f;^HPi&Q13xCHLE75pqBRdan#zlQY@XrJ}vcHJx$LBFL3w?B36=375lQbkbJ zvoSh`&igrbki6rvV(59V1Dp7US8BmtU39J#KIa8!fC+fJSwnF1My*>0N>% ztfxU0#=O1wIFd-M4P{w*GCzT-lz(WnQ)h1u;zub|Yi`D!4}nBSO?l>0!dAyRp#E#- z;YdC?xKm5tT*R<9;uGyK?hb~)!i5v{d9{P5ft?edA@WLak3wqF-1BALWk1d*cx}^5 zjd7`aH(j4nd5Ba-r)?uWUVK}YsNjn*bjxY~1Ug=IUrTg1;E*PMS!2IG@&w~e-8_fp zNrbKO%8l_#mP9OJa|iCui7lQaJn)I(q)QZOOIti<47xWJ9-!v2ocoOus$!AkxHI=y z_E>lG2p$cK!UV!*gCv1!$=O<0j+$k}{aiI&50#|4HehAq+_8SGONnTRY=9HDSq-Qk zyK$k4aCsq%vsmX(v>8r}X|umkx|hF89+5&&>pxYf>@$I+_n()^O_hdoXrzhh<#b;8 zI9J~MsOA;)4}qI;^yJm~F5dCOuvGEP1 zU~WPVSaJ455cEW@c2@9ldhN<1n?K_+k_O-Le^c6O+a5{W$ z?LM?k23}DydGtEk#`3|lb6h1G0`ydUzoF!qQ5dxO{A+GWCU9-z`sm}BCAt9f?@@rJ zW2w+N{Io{P&}n|VZer8h6vOWFC+(>N(iov29UGKND!kqG4)2s$*P+~%CWaEVuHH?$ zkb~{g*i_hCyyEH!j%@kl?zK$&n)R$;^TC>9yjVRgfQIxb>|O5fu)}BdgRmu7-3L!X zWifO=jneIC^}9gK3%K+YGq(6(?c^G)IXpZs-&NoL=@M_%lIUD7MeTx|;rVLc#3qbS zP1h$S8~=wl-hYO9`R>tE7iU4b8!D zXtm^N+sSkY1ADMg+`uqU`K!t_H&7uMAZXmUKGtKYoMu$|QuPuf{1-A|fyc;U9N@Af<7Eba+UW1{jZQ6Si@|^0n)m z=HNgtnS8oZ>6(&6XKRF~n->GoO{@v%^QA7B7PH5^q#I%a#N8sc`8>Z`71)$(>KI2I zPVSm1#9hkI$lx97uluA%eptm8^L~M(+3C+={^T&@PD3F-ppxWzx!8fDrAJcgJSY^M zpx2Jf_C5FGnN6B*Zot}Z_q$-Vg@XM;commacGoZ;pJ8|t+vO84z|>I|p3~HM1-eGx zMfis}Px$i$-rr_Hzl@WA+e*rts5|}vm-cZOF`C>h#_6(q7l!EW!2#70L`z1~1-5j! z9}O|FNp(Q>s3e5=_A(&@-)Y1n8T8=h*-h)CHK-d-j$^5u&zoxumC39-5_bELLwuCGCq$Mu z6>Y1e&<(6jqo{soJ{CHo%wB7keR=V@!sy^}0kzE!oLI42?WCML)Y$PF=*2{(_^7n; zus~@_y3>Br4u^!VeDSMC^kN6bwnPs%f?N)mn!{$yA3$u^T;HhUS9}%~qt^;Ah2idy z`&avMD?r#od|bhklYo7aLmO7C0Am#8v>%KpaW7Gs1>oeQUvc7LlRmSidRM`v9M9H( z6c-vbQLsw!r-6Zhgx8*jj@sNSAyg^E%9HNbv_2s(SHz|k`mr;LACKVdWpJ3E_7CE+ z5!PCd8BFGZGAq?iDSi;E9lU7F_Su3<7n9t%`x0mTz2`2pQGXX01`8(&_(FpQ_>;HXq)nsw6$|6bPDxzTjlj3 z?mCd{$TyYs8UDsMx5O>&O7>%9iFndMdVk|X{j0>nv6s6y!NDB(Xqwh;lltiA)F`?^~r%aqFeirBrv1Jb+N58WNBP`3x$?>>~-60FfEEIF}FD& z@j{`+Bm$dpG#U+!QpQxf_~D9xL_3n$BKt{HKGi}N>A6LVt6X~Ovcy1;jIJM+ErBeo z^Y8+U?}AU7L%}r`+iBe*8baxwn?m;4r2AjS%YJeg9m^nI?SykMA_KrKi7Wx7{adwe z385Eja_2K^Oy}FG(e5r!I*Rh1%Aadbit40wx4zBpU;g2h9wxw#{<`tb$vf+pU5yD3vK|d7DB8|XQ%a5GjhKnvv4q>x0$kC@>HO*TqmSG;0lTr#!<(`` zt?j*GHi((pR|9UcbrysV9@ePVIP4>}2m!MO8ma~W!s>;~Ia^8WUGkDKBYo}`+dZs2 zh|hRj#Cv;3A>}}yr0;6075>FpuPhFP^x;0Q&NjKY!!aCf6LpViOzwc>T562+BM4*f)Y`q zDrA$M$ngF2$#D9QqMgirXf(ON`jqk50L^FB+Zb~1yc{75Es_P_=LfYLw6|y+qwi0} zN<>qIK%#({=qO4-cRID}9xY&M?PiRNJ-DtWs+0VIL<6iXcgwpgf zagcu~#72k|_1f_Od`fkB+7c-ToxF{rk--tg+gH~k(U8hRd_Z42_OErHdZUqxfBS29 zbwPTV;lY9^G=q3U?{rvnG(kGS2KkGyo9H;OIh{S&YwO6{vc03qwOiT~rU!@#T<1Q) zMlSw|2u)sNy^Q3qSD5RcFXfz0k=u%lRTmlOlL0&<`8}TRSI~lJn7Xw;aVk+EmPtyY zUhnx*ps<%O%ri+L>*B7BKQ4x?`ZLA^+%%E*V7pylt=$+ApS{- zS+LxuKzXsvh2mWN=D|Nx40rMQN@*3lLnO1s2S*e`)DoyQ0kh(?A)lLK;&ne|JM(@t zOtv60$Nw&}^s`Tc70EX|#ex43B2^kcVeK0Ea5n*;*%S7XB5p~q^y;2*2uFW8%)c5n z&ve#1!{VOu!f>{zEpLMog30eAA+jbg)a!^mHihi|#z7sE)np(pu8{XJ-Fr0Y&1C`O zVdPyjvOOLnYD)RfwyN63fci~U!Ql15=akxW>%PXDb>lyFg(_}Iz!n)DE1CZZPyk+8 z_X%hgsTqr|T}oMAsenk5J0^T)(zUO4FgGZ)2q4O7$H3XZ{5|6w&8!3x24YxvRgvc`F`O6s*iYo+vsed-!<07WrV!?xh6m(I=+r?W(FBekp3w8@1m;ItI#~OF$ zl5dQgMbab{_kjN$ zs6EYps$`1J9d%FCIcJ-uu3LXWX?O@v9q;+tS*76o$Je zXVENf&Vz%TJ6gPC$&o1*nxHAztYHb6^vpF%cXNwAo|k@jOIA@iEzCkvrrj3DWs;ihYyf02%*BOmTdh{#o|^jnKoyY0uf zKIXKyaAK~pik1HbHZyCjesNq@mwnr#98d_~zC0lnpUd~jv5%f|@ekIrmeZYt{976i zjst&J?|O^zMLtopC1qK!Riiqex)nLcU-|dhF1LS=FjeJj`1HFbPjqUZPEJiDg)`gp zV9(B3IVHGL-Mz##u?_vq)pJE)|KCU?^Y^*qdZ{C;25XY+NXQ*z^@d+j9nbmtc3El-46$BwUvpSTcc>}foU_x z^Q2oPQLXw1x$dR1E7!=J{v}t%s{68Ft~o8z7fGO-2W(Okg`Q0-hU2%a+yN+GE`&^UE^_TmL(5Ai^y%tq1^*#mv zq-9kNDYh@c+Z0o=B<$#ELC{tJxH+MsU_6mD0nE1@McFv7j+hAq56y&H72LsfGyYWM zYK`SwvVlgSXkCZY$}hW@9A|%C{n!mUvvBB^dq#C)l(nF+$4`wTHXG#;#=`j>V{4;& ze%r7+yIbay_a|=-Hzq!cZwn7phu5l)l8f6#T???=AIOOte*@5SuESrAXM)z&pE2&$_Q|}DHVC|+WS)-BF)>@BJ*Ra zvV-9w2T#O4om@x|^SVB)T(v)GR3PGSs~){L{z4@?-Jbe1vdh{nnuXES-G%G>S!X}# zxzyOkaB5|u@)YASu&soy8xc=<+6cB*+2};C6ZInhYxu!`5;$$=0Qi@uI^HbgbNi+5 zsIq8$Wvj#Sn-9of);=kIU5ZEd9ZwIiLT12id?~M^u}-cnPBv<(GBiHhuQ~L1t=yO` z7C&9YQv7ld#oXD>c1qo(RPM;Fli7YZKQg+zX*%u)z)8wpoylO5C;P}B6F=Stl1)n{ zu0;$RF_9C{!o21plzW@tI*ayES_F?2&h+N+Zj{zu{QG2Zh|`qRq{p;*PzThHf1&4x zDx&Ky0B!j+T&^Bn{h|tOCqb?Wr^>lz-RKDZ65BNx3JiNTFfb4*zI0Po`toV!19)sl zOe(xN?bvHp`}2yb?fhrM8-znSiUU;oqAV}sxfHMA=98+hXFE?;nO!&^3=DCzNF%j^ zA2uY5X$iQ7#s&7#u^6o6%`=)7WK*-{p(D)&j;+Pf!Jsf9@1(aI-h!4pArIcJR!5|7J5TUNzq;k2MTRzr)6M}tQ-?VFr{JIlVgwELf zS&sExFuyJWCHQj~SrBWtQ-Ss|d#UznPMq5bV-l zIMObg9c3->%?C83!Th7JUl?^_4A~Oe9iL*ceFhDYytB=xr|vNfUu4uIjD`sw%EyPr z#GTKBF0L2+HiYaeQYWLBC_Bcyt}SJux7 z6`N&r=z#Aa%H8w#cG{G}hc!k}+2oD0pWz7A)qxBrHd(V356beZFipMA&i(18E#&L1 zlr(s-Ce60=z7AyytAOg%ED4kB6QBtT9{_Z~Os@yz$Cv?ex<5aOyVQe|#HL`UFS+SU zA3BAvDI=ssA;jTSAf&CgITL*Br!J-0rQ8Sru6)b91g*zVX}#>5b75-zs;~9F9dltN zT^XW@r;jENcNrZA8qSE&R)1Oi1KAWi8tnGctejWTg-U~9U*uF@7?69Zf^jtQRZn+0 zArPi+cX7_{LsHSaR)ekfBs*=f zg<*(ERlUKYNKiS)@#ye5u$049tbb0^0~!|jw1XLx?WAM2$~*XCG2+pu{xwf=01mc~ z#%3P74s4eYvSa57<>CmSD5xfBU%cMp0ucvPdp5t_&5Mx6Vf5=tEry>8=kMDh4$-@~ z45=QD`A9ELvzj8mz|#i^F#!g$Rh1wuNw$P@|g$;iEE2%X#Pnl9ttU}`&NjfRYRi05J{7`7Qb5*Z1u@6>pms zbW{;`T$a6}OLOZanuS{v+3-V$sC}@whQWbG%-0>+rXHvLF&5k^8*eBmZg=LCYnHy;CZZd2>b*)hf77 z)o}&Z2=NhI3>b{~nT zf9aO<<^%W?MG+1zG_pt(ZnAHTGZSUI}1h@Qq_Z#_U=je zsSP_1R-X{WqA`=2!eVPsyeF2~u5o{x@+b6ALwA;inT9rM|LlQ=r2X**$!r=ST3b z+nLBmXXjeY(6@?QAgPOM;6jhHwFEGk$6uAp&oG=jJ{I;eNY(na@TrV zn#f@qE)q-E5{HcV7Kp&JQ+NLUaoi!GC^ANIKreRZ4+H|SsiEF4B{Kq6M$Cdxorq8F z8mHm1hE^7&CpUJ!%@L1Z$vTN+s!#jE_HsAKa3b5@N8ulIHOE5Zdty8M(gG{NTFa{v zh!nPy)k9`jU2fpQ`X4}tD1f+C>-?q*I=64&x4S*<(>`a~`INe~_ypCNM*5;9J8SHm zE;{C-O?`$CO|{Q`0*2fI?@ac5I8I;2bpMNpyxkrY*K^kU%yYtkv`V@gx9c@Mi$_7T ze8=)Jl=lI>B#mJ<4Q>u@AUSUp``kW-TOj88p=rABGtma-|w|pLP&|5aIQXw3RZ;(?WTK>cmsJ zW6}LSJdi9oz+Q0w%*i+jra5GOq^UmH^vyMp^Z>Ea7Vl_(I-&Ed+pHqZk$kP0Si*<; zH~nbE?atI1Tiw}XT6!0KkmgL-t@7?4_~j1lF)?58@N93)5v*_x_sVJWG62DADDUmKLA;CqM2lF}$ggPH zVpL@aclc<@oGU@4MOY8qA7Bqdg?=Urk|=&2))6z(XEa)!emQxyW_%gysi_8d*{WvWOC{e)q4`gMI@sbhf`GFZsgkRk$BIngxBUuF&>6qE}`1#l2vi2O(Ag`ag^Sc6GLch8oMZ!}H6ol_ zE)-=IKHs)%$gBu4?VQ$FzmzbOXB3FglHI3bpmDkdSD%qULP_%XTM_6vTJ^w6>7$rP4Ugk%UUQHPTAOMH*-T{q& zhXJkXGTr%yFF@qCfyQ5din^uW#wx@L!KWUDS2>fU{U|B!E?WU>npD(BKkC0`f+u}g zXP=tY5tP}m{kVwDip7pw)t6IM$sJ9QV1(7SX@R4LsT#g4WmYce9-$Y74+5Ia$^bkb ztqhXmNR75C=8)B%=}!*iO1C3NS7)h1g%L>PZy$?{6K8G)Hu+zVPH*#JRR?CG?%=X0 z%E`>rQgX>J6h0@b4?6CPtXotqp{CK5(Ak)Q)7Wa3i0@oK@Bd)D*HtsNp*)cY1DTWb zK$D%KQ4cG+#LSlz);qEG1SR~X(dt+!)E_j-FV&y+atcOOT{sZlSP6g5tsy+C^yy~4 zQbT&vu%=+Zd@5zxrX1A+?QNC3SZyEhN}L$k^lVBz!2fl6-}p|QRFXTc`%hzTPR3N0 zuKwH?{R>BR92bI9t|_0}^(9L5@v-P z9>0Q5Z-&!WWQ&r7YwgU^BLsV@lto`oZwT!aT8Q!|2akLLB~>;Wj_8d-Ct_NV?a)bL z@yUs z;(b~(v-|d*_m?1l;q%jWPZ{0q|_Pm4(UOtMkifH)_4 z)$Tu0kvZY%IBD%aJ8`CQ#aSAR?RdF0pQt-!#W%Ngzk?AHDA{zP$*`H|`?Kw-o~Lj7 z>aw~$*r#$Ap#|L*SU=UP$F_s}EkeJsvQNRrp49 zI(w>5p={Ip6qmzPjV^esr=72H0m;Gy-sPP5mD-WSIT)l|Htk2Ei$A}3QB`@w-=aR2 zk%x$33vqpTK-*L}b+_aC# zNZ9=*(W_i;{1CKhK7CtlCocaAj4;nc2i9-yJF2hF48EfJPszb{r0SQV-^;IFge&*Q zn4&9STgHfMn*r6g&;QNW4DwYZhPDhI_G}SvGewQ&T;Olx9@Hzf(9K!SWZoET>Wr%3 znDgmJCvn!knCuyBJh|2{rEw6XI^O6aqo5EfV+LXh{^rU#74jTD8QMJ%Rlg=N+9ow^ z#45X*t4ceKX6;_fm62A3I-YHx1Z?iJEXcnZwnogwQ{?!kW$`!oQgT9KTbtkQ6EB|t z!S|yW%X8YJIo-TU&Wo`tt=$SZVgTu-Y~7oL-_>i?cU_o0RKbNS8l}OKtGa)na|R zq$al&YvzxiVZ)G*K*^xmDUF-wHv-uE1@v#5Y5Sxe%YPspe5^O-2pB?E!3R;NT?HDB zt|4FN8u~6rX!qGQ9Z8P451b5sb*#Z$QKirvlGVFBQMs=?6EV*~;Zoz~*T~DZ@nZuf zkwJeG_2@)?YPiLLJ?MgSj5Zn>Sv)>R5A)mg4Z`ZPJbOaB=kykqf1E`ROTnfg=_)hs zCzS5WSd2K^b(|{XE&$NCy7V;Oq&*FM#f|CIq6G{~Ph*F7?8FE5w3f#)1}b&|PTDg4f5wDCp#dHc`p;rGq@1T_VaNl)s4(&}zr=BMb)T(KRcEVPffeW$VW@?9i) zoP)Ji8vk$-+qFe#;1*3y`Sv+*r40)sKJHJa)8k*UyzUWYbpxy#??OXKaQB&Dn8M1;34~^?KG(PaB3(xK`B0?e`)E!sF9rMYO_knCz>F{>knfQeS{UI&3rxiry zZ9st|m5+NC7q54Aq13OmK+Vtk;&9AWDlcN&s)s_vuYRtpUhksEEZ1(%O`%-!2dD0z zv~=&Z`9XXJMjw5^-d3wM-4eX4m)j*}W-W!{t6QsKGl9>u*=50ig}oC;-p!w_Z4FnZ@EQ1KxUKZC z)4;7dI$sZ8dppYejSey`zzgk-00W>O#oNYz-h5BZzK_%>2n^)wf=EpjFtwAug*i)X zQ0{n{+y;E=Er2c!iIl{tg~SLaPCzH@B7NLqFRQ)6Puz5zw?X$^t(uIG3VbWuvUO*3I9|eTUlZh zo>v*DFDgt*m2=84pqV_9$i8-eu8Op*_W~2JveHsI2bm6Qh$h?NZR;~@cj}&V5nuL- z%7G8f5yI4!+lb2?Uq-)6aQcTX#Uz7GXMM7$WkX}QOjEMs#hRL*MhY5*{-Dk!b?$yv z97Q_r;^Icx{zEq3?^nHW-(tjjJA|X(0T-SqA8t5ARM4D4<)i5O{cT{>=+{#pxu0?N zsUG<_s|@Peyg3tszp?%nh5y^JcKkOlu(rZcd)Fx{yXV~Hsfh==Ot=Q9#5J+J5Y6$G)ob_Y73?_ zg9k!$o`ySU(JvUT)+}X+ri2{E&(v_myV` zkhJRo9KYO%r++@(dhAbVnoKwst7mhTsVD0-4Ys|Tq zk*^=7s^@v9`6&2v_P^Z9W{kf)%(jGN)v1|DCF5GCFTig!^gx51?lkmb0^X@)rM>)q z67|J8Ir-Mn$_>m(K!ocQ8^X(GFvHmK+_PJJ*577!=!}1~%uhCZG6~LT4rdB@FYV87 zO3^*iFp2mK^7Z95gRri7QMri#v+_+HB0zajaY{32(v zDnMg}hps4Z2W{j;hSb79r7|xKDwJ(@LuabvHdp_nZlBl+czj!Bt{&r+l%w`ZNDAqz zK4MKS)}1~$HEHobJTS~lgtxA#7yqqG92tHOL()6xPH0b!%zoFY5p(lB&Uzoi&?Pa) z{3dbC0;zAwhtRkmxKsHg!UMH7go;sVV$87c&7ZME=5mJkI1F?x8@=i1yELng#rq^C z_(2ha5Kt90-4a0h4`qO1X4)Dfm-=~>MeISFwGMbW45^a^)j&IYEk7wt^0uSe@mUv1 zT?QeY+~Cy{vXV8r_)XV;zq<(21;_9v!~xpcGVo>#3|j90$q58hjo z2~fu5hDVDn?L*J&Y~kj$Y3;yV>GN;)y`wHw4bbp^q@z#1w4RIL4;h)Rj#5lsjwXim zt)&P0{F@a9*$>!`hWcNdODFxS1Svz-0Kictwvo%?I(+UqL3J>>W2Hy6@? z^U-rQ7qf6$%7dxogbL`w$IEx6j>(t`JWBE5E2J}NC4XT0gaDuZ5jZ*ZbyF56R1ZPo zPAk#Z1`AFBL^(8$>MCWadHjqzs2Cpt5?Q+xogCz!AP299Yf2=<72OQ$;=D>}B_!8= z+3${V+sSKV?_gqi_#o}y;ExVHQcs@z_fF_hzxIF6NfgBc{<`i1f%4D)>asq) zOaE_N7jsqYgTe>pt$#;ESgbCn2kZb1grXo2lxSPXh6QSF!z|Lq#tmqHuef&FM z)=$jY7G^vf;{9-L{6m2xO0ZaTQ6tlXi|ucTE=(W&p-*Ng^)t{nYJOrSd3@fO+-@83y> z;?)V1C`q~YP^HS5jJge#%<*A!dxo91$GY0|zZ+-rK$7vO+O!#+;q{>N1AvZp#FK#^ zzbtc3Xj_Rc&{1cF#@+o7CvM57owuE5T=FZglNZ^$Yem2LNmrfR{a&Bj1A+JLj^68N z`xytklk;d5}UFcZz;0N2L6-v8})9&LsNYBgyw5R@Sbk`LNQJZmWZM1Ypl9 zT;m}G5UegO{9Vr9qB+0kA?cTD`SKV$TW&=@l4 zzR1t|oXzzs>@bh~>^M>m@n0|`Q;6}$m1LK#3F?jzI@rWamBFa9B z(ezK*+(fC_AGp8|9OSH!f5Z()yT_mdCtdx@M%kMV7EY1}om>$7u;XYIWm51ENTpS;-q?hl=P9pLULiL;2+?8~>=LZ_>v66HPGRSG9O* zZ=sy0`6v*l=KmSgdTu;?(ktk;{C{JaRmtUa#x9*}3}f{G8x?x6xnfeE+W2|4g#5 z<|d?Cnj}0+KirE@+6h-#Q1BKEgA}fQmL0=axElH)5H0ehyv?R+?dwoe^2e;EP?mM=DSad**y*R!P%$w>#@3A`IS4 zt64{AITtkCJyZ^tLWbIiyB!2yW|JAn$(|F z;<*;{oOPs)TZ}$bUzTrx(dttFX)nECl6Rj6qh`c?cmK=l$gdg{pk#(HWQM46 zNUV3LSUO)lU$5;*zhgL*cLM@OLh`p>{_aKoWf26tU)=h+icjiO{XoQ=)wG|>4@<7t z`@?%hs2ObHal0d!;K!$)yO{~Ma;AJ=V%ZcB7Np2$xmSSXVmVcfAgsOwn?`l(*ofYgCr=bH$QjwCW88x+#l@9 zKcNHu`LT3nl{J(+wM={@{f+_=fdiN7c6Uk>$u*|?4*MOU#?&r$CyDPSUlWJn$IJ@K zJSL6v+5=dgDGqz1bBn)~255MW?&V&epL_NFZNSgfSBYAo)Uir|x;EUhTO>($ zcI(B0l!0Jz^q|N(04tBAf5G+-qw{yPR3eH|39aJE0$Y1x!Bv(fE2_x%MqNNJ>K6FH zd*nqu^kDHfHbrJGoJST#va(&7Q6jZJLW$dS`900$4WB|k;zW{c(c>)eFK;f+~(6se1y}PQTF- z9bMNH{~MzuWW2+%_VVZb-4@UvAGs5Lt)0ovfCiCH^Y5zPivyf%eFxm7#fqLq?{ya1 z3Ch!MqdY_%(g)U?(&dIxor}jVsD|pX{_T|jD0G^kinsFg z@E#V%P6Vcj_+mjniNs%2f>>RGhZ@hvDzjFGBAoqvu4Q@N*Lei*=9x>4Sb?$~iF& z^&+w{10gT{1SNKhR84G?1!AET6)CCW%&pobm)dw+|Gy(HZzy4aO`r+ZSBW-l=M8C_ zYa;uAp6!y{*FSi=X&NtG`f8;rac$yrzW#o=#-z&Bn#TKmuwEhZ+7+0Bnw11(Z2eTS zjIKvijDOIV65O8^b z2Nc+w4dXu`!;bXjC)}71!R3J_jI7=L5@Md1rJ6lh>xmgCd+J2Aw)R7Zr8SdryoX5V z_q!8epmB6>Lo1(YcBq-q0jD0z50eA~xaC`myGyA&*ycMlaBsSaK@CfHHpe^Fn9txv z&K@E~$@kcG=z+83iST5HxzK4l@zN)BPCsLjap(T_ynS?^3h~SgZ<+Rs@IB+b8ohnc zNEo!Pf!!Ex0Ka$TkYy5@>V^u;s*DW=KBr}D`=fk32AeH|KXV40@H8+x3vrsL{_BH@^Vfjd5>>Gvy)_&(>s(%rO6MX=9at$9s z{{)o5l|X2Y`7$$23(T@joW2#0ca-Ju;%H<*N|%!E@l(veUY~)j4bvqxR32J0Ed^Zx z$kpi#ml)g^J6dN8A;9K3=KC)UhZ-GnQI)-^_m>pL+XF>!p=Z69?&;J91^)0VD~{`& zf26jloc5#iMD3wwf#OW$=hmK?e&(FrX5SpoW0LDx|M`!hX=byN<@e^z=af3~ zh>iJsB-kbb;sHn(iHf&R|KiBIWjsH8HUE`WIA$GcNPTxtg2R}%wGY$@68uV zBrLs@M)Ka=cGoiH8+vZf7gRDRQuW#IB#&q@R=kYOzPk9<>MzusK>M6|7io!$w&%H@ zM=;RFk=e)oJsGbosK+abxl+i%bRvk&=mafJuJW2mZivl^H2AMhO1V7kLFPzCPFE>b zFydIP5@efgV>t}d=PLZVnweU3&?yWZ=QCn?k=5lugBZPqycn!Wi3u8)s`}}Kq?rLH zluc-qGGF7W{wHPz`T^nL@b)O7=q;20rTVY1tY5FMO?En#CcQ=gnrl38&->n|eo>_J&Dq`Ts zlZA!~b1uKeB!Z}Sfwa7{+3B7-?z`iyvpOl&O;K}56%s6d&2_}Lo1Ly6eM5zzpuV7L zi4C1KEDu=p(uPQTCrn_k)J)D_*y}^ok4HWOl0pr^Z?nDsQkK{a&b9g6do3=#zB1G% zA=;{57F7zJxADxbEJzxm{i0?f;>%Pgix(rWB(7Sc8zla$teR$dM2z(G^n8}|2hS9< z*vS~yrBykCB5)fv5=ylgFrS4DJ_*g}uBGOJyNvC|cz1$9M%31tC6_(I>BLw5Lt9ix zcboae&w12Kr!fgy!S<=RHSxOk?gIYsT-OKPCtOXEz(d@hAr2EzW1HLC_i(~^O|y1_ zRxElqu1@4)H8?_aXP?{5*yqP}7-05@Yts+WrFH)KMa*`04!aPacKPkV!TxY5hg2gP zcPTmSo&hcyjQ5_ZM6$u>#WlVq(ZnJ1(jb|7JwmGh?bnh=ElC^gJwGGUtDSCpb*6SNSHuK>N5_Ec&jwFd zb|Ugfak=yO(-Gd7YjTNXgTG0PwOY@1K@S}%rbbB0Mo>)uZ`|Z>LFC~V*Rx{Lr|X9e zJ#(tCgD5*&e&`4Pp6QRBH${r}+Rgg9C9vM)H6f%2m z$GGLviG`HSaCWmXiZ3_|pFC#c^~%pyzd?G)7ri@sBuLsbl7#f3w{sDoojQK1oZ^Lo zAF=R)Z-Xq`` zl=VY+OGekb(>42WCSbqkN3i#G?c@gQO~T5HZIvOPTg2c#bdU9#en$E8WrD> zQ)o7>*nsub{yWLp-h1B~tdn!#QDY|mP!(ci@;6jTqdwMHynH#GkInWO!w%TgLNh+M zFR_+Yr*OjIq(^kys}W`1e^S{7-d#c`3u;)_FBMbzn0)`~=9uyo8Wx^SJhc>R*o0p8 zP*G7ouKjo@S*n;X{s4cKy$*3I;(%{xefmJQbSP=wFRS@{#7eEt!U@;mgBDetRk%s9 zHy^Y-3a!+aPJNlv-t+cbM0SZ6Ez!|np)e~mZVNjM<)vuao@3-_{HbjwFRsk_R&jgq zGJg>yHPx6=JE>^~mo3X8^9=HTDu zTypBw3xGwwE|F!*d#pyvH(tgBJQ&oCI>h6Zi*ct3gUR~6p@!=+z$6u1la<6dQI)V~IHjaH zkyp32IVL~pY|GyVj>D)y`HC+`t8MFaxHdZV=BpU|q1AvU#kGG95g6l@h9u9x)+ zr0s7?SIES4veUL@ZJ(#lEiJ#g^MfL53t9f!^Ct5h$d!3%tE>GZZ(4X8gS`6!Ac>2Ts)DOCn_BRA;Uzi}I`GPyehJl^c` zElb@Oh9XBH5H(c|)1?k%%v-_}gF-6D%taEPoY2h64SHr#&-#eH1d_{;7xm0Ft~D3} zNb@T>(=PIH;EiyYa^KyW!GIunZB&UO)bd?WXCST9JMHj3$OUFz{cSLNxV@f!+VKa# zLYEp2gk^vU{r@(phuob`m7R0dZAlned-ea|^dphLk&M$n^*Uh3S>Z+5F!50Ypkj2K zFiXiC1ZgdaxL69Wr+^j zp)ESA+WZOVd6Jm7R3!K<_;q!YE28CT+tD~B)sKipcaDtD-EmM=$uW6#74dANWoX;o z?~r@snY;-j1E68xG*9!sO1~Gm@gdw>eag)AK&X+k9ne>R12crzQr4fzKz^DwLa7g! zPv`?x2-o6~vTl9Q5f^%9RJbpE?3eFZ#yIoc;Hxa%^F9Cg?)Zv&w~!d%^=+F$0T+69 zxSOG|7Uc(-^gLynvmz!qPiV&AIg+{lv%m{|C+Y>pxOeZ=;f7$MH*%Tf_9lTUIP66d zT1bi8tL)(2F^V2d|0C5L1inRTcJ$zUdnJMBAnIM5Gl_+!2eYp?-mMLOGsjM8J^`;6 z3P7sagsrX1%FWY#BKcMI0`XO*amX7%_F?GIRsqRt5Jz_!;P7$n63Z>-)RlrU=p09Y zA~2dHv?>gc>G{>GILLA~?kwkLbQxcx3mX3W;ML;r7)^<>t_Hnz?CH~oI!WX{76Y&I z1uwD|5)Em$^L}zzbi?<%2l(kqoD3qHhlt-#a}e)tGB9Ws8GM!EC%EX&XZpII%@x=% zi90=1baozNpBns&Z58&T*C|;*TuD`Bb@G>~LvX@rIHLiGyS^l(ifeskv^P+29bg*< z`F(U7H0P4jzdwh!0izmny-V9EAU(C(1im*5ensaN1Zp>zfZm3Lksa>-671+=I6OJwOKR zdp8Dj3nXzh%BF{d_wc#ip3+1OV8H+dl>H751!x>!y1S%N+RE3-X6NNDF$83u3Hcgc zt5hKV4~DvTd)q>8%(aPMz1vbZxLsI-D0D>ctLXtNsdKSHo)M$2<9l09kNrL`vG!?x zcR#>k)%ohK8#RblB0Trw?gV7@PU%7#(GaRCieb03Ar%b7i-N+#)N1tfQcpd@7p;5R zuR~F)wX3du8wE^viNedI@~>^lNF`i|#49Xx@HtFSmp-m^qw`5u-8vYZ#0rxvJ?Eh} zGgAr>Qet=&#tV;-LdO9fvzg?_3mGnuq5p8+(Pvu7^b`c3o#Su$P{FwXv`(<6P&g2L zzHN^?qvS)jDqjbWoZ6SA#OJfloCni5R z=sAhbPm2}e9I2kI^Z0^=Tr-;0s$Xw-%p)pteZ#*GOsgqwv)>OwJzCc9P~@*x#6Q%C z;TkWQs=Q7FzREFlN$#`C1xe1LK?Zx%WBVY94cxb-i?!=|Iww=zicz;Rb(Pb}cpFOp zp6&zGYz!AC9vg=tVl(zMCDa(PfCNmbv(J`)%$FIi1Z(QLx z9w*$B&RwaPir_ycPe}vzn}WmCDw++ht^P%YH@8j<6};&WQu*)n(FTbfM0l(cbsq9* z;N;=VR?|u2JM%+Zhkt%EoaIo=LX&yr7t1+ONEu3GV76;l#z@W~)YaQUb`ThvW?(Y$ z%@F7|H~CUsIk*2}O;5;a?~iYL{nnN{#-BcDzzs(<&KYS8U7MYZ6(OfT8X|NZc!ocG z>OpH)ZM_jZEx(ocL=J?Cs}9FqqCjxLWj*M$b8K45IVbngNNXzTpdzrIv#A?)DHYe< zz~=WK_D21dsO?l`j2$BVTjJOTZW@v8|G*{dRMtTNZHEoPJ`hZf|zr*OG;a zvH7)~iJMMUH@5}tyaE-I1+n(HyqrA=IwJCV7epsuonM)tn+x$0q_UzP;`@kWL`mS# z{7JO-8L-x<3kf_&*#mCLZ2sh)Cy2tQ3l{tR`CD8pW%pX&4{`>*Q{>nXWj_Sc+WQavB-)KJGyuho{-)CYm*wET==<}(eUcviHw`>cs1cb(#aaca@~)Zh2g$5^sS8mr!e1KXuc|A60;o2F5VQwE zp9h|fnCIEW_w<+G63SO{O?=VE9o{aZsoeOU3k;J1NXI}GZB?|k<|0@Zd5xzf;LZi7 zFUF%@CsvoA43VPcOxs`S?H>dz{6uUD&J2+sR&>9W3C9+Qr#KxQ)94~~hb~W2N?@~V zYqJfrT<9MY%}uM;qeJpxWa~G^ptnleSI8cicfOXEy282Hr){tz3zH`sg`gz+3DPkM z4uX&VYwX|jjsabyT^c3c-9FUFp2=QyISt#9~JGP512_QMoGnssynN8zgPU4hl1`YAQxJOVa%7ID6*)@$zmf>w6K-| zlw|A6x%qNsUL;5NXDUxR!7lFGtYQ0>EJ1x1zpGI9OZv~xd)ZwYoGeG1T+_<^p~}t=JWzX)oX2J}RSk+&Fz%&j&QpcL~7` zZ{}Sy9tFC~{j-0Xe7E6Hn~E`GXb^D$Lvm#yRp(L|8X`%FZt zJ+VzbpIqz)^MR9bn}c>}F!Zqjz9JWe&w_TCtb&fJJ^R;KJv#RdG7`4kb+_Qk6_Nmh zW5ZOkgQuVHa{*9q@N#A5uLtdZ!^VCAN0Dy!9aQ^vF|h^;C$Ad`H?v*$)$weAJb9di zJ*TQ8)o^KhH@^({^83B^9r}uKi@*~=q)9_R6W!uIa#bR7ZStVMkf-7Oc?36s9rjli zFpsEMNh)VvK0(wxc3BuS+pywk8!7A5`2z2Hfg5O(!Szbh7k#jhxa~WGpHGx({X|H% zPlakHJI6Jr9EHy;|L#D9T(4c?K)Ss%nqs)_m?iUY;!I-A%L&MKeSeR^?M{uHk+Yi# z!V8t(U6G#RT+EQK5slv=c%?-V8;1c-#+t6J!&n8Hw`bymf%#aLNa|%jaUE>!MfN&o z`?~)EP$llsE#?mG6{7O0-N$ z-hGx?spW4xc&c|)rp`g{oyaP0`_UbvNM3tHnN0>FLN9Mh)$ys9s`N(!46eDASp4J} zRep%OF`@nkTQB!Yceb}_@WDAqnTJ(!(Q%(iePw2bPk?5^c+0K4R|hMt-Hy7C+Z`vP zUyxLh{yj%+53=*Im1iSD(&4zpfI(QV2;MQzdI`ST;$4^&v|{*0m92*=@f#*n6SL+H zvf>^gzobNpnd7g+bui6E)%;(Op}_$ljl(zO}?ktFQ)3D9@N7KQF-F6bmFsCRm7 zf2&mDuh}-=nF#5+3*qN%UFRdTzkXw;8S!gk#+Mw{$+y?)Q$&I^$re=}zFJfu zx{#09oK?quGgA=p@9IOOua#ivO||1%4igC_y@%uSGBi&D9bb}L1<}m-xzuOyeJHBI zpb&U!HNf2U!(@3*6aL_b!rTVps{d7L+g1yT zwaVw49&8>`KwTC1k^9bpw}khWU?uuoGY=1s^pWWK9_38Q$8+Mx;B#xlv4CkFQAL?= z@u41_zo)fauG>hgplQG$rLT_T&?L*t$McMx%>8Fqr@UhuF6}X-h5R0O3$R60S6<#? z-fwfm>OYSFy{Mn@8H1L_Jh1kB{p7t z!SO?EB@d{TXz?AIp-+A*Lv1Vu+oeAknpT*3JuE_X;5BY4zN-D7SxEYe8W#O_%*TG0 zNcjTL3)L4lCxRE%xn?*fn#7?OM#WX0Vko#brca_uoq`thv+T>;--Z;buDDV}gRG{k zxP~y1rx`~=U7=b5dzHrG&nPY<>YSTM%^8QLMYJVX|I7N|7>U5(A7OnwUR!9*Jajkq zoZe>KAMBwGc>vv9LLTn@<4*romg#?nxhDZh@DN=;bhVIG>%Xm}E=CAI&AD_MK2JGsy8&^K3ej0Ep=JZV6`T3^{j zIrA&$k|Ht9O4LZ%suk%X4E-$B_Xq_I|$Bpb2 z*mUbP>q@BHa>SkAuqqaz?Dg_}72baw!@RT8I!{Om)y=3Cjqt}RUVe+a_`0qFgtyW# zK2Zq}{y@rNsWX{-e4>XagQ{j>hhm8MSsxEE5lmW;UoJC79I|)}mzU#BuFjEa5?)?> zbun8}yu0z-UR>Rz@7z5r-_KjetM^6*#2%$28qiomYt@=k@z!#Mg&#K`4dXlXbxXZ% z9{n|YZ{AoOe7iGlw;N=%=*6X}nF=b_$Y!y6Ok0#`^Nc3~8j=gTj-h&mChxM^aT#}( zt&W@ebDpQ^d>ezf?`s#IWE`Im#aB&A!X(wQWbb45dv7%jMUQ78nDQgNCu_~z>ht-V zi!%{XAwf6M1MLYgp4ih}@EKzvh@D|FSp!IaZ2OU`_zXJqitc@vQ4SjQL0aUs`Mq|# ze3kh#D5I(PMfQVVKoXB3Lv4~Ac~RTg+Gpqm|8TGlD-Uv`5QsG4*?2F1|=GWviE^cf6(CwiYeS zCrah$=fq$Se?59Sh}w66o(v|sr!U`;MU4RUzEE?NgfVtYBJ@^jMJ7VKuJF%b^C*ha zS+)^pWA*T;e7V}z4&=Kc(TGe?o$K$>|HCp$YX8D?(cG#?{V^&K$0*~iuUJ7HH?jY% zPvcu!7vWE0*NOaVW1n#yww&h2IkV#O1>Yeq@>_WF9cJs8bKbQiyyU_7w;x&Jos!f# zM;+-aIZf#!qf?uUDls+y$?ga`!ve5C34Hb8S3)&GE$>?akt2@&y(B+FHzMkWT1!1g z$E@(3-`7Xubtk9^=cMsGp`0XnWO++O-*Zm0#)1zfKXD%~MD=~w> z&0BB5S^G_1B=^KRbf0clMUIPbx~pE(5y)!S`_j~K8}H1%(Rn9_hEdDUdCKQOMrF5F zi>72LV`eVp+muL_<(8|xZN6$?Yk1a(eMP#BrjcDf5z2Y9#Q1s zMFUeZTZSOW05+Yqz>u90(*w3RB?}|UI9x=E`hc`)ivgo5rN~v!F|Jj}VLR_kPo1vN zrqY@zXY_&TAmMjiG34^P#$?~&*~XTrx~95wqXS99lg0I&!8cnOVXQxKSrI1-ehrLx z2`-byvAP%qqt&rO#=Ijn}fw_N*t)iEkXNn zKCzg=vPe> z%un!o{*}H_-V2j-Zl3F~TKBBN_|w&1-TK<+2yc4wz7h zo!b1W9N*{*A&*duBK!KlW;j#>i7ZXv6;eDrmh!W%NrgwB6MqhOKZ}A~0CfflCHJ-w zc&i1rYoC~?O19W3isu7o!U*;~%X?SKhu#)08`)7s?$F;!4_!O_yof?Jwua5u@0)5+ z6=XwSKNpOq$kEQVsL!aqPq)4sF)qC>hctHn6w11}v=Fjyj$R&0``v%=D!`QP_qDD9 zJDPusgTPh>ce*(-8PFK>^3yF@zOl>D0v+u@7jox=#XdXr_wPC}6)c%ylKBzi^suR+ zWG8DM2`hGSkTKQOwy=t|?h)!iu);Q1_%#Tp3E>6ia(NvEh*6&k-J2^Y@^?ys|XJe+WAUj362n~w3LH_;yu-nj?{8FeBZXTjmd_H->B_>p zYnl*SmgD=k`z|i%`thBi#cZYn#oOx%_1%)g;g@Y`j?>W_Xs9CxZ*A7qaP_XC(9I9K z`FV`Ly8HyrpQf`M?cIT@PQgrX`fAe(_G;RV;O((=z3THK@gxa^nlRRXJMQ|(&DB7x zOd=pvv@xzf5zW*2;7?=*e!skPZ~$5OX!j`P9A~iWKZ6c zE3@)a9sYiS-Q0b#CMi4I%R75abL>P!r**a?PS?jFauVPZP$i=J>R?a3P^%maY@`aM zjOjDSGN;DAxq;l{&qiensJ382nL+v6`=?KX zw3U*Oj6ngipJMLXWk>`_Y3>PW=|T1viEUryF$Zl@c!5~l+bg}oYh(zu+pVFz^YYu~ zlPfdCahu*ff*TzM8;%rNZwEcz9`dl;ymHS zmu{3vy>Ekr2Q_&;%Sc4u4M=C9K{`_}!@q^`Av-bW)G}J`K2za{VArMy`RC)GjvGE} zT{BG96u0soRg{9lxt-`78lB78(4yD3OIAS9VCda3WvK?OH@-p5sU8DdDe#|Q8!tvnUx;Uy-$O=0FwO&`*Sn_5J}#aEdV{a0L=~v?yql(6B9S;vJKVar754yE;O;YHZtt@B^&jRAJ!YfbmZMLZ zSFP>OEy^{%1h@S4%j&vFT3_7M*vehHW%^5+d2wt*TPZepmq8p!8}oUoJl}Bw2HdGO zCjS%xzEI%xHJC*fGum~wW5|)8DF{wV$SGQ;$3^sKJxqTnGgjyFkG1C{!&lagd{KiI zHzp*23>gR5)(6)XG&#j_B>u~+ZR~NE$$3Z?!XMID%dWFN+}^FIXLDatyZa<9@&sxF zPs8tWtcr<(YPP5SG;<-GpKJOAk{*%;B~qn^C~sHPFTMDpsm42e!`a^`dFJR*K_!nK z>aYk>rj@ZS=4XK1NX7mWEBsYc+1|dxwjNZ4pNo9_P0k&KpiiBAav!!u-Zw zWCV~GRM*o|h>IcUE#Wci+EJMXLtUIVf#!+S0O~bLcX0lU@avZf=i?{el|g7-1OKQx_tE{0e8;NikPXB)@zG)49WTd=B!DIJyBwX}!|)*OHK zY}oiqbFP=;Kyc_y#!lpP)X#KfC-7WXscz<)FU0fQS$t*gzP{Mr68CQcA6wU!R&Axr z@6@tPqr8!feidGd~ZS zyyw5)Q!H6e@n#hXMkbAI43IPdy#T8A#YRR~{-AsXtsEFiXGRQXyazBEb;B5U2 zlD1kApg7ZzZuFAXNOL#HHpms(`=mjoah~cQE9&JFAEaqsLW7n~Fqo@AsEvH>uq%*TOMwYv{}HTRiN|ZV1TK@N0rnplWbuiI_{SN4x&x17iN)(wWbP z8?X2odPxbZb+gQ?7c9>kG<7jPMeN*biSWMII15X6#1R5`YX7D4v@@oaod%BznOqCU zkh#!Q6ghuJzR{t`Y~mYg{1eZqLWe#aWdsQONIMH2599wh-#s{T$0A54TwBcq-6S}0O3m=chP9X8yV&*QL4SN?~^khL;MvblF-)Sx$E0aIbj2jlux=0 zep1R1-S~nZBd?aKUIkV;W=8P?cB$8ycP1P?zYL;`r<;1anFhwT*J8!RoKw72bq#2r zUt}*sv(PX4BXh@k_o%EJ_;2B%tJsl$19l<#?Qe;s8K>i6xvao<+51kX+-FA``dUNW z{`GL?iq?BI1A;f2_X};4h9vTB!cGv{XL>gHO?SkaT=xDB7)sKA}0lLt^}$byu_gY+k;9z zP;ak~;E(8Q{2#ChsY9yJ}+h+1ejDWYf~VhB^4WMK#AIihY4gpuRv%$ z9DS;q<)>Xp(#}3i_Qv$hT{;E62^z^8DaCFeZqiu22!unSoiHr>(VO2PFjPg*YBwj9 zO@hch=h|6nRp~CW_bj_rb-Z(2E7-fNz+fg&C!gWnp3b@*l>4{%5aKr>Ta_zDYogG@ z=KAAQCbDgXvZf;Srg<|wQY#yHtD;N})MKpV{;p)Y4X4KUYu6SR^&M7-t;NC&_P$aU zC^LEWv*B8jbnkmjWpzR)qGnuXq>RBg>2mG?e%%*`91h1j=G?%L2V8}GY<2YCHguPw zjo<$yjJGD#s7L0~2Mk#5I*xLlnukO+sk2 zPwjtK4q&*uYfWuBEIM@Ct~R8%3BV+2K1}hjUi@aW=PWCS5O0@60GvfkS5z zN3a0T_$2LYJ+^H_5awC+m%y3v4!E<;ucyy}m^ z_XnJMDNL*6QeWr?#Mjn8?I4rC8NVFI!J(snEao>Kk3soo;@Huc)%tYVm}lOf?K@O! zd7<<*KA&2h9@(T5>(&y9)ZRopvn-#@BfI`)JKRbZ6shZXq4Isseqf~MRuCv=CG2LE zsk&1JSL2VxjMA+c8E7Pgx@LrqCw62kHySqPY_?kN|6}t_w7)}zQ;hhJC^0%HzpEIS zaNyz53;?%>d{u0lXQUf*e1F;f(wNpQ(fm#K-`hzivxyxM_a+w52Y(i-hz7=r-(LR( z^uY^g7E}in;bOJJ253W--l3&Z@J@>X8?BIySMB_Ey#VsDP7NI!lMnT7-qr}N{Z4Vd zNzX>sWPt3K{}Yzi(#LgbC==t)TAjhV68xe}GVc9tmx!Nr6D})j2~xfi8nohlZ|P@d zQ3_(gW@W)%xs9@%w9r<&zZcPn8h}fjl(^Brs+yfeOo{7rN^G|n_^nEc-33s?_^Py{ z_Qby%c>tV(d92oG>1`(2>sh_+qs1?|EV|vAE;gEVMqHP0 zOdZ+pX*=bVe+qZC`sSDkU+CJE(0d$Ch}_AM!;m96osL~xax|}f)3K*p-~-dulY=5T zQVv>S<}v3FC~vOTH5CYEgUd>9Y(IbS+cN}Fg6PrkIAWBvkDGiySzA-ziZZ%plDvEw z^lN9lv;BK3@WpWtiPatnvDBYh*A?D1yM7o7_2!>)cYV?=kg7PxEE|<;IPX{mx#Xm= z>6S11HwV>{ zY2;u$icpErAS#?N;r?Z-5!pW(&(zK~YI)l1x$OuH@*cIW>{qwojfgL+dbw}W1-FfL zMGUJqy0}@%PQTCjq)4}q2)k^bXQJb4f;;>}IuGkII2YlVtXLu;ZwD&Lvfl2)>Snig zKenj3VUkK7>p=t!Nxa(-WG2|Bw%tn3KXOi8CLDETgj25@;t-LjU$f%z;R(Z!Hx!PH zo|09Z=a0ogT5i4C3$6*2#R!0!7u#6Y7HF06fng0?Z`Zab&V90^q^rFBM^&Yl?WeQD z!NcZ3yw#S{omtuA#v?A{vPTD;;C9EcqcNGcAc``u;p0m(8vq&QnmzX;S$HU;I7s~3$?iyNfg^5(|* zqn{yxvAGXMXpT0k9$DiVh*~TA4!Z2#QAyC)HK}d@R^#N}FFp6dY+9Q!s8FEu;>r{# zoiqu4^Sv#lf5>ssp6#Uq`h6aP&M5z)CIk8ad+Qw1?lxV z!$!&u$pOq6^}A~b{$gfgR7wk5)wK@+`?GP?mbK)EN^A~Z<9B0+e>2pz!sho|)bdyAIR<$x&eG>3;}NC~r_^Og~;RoU+vc=t}?Y-;~tKrr!&hUtFVde>Pq z36M^OZ?FO3Med`g8+R#TUZkb0^GL``zN+V>htL37W-Cv-f!Hi@$b#pwM%D$$ufy_6vUcifn$TuF#b1*ru zZ=CNotgbFobR>|G__rArSb0xRim4f6qtZ4SuR;;xyBfZ>d${GRe!nUePk$VcUH8Z` z5V|w@{*i)22QsiGZS?K^H(7}?kM_|Ohh-UWPvNvJuJKmq;~1j4VWAfnx$}P>84Ba4~#o|q(hBY|H4bFXz^fMfi>@= zG1Zmh22<;QrzxaOef+lF&~>{Z>}dtvA}AGe*^CJobrTT2E~K(>(982}BGG^Sa|o)a zEku-e=+_xF4E^pBlIZfnWf4+&>odk-S-1Xv~VJ9x2b zAFh%t2J+mw#NcwzDo#&)NHoC|`?DdQupxqbH<~@W{kgjRMFE|*pAryHK2GN6t<2LL z9$htl?aBx3zB-Em*8aCs`Xkq0vBmxbA)w;6qVQXwGnAH+Y@byixTaoK6J_l3$cyDn zAQ*#>K7?1W?ys!A-VFd)R97{>5euxR1bXt#+@2(A*Ruj0`D$$zF^i5`q2bFte;-kg zf8~V8)Ayea*t@eM`>D+qt^&HjdlLGg>3uHzfm2DJ63;%xU~E76%uET<+mzwr$2JDv zY+TAB0y1V!uYKm28$Rh_lrYEH3-loG+@tr<<|mv%S~& zn&ITHsdy99sP-@OFggwrr)7TZz$w=VUc!nr{!45IL-NH_cJ~a`tT=(%nZHj=QBJ_- zrM$YtUmuGLvZx~K#BN69$o(Tf(Z3>bW(Ls=F7sy=-;5pfCsM(SJO=yA=ZOj;Qf>6M z?Z9U*Fn_A|ipP|WOGJUsP`&GJmvh`iRG%$sZJaEgIxSL>I_~~p$@!CT51+}{BfRla z^lx1Ag(#N(X4(3Gxh5oNxd{83>C-Z;BZ%7wJYoPI@eBTta0Wqj4m|o4=1t}9ntzmK z5=j(00{rKp%jp6&0+FKWl>|-WcD9(mFV4fmZtXCW_;nuY2aOQ=Vu&IsPeN+dc@t%b zA3~GGWYjsw`dVk-O)`t6cg5E@|GftmWtV2u#YNv-wHVf^O+TzzJQ~K0vWH%jFN4JPvSlRdG0QyzQCvQ@zjGA)Yx#IWWFI3KxU&?#o){5bUgBP^p8{EcbYC2aE*@M9 zN?nAs?$;~#q^_L)1>|dG^VsnC#uyEvmUQ=)B9jnbhjN5j4JZ++g2&>nND- z6{p2c@AU4I7q@z45!YbffP?Nkaa}t;;$$8ta;i4dbfL0G#KYvY$?gxh9Y*BnCm+41 z?2RhxYYb9OVv1NCZ@oh}^gF&f#rUtz13Bb@ymQ3izpWEX@Vy>FkyAght`)oS>v|qD z&bT;(`kIqH?h!}O*B%1dEGW00yS8p3${R~--W~e2X%%#~6d!Mm_l6e;7fXKDT2O^@ zOOE_lGLL*HUHXg@GH4(&Jb&RalJf7$%Bzn{QUd0=SZ$gbz(m@=c$ves%)8KD=-vk@=d@>c z6S~gEb)CJxyrMGdK6|>bokx4O_Ihy&bx|^@5q;K2Pn>&3?ctBAa&iuJV*6Yqcw^2@ zj)mKm361>W78pTbD5Sw_3@w@Fwh-ss=4GPyLn9-Qgt|P!X7^&)=4iluPoo#t6 z0$)`#goqsW*FT_YzUXy0n}h_6X-DaaK>If-jyqCycsoAQL-oDu3jg;Ok*F zxX_g4h{;MDH+@r+<*#TWZHy)={e?1N3;S~+p0oRDi`%(-lm7dcxPgxz71om~Ye7 zlOmaj@dbLN%-z<~(ZzAe^sc;`dB4y69 z?r)$m;6fR+t%2@D;^Q-0(&~8;_@^&z=F06!2AA_u@bf|HmHve~F5~^d$a1Kxg;heA z)x%|jVO4DaIo&_3< zdi<5b$srF?x_^e~dd9=?48~RDa~AMzH{Jr4)4W>*XmZc#{Q-njKjp5+UHqgcm%y~X zVe&p!()Q8b*28p3+w?`8ojRx8RITlRV`cg1lVgR-RLc0Zg}x`;#_0F^m1dJdMkn=P z{W{w4q%FhGBYug+ZAa^by?Dj<-7simL8Zhd0OEh0_nHGv3^+6RfX2Qlo-lToA z?LYYacl}tPUe#8f?vv+L<=6XSG^Js@$#dMd!Khde3-JT*xxn(hydute6rC$G?lk;+ ziMo5o+3@w$zSUz7mG63nx)KcWS`JkCcW^wbZ))28!9lm-{t}y?4Nt3%q^94$ zN@ye&3hQw)Aq!IrBwGc*wt{s}X-ZaI<>h~he_u3Tke;N5iAhM>ow4H+i^TSX8zD>{0#jaKIwnqc&|ZU$OVTy#~g0;D1!T2T)U6)c9+;%2fnJ zRHR=EpdcX9q{ap)h=}wWr9zo;jJAvWxxk9m0+4z)eAnXc&ckFdL2Wfg@I#8UmU6n5T#g!^2JGm~a3afFS6% z+Tf$3#)YOpe#I<+30)`J+B)C5I#>U}$2c~~hut3bRvwvC`Ypc}dK6MnW<2et*k34x z*?InwcK#aVbs}0Z^mh3lNLe(&2_zXUGzYecvih{8Hgx@%9{CjxHz49=ss>Rvu3*gB ztmtg4=F{FWP@zg3D55>N4#B#c-w8@(s7*hoB2bc z(I{^UQKhqettHW97ha_9XSQ*z(l0<3>Z@;itI6n3_3=PGw4FO2Ifgqu#yqk01t$NvUXiaz6Q zMhR3v`1}2f63MBx~Kej+C!vWf1;smR%hKWW3tG?0|g29&Yb#->f zn3;=7a8*T01gHiVh$@{554^R0V?DvDQ+1qQmBYnTkyA8-7Gs-=3qwGYpwyxmKTnMiA-*KdF%~cNN6zYQHL-zimYKW zO*eDF+tpCKFQJeB0x>T14T+oK_5YDUJST+dEwHCvZK-%^Iir^_)TS4utJKB`|4Igo zFBKvr1lL9#rW+)d+lxwf9lKeMhc0rM9>;-s_n0=z)JhYCZ0Avw_q2Y31De^=-u~N@arXy;UytUTN+(?jY<5QdDLKnrUoY*s2hvm*IU^U zl8O}eFm32*YsMKB;yJ&y$ji;>Yh)kEzBZHECd;8d5 zbE)O!CwYV=kIKs@;m~WXrvqDsci-51ggZ(GR+LY2J0}s;cZRWUu`Q0u$NcUvjzOyb zV=(R)%JT=gWq6wYd4?{QgYq1jf9>HZ?)Ce14N~rn_P+WGjCXn_x28@PCL8WZ zgH1cM83x=XjRraXWi!dqT%npMr!^b9zvC#}AQ0rJ^q`&VYxD89h-b;wBJwk|XZ^?A zgj+5_-zC!JifKUwDce)d=v}1@ZWZkxlV=&T+5Hq@JpiR+V_o

)Jvt_i1{1_w-_ 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

4C6Q~LL`a5i=bhT8+!eo%A|#aam~ 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 z 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�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

j2W_|Z|GgBMD%-a~r@*8v_3<5E-i7-d&0 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%0DR(`U7^65)lD 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

-d_3bO4vUE1SsUxd31P4G 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 z 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ÐB|L|Rmzg!S(e0#WhZaRlA))Sc^1}uDRHXpak+wO zo@ZmSrRD(}*P;r1Ev2NbIXQV+L0g+DNLy>&&t`ec<;Wx3W6YlAeQRZTU0i}i+>@}k zBC4XY%`S576(`@!{0X^pYTlDqD+bylYRwC)fJDk`H42DxvY#d;-NUlfhHUr7cn);Wxb4PgFp!CZwh+OskC!6W-&R>u3N{t#Av zMd~?zSz45%8*zCQE0-mW4(nM?C66nl;(~=OWbLYS z=2FqILgJYe%f=e0o2QlYNbogH)>yV`8O15&b#uSNEn`IVG0r9D#_GM=;(Nh}B@K~v z2djKO;^I5-X+A3!bc;1`xtc5MxQv%qFnqN&-qwwLIL^o5d5fGMC-KCMSwqf)e1&Ma z5=F9|>&9NxqEYrbiFJx1_n1lECq^(+hrH6q+_*ltF8xRqo3SoeNR_Qxr;_qtZFhNs zo+?j`r_R&h+2d*Qw0hb-9i9W8Gd<^cp6z+Ar`I#!8Sz9s6P}posOR~f7kcJBi=LDx z=P7trJnNp9cusg;?s>K6b)GkR-s*X$=e?e*J=b`y^W5P1xaX6e&v-uPxz+P!&(}P6 zc>de-ZO=WP?|FXYxzFGgU8-YRdccc*u^_Y`ll zx6QlX+wDEmd$#v{?}gr8@1S?Y8}T0Y#=J+p&+}g5o%JTXOWw41*<19kdSB#ysrTjH zS9@RQeWUlS-gkQ6>%H20jrUsbN4y{Ne$x9H@8`U?dT;aI?)`@Mzr1&O@Als7{ekx< z-k*E#_de+Tt@mN?AH09^KIVPg`%mw`e0HDP=l6wu+k88GyL>168htIkHs5|eyz`Tk4%v;KsC$)ENw`wRXR|GNKj{}ujM`CsdQga6I`xBK7i zf4~2O{%if$`#amS&--un-{!yFe~150|F`|$^?%?0BmYnRzw|%of5`u^{}KP6 z{g3(ojJ;)0TVL4r8{Dl>90H|4DemsY9opjV?yf0Tio3fPcZcBa?i6=|JDmKV_xW

R`I{7n}}f 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%0DN-@!90{OV1h! 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

?_k?t5oUpj3W>tV;9R#Q^d?(msw9nj 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

4e`S>0cy^Dpo&cvxBv<&E&%a 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�HdVRU)Xx+SwWh;Q3#uIqzWt{sU}) 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

a}{9U-lO^ZSBd{z1oQ4{YBuV0pN1 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%0DRmr1;4AtP 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 z zMRP=ViZVpmq6MNnkxpb3SwvP*v8YT`A*vL4L_SeK6cU9+4WeezV$o93GEtXkg{W85 zFB%lB6%C6Kz<2=m zFHHr|Q%kP|t^uwEt^;lWZU$}x;A^DwfNUTa$Onu-A*IRyG*Vg)z|N#zstW{aDbt`r zJ!&{XxhY^7<$8b~pdT0n)&e8Iy#TC6`T+1S0DYD21Re+AXQa;p{{UVDUIJbP4giM$ zj3lJ*0UrP#1CWUnGLfDEUq$jP-KvWObf&V7Xg<76Mz%|5uWS{0J4xl z4l>9=b`yY@LUuaN-Bf~AP3pqz`aCxEAc=K#n-206$e2N~obgB)bg4cTD; zQHTt>A^Q+G4j`VA{TKKO_!hv3SoR|TnaCg$Ib9Qq+o01#Elp&xR@`Euxn z9J(Q&0!#-H>BMDTi*z`vAy94&9KC0?-ZleE{SkhhE4b4>{x^hhE5`7xEVjgH8R@TsWUG@OgM{fbKu3G_WJZc_vLh{)_o$ zejdX#o{gp9?qO$26~irH@>j5P9OX~B_Ss+IxUfUzB@92#_QuAEp3o+)1GUFMFiwIr0E5^-; zSqb$oj-3M|>6;GQ9F~)c|+Dv9APVB{t%JL?@8+cqj_pXw@xm&?|z>oIEH zQCK$>e75R(hR6CODLoG<)H~HJz-)%6V|Ws3j?$RP<#iX3$#C?9o(om7bC-Qv9hHSU z^#y`F5i6+jIX>f?Sw3w+92b3t%EobvXc=+yqG^soW=@vkRsfX@*Tj_L(z3HXZN|I} zq3&&9rVTt6ImP*tTR3kw3;UcuQTc%&mk(Xfi`abner@aKa-h<&Im{ON2o>TQRXdkQ z_Wvgj+F#OpH;&0;H88~GkYKlkFjCuBs@LY^v=$i9s zwgEf1G_)_4k0~F|{X6gs!!`3ZOU*?KZB~WYL-i8FD`ff@2{rE`&=tfasy7&pm1%n= zGk={1Iiz`lW9kM!pkn=iooUmH**R|a?#9m?5`iRd`m_E)^)c`%mj_crGQTXO5{W`hL~#F$b*i4OBm56?4#=g{i7gaju zI$~J$3??7W2HE-f3-W>wP|s$#tUW0Bx%=p0-mj?9`>L}Tu9?vR6*XT^&2i`xjCsug zW1g4uYiekwc+4`7Il%2hx4DbQ!5{6gA*pq^OUSQqp-sRZN`vEoLO0}Ee+L=6M zeZSUv`oD4STHDL<5Pz%d7+x_`R%z_nLac<`y%CS9TVlK{{73h9a_^$@rzp_98^=Yw zs_tUA*$h`oJ)gLMhgeoU!0;Bbewu!EA@tMgVPKTu#Eqz#%4mHd9|Y``qP%b~y%o#Bg(%I!mm3&HDvy zjPaiObB4qEMy0u{*|0u>HbugBm_S{X4_8 zFuqC7J_GU}70OVf0Mrb(knurczd`6zH1GkMOJf{rR)x_W>KW2l-O*tDrTGiPTgdjw z)bl0Y&uS0@Xr?fnJhmSEb0Ecnj09diS<*|+}&6|rGXF7%!%=GP+K}ramTk~ z@O%5{9>c@j+7Rxs~p{ z?n?zc*uKWi@N!w(XP;^DdZ9u5uL&_cHvW;*&$k9Gu6^h``8*qeD8tpUwo1=e3vE>c z+t+k)JhPBT_1PS66|kD&85v)u7 zzyl1|g50Tp3ii2L^&Ia>K33Eqon{xqwKC;Ubva7|Y&pjIRSn{P&9fYzmaT&3QXWP) z_R;JGUSYU)wjZURIgZhJNKbP(##;cHG4XQkwe&MN!?ebo%yV{%`!4W4!)4{5h&`{H z!Fw%+i~e47isLeVgylN6bI&^|F2?_wZy9bO)4ocxGHf?ZrDKxlfOkZ|$Jk#(kNtB| z3fh(xvFC&_HXTvWT&)aHGTdyof1{rx3hhRl09?%QxPD!CvLkF7KZb|a(57-cTE`SL z&%Jw9sxgn3ffg})&`jkD?fIm~%x4w`zVIW{KJVw|A8 zjk%|h)jz$O(!C4&3N8A7Z5G32<4T!c?Hx~fTS3{-(po*kW8(xV_55_KkJq9H(b^fF zh0zZg{cM$vf*D=~K*#+*PP=+8Usi;py3N6!lDYto~>tKoi3=kO%4W?vvJw z1$iw6mc=-EvECwj^o{0CgcQf1tto*!RT91~T zjyMG6+X!rCcm=FaqMr*3eUkPeU>n0T5PJSfY98-R-LO*_t7>-xk25?I!;_4>Wz|?y zxV&Kd+7}p(mDPjj;bKuZ`UgFL{cB%gxUBul*=NpetH-nnN~=B0aEqC-KH^`Oj*1$s z9;?T~jor2H0mow8e8k;MJk&0#`Ugov?m>1#h@cx+!K-SkG;+2a3>u_xHR_FIOR z$BqryXWAFo!B4<1443skGWK~l-}lBLO`M$JnOU8UJqNe7b$4}eJouov1ct}ycFTd` z#*z&~2W=LP2YZN1;&>JzFC3*tY7B1@a3#ZI{g{k?<}TEUxM{$346lf}uabQpPd&k2 z(=ODFxSN4l9G{U9%O5MFIM{z&7Q^M*oqo1|p^n7i&T+I4pe&ZDf0fT$I{ck!yk5_;_4V~9$Q{|4Z$DE+YBsbxa>Gh zO05zY8z;qe0?Qd*!Jm(V6VZ0ZIF+kiX!)0T83AJiL zkRST}xCa=HiRft=@oN<74p~(Eb5d~e8}}%~=X8%=uORfRaTxo@J;U(~Y@I2d(2nBv z0DBo88{f*=H4hi)$bR5;hRf=cid_#;+f@2P<7XodcKr>wh|lBRW%yRMFQ?*})<=zb zkyGB2g1nCdCm61cjrVO^d)h1~>E3zlSSapG;2Vxl*Y6^lzotFLrDqqYnVuWC*@cjSy5kxmx+FhRO;@M`0imYw z8&T^x3&YQ6=DH=+GZ1Q~o8goJ6%2=co*}EewpcWFTs+PL_!ypn?N90TEy6f$9DKmI z`WWv@FpFtDr`Na$ec`wkpf$$R$1E+zqt?F+9khD|Jd6Xzt%&gqkRvlTq}Roioeg{< zw8e243yd3LxY;C^&NEuLAyo7+)mv~p_<(U6IUXZ(YJH7+xBc4T)-mP0A9#r4GO-E8 zWtj|bC-66hm&4B2j9rssJ;$yS1ovs+IflQ09beJwb%gQ%xR-!e8D1Vgzi2&2_2^^$ z!8rKNafcahK2t9lweF{LW?OgVn_Qmg`^O#Qcyt>j3V7^1;LU;=)tmXbg>e`Yj621o zx3F_aUCu7Vi5HG_#(fX`z;Nx14pQy6&zc@N=Gw=t38c8t%6L(XYm7Y+igBs+Md7(@ z)XQ??Ve|2{%~M{Q_PcU+%@N(}aokIQ@eH?+(IJ^|){@~}4ov2F^!*bBJbr$Z_h7Sl zxx`~Hemaxh%Et}VS|?#&8ISRQJU#w5gBf7jDYg!3=-}|n91mV1em=uvpYh1~wNb*@ zFCHE#-oS7(*|C(((V?Z+^o^;f4Jcu_S*&lO)>Vy--Q%I%@g9!H^p_NmAOFXr-;b|j zIP5%yEaEUWkM$q%82iUZ8D0)Mu5j-*ZLvCq_7>j`bTT~FF68VwFOnwgE90>r-_LM! z*?5;<1Lm@sj&S$K*gt+f!)53HGf=5 z+5+)^{I?9Rn4N!c?WbiGDtw?&mFNW7;0Yfir7{`TP=4<^(yzS;*;g zY;7Cw`4}$zKtepnrQ1Qpb4gn3x3kRU%<{o)9c|zcfbM!aYDisz|{Zvxyo;#-r$J_}> zl|cJ|LipqbG?!l2N5$9nX?&lSfKg+@B96=Sfy^4fG_%t?J#uRB{?3^kA97Au!tmMg zd?LM0FjfZs`6B;x@K)a6CSb&tu#!t}i=CGV(z86+e!_Z&XJ%vB*w`6&SUg?VXP+vJ zClfXU_c44{=M(8QiGoO$TIF%`*e8xmdiaHeom~1twp?6#mWTd7;U5f-Z3h**-jUYa z?rq*F93MSH0{zUNdU8YCje=e4Xf8HQrJhVOT*LthM;UG*6HCkJ^^INAnKh0S4{<;O zJ@;>od7PLn^t92d9Bme1{F#8<6aE|H+R(mq|EBI~8*z{{`Z<2=`Tjg2=$8`U6B5pH zX=qu9H|-rdEa1TZC5jkM1~V>|`wg`-TQ^#iW1o2^DgZUd&EUCzd_JCd5pXHTW!E%- z>y`A<`A%W3aBY{E3Z!vqvi{FBS%Ngz0_jYeOtwFz*Q7!dxmZ8(R^T><$If@k!cl*3 z<(vMwer}we2ni%+F}!R>X8%_mVP%OrhC81b6U5dF4;>c99Es3?L_5c$^Hjy&gGs|t zF3O!YhF<|xGJHML)|w02Iy2VVdM*tjnZyv2#=xYJ$JVwQ*xb2t!}b$t+qd&E2(^}W ztWQlu{GYgj;bpTj)0MAlA3G14h}b`Ih~cqoe^h3xdzWjUeHxu-bAb1OiSP%B8#q4Q z2dG&-HU9bIJWJvOz{6Y`+K*`1H1Ke-^)VNeA7g^VCt_)eV=LUKe_FGZk|Q-PU7n8K z2L6Ov|0483iSP@FFLLRa{+vn|OTqIF0*4qLJ4Yg?*B)OurcZnac#q+-&+z2k+w^Le z&b?c&9#dD0{}WGeTzZTkcj+h=y%lgV_D}qV;j;6YQhLp^Fh))M5jaOa6R#Bai3i1Z zi`R=cinoX#5N{Rl5bqX0A%0r?ym*iJCGl(GgW@;EN5$`okBL7PpAerGe$83 zrsSyPUCA-Y$C4A0(~>VGXC!AOKS|C@iBu|8O107i=_S$$(iCZ$^h)Uz>2&D~=}ppE z(mB$*q*>Ah(tN2wYLVKcrP2y%m9$zKkk&~f(q`!rX}h#bx>DLF9hBZJT`%1z-6DNJ zx>dSEx?B2$^l9ny(mm3bq_0U2O5c zTOwooR@Gsyn@IG)7_zpPVPE;!365w)RDsUrk2QVKn0cAin&;qOiHUbX; zj|2YzUIUP?>I2|w;OBOtMmg15;4)wmFbzPy>bXEJPzaO*H9!Pd3iJSLfqQ|6fyV&k zuigi|2b=)D0+7E(3SbbUnE*@%kiX^@;4T39YmmPN`D=VYJ%Ic*D}gn@CIB+gKqi_! zzyaWG;A7wm0CLuffjD41fbwgn11P%|d27u8WTN!~i-5&I7qA)_1?~qP1)c(szZUsx z-vN#T$Y1-vb`nPbH2}HC{RNl;%mi?cINT%70yqH3C$0f#2YLa>Cl2M0gM8v3|F{=` zSAiqIhroXUjYqlT zQSNxiJ^mvAa*0Q|6Cjra=wkxPo&cRsK)WU&{{-ZpkOx=+2x^O>xy(X{MvP8x^mr8U59SDZl!J&&h+V4>xS^VMt3*1>vS7* zn{Yml@!QP9yS9SaGdqDTP?x^k^-MiR-PxmRdCv|6Z-|2qP z{i6F-FVd^^ar#94ME&(7T|YyAlYW+dj()y=0b-nVy-BB= z<@#0n4f=cayYx@$|Ed2MuI<(D*Z*7pf&OFcAJ>1a|JI-}#2FGvy5SNevK()3Y!{Cou(D09#g+*gK0C)ZZU1ccDw0C)2pU^rX!}eP4AgLz?lzCpO{XV z{%88h^t)MRzKo=s$D8lMcAh!Yj2f61m=~H&W{cTsE;c*ObvU!gTyJhNFE-y}-fVu< z{FwPU^Ir37X0)F9fcbUvQS&?4`?ncwXFg^A0^6_5-(Y*j{2jL6n}4!MNV-L8fp%Hc z7A>~pED6{qT9PfPmdhan=Q~b%WTVB%UzZX%Y4g1i_21Nskby(mf(D= zrOz^Kc?f$CTOP6Ou>8#eJ+i!Lc@^7zmNzWNG15)9oU;5E+s`duS-vY&6($r;FT9SV z7hYd@L*cFXomDu$aABdou)NS&=*F?9u%@u1u&Z!IVQ=Bxg&T3^-ohP)I}4vIe53F` zg{KR@DUuhdipCcu7u{5Jd(oXm)kTq_6-7@J?JIh}=)XVJ>kR8$>s{6ytHJ8DR#`pP8f&L@mGuqlN7f&$KZAMBCbr2)x=n7o)^>yK zCfh=r#b&iRY<^pVt<$#2w$--N_M+`A+q}mGN z_N(mIU|gDRpJu<#euI6k9c^dNwd?IhyTxv`d+jy$puOJSXph=k?H%?}`-Aqa_MP^} z?a$bsv%g|T>)8+3-^BK?{Vi;d+J7$=6-$aI6wfa%F7_0!DSn~&V2Po`Qeq|PCAN~X zlJb&D>{XTcO8h0wC7mTJaMV)*t1sy*87LXS?>!|OOYXz(10_349xwTO$ulMYEcsW- zOC_(A94t9f@*%E#RPss5Dg1s`^4}6@O39ZcKa`3}rKJjzUaBlrW2-5R!#2J&vGlUi zq|z%(Zz#R3bWZ8qQfO%DywYrJ=a=S{>PrhtD@vZzAHOh_M<~g(j5|q){*MC$}!E6?zqu$i({7K4o9}5&{65| zJHoggaWrEabu7kqsiW61;8^Dvacp!z>l_a|wmTkmJcYfd9s3;bI6iiKg8fe&-#dQ5 z?~jgi<hDH<#a9zMwq6TvzTYcbEIh10=n?wjB0UzNkD}z670o zdik>Q?(&u8kYRaW`5?Ay%16pKm2WHGS^i}CQ{~T;?=641{2lW9YI5W?cT>nE*1FcYpgpejF7yzt9j?E*o^(Cq zdcpOIYoF_Y>vh)=*HPCyuJ>{6nCnZ|_pbA<-?0CCrKnO-sj5t@ysYy2%G)Xpm4%hn zmEp>!%FfD_B)zhyvafPY<%Y_?V*kF%2P+@O@7BskDi7iJ&B`N{|H1G3mB%Z;t~^^6 zS9Mv{U#g~)^s4l#TdHhTzN+S`!KzJF4^}-|_0Osot6r^wwNxFbdL7$0s*YCur|RRX zQ&nG9ovk`o^_x4@eZBh@_iXp=?ztr0eWyFyy}+$^8{Jm7-CgE}^xTzhk2~N-f8uU% zH@jE3N8F?CT{zn9e#-rf`+4lW;C|8lvipGhko({6Pu$R6_bK;(-CubW9<65_N%zEi zF7{lG-!#uvo++Mm&-I=RPqC-k6U4cYC*o=Jw0MR*!#Eo8Z1+6j+2=Xq`Ob6J^ONVi z2h#Equf&V?^{TuYZ=83$H`$x&z1%y+do9jQ_uk;W*{ky!uy6F1dds~b?;X)hyR3EASPxaS6nJ>;a!?)09_7(eTeGR@2-$vg~-vQt2HR76!YbMtGrDjsi6*aSK z@@mR!{55yi+~=42)&5ETEBrJ4xB2fN>HfL?Tz|gb;CEu*;}83r@Z0QP?C z*8jYJkN;)=>;6OjBmSfQ_x)c4;sc3+D*`tKW(6_=Wr1>%9&iR~0xf~o0CXeJ6Ic@% z4vYpK4?GiiF7VI5i-CQCw*$v<<&(h4!0Eu5!1uM9+VQo?wSTFFhpoM~c4qDEwJ1sL z+}e4y=y7XnYJ;^+waBZsr*>EEW3^A#K3{vd_CK}9YfsmHTl-_}xu7hV9Gn!K9=tv{ zD_9f^1qXw}!Fz*`ko4g8;7i!P96S&_96TFD>jZxfi9_+BOG0U($)RbXnW0%BOQ<9i z3_TEfJhUgYH}p~HMCgmU{JP3Ie_dT&Yu)O)opn#wJzMu$-J!Y@izY3)deJS5?28yt@(eMlfE| z)vu`Usb5vUt$us`WA(4se_a1n{cjOTL>{>|a#N%<;)v8l>LR-%$0Da9KQv5eNNPxF zxV&L@B)#FrhFcr*8|)3P26saZj{OaF4UG*04MPpjH@w{NcEkG(XB#z*8I8_H z_~OQ;ja`k)@w=jNXXD<+{f+PjjmH{4YCPVEsH5>jyt(<|=55Wp zo1bldzWK%G)6sF!iP77lbE8GkGLjy3MBUNq=(1>kbRhajbY~P%NA$($f#_lU9*Mpi z{U~}OdMf%$i>yV{64!EF%MC4ew&auamVy>vOJhqEdo3+(Ez4R)TDG<9Y&p>KUdu-~ z_i@X~mTy{qX!&_@;^O4RS1+Ejc>3b`i*py}Ew(H!T0FA&uZtgD{I|t>7QeLk)y4ak zOj>fslFTK@bxFaJ`XxO}Mwa|z$^Ip8FZpQ6FRi3iO43_pt#PfFv?7*mO>RwVo!mOD z6%ljmjMmw$8Le5ZhStJXXRD`m5zd8M*S2nK-O~DK>)&wnSnK}QBdz~w{j~Koj{e(v zcIg#MuUmS8u|8<#s*|cSzWp&Hy zm$fZ>VcEWACzqXG_W81}mVHmsmz`a9t^<)nhq@!Kr!`3@4BNa zx69g9(ly%keAj`lue&F8U(sFL-PQe2HzMioN4ocQzutYQ`-AQiI6Appu{?dbZh7JI zlI7*gy~__Qe{Y3&MaqiC75yvjTk+kBpI64MynW?eEAv;HS6Ww=tSnpUTv@rYdgZE> z+gH9w(pUa#<=ZQd;rD};$5;N^qv)C0)7G=BXL--6o`Ig>o=19~?RlYRPtTE_PkVmq zCB5QaWv{w-T<^ub<4Jn&gx+g=(|d2|y{Y$h9L?!1>~-|IdOf|qUbJs-eea6iKK%Cg zuI*jdyQz0e?*qM$^zQC`toQlefA+rGd!YA7?>oIe_5QYstP-zEUX{8kca?2b=_=1E zw8^TvRZXi}SGBL|UA1=AJ$<+K&F@>#XXtbG)$|4W`uf)P-AmH@HuY`6_P)NYeeh>} zJNlmJd#dj_>^Xov z`kVT@`+NJ>^^f-7-@mp0@&1GThx&I8vDTt6^tAa|gAV8g&e16v0k9oRJh%^rAc z;N^ig1`ZE=j{PqN&J3I#_;KLZLFnb6XizdJAB@Ld!r&!?u$jT+!PG(cjKQ?Q$=F^o zcmuXG2WJh=8O#}6i2b}lj5h~$gJx_C2knEUgB63m!P>#_Ao`-g=E0W1HvBFd>>BJH z92mTR@S(v+2LCqr#^C9}uLl1&`0J2rD1B(gP{ELC2>hYup`M{NLmP*-54}2c0LO=h z4i9}W^y!+L*0ir#zvl5ZPpvt!=KNae+R1CLUVHu8ytNH$m#!UNyL0XFyC>Xz^WDaE zP3zj%b*}4Kw`$!QlD=;3y8GAtZQU#D_OCm(?)dP`;oFB1a}D1$oHbl9Y#2uTFEX|ZzZ*t`H~i!9FC%0`F>=kw%n|hbBeO>`Miz{iMv6vCM;s#+Bd!tO$f}XI zM!p~UW#squB9gvdydGnm_44(~^@t1CC$7JEJ+ycIg!Sp`Z(l!uJ-pfag7y0Kw)Kwn z-u0pNTi3s|{{8hIt^a2Ick6$}wckc%qw3Lw(FvndMu$g7M|X_AIr{eK`}d5yXW~7# z-jjWg^`7E;w%&8}o_Fv0dV_q!RU59^aKnZ<8!|RzZ?J4A-VoZbbK}X4@Ddx(-h2DK zW%vHPscqB9rUy4Yxe1!O>G@52H@&gx@TPY+eYolL=8HF{ZN7ao+Ie%{X47Wp=Kjqa zNf|pY?RkZNZ>4%tDYu@Tde#!#m&oVHv*mh1#y(Wd|yR6e5c{CX)1RO#|@30+l9vipIfBdv26Ix)^FUqhVNq1%c!}2YONM?tQ>Ky z>vSJ7@26Ju!RiTn&*3|*I{u#Mac>mn8J=7ESC5>(?%LOPA9p>`e4^u998u3RD~Xd_ zM{eTQ{M^94bx!BwxYV9Q-<8hC^dWuMSUz%NqwXEuvt=g*u~KpM3%t#izhf!2T9L0G``tlSW@Tq}drIyL&t<=HQ~%YV zh21YZYhKUqcW-0m8u+BGyRpl?;&&xg3+^3c8TW1^lcw)p7bj=aRrXglrPuY8v{L}QFn=g}+dXs`G!3Alg-jki%Ym<2y+H)Kd?@9i6d7(W=P*w@G zKA63S-Dr;(^LTFI4r89n#>>H;qxVHlRsM(Nd(XCYThHe$lPxYK_JTYs~&<06NItFOwj z-Tgv1+Pi7VFMO*|JYR9-R6`Okr(#ifuI&qff1ADOK{n4pOZ2er9bV?tD!uACkyGsT zfzO9u7POIsddG@cpCDnLn8tL}oe@G%&)ON?#9^ORJOdWkM^|j<+bjGKW55g-P`${pe{1=3F_@g z95ep0W2xEcy@6&>X{mS0xbJN3<$U->ltxiy(p}a{m{laSpQTE3^O)~^NOYGqC@i=X9)PBi9S_-lAJGgsmW8ctBuRG*YLO&?>1-eJQ_sFKB zzL&}Rmp%hu@AC1~*AclqnfI^wa+tR8<$$Mvm(O(~qQY#u+A7|P^t&QhoGqL`f2x~vpQgH%OEW{DGm_H3#!|(~5j{M-e9*$lO=3C8`CaUri%hQcY+3vLqdUAO>F9*YtKVPE_H*Kra=w3{-nQ)AZoSNUxuCD-zU#@idu@|- zhVEH9Z}xjUY}xw#!#~neq08dhrxRH*xezu`~LOQ`qkI9pS9JWe0cd3!FdP2Mn% zuRHaw9m}QPr{lRrAGapZT0nCL2L`TZb-Df)`?YR6H7CWz7)tgW{mmp{|3-c3l{=>1 z>DouVZ{WC;^EvSG)SJ?Ra^)GOaj~Sc>@4;53eGl5yc;>2>Rb0FDd|vPTgK*PK@U-S zCDo$z{T-j`Hqp@ueN2Djls~4wZOh-A`sOOtlL^?hR?5LDkuNmZY0y;ki`Z*}72Q+2HJ8`-Twm;dITIr`xlnp5x+rcrIK zUknx=hokldg5#$mr`iSaH2bb0o1bgnz~{Zc@qFm-RzY1Q%hTy7k-A2|KgM(E_s)1O zwQ7;AlXrw>Qv1|5WI3Bp=EfIt>Wf9DExOt8xtwiM=P)t~33Nr)|BdHjn}aSTU5*N$ zu#AnL*}ZK3jh}f;EN^s2?A>9myrVlzTl8xFcyL))hfvqO$)+u9r}6okt-RkF-O=|e z@6Y&pu50K0C-vSE>a&OKE7`t9(1*|F`pTJO`bsJN?OMLhOX{h&xjEawvDs>Nax#@t z)-D{Y(C?`Ud>pP*I!yTn_8j#-5#^Z$V;V{Dcdoya!B5Ze1iAPPdG`JW+vdu|et(y} z-no4wPN;j-$i_N@&zrg*pBMF>7|*pQwOl7019pw_eE}5%3S$*2ZRs4YT(S4(_;wk7 zne!1{;klhNIlnETzE{iU*%}u)CGcZ0Z)qM+jT5Xh1aY*2S~nN?#F)3~U4Cq19&eq| z;4-oPG>+=y&Ep48H+IF^{&s4Ot1)k|l)V@IP7z<%QpA+P;|d?OqFQ(zW!^QmY}EI9 zDIX_jKS^tXbuU{t!MIxL-c6O7mwWGTT?e?bpXmJ!_uj=FTgTKzYI=lPXUCU?l2fZx zShmXl^u5Nn1$8`ffV1J)arAJPnyifb>oh~zHUf4ly9rOo%W<`{M6Pxm_%Cum1gK5^)|HUyub!z?0ZnGo>B6Mak&276YS&1 z4^sLaB|(2~9JGua;E#u2rg}#HxOH98U72Gn~+yw7ky)4h$>HtIN1PWAboAX{guKGbZOK<~8X6I_p>jK$Tl-h%(8 zoGY)FeOFLzbA;zo?_B>$EGw?MpD(ZBGyNTc*cEa1pry*km*0NPa)nUFp~>BBe<0`I zLmJz!&|_brEUA_D{IS`})|`o9kVYtr4I$GJ!LeMgZjD=cd`ueLoBBUYjLnDrt~KY= zWA7>PX<8>&&vC4yzU0H7YeyWlGpp8EUUTgWjE2$%ds{!X z&T!l!h>7@imM&K~whR0lu5t3je%oqJAHIv6a%j2vANXbZ4J0-ntA~y9Xc-31G=5ej zu=UC}X|1HM4gV;J*(8B8bk9%KxAM*EIi{&&>MQN)Ky>@#n7pQO_l>91bM&Wo$f8=kGI`xldjzUnFmkH_I2x+vFYc#6 zzkEo(PChEXSH4C5fPAZbhkTd(G5M47r{&Mf_sCz8za~E*KO}!k{%`qz zipLaxS3IM5Ua?29SMiEszv6Ypn~I}~cNNDJA1OXne5Uw9@wMVR#Se;eirUhC|^*% zsC-%Zn(~11kn%0%JIeQzA1IG2PbyCYGc@2Nge zeXROabxQSL)mN%-RsU1{tol_gQp?mTb(}g;eW`k)Iz@fC`U>?m>S^lh)HkSaR?k-7 zp}tF(uMj8`YcD z_p2XPZ&&Y9Kd%0}`Wf{L>OJbc>Q~hV)NiPdsNYflNBx2NxcY?pGxZnhZ`9wbe^8%O z|E3XXWEzzwPLrUySTkOethrn>S#!1KTFrHunVOq5vov!wcWE*;IhutUoyMdo)Yvqo znsSXxXEPy$*Y9=I474NF8` znut10oCDkmECf)WiKx%SLcj)~J`){)2k-#_0Ck#J4>SQSKr65efH#`h2Mhpr1M7i@ zfX9Kq18BF2F93Uh*MNh-A>at`Ht-&RI!;6#C!PdO1E}Z3GXUCe;!nVNLZ}yJlTgPb z1)u@O0g1pRz(gPwxB@^gnlv4l0o(-K3fvB$u1Og{4uJY5p}t8)Krv7TIDskv^-Zb; z76E9(q$q$kOlk)@0kmTh+A#_3n1uQ!jQ|^f&A|P@!@zc67XTR~L3fkTrb*D{9s3V;lfp~J~H0=EFS0doP=KY2cYHcy5Ok|Bd+w0SbxJh>F80HDLkX!qnA z0CGr%9Fo!I$&f)ZWRScPKzk<-0;qp7+B+F>cQSN1`2k=nfcht+{>i9+GU}g<`X~Pr z*b6|nlMeu>d-7WV>YfbSO@{3z!*-KV=Va758SS2ocBek7m4bFpL7blg-A+MWQ(&(t zlL6E&MaSG~|g1V)kjZ+o_Z2;Og z1?`*C1M~y1)0ANV^-DqhQc$-P)GY;dOF`XIpx-Ib?-bN6t zdX`~cY8n8)lzI(-dZt3J zQ_-%e(Cbv_bt>wdiaMvF&Z%hERMa^YbxyTWpNt3Kmr`AT7w`kH<5bvjY9jzUPF)JX zKc%AHsnF|G=ymEE0QF9Ve@fj5K(|w&+o`bY)NQ~H0KO{q2>|Vz3K^tAzf+;#snG9K z=y&Stz+nJ#NTt3@EF}vtwhs~?8!us0A0l;x{eK>b2}y%ar>UuH7tD|U;h6*deRF;s z6Pnz+DR6q^`^8r;FK5p+ey4l3ValctORU`b4>eN#ZokI7S+5Ty4kk5BDX}iTnu|v- zc!nH3>txp@&)@z%!t=bOl z3T>ZuNIR_Epxr{H1vyU=o8Z5H`Cxh(on}V z_>VOB%{254Y3Li$&^M&Pf23^z;6KvPH>Oc#+zBAAON0MRgYQT~e2|9tAdUJSvQ%H< zwhPy64Ls&~h21v>xP2L|zciD?zMV-ux#o@)^s)5~hnPDjb)WQ3=kiu)pU}RbeOY@* z`;PWQ?U#g1N&pZ~OhQ~Z2?56>^fQwnze(3nX&cX0KDb`)7+~)|{7dhmC3n(isOzrt zBi{?IOBc^Kb*^vWj}4EvF5>Pj)BYYOk4uOfA4lB-Z88aMG6`)m32icIJ`roTYybDi zBWYyPG+-g6V`bmz|6gI(77|quhG%zm+gRsc^`Q$9oEeG@B`taov?$gBjS4TIc|ow! z)!LQ3MYb&Ni;+qZNc9qAXb%QP1VN#M_>ymt1c~$%2oh+9P)}XHnR8axvnSl)+d2Mc z_|9Da|DWUX&+3qhP2=Lw|Ds0g(4(w?9b-k-GjgF}+mM2-Ar@p&q+pd7SKUa#zIj|3 z>{jx<=eA|daywDZK)GUFrdZ$C>wAmbdf&|YtQ2hO0mFF~4EvB@VZoLqX~iF!;k7+k*TYDJ07-%9*iXG;wbm<0e*)MgB$Z) zV4jOc2OUsiZwpc1}fFY+0%-kIlq0QhAg2Y`mj$m4&W}e&TQ*W^yc)dz)<9y4fIeZuaKU~095zBgfPqP-->l^q^#-H&uc2=Kq;#6`Q z=STjD!|n_Ca^e^8Tidod6$4VmJ~79pE;!g9^>1ZV?J?z>jNtpmS2%np313OV|Cc#T z#}Zb*W4k{V`MPm-uQ%LjYoC+MLq75o_7D;dwKM>I7D#koxcugKt8RHs-HvtB^3=M~ zK{`bF;3x#3W2K4#>W*i}Gm`zLp6}Fe4)r=oA;Jog&;wHCD&m9Z@p|Q2tr@!`y{{en zpDt1ZL4Qm5_Y(SC>Ucnjns`S4n%Ta1w*K`{TKi1-miBc~FJUh$;X_KSBY9n~tFwA$ zsPl)KSp?Tnlh=x|oW^U)x9|?pU4pHUSd%gV+}3Nm8gp5Biea6%Z_e9VzrEdQG7mka zae|$ZiWfetR53u@;m!-m*uh?91MEC$G7r6`H!6Og#J*g@@0XLh%^|e+vaVMbTC7f9 zV&?e5BXJzxYZW%$4>V7(0TO<*gx!-W7FZ^$(2VVtZpGSl=2LPT-x4ho_7xKTwuHYe zKkGiEy;W2k;oI%mI3&0P2pZhotqI<^h9JRRgS&h1MjCe~xI0O3Yuw%4U5EdC=jP0s zGjqOmE~=~Qy{PwD-Md%Wvwxc@=+i!cqNFOYkn9Ndrm{6Jk^LvwW8c1;WB?xjb{pGE z1!ZY~Zy3osweU=Cej~AqV0dHYnKXO7&O5$J4INLJkXtQEYM;L&A3+=KK1b6$0KuTw zU=r;Z_R=3m6yYbzK0;`K$~qn!k~fTR4k=LU)6!Oq7lwOeJO0c2dHT1xP%PwJmGoQV zq@Z!NF8+ve{vTJR&o*yHfrKV(Tf$jd2nJ+ypX0jV*RuWoXH=sZ?(+8dJH9jLzk}~| z*8eZIY&3X64)-f@f0tXDYaCVX_|}AjjaYA{c9CSEt4O$8pQ&(~)9U+!sW!GYd|jja zBKyw$a!lkuV&uqyTl~2oSz|ja*VK-^(wj+x_-m7saiKeY-|=PCe^Kw6{oj;dM_)Z%wAW+D7n@d?zNSx6>|} zKulD2eJ?!f2)M6Pa{JMI=Em<(g$?(gLbK#uFqE`@)k;9ngwysJxBb1z!?r0SW_>B7 zw^K6W)EuS89u#Ljou_VDi_EefH-{&&nb^iYXwEVccU@8c*efUM|Ho#cxBbjD2UU5y z|M)*kGOkp`i31kY_Y_MNa)IL0|R{g&%Z}LJ>K^R9ao|a{1BcyMkdZQYQ)D}!72`MtsW*6sTP#iY{` zU)j%$`fVxVNolFU=CPy}X~LjBKXh0*RC5QgUhIatV2N1h)U#|-KhBo0({J9JohW;G zufG3V85K5@p5t5_OcJ`n|9*b{q3#k&>31;2NHf_1eeF*x$b22XTXNavcNy`fo%K*7 z`fZrW+nVdd?-;gBixEM^qD7g$P46L9OXt*8zsvN<>@zb7mrPoJ9ak8}ENpZzk!)w2 zRA^%2yfFD9l}*Ju$aooQlR#1{w+g=7hI^0^i5KqF?8SH-@lB1r{iu}jFQ3os6rq1D zrKi2(X{r`yijZHob`IG&>f^6f?$-MpdO8PIb^8ZmuM&yhse=`49C1v0IO#APZ z^#AvJ|8KC-vB?>OzhwNcO3EZ-=a4!C0JuP~0LK3f0=T`MsimEn{eM(=+<|1Ew)4vS znvwAC7fGI&gf&doKyE|*@}nL>TMP;JT2D1c6k&1v&rgHv)@JlT@)9~+Wq4eayzdh1 zHt>mnKvQHGJWMQD3a@7%)G4cgkQT4~uCwdTZ4G#{Mfg5)u>$3zm2jbonWmN?rx;{m zlEa42c*5)l;(1iCqPzGn1-BiGgYUl^ z(t{WX^w~;tqNtKS34P;=r|K{MmI&Ss+zez#pz`qk%CG9cl=hwO1?YebswB`5RlPdb zH`2ly>yxJ_-6}d72E7GF;K)c>{xRXmDR7qm%1)T5h=>=%K*vH)lNvJhO9~P<0^Xe1 zxvnj6*Bz7qCkZ;nw0(r$6Ns?nw5A@G&xr{u{Oso(#}PRTIfE@pd2_ zOx62UzH9;(B+aCJrzBf^y|Cc;UD8Zo@>x?oP>4Rn_#*>NazYO-I7JrwDWQi8obnYL zDZWQuD*6w+2CdoBAXpkZEWXDZ%oj*S4KAPpCyIepL8^Y>L@DqjNEH$ESrp6xQvC$_ zEDx>)siK31s6qc^CVzst0;y=h+a}-)G4NBuHWxTU5zHxbDGC+}r!og`Gl7LtsLT_# ziNP7t;4tvEH&`fxDwdqSl*$wUB9u|(01X*{IRXo45~kI`X;P|FAS)iw=$F!#0zbq9 zp#L?Q%%eH@H3;-(15TEi1j}fD0Lf8XzJRm^K*QvgK{DDjpkWG2Z7@%8!51BL&@i>7 z2bJx+OIL9c34F~2&Qh3k0(p`S%6uU#r834G9H1Z!0`+13hY;;3BgH}(2SP-pfvYz$ zU?5D9LM%!MAT%+cAxx1(+%)4M;55gYIq2i!RMI9m!LIi(ZFi}P)Oq4_1 ziT^4-n6p8}8E-<9FoFwCmExEJ?TUi=!~X|fI>p2aw2KK&Rp4-vF=H7Vp-dGA?XrPW zl{hY#dZ^+}s1tsxgJ-f$3gdsHg1N&@&}g)@|3jU=ETKaiqgs^6Q=ndal}MMWKadcN zvp~XPJ~hX(<(b&Uv}KtaTx(r=9q(nRQy_0=4^w5H1BX~bGku7MMo(%LisN(FCe?mg9@}Qa5AT&V8QTh zGw?DKSTJSVEMZv}ESR{BPT4{!qen3)N9mEOZgv%#(2iwdK|z=%A6f*?wKTCnButYG z-HkVV8LTGe5K2OYQd43NhRbsp5oonIQakH>B{!#nlmdm7Tm+Py1fZ@0(2c!ZJ~BC3 z5Eh}r2N`MI=)VsHmvoiCPz-mFytWCWyHqpe4zNfMjL$VCh6ZH5>A?gg&ee5Bm=ITf zaHxvfL%A4GlcK31M)*B?dH}kAqcVV{zev-I(q{PC@Aa53lf6%!d0U9OhsPv5Lg_=n zn42Nrzap00pGgDyeG|J;(k%dtvGRtl{*sUV& z#g-rFl!KEY)yacb%prxc)Pon)c=YP9^hpdQT*KQ3P`+>B0S@AQ(j zFL?*O7Q^l=w2rmx$Zup}0z>Ts^W=Thi`KNIeO=_S-qiA8JB$3`4mAWk;#NWCBzRGJ z2`MDGCrJ>bw5q7#TwPC^;(a<+*TABq)OHUgR%6!^v1I#HbRErOjV4YNo}CC2vi>Qs z$wT^}Nwh3+p>=?bj~4n%F^^7X29w<|{YhlUICbQVsFOUT(C^b+9ZEB4?3Ls5;6n2s zCdjnlV-Mf0pGV6ChfiK&jQNhz2A7*XumP8Pd{dY9!2y~O$vOB#AoX%KKD%wx6y0v;P)=4!hSz~= z7@6wIUR~l9b&eI!se<98hQZv2+0gwbmf}RvE}foV(37Vf;I0pB$JJhCUNS>GxTy2D z{_N{w>R_d%Aek4r2&f_2WL38I-tg0Vn>m@;y|nwY*F}W}bFR8cgyq=PH7Ac{ z^iO=py5Yx8c<7yj2eO1yD-%(OV-DqBosNToe4Fxf&Yw|Y-0J_;Wl_;|?b*LbE@aXuS4LG2Z0NDv;v-qJ*Z-4VnhY^Ok*(&UBzf7zThYIG3wr+$jX*qw8 z_MS!=zVqcRI9KEzRDFdZP}S3ukC~ea(C1$Hv|k;I9VQf#y7{S^$xU9DuF{>q529di z?-e^0rcNeL8Wgr39{5h7+lvxcGT6XX!@3;{CJ*G#|B9Si7!6hOn?#zInvfTSz)YZ7 zOD_775F|W#9IHM%N0)DW?#i1Xcl1$4*hn-PvFzR9pZ z2Wt-%v}gW3^*ECIK!lLUp+J9^_eMX0k5@yN8|s?%p!z2a^xI`e@g;6pvxkW&NuWcV zjKcI%!8t0e=;x8zVPSMBQ_(w6kv)dTb4bjOG$2|+SDdG2 zq`Fkw0-Ta|F}t7Mn2BNHT&-+MeQWa0LhNTR4)8;cY8dgrjLxAvA?uDtwX;=jY3G4; zZe(IphSp=6LrIhORKTE6UP2SQCDRyP90eDvj|}Z(xE)i>RC{8=nDa;rG1RxHt{fEA zry6CMEggO{kp5?1r$^4Yt5JH!RPScy#RZjdg-4kG@wp4;yL9KPYsd&v%;DBCTT>%h0;i<-kwu zLyjm(C)q!;qyj%{=`FJMZflE~Z?yM@IrA8U#m$9I&dH^N)kpHOBGC1`4k0$sj&uG5 zol%M~bkAG%1UZFKKBdkKqrO~@Do@q}RsK7p1g-78QJ^V@mC8rjQF2fF^rw{GDMYhN zWVOre5WTJ6^1j?fpG3xmrsg$JuHGbVPBm7^%mh67CkF9{Z*qeV*zV@_9?3ye9nvT9 zyxHmr_8*Qwxj|KqCkdCy94l$xKdu#co3^_S;n`nGn1>Q`&gvbG{+&@*w&%M#S$!8U z$z%eBnFn>N`=LUzk87Vb;qAiIg|3Lu4KT8wU~7WLl1JvnmNAjlj=0XsJPcrdNLGg!jalfSDz+!y2-sS-dz_WAQZ}*ZQ^G} z6=SS*T}(T99NomTWIkQu^Lcc8P>|W`65TY7J!|P(OFQ1N_E6?%gQAE%kNt*o*1Ocr zvpU(*FN|S_fnbl;h!JD2gaaGhXfuacH$mB}C`!qOKH*yrFcm3pOl3&Z!pN!|hw^4` zr;HQL&PaKzQ{v8`l2<1-&6=y=zE6fl_QNzsYR!{~lE7{?sm#`mN=`c$4o6@4>R$Cl zan`|>McC@_4x>5eSLc72R~Swp(1C$qfep52G>5;dVA}%!z#TP++b}-a?yAMi9>Nu= zH)2vfj+NkbYshy6Guc|eEAk#`5~3F0G;jC*RJ8YaL3MX3)7)W*3VLFZtt;{#(#Y4l zJE3=_!6)@dPlZuh>0s9k*|RX&N!eNFN`mr!&cPN8<*T|H+L_@1Wp1w*HgVLYnv*~; z@%Rp+bXSQfD!OCLlS_IgSnZvMVNB_HKfD%Hh(E}yqv%WLwpR>(k%UeQD4MIN(AU|7 zWPF36ijUT^lT{cevg zlU63pg@t|n?$3m5J4SzG4#-ns%vSfH`;i911 za`a0#b;Upp&)H*C{j3U=jy^)RIJ4_Onp3LtO}_}D({6|lVv9^@%t6Ml=|~9Q1YI{X z6qmunu723SIPAmj1MNUPZxEChzm7j8f)t8De(OWIQ+rJ!THwLi;X@mxvxLOPNK^52 zg@=#vie}=eu|c2{(psoMkxwX@ITsqZaw$`{yakGfIJbpDhOQ0C8Fgy;jGNIJeoV?~ zp*TAWWhSZY*81uuKs%Qtf92CSlr>K|lSk_IwGDX1={%~_=Kki{zkidMPbKx!;v$8qkrdMHn`z(vT$hXXA(~=Y3aRems=d!p*nwa=l8oCj zKC9J<6qIJVjNh^fnKf8GNl2FLoi>Xy;f!`RIbuoI?tf0gg(}3w1DUTN;9|y~n-I>G zusGP$ufo}6fqSHIG?z1E{12nM)DXT=Klqjc{F=r7bCFx?*p0azH~LA{j}k0{YAVjt*XQ# zw?#kPeX!nNGlLTz^1t-VvC&FY_PNxzKXkYq%bf=qPc9hER!1~K{|Q~QT}o>jW&Elx>Gx zK5mu8Me|zUHni>$cDG2|^2JV)T)RQjK?MyB6q~Jn^TPT(MEME^ZRQzsz{BBf7t;I! zb{|Mzc|#KGC}{zXC3=@xr%dH2zffT6K9^lV>-Rs~C5cP4^x&qme=+A^mI_AIbd|cd zuOjx?2~`|T?+yIzyUZJ|p|`T113c}eIcoZ23l+VUJqH;_A-FC3N#-J!VQ25xzkmIp z-Ur@cVx`8NQd!ACah&oU=pHT9CMXxfr z$+i!-!V9uZT&-LGY)u274CcH`qhNPxcLY8EEXGGYI+E;_D(-11?%g&%UR<5>74a4B zU0$(;ag+V42rD-QKj&DJK53)GYHRuBEnm(*;Xo-$I8LEbb%eR4imlsvjV~=?Mfk1{ zPNNBfR7z$G zrESh?yT7^PtI2xT=FzgYGW4->_+kR|f*4{Yxo>xn=obJ$|ai@Yd0=?6| zx55kMJaVlWvv5)`A~n;m*zF-|e#W)PssqSE_(}^}|9V?G@)>ajesCjOHoPH1mqw0I#;G@M}AqB&4~Ta_dg# zRX6Q1cvY$;yB3deHLftOJ3kUHCh%cIvvHRkcbi@_u zSE!?GbI;H)a%NCQ-=@7+y^vy~@MMb8;*|Is!f=6-bK0AWeO0}2Y4~WU@=4jk+F6#8 zXSQu1K^`JH_p=9J2^#M^F(oZ#ua<9WJg!W-Yh@aDzQ2p#(HH5 zMIraqdB}Sz>5YYP2$%dk20GgxDcdi-Wz0>}X5MvAh%~CT9-Al4Zd?AiUC2*+9o`#`{{~}vRlu(IsdWU2F15HIJ{MPV z==bHaW@qrz$lTP|J0{vk6MhSdP4D1;h~ro81JTboR?@$5)@RJ3*yw*)kdF4LR8^ecl7B=kM^_Z#sZeZLqpmRh;K7 zxOd)@Z6#oqnRz}aPa*qa6vd>QC{_AlYH=WRQ+}ItQbh5}rYq46Ja;R{(-j6zJ;5+laR(zxobVNbl)r{y`>umCVNk=4~BZB7)X(Xt50Lc{0lVIxHYLH|^=n zR;^?z`=^$=azhiOwd|?sp6m6g?jS_ZG4}#62b=$mJXJ;9r zdxniOw3EBKqC?nH;D0uL%>rqW_;p%5D|V+Vtuq`^Pb;m5?wA@i{ky8Q7{i#SWZYUO z6w7PcE*2wD=n~bOIqo^Ao^xUW{Ymg%<&WF>;)@hdpM~q2C=}`Pia5*<`5nn@{xV?r zR9<-Z63Rg)ntgB>=VpHpq3GKu9P5MDtwWe)4WDH?zZcn&w85WEycsY3D?;$%`(hos z*YaisI<&d34z+FV=38inzAKb7W9Q(Y0oCjAr!-+_%$=C^Y%8v!QxFUv^vh(H%9AXt zA%~_@SDcrCmps9~Oup+IyB*oFQ>|*+vbH>dQn^-;gAeU^i%rYTCoi3;mZDGb6r>n3 zcR%DJ_pIks*D{|HK?N6aT=~k!$-6C~#`X!zp7JF&+Cut!HAnf0{e!Cf_XgRqXy+Ul z6Eb{$7A*=Zlc1QYSx#N6C{S7+{Lli*bkHCkT0Y3)k2XLD}*C$7{0B|8_!N*$RiA?6T|t!Di>{jre+2#KKR>-FysgWytbzB z0i)ib0E;e+#j~K>CsC+(7K|RuE=;69hQAVk^PJn?(_1+fYT1pr{5S4{P+30wXIN%` zcK}Z@`o20+a_g9~D3Z{JZr*7RSW*2$e<>G+0E~c}ZpHWBOWdC@%~GQPOh7Ok-C7eG zp!10aHs`$!Z2gJXK!}ad9rYgRoZ+2}pY@c7(YYUVrU`glj}*Co-!b=>18k3C_?*La zz2pJLhcIsLb4h{ITfE2svgdIm;P@bh^QG6P6a@c%-}Rcc&+ASGAJ3W3g#oFTaIDYc z7=CQ?KzM(l2l1@uC7AUP;PxEZ&QrekTRgyG8{_jskko5VJn-;b8u$!>jr-v@Pzl@~ z@Z5ux5kN$R~EV(ZSI7ALdOoLk&2Rvc|e31%ZOK8cF08qFbT9|4vnDAvd(K^8U zgpNdjEcg+m?k9iKZs~4wz&#mY5#boF42BW#h>&yY&j_#}2!Dk8Q{IgXa7KkEfy?C$ z7*7|ir^KvB4PHhNJB1B{vk)g=#0-B$6hX=93SfnE0*rHGI+7x%V&l4tPKftVB40AB8dEg5r_`I5|JDLQQe+{Awd9tlua5#Io!&_Gt$ z@j6U8XXHa<7(ekG^Dpc6$lg}SHj*+xKqDu-D;s<*?xh>xCWO54!&fqKa?LOM=E(OX zmwbQ+G!L}zfcB5wQX&3*U*gs<2fiU6zLUqq4V1*jp>a+Ccap%@&~B;FWx#27wEtdi zHG8gwriC!zmLInk|HBIk!ixBpt=tZna}nHnj8S;rQ0aRF@8grNfe4F3I7HYc#aaV2d28pa6N&kaVWGaOE0hB*hJ2+;kZq~6v?A*G-2 z+o1#8FnoEFz5Ws5nH1+o{aB%koCB4eXQ6ghZu#VY$~b{Y?G3>`QU0sP@Q0DwSrsK! z{qHWF;auW61e+sY!s~A?&c=AexeVZzleis4+UqY?TWG%U#`)%kg&N;Gz?vhgAmq!H6dR zn;83fPETx$_J-)M8zS!ZH@9hHeCcOBJ8UZs7HYSWBo|^%9abjboF4WO2S!BFUkU46 z4a-6rei19cRbm8wJO+6{2Hu$tw*Hss3s#O&k1N2H0=83l(;RRe-mF+m2N`k;r?M znJ<$$r+0*_#`Eup3hoFG{w&vofj`Y5+L%Laf>n_I-it()(A%S;&KZ9`PKg6XgD=o3)y% z@AtPV_97ol)^>jF`us=*6#ItkEaPL)sp(GF=mXjdR@%82dpq;+J@+NfJ}|N!i*up|po5mn z$mHB3D!uFMa$pH?O(91oe?N$h1g0P6K7K$J&OGJ&4*4E@tJDbKIzx09#W{1l`SUY= z=tT-~qoTh87AYbrjB*p81ykzs_GIreq&d8P(-v*BpDoKAr>l~ZL~{Par}aSlz?lB` zwk1*qx#~agospt-G%9=SMVO;TSUDuJj_yKpwyY3v=qjI5Q0UZva0g+ak_727(Y}H!CtuI9GCj zF7kRTV2RRS8g^3`##h&W4Rf6r;hvdi73K_n(XOW$)=1z#q6Xq%>eSR=+7uZ8y7gh6 z@i2ps#}#1MW6y=oVdMMc;xyi~=j8y;@qpD2>*av-p+5O)BG_X@BF-MIy(|u{@cI9QDRu zSGJsg^xq@|PTC6 zp0PKMvjL|k?L-eG(wtFsdzgT%`9%&hCov1a$({^Agp}BTvpfA9 zzBZ%TnZ2>gh&3xb>i81AB!6So+_N{Xf>)kb@t+r}?zx*#{t8v9g{LBKy7TOY+GD0& z`u<~?sNu|~Cm{-A`KzKQVnnt4My$-TaEv zn8;q!A0EzqZ6)f$A2LO5mBy4qCa^~y_2~3c)sSa7yzq>Eo{u0qxqM>*`a)yF+&$?a zlJg)~uTis?gCX38=xK~jbmb>REo=jQgmDSJe@Demyt-8~M85LtCn!5}R=&27IkV>h zW1XU_{ufs&Il5E zl2X5XXK5z+aU|FUvo3U4uP@5!l6&n2;tLu0$NuN&{>`E}PO^jT-gvC6@>bb0N4s2j z=$At63V(~+{l-aZ_`A$wwHQ3!)?-6ro>z%qy~TZPH|Jazte~;F$@8abp5BRM(93*b z(zKD-+sm%4Ip+I`%BMY#M_XT?n5O8-Q{=9>pecUsP1XPa6k%)&ZND|*&Lz*47PxzD26lV^hf>zhtqWLQ^!zGSnD;|u9N z!@mCk+ahxH_ZaTr# zw1}SYZ%g=RezJV(=Eb`HWQZ>@Pl$DmnQLvNB%&1It|igVM6rwea39bA-G=@2*^!7Xn&C=U_iwu#gh7vA1r3r&i0k=6V1n+zv>(8 z8=ybr&*JWSDfI13BiMR4diblDpO8O>^!{!8`}9}VFv$RW_QO%|&0qY#nt#m<)2r3y znY|g0aXN8~g3m%I|6&Ac+^g_0KT~AjvwVPr0E3VIGH+DUg^T266VQc*%d)HfW|fMp zF~X@yomaJCZp0A`&+Mr*!l;4V$CY3u^u8K}^2rc0nMHaSb>3IsyVZyiQ^w$s;n7BT z*2rg2DB`~(da<*yvT^ir^|AHw%p;w8A2xM11&s=u)pcnqF@d<6kz|qCzce-x9rBw& z%M7QOZV_wYpDz5}WrUbWag@S~d$N1$Hmf!fF2L@R?KG>nXLR9Wx#t@2bb)w=zmO$` zB@-#6CcaOoPl#a^Ta<@umf-!sUBMH^^TB<=1^rT&Y&FWEkYksKFDED>$h}V&D<-HQ zD5q1ES5Ksq#lw3yCidfT;wmv_X|(6u7jNQ)sIW`3D_spfQuZC0NDg~L6qg3*MLeH5QW$WyA>cE01`!EBcy|4@GtFlUUzus z#d22@&3`#FgSjq*d7K3JSo(Kz<@mIi_QoM%!jN_2 zpCiEr7?9&C!(ss*iDm%dh(`WWqBuF!&b`7~uP0B)j1OT)$wW^F;IM#_2wA{Ypa=LKK1#LJ&d| zLTU#*^Fc?@qPV%Rd6bBYh`;jpZEloU@Bqf0@Ax}*DI4G zf=(xLytwvBe_#Ms^1t3$j0?B2=fI}H^nG#7$WYSaNN1dA{FhNd%EitV>=ilam2h^S;zgEv3}66@l0mK$ zIX}28@Ho;8Xk?x{JHbyFL9M;Xm6WEVsFxQTaD>%$^ELLcMZ_y3(@s-jIgf zWaY*&53u0lBqEMcpiMp9E z*T?DleqSiHpFfU|1iEikg?4N5@Yy}B=W0TJaS)Hu%H9)9?dXV%LXd z5rk!Dt1e)dTO{(JXVdM|aAH+SZkPE(yZm2E=6R2OPiTHulgZ-Nv{cojSa>n&W_ETL ztuV>k^21I@*PWyit%sS@>~(g6(9+pEBP3Mq;r4a)TndUbt&j1v)mH^<&}`Vgqrq6c zo?~Hj)x*}KeQOwass)a5(dg}atljRxTnQevWp<5SZjI^FKDZrJEeTiM_H;aJUjj?K zS0NoQn#1@eLy-N2w0cu}kn@)nkUdx)5tCWUjB+81zE$lEC5k?~pI}mEH=$_&yEgFm z7Y!3iDchyNrh>F*QC|xDL2gHB^1v!g^59BcOKSFTNh3_R9`e5MuR>S}NaUfBU)w(g z-E$*ed`C5^PH_YDAhU;~81cZY0m283F{}E>rJ`GmscT>Wn_2Tk0Hd_;J*+k18b)D& z_XA;l?4vl1l+3`7ya#@|kU91O7&Xna!t@N(Ai?z9)`T}0Ej+(i7wgOIIoH1749G(L z5^ujv(xJ$xfTf&Q=xuU6k7?5pSJ-R>-cnrU!rW_j(lwH84F&!+#wuDhE$xCy`dX7S zk@5!T3hlLBeK-cH1^0+fvgXjX)9q|3h7a(y4uE7hRkWzgKVK89ksg;z04D}lFS|34 zwYbObV_t{hGrEB0F$Ky-`{3^_DhNY=`0}ta1uX=0ib>kZZPRT3+@0Lm`?2f1#qh5* z{@nfXk~h@YD7)g-*c)oF1V+bdER02~?N~aoTx!$kd_1}Hz7f0x@*eYHE4SP=RLTwm zQ5H0{^;>}DA+K!#zK_{m!lJ%@JtjECwzc$Nw?(mAUnMck!uh{N(d0uH|B|rOz&G*6 z38*g8BDueLQ&^(e1b2&K<%>x66kn_lrC3!0fY-Qt*YLbT2X{i%#4mbJ{@3|XJDA1| zErGcT_mgX(%U)}Z(2pCeFlCm$+-ODF+6R*# zsyIrRcel+qDDT?sdgt@0wtecevmv^>O>$W|sO!8tU6@aoaXf*`Y#$WtBagOY1R3*~ z^Lrg-%=n(Ku&rsJ558*>+!D49lH}2C&^L=mg*D?O=?{2H!%a=DNk+VMp$FyC~US*p0B#4H2 z$+GHw+g^T|p8c-*HvH=#*#~;~`{}Jk)~oT!Vr7BxV$tdAk;@+XAyZdYm!;s_0oCQw zYOxLeu09REg7r<~0W%uJEW7asDSO7V-mJ1;;oWd3@bc3^6%RVE?osEO>xmvi3)W6~ zmxCjIi${L($?UFR=#n(=;%WO`)W#`3?#>fIr{h!*+625F7DL#(Ry^p3aR5&f{cf0vt+cjK=I@_fHxr1MWo?io^I0B0mnG8~kunMwE}7%i zo=)P@YnqgUD4& zF0;q-tg9waye*;p<^)Jbd6BNPAkf}EBAP-{|HSP1d%|`s!8_pD{MG&8bZvBxK2M7t0;hM2G($fYwd_kx;Rr8gT!LSUra$2`OPY(r>CtRdzy zJg1>xZIeUfLm@0cgKh2+3blUzxF|P=xyT}sCS?8piZ4BzlNONvJ|yfk}hM$E3b?AxGErN~Cn?(@7hn zPG29r4uUlO)*%(q*6Y5N&5M(qaeB~Av~AM^;gXNz%KYn!e$<6iEP+tQ+~Q@!pNr9Q-Bfm;-(^iAoz!fBY%Q*BTJkL)CTV?N5WZ-V+@C5wCT z;?vsnO|+wHoO{#Vx?}wAGYS*Vlc;EWLNcUUnK^`D) z)^byq)ujL%8FcdI>qVqsUXPJdlcAEuGhEEU3SMp4qJurTbfl5Wur)) zTy_k8ppJ(Gxgll`A_bkj1~$7RU#$)wt4>F0b-Agr4IrJ{s;*_8(7elav!{~HFGnb3 zqll9gm@AZS%$Bio74oV(r!>%_fp5Eal*yivJ)`@!bQ2N!F#&SKN?J+Pc%0uTmrcf| zd-_?bf9LhqRjwb9+4g+N!+SeDr)`>e>p=1o)2HC5XS1p56VdG$K^`qfV?s3of7Np< zvaS@r^9hEpdq2VEE>6dJxfxnWF9QRNGF`+FhIFIIqx@UP)}8lt?M8YC^&`+yp9ESm z+Y(*YDk`3+Fo)?gtILP=G`QQu6t?Qo`8YCc$z>Pv!)8^RVM=Z6fHP0$y$jv;qq9Vd zGfCA#YoYYIIMMfz{#L7ATKn&K7_oKt`)1#dgq&A5%O|v6(n{)I%c!gYgEjErPqW<# ztQJAPJ7?D`{w&5-jcJRo9hsx(s7M!kcghpJZW8|JX*NwBxX?d3M7J<6g}eq-`nJU{ zB39^6NFsEZMclGZNWL}xSUR7Sn9MjHt_xtJUdEqVq&)wBULC1QL{z}LP@v-0$6gFnLu@XnI_&TnPk`5iZxL=ZF&I)(4EfO?dbZ$kSA z>WUoWWIN+G9`j|CO{Eo!?1B}KO)<2ktd%q0E*y1_@mP5=2m%~SJH$r}32@k5Yei~j z95SahA8M-cJ(U2m%CqXFzaiN#n++#@Ytyglq29t<_!vGegk+Z-<^X8U2&8~xjo#dN zJ=<+H_RTdCm^KE3iNv+j3Oo{OIeSPc8U{pdrB8M^jz>d+ECs{yS4t#FMG(rA$23)m zb{QkmNgRgGin0~l0Qy^6t;J;%o5Sha&((&}m+n^@tqD`Nj7nMb^{>k{*{^$eUcbA{ zY@25Mm_c*hZ)u%>MqOu1oNU<}KbKlJn>R4;4re>pWDA*D*Ovq|Tx5{@B$%`8t3SdJ z=!{nL46jDkB>i2?E4Q#-s12)3+U3;Q`z_bXLcenJqfOW@DCRk&l|(vS%Pn)L;Z#qEtr@q3} zCMPUVbS+~8183~zhNvD3dAlr2%fI`n?qakBOCke98~A{n_LpPB#X#RFflS3%fuR;tm$ z+Vd}8zkqK}PJUSjb~7d?9Xlx!1HwWy~s+r)1dP(i0e!au$>?@YY23R;l^a ztuZDr!3-Vk`fGGqz}ZTVe4YK5y#8;F>&q@$^7u^{w;^L$!w@g8#b0yZ%IK8W7@FFB zTicZlCCfw8k@49xtsKj7sp4p>+X8+8a?p}8v8CO7Wop@mX$AkTI=)5VT`cdj< zKi#=ylMC(yE7`Q7gQ+lu(a^>TF2C!tR>?bZg<+VP!*4gfQ#}nYx+HF_-ODuRwl3*g zU1>{M>A7}I7er1^aQ3O2_?0|v-=Bg@x1tuzZZf*k1)`s1rds5U55Z>B&ZCxQho3ad z4pw{nr~k2PCSWe9XZ|c|E84RSX`PFqQ#i{9mOrJmrjadHi?7UmUt6~S^P!<=yOsZ9 z!M3R2kMzi(@hWej^Yh<~G>(KZ<}aUEO{^;>+0{MH^imaDi=^>i(Xez8V>tZsjtwTC zvfEfD?zA5W)XK6utNM5G_FpRlCOa7fn#OII0D{vtA5Avt#@^HLs9W~!lD8>9K2Cnx zJ1b=qXcL6*6YTae| zX`)M{YH==2{P*XqhnQCkPWz85ht+s(TtmE?rT^a57Lg(%N1}CIR&;tkc<4#!sqm7; ze~4&X%dIjhD?b7AgBz{)OHt^_Ap?<~B1dnAl@?)JS4ioES=Ue>*;85?(`%tBcVThs z!BiV#I$E>}uiy3WGRY>v!(=$uQtcVR+!*VpT!zzAX0`NgO%2c-~Utth{gX{Y+6%s!1WL5NG`G59vB)mm|7$j-rddPPvb;&@|DKNFLv zRF-c_d*y1DtV~Z3cBUiNx9ZT?%GA^1pQna?epl&QAOeHJAivsXUA6`d+N!ZE>6MwO zY=5kLDSfP_tm6g)(%q?W1*GyI{@~e9owR)zp_;#7Sh0mUP^oap<#nppD z@We|7SKac)FWg#Mu;-TYwye*?iZG;t9*xlRJ~kgiO_J{ko87TWHSv|9*wt_0*>YVg zQT)ZP*n@F+M#GSBwoEW>=myeS1_bI=3V_e!9|x*{0%^o{57 zQNv}+a!r$`^w><*WkF}*`hdcvE+;c-^eU-nxA?j&S@^y2(YHywkVjtA%_>oA!6Rj8 zy7x{+V=h?NW$q|leMLiIdgU&r>e#`hjXw8~UjvE*Eb|(*(qHh}6IROxj}L`4j(xiu zt<{j_;b-ab(T-;OwNBS>JboUaz?es^XEb9HBHz<>|PJF>^X&K4j)(+O4S3 zR9JErNwalZDs!W{Wjm{`{C4K;S!t%ZYcy5)5t`mL+FtxRd!7Cunr>Hg2JTO(656in ztlckrh!wz@(G+Cl)>LBU_z^45qrc`L>a#VZJ~|4wqR`an%(?bTA?>sG&t`O`sjc*^ zV_9RX$=QFfOA=&y)smg2O}F=r!*i)fy^kABtzYYsaVbvjkf%s5$+iM%`ec>3$jJG% zjJfI0yVF6s%)0hkq1nE*l`d(IAiJO0`OGo~w~4Ds8x(0lZ8J#|S}x5mn#F&8fE>Ky??>Y(d2O9XPkNO?9n;oo zz{x8~1*Sma1K*d`wudZuf<)<;lj<_Y3t80?uIjU6q2g09( z^)kQ21x z_tz<(xz^6tsJ9w=;@j?C@I2p!FQ|%}dSy2Q6R9fy_~CbS4BS2bM*6k%M(r8tcpYPn z5e3(A;I+P)(MN()+3ApV8r{=8ud6YY1=NX+^}=#T*?ITWKYioA|M$Ik1uJ^ZHl6;b zeG9+ED~sBB8qsc?rQ1xd(6xEwSgC56pcug+(XUDqSH=@a0+C{7gykBj?5bIaEH zM;aH0;3BoVi^H*h0x505J~oGo;+ChLK2@z=FT=a1w0_(-&5xP@J(zAJy%>J1!=oeSJ*LcFESEDlr&uH~xWX z{M6c2WInV_=;#K$!Qe=6Q}-DWj8iXFdQFQZLGv-%}E8=uORHSUSYpU^m0 z+StFUlK@@I%fxrQUHV^#Un!l0Ft*8r-rDc?W+}!sLE2No!2yg#P4}gTEfc^H@bK(- z3#-oGU7YgT_IYfPokVU5P3s6^4<${_6-`D~PC?`U3w=O>znx`9-yl&0ASs{(qXcax`|MPow*xDDTg7U_Sao{0)cO=)QQWU;dZtgLE55HqHO)jo)tG`ga zEn$vs+nFD$cQjpX-LYd^_1D5|>(}qUU%l&OnRT~uYyO^1dDd_A%kuq39o6}*w`ijZ zChMX;=)rmaL8U}Ddi3*`jvn;u@fYM&blnr!dKK_9=t}nrH=VcgDQi{OFk97~EYtc+ zNt(}(Kcha9@P+2cd4J8Z=!@oK>&K~oxYb;9e8GA3i6540thtHmD{q8IzR_H&xfa^q zbbUxK4fTyT1FhzpD|}72&ezr4e(5Dsqp#oAG@kaesYzwBS=HqSQ`4uXYMKQdl5AfCgpJegF9jm!(%O+EC9}`Fz{T#cy3RF7H1`wR>i;QCgpgA~&yBC~uw3 zC%3DIDevs;MebJhRNh+-HGU&TDZFr(h*R$<6_Xnpd_F}A?6xM zI1{YwdFwFgwf%y!_t6cck15dj(1v$N-&yC4{T4h$G$r2}6Q5mRNE&Q1CXad2kkaur zV`|DsgA@bJGD!TPM`{P(F-q6;=)$jjDYSX8C7B0VwjmyCHM9+Etp17wuo* zVX!;Tq+_hg)y~oTk}h&uYnW2Y?N{*fr|_wx@MaFEU3K|=M|mDrTS?n!C21Q+NZZ~x zr#7PRyp@l2{XcCNo98z+H$OE)-7xfpZ12^v#- z^A=6~*!}7bmG5af_Wwk!HoTze)aYRoi(P%EskOcZ!R>?KP{HsrT0* z<~}8{riZpJ()7)`YwGt}utw9tYD#>;SL4kVJL1*99xn-QYl*%tzm+N*x3s?2Eh%%J_pYK5p_5FV=qN-%@e3pZV|oy!|G?jP~zF`}gDgdue>t zzRzD9U$wOYKcYPPokel>m3Brt4t3>O%{YU|>|f*MTn7F?IrQCLVNMwR1PpC^jV|)M zGW!AB`2fC3(vH4kxN70D_J&2D-_Tb+A8J_q)=~YE-Q{HIKd#x{P2F#JZ}ef?vYf-@ z{d)8D%e!nK%kQqWt&Dt!tUUg@?StQ+A|Gy?YFl-nfPA!YxNY^?WMZ1p+qUNIk%o`Q zr=;2<$G7ZKIV*J{b{RyLmeNoVf$wN7eAdQU#>oG z+qiWn`D&KgW*%{fY%=xHZ+`Y=vSskIwyk4|$+nJTZQC>dY1k2#Zrd3@(XjJ+p?+6L zmSI*G`PFtX?;ts(`o{Ksx6ep5S#3L9?@e;pI@@;S?x%*M z<}%x{O2$WTXnLGP>i&ETiD=>1-aGXy9<)(5OwN&;j|$yc}hSIeAMTyYHr<(WW2tjn^DAG+F$WUNt3*G<|xpzFFQS()`gcZ7sST zAT0+hvbC!BDT!PSg;Nb3)~4t?&KPb` z&uOLaG;Rv%T;{Lul9o@pW}nk{i|a*Xb$h#&^gjBbtQ`SbwyqmHRQFl(eqB{?cU{$;=WU*R z@e=#}5n=4Tj(*CL+FbW|z?J^I-4SfGBF$0Bc=X!rF7xT!?zRsE8YxM8`1JN_oYVDx zzlBwE^ou_KRad$9JN@D%Z)tYFXwx&@*WI$pjSJ{AoTn?@|4Fv6eP5tI>Y;mp1D2kx zpBvsiLl^#8u{N@PJ6+^_tu}7HRoA+Bou$px&AK+54_l;qJp0be43G>c`c_=mV9;hFfMEW4`!O z8T;W!%0_Q5QvSQ&zf+&dQcE_{W4?^I_2+@!PvQMNV#dh4{nY1;kwvAdy2JC7^)hl*^?UYEHfYmb71b=q z7#$F$YAALyHoV-mGUikRW983Pzn7RRuZ&!3{A2Kv%B%gJ zGhXZXY$c`pjj*wmH~pVg-n{+~)vdE*mA9)4Rd;r#EALjNsqQUrt0ZrwE5&I+ zD#hg1MxTPX$~uD0D9Mie7~YMBJ^!l56kTL0ekAZFXidMtJ96Q&Uefsc`B>xPw|+4! zDZFc3`m8T`H`Quv){X*j#cWEZ=z3f68BwG|37~tjs1OUnXeh?VBmi= z0;+Z1hVHMW-_iV3`pzZ&ZY7O_;;XErLzI$qXhKMbUO0aUpnfOwxi6bN{AQoI#5rF0 zzT0wJHCb%E)#XF|t+TzYzM2zyKlNsv-z(Aj0Oh;7K(bUHXnS54WPMH_e0Yg9#5_(P zy8c;f*ouGHly8o;hR-atMNCh(Mi!;n>JD#ft(VcpR=;PkwLzO8TU4_)x@iC3Yz@UA zUBk0J+g4l40kf^G z>MgUywJo#8-QA*Z6PRahbNoGh+jBjv?KZxkZ+{?H7r(Gb-(hWcUB?*%_3AlMvSaA( zoj2-w_=VUKVvbl7PG7Y3y!C~(*Yej8e`tfj+IN;k-*3SvtES{*ed4oE z>5>M|)hCZB(4};oqEAgp*15*mUdPv&bVIf9@A`AKEpGg$bu<3cJuG9TZ}bod_Itn4zTNs$G^3*c|dcfq4JH{#>)NA z8J7I>tYn8C-DP~Q+ZMyJoHNSz>%C`K-sNlM^1GXfvt2rv_oMQV>X^eG+3k?K-SJob z!0b*S`O5g8v^#QoP5bGpe-EgnPV^(GWDNiPQ@gJ6@4(XE44~ihXS_OWB^^<5N5l>t zTjIPmK2L(;X^cbwGR47^~uxuUN5*7;`I+b_Lo zZuIp^ZR2Ubo10V)v8cNIYHs@UbJ}J>KbhN`_i5wDS~YTG2i~tH4?+q_jyiS&^3X@x z=Q>LdE>o%AI%aM9$O3J%$2MA<_jyw5Z45!YykE`Bod8Tmxpe=3+`N?&qW-7Xex28B zdtM%(vai_^@B8uN9@Gyw_5W#L1^Q3l70xnTTHbYG)pNQ<=H}YnFP_p#cKtVtbzwi< z$)W_UkM5$bj&{G+SF=y&r~X9iuUe}MP|ni^lGk;CwrScR>r`Fv;klL&^Kf10`YD#M z6%|(HoB5XTnZv9R(|cJWi+Wn?4v)3e%ZRboPq=Go(E5%ws#%OS+W&;Lp>Rjr@X~Ev z%*hkl*nP)!jW%u4HeO@aHCen=tE#wcW%8BxowfO+i!Cj>t+Tcq@DEF?dT&_c+7?>k z?tZFk6PRXcb9}z8?YTCVb{nVb+8^kzjbHe%uEW~a+Kw|G(y8YJYCDY^ZtYxpUfU(D zx3z2bx7u!TjjY`}o3uTA?^zRK_E-{5pS1S8^^v95_AS=lM~#*~tF5|+Hk4ZW&f2W& zw;-{$n~5~)1&tg) zey{pk{J8Zl)xoM=r{=caLq4mL^yBo-123jje>XspesFxN>O*aQPX9jLzq&eLNBZHo zbJd4`S&@D;+%Ny={%t#t9WT%SVa25M;~R(OpO`r~-MTO#|7208^iwk$=Kq)xnf}w? zZs-5p`j7O}X;IZ@BEol`ZFRHy?4{p#p7T9ceQw{uoxh&mSbcuYXFGq}URizNtBvUw zSAUsrTU42TY1X3r%TGO%{(H&O`Bz4cN&jQ;==`hw`lny(n3{jR^{AcKk4(tF5!OL> z(|@4l=Jf&ATW8}fx2xM*@9Ye-+^q_=-h2O&h0M2Eg%=K3#HstO3cc-rP}dLLhHaeK zEU)Tz^GB!B-}edi+yg?7bgcUAT|>FSqK>cgpKqP}{d*wA6lHvj zANw`Yn%~4GPWrix%jT278OY`}LORvAl1}tH0O54~A$(?rC1QGeb7WCFOWon2=6V?+ zmih@cbA#3wEm6%vG|~S1EDeQ=nueDyXk$+9)5PwxXd7)>t7*LEV{Mbgugm&iTK0YG z6Z@4>mspXH<2$tgx+_U1#EYF$ah}d&!!gdWAuq>^@9i`M$UzzGd-t;so;0~XEB8Eq zRtJp2vvl6iZ_zvFj``(%sPp?~o+Y~dG+p%GpR{r3E?8Ude5BU7MF)?ZsKCoF0j8pS z_6?wQ?on`?nN6Q%C26Ys8<^I&_{F^b%nj29pWWsS`|7K|B!AO< z`A#R(#><~*zA_$Bn-82ZZ~A+hdh;us<%$kYqqHk>g}a{G&_`|)H}Nun|I!r zVcJz+YuvJ)~M=`M%p*)@m}xa=6|T*2C5c%dz8+>wZ{K zu06i-Z@LpRhidIH$*CDlbw6e_)SgajVm%WPWjPxsSkGR%X*uWnqxIarW0qe}Z?m3X zv(a*C)-v7Yr)Fw@FL_aSW#k0yAA=v&UG0~tz1DG%?t1GY%l{tx_`f$6;vXGY_Jt<;)lb*>tKQT4UwhmfNM6te+8)&eS&Ov6ho3ixmh^!rT<_s$EcIJGZf?+fj3vtVZ|3Nj{+8&|{mcz-wYJ3UeMA#` zG|6$8xkyW~nr)5#6*+OGHhx&;u@SX$K8Ej z+xpsm$mdLL+wVVtd`{4||7@NmeqpAz!~AKMjx#!H)l)}UI*l7>={&5DrAu18rK@JR zwp*ivS}LF2?|i0}yhO7i)MR+7(oZtrnB{NE%0NwJafqdt(I3Np%B zc9<_c#AV0+TX&G1&Tj%&Av?DS>C(VTy2JqV_i)0ztvl{MH(6Ib`x6@>dav`B#AW}O z{Ff78tV`$M2J{kKVRza&)9gR7-@;D2bNjB>y5EBCv-oe>Pa(<01MP2k_`Y1uUwB7Btcfve z+lxSdzl#2beJ?IQ?*KQHq$|?8##%|&CIJ0?vDUT8k6k`omv?jIJ{wY-K7vN^ zz);X_B(1^a&OZ8$TsbBE%NL|ie*2US)1HadOrr3 zK=02$?_D^jzfBoY8@;J){+WzDs9mRZ^8R}L;LM-M%^~0y^y7E*<2KIezModL^~3Jp zJZ$iT$dla$PhMz~lP7t9$9Vss{;t)Z*f+k@=ze(K%^&EfB;9&L%+hc^fUx}wUrO%- z?7dsLc*$11^SZvYZ*MLMpJ`P63+pa{o@?p!Naut+)?@y~{R@tD7uw$(U?Td9c)!~- zIH$iS*sr!dRM$H8)zb0h|NU#4_I-m7yrvoWXYwZqu|>`oYU`r)T483{;ExEZQAa;{?)ZwEyuI~gwa(c#)%-rM z588UiO1eiXNq39|y3^kb)jI1_t@}=f1R8x411jlWA-`9WD+83@8Ut2+r3$o}j6v4b zmBELVEfVH#X{TSNF2r+1beYSL4P1hxdcrPkdbFkeu4a7OttC@ z-D5bg8nUqgvT*?CY!0ld@w}g^E*$($@}1_`nl(Nt2J`;C=^iJ5Qz(yq3q0)Qa?N*J z_72c)P5n``t>Xa8_9pS>9bxS)JMM*<8%J%`HlFo2O_LkfEGoUx+;ZWMmR9wiFvqu4 zXyX^Wt?}l!$$kC)RF6wmk{~Ea0{tHNXnI{WKGcmF^3z636&@BRO_X+uNWx4TWN zG)gsTn>M0t>`Ay0*^NDfLG~^C7A9+wk3lh(GzcLYdn#On>?3O=|8r-~P$|o2`ELK; zXI{_eeP?vfz2`aSJm-1N^PK05MT>;HQ~oRCSpP|VqJdatbi5OaP0vZeyEj3JA;m1x z{Uyroc$8&pbP2U{+{m)4elBv*6S5p`7m6I8^kX?4+be2$WonA^#^s_``>7O{spCYP z<$)=!6PBT_W5^V@_G8gDT^gmh+jU1hT+35DwYezQQj5iXWR7}$dc|*&X`6%*Vzlg;fSt<%h-kA~@bxaf#zaS;pMI;Id9u8v|>en4$|Cs!DjkiDX zX<$q$VzO0np9>J>ndYi<%7F~$8Uk7Z`txc8;Yz^u5kSYlzd5YR7?kwyj*(L3z4+Z& zDaZ?l-{W4*an3yl=ndctvq!K=j&o>vqoA>r?p8m3vrZrAW>-h@4ODD@*iAJUW4!U`!@NyDx+Rk+Nj>cs|g?r7UIR&12(HNrUn12 z_r0k0vmihB_x)15AJik3fWF9A+C5$_fTBPhdjMoIhHEU{k{@gsF@o2kjq#82BWTp+ z8synvK*K?KOcaLEU-75>cu&`l{VdG0>-bl`i_@*~-ap&d#qew?;Mqgvxb;c`v<%d7 zJ%V^`2iLm*{lVBUzp{R%+DpmkU`k#6e_7A^$M#3^Ysh=`A9wv<7en96@S5vzUO+~- z)ny@V4H2ZR1Gr|+1pK-u+%!Cl|I2*&wkP~o>uXSF75OK9x8`2(w(fvJzL{;Ah|y;Fe;HB z6d%G1c8TGK1l#eDTCq$G&bN;B^X?b;S?{`@BCZqm`?gyET?9M?-`hR_*H6IjDZ*C= z_^OzwBR*W&kt~9jV`(nSS)s){_NhviJLVBjT5?-*=!Rr+3gVa!>JJ?#ZL%n|AR3saU4}+!&_bNiDB94s+h1~O3ubIHJ7>JK2?kd;5uqv@$ViRtW6dgxWbW^_;|Cb7ZDi ziUPvlaRS@9NP|MR$bt=1nSQEQJNB8$l~z+8tG+AN6N4J+NSf;3KFUQMfHi;o_Nh-- z1v<9(GaB*Xun-?+A6Z6fj+#8REMBVck4aloqB+qY($>x>-@Ky9hb?^@m2VwWF5l)? zUcSA{Ir$FjbLAP%&*T}m7nkp<+9k+5CMe%sx=8TH#?Iw?j&|XTr#6%BO?Bt*OK8R0 zpJc+%YR}?j_p0O{u&v-7^e*8`8eQcbBHzmnJv_iWqIpwxr0}xzXxR~2&YmpkvAhkk z+$F1|(yh~E$44egPbA05PDaH@^WuYKr(Arbrz0r-83Su+zH=bIrtj{`xH9=w-YxoC zx6|_LXzthjjW>C}(32yD2LESz!RB&frJVkGe5ZoQyj=DG1 zMR31^Jyq7Hnc#tg9`&%jv;0wWTe{rNK>pacf_~EImHf%OtMt={SLDyGAE2L~&X&K( zy+Xa*b6FtYluf-_k|n5^wwii9a+Tms--*=Qs6@d#|6Y_bU)BV=(!fXXQKu*U@k6wn z*>Cx~>+mYy*Z=Ly{9*pPjNg*R{|U)XeyBgyT#xkuI=3&vLVUFm#24t|zD&%K+R``f ztZ(zi&*I&Eg8%^?-k0&1yDaw%O#W}}r}gy%rcQsl5o*rMfuIcrDb7HP`?e3H=AH`Q z&VXhBJ_38dcMZ5^&PUw6al5rLwqQ0QNLzP-+C1Q%V9U(M^wuGN2)4QJpcJyxXdadB zmMKrK-bQB_E(S7m4!!HOK%RMQFunUqXZar+!{|Nx+sMUJo$0-)odo+5I#T*dEsuAomOPm!OD8c*lN_m!V=iKb6SBni$Kw59W%`v~$s^q|f);R((ac~QSAPjAvQ zX@xwM4xoQYp7v-(E99vs>pw=Gs`k16pI`Hb^7NPTN7a_8{}CefXFgCcUe&ou+unCO zjretCA%49O#BV;hUId6)X9!j4Liry$)Y3KnZ!Z3M-+^rqs`fX{vcEo0`mFYhzmJ2t0I`~PF-5q>|uYsTaFHv!a_h4>Fe5dRtAdKRL{ z889GTV&E;4e0EJa^vV`Je0w0Pm@7hypFTrN&8~<_4~4OAebPp6ua~jz+**jzUD>QR zt6z!UYVld`q}|c?O<5@)I$5J1&KzWY)XNinOn;K{>FEcwYQe}9tFuDXI`M3ZjmS=f zx*bo!ruRZ|{lh6lw7Q76*N?^aEEBP>9%6aElZd#I2`sNW*HEv=YAN3NuS7m05$Kz| zPb+!JphBPdQ~3hE@&`dco2f-23LlOCVn7D~PmTaQ2Y%~OH_y=Dk_Y-fHjmK1+z0W~ zoPkUmD4Oq2iNwDe6I9bD;eVM%c#bTD=Y}A>NO0YWu^kq?i7WpmUlsrTAb$)m22d<0 zqc5U}vzixpFC~EPg6A>0fc5H=MTI7JEDM)B$dpYtw^Yd^6Yv|BI$~56vuE;0`}EPJEBH!357YM; zos8*wj84Y%Jw_*E`W~Z`F@2BG$(X*!=wwXaV{|fA-(&XlGJTKP(_2cZ{53z($Fbkk zfdQWbi~(^$J(;sD)s}m@Wg@@4UJwuks1vxC*)MCgDq}|ZzdCjS`SJSxFP+Cxqdt8A zC4u_PWO#7?ovW0QM-4rL`I~z3w=(l8K(*J(eiX0_&`MC|dVnIO-H;~SB=uL=)-`?i zI%uK7Kd*=E75;zjpKmDt)8A?@)M&E?Fd!Y!E6|Sb5hM`kkAcmV^H`cP7NhW< zFl}=>zh-+XeRvb-|KWD3Ctj67X75hD@df@+pZSd)m){?M@N4ZAXaT4f3kggB?KKfx zPel|ueuCuR9rIQz*6p!@=vQLhV7-4!-&e}Cz&U{S06s9jLHF68ms_gx_GJ%l~0P{TH&Xb{Y9K&)*IAQ>-H77;@8S2kRy+LW-+Trj$r$ zAf>mrrQF)NQF!~C23s+~{X};UPcV8{*iHm{~IyE1*AsZ0`xEk5aw|o&ofk zg#-aTA;?5I56({cSLf=hPcQhL`7fh(9n%5r0d7V|zH zoWuEaEkjzhdNAj6_Cjg(gfPyRl_R7Gl^|9d$Cs+}I*2v8xk@!rC$W}a6t5A|M67My zn#cHEb*c?{y1AFcdbi&4^wVE(8t2^LHJK~pG~IBBXE10Vhc)|}v{~p1jw0`c{dkTd z??tm^VkYl}@vE_7ChvvmrS4)y-iy6lu_EuqQgg8)?}eaBtjv31#!=+G@cP72a=;2xaGmQQs)`d#jREkk-GHjFIMCP4-65z zQiFMJxShBSFO27|AI$M+BH?*9x+dl#20W$w{IT9&r)@gb?wEgdYly~I-CLoH2O)zL zdBK_NvEO11WKgHs3;F|vDAq)SdIH)7`U8+DK^MU_un&Wn{Nb#_cLJ61DmzZ{6!9rR zlk=JQ6t$1jLYep!ja!<^rV<`v{`Jn!b~ zyj*X7c}3j9H7Hy5gMJhSC`#Fvf*A^7A;I9c;J)BG9uSiY3|lV@k5$G9lTst1QuJ@i zYp7Fq-R;YlS90Zd2EVhvet9<*@?D-oraV=i!{E_?Rsg!ncn76uT|{cKG%_CZ#)qrQzwmm8Cn$&EXkVC8fJG zlf!p?&MD0-8yLR()~3=wF3c#{lQX?kygR;N@Ai$c`xdn;*gsnsn>F0NAbViH*aH!I z1qa&&$4Xj0D>!6p8++JTH~fe}VCj*!Ps5MCBujIyT?l9LEgmaul%AWt$Mk*QBUw2Qv%c#@B-eq5wBryyT_!ucW%!Q)U(syteY ze?GJk?_9JtXLqO$ni;LjS`w;~fAu!n;%-r><)s_Z zR>u#ATJJp+ZIhN7ijFIMgH7)jk9XVqh8QAX_F?J$EVrT(Em5X_{mQVf+o%7AS*V`R z_kl@BgE<%#aZ;zCd^rGQOBX<~P`(_bk&s{(5(4B+$OLem1W1t!aJgrj0;I-T2lB)9 z%aHki7J_n^{9kIz9-a{+b=FDhyC2@W7SMWdFLTzX+R`_kRNZ^)yC2TGhX9>a>R}h6pV{@BEzmJa@6 z>3QVko);UJdfJ$wl{nXYwSPXqA@|L0q7*tg8^@t?`g{IzX=VV%64GoVSJeSwT= zw;EihGVitRz&qj2iBW<*6-n{~1LFk;Em(*|uR?zQ$s*z9wTA^aEP5i$UZp>~SM+~v z&nEHSb3 zjCtK}F|)1m)7I_fZC=qxzNOnv-qzW@<=gBNsqF*(!Y_^oILFSrIZzdedlx ztk`WlkBRjvH5~hYv9te!GPREU`>%_i{RNrL=vZKWR*O-N&z9ZGhR-BuF_lCze3r7rhtAi6ZEeQ;5rS^R^%7Y zimM!KF8)`X6$k6}OZnE2ADpR=cme#wDhQ4k-x8XzrTD& z?Z4K?%fvr1zC$MdiSZpW@lTBJkcod{e1}Z@6XQEn#Xm9Us4>1n<{UM~cgUQh#`q4I zee;a(kl8oS_zszU^NjCMb&fi7jvC`TJc1~Fhs-%@jPH;+M~(3vGUuoZw7W51<2%V0Pbq=VN60^(oM=qhY^(K_eZ8u#gTwU+l0PTm#*| z!#YHfSQWv6ksCO=6n=sFX|-L zWtEC_cVFP>$&ZQj=^Sz6n`9PBsXS9 z8$g~cq@zEmTL*B>_yN_btqX+8elHOIT>t6V9Z)nVgE{9*<54OPdDs39tGfLz1X1Ry zf&cXrsBAjs@6_rz6<}Ed01XCZjby%GJvv@^yA4G>@=+JoE^DDkRaSlF!LkwoC4sV- z7$3EJs4J{fSE}Z{@bBxapLJXSXc4$~Irxq~*!dXIHT_KMW^SYPUT&lGH&)S&i;mMx zrrxHTO197jeWWyN%`Cc^-)6dbVghYwolLig?m)Mw9!MK=ooM4nGbvLnlrlXtfHGHe zq|A4;r!4L^rYz?;P*&0xly!nWWh0VNXuIbWCfrBi99^0ie32#%p3>}A3SS(kdpgub z8T?LPM}OAgzsk8tBnAmUI;r})vOMk6P|h*yq=ia3*Kr-7BY+2>uXMZst}g*%)|oxu zt=Wydd$>vb!7xb5#Bf!g}{Nq1@0(Jq|NnVosnsqUOF3)}Ftw{#TikRwGp zZ_bHz%XW+Ou4an$^OlGjXDt>t**Z#O!a4dM=&P+8llk3wSDxQk`*k7vSL9B8V@SJ( zKUUE)NNt}iGfr>QNSHAT39~_vFjsKR>#yCYAZ#DIZ3ftODP`SL`ry9OG&4fQnm#xwbj2QwbT5}vzwMAa=5yk<(M}Q zamw1qYq@m`&w0fPUaRC;JeRTKd7StJUhCe=q^_ffOWl0OO51dflDb=UmwLFimU?{V zO1T!1Jnk)XDd?KKwnwX^-X+a>KHJTBzK7rN{APXP`LDaq;|;jQ3z%6U4RpW6)V~pe zwBsvTr{W=lU*|j5`txu6APvX&K3ax1hq2^$MHw^&h>Y8yAn0H91RAO_!aM8SK=eSfev#mb~`f1VuBi_+U*{JYoAxcz?&j#aveor%m>k5n? zYP4ciVZ=AN$vjJSmU>tLjfAVSkZ@pCgqwqFFisIH!^|o*d&@$pk(~v{*fdIHq7x}L zsa(o2eVoEGE6x*}7Z~v@j^dPMrXgjOs!3TdcuUz#en_E1Z%|mTd*uxS5(GIQQ+_|7l5d!L&0zAcpBmDxAzpPx#vxK}kt7dgtY{aR%DxI%1JVuzX+Ob}Zf zO_o_^j+0rX4wP9h>>;yB3YDS5ykuCcqYMwXkP$wOWu((*8QbE8%vS%7%uY+6Z#Qke z*dc5?$Kh%g>X^5h<&-7mx7@my@4R9&zg6;bzRTETJ|})A)w=f|wCm`3w3}}V-KO(U z+TCh2?co|hdwlLnb1jBY+*=;B*Qao*ZH_7JUDAs3+3rsH9$`^_vrQ=fbrlqEKqVEB z+>{P*2ThSH6G$`7Wn681La@0PO(0 z-LK^7;z0~gjqDbPjZLNKzm})t_^o@3WUiwp%iMft$l7%7EpxYumwCAQ%RD}}lW{F# z`P^IfGOtg5{I)rIGVcAeQ@4v2$&l~WRACQd50^RR0bA`?~o;J+O zul!{8KYTAFe@TEsUgiU;Vj&Sseo*ravqizRd6~=kTX^}Vif>=`iE_|A%X3KFLe;Kk zLwyG^uRkUXm_hXnOyw9vZUQPs6#nH13qT&AZvFrn%fN6W$A>oI4C0%7G?1E>=kU!+ zf_UZy%Vich`8>f#1@VECO?=mw9hEzM?@Du3ED{#0f<2mN-=WrfAmA3AEljS-(i{*M& zAXT<~ZNAm*3-G;d8fbqtrr!g(QMaC&K(m|#^vluTc*>NgeF5@xC7^7;gIvJV^Wd7X z0n|1RNyt(8pQW&Io_u^uOPc6$ zlust~rP$n;GFzW)%FdkN+gp{>_Mf`T9FgI)<3(MWQ`SXFDci)9QnoFll(G%X7ZFQk ziuuBMj7%|KH0dTo>eom7{){^EBgF(^?1pgAqWu(F$=AG5P%kNj?fQsDB5henq!WTf z0{uTS1pMA6!)z++AJL=Vyx`d%+ah&%;a9VuaLp&sPsVoX~!*vh4>aDxa%dJNYVq>($RAHv`%R%3&5uG|!dH78huZ zGA&r?ntpj~^EHUVPKbzBmd7AduU>;{jz!h@R;8VVvi=?zq8F61J~9i?A@Gco02w=< zoPFhyy@7ryXzzTXS@8?nyue>zaWp)|GSfH3Dz#OL^+KBzns670huu#h zysxH^PN!1X76(#n^>?J$Xkucv`*ai%4nYF4eFDO6-dApG*8#Du2$0)rJ0bR$3AwV}>eh$BukyR; zj}pnkHe`Gy50q^fWeUiSg+#dkRGd*aXG4zV`4~(4f|X99%j1OH*4q(#*HH*F7W8WO z8Eu_!eMdDWYWE?<`>LrUHN8E`{uu@IgQ#}kxn02b4rvv;5;sqG5pLYvB&-I6*pkO}JBgiu~1*&PYYCRKe>p_QE&bQw49k?H0bX=_-HkaTj_2#Y0}% zv>2(pdqn=RG8FlA;-#RfALV*la}d44Rs#L<#z^D6`vpzT`U{&5?I}0N7=y6F7YR(? zoI=b>h6~JZbVMw2Dg@Tu2*hUo0|DB85`xV$ljA;P5n|{@Iq8}!WV1sAwno81J1skb z-Me12{i77V!#xYi@thIgX`d6-a!X&O{kkxT?~*i`;tby-Yuy*2T={KeZhrTuHmwKo z-L3N|kLK$elK&n4lKB6*jjDxoK_-IPU14>7KMzF30@@DR5y+V+AP1rpx>QYhb1VJw z8uh3RXlLn`fsqH1`91g11rLt%FJx9D7f-*D6)qV_ z%XUtbT}r0t%k$3)t_%SoU61=l+CVcO4S^oY@2vTXP%5|f8YRYlfcPHOvvIETtJtgBj(r$3=$Ya54+S53W;x-EA zbH7ZXybq}ApnJ~BRIAoruj%d`AF}m)2!OsPB3A}3w_#QHAa7@*eAqTlvmv>CR z7AWRkUw0_|hF^fBs1=!BROuxtZrUil_@;%VO(}@9fS@r>9qO z@2)y)e=lk<_x|`@_GK<%+y{Nnq(3xp=05V@nf~ZQ2gzfb1?i8AoFq@a3{QV5X(D-c zCo28<>X(ui`NQmAPPinIr$^eq>akx^F_&ZinkVDF8PweVExM2UuKgSP_w1?M4@PnJ zm0A?H@@X!L%Rt{L%A zqSap0zLBQ}SKIcXy^iq%u5P1zd);?uxOxvW?DenjC0FN7y%8@5OCC za#*_IWD9PKsL1r%vQEWwB;+5Q8yH>UCFqaml`@%MP9vRKv5-z~06QWIeXweUf&LSb z>Er7uW+nQFc|orfi=%_YmYF@pR;eAu)(gGGHc2hT=rAiW7TZ*ehkX$f-f}VNbXUx_ zxGc8SKPk4;e95tULv!rQE^!>Lp5QR{ty9)kp#QJrIIoxu^#2JQm$8F@{@;_+x_7eJ zHDa9D&3B-+qogJ&-9^ zr3ZHE3}^!2%`^n*v=Ce`1;1mPn;VF;w_ITv*~JNsO;^fIbXFoJm1hM?{kckRUJxO) zI2t3e%nTD*rTU1h7dneBS0cjuo``h1B4S(QiEQ<=MRuBZQM)&n zQ3byeCjy?$lRM@Oqn)x=p$eO6MIx%Ona0MTjLn49(vg+Cs86?qb;TN*Kk8e*MH*bU zWy)2p+jd$9=qTU~&>cEm0oO&~ckP{tv*^Rdx2f~FGv_jM`VF7cI>ldXkvG}L7&)T% z?VS^#jIC`SH89_6t10r?*4*FR=`Nth;Q8;F?}v?#uPHRqm%qv0JV-gFRQAHGHT9JD z^?V6f))yM-tieJ$GxPuAjhv9VzdC>3h-pFHxML$Na>*9lv~EWiv&!YgPxsR$S#6Ng zLnwWVUWDAvx+uJ}HCIS47?0fTJ_WgVtRr>bqm8UA^*!>y*jV;(>=pV^v&+JAyDvz2 zd6ev5HFvfST}8Y4jNrSq-cPkLua>ztTS>XU+RpdX)De0XstLI7`U<^DE9thf=K}9P zdQm=GL;_#YKFV+A41s^rCYm?KLlD5vwAtBc9rG*2r#XljWmS`YI*X62M>jViiQaWpUM{w*<&al zx-COEEMuEs_~J9jh{WcCkt22@g2+SiQIQLf(H+ACV_FSI#+pb3My8to=q^QX%Z}61zz&})3*9PYrFt$1u z11bggGwXoZj?Sy{vbU_08QD4Tj7@usO>|cb?WiU^0Q&tS<~m$`7w=j z(PtrDOc10C4zBGO88>fg)mGJ7&#iPiT|H_S$7fH-Gv7`2rAWOtL+!Pon(~qnmNi=i z&ifz0k8)+ZcHscxf_DJ=WEZ9#4aC)_g3m0qN;e$-fb-{cN7ehO-mAg+$e_+{!a9AX z3m*^#-i_I7p`KPTCE41P19c@;+5A$KTt^yQPwO%s&_qxUv+oZ}t8DTid&^za$Zlkc zvFTRCL}v@jr1FOF@6mJa@Ej87@EoqLK^*fY$s5vjlzggf>wQ0u|K5CEqs|TVJ%vsK z`(Bs1fHDA2_Jh8699%PNfZDTX&f0P~Au>g(S4N%N|A0Ebw6D(P(BX39rEkIeGCt#) z@2DyM-T9mGLuhGe)@++XKsUg9Flz*cyXQAbVb)A@C)){gUt92x_s$d^zb4|J^rMlJ z2d>CYp@za!Yqa@i)Y>CwCbpI3-!DMU_R5u=%ljfc@AH~}erYtKeBT#{lE-!5i$UhS z>wQ1Ny85FAT+M**`jSSv0{x&Xvks_M9Os^l)QDO6vHa_54#*PR%ftXUE_+C7erJn# z#tUoNB1nJagWXp7@7p5TLM`7lf=14(h1#}RavkF=WI`n}6 z>vdg#hn*1+-Vy=nv{S&gSSPU6Um&p4JRrAwvqNrQwgYiUj6xi)_LVy31&W=rhRR!R zjg>pEh>*8R_LIAeb&+%8Q7FrlF@;KG#$@gJqE0*i4f6w2u4;^S9R+AP;L9c;BQn7C z9)@3O6}?jq8(&K~Ki5jg=+=s|kdg9V7=M}ww11S(Qey~%Z6E=Z1DL@y$;rP)dJ2 zsU(fh)_4x`vZrO9CuANuNZ^%E0)U&Qsqi#-r z#;RAe1CvK0pl)AMtQQr)w$=i)6H&x)cCDh3ZuTssn+t+;^99#|fEXVjo>pQ;{wwE3 zr|L+gzPLK%*XBq3N8_!b#gB%^9`hX4*y|PrXf)u_WWb|&;CeALzSH*e#Q)fuFw=h$ zSMq-rbBO%ny7BMGqu=DsYCwkoZ%zW<$iOwTCh3-8w!HN3iz})TBQb4_)FCX3r(8eU zhAPKaE~Ok>X_Rto{d;4zAn)7&V>RpYS`GQpE`+)|Z@1et(!Dtg>CWg0nsY}6lS})) zkS(9JH|1c!Q3R>wL+t;ow#-K~8F^bze+T7ucLN0U{O(MiPn`u{79)p^?;z(VZq=!~ zK7$pH6(Y6PXa>Uaf2`vvYNEJ$kzA6Tm3S}8K`wVs z6e6|elJD1=VOd&0CqvY~uiGF%BS85R5QUwvfzwdTPaVFf*R**-8A3oaK{-s!Pn!(0 z*`j|mPVN`R`rjO1toO56xjOQrO+)c=b+!Z6{M6kW$nbR;pfiB4SD5c<6=P!0S5%o^ zT9+VKwvp10SWkOv)S2g)vdRHH17$IDKhVKFvXEbnSMUA_&}SCXLxVY+*5;!N$L5pp zqD|H11eHT0c;wph{#HKNy{Caw;s=}ZY~cC9^XVS635Or%h&voBE_ zi-{;YTm!|9EkX&F2};JLqU`;)sGa66)V@0hb=Z-OI##wtom2f$_gQUGuDv_zHBpSV zJ@172SZ+ssM_{O5?rN0RtT`IcZ!Q|RzZwnJ8jFT>e}cA4r_lD5*U=7P;b_Oy95n2O z8yexi6^&eKght(4fOc}LLOahIj&`|z8|`Kvg?68K1nqIYCEC++0~#};DcUP{655;f z6z$Wm2ikXkJ{qUh2JP2<8`?j;85&O}x?*?_bmg%N=xSCFx+d-zx^{mXbiL*tG_|`Ux?#sQbYmroiaM@G(^8Gm z&Ci#j+fo*yV#}rIzT8!4Rx=AUyPpU>ki|wNS{dk}9xmwN^eptqM?W+t>?C?@Lj;=p z;xc-i7mJ=)`Vc*NUx1!!^ASBgI~hGw)D%7Ium(Lh8As0->_snFd!rXeohLhmepiP8@yqW3&? z(ED?jp=HGw`p{_?`e;g9wESWo`UH(cpN_hPK0BF!zG(3ZeK~M4Dwk-X6}n5%*S*Zp zH1{Bhcq9wvf?=UDYzY4wNi$De$);9!Y#&-`F$}B=XgwW>SIi2%m}Q> zp}|#b2rTRwG1;23B$}*oyN?|eK1R}gP7F8b!?0;f zF#M7hM&gq(_Lx_g?Wum4y>SudFsK9Oc<3!U7McWy4$ zW4;p>U9uXBan`_kO&y8F7GB5tV1ZcQ(SKl6o;lXfXg1b=;Cn1y(jObBTZkp}^2P>b zW@3Y@O|hX-^RQu}x7hHCf!N5P8<=2aC^qWhA#4oS5gR*iJvOeS88)Hi3@mZV2W(>D zU~Dpa2TK~=4V!ZEJT}cJ022;8icOceVl#DjW68Y;Y*yw*Y<9I7HZQFOwlLTLTROi5 zw!+yATRC+jwn|1|Yp`@|?HFflUEV<~)z}BykZ>B?c!-aQ^op^x*umK5-LJ7NUuIz2 zIyJ+#Zx&%Y-nd{pLyln?t2<-6${%98+m6HjSg4EbxwQe?>*9g!6Q0BNU+#lt6YsGD z<5IALXB@CYrYEq&LwaFHj=aHgnk>SO^|i%v#d+9q_1@TtE}yWI+ty-v?_IIep)%~u zx)E6Zv&Pst-wf>hl2ELGeu!OkO~wk7aZGkiie0wrgI!6i!mgfMiCwpJ!)^?}gcaqE z#EP3W!HN%EV7AWzlcng(m#Uo*|A4q3q6A_N#1jzDKrDcG3F38#B@k(d4M~r4)Hm}_e%Vt2C)%DeTXcG z<`8Wlk`P-#M?xG6aU#T-5a&W%25~jSRETL1 zw?o_oQ4BE~;$eun5YIxq2=NNUB8YJOet87(8N^o*-$DGupi)OupcX_uhz1Z_Ks1AB z4bdK=Gel2_0TA0k&V z5EnyS4si{{4G=d&+yOBY;$DacARd7zg?I|$If#W2uR^@3v~kq~Iq zY31Z#$0l*q+QQ7l$gnx9X=6PdZD#wP8e`RIYBkc))o)_Zthr$eV^ecWD;ta;*|zqM zEuCFjyS4G)dinB#L&GBZUAjm2>eFvP!jR#DG2;^_PZiFbHGA&7g^N>`tyr~Y-TKrG z8#js4HgDOwWpkQn)5Z;{>({MWy>j`|C5sl!n>%~f%<0pTCQTSOX4J@Gg9iMX?HC>r#qZp;dvr{1s{g=2 zLr07rJ7My)8MEfhU%YJf`i+~n?MTna{A17F{n-a3hmRi1m7d5ubvplC!No$^rOQ{Z z7ZsP3-nv8ID|`6p@snrIU%ZsReDVC*(aG_69)r0=jmf#GNh3YDc=gM%ae|Td~T6ZrCTC z6IfMDC+zbs8ms<11Vu{ZL-FaeMuf!d1-10Eq zv@jPpmK?^-dS&D0yE(W;^)B3sZ;M-}rQtTOEpaS(8IG^g!HGvRaW=OSx1B!{w<~#o zJ2-d89j6xHPO?DU8QYJy8smVwuH*9Z6LRfv1;=HcAxy?9$b zj(evq#(gTj;C{gZ+<#>$&U+Mr2XYVLLGvB);F48%J7;yg{nRmdXyF~aBgV(WMjyq) z^X&0RqqTTcf)>t~jKVwX-ov}}ip0BS=HlI|o$ww}sd#jn4&Jk3BHkci7Wl^Ne>UHuzzeo%oUIT>R+e6ZkQ*6P`Pc#-(S5 z;3rHg@smSl;(14#vzrlFL-FWmB^vwPO5(T{pZk@jU+VTsyqV;yC_!xF=qHY&U_h z>USjf^b?ghiFN^AX>S`5H2%M6P#^FHYFmiP9mb%PYM2nSfW$@1)__&AJKK_9->Soa+|EJi82H{zN}w!MO{>BFi{p@o+h@BsZB@+RT(#)^9JdJS&7) zsdbZB)nhcVdZ#|I=Hn(}T{xFmzu^**`f?<(F+hjdv@DGfmH88!-HV7VbH)=}ZyFHW z9d{EulER4e3y+Bmn>oa;Q7Dml;u!Hqi&$dMfRBXu;2L6|t_QI{<|>huIhx3>W)TOY z{vaf2;l!beC&ZE9nZ(gm7?I<57syeSUHDh+N|inNXYEK0h;{8r6NoCi(iYuKlXFpV@=AAl9`D zYuST;!44!K*0l#+A*$>`ABYXvhbp`9pRxxVvIF-({JZSIyAbQzgH0h?LBt_8WDoX) z*dO9(h!Y^H?7b?re3#4`{JAkq*UvI9*ZVh}kH-63{>*c+nC{u>Wb2yqF-6%e;T zOow<7VqN>M7-AX37Z5){{H#O`ZHSE_T0m6UgTHDA#zKsPI22-CyKoZ3WQYyfg(`bc zWe5IM`>#{CPLUl$0=zxkTDv#{^Uszs|18Z-jg1VO88p$?)zNNL!~WCO(ba3*l-0b2 zk+F%Hg_RA85o}vK#sX}`adm6M_4W@6=@1^t@7%3N&t83iAvSo}$Wdd)PXspLjG43M z%v-Q%@sg#>R;*mLdd=E(>({MavwGFa70Z{UELps8{=7M}X3k)2zeHgB35E|DGyvFs zy?d#QzsT^g4(&sNg93O;0n@MO`qj&_iv{0IKgj`L`~8ubv18j7(ZPmKXw&y_OuIe-sB`vFgTXDaQH1z*mxcx>tjV++OwCqq8372?R=BCwskmh z{hb<7)INo{xz>g#ezKn^^$8?yEh->x-|0oroF~NH8DoiiSE`9J_FUq@gyzJ<{8Xac z93vhN-9 zswbL|8fO=gS{52)qhS+C?VOjSuE79Ok18Sc_jMwhXq+IMcH@!;+jo+z4>n};4k@JJ zdNs1ev(con?|sr_NmtU8K1G_ldXN?~HZ1~pwr22=WE$lfHfz4~)9v}+%- z!?r@Q<9i+%9(sU`SZ7B@KHWg_eVdY<7AKRP?|dY?wib}xW;`UjUyUWB*_X+l6GF+D z{F7v?xfj`cXcpNg$C0F(ZX@F;l6JsGcIOb*=Mj2zsdF*$nXQgWQ_Dsp_H1v$|I zB_|ErMovEFLQXNrBB#cAk<<2_B&TbJk~6wpCTH&GK_-8=OU~{%l$^8vEjjo3G;+Sb zF1a9OIl1tj6}i|glUy>(gG{+DC70Ppk;^CEBv+gtM6R-|AXkr=POg#alk1wTBiHwL zAXBsUlN%calAC%IkfNQv$h417$SvVx$*mhT$Zandkvjq`$@FF0$(?2Hx!(pMvjp?W>=P}>gN7SP$pCxu(1G3L5gkwRXwRc$&aQUk zv8wZ=G?Gsq-*k;U@hXPQ3%o;~S`km?dk!Yg6^|e*V{)K=Q-q{p80e8}gGVg{*p2 zMOFt5BEPJ-$wnTAu+=^HvNh&eu{De5u^TzPWou7~W9wYZXX~MD*!rVH?8YY>vzxX^ zWE%{)!)6@}V>j11$To~2*e!O=XB$<$W1B?wW1DWe$ToZB&bA0lV_U9h!nS%ak!|Dg zfQ`=W#Kvw)*n|_wCX-Uw?2Bq_JDcHbd%;b%!-){Kli>k&%KB73 zI-`{BS{1==6LE~~zR88{As4Z^fyQjF<#X6=%RaDuJVvm6=ajMiZpN^Ajxu&YQag6w zg`@0X8&`ISU^lzn343;^;YN0c0cPxu2Uf5ndM;siiqvCw-n4|>eMJj)j|XenJw2`2 zF>|-DdllQWdpqrB_nG3!?tAe#I}QzF_ZxMM-T!1?_J9^I*aHV9vJ)iQ?7_OL*h6}; z*+VlAv4>TMvPVRfvPY%~*n)~L?9su?*<)6tC+ulsXR?K-E!i_n4zp(t?!rz!{E9uh@qG52KKAUndrq_GtHrYybpFg< zxOF{y(K|2plJ+;)DQm~Emp(OQFZbEYUa>fez4Fd;_UhIP*lT7wu-9Ha!(MMou~R2h zvp1YgWp5lETf+w23h_V9$EdOmn?P*HCTz&Z*a2cRM3pUA*9KJi5|=<+0dWh&hHSvP zKE*o_%OJjn_(6#c+JtO~ju5>dHe?&Be2POM{-@fAD%((H6IMX1QsPg2iAE6X`VDi-ux6b^?i14tEq3zo-7GN#^ zUqE1RNc+%^jP=*4YjVx%-(6t;l@>GBAN2g4R=NJN_XG29CouogHl?mx zm9lWQFe!1YVA!DezA@wK22+2t0hg&k@TEvsu*lvD|;tzKz_QsABI1 zb?j^IQ{*>etzrEv6(jR|b|_Lj*N%hk2kP1nXCeK7977t{jj4ZrcbV|TbX`Sk{pW3Z zAJ8qq0&IjYh0nAV5Ro>N^8J3C5Cazv5%8ykO=6|#koW0gmc&;Qy{wMYpH@FuOzDKi$c1a?o#Uxr~R6S#9hG+pIoG<(LljXs|w-GM{DKG{*99S3xZO*r|?z= zBELO)400zsUO*?!Lhi0wEx*@WBD_E0yr9hQ8S;RG3LavkkVnn83Ch*C3d>&?$sgY@ zLY`b}EO>fKU-;~Rzx?_8D&)nQJo(F;E<*Xl4+8C~?ugFw`2yWr^MraAbL56cuOTfw zSPixd^X|XBne7`-fZnK%LY`y+x&?T0AK)wHc%G^AkL|;%e?0$m&y`~Q*1z9Mt-h_n za2!|CNPlA%(x2Jy;5DDDb$wljvKC<@mj^#{w{z90KPJ3h74LaY)by+lIHnMk8BP#80*YqE#`4p z&)f2vbxX)^9@0@_==m(ag|m^w9vz==U$Q~sa6UEP@fa>~%9Mq++|-@xyjUZ@m2jTK zWu#{)CoYHEnm;7pHBc^bbA6fLhCNQ=-hv4AXta~-@wR)u=c7^y_xk)$ud^&}+d~GS z-n&+Eebxo$`!39v_)Q)k>OZ`S%ZuHa9}wjt3G{E3AJjTa5{&i>4QXD^ZKt*}zug-P zN&9ytz?>%JccXMo2n^4bSiF`&!ba zWm;%g8#`{dCRg*jBQcWhFLgqD++EC#zO*Q`XPzN9W}h^_*S2<&*yV3Rd(WQ4?K93U zzi+~B3DqMrKdz&zq#u_K?e8>@8*gryKcMki$$(GoLkB*;z)iSS5IRWKnLGH{m;51n zXGw;N+(L&fJH#D6ePI5GG0!9;`>hKVbVIqLLTo}udv4>7vF)5c*0e}6PJ4FfxQ~sw zqdY#-2qJoe42?M@hRYXB_Lq?F?nJS#~Tj6f&RHXv8uV{hx$&v`C^sw zFMcziz2Lo$APRe=9sh5zN0@R?0XhfDW%lx6J9@U~XKy(GY>yDi*mR=IL?@9psoc#s zeVj>|71J{Fg4UG9Q9q$&ri;)j6%|@9Y$mixQWv5_UkkBbWkNjcnvn25EhL=|3fUIv zLRrljbMJ&=PIRbGR>xXdS8TFT$ zUuyUHx;6-W|G#lRbWNKhz68)`7BWB^K?by-kpaxPzgSwy6T$y$?@Qon+S>nDX&$r< z&B+!?89Ih2;~`0=jydy2RHn8hnQBv1gl!&5?TF~2LxwWsm?|=y%20-E^UTIYME=h{ zyEG^Fdf$6LzyGWIy=$F)&a?Jf&w8F`J!?L+{T$M_8cZ4(g|LPiOF6^O#|WcmN6Ei` zzB1^K|5VVS`K-;^vGS_USVone{!rKu_R}EAVC%#0dp&>h9(K zqxUBGZzq0s4+W~hoeJe-;WwP`!KeF!H(r3{z?+T08_?HDaY%9Y$(G*#F(2^u$1-;f zG(UKoY!Q2jY`HFlY!#e9+WIo2$bEH_<)Jrs!4A>A5BLEuB4;mvoU5INymh% z(c8LzptsLhPRBO3#&)=##NySo>G(hY!1kU$i|vaOV+qVuS{h=3?GFpZ4v<~xM4wpt zpaiFnwDF{q^d8bl->=chZ&K;w=~uB6N$0SX==t=?O>vkkLKi#bABLUwoQIupn~I(7 z)`&i5-yciun24phrPFD-1@w8PzV!LGo#_kr1F?)l-dM&<8M;V$qKmgrVwctr#4erj zpf3BIM3>LqqOZ(ui(T0hjO2r2kbK7pI&-K#mKi=7Wwi-HSxchn>=E~{t1emCHHTN? z>(+VV8^%|}IhrzY&gcE&+-KXwx07d!?;K!cdD~XY?ygxZV;9eo-Scsm-JdX2_Fzyi z*~1t}jj+aQFE_#T zf}Lp0w>@3Q-HNU|q$yLcrzTy$od%=d_%mZr?>S>w>lS19{vu=aAVX@Ly^k?D6Ak^f z4BTwbalAp~Ufeu93U9bz6^>7%@J6F&;uifT;Eg*E#+$V0iCdc4;Z1d#;#R5y8LJOH zm}ZaKGS=6cFgEA(ndS%c=@zli=$7kl(yf9sXj|Xow8(ugZ|`)ze~0cP;_qwYL;n6Y zKIHGdeai{Y`A{L(#s5No;XD>4<#MReUo{))6@RJ~@7pcXA!WsxFF)?4x2zw>(1>cujl2!)*oRe*LN{x4eSf$hRwdQMi!AkxW zv&=lA!KqUc^ZhcSVa#^LIXC6+%j5G7_A(*d&-by9o>UeR5ZlT!ir zp{!4!tnVS756>-js*L8YcK?Le>)#&LZ~KMTZ~THbsCSz-taXVte4j!aJxHL9vl-gt z%xc>7_zBEx&pxa{WHe?TPGb!hEW+?l`WwPN`y`>*KynqTrxE3bPYz2ds}Py#f;kVkWbJRBh2 znXikmz=7cx*GJ-6z6&sI!%t!%U*+{d$Y*K)uk-;WNa6o^I05=V`uy4d4VO=kb^8Z- zt5Sxg72E5EH5qpL2|vMS@c{qc1N?iB6%eO|_U0|LH}k28!fSM7WC6AH{AwyHkfNgF z&mm^q1S)2EKDDj;6Kea6g;Z=~Q?$c%KZ;lVM#cZR741EL810K|gA$lAlr*G1+8;I# z9Uw(iqR$5EprkH!q|HbwN$)z9^gWGAev?EUPftZBl8&I1=;_qSO`DNy%Xf6je?B_x zISrk08-vbvt4E!)?}k!4?m%g7N2#>jSJZi>F4XzAt*8t4XQGTl<59-T{oF-r1b6ZF zespQQBf4~E1bNv<%3VHpiMle|5?$Fdo0AV(!^w9fP?D@KHQg-nq={=ue z()$yfr4I(#OCR>ImOg4@B7JP3Eq!9zLG)C+ndoVOvFO)hUW#5Gy(4-R ze_8Z;%Sq9jWl|A0FGlos${NwTi6^A*2k(>q=@>2j(3X~dY`jSNsh*ECzt%)){`(

8l+Qpa`dTe4wZ92Uo2<&D-87V* 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

|+%p-$de? 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
8ra#s(vk(*5IxT(sf=x3%s6B(52ZUD!N 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

~1-&v9LpMxGtD= ztU&?B7;;z7CL}lzgTU} zPf%aizBc_rUyA6GO@9lydXVZH64zr+H*5fJdE2lsijMfUI_+Zrp)6p4Xtjg3&V6_L z%53XNm`X%R7S80{)$PSt3z$dQs>tOEO27y zB#()3=~AvZ7q3JYxXYWi%1qm7(TCwjBIWO;57;X!G-6h7NN(;&dlv7t(mZ2T?hky% z_Ho18_`08$pe*Z3U+0doEwMStf-PvA>BFo{haBmc3F5YpW8;z#)8IR)4{{WP{m+Jp zeQvo<7)(aR3XyUT+!xxZAQqw(xam_HOd7#796$!_Nn6>fr%~^`QV$c~DgKR`Q2bf< z+vpE)C!fH1FVn7ECKSdqxe0=Ln2$#lA%Vz05;$i5UYNR73*-+bF>N{mmWN6o;#j|9 z6}T=KQCKks5~-w7oJX-CwnB$CINYe{1$#(^f15T^5gX@^&!nYMp+UFTxL;RZbyq?xFTCRiZ^0pOUW`o^e z3ZsStL9hZ0-x~Z7w=N$@>3^7>M0Kk-V%BvWU9eP76GKXUk7Mve3s5T#e{Qv6{f{6U zDgK5*!>9O%(YvEqm-UXi-(q&!fsU>B^sHLOTUaI>15`qB0jM5fl4a?3ZJ6U~LisC|xyC9~ zSI@kqdq;4OMG&YYjdh~Cy-2_!%@t5rFk#ul>Ek;OCF$7iHgz;#C}>Uy;rE{nh6S)$ zB$xSNkw%k9QX*Wbg!_g8w?>}h5lY8XGI5z3z7U$Xp_}%(T11`y6N&5BIhZRgb3TO3J<6< zg>FU-s6OLj0*1{*o_Nt+F-%0BS~Hp75&g=bZp~_bD???x$(KW8oyqw6!hk99nex$+ zcubb#_SmV@UGd4$*p-hS&n4ToGYQL_Gg0vjO5;s-+m|wgJ^YTAWMZ;*uDxOvnF8I! za-n(8-ky=3kv3DiD}hLsH;4nNVR3McW2P&{weX%k;PLg4+iU|K7Z19_J&UdC7bE@!=E;eC+irUNP zWa}ekxN5DV>*mctc5jCQrO9f29v#^gS!Cvrcy1(~&&3POF#CQm_KZiwkpq*d+O1|Y zb-QgUkn&__J)iHE-$R?cPjaoAxlb-iV{|{g1G2j2sDyMg%tj8Lp5*G_ZU~nXQ9HdG zyfG;7uEORu2~%0akhA%IBthg@f2qjc{qo@Do}uar*FPc#d_!h-szgKCXRGugEX0&o z3q{;>`u3e~`F)A?q`N=hHeluFkQnvg%gv^_OdlG%0fzPNNoyUh@97b9?{&F|d>_R> zWsIRziY^$KauZ|bhirI>#NV{-;Ih9MIZoT)9WaWjdjOE?_72&)7&);ZJzpe*GtcSd z60F~|oI9loWGfK%i>P(xaL?P_>=)Xl3at3RtIdYVKKbYdpJ|_I@+tBuXSmoI#~DZS z7pWg-ab4YJ($TmFXdgIWgy0f{;Q9A;fPmk{6F)x1QHmAVCEWhC^;b(;=DCWm4&)8I z1!T3o-85YvFMhy(nax^+Ft1Ps^eg*itOH(-XLu!M{4PklsC<{jXL3hl&O&_*(xIOr ze{Ff4(Jy_&jPgp6#-b0+8^}^y3}UIPGk{mR_!%a*`Z^i4Hk>mwa12tVY`NK1X$Q^*ibLn4w z3hsBPw1CO5|EV#Bs})OibanyV-UeM8g-5iEHRtO(C~#fA zjjh}Q;V>s%TOm;Gv3h&>)*7#0Csl7v5uKmy^xGuzd+Tm2WFD(ZUv6A7Rq#G9yHR)2 zZnD_)dQH*qbl2!EV57pU^=>8HM`8bhkEAv4sR8v>m|Vyg+`!6$N`31TtbdJ7k_@y8mL+(mQ-BKW zog~EpRuH~?Y;+;hNp!@tI0_tFRRi(Vb%E|;Nc) zY*h=l3THjgIRQlxmX^^Ub72Kdc6gEJ;@G-r yShMkPiu%2+(4%NlxtfOkwyUC-O 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