Bouncy Castle Crypto 패키지는 암호화 알고리즘을 Java로 구현한 것으로, 등록된 호주 자선 단체인 Legion of the Bouncy Castle이 약간의 도움을 받아 개발했습니다! The Legion과 이 패키지의 최신 소식은 https://www.bouncycastle.org에서 확인할 수 있습니다.
Legion은 또한 다른 사람들이 이 패키지에 기여한 공헌에 대해 감사하게 생각합니다(현재 목록은 여기를 참조하세요). 우리의 노력에 기여하고 싶다면 언제든지 우리에게 연락하거나 기부 페이지를 방문하거나 특정 작업을 후원하거나 Crypto Workshop(현재 Keyfactor의 일부)을 통해 지원 계약을 구매하십시오.
패키지는 JCE 프레임워크에 알고리즘을 맞추기 위한 추가 인프라와 함께 모든 환경(새로 출시된 J2ME 포함)에서 사용하기에 적합한 경량 API를 포함하도록 구성됩니다.
달리 명시되지 않는 한, 이 소프트웨어는 MIT X 컨소시엄 라이선스에 기반한 라이선스에 따라 배포됩니다. 라이센스를 보려면 여기를 참조하십시오. OpenPGP 라이브러리에는 Apache 소프트웨어 라이센스 버전 2.0에 따라 라이센스가 부여된 수정된 BZIP2 라이브러리도 포함되어 있습니다.
참고 : 이 소스 트리는 API의 FIPS 버전이 아닙니다. FIPS 버전에 관심이 있으시면 [email protected]로 직접 문의해 주세요.
bc_maven_public_key.asc 파일에는 Maven Central에서 아티팩트에 서명하는 데 사용되는 공개 키가 포함되어 있습니다. 당신은 사용해야합니다
gpg -o bc_maven_public_key.gpg --dearmor bc_maven_public_key.asc
사용하기 전에 열쇠를 소중히 여기십시오. 완료되면 다음을 사용하여 파일을 확인할 수 있습니다.
gpg --no-default-keyring --keyring ./bc_maven_public_key.gpg --verify file_name.jar.asc file_name.jar
참고: gpg에게 로컬로 보라고 지시하려면 키 파일 이름 앞에 ./가 필요합니다.
이제 이 프로젝트를 JDK21로 빌드하고 테스트할 수 있습니다.
빌드 스크립트가 BC_JDK8, BC_JDK11, BC_JDK17을 감지하면 해당 환경 변수에 의해 처리되는 JVM을 특별히 사용하는 테스트 작업에 대한 종속성을 일반적인 테스트 작업에 추가합니다. 스크립트는 Java 21이 사용되는 경우 이를 선택하기 위해 JAVA_HOME을 사용합니다.
라이브러리가 호환되는지 확인할 수 있는 유일한 방법이므로 특정 JVM에 대한 테스트를 지원합니다.
다음 환경 변수는 선택적으로 각 JVM 버전에 대한 JAVA_HOME을 가리킬 수 있습니다.
export BC_JDK8=/path/to/java8 export BC_JDK11=/path/to/java11 export BC_JDK17=/path/to/java17
이제 프로젝트는 다음과 같이 호출할 수 있는 gradlew
사용합니다.
# 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
Gradle 스크립트는 존재 여부를 확인하려고 노력하지만 값의 정확성은 확인하지 않습니다.
일부 하위 프로젝트는 다중 릴리스 jar를 생성하며 이러한 jar는 특히 다양한 jvm 버전에서 테스트될 수 있습니다.
환경 변수가 정의된 경우:
export BC_JDK8=/path/to/java8 export BC_JDK11=/path/to/java11 export BC_JDK17=/path/to/java17
Java 21 JDK만 있는 경우 일반 테스트 작업과 test21만 실행됩니다.
JDK 1.1부터 JDK 1.3까지 사용하기 위한 클린룸 JCE는 jce/src/main/java 디렉토리에 있습니다. JDK 1.4 이상에서 JCE는 JVM과 함께 제공되며 이후 JDK의 소스는 JCE의 이후 버전에서 이루어진 진행 상황을 따릅니다. JCE 설치와 함께 제공되는 이후 버전의 JDK를 사용하는 경우 JDK와 함께 설치된 JCE API와 충돌하므로 jce 디렉토리를 소스 파일로 포함 하지 마십시오 .
핵심 모듈은 경량 API의 모든 기능을 제공합니다.
prov 모듈은 모든 JCA/JCE 제공자 기능을 제공합니다.
util 모듈은 prov에 있을 필요가 없는 다른 모듈에서 사용되는 코드의 홈입니다. 현재 이는 주로 PKIX 모듈용 ASN.1 클래스입니다.
pkix 모듈은 X.509 인증서 생성을 위한 코드와 CMS, TSP, PKCS#12, OCSP, CRMF 및 CMP와 같은 ASN.1을 사용하는 표준용 API의 홈입니다.
메일 모듈은 CMS 위에 구축된 S/MIME API를 제공합니다.
pg 모듈은 OpenPGP를 지원하는 데 사용되는 코드의 홈입니다.
tls 모듈은 일반 TLS API 및 JSSE 공급자에 사용되는 코드의 홈입니다.
전체 배포와 함께 제공되는 빌드 스크립트를 사용하면 적절하지 않은 클래스를 제외하고 배포에 적합한 호환성 클래스가 포함된 디렉터리에서 필요한 호환성 클래스를 복사하면서 다양한 소스 트리를 사용하여 다양한 릴리스를 생성할 수 있습니다.
자신의 환경을 사용하여 직접 빌드를 생성하려는 경우 가장 좋은 방법은 관심 있는 배포판에 대한 빌드부터 시작하여 빌드를 확인한 다음 빌드 스크립트를 수정하여 다음을 수행하는 것입니다. 설정에 필요한 제외 및 파일 사본이 필요합니다. 그렇지 않으면 클래스를 찾을 수 없음 예외가 발생할 수 있습니다. 이에 대한 마지막 주의 사항은 j2me 배포판에 Java 패키지에서 시작하는 일부 호환성 클래스가 포함되어 있으므로 BC API를 사용하여 미들렛을 가져오기 전에 난독 처리기를 사용하여 패키지 이름을 변경해야 한다는 것입니다.
중요 : 테스트를 실행하려면 bc-java 저장소와 동일한 수준의 bc-test-data 저장소도 확인해야 합니다.
몇 가지 예를 보려면 패키지의 테스트 프로그램을 살펴보세요.
org.bouncycastle.crypto.test
org.bouncycastle.jce.provider.test
org.bouncycastle.cms.test
org.bouncycastle.mail.smime.test
org.bouncycastle.openpgp.test
org.bouncycastle.tsp.test
SMIME 및 OpenPGP를 처리하기 위한 몇 가지 구체적인 예제 프로그램도 있습니다. 다음에서 찾을 수 있습니다.
org.bouncycastle.mail.smime.examples
org.bouncycastle.openpgp.examples
관심 있는 분들을 위해 이 프로젝트에 참여할 수 있는 메일링 리스트가 2개 있습니다. 구독하려면 아래 링크를 사용하고 메시지 본문에 구독이라는 단어를 포함하세요. (구독을 취소하려면 메시지 본문에서 구독을 구독 취소 로 바꾸세요)
[email protected]
이 메일링 리스트는 신제품 발표만을 위한 것이며, 일반 가입자는 여기에 게시할 수 없습니다.
[email protected]
이 메일링 리스트는 패키지 개발에 대한 논의를 위한 것입니다. 여기에는 버그, 의견, 개선 요청, 사용 또는 작동에 대한 질문이 포함됩니다.
참고: 위 메일링 리스트로 메일을 보내려면 가입해야 합니다.
The Legion 회원들에게 직접 피드백을 제공하고 싶다면 [email protected]를 이용해 주세요. 이 프로젝트의 생존을 돕고 싶다면 기부를 고려해 보세요.
버그 보고/요청의 경우 여기 github에서 문제를 보고하거나 필요한 경우 Feedback-crypto를 통해 보고할 수 있습니다. 우리는 이 리포지토리를 기반으로 하는 풀 요청도 수락하지만 포함된 모든 코드가 Bouncy Castle 라이센스에 따라 배포될 수 있다는 전제 하에만 허용됩니다.
즐기다!