mirror of
https://github.com/pgpainless/pgpainless.git
synced 2024-11-26 14:22:05 +01:00
Add checkstyle rules
This commit is contained in:
parent
975b336699
commit
5ec1e1a128
36 changed files with 650 additions and 68 deletions
|
@ -16,6 +16,13 @@ animalsniffer {
|
||||||
sourceSets = [sourceSets.main]
|
sourceSets = [sourceSets.main]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
apply plugin: 'checkstyle'
|
||||||
|
|
||||||
|
checkstyle {
|
||||||
|
configFile = 'config/checkstyle.xml' as File
|
||||||
|
toolVersion = '8.10'
|
||||||
|
}
|
||||||
|
|
||||||
group 'org.pgpainless'
|
group 'org.pgpainless'
|
||||||
version '0.1-SNAPSHOT'
|
version '0.1-SNAPSHOT'
|
||||||
|
|
||||||
|
|
233
config/checkstyle.xml
Normal file
233
config/checkstyle.xml
Normal file
|
@ -0,0 +1,233 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE module PUBLIC
|
||||||
|
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
|
||||||
|
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
|
||||||
|
<module name="Checker">
|
||||||
|
|
||||||
|
<!-- Suppressions -->
|
||||||
|
<module name="SuppressionFilter">
|
||||||
|
<property name="file" value="config/suppressions.xml"/>
|
||||||
|
</module>
|
||||||
|
|
||||||
|
<!-- License Header -->
|
||||||
|
<module name="Header">
|
||||||
|
<property name="headerFile" value="config/checkstyleLicenseHeader.txt"/>
|
||||||
|
<property name="ignoreLines" value="2"/>
|
||||||
|
<property name="fileExtensions" value="java"/>
|
||||||
|
</module>
|
||||||
|
|
||||||
|
<module name="NewlineAtEndOfFile">
|
||||||
|
<property name="lineSeparator" value="lf"/>
|
||||||
|
</module>
|
||||||
|
|
||||||
|
<module name="RegexpSingleline">
|
||||||
|
<!--
|
||||||
|
Matches StringBuilder.append(String) calls where the
|
||||||
|
argument is a String of length one. Those should be replaced
|
||||||
|
with append(char) for performance reasons.
|
||||||
|
|
||||||
|
TODO: This could be more advanced in order to match also
|
||||||
|
- .append("\u1234")
|
||||||
|
-->
|
||||||
|
<property name="format" value="\.append\("(.|\\.)"\)"/>
|
||||||
|
<property name="message" value="Don't use StringBuilder.append(String) when you can use StringBuilder.append(char). Solution: Replace double quotes of append's argument with single quotes."/>
|
||||||
|
</module>
|
||||||
|
|
||||||
|
<!-- Whitespace only lines -->
|
||||||
|
<module name="RegexpSingleline">
|
||||||
|
<property name="format" value="^\s+$"/>
|
||||||
|
<property name="message" value="Line containing only whitespace character(s)"/>
|
||||||
|
</module>
|
||||||
|
|
||||||
|
<!-- Mixed spaces/tabs -->
|
||||||
|
<module name="RegexpSingleline">
|
||||||
|
<!-- We use {2,} instead of + here to address the typical case where a file was written
|
||||||
|
with tabs but javadoc is causing '\t *' -->
|
||||||
|
<property name="format" value="^\t+ {2,}"/>
|
||||||
|
<property name="message" value="Line containing space(s) after tab(s)"/>
|
||||||
|
</module>
|
||||||
|
|
||||||
|
<!-- Trailing whitespaces -->
|
||||||
|
<module name="RegexpSingleline">
|
||||||
|
<!--
|
||||||
|
Explaining the following Regex
|
||||||
|
|
||||||
|
\s+ $
|
||||||
|
| +- End of Line (2)
|
||||||
|
+- At least one whitespace (1)
|
||||||
|
|
||||||
|
Rationale:
|
||||||
|
Matches trailing whitespace (2) in lines containing at least one (1) non-whitespace character
|
||||||
|
-->
|
||||||
|
<property name="format" value="\s+$"/>
|
||||||
|
<property name="message" value="Line containing trailing whitespace character(s)"/>
|
||||||
|
</module>
|
||||||
|
|
||||||
|
<!-- <module name="RegexpSingleline"> -->
|
||||||
|
<!-- <property name="format" value="fqdn"/> -->
|
||||||
|
<!-- </module> -->
|
||||||
|
|
||||||
|
<!-- Space after // -->
|
||||||
|
<module name="RegexpSingleline">
|
||||||
|
<property name="format" value="^\s*//[^\s]"/>
|
||||||
|
<property name="message" value="Comment start ('//') followed by non-space character. You would not continue after a punctuation without a space, would you?"/>
|
||||||
|
</module>
|
||||||
|
|
||||||
|
<module name="JavadocPackage">
|
||||||
|
</module>
|
||||||
|
|
||||||
|
<module name="TreeWalker">
|
||||||
|
<module name="SuppressionCommentFilter"/>
|
||||||
|
<module name="FinalClass"/>
|
||||||
|
<module name="UnusedImports">
|
||||||
|
<property name="processJavadoc" value="true"/>
|
||||||
|
</module>
|
||||||
|
<module name="AvoidStarImport"/>
|
||||||
|
<module name="IllegalImport"/>
|
||||||
|
<module name="RedundantImport"/>
|
||||||
|
<module name="RedundantModifier"/>
|
||||||
|
<module name="ModifierOrder"/>
|
||||||
|
<module name="UpperEll"/>
|
||||||
|
<module name="ArrayTypeStyle"/>
|
||||||
|
<module name="GenericWhitespace"/>
|
||||||
|
<module name="EmptyStatement"/>
|
||||||
|
<module name="PackageDeclaration"/>
|
||||||
|
<module name="LeftCurly"/>
|
||||||
|
|
||||||
|
<!-- printStackTrace -->
|
||||||
|
<module name="RegexpSinglelineJava">
|
||||||
|
<property name="format" value="printStackTrace"/>
|
||||||
|
<property name="message" value="Usage of printStackTrace. Either rethrow exception, or log using Logger."/>
|
||||||
|
<property name="ignoreComments" value="true"/>
|
||||||
|
</module>
|
||||||
|
|
||||||
|
<!-- println -->
|
||||||
|
<module name="RegexpSinglelineJava">
|
||||||
|
<property name="format" value="println"/>
|
||||||
|
<property name="message" value="Usage of println"/>
|
||||||
|
<property name="ignoreComments" value="true"/>
|
||||||
|
</module>
|
||||||
|
|
||||||
|
<!-- Spaces instead of Tabs -->
|
||||||
|
<module name="RegexpSinglelineJava">
|
||||||
|
<property name="format" value="^\t+"/>
|
||||||
|
<property name="message" value="Indent must not use tab characters. Use space instead."/>
|
||||||
|
</module>
|
||||||
|
|
||||||
|
<module name="JavadocMethod">
|
||||||
|
<!-- TODO stricten those checks -->
|
||||||
|
<property name="scope" value="public"/>
|
||||||
|
<property name="allowUndeclaredRTE" value="true"/>
|
||||||
|
<property name="allowMissingParamTags" value="true"/>
|
||||||
|
<property name="allowMissingThrowsTags" value="true"/>
|
||||||
|
<property name="allowMissingReturnTag" value="true"/>
|
||||||
|
<property name="allowMissingJavadoc" value="true"/>
|
||||||
|
<property name="suppressLoadErrors" value="true"/>
|
||||||
|
</module>
|
||||||
|
|
||||||
|
<module name="JavadocStyle">
|
||||||
|
<property name="scope" value="public"/>
|
||||||
|
<property name="checkEmptyJavadoc" value="true"/>
|
||||||
|
<property name="checkHtml" value="false"/>
|
||||||
|
</module>
|
||||||
|
|
||||||
|
<module name="ParenPad">
|
||||||
|
</module>
|
||||||
|
|
||||||
|
<!-- Whitespace after key tokens -->
|
||||||
|
<module name="NoWhitespaceAfter">
|
||||||
|
<property name="tokens" value="INC
|
||||||
|
, DEC
|
||||||
|
, UNARY_MINUS
|
||||||
|
, UNARY_PLUS
|
||||||
|
, BNOT, LNOT
|
||||||
|
, DOT
|
||||||
|
, ARRAY_DECLARATOR
|
||||||
|
, INDEX_OP
|
||||||
|
"/>
|
||||||
|
</module>
|
||||||
|
|
||||||
|
<!-- Whitespace after key words -->
|
||||||
|
<module name="WhitespaceAfter">
|
||||||
|
<property name="tokens" value="TYPECAST
|
||||||
|
, LITERAL_IF
|
||||||
|
, LITERAL_ELSE
|
||||||
|
, LITERAL_WHILE
|
||||||
|
, LITERAL_DO
|
||||||
|
, LITERAL_FOR
|
||||||
|
, DO_WHILE
|
||||||
|
"/>
|
||||||
|
</module>
|
||||||
|
|
||||||
|
<module name="WhitespaceAround">
|
||||||
|
<property
|
||||||
|
name="ignoreEnhancedForColon"
|
||||||
|
value="false"
|
||||||
|
/>
|
||||||
|
<!-- Currently disabled tokens: LCURLY, RCURLY, WILDCARD_TYPE, GENERIC_START, GENERIC_END -->
|
||||||
|
<property
|
||||||
|
name="tokens"
|
||||||
|
value="ASSIGN
|
||||||
|
, ARRAY_INIT
|
||||||
|
, BAND
|
||||||
|
, BAND_ASSIGN
|
||||||
|
, BOR
|
||||||
|
, BOR_ASSIGN
|
||||||
|
, BSR
|
||||||
|
, BSR_ASSIGN
|
||||||
|
, BXOR
|
||||||
|
, BXOR_ASSIGN
|
||||||
|
, COLON
|
||||||
|
, DIV
|
||||||
|
, DIV_ASSIGN
|
||||||
|
, DO_WHILE
|
||||||
|
, EQUAL
|
||||||
|
, GE
|
||||||
|
, GT
|
||||||
|
, LAMBDA
|
||||||
|
, LAND
|
||||||
|
, LE
|
||||||
|
, LITERAL_CATCH
|
||||||
|
, LITERAL_DO
|
||||||
|
, LITERAL_ELSE
|
||||||
|
, LITERAL_FINALLY
|
||||||
|
, LITERAL_FOR
|
||||||
|
, LITERAL_IF
|
||||||
|
, LITERAL_RETURN
|
||||||
|
, LITERAL_SWITCH
|
||||||
|
, LITERAL_SYNCHRONIZED
|
||||||
|
, LITERAL_TRY
|
||||||
|
, LITERAL_WHILE
|
||||||
|
, LOR
|
||||||
|
, LT
|
||||||
|
, MINUS
|
||||||
|
, MINUS_ASSIGN
|
||||||
|
, MOD
|
||||||
|
, MOD_ASSIGN
|
||||||
|
, NOT_EQUAL
|
||||||
|
, PLUS
|
||||||
|
, PLUS_ASSIGN
|
||||||
|
, QUESTION
|
||||||
|
, SL
|
||||||
|
, SLIST
|
||||||
|
, SL_ASSIGN
|
||||||
|
, SR
|
||||||
|
, SR_ASSIGN
|
||||||
|
, STAR
|
||||||
|
, STAR_ASSIGN
|
||||||
|
, LITERAL_ASSERT
|
||||||
|
, TYPE_EXTENSION_AND
|
||||||
|
"/>
|
||||||
|
</module>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<module name="CustomImportOrder">
|
||||||
|
<property name="customImportOrderRules"
|
||||||
|
value="STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE"/>
|
||||||
|
<property name="specialImportsRegExp" value="^org\.pgpainless\.pgpainless"/>
|
||||||
|
<property name="sortImportsInGroupAlphabetically" value="true"/>
|
||||||
|
<property name="separateLineBetweenGroups" value="true"/>
|
||||||
|
</module>
|
||||||
|
-->
|
||||||
|
</module>
|
||||||
|
</module>
|
15
config/checkstyleLicenseHeader.txt
Normal file
15
config/checkstyleLicenseHeader.txt
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2018 Author Authorsson.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
13
config/suppressions.xml
Normal file
13
config/suppressions.xml
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE suppressions PUBLIC
|
||||||
|
"-//Puppy Crawl//DTD Suppressions 1.1//EN"
|
||||||
|
"http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
|
||||||
|
<suppressions>
|
||||||
|
<!-- GenericWhitespace has some problems with false postive, leave
|
||||||
|
it disabled until gradle uses a checkstyle version where this is fixed
|
||||||
|
-->
|
||||||
|
<suppress checks="GenericWhitespace"
|
||||||
|
files="Protocol.java" />
|
||||||
|
<!-- Suppress JavadocPackage in the test packages -->
|
||||||
|
<suppress checks="JavadocPackage" files="[\\/]test[\\/]"/>
|
||||||
|
</suppressions>
|
|
@ -22,10 +22,10 @@ import org.bouncycastle.bcpg.CompressionAlgorithmTags;
|
||||||
|
|
||||||
public enum CompressionAlgorithm {
|
public enum CompressionAlgorithm {
|
||||||
|
|
||||||
UNCOMPRESSED( CompressionAlgorithmTags.UNCOMPRESSED),
|
UNCOMPRESSED (CompressionAlgorithmTags.UNCOMPRESSED),
|
||||||
ZIP( CompressionAlgorithmTags.ZIP),
|
ZIP (CompressionAlgorithmTags.ZIP),
|
||||||
ZLIB( CompressionAlgorithmTags.ZLIB),
|
ZLIB (CompressionAlgorithmTags.ZLIB),
|
||||||
BZIP2( CompressionAlgorithmTags.BZIP2),
|
BZIP2 (CompressionAlgorithmTags.BZIP2),
|
||||||
;
|
;
|
||||||
|
|
||||||
private static final Map<Integer, CompressionAlgorithm> MAP = new HashMap<>();
|
private static final Map<Integer, CompressionAlgorithm> MAP = new HashMap<>();
|
||||||
|
|
|
@ -22,17 +22,17 @@ import org.bouncycastle.bcpg.HashAlgorithmTags;
|
||||||
|
|
||||||
public enum HashAlgorithm {
|
public enum HashAlgorithm {
|
||||||
|
|
||||||
MD5( HashAlgorithmTags.MD5),
|
MD5 (HashAlgorithmTags.MD5),
|
||||||
SHA1( HashAlgorithmTags.SHA1),
|
SHA1 (HashAlgorithmTags.SHA1),
|
||||||
RIPEMD160( HashAlgorithmTags.RIPEMD160),
|
RIPEMD160 (HashAlgorithmTags.RIPEMD160),
|
||||||
DOUBLE_SHA( HashAlgorithmTags.DOUBLE_SHA),
|
DOUBLE_SHA (HashAlgorithmTags.DOUBLE_SHA),
|
||||||
MD2( HashAlgorithmTags.MD2),
|
MD2 (HashAlgorithmTags.MD2),
|
||||||
TIGER_192( HashAlgorithmTags.TIGER_192),
|
TIGER_192 (HashAlgorithmTags.TIGER_192),
|
||||||
HAVAL_5_160(HashAlgorithmTags.HAVAL_5_160),
|
HAVAL_5_160(HashAlgorithmTags.HAVAL_5_160),
|
||||||
SHA256( HashAlgorithmTags.SHA256),
|
SHA256 (HashAlgorithmTags.SHA256),
|
||||||
SHA384( HashAlgorithmTags.SHA384),
|
SHA384 (HashAlgorithmTags.SHA384),
|
||||||
SHA512( HashAlgorithmTags.SHA512),
|
SHA512 (HashAlgorithmTags.SHA512),
|
||||||
SHA224( HashAlgorithmTags.SHA224),
|
SHA224 (HashAlgorithmTags.SHA224),
|
||||||
;
|
;
|
||||||
// Coincidence? I don't this so...
|
// Coincidence? I don't this so...
|
||||||
private static final Map<Integer, HashAlgorithm> MAP = new HashMap<>();
|
private static final Map<Integer, HashAlgorithm> MAP = new HashMap<>();
|
||||||
|
|
|
@ -22,13 +22,13 @@ import org.bouncycastle.bcpg.sig.KeyFlags;
|
||||||
|
|
||||||
public enum KeyFlag {
|
public enum KeyFlag {
|
||||||
|
|
||||||
CERTIFY_OTHER( KeyFlags.CERTIFY_OTHER),
|
CERTIFY_OTHER (KeyFlags.CERTIFY_OTHER),
|
||||||
SIGN_DATA( KeyFlags.SIGN_DATA),
|
SIGN_DATA (KeyFlags.SIGN_DATA),
|
||||||
ENCRYPT_COMMS( KeyFlags.ENCRYPT_COMMS),
|
ENCRYPT_COMMS (KeyFlags.ENCRYPT_COMMS),
|
||||||
ENCRYPT_STORAGE(KeyFlags.ENCRYPT_STORAGE),
|
ENCRYPT_STORAGE(KeyFlags.ENCRYPT_STORAGE),
|
||||||
SPLIT( KeyFlags.SPLIT),
|
SPLIT (KeyFlags.SPLIT),
|
||||||
AUTHENTICATION( KeyFlags.AUTHENTICATION),
|
AUTHENTICATION (KeyFlags.AUTHENTICATION),
|
||||||
SHARED( KeyFlags.SHARED),
|
SHARED (KeyFlags.SHARED),
|
||||||
;
|
;
|
||||||
|
|
||||||
private final int flag;
|
private final int flag;
|
||||||
|
|
|
@ -22,19 +22,20 @@ import org.bouncycastle.bcpg.PublicKeyAlgorithmTags;
|
||||||
|
|
||||||
public enum PublicKeyAlgorithm {
|
public enum PublicKeyAlgorithm {
|
||||||
|
|
||||||
RSA_GENERAL( PublicKeyAlgorithmTags.RSA_GENERAL),
|
RSA_GENERAL (PublicKeyAlgorithmTags.RSA_GENERAL),
|
||||||
RSA_ENCRYPT( PublicKeyAlgorithmTags.RSA_ENCRYPT),
|
RSA_ENCRYPT (PublicKeyAlgorithmTags.RSA_ENCRYPT),
|
||||||
RSA_SIGN( PublicKeyAlgorithmTags.RSA_SIGN),
|
RSA_SIGN (PublicKeyAlgorithmTags.RSA_SIGN),
|
||||||
ELGAMAL_ENCRYPT(PublicKeyAlgorithmTags.ELGAMAL_ENCRYPT),
|
ELGAMAL_ENCRYPT (PublicKeyAlgorithmTags.ELGAMAL_ENCRYPT),
|
||||||
DSA(PublicKeyAlgorithmTags.DSA),
|
DSA (PublicKeyAlgorithmTags.DSA),
|
||||||
/**
|
/**
|
||||||
|
* EC is deprecated.
|
||||||
* @deprecated use {@link #ECDH} instead.
|
* @deprecated use {@link #ECDH} instead.
|
||||||
*/
|
*/
|
||||||
EC( PublicKeyAlgorithmTags.EC),
|
EC (PublicKeyAlgorithmTags.EC),
|
||||||
ECDH( PublicKeyAlgorithmTags.ECDH),
|
ECDH (PublicKeyAlgorithmTags.ECDH),
|
||||||
ECDSA( PublicKeyAlgorithmTags.ECDSA),
|
ECDSA (PublicKeyAlgorithmTags.ECDSA),
|
||||||
ELGAMAL_GENERAL(PublicKeyAlgorithmTags.ELGAMAL_GENERAL),
|
ELGAMAL_GENERAL (PublicKeyAlgorithmTags.ELGAMAL_GENERAL),
|
||||||
DIFFIE_HELLMAN( PublicKeyAlgorithmTags.DIFFIE_HELLMAN),
|
DIFFIE_HELLMAN (PublicKeyAlgorithmTags.DIFFIE_HELLMAN),
|
||||||
;
|
;
|
||||||
|
|
||||||
private static final Map<Integer, PublicKeyAlgorithm> MAP = new HashMap<>();
|
private static final Map<Integer, PublicKeyAlgorithm> MAP = new HashMap<>();
|
||||||
|
|
|
@ -22,20 +22,24 @@ import org.bouncycastle.bcpg.SymmetricKeyAlgorithmTags;
|
||||||
|
|
||||||
public enum SymmetricKeyAlgorithm {
|
public enum SymmetricKeyAlgorithm {
|
||||||
|
|
||||||
NULL( SymmetricKeyAlgorithmTags.NULL),
|
NULL (SymmetricKeyAlgorithmTags.NULL),
|
||||||
IDEA( SymmetricKeyAlgorithmTags.IDEA),
|
/**
|
||||||
TRIPLE_DES( SymmetricKeyAlgorithmTags.TRIPLE_DES),
|
* IDEA is deprecated.
|
||||||
CAST5( SymmetricKeyAlgorithmTags.CAST5),
|
* @deprecated use a different algorithm.
|
||||||
BLOWFISH( SymmetricKeyAlgorithmTags.BLOWFISH),
|
*/
|
||||||
SAFER( SymmetricKeyAlgorithmTags.SAFER),
|
IDEA (SymmetricKeyAlgorithmTags.IDEA),
|
||||||
DES( SymmetricKeyAlgorithmTags.DES),
|
TRIPLE_DES (SymmetricKeyAlgorithmTags.TRIPLE_DES),
|
||||||
AES_128( SymmetricKeyAlgorithmTags.AES_128),
|
CAST5 (SymmetricKeyAlgorithmTags.CAST5),
|
||||||
AES_192( SymmetricKeyAlgorithmTags.AES_192),
|
BLOWFISH (SymmetricKeyAlgorithmTags.BLOWFISH),
|
||||||
AES_256( SymmetricKeyAlgorithmTags.AES_256),
|
SAFER (SymmetricKeyAlgorithmTags.SAFER),
|
||||||
TWOFISH( SymmetricKeyAlgorithmTags.TWOFISH),
|
DES (SymmetricKeyAlgorithmTags.DES),
|
||||||
CAMELLIA_128( SymmetricKeyAlgorithmTags.CAMELLIA_128),
|
AES_128 (SymmetricKeyAlgorithmTags.AES_128),
|
||||||
CAMELLIA_192( SymmetricKeyAlgorithmTags.CAMELLIA_192),
|
AES_192 (SymmetricKeyAlgorithmTags.AES_192),
|
||||||
CAMELLIA_256( SymmetricKeyAlgorithmTags.CAMELLIA_256),
|
AES_256 (SymmetricKeyAlgorithmTags.AES_256),
|
||||||
|
TWOFISH (SymmetricKeyAlgorithmTags.TWOFISH),
|
||||||
|
CAMELLIA_128 (SymmetricKeyAlgorithmTags.CAMELLIA_128),
|
||||||
|
CAMELLIA_192 (SymmetricKeyAlgorithmTags.CAMELLIA_192),
|
||||||
|
CAMELLIA_256 (SymmetricKeyAlgorithmTags.CAMELLIA_256),
|
||||||
;
|
;
|
||||||
|
|
||||||
private static final Map<Integer, SymmetricKeyAlgorithm> MAP = new HashMap<>();
|
private static final Map<Integer, SymmetricKeyAlgorithm> MAP = new HashMap<>();
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2018 Paul Schaub.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Enums which map to OpenPGP's algorithm IDs.
|
||||||
|
*/
|
||||||
|
package org.pgpainless.pgpainless.algorithm;
|
|
@ -50,7 +50,7 @@ import org.pgpainless.pgpainless.algorithm.CompressionAlgorithm;
|
||||||
import org.pgpainless.pgpainless.algorithm.SymmetricKeyAlgorithm;
|
import org.pgpainless.pgpainless.algorithm.SymmetricKeyAlgorithm;
|
||||||
import org.pgpainless.pgpainless.key.SecretKeyRingProtector;
|
import org.pgpainless.pgpainless.key.SecretKeyRingProtector;
|
||||||
|
|
||||||
public class DecryptionStreamFactory {
|
public final class DecryptionStreamFactory {
|
||||||
|
|
||||||
private static final Logger LOGGER = Logger.getLogger(DecryptionStreamFactory.class.getName());
|
private static final Logger LOGGER = Logger.getLogger(DecryptionStreamFactory.class.getName());
|
||||||
private static final Level LEVEL = Level.FINE;
|
private static final Level LEVEL = Level.FINE;
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2018 Paul Schaub.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Classes used to decryption and verification of OpenPGP encrypted / signed data.
|
||||||
|
*/
|
||||||
|
package org.pgpainless.pgpainless.decryption_verification;
|
|
@ -93,7 +93,7 @@ public class EncryptionBuilder implements EncryptionBuilderInterface {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <O>WithAlgorithms toRecipients(PublicKeyRingSelectionStrategy<O> ringSelectionStrategy,
|
public <O> WithAlgorithms toRecipients(PublicKeyRingSelectionStrategy<O> ringSelectionStrategy,
|
||||||
MultiMap<O, PGPPublicKeyRingCollection> keys) {
|
MultiMap<O, PGPPublicKeyRingCollection> keys) {
|
||||||
if (keys.isEmpty()) {
|
if (keys.isEmpty()) {
|
||||||
throw new IllegalArgumentException("Recipient map MUST NOT be empty.");
|
throw new IllegalArgumentException("Recipient map MUST NOT be empty.");
|
||||||
|
@ -151,7 +151,7 @@ public class EncryptionBuilder implements EncryptionBuilderInterface {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public <O>WithAlgorithms andToSelf(PublicKeyRingSelectionStrategy<O> ringSelectionStrategy,
|
public <O> WithAlgorithms andToSelf(PublicKeyRingSelectionStrategy<O> ringSelectionStrategy,
|
||||||
MultiMap<O, PGPPublicKeyRingCollection> keys) {
|
MultiMap<O, PGPPublicKeyRingCollection> keys) {
|
||||||
if (keys.isEmpty()) {
|
if (keys.isEmpty()) {
|
||||||
throw new IllegalArgumentException("Recipient list MUST NOT be empty.");
|
throw new IllegalArgumentException("Recipient list MUST NOT be empty.");
|
||||||
|
@ -230,7 +230,7 @@ public class EncryptionBuilder implements EncryptionBuilderInterface {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <O>Armor signWith(SecretKeyRingSelectionStrategy<O> ringSelectionStrategy,
|
public <O> Armor signWith(SecretKeyRingSelectionStrategy<O> ringSelectionStrategy,
|
||||||
SecretKeyRingProtector decryptor,
|
SecretKeyRingProtector decryptor,
|
||||||
MultiMap<O, PGPSecretKeyRingCollection> keys) {
|
MultiMap<O, PGPSecretKeyRingCollection> keys) {
|
||||||
if (keys.isEmpty()) {
|
if (keys.isEmpty()) {
|
||||||
|
|
|
@ -49,7 +49,7 @@ import org.pgpainless.pgpainless.decryption_verification.PainlessResult;
|
||||||
* This class is based upon Jens Neuhalfen's Bouncy-GPG PGPEncryptingStream.
|
* This class is based upon Jens Neuhalfen's Bouncy-GPG PGPEncryptingStream.
|
||||||
* @see <a href="https://github.com/neuhalje/bouncy-gpg/blob/master/src/main/java/name/neuhalfen/projects/crypto/bouncycastle/openpgp/encrypting/PGPEncryptingStream.java">Source</a>
|
* @see <a href="https://github.com/neuhalje/bouncy-gpg/blob/master/src/main/java/name/neuhalfen/projects/crypto/bouncycastle/openpgp/encrypting/PGPEncryptingStream.java">Source</a>
|
||||||
*/
|
*/
|
||||||
public class EncryptionStream extends OutputStream {
|
public final class EncryptionStream extends OutputStream {
|
||||||
|
|
||||||
private static final Logger LOGGER = Logger.getLogger(EncryptionStream.class.getName());
|
private static final Logger LOGGER = Logger.getLogger(EncryptionStream.class.getName());
|
||||||
private static final Level LEVEL = Level.FINE;
|
private static final Level LEVEL = Level.FINE;
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2018 Paul Schaub.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Classes used to encrypt or sign data using OpenPGP.
|
||||||
|
*/
|
||||||
|
package org.pgpainless.pgpainless.encryption_signing;
|
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2018 Paul Schaub.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Classes related to OpenPGP key generation.
|
||||||
|
*/
|
||||||
|
package org.pgpainless.pgpainless.key.generation;
|
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2018 Paul Schaub.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Classes related to elliptic curve cryptography.
|
||||||
|
*/
|
||||||
|
package org.pgpainless.pgpainless.key.generation.type.curve;
|
|
@ -26,37 +26,37 @@ import java.math.BigInteger;
|
||||||
public enum ElGamalLength implements KeyLength {
|
public enum ElGamalLength implements KeyLength {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* prime: 2^1536 - 2^1472 - 1 + 2^64 * { [2^1406 pi] + 741804 }
|
* prime: 2^1536 - 2^1472 - 1 + 2^64 * { [2^1406 pi] + 741804 }.
|
||||||
* generator: 2
|
* generator: 2
|
||||||
*/
|
*/
|
||||||
_1536(1536, "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA237327FFFFFFFFFFFFFFFF", "2"),
|
_1536(1536, "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA237327FFFFFFFFFFFFFFFF", "2"),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* prime: 2^2048 - 2^1984 - 1 + 2^64 * { [2^1918 pi] + 124476 }
|
* prime: 2^2048 - 2^1984 - 1 + 2^64 * { [2^1918 pi] + 124476 }.
|
||||||
* generator: 2
|
* generator: 2
|
||||||
*/
|
*/
|
||||||
_2048(2048, "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AACAA68FFFFFFFFFFFFFFFF", "2"),
|
_2048(2048, "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AACAA68FFFFFFFFFFFFFFFF", "2"),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* prime: 2^3072 - 2^3008 - 1 + 2^64 * { [2^2942 pi] + 1690314 }
|
* prime: 2^3072 - 2^3008 - 1 + 2^64 * { [2^2942 pi] + 1690314 }.
|
||||||
* generator: 2
|
* generator: 2
|
||||||
*/
|
*/
|
||||||
_3072(3072, "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF", "2"),
|
_3072(3072, "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF", "2"),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* prime: 2^4096 - 2^4032 - 1 + 2^64 * { [2^3966 pi] + 240904 }
|
* prime: 2^4096 - 2^4032 - 1 + 2^64 * { [2^3966 pi] + 240904 }.
|
||||||
* generator: 2
|
* generator: 2
|
||||||
*/
|
*/
|
||||||
_4096(4096, "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF", "2"),
|
_4096(4096, "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF", "2"),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* prime: 2^6144 - 2^6080 - 1 + 2^64 * { [2^6014 pi] + 929484 }
|
* prime: 2^6144 - 2^6080 - 1 + 2^64 * { [2^6014 pi] + 929484 }.
|
||||||
* generator: 2
|
* generator: 2
|
||||||
*/
|
*/
|
||||||
_6144(6144, "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C93402849236C3FAB4D27C7026C1D4DCB2602646DEC9751E763DBA37BDF8FF9406AD9E530EE5DB382F413001AEB06A53ED9027D831179727B0865A8918DA3EDBEBCF9B14ED44CE6CBACED4BB1BDB7F1447E6CC254B332051512BD7AF426FB8F401378CD2BF5983CA01C64B92ECF032EA15D1721D03F482D7CE6E74FEF6D55E702F46980C82B5A84031900B1C9E59E7C97FBEC7E8F323A97A7E36CC88BE0F1D45B7FF585AC54BD407B22B4154AACC8F6D7EBF48E1D814CC5ED20F8037E0A79715EEF29BE32806A1D58BB7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55CDA56C9EC2EF29632387FE8D76E3C0468043E8F663F4860EE12BF2D5B0B7474D6E694F91E6DCC4024FFFFFFFFFFFFFFFF", "2"),
|
_6144(6144, "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C93402849236C3FAB4D27C7026C1D4DCB2602646DEC9751E763DBA37BDF8FF9406AD9E530EE5DB382F413001AEB06A53ED9027D831179727B0865A8918DA3EDBEBCF9B14ED44CE6CBACED4BB1BDB7F1447E6CC254B332051512BD7AF426FB8F401378CD2BF5983CA01C64B92ECF032EA15D1721D03F482D7CE6E74FEF6D55E702F46980C82B5A84031900B1C9E59E7C97FBEC7E8F323A97A7E36CC88BE0F1D45B7FF585AC54BD407B22B4154AACC8F6D7EBF48E1D814CC5ED20F8037E0A79715EEF29BE32806A1D58BB7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55CDA56C9EC2EF29632387FE8D76E3C0468043E8F663F4860EE12BF2D5B0B7474D6E694F91E6DCC4024FFFFFFFFFFFFFFFF", "2"),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* prime: 2^8192 - 2^8128 - 1 + 2^64 * { [2^8062 pi] + 4743158 }
|
* prime: 2^8192 - 2^8128 - 1 + 2^64 * { [2^8062 pi] + 4743158 }.
|
||||||
* generator: 2
|
* generator: 2
|
||||||
*/
|
*/
|
||||||
_8192(8192, "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C93402849236C3FAB4D27C7026C1D4DCB2602646DEC9751E763DBA37BDF8FF9406AD9E530EE5DB382F413001AEB06A53ED9027D831179727B0865A8918DA3EDBEBCF9B14ED44CE6CBACED4BB1BDB7F1447E6CC254B332051512BD7AF426FB8F401378CD2BF5983CA01C64B92ECF032EA15D1721D03F482D7CE6E74FEF6D55E702F46980C82B5A84031900B1C9E59E7C97FBEC7E8F323A97A7E36CC88BE0F1D45B7FF585AC54BD407B22B4154AACC8F6D7EBF48E1D814CC5ED20F8037E0A79715EEF29BE32806A1D58BB7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55CDA56C9EC2EF29632387FE8D76E3C0468043E8F663F4860EE12BF2D5B0B7474D6E694F91E6DBE115974A3926F12FEE5E438777CB6A932DF8CD8BEC4D073B931BA3BC832B68D9DD300741FA7BF8AFC47ED2576F6936BA424663AAB639C5AE4F5683423B4742BF1C978238F16CBE39D652DE3FDB8BEFC848AD922222E04A4037C0713EB57A81A23F0C73473FC646CEA306B4BCBC8862F8385DDFA9D4B7FA2C087E879683303ED5BDD3A062B3CF5B3A278A66D2A13F83F44F82DDF310EE074AB6A364597E899A0255DC164F31CC50846851DF9AB48195DED7EA1B1D510BD7EE74D73FAF36BC31ECFA268359046F4EB879F924009438B481C6CD7889A002ED5EE382BC9190DA6FC026E479558E4475677E9AA9E3050E2765694DFC81F56E880B96E7160C980DD98EDD3DFFFFFFFFFFFFFFFFF", "2")
|
_8192(8192, "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C93402849236C3FAB4D27C7026C1D4DCB2602646DEC9751E763DBA37BDF8FF9406AD9E530EE5DB382F413001AEB06A53ED9027D831179727B0865A8918DA3EDBEBCF9B14ED44CE6CBACED4BB1BDB7F1447E6CC254B332051512BD7AF426FB8F401378CD2BF5983CA01C64B92ECF032EA15D1721D03F482D7CE6E74FEF6D55E702F46980C82B5A84031900B1C9E59E7C97FBEC7E8F323A97A7E36CC88BE0F1D45B7FF585AC54BD407B22B4154AACC8F6D7EBF48E1D814CC5ED20F8037E0A79715EEF29BE32806A1D58BB7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55CDA56C9EC2EF29632387FE8D76E3C0468043E8F663F4860EE12BF2D5B0B7474D6E694F91E6DBE115974A3926F12FEE5E438777CB6A932DF8CD8BEC4D073B931BA3BC832B68D9DD300741FA7BF8AFC47ED2576F6936BA424663AAB639C5AE4F5683423B4742BF1C978238F16CBE39D652DE3FDB8BEFC848AD922222E04A4037C0713EB57A81A23F0C73473FC646CEA306B4BCBC8862F8385DDFA9D4B7FA2C087E879683303ED5BDD3A062B3CF5B3A278A66D2A13F83F44F82DDF310EE074AB6A364597E899A0255DC164F31CC50846851DF9AB48195DED7EA1B1D510BD7EE74D73FAF36BC31ECFA268359046F4EB879F924009438B481C6CD7889A002ED5EE382BC9190DA6FC026E479558E4475677E9AA9E3050E2765694DFC81F56E880B96E7160C980DD98EDD3DFFFFFFFFFFFFFFFFF", "2")
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2018 Paul Schaub.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Classes describing the lengths of different public key crypto systems.
|
||||||
|
*/
|
||||||
|
package org.pgpainless.pgpainless.key.generation.type.length;
|
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2018 Paul Schaub.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Classes describing different OpenPGP key types.
|
||||||
|
*/
|
||||||
|
package org.pgpainless.pgpainless.key.generation.type;
|
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2018 Paul Schaub.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Classes related to OpenPGP keys.
|
||||||
|
*/
|
||||||
|
package org.pgpainless.pgpainless.key;
|
|
@ -1,3 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2018 Paul Schaub.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
package org.pgpainless.pgpainless.key.selection.key.impl;
|
package org.pgpainless.pgpainless.key.selection.key.impl;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2018 Paul Schaub.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Implementations of Key Selection Strategies.
|
||||||
|
*/
|
||||||
|
package org.pgpainless.pgpainless.key.selection.key.impl;
|
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2018 Paul Schaub.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Different Key Selection Strategies.
|
||||||
|
*/
|
||||||
|
package org.pgpainless.pgpainless.key.selection.key;
|
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2018 Paul Schaub.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Implementations of Key Ring Selection Strategies.
|
||||||
|
*/
|
||||||
|
package org.pgpainless.pgpainless.key.selection.keyring.impl;
|
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2018 Paul Schaub.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Different Key Ring Selection Strategies.
|
||||||
|
*/
|
||||||
|
package org.pgpainless.pgpainless.key.selection.keyring;
|
21
src/main/java/org/pgpainless/pgpainless/package-info.java
Normal file
21
src/main/java/org/pgpainless/pgpainless/package-info.java
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2018 Paul Schaub.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* PGPainless - Use OpenPGP Painlessly!
|
||||||
|
*
|
||||||
|
* @see <a href="http://pgpainless.org">pgpainless.org</a>
|
||||||
|
*/
|
||||||
|
package org.pgpainless.pgpainless;
|
|
@ -155,8 +155,7 @@ public class SymmetricEncryptorDecryptor {
|
||||||
* @return compressed data
|
* @return compressed data
|
||||||
* @throws IOException IO is dangerous
|
* @throws IOException IO is dangerous
|
||||||
*/
|
*/
|
||||||
private static byte[] compress(byte[] clearData, int algorithm) throws IOException
|
private static byte[] compress(byte[] clearData, int algorithm) throws IOException {
|
||||||
{
|
|
||||||
ByteArrayOutputStream bOut = new ByteArrayOutputStream();
|
ByteArrayOutputStream bOut = new ByteArrayOutputStream();
|
||||||
PGPCompressedDataGenerator comData = new PGPCompressedDataGenerator(algorithm);
|
PGPCompressedDataGenerator comData = new PGPCompressedDataGenerator(algorithm);
|
||||||
OutputStream cos = comData.open(bOut);
|
OutputStream cos = comData.open(bOut);
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2018 Paul Schaub.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Classes related to OpenPGP symmetric encryption.
|
||||||
|
*/
|
||||||
|
package org.pgpainless.pgpainless.symmetric_encryption;
|
|
@ -64,7 +64,11 @@ public class MultiMap<K, V> {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void put(K k, V v) {
|
public void put(K k, V v) {
|
||||||
Set<V> values = map.computeIfAbsent(k, k1 -> new HashSet<>());
|
Set<V> values = map.get(k);
|
||||||
|
if (values == null) {
|
||||||
|
values = new HashSet<>();
|
||||||
|
map.put(k, values);
|
||||||
|
}
|
||||||
values.add(v);
|
values.add(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2018 Paul Schaub.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Utility classes.
|
||||||
|
*/
|
||||||
|
package org.pgpainless.pgpainless.util;
|
|
@ -43,7 +43,7 @@ public class LengthTest extends AbstractPGPainlessTest {
|
||||||
|
|
||||||
private static final Logger LOGGER = Logger.getLogger(LengthTest.class.getName());
|
private static final Logger LOGGER = Logger.getLogger(LengthTest.class.getName());
|
||||||
|
|
||||||
//@Test
|
// @Test
|
||||||
public void ecEc()
|
public void ecEc()
|
||||||
throws PGPException, NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException,
|
throws PGPException, NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException,
|
||||||
IOException {
|
IOException {
|
||||||
|
@ -54,7 +54,7 @@ public class LengthTest extends AbstractPGPainlessTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//@Test
|
// @Test
|
||||||
public void RsaRsa()
|
public void RsaRsa()
|
||||||
throws PGPException, NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException,
|
throws PGPException, NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException,
|
||||||
IOException {
|
IOException {
|
||||||
|
@ -64,7 +64,7 @@ public class LengthTest extends AbstractPGPainlessTest {
|
||||||
encryptDecryptForSecretKeyRings(sender, recipient);
|
encryptDecryptForSecretKeyRings(sender, recipient);
|
||||||
}
|
}
|
||||||
|
|
||||||
//@Test
|
// @Test
|
||||||
public void RsaRsa4096()
|
public void RsaRsa4096()
|
||||||
throws PGPException, NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException,
|
throws PGPException, NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException,
|
||||||
IOException {
|
IOException {
|
||||||
|
@ -74,7 +74,7 @@ public class LengthTest extends AbstractPGPainlessTest {
|
||||||
encryptDecryptForSecretKeyRings(sender, recipient);
|
encryptDecryptForSecretKeyRings(sender, recipient);
|
||||||
}
|
}
|
||||||
|
|
||||||
//@Test
|
// @Test
|
||||||
public void rsaEc() throws PGPException, IOException, InvalidAlgorithmParameterException, NoSuchAlgorithmException,
|
public void rsaEc() throws PGPException, IOException, InvalidAlgorithmParameterException, NoSuchAlgorithmException,
|
||||||
NoSuchProviderException {
|
NoSuchProviderException {
|
||||||
LOGGER.log(Level.INFO, "\nRSA-2048 -> EC");
|
LOGGER.log(Level.INFO, "\nRSA-2048 -> EC");
|
||||||
|
@ -83,7 +83,7 @@ public class LengthTest extends AbstractPGPainlessTest {
|
||||||
encryptDecryptForSecretKeyRings(sender, recipient);
|
encryptDecryptForSecretKeyRings(sender, recipient);
|
||||||
}
|
}
|
||||||
|
|
||||||
//@Test
|
// @Test
|
||||||
public void ecRsa()
|
public void ecRsa()
|
||||||
throws PGPException, NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException,
|
throws PGPException, NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException,
|
||||||
IOException {
|
IOException {
|
||||||
|
@ -111,7 +111,7 @@ public class LengthTest extends AbstractPGPainlessTest {
|
||||||
OutputStream encryptor = PGPainless.createEncryptor()
|
OutputStream encryptor = PGPainless.createEncryptor()
|
||||||
.onOutputStream(envelope)
|
.onOutputStream(envelope)
|
||||||
.toRecipients(recipientPub)
|
.toRecipients(recipientPub)
|
||||||
//.doNotEncrypt()
|
// .doNotEncrypt()
|
||||||
.usingSecureAlgorithms()
|
.usingSecureAlgorithms()
|
||||||
.signWith(keyDecryptor, sender)
|
.signWith(keyDecryptor, sender)
|
||||||
.noArmor();
|
.noArmor();
|
||||||
|
|
|
@ -20,6 +20,8 @@ import static junit.framework.TestCase.assertTrue;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import org.bouncycastle.bcpg.ArmoredOutputStream;
|
import org.bouncycastle.bcpg.ArmoredOutputStream;
|
||||||
import org.bouncycastle.openpgp.PGPException;
|
import org.bouncycastle.openpgp.PGPException;
|
||||||
|
@ -28,6 +30,8 @@ import org.pgpainless.pgpainless.algorithm.SymmetricKeyAlgorithm;
|
||||||
|
|
||||||
public class SymmetricTest extends AbstractPGPainlessTest {
|
public class SymmetricTest extends AbstractPGPainlessTest {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = Logger.getLogger(SymmetricTest.class.getName());
|
||||||
|
|
||||||
private static final String message = "I grew up with the understanding that the world " +
|
private static final String message = "I grew up with the understanding that the world " +
|
||||||
"I lived in was one where people enjoyed a sort of freedom " +
|
"I lived in was one where people enjoyed a sort of freedom " +
|
||||||
"to communicate with each other in privacy, without it " +
|
"to communicate with each other in privacy, without it " +
|
||||||
|
@ -49,7 +53,7 @@ public class SymmetricTest extends AbstractPGPainlessTest {
|
||||||
armor.close();
|
armor.close();
|
||||||
|
|
||||||
// Print cipher text for validation with GnuPG.
|
// Print cipher text for validation with GnuPG.
|
||||||
System.out.println(new String(out.toByteArray()));
|
LOGGER.log(Level.INFO, new String(out.toByteArray()));
|
||||||
|
|
||||||
byte[] plain2 = PGPainless.decryptWithPassword(enc, "choose_a_better_password_please".toCharArray());
|
byte[] plain2 = PGPainless.decryptWithPassword(enc, "choose_a_better_password_please".toCharArray());
|
||||||
assertTrue(Arrays.equals(plain, plain2));
|
assertTrue(Arrays.equals(plain, plain2));
|
||||||
|
|
Loading…
Reference in a new issue