# 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 "bouncyCastle"]
  name = Bouncy Castle Crypto v144
  url = http://www.bouncycastle.org/download/bcprov-jdk16-144.jar
  sha1 = 6327a5f7a3dc45e0fd735adb5d08c5a74c05c20c
  remove = bcprov-.*[.]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
