El paquete Bouncy Castle Crypto es una implementación Java de algoritmos criptográficos, fue desarrollado por la Legión del Bouncy Castle, una organización benéfica australiana registrada, ¡con un poco de ayuda! La Legión y las últimas novedades de este paquete se pueden encontrar en https://www.bouncycastle.org.
La Legión también agradece las contribuciones hechas por otros a este paquete (consulte aquí la lista actual). Si desea contribuir a nuestros esfuerzos, no dude en ponerse en contacto con nosotros o visitar nuestra página de donaciones, patrocinar algún trabajo específico o comprar un contrato de soporte a través de Crypto Workshop (ahora parte de Keyfactor).
El paquete está organizado de modo que contiene una API liviana adecuada para su uso en cualquier entorno (incluido el J2ME recientemente lanzado) con la infraestructura adicional para adaptar los algoritmos al marco JCE.
Salvo que se indique lo contrario, este software se distribuye bajo una licencia basada en la licencia MIT X Consortium. Para ver la licencia, consulte aquí. La biblioteca OpenPGP también incluye una biblioteca BZIP2 modificada que tiene la licencia de software Apache, versión 2.0.
Nota : este árbol de fuentes no es la versión FIPS de las API. Si está interesado en nuestra versión FIPS, contáctenos directamente a [email protected].
El archivo bc_maven_public_key.asc contiene la clave pública utilizada para firmar nuestros artefactos en Maven Central. Necesitarás usar
gpg -o bc_maven_public_key.gpg --dearmor bc_maven_public_key.asc
Desarmar la llave antes de usarla. Una vez hecho esto, se puede verificar un archivo usando:
gpg --no-default-keyring --keyring ./bc_maven_public_key.gpg --verify file_name.jar.asc file_name.jar
Nota: se requiere ./ delante del nombre del archivo clave para indicarle a gpg que busque localmente.
Este proyecto ahora se puede construir y probar con JDK21.
Si el script de compilación detecta BC_JDK8, BC_JDK11, BC_JDK17, agregará a la tarea de prueba habitual una dependencia de las tareas de prueba que utilizan específicamente las JVM abordadas por esas variables ambientales. El script se basa en JAVA_HOME para seleccionar Java 21 si se utiliza.
Admitimos pruebas en JVM específicas, ya que es la única forma de estar seguros de que la biblioteca es compatible.
Las siguientes variables ambientales pueden apuntar opcionalmente a JAVA_HOME para cada versión de JVM.
export BC_JDK8=/path/to/java8 export BC_JDK11=/path/to/java11 export BC_JDK17=/path/to/java17
El proyecto ahora usa gradlew
que se puede invocar, por ejemplo:
# from the root of the project # Ensure JAVA_HOME points to JDK 21 or higher JAVA_HOME or that # gradlew can find a java 21 installation to use. ./gradlew clean build
El script gradle se esforzará por verificar su existencia pero no la exactitud de su valor.
Algunos subproyectos producen archivos jar de versiones múltiples y estos archivos se pueden probar específicamente en diferentes versiones de jvm.
Si las variables env están definidas:
export BC_JDK8=/path/to/java8 export BC_JDK11=/path/to/java11 export BC_JDK17=/path/to/java17
Si solo está presente un JDK de Java 21, entonces solo se ejecutan la tarea de prueba normal y test21.
La sala limpia JCE, para usar con JDK 1.1 a JDK 1.3, se encuentra en el directorio jce/src/main/java. Desde JDK 1.4 y posteriores, el JCE se entrega con la JVM, el código fuente de los JDK posteriores sigue el progreso realizado en las versiones posteriores de JCE. Si está utilizando una versión posterior del JDK que viene con una instalación de JCE, no incluya el directorio jce como archivo fuente, ya que entrará en conflicto con la API de JCE instalada con su JDK.
El módulo principal proporciona todas las funciones de las API ligeras.
El módulo prov proporciona toda la funcionalidad del proveedor JCA/JCE.
El módulo util es el hogar del código que utilizan otros módulos que no necesitan estar en prov. Por el momento se trata en gran medida de clases ASN.1 para el módulo PKIX.
El módulo pkix es el hogar del código para la generación de certificados X.509 y las API para estándares que dependen de ASN.1, como CMS, TSP, PKCS#12, OCSP, CRMF y CMP.
El módulo de correo proporciona una API S/MIME construida sobre CMS.
El módulo pg es el hogar del código utilizado para admitir OpenPGP.
El módulo tls es el hogar del código utilizado para una API TLS general y un proveedor JSSE.
Los scripts de compilación que vienen con la distribución completa permiten la creación de diferentes versiones utilizando los diferentes árboles de fuentes mientras excluyen las clases que no son apropiadas y copian las clases de compatibilidad requeridas de los directorios que contienen las clases de compatibilidad apropiadas para la distribución.
Si desea intentar crear una compilación usted mismo, utilizando su propio entorno, la mejor manera de hacerlo es comenzar con la compilación para la distribución que le interesa, asegurarse de que se compila y luego modificar los scripts de compilación para realizar las tareas. exclusiones requeridas y copias de archivos para su configuración; de lo contrario, es probable que obtenga excepciones de clase no encontrada. La última advertencia es que como la distribución j2me incluye algunas clases de compatibilidad que comienzan en el paquete java, es necesario utilizar un ofuscador para cambiar los nombres de los paquetes antes de intentar importar un midlet utilizando la API de BC.
Importante : también deberá consultar el repositorio bc-test-data al mismo nivel que el repositorio bc-java si desea ejecutar las pruebas.
Para ver algunos ejemplos, mire los programas de prueba en los paquetes:
org.bouncycastle.crypto.prueba
org.bouncycastle.jce.provider.test
org.bouncycastle.cms.prueba
org.bouncycastle.mail.smime.test
org.bouncycastle.openpgp.test
org.bouncycastle.tsp.prueba
También hay algunos programas de ejemplo específicos para trabajar con SMIME y OpenPGP. Se pueden encontrar en:
org.bouncycastle.mail.smime.ejemplos
org.bouncycastle.openpgp.ejemplos
Para aquellos que estén interesados, existen 2 listas de correo para participar en este proyecto. Para suscribirse utilice los enlaces a continuación e incluya la palabra suscribirse en el cuerpo del mensaje. (Para cancelar la suscripción, reemplace suscribir con cancelar suscripción en el cuerpo del mensaje)
[email protected]
Esta lista de correo es solo para anuncios de nuevos lanzamientos; los suscriptores generales no pueden publicar en ella.
[email protected]
Esta lista de correo es para discutir el desarrollo del paquete. Esto incluye errores, comentarios, solicitudes de mejoras, preguntas sobre el uso o el funcionamiento.
NOTA: Debe estar suscrito para enviar correo a la lista de correo anterior.
Si desea enviar comentarios directamente a los miembros de The Legion , utilice [email protected]. Si desea ayudar a que este proyecto sobreviva, considere hacer una donación.
Para informes/solicitudes de errores, puede informar problemas aquí en github o mediante feedback-crypto si es necesario. También aceptaremos solicitudes de extracción basadas en este repositorio, pero solo si cualquier código incluido puede distribuirse bajo la licencia Bouncy Castle.
¡Disfrutar!