ccrypto-java 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/.java-version +1 -0
  3. data/.rspec +3 -0
  4. data/Gemfile +13 -0
  5. data/Gemfile.lock +94 -0
  6. data/README.md +150 -0
  7. data/Rakefile +10 -0
  8. data/bin/console +15 -0
  9. data/bin/setup +8 -0
  10. data/ccrypto-java.gemspec +44 -0
  11. data/jars/bcmail-jdk15on-165.jar +0 -0
  12. data/jars/bcpg-jdk15on-165.jar +0 -0
  13. data/jars/bcpkix-jdk15on-165.jar +0 -0
  14. data/jars/bcprov-ext-jdk15on-165.jar +0 -0
  15. data/jars/bcprov-jdk15on-165.jar +0 -0
  16. data/jars/bctls-jdk15on-165.jar +0 -0
  17. data/jars/shamir-0.6.1-p.jar +0 -0
  18. data/lib/ccrypto/java/data_conversion.rb +80 -0
  19. data/lib/ccrypto/java/engines/asn1_engine.rb +161 -0
  20. data/lib/ccrypto/java/engines/asn1_object.rb +12 -0
  21. data/lib/ccrypto/java/engines/cipher_engine.rb +255 -0
  22. data/lib/ccrypto/java/engines/compression_engine.rb +92 -0
  23. data/lib/ccrypto/java/engines/data_conversion_engine.rb +9 -0
  24. data/lib/ccrypto/java/engines/decompression_engine.rb +48 -0
  25. data/lib/ccrypto/java/engines/digest_engine.rb +208 -0
  26. data/lib/ccrypto/java/engines/ecc_engine.rb +263 -0
  27. data/lib/ccrypto/java/engines/hkdf_engine.rb +72 -0
  28. data/lib/ccrypto/java/engines/hmac_engine.rb +75 -0
  29. data/lib/ccrypto/java/engines/pbkdf2_engine.rb +87 -0
  30. data/lib/ccrypto/java/engines/pkcs7_engine.rb +558 -0
  31. data/lib/ccrypto/java/engines/rsa_engine.rb +572 -0
  32. data/lib/ccrypto/java/engines/scrypt_engine.rb +35 -0
  33. data/lib/ccrypto/java/engines/secret_key_engine.rb +44 -0
  34. data/lib/ccrypto/java/engines/secret_sharing_engine.rb +59 -0
  35. data/lib/ccrypto/java/engines/secure_random_engine.rb +76 -0
  36. data/lib/ccrypto/java/engines/x509_engine.rb +311 -0
  37. data/lib/ccrypto/java/ext/secret_key.rb +75 -0
  38. data/lib/ccrypto/java/ext/x509_cert.rb +48 -0
  39. data/lib/ccrypto/java/jce_provider.rb +52 -0
  40. data/lib/ccrypto/java/keybundle_store/pkcs12.rb +125 -0
  41. data/lib/ccrypto/java/utils/comparator.rb +20 -0
  42. data/lib/ccrypto/java/utils/memory_buffer.rb +77 -0
  43. data/lib/ccrypto/java/utils/native_helper.rb +19 -0
  44. data/lib/ccrypto/java/version.rb +7 -0
  45. data/lib/ccrypto/java.rb +30 -0
  46. data/lib/ccrypto/provider.rb +132 -0
  47. metadata +144 -0
@@ -0,0 +1,20 @@
1
+
2
+ require_relative '../data_conversion'
3
+
4
+ module Ccrypto
5
+ module Java
6
+ class ComparatorUtil
7
+ extend DataConversion
8
+
9
+ def self.is_equal?(val1, val2)
10
+
11
+ bval1 = to_java_bytes(val1)
12
+ bval2 = to_java_bytes(val2)
13
+
14
+ bval1 == bval2
15
+ end
16
+ self.singleton_class.alias_method :is_equals?, :is_equal?
17
+
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,77 @@
1
+
2
+ require_relative '../data_conversion'
3
+
4
+ module Ccrypto
5
+ module Java
6
+ class ManagedMemoryBuffer
7
+ include DataConversion
8
+
9
+ def initialize(*args, &block)
10
+ @raf = java.io.RandomAccessFile.new(java.nio.file.Files.createTempFile(nil,".ccl").toFile, "rw")
11
+ end
12
+
13
+ def bytes
14
+ buf = ::Java::byte[@raf.length].new
15
+ @raf.seek(0)
16
+ @raf.read_fully(buf)
17
+ buf
18
+ end
19
+
20
+ # Return current cursor position
21
+ def pos
22
+ @raf.getFilePointer
23
+ end
24
+
25
+ def length
26
+ @raf.length
27
+ end
28
+
29
+ def rewind
30
+ @raf.seek(0)
31
+ end
32
+
33
+ def dispose(wcnt = 32)
34
+ len = @raf.length
35
+ @raf.seek(0)
36
+
37
+ cnt = 0
38
+ loop do
39
+ @raf.write(SecureRandomEngine.random_bytes(len))
40
+ @raf.seek(0)
41
+
42
+ cnt += 1
43
+ break if cnt >= wcnt
44
+ end
45
+
46
+ @raf = nil
47
+ GC.start
48
+ end
49
+
50
+ def write(val)
51
+ @raf.write(to_java_bytes(val))
52
+ end
53
+
54
+ def read(len)
55
+ buf = ::Java::byte[len].new
56
+ @raf.read(buf,0,len)
57
+ buf
58
+ end
59
+
60
+ def respond_to_missing?(mtd, *args, &block)
61
+ @raf.respond_to?(mtd, *args, &block)
62
+ end
63
+
64
+ def equals?(val)
65
+ case val
66
+ when ::Java::byte[]
67
+ bytes == val
68
+ when String
69
+ bytes == to_java_bytes(val)
70
+ else
71
+ raise MemoryBufferException, "Unknown how to compare with #{val}"
72
+ end
73
+ end
74
+
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,19 @@
1
+
2
+
3
+ module Ccrypto
4
+ module Java
5
+
6
+ class NativeHelper
7
+
8
+ def self.is_byte_array?(dat)
9
+ if not dat.nil?
10
+ dat.is_a?(::Java::byte[])
11
+ else
12
+ false
13
+ end
14
+ end
15
+
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ccrypto
4
+ module Java
5
+ VERSION = "0.1.0"
6
+ end
7
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'teLogger'
4
+ require 'toolrack'
5
+ require 'ccrypto'
6
+
7
+ Dir.glob(File.join(File.dirname(__FILE__),"..","..","jars","*.jar")).each do |f|
8
+ require f
9
+ #puts "Loaded #{f}"
10
+ end
11
+
12
+ require_relative 'java/jce_provider'
13
+ Ccrypto::Java::JCEProvider.instance.add_bc_provider
14
+
15
+ require_relative "java/version"
16
+
17
+ require_relative 'provider'
18
+
19
+ require_relative 'java/ext/secret_key'
20
+ require_relative 'java/ext/x509_cert'
21
+
22
+ module Ccrypto
23
+ module Java
24
+ class Error < StandardError; end
25
+ # Your code goes here...
26
+ end
27
+ end
28
+
29
+ Ccrypto::Provider.instance.register(Ccrypto::Java::Provider)
30
+
@@ -0,0 +1,132 @@
1
+
2
+ require_relative 'java/engines/ecc_engine'
3
+ require_relative 'java/engines/digest_engine'
4
+ require_relative 'java/engines/x509_engine'
5
+
6
+ require_relative 'java/engines/scrypt_engine'
7
+ require_relative 'java/engines/secure_random_engine'
8
+ require_relative 'java/engines/cipher_engine'
9
+
10
+ require_relative 'java/engines/secret_key_engine'
11
+ require_relative 'java/engines/hmac_engine'
12
+ require_relative 'java/engines/hkdf_engine'
13
+ require_relative 'java/engines/pbkdf2_engine'
14
+
15
+
16
+ require_relative 'java/utils/comparator'
17
+ require_relative 'java/utils/memory_buffer'
18
+
19
+ require_relative 'java/utils/native_helper'
20
+
21
+ require_relative 'java/engines/asn1_engine'
22
+ require_relative 'java/engines/compression_engine'
23
+ require_relative 'java/engines/decompression_engine'
24
+
25
+ require_relative 'java/engines/data_conversion_engine'
26
+
27
+ require_relative 'java/engines/secret_sharing_engine'
28
+
29
+ require_relative 'java/engines/pkcs7_engine'
30
+
31
+ require_relative 'java/engines/rsa_engine'
32
+
33
+ module Ccrypto
34
+ module Java
35
+ class Provider
36
+ include TR::CondUtils
37
+
38
+ def self.provider_name
39
+ "java-bc"
40
+ end
41
+
42
+ def self.algo_instance(*args, &block)
43
+ config = args.first
44
+
45
+
46
+ if config.is_a?(Class) or config.is_a?(Module)
47
+ if config == Ccrypto::ECCConfig
48
+ ECCEngine
49
+ elsif config == Ccrypto::RSAConfig
50
+ RSAEngine
51
+ elsif config == Ccrypto::ECCKeyBundle
52
+ ECCKeyBundle
53
+ elsif config == Ccrypto::RSAKeyBundle
54
+ RSAKeyBundle
55
+ elsif config == Ccrypto::DigestConfig
56
+ DigestEngine
57
+ elsif config == Ccrypto::SecureRandomConfig
58
+ SecureRandomEngine
59
+ elsif config == Ccrypto::CipherConfig
60
+ CipherEngine
61
+ elsif config == Ccrypto::ECCPublicKey
62
+ Ccrypto::Java::ECCPublicKey
63
+ elsif config == Ccrypto::KeyConfig
64
+ SecretKeyEngine
65
+ elsif config == SecretSharingConfig
66
+ SecretSharingEngine
67
+ else
68
+ raise CcryptoProviderException, "Config class '#{config}' is not supported for provider '#{self.provider_name}'"
69
+ end
70
+ else
71
+ case config
72
+ when Ccrypto::ECCConfig
73
+ ECCEngine.new(*args, &block)
74
+ when Ccrypto::RSAConfig
75
+ RSAEngine.new(*args, &block)
76
+ when Ccrypto::DigestConfig
77
+ DigestEngine.instance(*args, &block)
78
+ when Ccrypto::X509::CertProfile
79
+ X509Engine.new(*args,&block)
80
+ when Ccrypto::ScryptConfig
81
+ ScryptEngine.new(*args,&block)
82
+ when Ccrypto::HKDFConfig
83
+ HKDFEngine.new(*args,&block)
84
+ when Ccrypto::PBKDF2Config
85
+ PBKDF2Engine.new(*args,&block)
86
+ when Ccrypto::CipherConfig
87
+ CipherEngine.new(*args, &block)
88
+ when Ccrypto::HMACConfig
89
+ HMACEngine.new(*args, &block)
90
+ when Ccrypto::SecretSharingConfig
91
+ SecretSharingEngine.new(*args,&block)
92
+ when Ccrypto::PKCS7Config
93
+ PKCS7Engine.new(*args, &block)
94
+ else
95
+ raise CcryptoProviderException, "Config instance '#{config}' is not supported for provider '#{self.provider_name}'"
96
+ end
97
+ end
98
+
99
+
100
+ end
101
+
102
+ def self.asn1_engine(*args, &block)
103
+ ASN1Engine
104
+ end
105
+
106
+ def self.util_instance(*args, &block)
107
+ algo = args.first
108
+ case algo
109
+ when :comparator, :compare
110
+ ComparatorUtil
111
+ when :data_conversion, :converter, :data_converter
112
+ DataConversionEngine
113
+ when :memory_buffer, :membuf, :buffer, :mem
114
+ ManagedMemoryBuffer
115
+
116
+ when :compression, :compressor
117
+ Compression.new(*(args[1..-1]), &block)
118
+
119
+ when :decompression
120
+ Decompression.new(*(args[1..-1]), &block)
121
+
122
+ when :native_helper
123
+ NativeHelper
124
+
125
+ else
126
+ raise CcryptoProviderException, "Util #{algo} is not supported for provider #{self.provider_name}"
127
+ end
128
+ end
129
+
130
+ end
131
+ end
132
+ end
metadata ADDED
@@ -0,0 +1,144 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ccrypto-java
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Ian
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2022-08-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ name: teLogger
20
+ prerelease: false
21
+ type: :runtime
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ name: toolrack
34
+ prerelease: false
35
+ type: :runtime
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ name: ccrypto
48
+ prerelease: false
49
+ type: :runtime
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ name: devops_assist
62
+ prerelease: false
63
+ type: :development
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: Refers to Ccrypto library for more info
70
+ email:
71
+ - cameronian0@protonmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - ".java-version"
77
+ - ".rspec"
78
+ - Gemfile
79
+ - Gemfile.lock
80
+ - README.md
81
+ - Rakefile
82
+ - bin/console
83
+ - bin/setup
84
+ - ccrypto-java.gemspec
85
+ - jars/bcmail-jdk15on-165.jar
86
+ - jars/bcpg-jdk15on-165.jar
87
+ - jars/bcpkix-jdk15on-165.jar
88
+ - jars/bcprov-ext-jdk15on-165.jar
89
+ - jars/bcprov-jdk15on-165.jar
90
+ - jars/bctls-jdk15on-165.jar
91
+ - jars/shamir-0.6.1-p.jar
92
+ - lib/ccrypto/java.rb
93
+ - lib/ccrypto/java/data_conversion.rb
94
+ - lib/ccrypto/java/engines/asn1_engine.rb
95
+ - lib/ccrypto/java/engines/asn1_object.rb
96
+ - lib/ccrypto/java/engines/cipher_engine.rb
97
+ - lib/ccrypto/java/engines/compression_engine.rb
98
+ - lib/ccrypto/java/engines/data_conversion_engine.rb
99
+ - lib/ccrypto/java/engines/decompression_engine.rb
100
+ - lib/ccrypto/java/engines/digest_engine.rb
101
+ - lib/ccrypto/java/engines/ecc_engine.rb
102
+ - lib/ccrypto/java/engines/hkdf_engine.rb
103
+ - lib/ccrypto/java/engines/hmac_engine.rb
104
+ - lib/ccrypto/java/engines/pbkdf2_engine.rb
105
+ - lib/ccrypto/java/engines/pkcs7_engine.rb
106
+ - lib/ccrypto/java/engines/rsa_engine.rb
107
+ - lib/ccrypto/java/engines/scrypt_engine.rb
108
+ - lib/ccrypto/java/engines/secret_key_engine.rb
109
+ - lib/ccrypto/java/engines/secret_sharing_engine.rb
110
+ - lib/ccrypto/java/engines/secure_random_engine.rb
111
+ - lib/ccrypto/java/engines/x509_engine.rb
112
+ - lib/ccrypto/java/ext/secret_key.rb
113
+ - lib/ccrypto/java/ext/x509_cert.rb
114
+ - lib/ccrypto/java/jce_provider.rb
115
+ - lib/ccrypto/java/keybundle_store/pkcs12.rb
116
+ - lib/ccrypto/java/utils/comparator.rb
117
+ - lib/ccrypto/java/utils/memory_buffer.rb
118
+ - lib/ccrypto/java/utils/native_helper.rb
119
+ - lib/ccrypto/java/version.rb
120
+ - lib/ccrypto/provider.rb
121
+ homepage: https://github.com/cameronian/ccrypto-java
122
+ licenses: []
123
+ metadata: {}
124
+ post_install_message:
125
+ rdoc_options: []
126
+ require_paths:
127
+ - lib
128
+ required_ruby_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: 2.4.0
133
+ required_rubygems_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ requirements: []
139
+ rubygems_version: 3.2.29
140
+ signing_key:
141
+ specification_version: 4
142
+ summary: Cryptographic API for Java runtime based on Bouncycastle library. Provider
143
+ for Ccrypto library
144
+ test_files: []