
gems.jruby-openssl-0.7.5.test.java.test_java_pkcs7.rb Maven / Gradle / Ivy
The newest version!
module PKCS7Test
class TestJavaPKCS7 < Test::Unit::TestCase
def test_is_signed
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signed
assert p7.signed?
assert !p7.encrypted?
assert !p7.enveloped?
assert !p7.signed_and_enveloped?
assert !p7.data?
assert !p7.digest?
end
def test_is_encrypted
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_encrypted
assert !p7.signed?
assert p7.encrypted?
assert !p7.enveloped?
assert !p7.signed_and_enveloped?
assert !p7.data?
assert !p7.digest?
end
def test_is_enveloped
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_enveloped
assert !p7.signed?
assert !p7.encrypted?
assert p7.enveloped?
assert !p7.signed_and_enveloped?
assert !p7.data?
assert !p7.digest?
end
def test_is_signed_and_enveloped
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signedAndEnveloped
assert !p7.signed?
assert !p7.encrypted?
assert !p7.enveloped?
assert p7.signed_and_enveloped?
assert !p7.data?
assert !p7.digest?
end
def test_is_data
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_data
assert !p7.signed?
assert !p7.encrypted?
assert !p7.enveloped?
assert !p7.signed_and_enveloped?
assert p7.data?
assert !p7.digest?
end
def test_is_digest
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_digest
assert !p7.signed?
assert !p7.encrypted?
assert !p7.enveloped?
assert !p7.signed_and_enveloped?
assert !p7.data?
assert p7.digest?
end
def test_set_detached
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signed
sign = Signed.new
p7.sign = sign
test_p7 = PKCS7.new
test_p7.type = ASN1Registry::NID_pkcs7_data
test_p7.data = ASN1::OctetString.new("foo".to_java_bytes)
sign.contents = test_p7
p7.detached = 2
assert_equal 1, p7.get_detached
assert_equal nil, test_p7.get_data
end
def test_set_not_detached
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signed
sign = Signed.new
p7.sign = sign
test_p7 = PKCS7.new
test_p7.type = ASN1Registry::NID_pkcs7_data
data = ASN1::OctetString.new("foo".to_java_bytes)
test_p7.data = data
sign.contents = test_p7
p7.detached = 0
assert_equal 0, p7.get_detached
assert_equal data, test_p7.get_data
end
def test_is_detached
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signed
sign = Signed.new
p7.sign = sign
test_p7 = PKCS7.new
test_p7.type = ASN1Registry::NID_pkcs7_data
data = ASN1::OctetString.new("foo".to_java_bytes)
test_p7.data = data
sign.contents = test_p7
p7.detached = 1
assert p7.detached?
end
def test_is_detached_with_wrong_type
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_data
assert !p7.detached?
end
def _test_encrypt_generates_enveloped_PKCS7_object
p7 = PKCS7.encrypt([], "".to_java_bytes, nil, 0)
assert !p7.signed?
assert !p7.encrypted?
assert p7.enveloped?
assert !p7.signed_and_enveloped?
assert !p7.data?
assert !p7.digest?
end
def test_set_type_throws_exception_on_wrong_argument
assert_raise NativeException do
# 42 is a value that is not one of the valid NID's for type
PKCS7.new.type = 42
end
end
def test_set_type_signed
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signed
assert p7.signed?
assert_equal 1, p7.get_sign.version
assert_nil p7.get_data
assert_nil p7.get_enveloped
assert_nil p7.get_signed_and_enveloped
assert_nil p7.get_digest
assert_nil p7.get_encrypted
assert_nil p7.get_other
end
def test_set_type_data
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_data
assert p7.data?
assert_equal ASN1::OctetString.new("".to_java_bytes), p7.get_data
assert_nil p7.get_sign
assert_nil p7.get_enveloped
assert_nil p7.get_signed_and_enveloped
assert_nil p7.get_digest
assert_nil p7.get_encrypted
assert_nil p7.get_other
end
def test_set_type_signed_and_enveloped
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signedAndEnveloped
assert p7.signed_and_enveloped?
assert_equal 1, p7.get_signed_and_enveloped.version
assert_equal ASN1Registry::NID_pkcs7_data, p7.get_signed_and_enveloped.enc_data.content_type
assert_nil p7.get_sign
assert_nil p7.get_enveloped
assert_nil p7.get_data
assert_nil p7.get_digest
assert_nil p7.get_encrypted
assert_nil p7.get_other
end
def test_set_type_enveloped
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_enveloped
assert p7.enveloped?
assert_equal 0, p7.get_enveloped.version
assert_equal ASN1Registry::NID_pkcs7_data, p7.get_enveloped.enc_data.content_type
assert_nil p7.get_sign
assert_nil p7.get_signed_and_enveloped
assert_nil p7.get_data
assert_nil p7.get_digest
assert_nil p7.get_encrypted
assert_nil p7.get_other
end
def test_set_type_encrypted
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_encrypted
assert p7.encrypted?
assert_equal 0, p7.get_encrypted.version
assert_equal ASN1Registry::NID_pkcs7_data, p7.get_encrypted.enc_data.content_type
assert_nil p7.get_sign
assert_nil p7.get_signed_and_enveloped
assert_nil p7.get_data
assert_nil p7.get_digest
assert_nil p7.get_enveloped
assert_nil p7.get_other
end
def test_set_type_digest
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_digest
assert p7.digest?
assert_equal 0, p7.get_digest.version
assert_nil p7.get_sign
assert_nil p7.get_signed_and_enveloped
assert_nil p7.get_data
assert_nil p7.get_encrypted
assert_nil p7.get_enveloped
assert_nil p7.get_other
end
def test_set_cipher_on_non_enveloped_object
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_digest
assert_raise NativeException do
p7.cipher = nil
end
p7.type = ASN1Registry::NID_pkcs7_encrypted
assert_raise NativeException do
p7.cipher = nil
end
p7.type = ASN1Registry::NID_pkcs7_data
assert_raise NativeException do
p7.cipher = nil
end
p7.type = ASN1Registry::NID_pkcs7_signed
assert_raise NativeException do
p7.cipher = nil
end
end
def test_set_cipher_on_enveloped_object
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_enveloped
c = javax.crypto.Cipher.getInstance("RSA")
cipher = CipherSpec.new(c, "RSA", 128)
p7.cipher = cipher
assert_equal cipher, p7.get_enveloped.enc_data.cipher
end
def test_set_cipher_on_signedAndEnveloped_object
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signedAndEnveloped
c = javax.crypto.Cipher.getInstance("RSA")
cipher = CipherSpec.new(c, "RSA", 128)
p7.cipher = cipher
assert_equal cipher, p7.get_signed_and_enveloped.enc_data.cipher
end
def test_add_recipient_info_to_something_that_cant_have_recipients
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signed
assert_raise NativeException do
p7.add_recipient(X509Cert)
end
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_data
assert_raise NativeException do
p7.add_recipient(X509Cert)
end
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_encrypted
assert_raise NativeException do
p7.add_recipient(X509Cert)
end
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_digest
assert_raise NativeException do
p7.add_recipient(X509Cert)
end
end
def test_add_recipient_info_to_enveloped_should_add_that_to_stack
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_enveloped
ri = p7.add_recipient(X509Cert)
assert_equal 1, p7.get_enveloped.recipient_info.size
assert_equal ri, p7.get_enveloped.recipient_info.iterator.next
end
def test_add_recipient_info_to_signedAndEnveloped_should_add_that_to_stack
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signedAndEnveloped
ri = p7.add_recipient(X509Cert)
assert_equal 1, p7.get_signed_and_enveloped.recipient_info.size
assert_equal ri, p7.get_signed_and_enveloped.recipient_info.iterator.next
end
def test_add_signer_to_something_that_cant_have_signers
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_enveloped
assert_raise NativeException do
p7.add_signer(SignerInfoWithPkey.new(nil, nil, nil, nil, nil, nil, nil))
end
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_data
assert_raise NativeException do
p7.add_signer(SignerInfoWithPkey.new(nil, nil, nil, nil, nil, nil, nil))
end
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_encrypted
assert_raise NativeException do
p7.add_signer(SignerInfoWithPkey.new(nil, nil, nil, nil, nil, nil, nil))
end
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_digest
assert_raise NativeException do
p7.add_signer(SignerInfoWithPkey.new(nil, nil, nil, nil, nil, nil, nil))
end
end
def test_add_signer_to_signed_should_add_that_to_stack
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signed
si = SignerInfoWithPkey.new(nil, nil, nil, nil, nil, nil, nil)
p7.add_signer(si)
assert_equal 1, p7.get_sign.signer_info.size
assert_equal si, p7.get_sign.signer_info.iterator.next
end
def test_add_signer_to_signedAndEnveloped_should_add_that_to_stack
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signedAndEnveloped
si = SignerInfoWithPkey.new(nil, nil, nil, nil, nil, nil, nil)
p7.add_signer(si)
assert_equal 1, p7.get_signed_and_enveloped.signer_info.size
assert_equal si, p7.get_signed_and_enveloped.signer_info.iterator.next
end
def create_signer_info_with_algo(algo)
md5 = AlgorithmIdentifier.new(ASN1Registry.nid2obj(4))
SignerInfoWithPkey.new(DERInteger.new(BigInteger::ONE),
IssuerAndSerialNumber.new(X509Name.new("C=SE"), DERInteger.new(BigInteger::ONE)),
algo,
DERSet.new,
md5,
DEROctetString.new([].to_java(:byte)),
DERSet.new)
end
def test_add_signer_to_signed_with_new_algo_should_add_that_algo_to_the_algo_list
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signed
# YES, these numbers are correct. Don't change them. They are OpenSSL internal NIDs
md5 = AlgorithmIdentifier.new(ASN1Registry.nid2obj(4))
md4 = AlgorithmIdentifier.new(ASN1Registry.nid2obj(5))
si = create_signer_info_with_algo(md5)
p7.add_signer(si)
assert_equal md5, p7.get_sign.md_algs.iterator.next
assert_equal 1, p7.get_sign.md_algs.size
si = create_signer_info_with_algo(md5)
p7.add_signer(si)
assert_equal md5, p7.get_sign.md_algs.iterator.next
assert_equal 1, p7.get_sign.md_algs.size
si = create_signer_info_with_algo(md4)
p7.add_signer(si)
assert_equal 2, p7.get_sign.md_algs.size
assert p7.get_sign.md_algs.contains(md4)
assert p7.get_sign.md_algs.contains(md5)
end
def test_add_signer_to_signedAndEnveloped_with_new_algo_should_add_that_algo_to_the_algo_list
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signedAndEnveloped
# YES, these numbers are correct. Don't change them. They are OpenSSL internal NIDs
md5 = AlgorithmIdentifier.new(ASN1Registry.nid2obj(4))
md4 = AlgorithmIdentifier.new(ASN1Registry.nid2obj(5))
si = create_signer_info_with_algo(md5)
p7.add_signer(si)
assert_equal md5, p7.get_signed_and_enveloped.md_algs.iterator.next
assert_equal 1, p7.get_signed_and_enveloped.md_algs.size
si = create_signer_info_with_algo(md5)
p7.add_signer(si)
assert_equal md5, p7.get_signed_and_enveloped.md_algs.iterator.next
assert_equal 1, p7.get_signed_and_enveloped.md_algs.size
si = create_signer_info_with_algo(md4)
p7.add_signer(si)
assert_equal 2, p7.get_signed_and_enveloped.md_algs.size
assert p7.get_signed_and_enveloped.md_algs.contains(md4)
assert p7.get_signed_and_enveloped.md_algs.contains(md5)
end
def test_set_content_on_data_throws_exception
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_data
assert_raise NativeException do
p7.setContent(PKCS7.new)
end
end
def test_set_content_on_enveloped_throws_exception
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_enveloped
assert_raise NativeException do
p7.setContent(PKCS7.new)
end
end
def test_set_content_on_signedAndEnveloped_throws_exception
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signedAndEnveloped
assert_raise NativeException do
p7.setContent(PKCS7.new)
end
end
def test_set_content_on_encrypted_throws_exception
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_encrypted
assert_raise NativeException do
p7.setContent(PKCS7.new)
end
end
def test_set_content_on_signed_sets_the_content
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signed
p7new = PKCS7.new
p7.setContent(p7new)
assert_equal p7new, p7.get_sign.contents
end
def test_set_content_on_digest_sets_the_content
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_digest
p7new = PKCS7.new
p7.setContent(p7new)
assert_equal p7new, p7.get_digest.contents
end
def test_get_signer_info_on_digest_returns_null
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_digest
assert_nil p7.signer_info
end
def test_get_signer_info_on_data_returns_null
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_data
assert_nil p7.signer_info
end
def test_get_signer_info_on_encrypted_returns_null
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_encrypted
assert_nil p7.signer_info
end
def test_get_signer_info_on_enveloped_returns_null
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_enveloped
assert_nil p7.signer_info
end
def test_get_signer_info_on_signed_returns_signer_info
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signed
assert_equal p7.get_sign.signer_info.object_id, p7.signer_info.object_id
end
def test_get_signer_info_on_signedAndEnveloped_returns_signer_info
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signedAndEnveloped
assert_equal p7.get_signed_and_enveloped.signer_info.object_id, p7.signer_info.object_id
end
def test_content_new_on_data_raises_exception
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_data
assert_raise NativeException do
p7.content_new(ASN1Registry::NID_pkcs7_data)
end
end
def test_content_new_on_encrypted_raises_exception
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_encrypted
assert_raise NativeException do
p7.content_new(ASN1Registry::NID_pkcs7_data)
end
end
def test_content_new_on_enveloped_raises_exception
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_enveloped
assert_raise NativeException do
p7.content_new(ASN1Registry::NID_pkcs7_data)
end
end
def test_content_new_on_signedAndEnveloped_raises_exception
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signedAndEnveloped
assert_raise NativeException do
p7.content_new(ASN1Registry::NID_pkcs7_data)
end
end
def test_content_new_on_digest_creates_new_content
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_digest
p7.content_new(ASN1Registry::NID_pkcs7_signedAndEnveloped)
assert p7.get_digest.contents.signed_and_enveloped?
p7.content_new(ASN1Registry::NID_pkcs7_encrypted)
assert p7.get_digest.contents.encrypted?
end
def test_content_new_on_signed_creates_new_content
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signed
p7.content_new(ASN1Registry::NID_pkcs7_signedAndEnveloped)
assert p7.get_sign.contents.signed_and_enveloped?
p7.content_new(ASN1Registry::NID_pkcs7_encrypted)
assert p7.get_sign.contents.encrypted?
end
def test_add_certificate_on_data_throws_exception
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_data
assert_raise NativeException do
p7.add_certificate(X509Cert)
end
end
def test_add_certificate_on_enveloped_throws_exception
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_enveloped
assert_raise NativeException do
p7.add_certificate(X509Cert)
end
end
def test_add_certificate_on_encrypted_throws_exception
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_encrypted
assert_raise NativeException do
p7.add_certificate(X509Cert)
end
end
def test_add_certificate_on_digest_throws_exception
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_digest
assert_raise NativeException do
p7.add_certificate(X509Cert)
end
end
def test_add_certificate_on_signed_adds_the_certificate
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signed
p7.add_certificate(X509Cert)
assert_equal 1, p7.get_sign.cert.size
assert_equal X509Cert, p7.get_sign.cert.iterator.next
end
def test_add_certificate_on_signedAndEnveloped_adds_the_certificate
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signedAndEnveloped
p7.add_certificate(X509Cert)
assert_equal 1, p7.get_signed_and_enveloped.cert.size
assert_equal X509Cert, p7.get_signed_and_enveloped.cert.get(0)
end
def test_add_crl_on_data_throws_exception
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_data
assert_raise NativeException do
p7.add_crl(X509CRL)
end
end
def test_add_crl_on_enveloped_throws_exception
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_enveloped
assert_raise NativeException do
p7.add_crl(X509CRL)
end
end
def test_add_crl_on_encrypted_throws_exception
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_encrypted
assert_raise NativeException do
p7.add_crl(X509CRL)
end
end
def test_add_crl_on_digest_throws_exception
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_digest
assert_raise NativeException do
p7.add_crl(X509CRL)
end
end
def test_add_crl_on_signed_adds_the_crl
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signed
p7.add_crl(X509CRL)
assert_equal 1, p7.get_sign.crl.size
assert_equal X509CRL, p7.get_sign.crl.iterator.next
end
def test_add_crl_on_signedAndEnveloped_adds_the_crl
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_signedAndEnveloped
p7.add_crl(X509CRL)
assert_equal 1, p7.get_signed_and_enveloped.crl.size
assert_equal X509CRL, p7.get_signed_and_enveloped.crl.get(0)
end
EXISTING_PKCS7_DEF = "0\202\002 \006\t*\206H\206\367\r\001\a\003\240\202\002\0210\202\002\r\002\001\0001\202\001\2700\201\331\002\001\0000B0=1\0230\021\006\n\t\222&\211\223\362,d\001\031\026\003org1\0310\027\006\n\t\222&\211\223\362,d\001\031\026\truby-lang1\v0\t\006\003U\004\003\f\002CA\002\001\0020\r\006\t*\206H\206\367\r\001\001\001\005\000\004\201\200\213kF\330\030\362\237\363$\311\351\207\271+_\310sr\344\233N\200\233)\272\226\343\003\224OOf\372 \r\301{\206\367\241\270\006\240\254\3179F\232\231Q\232\225\347\373\233\032\375\360\035o\371\275p\306\v5Z)\263\037\302|\307\300\327\a\375\023G'Ax\313\346\261\254\227K\026\364\242\337\367\362rk\276\023\217m\326\343F\366I1\263\nLuNf\234\203\261\300\030\232Q\277\231\f0\030\001\332\021\0030\201\331\002\001\0000B0=1\0230\021\006\n\t\222&\211\223\362,d\001\031\026\003org1\0310\027\006\n\t\222&\211\223\362,d\001\031\026\truby-lang1\v0\t\006\003U\004\003\f\002CA\002\001\0030\r\006\t*\206H\206\367\r\001\001\001\005\000\004\201\200\215\223\3428\2440]\0278\016\230,\315\023Tg\325`\376~\353\304\020\243N{\326H\003\005\361q\224OI\310\2324-\341?\355&r\215\233\361\245jF\255R\271\203D\304v\325\265\243\321$\bSh\031i\eS\240\227\362\221\364\232\035\202\f?x\031\223D\004ZHD\355'g\243\037\236mJ\323\210\347\274m\324-\351\332\353#A\273\002\"h\aM\202\347\236\265\aI$@\240bt=<\212\2370L\006\t*\206H\206\367\r\001\a\0010\035\006\t`\206H\001e\003\004\001\002\004\020L?\325\372\\\360\366\372\237|W\333nnI\255\200 \253\234\252\263\006\335\037\320\350{s\352r\337\304\305\216\223k\003\376f\027_\201\035#*\002yM\334"
EXISTING_PKCS7_1 = PKCS7::from_asn1(ASN1InputStream.new(EXISTING_PKCS7_DEF.to_java_bytes).read_object)
def test_encrypt_integration_test
certs = [X509Cert]
c = Cipher.get_instance("AES", BCP.new)
cipher = CipherSpec.new(c, "AES-128-CBC", 128)
data = "aaaaa\nbbbbb\nccccc\n".to_java_bytes
PKCS7::encrypt(certs, data, cipher, PKCS7::BINARY)
# puts
# puts PKCS7::encrypt(certs, data, cipher, PKCS7::BINARY)
# puts
# puts EXISTING_PKCS7_1
end
EXISTING_PKCS7_PEM = <
© 2015 - 2025 Weber Informatics LLC | Privacy Policy