001: /*
002:
003: Derby - Class org.apache.derby.iapi.reference.Attribute
004:
005: Licensed to the Apache Software Foundation (ASF) under one or more
006: contributor license agreements. See the NOTICE file distributed with
007: this work for additional information regarding copyright ownership.
008: The ASF licenses this file to you under the Apache License, Version 2.0
009: (the "License"); you may not use this file except in compliance with
010: the License. You may obtain a copy of the License at
011:
012: http://www.apache.org/licenses/LICENSE-2.0
013:
014: Unless required by applicable law or agreed to in writing, software
015: distributed under the License is distributed on an "AS IS" BASIS,
016: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: See the License for the specific language governing permissions and
018: limitations under the License.
019:
020: */
021:
022: package org.apache.derby.iapi.reference;
023:
024: /**
025: List of all connection (JDBC) attributes by the system.
026:
027:
028: <P>
029: This class exists for two reasons
030: <Ol>
031: <LI> To act as the internal documentation for the attributes.
032: <LI> To remove the need to declare a java static field for the attributes
033: name in the protocol/implementation class. This reduces the footprint as
034: the string is final and thus can be included simply as a String constant pool entry.
035: </OL>
036: <P>
037: This class should not be shipped with the product.
038:
039: <P>
040: This class has no methods, all it contains are String's which by
041: are public, static and final since they are declared in an interface.
042:
043: <P>
044: At some point this class should be replaced by
045: org.apache.derby.shared.common.reference.Attribute.
046: The issue is that this class is used by ij to check attributes,
047: ij uses reflection on this class to get the list of valid attributes.
048: The expanded class in shared has the client attributes as well.
049: Ideally ij would work of an explicit list of attributes and not
050: infer the set from reflection. See DERBY-1151
051: */
052:
053: public interface Attribute {
054:
055: /**
056: Not an attribute but the root for the JDBC URL that Derby supports.
057: */
058: String PROTOCOL = "jdbc:derby:";
059:
060: /**
061: * The SQLJ protocol for getting the default connection
062: * for server side jdbc
063: */
064: String SQLJ_NESTED = "jdbc:default:connection";
065:
066: // Network Protocols. These need to be rejected by the embedded driver.
067:
068: /**
069: * The protocol for Derby Network Client
070: */
071: String DNC_PROTOCOL = "jdbc:derby://";
072:
073: /**
074: * The protocol for the IBM Universal JDBC Driver
075: *
076: */
077: String JCC_PROTOCOL = "jdbc:derby:net:";
078:
079: /**
080: Attribute name to encrypt the database on disk.
081: If set to true, all user data is stored encrypted on disk.
082: */
083: String DATA_ENCRYPTION = "dataEncryption";
084:
085: /**
086: If dataEncryption is true, use this attribute to pass in the
087: secret key. The secret key must be at least 8 characters long.
088: This key must not be stored persistently in cleartext anywhere.
089: */
090:
091: String BOOT_PASSWORD = "bootPassword";
092:
093: /**
094: The attribute that is used to chage the secret key of an encrypted
095: database. The secret key must be at least 8 characters long.
096: This key must not be stored persistently in cleartext anywhere.
097: */
098:
099: String NEW_BOOT_PASSWORD = "newBootPassword";
100:
101: /**
102: The attribute that is used for the database name, from
103: the JDBC notion of jdbc:<subprotocol>:<subname>
104: */
105: String DBNAME_ATTR = "databaseName";
106:
107: /**
108: The attribute that is used to request a shutdown.
109: */
110: String SHUTDOWN_ATTR = "shutdown";
111:
112: /**
113: The attribute that is used to request a database create.
114: */
115: String CREATE_ATTR = "create";
116:
117: /**
118: The attribute that is used to set the user name.
119: */
120: String USERNAME_ATTR = "user";
121:
122: /**
123: The attribute that is used to set the user password.
124: */
125: String PASSWORD_ATTR = "password";
126:
127: /**
128: The attribute that is used to set the connection's DRDA ID.
129: */
130: String DRDAID_ATTR = "drdaID";
131:
132: /**
133: The attribute that is used to allow upgrade.
134: */
135: String UPGRADE_ATTR = "upgrade";
136:
137: /**
138: Put the log on a different device.
139: */
140: String LOG_DEVICE = "logDevice";
141:
142: /**
143: Set the territory for the database.
144: */
145: String TERRITORY = "territory";
146:
147: /**
148: Set the collation sequence of the database, currently on IDENTITY
149: will be supported (strings will sort according to binary comparison).
150: */
151: String COLLATE = "collate";
152:
153: /**
154: Attribute for encrypting a database.
155: Specifies the cryptographic services provider.
156: */
157: String CRYPTO_PROVIDER = "encryptionProvider";
158:
159: /**
160: Attribute for encrypting a database.
161: Specifies the cryptographic algorithm.
162: */
163: String CRYPTO_ALGORITHM = "encryptionAlgorithm";
164:
165: /**
166: Attribute for encrypting a database.
167: Specifies the key length in bytes for the specified cryptographic algorithm.
168: */
169: String CRYPTO_KEY_LENGTH = "encryptionKeyLength";
170:
171: /**
172: Attribute for encrypting a database.
173: Specifies the actual key. When this is specified
174: all the supplied crypto information is stored
175: external to the database, ie by the application.
176: */
177: String CRYPTO_EXTERNAL_KEY = "encryptionKey";
178:
179: /**
180: The attribute that is used to chage the encryption
181: key of an encrypted database. When this is specified
182: all the supplied crypto information is stored
183: external to the database, ie by the application.
184: */
185: String NEW_CRYPTO_EXTERNAL_KEY = "newEncryptionKey";
186:
187: /**
188: One can encrypt the database with an encryption key at create time.
189: For security reasons, this key is not made persistent in the database.
190:
191: But it is necessary to verify the encryption key whenever booting the database
192: before we access the data/logs to avoid the risk of corrupting the database because
193: of a wrong encryption key.
194:
195: This attribute refers to the name of the file where encrypted data is stored for
196: verification of encryption key.
197: */
198: String CRYPTO_EXTERNAL_KEY_VERIFY_FILE = "verifyKey.dat";
199:
200: /**
201: * This attribute is used to request to create a database from backup.
202: * This will throw error if a database with same already exists at the
203: * location where we tring to create.
204: */
205: String CREATE_FROM = "createFrom";
206:
207: /**
208: * This attribute is used to request a database restore from backup.
209: * It must be used only when the active database is corrupted,
210: * because it will cleanup the existing database and replace
211: * it from the backup.
212: */
213: String RESTORE_FROM = "restoreFrom";
214:
215: /**
216: The attribute that is used to request a roll-forward recovery of the database.
217: */
218: String ROLL_FORWARD_RECOVERY_FROM = "rollForwardRecoveryFrom";
219:
220: /**
221: * securityMechanism sets the DRDA mechanism in-use for the client.
222: * Internal only.
223: */
224: String CLIENT_SECURITY_MECHANISM = "securityMechanism";
225:
226: /**
227: * Internal attributes. Mainly used by DRDA and Derby BUILTIN
228: * authentication provider in some security mechanism context
229: * (SECMEC_USRSSBPWD).
230: *
231: * DRDA_SECTKN_IN is the random client seed (RDs)
232: * DRDA_SECTKN_OUT is the random server seed (RDr)
233: */
234: String DRDA_SECTKN_IN = "drdaSecTokenIn";
235: String DRDA_SECTKN_OUT = "drdaSecTokenOut";
236: }
|