ccrypto-java 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []