public interface UserManagement
| Modifier and Type | Interface and Description |
|---|---|
static class |
UserManagement.RegistrationType
Possible registration types.
|
| Modifier and Type | Field and Description |
|---|---|
static String |
ANONYMIZE_USER_PREFIX
Prefix for user aliases for anonymized users.
|
| Modifier and Type | Method and Description |
|---|---|
void |
acceptTermsOfUse(Long userId)
Accept the terms of use for the given user.
|
void |
anonymizeUser(Long userId,
Long[] blogIds,
boolean becomeManager)
Delete a user by anonymizing his profile and removing the content (notes, topics if possible)
he created.
|
User |
assignUserRole(Long userId,
UserRole role)
Assign the user role to the user
|
boolean |
changeAlias(Long userId,
String newAlias)
Method to change the users alias.
|
boolean |
changeEmailAddress(Long userId,
String newEmail,
boolean sendConfirmationLink)
Changes the email address of an user and validates this new address.
|
void |
changeUserStatusByManager(Long userId,
UserStatus newStatus)
Change the status of a user.
|
void |
confirmNewEmailAddress(String securityCode)
Confirms the new email address.
|
User |
confirmUser(String securitycode,
UserVO user)
Confirms a registered or invited user, sets user data and change status to active or
confirmed.
|
User |
createOrUpdateExternalUser(ExternalUserVO userVO)
Creates or updates a user with data retrieved from a external user repository (e.g.
|
User |
createUser(UserVO user,
boolean emailConfirmationRequired,
boolean managerConfirmationRequired)
Create a user based on the parameters.
|
Collection<User> |
findNotDeletedUsers(boolean excludeSystemUsers)
Returns a collection with all users that do not have one of the deleted statuses.
|
User |
findUser(UserIdentification userIdentification)
Find the User by the given identification, not loading the
ExternalUserAuthentication
s |
User |
findUser(UserIdentification userIdentification,
boolean loadExternalAuthentications)
Find the User by the given identification
|
User |
findUserByAlias(String alias)
Find the User by the given alias s
|
User |
findUserByEmail(String email)
Find a user by the email address
|
User |
findUserByEmailAlias(String emailOrAlias)
find user by email or alias
|
User |
findUserByExternalUserId(String externalUserId,
String systemId)
Find the user by the external system specification
|
User |
findUserByUserId(Long userId)
Deprecated.
Use
getUserById(Long, Converter) instead. |
User |
findUserByUserId(Long userId,
boolean loadExternalAuthentications)
Find a user by the its id.
|
List<User> |
findUsersByRole(UserRole userRole,
UserStatus status)
Returns a collection of users having a specific role and optionally a specific status.
|
String |
generateUniqueAlias(String externalUserName,
String emailAddress)
Create a valid, not yet used, user alias.
|
long |
getActiveUserCount() |
long |
getActiveUserCount(String systemId,
UserRole role)
Get the number of users with status ACTIVE.
|
Set<ExternalUserAuthentication> |
getExternalExternalUserAuthentications(long userId) |
UserRole[] |
getRolesOfUser(Long userId)
Returns the roles of a user.
|
<T> T |
getUserById(Long userId,
Converter<User,T> converter)
Return the details of a user.
|
boolean |
hasExternalAuthentication(long userId,
String externalSystemId) |
User |
inviteUserToBlog(Long blogId,
UserVO userData,
BlogRole role) |
User |
inviteUserToClient(UserVO user) |
void |
permanentlyDisableUser(Long userId,
Long[] blogIds,
boolean becomeManager)
Deletes a user by setting his status to PERMANENTLY_DISABLED but keeping all his data.
|
void |
registerActivationValidator(UserActivationValidator validator)
Register a validator that will be called before the status of a user is set to
ACTIVE . |
User |
registerUser(String email,
Locale locale,
UserManagement.RegistrationType type)
Method to register an user via email address.
|
User |
removeUserRole(Long userId,
UserRole role)
Remove a role from a user
|
void |
resetPermanentId(String systemId)
resets the external user ID for users that have an external authentication which has the
provided external system ID and a permanentId
|
void |
resetTermsOfUse()
Reset the terms of use for all users which have already accepted the terms of use.
|
void |
sendReminderMails() |
User |
unlockUser(String securityCode)
Unlocks the user for the given security code.
|
void |
unregisterActivationValidator(UserActivationValidator validator)
Unregister a previously registered validator.
|
User |
updateExternalUser(ExternalUserVO userVO)
Tries to update a user with data retrieved from an external resource (e.g.
|
void |
updateLanguage(Long userId,
String languageCode)
Sets the language of the given user to the given language.
|
void |
updateUserTags(Long userId,
Set<TagTO> tags)
Updates the tags of the given user.
|
static final String ANONYMIZE_USER_PREFIX
void acceptTermsOfUse(Long userId) throws AuthorizationException, UserNotFoundException, UserActivationValidationException
userId
- ID of the user whose ID should be acceptedAuthorizationException
- in case there is a current user which is not the internal system user and this
user does not have the provided IDUserNotFoundException
- in case the user with the given ID does not existUserActivationValidationException
- in case the user has status TERMS_NOT_ACCEPTED
but cannot be
activated after accepting the termsvoid anonymizeUser(Long userId, Long[] blogIds, boolean becomeManager) throws AuthorizationException, NoClientManagerLeftException, UserDeletionDisabledException, NoBlogManagerLeftException
userId
- ID of the user to removeblogIds
- an array of IDs of topics in which the user to remove is the only manager. If the
current user is not a client manager this parameter is ignored.becomeManager
- whether the current user, which has to be a client manager, should become manager
of the topics identified by the IDs in blogIds array. If false the topics will be
deleted.AuthorizationException
- in case the current user is not a client manager or the user to removeNoClientManagerLeftException
- in case the user to delete is the last active client managerUserDeletionDisabledException
- in case the anonymization of users is disabled and the current user is not a
client managerNoBlogManagerLeftException
- in case there are topics which are managed by the user to remove and have
additional users with read access but no other managers. If the current user is
client manager this exception will only be thrown if the IDs of the topics are
not in the blogIds array. The exception will contain the IDs of the topics that
would become manager-less.User assignUserRole(Long userId, UserRole role) throws AuthorizationException, InvalidOperationException
userId
- the id of the userrole
- the role to assignAuthorizationException
- in case the current user is not a client manager and thus not allowedInvalidOperationException
- in case the user is already a system or a crawl user or the role to assign is the
system or crawl user roleboolean changeAlias(Long userId, String newAlias) throws AliasAlreadyExistsException, AliasInvalidException
userId
- The users id.newAlias
- The new alias.AliasAlreadyExistsException
- Thrown, when there is already a user with this alias.AliasInvalidException
- Thrown, when the alias is syntactically invalid.boolean changeEmailAddress(Long userId, String newEmail, boolean sendConfirmationLink) throws EmailValidationException, EmailAlreadyExistsException
userId
- Id of the user, which email should be changed.newEmail
- The new email address.sendConfirmationLink
- If true an confirmation link will be send to the user to confirm the new address.
False is only possible, if the current use an administrator.EmailValidationException
EmailAlreadyExistsException
void changeUserStatusByManager(Long userId, UserStatus newStatus) throws AuthorizationException, UserNotFoundException, InvalidUserStatusTransitionException, NoClientManagerLeftException, UserActivationValidationException
Note: Attempts to set the user status to DELETED
or
PERMANENTLY_DISABLED
will result in an InvalidUserStatusTransitionException.
Such a status change can only be achieved by invoking the appropriate service methods
anonymizeUser(Long, Long[], boolean)
or
permanentlyDisableUser(Long, Long[], boolean)
.
userId
- the ID of the user whose status should be changednewStatus
- the new status to setAuthorizationException
- in case the current user is not a client managerUserNotFoundException
- in case there is no user with the provided IDInvalidUserStatusTransitionException
- in case new status cannot be set. This will for example happen if the it is one
of DELETED
or PERMANENTLY_DISABLED
NoClientManagerLeftException
- in case the user to change is the only client manager with status
ACTIVE
and the new status is not ACTIVE
UserActivationValidationException
- in case the user cannot be activatedvoid confirmNewEmailAddress(String securityCode) throws SecurityCodeNotFoundException, EmailAlreadyExistsException
securityCode
- The security code.SecurityCodeNotFoundException
EmailAlreadyExistsException
User confirmUser(String securitycode, UserVO user) throws SecurityCodeNotFoundException, EmailValidationException, EmailAlreadyExistsException, AliasAlreadyExistsException, PasswordValidationException, InvalidUserStatusTransitionException, ExternalUserPasswordChangeNotAllowedException
Confirms a registered or invited user, sets user data and change status to active or confirmed.
User createOrUpdateExternalUser(ExternalUserVO userVO) throws AliasAlreadyExistsException, EmailValidationException, EmailAlreadyExistsException, UserActivationValidationException, InvalidUserStatusTransitionException, NoClientManagerLeftException, PermanentIdMissmatchException
userVO
- VO with details of the user to createAliasAlreadyExistsException
- in case the alias is already assigned to another userEmailAlreadyExistsException
- in case the email address is already assigned to another userEmailValidationException
- in case the email address is not validInvalidUserStatusTransitionException
- in case the user exists and the old status of that user cannot be updated with
the new statusNoClientManagerLeftException
- in case the user exists and is the only active client manager and the new status
is not ACTIVEUserActivationValidationException
- in case the user cannot be updatedPermanentIdMissmatchException
User createUser(UserVO user, boolean emailConfirmationRequired, boolean managerConfirmationRequired) throws EmailAlreadyExistsException, EmailValidationException, AliasAlreadyExistsException, PasswordValidationException
user
- the VO describing the user to createemailConfirmationRequired
- whether the user should confirm the provided email address. If true a confirmation
email will be sent to the email address.managerConfirmationRequired
- whether a client manager has to confirm and activate the user. If true the
managers will be performed by email about the new user.EmailAlreadyExistsException
- in case the provided email address already existsEmailValidationException
- in case the provided email address is not validAliasAlreadyExistsException
- in case the provided user alias already existsPasswordValidationException
- in case the provided password does not meet the minimum security requirementsCollection<User> findNotDeletedUsers(boolean excludeSystemUsers)
excludeSystemUsers
- whether to exclude the users who have the system user roleUser findUser(UserIdentification userIdentification)
ExternalUserAuthentication
suserIdentification
- the identificationUser findUser(UserIdentification userIdentification, boolean loadExternalAuthentications)
userIdentification
- the identificationloadExternalAuthentications
- true if the external auths of the user should be loaded as wellUser findUserByAlias(String alias)
alias
- the aliasUser findUserByEmail(String email)
email
- address to search for.User findUserByEmailAlias(String emailOrAlias)
emailOrAlias
- May be a user alias or email addressUser findUserByExternalUserId(String externalUserId, String systemId)
Find the user by the external system specification
@Deprecated User findUserByUserId(Long userId)
getUserById(Long, Converter)
instead.findUserByUserId(Long, boolean)
if you need this information or better
getUserById(Long, Converter)
.userId
- Id of the user to find.User findUserByUserId(Long userId, boolean loadExternalAuthentications)
getUserById(Long, Converter)
instead.userId
- Id of the user to find.loadExternalAuthentications
- true to load the external authentications of the userList<User> findUsersByRole(UserRole userRole, UserStatus status)
String generateUniqueAlias(String externalUserName, String emailAddress)
externalUserName
- the external user name to try first. Can be null.emailAddress
- the email address to extract the alias fromlong getActiveUserCount()
long getActiveUserCount(String systemId, UserRole role)
systemId
- ID of an external system to only count the users which originate from this
external system. If null, all user are counted.role
- the role of a user. If not null only the users with that role will be counted
otherwise all roles (including system users) are considered.@Transactional(readOnly=true) Set<ExternalUserAuthentication> getExternalExternalUserAuthentications(long userId)
userId
- The users id.UserRole[] getRolesOfUser(Long userId)
userId
- If of the user to get the roles for.<T> T getUserById(Long userId, Converter<User,T> converter)
T
- the type of the resulting objectuserId
- the ID of the userconverter
- the converter to use@Transactional(readOnly=true) boolean hasExternalAuthentication(long userId, String externalSystemId)
userId
- The users id.externalSystemId
- ID of an external systemUser inviteUserToBlog(Long blogId, UserVO userData, BlogRole role) throws AliasAlreadyExistsException, EmailValidationException, EmailAlreadyExistsException, PermanentIdMissmatchException, BlogAccessException, AuthorizationException
BlogAccessException
- in case the current user is not allowed to invite a userAuthorizationException
- in case there is no current userAliasAlreadyExistsException
EmailValidationException
EmailAlreadyExistsException
PermanentIdMissmatchException
User inviteUserToClient(UserVO user) throws EmailValidationException, EmailAlreadyExistsException, AliasAlreadyExistsException, PermanentIdMissmatchException, AuthorizationException
void permanentlyDisableUser(Long userId, Long[] blogIds, boolean becomeManager) throws AuthorizationException, NoClientManagerLeftException, UserDeletionDisabledException, InvalidUserStatusTransitionException, NoBlogManagerLeftException
Deletes a user by setting his status to PERMANENTLY_DISABLED but keeping all his data.
void registerActivationValidator(UserActivationValidator validator)
ACTIVE
. The validators are executed in the order defined by the
Orderable
implementation. If the first validator throws an exception the validation
will be stopped.validator
- the validator to addUser registerUser(String email, Locale locale, UserManagement.RegistrationType type) throws EmailValidationException, EmailAlreadyExistsException
email
- The users email address.locale
- The locale to use for the confirmation email.type
- The type of the registration.EmailValidationException
- Thrown, when the email address is not syntactically valid.EmailAlreadyExistsException
- Thrown, when the email/user address already exists.User removeUserRole(Long userId, UserRole role) throws AuthorizationException, InvalidOperationException, NoClientManagerLeftException
InvalidOperationException
- in case the user is a system or crawl user and the system or crawl user role
should be removedAuthorizationException
- in case the current user is not client managerNoClientManagerLeftException
- in case the client manager role should be removed from the last user with that
rolevoid resetPermanentId(String systemId) throws AuthorizationException
resets the external user ID for users that have an external authentication which has the provided external system ID and a permanentId
AuthorizationException
void resetTermsOfUse() throws AuthorizationException
AuthorizationException
- in case the current user is not client manager or internal system uservoid sendReminderMails()
User unlockUser(String securityCode) throws SecurityCodeNotFoundException
securityCode
- The code, which user should be unlocked.SecurityCodeNotFoundException
- Thrown, when the code doesn't exist.void unregisterActivationValidator(UserActivationValidator validator)
validator
- the validator to removeUser updateExternalUser(ExternalUserVO userVO) throws AliasAlreadyExistsException, EmailAlreadyExistsException, EmailValidationException, InvalidUserStatusTransitionException, NoClientManagerLeftException, PermanentIdMissmatchException, UserActivationValidationException
userVO
- a VO with data to update the user withAliasAlreadyExistsException
- in case the new alias is already assigned to another userEmailAlreadyExistsException
- in case the new email address is already assigned to another userEmailValidationException
- in case the new email address is not validInvalidUserStatusTransitionException
- in case the old status of the user cannot be updated with the new statusNoClientManagerLeftException
- in case the user is the only active client manager and the new status is not
ACTIVEPermanentIdMissmatchException
UserActivationValidationException
- in case the user cannot be activatedvoid updateLanguage(Long userId, String languageCode)
userId
- The user to update.languageCode
- The language to set.Copyright © 2019 Communote team. All rights reserved.


Toll in Philippine earthquakes climbs to 21
MANILA: The death toll in two powerful quakes that struck the southern Philippines in the past week has risen to 21, authorities said Sunday (Nov 3), as survivors struggled to access food and water.
The 6.6-magnitude and 6.5-magnitude quakes hit the island of Mindanao two days apart, destroying buildings and displacing tens of thousands of residents.
Some villagers staying under tents near a highway were begging for help from passing motorists, carrying placards asking for food and water, TV footage showed.
Rescuers had found more bodies, many crushed by falling debris and landslides caused by the violent shaking, the national disaster council said.
The quakes also left 432 residents injured with two people still missing, it added.
Thursday's big quake was the third since mid-October in the Mindanao region, which makes up a third of the Philippines.
Temporary shelters have been set up to house more than 20,000 displaced individuals - many already there since the first quake struck on Oct 16, leaving seven people dead.
On Sunday, rescuers continued their evacuation of families whose houses were endangered by landslides, while several residents trapped in mountainous villages had been airlifted to safety.
The government said aid has reached affected communities and instructed people sleeping near the road to go to evacuation centres for help.
The Philippines suffers regular tremors as part of the Pacific "Ring of Fire", an arc of intense seismic activity that stretches from Japan through Southeast Asia and across the Pacific basin.


|
Maps Click a location to see a collection of maps for that area. Items and switches are indicated by numbers, and capital letters connect one map to another. Walls or obstacles colored yellow (or another strange color) indicates secret passages that can be walked through. Some locations are simple enough to not require maps, so they are not provided here. Floating Continent
Main World
|


Calculate the optimal sample allocation that minimizes the variance of treatment effect in multilevel randomized trials under fixed budget and cost structure, perform power analyses with and without accommodating costs and budget. The references for proposed methods are: (1) Shen, Z. (in progress). Using optimal sample allocation to improve statistical precision and design efficiency for multilevel randomized trials. (unpublished doctoral dissertation). University of Cincinnati, Cincinnati, OH. (2) Shen, Z., & Kelcey, B. (revise & resubmit). Optimal sample allocation accounts for the full variation of sampling costs in cluster-randomized trials. Journal of Educational and Behavioral Statistics. (3) Shen, Z., & Kelcey, B. (2018, April). Optimal design of cluster randomized trials under condition- and unit-specific cost structures. Roundtable discussion presented at American Educational Research Association (AERA) annual conference. (4) Champely., S. (2018). pwr: Basic functions for power analysis (Version 1.2-2) [Software]. Available from <https://CRAN.R-project.org/package=pwr>.
| Version: | 1.0.0 |
| Depends: | R (≥ 3.3.0), stats (≥ 3.0.0), graphics (≥ 3.0.0), base (≥ 3.0.0) |
| Suggests: | knitr, rmarkdown |
| Published: | 2018-10-03 |
| Author: | Zuchao Shen [aut, cre], Ben Kelcey [aut] |
| Maintainer: | Zuchao Shen <shenzo at mail.uc.edu> |
| License: | GPL-3 |
| NeedsCompilation: | no |
| In views: | ExperimentalDesign |
| CRAN checks: | odr results |
| Reference manual: | odr.pdf |
| Vignettes: |
Package 'odr' |
| Package source: | odr_1.0.0.tar.gz |
| Windows binaries: | r-devel: odr_1.0.0.zip, r-release: odr_1.0.0.zip, r-oldrel: odr_1.0.0.zip |
| OS X binaries: | r-release: odr_1.0.0.tgz, r-oldrel: odr_1.0.0.tgz |
| Old sources: | odr archive |
Please use the canonical form https://CRAN.R-project.org/package=odr to link to this page.


A FilteredRowSet
object lets you cut down the number of
rows that are visible in a RowSet
object so that you can
work with only the data that is relevant to what you are
doing.  In other words, the
FilteredRowSet
object makes visible only the rows of data
that fit within the limits you set. A JdbcRowSet
object,
which always has a connection to its data source, can do
this filtering with a query to the data source that selects
only the columns and rows you want to see. The query's
WHERE
clause defines the filtering criteria. A
FilteredRowSet
object provides a way for a disconnected
RowSet
object to do this filtering without having to
execute a query on the data source, thus avoiding having to
get a connection to the data source and sending queries to
it.
For example, assume that the Coffee Break chain of coffee
houses has grown to hundreds of stores throughout the United States of America, and all of them are listed in a table called
COFFEE_HOUSES
. The owner wants to measure the success of
only the stores in California with a coffee house comparison application that does not require a persistent connection to the database system. This
comparison will look at the profitability of selling
merchandise versus selling coffee drinks plus various other
measures of success, and it will rank California stores by
coffee drink sales, merchandise sales, and total sales.
Because the table COFFEE_HOUSES
has hundreds of rows, these
comparisons will be faster and easier if the amount of data
being searched is cut down to only those rows where the
value in the column STORE_ID
indicates California.
This is exactly the kind of problem that a FilteredRowSet
object addresses by providing the following capabilities:
The following topics are covered:
To set the criteria for which rows in a FilteredRowSet
object will be visible, you define a class that implements
the Predicate
interface. An object created with this class is initialized with the following:
Note that the range of values is inclusive, meaning that a value at the boundary is included in the range. For example, if the range has a high of 100 and a low of 50, a value of 50 is considered to be within the range. A value of 49 is not. Likewise, 100 is within the range, but 101 is not.
In line with the scenario where the owner wants to compare
California stores, an implementation of
the Predicate
interface that filters for Coffee Break
coffee houses located in California must be written. There is no one right
way to do this, which means there is a lot of latitude
in how the implementation is written. For example, you could name the class and its members whatever you want and
implement a constructor and the three evaluate methods
in any way that accomplishes the desired results.
The table listing all of the coffee houses, named
COFFEE_HOUSES
, has hundreds of rows. To make things more
manageable, this example uses a table with far fewer rows, which is enough to demonstrate how filtering is done.
A value in the column STORE_ID
is an int
value that indicates,
among other things, the state in which the coffee house is
located. A value beginning with 10, for example, means that
the state is California. STORE_ID
values beginning with 32
indicate Oregon, and those beginning with 33 indicate the
state of Washington.
The following class StateFilter
implements the Predicate
interface:
public class StateFilter implements Predicate { private int lo; private int hi; private String colName = null; private int colNumber = -1; public StateFilter(int lo, int hi, int colNumber) { this.lo = lo; this.hi = hi; this.colNumber = colNumber; } public StateFilter(int lo, int hi, String colName) { this.lo = lo; this.hi = hi; this.colName = colName; } public boolean evaluate(Object value, String columnName) { boolean evaluation = true; if (columnName.equalsIgnoreCase(this.colName)) { int columnValue = ((Integer)value).intValue(); if ((columnValue >= this.lo) && (columnValue <= this.hi)) { evaluation = true; } else { evaluation = false; } } return evaluation; } public boolean evaluate(Object value, int columnNumber) { boolean evaluation = true; if (this.colNumber == columnNumber) { int columnValue = ((Integer)value).intValue(); if ((columnValue >= this.lo) && (columnValue <= this.hi)) { evaluation = true; } else { evaluation = false; } } return evaluation; } public boolean evaluate(RowSet rs) { CachedRowSet frs = (CachedRowSet)rs; boolean evaluation = false; try { int columnValue = -1; if (this.colNumber > 0) { columnValue = frs.getInt(this.colNumber); } else if (this.colName != null) { columnValue = frs.getInt(this.colName); } else { return false; } if ((columnValue >= this.lo) && (columnValue <= this.hi)) { evaluation = true; } } catch (SQLException e) { JDBCTutorialUtilities.printSQLException(e); return false; } catch (NullPointerException npe) { System.err.println("NullPointerException caught"); return false; } return evaluation; } }
This is a very simple implementation that checks the value
in the column specified by either colName
or colNumber
to see if it is
in the range of lo
to hi
, inclusive. The following line of code, from FilteredRowSetSample
, creates a filter that allows only the rows where the STORE_ID
column value indicates a value between 10000 and 10999, which indicates a California location:
StateFilter myStateFilter = new StateFilter(10000, 10999, 1);
Note that the StateFilter
class just defined applies to one
column. It is possible to have it apply to two or more
columns by making each of the parameters arrays instead of
single values. For example, the constructor for a Filter
object could look like the following:
public Filter2(Object [] lo, Object [] hi, Object [] colNumber) { this.lo = lo; this.hi = hi; this.colNumber = colNumber; }
colNumber
object gives the first
column in which the value will be checked against the first
element in lo
and the first element in hi
.
The value in the second column indicated by
colNumber
will be checked against the second
elements in lo
and hi
, and so on. Therefore,
the number of elements in the three arrays should be the
same. The following code is what an implementation of the method
evaluate(RowSet rs)
might look like for a Filter2
object,
in which the parameters are arrays:
public boolean evaluate(RowSet rs) { CachedRowSet crs = (CachedRowSet)rs; boolean bool1; boolean bool2; for (int i = 0; i < colNumber.length; i++) { if ((rs.getObject(colNumber[i] >= lo [i]) && (rs.getObject(colNumber[i] <= hi[i]) { bool1 = true; } else { bool2 = true; } if (bool2) { return false; } else { return true; } } }
The advantage of using a Filter2
implementation is that you
can use parameters of any Object
type and can check one
column or multiple columns without having to write another
implementation. However, you must pass an Object
type,
which means that you must convert a primitive type to its
Object
type. For example, if you use an int
value for lo
and hi
, you must convert the int
value to an Integer
object before passing it to the constructor. String
objects
are already Object
types, so you do not have to convert
them.
The reference implementation for the FilteredRowSet
interface, FilteredRowSetImpl
, includes a default
constructor, which is used in the following line of code to
create the empty FilteredRowSet
object frs:
.
FilteredRowSet frs = new FilteredRowSetImpl();
The implementation extends the BaseRowSet
abstract class,
so the frs
object has the default properties defined in
BaseRowSet
. This means that frs
is scrollable,
updatable, does not show deleted rows, has escape
processing turned on, and so on. Also, because the
FilteredRowSet
interface is a subinterface of CachedRowSet
,
Joinable
, and WebRowSet
, the frs
object has the capabilities of
each. It can operate as a disconnected RowSet
object, can
be part of a JoinRowSet
object, and can read and write
itself in XML format.
Note: Alternatively, you can use the constructor from the WebRowSet
implementation of your JDBC driver. However, implementations of the RowSet
interface will differ from the reference implementation. These implementations will have different names and constructors. For example, the Oracle JDBC driver's implementation of the WebRowSet
interface is named oracle.jdbc.rowset.OracleWebRowSet
.
You can use an instance of RowSetFactory
, which is created from the class RowSetProvider
, to create a FilteredRowSet
object. See Using the RowSetFactory Interface in Using JdbcRowSet Objects for more information.
Like other disconnected RowSet
objects, the frs
object must
populate itself with data from a tabular data source, which
is a relational database in the reference implementation.
The following code fragment from FilteredRowSetSample
sets the properties necessary
to connect to a database to execute its command. Note that
this code uses the DriverManager
class to make a
connection, which is done for convenience. Usually, it is
better to use a DataSource
object that has been registered
with a naming service that implements the Java Naming and
Directory Interface (JNDI):
frs.setCommand("SELECT * FROM COFFEE_HOUSES"); frs.setUsername(settings.userName); frs.setPassword(settings.password); frs.setUrl(settings.urlString);
The following line of code populates the frs
objectwith the
data stored in the COFFEE_HOUSE
table:
frs.execute();
The method execute
does all kinds of things in the background by calling on the RowSetReader
object for
frs
, which creates a connection, executes the
command for frs
, populates frs
with the data
from the ResultSet
object that is produced, and closes the
connection. Note that if the table COFFEE_HOUSES
had more
rows than the frs
object could hold in memory at one time, the
CachedRowSet
paging methods would have been used.
In the scenario, the Coffee Break owner would have done the
preceding tasks in the office and then imported or downloaded the information stored in
the frs
object to the coffee house comparison application. From now on, the frs
object will
operate independently without the benefit of a connection
to the data source.
Now that the FilteredRowSet
object frs
contains the
list of Coffee Break establishments, you can set selection
criteria for narrowing down the number of rows in
the frs
object that are visible.
The following line of code uses the StateFilter
class defined previously to create the object myStateFilter
, which checks the column STORE_ID
to determine which stores are in California (a store is in California if its ID number is between 10000 and 10999, inclusive):
StateFilter myStateFilter = new StateFilter(10000, 10999, 1);
The following line sets myStateFilter
as the filter for
frs
.
frs.setFilter(myStateFilter);
To do the actual filtering, you call the method next
, which
in the reference implementation calls the appropriate
version of the Predicate.evaluate
method that you have implemented previously.
If the return value is true
, the row will be visible; if
the return value is false
, the row will not be visible.
You set multiple filters serially. The first time you call
the method setFilter
and pass it a Predicate
object, you
have applied the filtering criteria in that filter. After
calling the method next
on each row, which makes visible
only those rows that satisfy the filter, you can call
setFilter
again, passing it a different Predicate
object.
Even though only one filter is set at a time, the effect is
that both filters apply cumulatively.
For example, the owner has retrieved a list of the Coffee
Break stores in California by setting stateFilter
as the
Predicate
object for frs
. Now the owner wants to compare
the stores in two California cities, San Francisco (SF in
the table COFFEE_HOUSES
) and Los Angeles (LA in the table).
The first thing to do is to write a Predicate
implementation that filters for stores in either SF or LA:
public class CityFilter implements Predicate { private String[] cities; private String colName = null; private int colNumber = -1; public CityFilter(String[] citiesArg, String colNameArg) { this.cities = citiesArg; this.colNumber = -1; this.colName = colNameArg; } public CityFilter(String[] citiesArg, int colNumberArg) { this.cities = citiesArg; this.colNumber = colNumberArg; this.colName = null; } public boolean evaluate(Object valueArg, String colNameArg) { if (colNameArg.equalsIgnoreCase(this.colName)) { for (int i = 0; i < this.cities.length; i++) { if (this.cities[i].equalsIgnoreCase((String)valueArg)) { return true; } } } return false; } public boolean evaluate(Object valueArg, int colNumberArg) { if (colNumberArg == this.colNumber) { for (int i = 0; i < this.cities.length; i++) { if (this.cities[i].equalsIgnoreCase((String)valueArg)) { return true; } } } return false; } public boolean evaluate(RowSet rs) { if (rs == null) return false; try { for (int i = 0; i < this.cities.length; i++) { String cityName = null; if (this.colNumber > 0) { cityName = (String)rs.getObject(this.colNumber); } else if (this.colName != null) { cityName = (String)rs.getObject(this.colName); } else { return false; } if (cityName.equalsIgnoreCase(cities[i])) { return true; } } } catch (SQLException e) { return false; } return false; } }
The following code fragment from FilteredRowSetSample
sets the new filter and
iterates through the rows in frs
, printing out the
rows where the CITY
column contains either SF or LA. Note
that frs
currently contains only rows where the
store is in California, so the criteria of the Predicate
object state
are still in effect when the filter is
changed to another Predicate
object. The code that follows
sets the filter to the CityFilter
object city
. The
CityFilter
implementation uses arrays as parameters to the
constructors to illustrate how that can be done:
public void testFilteredRowSet() { FilteredRowSet frs = null; StateFilter myStateFilter = new StateFilter(10000, 10999, 1); String[] cityArray = { "SF", "LA" }; CityFilter myCityFilter = new CityFilter(cityArray, 2); try { frs = new FilteredRowSetImpl(); frs.setCommand("SELECT * FROM COFFEE_HOUSES"); frs.setUsername(settings.userName); frs.setPassword(settings.password); frs.setUrl(settings.urlString); frs.execute(); System.out.println("\nBefore filter:"); FilteredRowSetSample.viewTable(this.con); System.out.println("\nSetting state filter:"); frs.beforeFirst(); frs.setFilter(myStateFilter); this.viewFilteredRowSet(frs); System.out.println("\nSetting city filter:"); frs.beforeFirst(); frs.setFilter(myCityFilter); this.viewFilteredRowSet(frs); } catch (SQLException e) { JDBCTutorialUtilities.printSQLException(e); } }
The output should contain a row for each store that is in
San Francisco, California or Los Angeles, California. If
there were a row in which the CITY
column contained LA and
the STORE_ID
column contained 40003, it would not be
included in the list because it had already been filtered
out when the filter was set to state
. (40003 is not
in the range of 10000 to 10999.)
You can make a change to a FilteredRowSet
object but only
if that change does not violate any of the filtering
criteria currently in effect. For example, you can insert a
new row or change one or more values in an existing row if
the new value or values are within the filtering criteria.
Assume that two new Coffee Break coffee houses have just opened and the owner wants to add them to the list of all coffee houses. If a row to be inserted does not meet the cumulative filtering criteria in effect, it will be blocked from being added.
The current state of the frs
object is that the StateFilter
object
was set and then the CityFilter
object was set. As a result, frs
currently
makes visible only those rows that satisfy the criteria for
both filters. And, equally important, you cannot add a row
to the frs
object unless it satisfies the criteria for both
filters. The following code fragment attempts to
insert two new rows into the frs
object, one row in which the
values in the STORE_ID
and CITY
columns both meet the
criteria, and one row in which the value in STORE_ID
does
not pass the filter but the value in the CITY
column does:
frs.moveToInsertRow(); frs.updateInt("STORE_ID", 10101); frs.updateString("CITY", "SF"); frs.updateLong("COF_SALES", 0); frs.updateLong("MERCH_SALES", 0); frs.updateLong("TOTAL_SALES", 0); frs.insertRow(); frs.updateInt("STORE_ID", 33101); frs.updateString("CITY", "SF"); frs.updateLong("COF_SALES", 0); frs.updateLong("MERCH_SALES", 0); frs.updateLong("TOTAL_SALES", 0); frs.insertRow(); frs.moveToCurrentRow();
If you were to iterate through the frs
object using the method
next
, you would find a row for the new coffee house in San
Francisco, California, but not for the store in San Francisco, Washington.
The owner can add the store in Washington by nullifying the
filter. With no filter set, all rows in the frs
object are once
more visible, and a store in any location can be added to
the list of stores. The following line of code unsets the
current filter, effectively nullifying both of the
Predicate
implementations previously set on the frs
object.
frs.setFilter(null);
If the owner decides to close down or sell one of the
Coffee Break coffee houses, the owner will want to delete it from
the COFFEE_HOUSES
table. The owner can delete the row for the
underperforming coffee house as long as the row is visible.
For example, given that the method setFilter
has just been called with
the argument null, there is no filter set on the frs
object.
This means that all rows are visible and can therefore be
deleted. However, after the StateFilter
object myStateFilter
was set,
which filtered out any state other than California, only stores located in California could be deleted.
When the CityFilter
object myCityFilter
was set for
the frs
object, only coffee houses in San Francisco, California
or Los Angeles, California could be deleted because they
were in the only rows visible.


AlgorithmParameterGenerator
AlgorithmsAlgorithmParameters
AlgorithmsCertificateFactory
TypesCertPathBuilder
AlgorithmsCertPathValidator
AlgorithmsCertStore
TypesCipher
(Encryption)
AlgorithmsConfiguration
TypesKeyAgreement
AlgorithmsKeyFactory
AlgorithmsKeyGenerator
AlgorithmsKeyManagerFactory
AlgorithmsKeyPairGenerator
AlgorithmsKeyStore
TypesMac
AlgorithmsMessageDigest
AlgorithmsPolicy
TypesSaslClient
MechanismsSaslServer
MechanismsSecretKeyFactory
AlgorithmsSecureRandom
Number
Generation (RNG) AlgorithmsSignature
AlgorithmsSSLContext
AlgorithmsTrustManagerFactory
AlgorithmsXMLSignatureFactory
/KeyInfoFactory
/TransformService)
MechanismsTransformService
) AlgorithmsNote: The Oracle Providers Documentation contains specific provider and algorithm information.
The Java SE Security API requires and uses a set of standard names for algorithms, certificate and keystore types.
Note that an SE implementation may support additional algorithms that are not defined in this specification. As a best practice, if an algorithm is defined in a subsequent version of this specification and an implementation of an earlier specification supports that algorithm, the implementation should use the standard name of the algorithm that is defined in the subsequent specification. Each SE implementation should also document the algorithms that it supports or adds support for in subsequent update releases. The algorithms may be documented in release notes or in a separate document such as the JDK Security Providers document.
In some cases naming conventions are given for forming names
that are not explicitly listed, to facilitate name consistency
across provider implementations. Items in angle brackets (such as
<digest>
and <encryption>
)
are placeholders to be replaced by a specific message digest,
encryption algorithm, or other name.
Note: Standard names are not case-sensitive.
This document includes corresponding lists of standard names relevant to the following security subareas:
AlgorithmParameterGenerator
AlgorithmsThe algorithm names in this section can be specified when
generating an instance of
AlgorithmParameterGenerator
.
| Algorithm Name | Description |
|---|---|
| DiffieHellman | Parameters for use with the Diffie-Hellman algorithm. |
| DSA | Parameters for use with the Digital Signature Algorithm. |
AlgorithmParameters
AlgorithmsThe algorithm names in this section can be specified when
generating an instance of AlgorithmParameters
.
| Algorithm Name | Description |
|---|---|
| AES | Parameters for use with the AES algorithm. |
| Blowfish | Parameters for use with the Blowfish algorithm. |
| DES | Parameters for use with the DES algorithm. |
| DESede | Parameters for use with the DESede algorithm. |
| DiffieHellman | Parameters for use with the DiffieHellman algorithm. |
| DSA | Parameters for use with the Digital Signature Algorithm. |
| OAEP | Parameters for use with the OAEP algorithm. |
| PBEWith<digest>And<encryption> | Parameters for use with the PBEWith<digest>And<encryption> algorithm. Examples: PBEWithMD5AndDES, and PBEWithHmacSHA256AndAES_128. |
| PBE | Parameters for use with the PBE algorithm. This name should not be used, in preference to the more specific PBE-algorithm names previously listed. |
| RC2 | Parameters for use with the RC2 algorithm. |
CertificateFactory
TypesThe type in this section can be specified when generating an
instance of CertificateFactory
.
| Type | Description |
|---|---|
| X.509 | The certificate type defined in X.509, also available via RFC 3280 |
CertPathBuilder
AlgorithmsThe algorithm in this section can be specified when generating
an instance of CertPathBuilder
.
| Algorithm Name | Description |
|---|---|
| PKIX | The PKIX certification path validation algorithm as defined in
the ValidationAlgorithm service attribute.
The output of CertPathBuilder instances implementing
this algorithm is a certification path validated against the PKIX
validation algorithm. |
The following encodings may be passed to the
getEncoded
method of CertPath
or the
generateCertPath(InputStream inStream, String
encoding)
method of CertificateFactory
.
| Encoding | Description |
|---|---|
| PKCS7 | A PKCS#7 SignedData object, with the only significant field
being certificates. In particular, the signature and the contents
are ignored. If no certificates are present, a zero-length
CertPath is assumed. Warning: PKCS#7 does not maintain
the order of certificates in a certification path. This means that
if a CertPath is converted to PKCS#7 encoded bytes and
then converted back, the order of the certificates may change,
potentially rendering the CertPath invalid. Users
should be aware of this behavior. See PKCS #7: Cryptographic Message Syntax for
details on PKCS7. |
| PkiPath | an ASN.1 DER encoded sequence of certificates, defined as
follows:
PkiPath ::= SEQUENCE OF CertificateWithin the sequence, the order of certificates is such that the subject of the first certificate is the issuer of the second certificate, and so on. Each certificate in PkiPath
shall be unique. No certificate may appear more than once in a
value of Certificate in PkiPath . The
PkiPath format is defined in defect report 279 against
X.509 (2000) and is incorporated into Technical Corrigendum 1 (DTC
2) for the ITU-T Recommendation X.509 (2000). See the ITU web site for
details. |
CertPathValidator
AlgorithmsThe algorithm in this section can be specified when generating
an instance of CertPathValidator
.
| Algorithm Name | Description |
|---|---|
| PKIX | The PKIX certification path validation algorithm as defined in the ValidationAlgorithm service attribute. |
CertStore
TypesThe type in this section can be specified when generating an
instance of CertStore
.
| Type | Description |
|---|---|
| Collection | A CertStore implementation that retrieves
certificates and CRLs from a Collection . This type of
CertStore is particularly useful in applications where
certificates or CRLs are received in a bag or some sort of
attachment, such as with a signed email message or in an SSL
negotiation. |
| LDAP | A CertStore implementation that fetches
certificates and CRLs from an LDAP directory using the schema
defined in the LDAPSchema service
attribute. |
Cipher
(Encryption) AlgorithmsThe following names can be specified as the algorithm
component in a transformation when requesting
an instance of Cipher
.
| Algorithm Name | Description |
|---|---|
| AES |
Advanced Encryption Standard as specified by NIST in FIPS 197. Also known as the Rijndael algorithm by Joan Daemen and Vincent Rijmen, AES is a 128-bit block cipher supporting keys of 128, 192, and 256 bits. To use the AES cipher with only one valid key size, use the format AES_<n>, where <n> can be 128, 192, or 256. |
| AESWrap |
The AES key wrapping algorithm as described in RFC 3394. To use the AESWrap cipher with only one valid key size, use the format AESWrap_<n>, where <n> can be 128, 192, or 256. |
| ARCFOUR | A stream cipher believed to be fully interoperable with the RC4 cipher developed by Ron Rivest. For more information, see K. Kaukonen and R. Thayer, "A Stream Cipher Encryption Algorithm 'Arcfour'", Internet Draft (expired), draft-kaukonen-cipher-arcfour-03.txt. |
| Blowfish | The Blowfish block cipher designed by Bruce Schneier. |
| DES | The Digital Encryption Standard as described in FIPS PUB 46-3. |
| DESede | Triple DES Encryption (also known as DES-EDE, 3DES, or Triple-DES). Data is encrypted using the DES algorithm three separate times. It is first encrypted using the first subkey, then decrypted with the second subkey, and encrypted with the third subkey. |
| DESedeWrap | The DESede key wrapping algorithm as described in RFC 3217 . |
| ECIES | Elliptic Curve Integrated Encryption Scheme |
| PBEWith<digest>And<encryption> PBEWith<prf>And<encryption> | The password-based encryption algorithm found in (PKCS5), using
the specified message digest (<digest>) or pseudo-random
function (<prf>) and encryption algorithm
(<encryption>). Examples:
|
| RC2 | Variable-key-size encryption algorithms developed by Ron Rivest for RSA Data Security, Inc. |
| RC4 | Variable-key-size encryption algorithms developed by Ron Rivest for RSA Data Security, Inc. (See note prior for ARCFOUR.) |
| RC5 | Variable-key-size encryption algorithms developed by Ron Rivest for RSA Data Security, Inc. |
| RSA | The RSA encryption algorithm as defined in PKCS #1 |
The following names can be specified as the mode
component in a transformation when requesting
an instance of Cipher
.
| Algorithm Name | Description |
|---|---|
| NONE | No mode. |
| CBC | Cipher Block Chaining Mode, as defined in FIPS PUB 81. |
| CCM | Counter/CBC Mode, as defined in NIST Special Publication SP 800-38C. |
| CFB, CFBx | Cipher Feedback Mode, as defined in FIPS PUB
81. Using modes such as CFB and OFB, block ciphers can encrypt data in units smaller than the cipher's actual block size. When requesting such a mode, you may optionally specify the number of bits to be processed at a time by appending this number to the mode name as shown in the "DES/CFB8/NoPadding" and "DES/OFB32/PKCS5Padding" transformations. If no such number is specified, a provider-specific default is used. (For example, the SunJCE provider uses a default of 64 bits for DES.) Thus, block ciphers can be turned into byte-oriented stream ciphers by using an 8-bit mode such as CFB8 or OFB8. |
| CTR | A simplification of OFB, Counter mode updates the input block as a counter. |
| CTS | Cipher Text Stealing, as described in Bruce Schneier's book Applied Cryptography-Second Edition, John Wiley and Sons, 1996. |
| ECB | Electronic Codebook Mode, as defined in FIPS PUB 81 (generally this mode should not be used for multiple blocks of data). |
| GCM | Galois/Counter Mode, as defined in NIST Special Publication SP 800-38D. |
| OFB, OFBx | Output Feedback Mode, as defined in FIPS PUB
81. Using modes such as CFB and OFB, block ciphers can encrypt data in units smaller than the cipher's actual block size. When requesting such a mode, you may optionally specify the number of bits to be processed at a time by appending this number to the mode name as shown in the "DES/CFB8/NoPadding" and "DES/OFB32/PKCS5Padding" transformations. If no such number is specified, a provider-specific default is used. (For example, the SunJCE provider uses a default of 64 bits for DES.) Thus, block ciphers can be turned into byte-oriented stream ciphers by using an 8-bit mode such as CFB8 or OFB8. |
| PCBC | Propagating Cipher Block Chaining, as defined by Kerberos V4. |
The following names can be specified as the padding
component in a transformation when requesting
an instance of Cipher
.
| Algorithm Name | Description |
|---|---|
| NoPadding | No padding. |
| ISO10126Padding | This padding for block ciphers is described in 5.2 Block Encryption Algorithms in the W3C's "XML Encryption Syntax and Processing" document. |
| OAEPPadding, OAEPWith<digest>And<mgf>Padding | Optimal Asymmetric Encryption Padding scheme defined in PKCS1,
where <digest> should be replaced by the message digest and
<mgf> by the mask generation function. Examples:
OAEPWithMD5AndMGF1Padding and
OAEPWithSHA-512AndMGF1Padding. If OAEPPadding is used, Cipher objects
are initialized with a
javax.crypto.spec.OAEPParameterSpec object to supply
values needed for OAEPPadding. |
| PKCS1Padding | The padding scheme described in PKCS #1, used with the RSA algorithm. |
| PKCS5Padding | The padding scheme described in RSA Laboratories, "PKCS #5: Password-Based Encryption Standard," version 1.5, November 1993. |
| SSL3Padding | The padding scheme defined in the SSL Protocol Version 3.0,
November 18, 1996, section <IP_ADDRESS> (CBC block cipher):
block-ciphered struct { opaque content[SSLCompressed.length]; opaque MAC[CipherSpec.hash_size]; uint8 padding[ GenericBlockCipher.padding_length]; uint8 padding_length; } GenericBlockCipher;The size of an instance of a GenericBlockCipher must be a multiple of the block cipher's block length. The padding length, which is always present, contributes to the padding, which implies that if: sizeof(content) + sizeof(MAC) % block_length = 0,padding has to be (block_length - 1) bytes long, because of the existence of padding_length .This makes the padding scheme similar (but not quite) to PKCS5Padding, where the padding length is encoded in the padding (and ranges from 1 to block_length). With the SSL scheme, the sizeof(padding) is encoded in the always present padding_length and therefore ranges from 0 to
block_length-1. |
Configuration
TypesThe type in this section can be specified when generating an
instance of
javax.security.auth.login.Configuration
.
| Type | Description |
|---|---|
| JavaLoginConfig | The default Configuration implementation from the SUN provider,
as described in the ConfigFile class
specification.
This type accepts java.security.URIParameter as a
valid Configuration.Parameter type. If this parameter
is not specified, then the configuration information is loaded from
the sources described in the ConfigFile class specification. If
this parameter is specified, the configuration information is
loaded solely from the specified URI. |
The following exemption mechanism names can be specified in the permission policy file that accompanies an application considered "exempt" from cryptographic restrictions.
| Algorithm Name | Description |
|---|---|
| KeyEscrow | An encryption system with a backup decryption capability that allows authorized persons (users, officers of an organization, and government officials), under certain prescribed conditions, to decrypt ciphertext with the help of information supplied by one or more trusted parties who hold special data recovery keys. |
| KeyRecovery | A method of obtaining the secret key used to lock encrypted data. One use is as a means of providing fail-safe access to a corporation's own encrypted information in times of disaster. |
| KeyWeakening | A method in which a part of the key can be escrowed or recovered. |
The following mechanisms can be specified when using GSSAPI. Note that Object Identifiers (OIDs) are specified instead of names to be consistent with the GSSAPI standard.
| Mechanism OID | Description |
|---|---|
| 1.2.840.1135<IP_ADDRESS> | The Kerberos v5 GSS-API mechanism defined in RFC 4121. |
| <IP_ADDRESS>.5.5.2 | The Simple and Protected GSS-API Negotiation (SPNEGO) mechanism defined in RFC 4178. |
KeyAgreement
AlgorithmsThe following algorithm names can be specified when requesting
an instance of KeyAgreement
.
| Algorithm Name | Description |
|---|---|
| DiffieHellman | Diffie-Hellman Key Agreement as defined in PKCS #3: Diffie-Hellman Key-Agreement Standard, RSA Laboratories, version 1.4, November 1993. |
| ECDH | Elliptic Curve Diffie-Hellman as defined in ANSI X9.63 and as described in RFC 3278: "Use of Elliptic Curve Cryptography (ECC) Algorithms in Cryptographic Message Syntax (CMS)." |
| ECMQV | Elliptic Curve Menezes-Qu-Vanstone. |
KeyFactory
Algorithms(Except as noted, these classes create keys for which
Key.getAlgorithm()
returns the standard algorithm name.)
The algorithm names in this section can be specified when
generating an instance of KeyFactory
.
| Algorithm Name | Description |
|---|---|
| DiffieHellman | Keys for the Diffie-Hellman KeyAgreement algorithm.
Note: |
| DSA | Keys for the Digital Signature Algorithm. |
| RSA | Keys for the RSA algorithm (Signature/Cipher). |
| EC | Keys for the Elliptic Curve algorithm. |
KeyGenerator
AlgorithmsThe following algorithm names can be specified when requesting
an instance of KeyGenerator
.
| Algorithm Name | Description |
|---|---|
| AES | Key generator for use with the AES algorithm. |
| ARCFOUR | Key generator for use with the ARCFOUR (RC4) algorithm. |
| Blowfish | Key generator for use with the Blowfish algorithm. |
| DES | Key generator for use with the DES algorithm. |
| DESede | Key generator for use with the DESede (triple-DES) algorithm. |
| HmacMD5 | Key generator for use with the HmacMD5 algorithm. |
| HmacSHA1 HmacSHA224 HmacSHA256 HmacSHA384 HmacSHA512 |
Keys generator for use with the various flavors of the HmacSHA algorithms. |
| RC2 | Key generator for use with the RC2 algorithm. |
KeyManagerFactory
AlgorithmsThe algorithm name in this section can be specified when
generating an instance of KeyManagerFactory
.
| Algorithm Name | Description |
|---|---|
| PKIX | A factory for X509ExtendedKeyManager s that manage
X.509 certificate-based key pairs for local side authentication
according to the rules defined by the IETF PKIX working group in
RFC 3280 or its
successor. The KeyManagerFactory must support
initialization using the class
javax.net.ssl.KeyStoreBuilderParameters . |
KeyPairGenerator
Algorithms(Except as noted, these classes create keys for which
Key.getAlgorithm()
returns the standard algorithm name.)
The algorithm names in this section can be specified when
generating an instance of KeyPairGenerator
.
| Algorithm Name | Description |
|---|---|
| DiffieHellman | Generates keypairs for the Diffie-Hellman KeyAgreement
algorithm.
Note: |
| DSA | Generates keypairs for the Digital Signature Algorithm. |
| RSA | Generates keypairs for the RSA algorithm (Signature/Cipher). |
| EC | Generates keypairs for the Elliptic Curve algorithm. |
KeyStore
TypesThe types in this section can be specified when generating an
instance of KeyStore
.
| Type | Description |
|---|---|
| jceks | The proprietary keystore implementation provided by the SunJCE provider. |
| jks | The proprietary keystore implementation provided by the SUN provider. |
| dks | A domain keystore is a collection of keystores presented as a single logical keystore. It is specified by configuration data whose syntax is described in DomainLoadStoreParameter. |
| pkcs11 | A keystore backed by a PKCS #11 token. |
| pkcs12 | The transfer syntax for personal identity information as defined in PKCS #12. |
Mac
AlgorithmsThe following algorithm names can be specified when requesting
an instance of Mac
.
| Algorithm Name | Description |
|---|---|
| HmacMD5 | The HMAC-MD5 keyed-hashing algorithm as defined in RFC 2104 "HMAC: Keyed-Hashing for Message Authentication" (February 1997). |
| HmacSHA1 HmacSHA224 HmacSHA256 HmacSHA384 HmacSHA512 |
The HmacSHA* algorithms as defined in RFC 2104 "HMAC:
Keyed-Hashing for Message Authentication" (February 1997) with
SHA-* as the message digest algorithm. |
| PBEWith<mac> | Mac for use with the PKCS #5 v 2.0 password-based message authentication standard, where <mac> is a Message Authentication Code algorithm name. Example: PBEWithHmacSHA1. |
MessageDigest
AlgorithmsThe algorithm names in this section can be specified when
generating an instance of MessageDigest
.
| Algorithm Name | Description |
|---|---|
| MD2 | The MD2 message digest algorithm as defined in RFC 1319. |
| MD5 | The MD5 message digest algorithm as defined in RFC 1321. |
| SHA-1 SHA-224 SHA-256 SHA-384 SHA-512 |
Hash algorithms defined in the FIPS
PUB 180-4. Secure hash algorithms - SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 - for computing a condensed representation of electronic data (message). When a message of any length less than 2^64 bits (for SHA-1, SHA-224, and SHA-256) or less than 2^128 (for SHA-384 and SHA-512) is input to a hash algorithm, the result is an output called a message digest. A message digest ranges in length from 160 to 512 bits, depending on the algorithm. |
Policy
TypesThe type in this section can be specified when generating an
instance of Policy
.
| Type | Description |
|---|---|
| JavaPolicy | The default Policy implementation from the SUN provider, as
described in the PolicyFile guide.
This type accepts java.security.URIParameter as a
valid Policy.Parameter type. If this parameter is not
specified, then the policy information is loaded from the sources
described in the Default
Policy File Locations section of the PolicyFile guide. If this
parameter is specified, the policy information is loaded solely
from the specified URI. |
SaslClient
MechanismsThe mechanisms in this section can be specified when generating
an instance of SaslClient
.
| Mechanism | Description |
|---|---|
| CRAM-MD5 | See RFC 2195. This mechanism supports a hashed user name/password authentication scheme. |
| DIGEST-MD5 | See RFC 2831. This mechanism defines how HTTP Digest Authentication can be used as a SASL mechanism. |
| EXTERNAL | See RFC 2222. This mechanism obtains authentication information from an external channel (such as TLS or IPsec). |
| GSSAPI | See RFC 2222. This mechanism uses the GSSAPI for obtaining authentication information. It supports Kerberos v5 authentication. |
| PLAIN | See RFC 2595. This mechanism supports cleartext user name/password authentication. |
SaslServer
MechanismsThe mechanisms in this section can be specified when generating
an instance of SaslServer
.
| Mechanism | Description |
|---|---|
| CRAM-MD5 | See RFC 2195. This mechanism supports a hashed user name/password authentication scheme. |
| DIGEST-MD5 | See RFC 2831. This mechanism defines how HTTP Digest Authentication can be used as a SASL mechanism. |
| GSSAPI | See RFC 2222. This mechanism uses the GSSAPI for obtaining authentication information. It supports Kerberos v5 authentication. |
SecretKeyFactory
AlgorithmsThe following algorithm names can be specified when requesting
an instance of SecretKeyFactory
.
| Algorithm Name | Description |
|---|---|
| AES | Constructs secret keys for use with the AES algorithm. |
| ARCFOUR | Constructs secret keys for use with the ARCFOUR algorithm. |
| DES | Constructs secrets keys for use with the DES algorithm. |
| DESede | Constructs secrets keys for use with the DESede (Triple-DES) algorithm. |
|
PBEWith<digest>And<encryption> PBEWith<prf>And<encryption> |
Secret-key factory for use with PKCS5 password-based
encryption, where <digest> is a message digest,
<prf> is a pseudo-random function, and
<encryption> is an encryption algorithm.
Examples:
|
| PBKDF2With<prf> | Password-based key-derivation algorithm found in PKCS #5 2.0 using the specified pseudo-random function (<prf>). Example: PBKDF2WithHmacSHA256. |
SecureRandom
Number Generation
AlgorithmsThe algorithm name in this section can be specified when
generating an instance of SecureRandom
.
| Algorithm Name | Description |
|---|---|
| NativePRNG | Obtains random numbers from the underlying native OS. No assertions are made as to the blocking nature of generating these numbers. |
| NativePRNGBlocking | Obtains random numbers from the underlying native OS, blocking
if necessary. For example, /dev/random on UNIX-like
systems. |
| NativePRNGNonBlocking | Obtains random numbers from the underlying native OS, without
blocking to prevent applications from excessive stalling. For
example, /dev/urandom on UNIX-like systems. |
| PKCS11 | Obtains random numbers from the underlying installed and configured PKCS11 library. |
| SHA1PRNG | The name of the pseudo-random number generation (PRNG) algorithm supplied by the SUN provider. This algorithm uses SHA-1 as the foundation of the PRNG. It computes the SHA-1 hash over a true-random seed value concatenated with a 64-bit counter which is incremented by 1 for each operation. From the 160-bit SHA-1 output, only 64 bits are used. |
| Windows-PRNG | Obtains random numbers from the underlying Windows OS. |
A cryptographic service is always associated with a particular
algorithm or type. For example, a digital signature service is
always associated with a particular algorithm (for example, DSA),
and a CertificateFactory
service is always associated
with a particular certificate type (for example, X.509).
The attributes in this section are for cryptographic services. The service attributes can be used as filters for selecting providers.
Both the attribute name and value are case-insensitive.
| Attribute | Description |
|---|---|
| KeySize | The maximum key size that the provider supports for the cryptographic service. |
| ImplementedIn | Whether the implementation for the cryptographic service is done by software or hardware. The value of this attribute is "software" or "hardware". |
| ValidationAlgorithm | The name of the specification that defines the certification
path validation algorithm that an implementation of
CertPathBuilder or CertPathValidator
supports. RFCs should be specified as "RFC#" (ex: "RFC3280") and
Internet Drafts as the name of the draft (ex:
"draft-ietf-pkix-rfc2560bis-01.txt"). Values for this attribute
that are specified as selection criteria to the
Security.getProviders method will be compared using
the String.equalsIgnoreCase method. All PKIX
implementations of CertPathBuilder and
CertPathValidator should provide a value for this
attribute. |
| LDAPSchema | The name of the specification that defines the LDAP schema that
an implementation of an LDAP CertStore uses to
retrieve certificates and CRLs. The format and semantics of this
attribute is the same as described for the ValidationAlgorithm
attribute. All LDAP implementations of CertStore
should provide a value for this attribute. |
For example:
map.put("KeyPairGenerator.DSA", "sun.security.provider.DSAKeyPairGenerator"); map.put("KeyPairGenerator.DSA KeySize", "1024"); map.put("KeyPairGenerator.DSA ImplementedIn", "Software");
Signature
AlgorithmsThe algorithm names in this section can be specified when
generating an instance of Signature
.
| Algorithm Name | Description |
|---|---|
| NONEwithRSA | The RSA signature algorithm, which does not use a digesting algorithm (for example, MD5/SHA1) before performing the RSA operation. For more information about the RSA Signature algorithms, see PKCS #1. |
| MD2withRSA MD5withRSA |
The MD2/MD5 with RSA Encryption signature algorithm, which uses the MD2/MD5 digest algorithm and RSA to create and verify RSA digital signatures as defined in PKCS #1. |
| SHA1withRSA SHA224withRSA SHA256withRSA SHA384withRSA SHA512withRSA |
The signature algorithm with SHA-* and the RSA encryption algorithm as defined in the OSI Interoperability Workshop, using the padding conventions described in PKCS #1. |
| NONEwithDSA | The Digital Signature Algorithm as defined in FIPS PUB 186-2. The data must be exactly 20 bytes in length. This algorithm is also known as rawDSA. |
| SHA1withDSA SHA224withDSA SHA256withDSA |
The DSA signature algorithms that use the SHA-1, SHA-224, or SHA-256 digest algorithms to create and verify digital signatures as defined in FIPS PUB 186-3. |
| NONEwithECDSA SHA1withECDSA SHA224withECDSA SHA256withECDSA SHA384withECDSA SHA512withECDSA (ECDSA) |
The ECDSA signature algorithms as defined in ANSI
X9.62.
Note:"ECDSA" is an ambiguous name for the "SHA1withECDSA" algorithm and should not be used. The formal name "SHA1withECDSA" should be used instead. |
| <digest>with<encryption> | Use this to form a name for a signature algorithm with a
particular message digest (such as MD2 or MD5) and algorithm (such
as RSA or DSA), just as was done for the explicitly defined
standard names in this section (MD2withRSA, and so on).
For the new signature schemes defined in PKCS #1 v 2.0, for which the <digest>with<encryption> form is insufficient, <digest>with<encryption>and<mgf> can be used to form a name. Here, <mgf> should be replaced by a mask generation function such as MGF1. Example: MD5withRSAandMGF1. |
SSLContext
AlgorithmsThe algorithm names in this section can be specified when
generating an instance of SSLContext
.
| Algorithm Name | Description |
|---|---|
| SSL | Supports some version of SSL; may support other versions |
| SSLv2 | Supports SSL version 2 or later; may support other versions |
| SSLv3 | Supports SSL version 3; may support other versions |
| TLS | Supports some version of TLS; may support other versions |
| TLSv1 | Supports RFC 2246: TLS version 1.0 ; may support other versions |
| TLSv1.1 | Supports RFC 4346: TLS version 1.1 ; may support other versions |
| TLSv1.2 | Supports RFC 5246: TLS version 1.2 ; may support other versions |
TrustManagerFactory
AlgorithmsThe algorithm name in this section can be specified when
generating an instance of TrustManagerFactory
.
| Algorithm Name | Description |
|---|---|
| PKIX | A factory for X509ExtendedTrustManager objects
that validate certificate chains according to the rules defined by
the IETF PKIX working group in RFC 3280 or its
successor. The TrustManagerFactory must support
initialization using the class
javax.net.ssl.CertPathTrustManagerParameters . |
XMLSignatureFactory
/KeyInfoFactory
/TransformService
)
MechanismsThe mechanism in this section can be specified when generating
an instance of XMLSignatureFactory
,
KeyInfoFactory
, or TransformService
. The
mechanism identifies the XML processing mechanism that an
implementation uses internally to parse and generate XML signature
and KeyInfo structures. Also, note that each
TransformService
instance supports a specific
transform algorithm in addition to a mechanism. The standard names
for the transform algorithms are defined in the next section.
| Mechanism | Description |
|---|---|
| DOM | The Document Object Model. See DOM Mechanism Requirements for additional requirements for DOM implementations. |
TransformService
)
AlgorithmsThe algorithms in this section can be specified when generating
an instance of TransformService
. Note that URIs are
specified instead of names to be consistent with the XML Signature
standard. API constants have been defined for each of these URIs,
and these are listed in parentheses after each URI in the table
that follows.
| Algorithm URI | Description |
|---|---|
http://www.w3.org/TR/2001/REC-xml-c14n-20010315
(CanonicalizationMethod.INCLUSIVE ) |
The Canonical XML (without comments) canonicalization algorithm. |
http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments
(CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS ) |
The Canonical XML with comments canonicalization algorithm. |
http://www.w3.org/2001/10/xml-exc-c14n#
(CanonicalizationMethod.EXCLUSIVE ) |
The Exclusive Canonical XML (without comments) canonicalization algorithm. |
http://www.w3.org/2001/10/xml-exc-c14n#WithComments
(CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS ) |
The Exclusive Canonical XML with comments canonicalization algorithm. |
http://www.w3.org/2000/09/xmldsig#base64
(Transform.BASE64 ) |
The Base64 transform algorithm. |
http://www.w3.org/2000/09/xmldsig#enveloped-signature
(Transform.ENVELOPED ) |
The Enveloped Signature transform algorithm. |
http://www.w3.org/TR/1999/REC-xpath-19991116
(Transform.XPATH ) |
The XPath transform algorithm. |
http://www.w3.org/2002/06/xmldsig-filter2
(Transform.XPATH2 ) |
The XPath Filter 2 transform algorithm. |
http://www.w3.org/TR/1999/REC-xslt-19991116
(Transform.XSLT ) |
The XSLT transform algorithm. |
The following list contains the standard JSSE cipher suite
names. Over time, various groups have added additional cipher
suites to the SSL/TLS namespace. Some JSSE cipher suite names were
defined before TLSv1.0 was finalized, and were therefore given the
SSL_
prefix. The names mentioned in the TLS RFCs
prefixed with TLS_
are functionally equivalent to the
JSSE cipher suites prefixed with SSL_
.
*
TLS_EMPTY_RENEGOTIATION_INFO_SCSV
is a new
pseudo-cipher suite to support RFC 5746. Read the Transport
Layer Security (TLS) Renegotiation Issue section of the JSEE
Reference Guide for more information.
The keyType
parameter passed to the
chooseClientAlias
, chooseServerAlias
,
getClientAliases
, and getServerAliases
methods of X509KeyManager
specifies the public key
types. Each row of the table that follows lists the standard name
that should be used for keyType
, given the specified
certificate type.
| Name | Certificate Type |
|---|---|
| RSA | RSA |
| DSA | DSA |
| DH_RSA | Diffie-Hellman with RSA signature |
| DH_DSA | Diffie-Hellman with DSA signature |
| EC | Elliptic Curve |
| EC_EC | Elliptic Curve with ECDSA signature |
| EC_RSA | Elliptic Curve with RSA signature |
The protocols
parameter passed to the
setEnabledProtocols
method of SSLSocket
specifies the protocol versions to be enabled for use on the
connection. The table that follows lists the standard names that
can be passed to setEnabledProtocols
or that may be
returned by the SSLSocket getSupportedProtocols
and
getEnabledProtocols
methods.
| Name | Protocol |
|---|---|
| SSLv2 | SSL version 2 protocol |
| SSLv3 | SSL version 3 protocol |
| TLSv1 | TLS version 1.0 protocol (defined in RFC 2246) |
| TLSv1.1 | TLS version 1.1 protocol (defined in RFC 4346) |
| TLSv1.2 | TLS version 1.2 protocol (defined in RFC 5246) |
| SSLv2Hello | Currently, the SSLv3, TLSv1, and TLSv1.1 protocols allow you to
send SSLv3, TLSv1, and TLSv1.1 hellos encapsulated in an SSLv2
format hello. For more details on the reasons for allowing this
compatibility in these protocols, see Appendix E in the appropriate
RFCs (previously listed). Note that some SSL/TLS servers do not support the v2 hello format and require that client hellos conform to the SSLv3 or TLSv1 client hello formats. The SSLv2Hello option controls the SSLv2 encapsulation. If SSLv2Hello is disabled on the client, then all outgoing messages will conform to the SSLv3/TLSv1 client hello format. If SSLv2Hello is disabled on the server, then all incoming messages must conform to the SSLv3/TLSv1 client hello format. |
The authType
parameter passed to the
checkClientTrusted
and checkServerTrusted
methods of X509TrustManager
indicates the
authentication type. The table that follows specifies what standard
names should be used for the client or server certificate
chains.
| Client or Server Certificate Chain | Authentication Type Standard Name |
|---|---|
| Client | Determined by the actual certificate used. For instance, if
RSAPublicKey is used, the authType should be
"RSA". |
| Server | The key exchange algorithm portion of the cipher suites
represented as a String, such as "RSA" or "DHE_DSS". Note: For some
exportable cipher suites, the key exchange algorithm is determined
at runtime during the handshake. For instance, for
TLS_RSA_EXPORT_WITH_RC4_40_MD5, the authType should be
"RSA_EXPORT" when an ephemeral RSA key is used for the key
exchange, and "RSA" when the key from the server certificate is
used. Or it can take the value "UNKNOWN". |
The JDK 8 release supports endpoint identification algorithms. The algorithm name can be passed to the
setEndpointIdentificationAlgorithm()
method of
javax.net.ssl.SSLParameters
. The following table shows
the currently recognized names.
| Endpoint Identification Algorithm Name |
Specification |
|---|---|
| HTTPS | http://www.ietf.org/rfc/rfc2818.txt |
| LDAPS | http://www.ietf.org/rfc/rfc2830.txt |
This section specifies details concerning some of the algorithms defined in this document. Any provider supplying an implementation of the listed algorithms must comply with the specifications in this section.
To add a new algorithm not specified here, you should first survey other people or companies supplying provider packages to see if they have already added that algorithm, and, if so, use the definitions they published, if available. Otherwise, you should create and make available a template, similar to those found in this section, with the specifications for the algorithm you provide.
The following table shows the fields of the algorithm specifications.
| Field | Description |
|---|---|
| Name | The name by which the algorithm is known. This is
the name passed to the getInstance method (when
requesting the algorithm), and returned by the
getAlgorithm method to determine the name of an
existing algorithm object. These methods are in the relevant engine
classes: Signature ,
MessageDigest ,
KeyPairGenerator , and
AlgorithmParameterGenerator
. |
| Type | The type of algorithm: Signature ,
MessageDigest , KeyPairGenerator , or
AlgorithmParameterGenerator . |
| Description | General notes about the algorithm, including any standards implemented by the algorithm, applicable patents, and so on. |
KeyPair Algorithm
(optional) |
The keypair algorithm for this algorithm. |
| Keysize (optional) | For a keyed algorithm or key generation algorithm: the valid keysizes. |
|
Size (optional) |
For an algorithm parameter generation algorithm: the valid "sizes" for algorithm parameter generation. |
|
Parameter Defaults (optional) |
For a key generation algorithm: the default parameter values. |
|
|
For a Signature algorithm, the format
of the signature, that is, the input and output of the verify and
sign methods, respectively. |
| Field | Description | |
|---|---|---|
| Name | SHA-1 | |
| Type | MessageDigest |
|
| Description | The message digest algorithm as defined in NIST's FIPS 180-4. The output of this algorithm is a 160-bit digest. |
| Field | Description | |
|---|---|---|
| Name | SHA-256 | |
| Type | MessageDigest |
|
| Description | The message digest algorithm as defined in NIST's FIPS 180-4. The output of this algorithm is a 256-bit digest. |
| Field | Description | |
|---|---|---|
| Name | MD2 | |
| Type | MessageDigest |
|
| Description | The message digest algorithm as defined in RFC 1319. The output of this algorithm is a 128-bit (16 byte) digest. |
| Field | Description | |
|---|---|---|
| Name | MD5 | |
| Type | MessageDigest |
|
| Description | The message digest algorithm as defined in RFC 1321. The output of this algorithm is a 128-bit (16 byte) digest. |
| Field | Description | |
|---|---|---|
| Name | SHA1withDSA | |
| Type | Signature |
|
| Description | This algorithm is the signature algorithm described in NIST FIPS 186, using DSA with the SHA-1 message digest algorithm. | |
KeyPair Algorithm |
DSA | |
| Signature Format | ASN.1 sequence of two INTEGER values:
r and s , in that order:SEQUENCE ::= { r INTEGER, s INTEGER } |
| Field | Description | |
|---|---|---|
| Names | MD2withRSA, MD5withRSA and SHA1withRSA | |
| Type | Signature |
|
| Description | These are the signature algorithms that use the MD2, MD5, and SHA-1 message digest algorithms (respectively) with RSA encryption. | |
KeyPair Algorithm |
RSA | |
| Signature Format | DER-encoded PKCS1 block as defined in RSA Laboratories, PKCS #1. The data encrypted is the digest of the data signed. |
| Field | Description | |
|---|---|---|
| Name | DSA | |
| Type | KeyPairGenerator |
|
| Description | This algorithm is the key pair generation algorithm described NIST FIPS 186 for DSA. | |
| Keysize | The length, in bits, of the modulus
p . This must be a multiple of 64, ranging from 512 to
1024 (inclusive), or 2048. The default keysize is 1024. |
|
| Parameter Defaults |
The following are the default parameter values for keysizes of 512, 768, and 1024 bits: 512-bit Key Parameters SEED = b869c82b 35d70e1b 1ff91b28 e37a62ec dc34409b counter = 123 p = fca682ce 8e12caba 26efccf7 110e526d b078b05e decbcd1e b4a208f3 ae1617ae 01f35b91 a47e6df6 3413c5e1 2ed0899b cd132acd 50d99151 bdc43ee7 37592e17 q = 962eddcc 369cba8e bb260ee6 b6a126d9 346e38c5 g = 678471b2 7a9cf44e e91a49c5 147db1a9 aaf244f0 5a434d64 86931d2d 14271b9e 35030b71 fd73da17 9069b32e 2935630e 1c206235 4d0da20a 6c416e50 be794ca4 768-bit key parameters SEED = 77d0f8c4 dad15eb8 c4f2f8d6 726cefd9 6d5bb399 counter = 263 p = e9e64259 9d355f37 c97ffd35 67120b8e 25c9cd43 e927b3a9 670fbec5 d8901419 22d2c3b3 ad248009 3799869d 1e846aab 49fab0ad 26d2ce6a 22219d47 0bce7d77 7d4a21fb e9c270b5 7f607002 f3cef839 3694cf45 ee3688c1 1a8c56ab 127a3daf q = 9cdbd84c 9f1ac2f3 8d0f80f4 2ab952e7 338bf511 g = 30470ad5 a005fb14 ce2d9dcd 87e38bc7 d1b1c5fa cbaecbe9 5f190aa7 a31d23c4 dbbcbe06 17454440 1a5b2c02 0965d8c2 bd2171d3 66844577 1f74ba08 4d2029d8 3c1c1585 47f3a9f1 a2715be2 3d51ae4d 3e5a1f6a 7064f316 933a346d 3f529252 1024-bit key parameters SEED = 8d515589 4229d5e6 89ee01e6 018a237e 2cae64cd counter = 92 p = fd7f5381 1d751229 52df4a9c 2eece4e7 f611b752 3cef4400 c31e3f80 b6512669 455d4022 51fb593d 8d58fabf c5f5ba30 f6cb9b55 6cd7813b 801d346f f26660b7 6b9950a5 a49f9fe8 047b1022 c24fbba9 d7feb7c6 1bf83b57 e7c6a8a6 150f04fb 83f6d3c5 1ec30235 54135a16 9132f675 f3ae2b61 d72aeff2 2203199d d14801c7 q = 9760508f 15230bcc b292b982 a2eb840b f0581cf5 g = f7e1a085 d69b3dde cbbcab5c 36b857b9 7994afbb fa3aea82 f9574c0b 3d078267 5159578e bad4594f e6710710 8180b449 167123e8 4c281613 b7cf0932 8cc8a6e1 3c167a8b 547c8d28 e0a3ae1e 2bb3a675 916ea37f 0bfa2135 62f1fb62 7a01243b cca4f1be a8519089 a883dfe1 5ae59f06 928b665e 807b5525 64014c3b fecf492a The following are the default values for larger DSA key sizes identified by (L,N) pairs: (L,N) = (2048, 256) SEED = b0b44176 01b59cbc 9d8ac8f9 35cadaec 4f5fbb2f 23785609 ae466748 d9b5a536 counter = 497 p = 95475cf5 d93e596c 3fcd1d90 2add02f4 27f5f3c7 210313bb 45fb4d5b b2e5fe1c bd678cd4 bbdd84c9 836be1f3 1c077772 5aeb6c2f c38b85f4 8076fa76 bcd8146c c89a6fb2 f706dd71 9898c208 3dc8d896 f84062e2 c9c94d13 7b054a8d 8096adb8 d5195239 8eeca852 a0af12df 83e475aa 65d4ec0c 38a9560d 5661186f f98b9fc9 eb60eee8 b030376b 236bc73b e3acdbd7 4fd61c1d 2475fa30 77b8f080 467881ff 7e1ca56f ee066d79 506ade51 edbb5443 a563927d bc4ba520 08674617 5c888592 5ebc64c6 14790677 3496990c b714ec66 7304e261 faee33b3 cbdf008e 0c3fa906 50d97d39 09c9275b f4ac86ff cb3d03e6 dfc8ada5 934242dd 6d3bcca2 a406cb0b q = f8183668 ba5fc5bb 06b5981e 6d8b795d 30b8978d 43ca0ec5 72e37e09 939a9773 g = 42debb9d a5b3d88c c956e087 87ec3f3a 09bba5f4 8b889a74 aaf53174 aa0fbe7e 3c5b8fcd 7a53bef5 63b0e985 60328960 a9517f40 14d3325f c7962bf1 e049370d 76d1314a 76137e79 2f3f0db8 59d095e4 a5b93202 4f079ecf 2ef09c79 7452b077 0e135078 2ed57ddf 794979dc ef23cb96 f1830619 65c4ebc9 3c9c71c5 6b925955 a75f94cc cf1449ac 43d586d0 beee4325 1b0b2287 349d68de 0d144403 f13e802f 4146d882 e057af19 b6f6275c 6676c8fa 0e3ca271 3a3257fd 1b27d063 9f695e34 7d8d1cf9 ac819a26 ca9b04cb 0eb9b7b0 35988d15 bbac6521 2a55239c fc7e58fa e38d7250 ab9991ff bc971340 25fe8ce0 4c4399ad 96569be9 1a546f49 78693c7a (L,N) = (2048, 224) SEED = 58423608 0cfa43c0 9b023541 35f4cc51 98a19efa da08bd86 6d601ba4 counter = 2666 p = 8f7935d9 b9aae9bf abed887a cf4951b6 f32ec59e 3baf3718 e8eac496 1f3efd36 06e74351 a9c41833 39b809e7 c2ae1c53 9ba7475b 85d011ad b8b47987 75498469 5cac0e8f 14b33608 28a22ffa 27110a3d 62a99345 3409a0fe 696c4658 f84bdd20 819c3709 a01057b1 95adcd00 233dba54 84b6291f 9d648ef8 83448677 979cec04 b434a6ac 2e75e998 5de23db0 292fc111 8c9ffa9d 8181e733 8db792b7 30d7b9e3 49592f68 09987215 3915ea3d 6b8b4653 c633458f 803b32a4 c2e0f272 90256e4e 3f8a3b08 38a1c450 e4e18c1a 29a37ddf 5ea143de 4b66ff04 903ed5cf 1623e158 d487c608 e97f211c d81dca23 cb6e3807 65f822e3 42be484c 05763939 601cd667 q = baf696a6 8578f7df dee7fa67 c977c785 ef32b233 bae580c0 bcd5695d g = 16a65c58 20485070 4e7502a3 9757040d 34da3a34 78c154d4 e4a5c02d 242ee04f 96e61e4b d0904abd ac8f37ee b1e09f31 82d23c90 43cb642f 88004160 edf9ca09 b32076a7 9c32a627 f2473e91 879ba2c4 e744bd20 81544cb5 5b802c36 8d1fa83e d489e94e 0fa0688e 32428a5c 78c478c6 8d0527b7 1c9a3abb 0b0be12c 44689639 e7d3ce74 db101a65 aa2b87f6 4c6826db 3ec72f4b 5599834b b4edb02f 7c90e9a4 96d3a55d 535bebfc 45d4f619 f63f3ded bb873925 c2f224e0 7731296d a887ec1e 4748f87e fb5fdeb7 5484316b 2232dee5 53ddaf02 112b0d1f 02da3097 3224fe27 aeda8b9d 4b2922d9 ba8be39e d9e103a6 3c52810b c688b7e2 ed4316e1 ef17dbde |
| Field | Description | |
|---|---|---|
| Names | RSA | |
| Type | KeyPairGenerator |
|
| Description | This algorithm is the key pair generation algorithm described in PKCS #1. | |
| Strength | Any integer that is a multiple of 8, greater than or equal to 512. |
| Field | Description | |
|---|---|---|
| Names | DSA | |
| Type | AlgorithmParameterGenerator |
|
| Description | This algorithm is the parameter generation algorithm described in NIST FIPS 186 for DSA. | |
| Strength |
The length, in bits, of the modulus Alternatively, generate DSA parameters with the
|
This section defines the security algorithm requirements for JDK 8 implementations. These requirements are intended to improve the interoperability of JDK 8 implementations and applications that use these algorithms.
Note that the requirements in this section are not a measure of the strength or security of the algorithm. For example, recent advances in cryptanalysis have found weaknesses in the strength of the MD5 MessageDigest algorithm. It is your responsibility to determine whether the algorithm meets the security requirements of your application.
Every implementation of the JDK 8 platform must support the specified algorithms in the table that follows. These requirements do not apply to 3rd party providers. Consult the release documentation for your implementation to see if any other algorithms are supported.
| Class | Algorithm Name(s) |
|---|---|
AlgorithmParameterGenerator Implementations must support the key sizes in parentheses. |
DiffieHellman (1024) DSA (1024) |
AlgorithmParameters |
AES DES DESede DiffieHellman DSA |
CertificateFactory |
X.509 |
CertPath Encodings |
PKCS7 PkiPath |
CertPathBuilder |
PKIX |
CertPathValidator |
PKIX |
CertStore |
Collection |
Cipher The algorithms are specified as transformations. Implementations must support the key sizes in parentheses. |
AES/CBC/NoPadding (128) AES/CBC/PKCS5Padding (128) AES/ECB/NoPadding (128) AES/ECB/PKCS5Padding (128) DES/CBC/NoPadding (56) DES/CBC/PKCS5Padding (56) DES/ECB/NoPadding (56) DES/ECB/PKCS5Padding (56) DESede/CBC/NoPadding (168) DESede/CBC/PKCS5Padding (168) DESede/ECB/NoPadding (168) DESede/ECB/PKCS5Padding (168) RSA/ECB/PKCS1Padding (1024, 2048) RSA/ECB/OAEPWithSHA-1AndMGF1Padding (1024, 2048) RSA/ECB/OAEPWithSHA-256AndMGF1Padding (1024, 2048) |
Configuration [1] |
|
KeyAgreement |
DiffieHellman |
KeyFactory |
DiffieHellman DSA RSA |
KeyGenerator Implementations must support the key sizes in parentheses. |
AES (128) DES (56) DESede (168) HmacSHA1 HmacSHA256 |
KeyPairGenerator Implementations must support the key sizes in parentheses. |
DiffieHellman (1024) DSA (1024) RSA (1024, 2048) |
KeyStore |
PKCS12 |
Mac |
HmacMD5 HmacSHA1 HmacSHA256 |
MessageDigest |
MD5 SHA-1 SHA-256 |
Policy [1] |
|
SecretKeyFactory |
DES DESede |
SecureRandom [1] |
|
Signature |
SHA1withDSA SHA1withRSA SHA256withRSA |
SSLContext |
TLSv1 [2] |
[1] No specific Configuration
type,
Policy
type or SecureRandom
algorithm is
required; however, an implementation-specific default must be
provided.
[2] A TLSv1 implementation must support the cipher suite SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA as defined in RFC 2246 and the special signaling cipher suite TLS_EMPTY_RENEGOTIATION_INFO_SCSV for safe renegotiation as defined in RFC 5746.
Every implementation of the JDK 8 platform must support the specified XML Signature algorithms in the table that follows. These requirements do not apply to 3rd party providers. Consult the release documentation for your implementation to see if any other algorithms are supported.
| Class | Algorithm Name(s) |
|---|---|
TransformService |
http://www.w3.org/2001/10/xml-exc-c14n#
(CanonicalizationMethod.EXCLUSIVE )http://www.w3.org/TR/2001/REC-xml-c14n-20010315 ( CanonicalizationMethod.INCLUSIVE )http://www.w3.org/2000/09/xmldsig#base64 ( Transform.BASE64 )http://www.w3.org/2000/09/xmldsig#enveloped-signature ( Transform.ENVELOPED ) |
XMLSignatureFactory |
DOM |


The Query Tool enables you to execute arbitrary SQL commands.
The upper part of the Query Tool contains the SQL Editor where you type your commands. You may read the query from a file, or write it out to a file. When writing a file, the encoding of the file is determined by the file suffix: if it is *.sql, a 8 bit local character set is used. If *.usql is selected, the file will be written in UTF-8, which enables the storage of virtually all characters used throughout the world, according to the coding rules of the Unicode Consortium. If you select *.*, the setting from the read/write unicode option is used.
The edit entry window also contains autocompletion code to help you write queries. To use autocomplete, simply start typing your query and then press Control+Space to see a list of possible object names to insert. For example, type "SELECT * FROM " (without the quotes, but with the trailing space), and then hit Control and Space together to see a popup menu of autocomplete options. The autocomplete system is based on code from psql, the PostgreSQL command line interpreter and will generally be able to offer autocomplete options in the same places that it can in psql. You can optionally enable the Tab key to activate the autocomplete feature as well - the can be done on the options dialog.
The editor also offers a number of features for helping with code formatting:
If you prefer to build your queries graphically, you can use the Graphical Query Builder to generate the SQL for you.
To execute a query, select Execute from the Query menu, press the execute toolbar button, or press the F5 function key. The complete contents of the window will be sent to the database server, which executes it. You may also execute just a part of the text, by selecting only the text that you want the server to execute.
Explain from the Query menu, or F7 function key will execute the EXPLAIN command. The database server will analyze the query that's sent to it, and will return the results.
The result is displayed as text in the Data Output page, and graphically visualized on the Explain page. This enables you to find out how the query is parsed, optimized and executed. You can modify the degree of inspection by changing the Explain options for this in the Query menu. Please note that "EXPLAIN VERBOSE" can not be displayed graphically.
In case the query you sent to the server using the Execute or Explain command takes longer than you expect, and you would like to abort the execution, you can select Cancel from the Query menu, press the Cancel toolbar button or use Alt-Break function key to abort the execution.
You can run pgScript scripts by selecting Execute pgScript from the Query menu instead of Execute, or you press the Execute pgScript toolbar button, or you press the F6 function key. The complete contents of the edit entry window will be sent to the pgScript engine, which interprets it. pgScript scripts are composed of regular SQL commands but add some enhancements:
For more information on the pgScript language, please look at the pgScript scripting language reference.
If you want to have help about a SQL command you want to execute, you can mark a SQL keyword and select SQL Help from the Help menu, the SQL Help toolbar button or simply press the F1 key. pgAdmin III will try to locate the appropriate information in the PostgreSQL documentation for you.
The result of the database server execution will be displayed in the lower part of the Query Tool. If the last command in the chain of SQL command sent to the server was as command returning a result set, this will be shown on the Data Output page. All rowsets from previous commands will be discarded.
To save the data in the Data Output page to a file, you can use the Export dialog.
Information about all commands just executed will go to the Messages page. The History page will remember all commands executed and the results from this, until you use Clear History from the Query menu to clear the window. If you want to retain the history for later inspection, you can save the contents of the History page to a file using the Save history option from the Query menu.
The status line will show how long the last query took to complete. If a dataset was returned, not only the elapsed time for server execution is displayed, but also the time to retrieve the data from the server to the Data Output page.
In the toolbar combobox you can quickly change your database connection from one database to another, without launching another instance of the query tool. Initially, only one database will be available, but by selecting <new connection> from the combobox, you can add another connection to it.
In the options dialog, you can specify a default limit for the rowset size to retrieve. By default, this value will be 100. If the number of rows to retrieve from the server exceeds this value, a message box will appear asking what to do to prevent retrieval of an unexpected high amount of data. You may decide to retrieve just the first rows, as configured with the max rows setting, or retrieving the complete rowset regardless of the setting, or abort the query, effectively retrieving zero rows.
If you have queries that you execute often, you can add these to the favourites menu, and have them automatically put in the buffer when you select them from the menu. The Manage Favoutites menu option may be used to organise your favourites. Alternatively, you can store them as Macros
The Query Tool also includes a powerful Find and Replace tool. In addition to offering the normal options found in most tools, a Regular Expression search mode is included which allows you to perform extremely powerful search (and replace) operations. Unless your copy of pgAdmin was built against a non-standard build of wxWidgets, a built in version of Henry Spencer's regular expression library is used based on the 1003.2 spec and some (not quite all) of the Perl5 extensions.
For more details of the regular expression syntax offered, please see the wxWidgets documentation.


Paster
Paster - [url]
Delete after :
[ ] 1 hour
[ ] 1 week
[ ] 1 day
[ ] 1 month
[ ] self-destruct
Protect and share this text
Etienne SELLAN


Ae. Aedes albopictus aegypti transmission vertical virus dengue São DENV- DENV positive natural {border-style px;} #ffffff;} Med. city mosquito pools species (). Paulo areas infected infection specimens analyzed autumn circulation vector MIR mosquitoes sequences serotype serotypes study using Paulo. Trop. collected maintenance spring used Dengue Municipal Transmission detection green laboratory px; seasons urban viral viruses {font-family (Diptera: Paulo, eggs font-size high male number parks populations sequence showed state strains ( °C, Brazil, Culicidae) Hyg../ajtmh... Piqueri RNA detected double; dynamics human low samples (Fig. Brazilian DNA Natural PCR Supplementary Vector according albopictus, amplified arbovirus area autochthonous border-color border-width cases considered control findings generations periods rates solid; studies tree {font-style {font-weight (number Americas Brazil Commons Creative DENV, Female Figure Inst. Joining Male Minas Mosquitoes Neighbor Park Saude TS) Table University Urban Vertical Virus Viruses adults analysis approximately based bold compared conditions conditions, consecutive courier; data different distribution dos em; identity importance known lane larvae males manufacturer’s nucleotide observed pool presence pt;} reported season shown transmitted


Welcome to my very first example of front-end web design.
Not sure where to stay? We've created neighborhood guides for cities all around the world.
From apartments and rooms to treehouses and boats: stay in unique spaces in 192 countries.
Renting out your unused space could pay your bills or fund your next vacation.
From Verified ID to our worldwide customer support team, we've got your back.


POSH appoints Provenance Capital as independent financial adviser in Kuok cash offer
by Annabeth LeowSTRUGGLING offshore and marine services provider PACC Offshore Services Holdings (POSH) has named Provenance Capital the independent financial adviser to the independent directors in the buy-out offer from Malaysian tycoon Robert Kuok’s Kuok group of companies.
The board added in a bourse filing on Friday that Provenance Capital’s advice and the recommendation on the offer “will be sent to shareholders of the company in due course”.
Bid vehicle Quetzal Capital is dangling S$0.215 in cash for each share of mainboard-listed POSH, in a voluntary conditional cash offer announced on Nov 4.
“In the meantime, shareholders are advised to exercise caution when dealing with their shares,” the POSH board said, urging them to take the independent directors’ recommendations into account when the circular to shareholders is sent out.
The counter closed up on Friday by half a Singapore cent, or 2.38 per cent, at the offer price of S$0.215, before the latest announcement.
Stay updated with
BT newsletters
Terms & conditions Sign up


Gets the action information
All the information send from Elgato
The port for the Stream Deck Application
The Event sent from Elgato, which is needed for the registration procedure
Through this object you can get, set and edit all available settings (global settings and context settings)
The UUID of the Plugin
Enables debug mode so you can see incoming and outgoing events.
Logs a message to the elgato log file
Opens a url
Requests global settings
Sends custom socket events to the stream deck software
Send data to the action
Data to send
Action context. (Default: current context)
Generated using TypeDoc
This will help you create the logic for the property inspector.
XeroxDev<EMAIL_ADDRESS>2021


JACK_METRO(1) JACK_METRO(1) NAME jack_metro - JACK toolkit metronome SYNOPSIS jack_metro [ -n name ] [ -f hz ] [ -D msecs ] [-a % ] [ -d % ] -b bpm DESCRIPTION jack_metro is a simple metronome for JACK. It generates a synthetic "tick" sound for every beat. Note that is does not connect its output port by default - to hear the sound it makes you must connect them using some other tool. OPTIONS -n, --name Specify a name for this instance of the metronome. -f, --frequency Hz Define the frequency of the "tick" in Hz. -D, --duration msecs Define the duration of the "tick" in milliseconds. -a, --attack %-age Define the duration of the attack phase of the "tick" as a per‐ centage of the duration. -d, --decay %-age Define the duration of the decay phase of the "tick" as a percent‐ age of the duration. --b, --bpm bpm Define the number of beats per minute. AUTHOR Anthony Van Groningen 1.9.9 November 2012 JACK_METRO(1)