# Copyright (C) 2009 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


# Version should match lib/bouncycastle/BUCK
[library "bouncyCastleProvider"]
  name = Bouncy Castle Crypto Provider v152
  url = http://www.bouncycastle.org/download/bcprov-jdk15on-152.jar
  sha1 = 88a941faf9819d371e3174b5ed56a3f3f7d73269
  remove = bcprov-.*[.]jar

# Version should match lib/bouncycastle/BUCK
[library "bouncyCastleSSL"]
  name = Bouncy Castle Crypto SSL v152
  url = http://www.bouncycastle.org/download/bcpkix-jdk15on-152.jar
  sha1 = b8ffac2bbc6626f86909589c8cc63637cc936504
  needs = bouncyCastleProvider
  remove = bcpkix-.*[.]jar

# Version should match lib/bouncycastle/BUCK
[library "bouncyCastlePGP"]
  name = Bouncy Castle Crypto OpenPGP v152
  url = http://www.bouncycastle.org/download/bcpg-jdk15on-152.jar
  sha1 = ff4665a4b5633ff6894209d5dd10b7e612291858
  needs = bouncyCastleProvider
  remove = bcpg-.*[.]jar

[library "mysqlDriver"]
  name = MySQL Connector/J 5.1.21
  url = http://repo2.maven.org/maven2/mysql/mysql-connector-java/5.1.21/mysql-connector-java-5.1.21.jar
  sha1 = 7abbd19fc2e2d5b92c0895af8520f7fa30266be9
  remove = mysql-connector-java-.*[.]jar

[library "oracleDriver"]
  name = Oracle JDBC driver 11g Release 2 (11.2.0)
  url = file:///u01/app/oracle/product/11.2.0/xe/jdbc/lib/ojdbc6.jar
  sha1 = 2f89cd9176772c3a6c261ce6a8e3d0d4425f5679
  remove = ojdbc6.jar

[library "db2Driver"]
  name = DB2 Type 4 JDBC driver (10.5)
  url = file:///opt/ibm/db2/V10.5/java/db2jcc4.jar
  sha1 = 9344d4fd41d6511f2d1d1deb7759056495b3a39b
  needs = db2DriverLicense
  remove = db2jcc4.jar

# Omit SHA-1 for license JAR as it's not stable and depends on the product
# the customer has purchased.
[library "db2DriverLicense"]
  name = DB2 Type 4 JDBC driver license (10.5)
  url = file:///opt/ibm/db2/V10.5/java/db2jcc_license_cu.jar
  remove = db2jcc_license_cu.jar
