Skip to content

Commit

Permalink
support rails 7.1
Browse files Browse the repository at this point in the history
  • Loading branch information
Azdaroth committed Oct 3, 2024
1 parent 1a1d7fe commit a78f739
Show file tree
Hide file tree
Showing 14 changed files with 147 additions and 190 deletions.
30 changes: 8 additions & 22 deletions .github/workflows/ruby.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,8 @@ jobs:
strategy:
fail-fast: false
matrix:
ruby-version: [ '2.7', '3.0', '3.1']
rails: ['5_0', '5_1', '5_2', '6_0', '6_1', '7_0']
exclude:
# exclude unsupported ruby versions: https://github.com/rails/rails/issues/40938
- ruby-version: '3.0'
rails: '5_0'
- ruby-version: '3.0'
rails: '5_1'
- ruby-version: '3.0'
rails: '5_2'
- ruby-version: '3.1'
rails: '5_0'
- ruby-version: '3.1'
rails: '5_1'
- ruby-version: '3.1'
rails: '5_2'
ruby-version: ['3.1', '3.2', '3.3']
rails: ['7_0', '7.1', '7.2']

env:
TESTING_RAILS_VERSION: ${{ matrix.rails }}
Expand All @@ -41,7 +27,7 @@ jobs:
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
--health-retries 5
ports:
- 5432:5432
mysql:
Expand All @@ -53,11 +39,11 @@ jobs:
MYSQL_ROOT_PASSWORD: rootpassword
ports:
- 33306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3

steps:
- uses: actions/checkout@v2

- name: Setup System
run: sudo apt-get install libsqlite3-dev

Expand All @@ -66,14 +52,14 @@ jobs:
with:
ruby-version: ${{ matrix.ruby-version }}
bundler-cache: true

- name: Copy database config
run: |
cp spec/github_actions.database.yml spec/database.yml
- name: Enable pgcrypto extension
run: |
PGPASSWORD=crypt_keeper psql crypt_keeper_providers -h localhost -p 5432 -U crypt_keeper -tc "CREATE EXTENSION IF NOT EXISTS pgcrypto;"
- name: Run tests
run: bundle exec rake
45 changes: 11 additions & 34 deletions Appraisals
Original file line number Diff line number Diff line change
@@ -1,42 +1,19 @@
appraise "activerecord_4_2" do
gem "activerecord", "~> 4.2.0"
gem "activesupport", "~> 4.2.0"
gem "sqlite3", "~> 1.3.0"

# otherwise you get "undefined method `new' for BigDecimal:Class" in Ruby 2.7
gem "bigdecimal", "1.3.5"
end

appraise "activerecord_5_0" do
gem "activerecord", "~> 5.0.0"
gem "activesupport", "~> 5.0.0"

gem "sqlite3", "~> 1.3.11"
end

appraise "activerecord_5_1" do
gem "activerecord", "~> 5.1.0"
gem "activesupport", "~> 5.1.0"
end

appraise "activerecord_5_2" do
gem "activerecord", "~> 5.2.0"
gem "activesupport", "~> 5.2.0"
appraise "activerecord_7_0" do
gem "activerecord", "~> 7.0.0"
gem "activesupport", "~> 7.0.0"
gem "pg", "~> 1.1"
end

appraise "activerecord_6_0" do
gem "activerecord", "~> 6.0.0"
gem "activesupport", "~> 6.0.0"
end

appraise "activerecord_6_1" do
gem "activerecord", "~> 6.1.0"
gem "activesupport", "~> 6.1.0"
appraise "activerecord_7_1" do
gem "activerecord", "~> 7.1.0"
gem "activesupport", "~> 7.1.0"
gem "pg", "~> 1.1"
end

appraise "activerecord_7_0" do
gem "activerecord", "~> 7.0.0"
gem "activesupport", "~> 7.0.0"

appraise "activerecord_7_2" do
gem "activerecord", "~> 7.2.0"
gem "activesupport", "~> 7.2.0"
gem "pg", "~> 1.1"
end
10 changes: 5 additions & 5 deletions crypt_keeper.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ Gem::Specification.new do |gem|

gem.post_install_message = "WARNING: CryptKeeper 2.0 contains breaking changes and may require you to reencrypt your data! Please view the README at https://github.com/jmazzi/crypt_keeper for more information."

gem.add_runtime_dependency 'activerecord', '>= 4.2', '~> 7.0.0'
gem.add_runtime_dependency 'activesupport', '>= 4.2', '~> 7.0.0'
gem.add_runtime_dependency 'activerecord', '>= 7.0', '< 8.0'
gem.add_runtime_dependency 'activesupport', '>= 7.0', '< 8.0'

gem.add_development_dependency 'rspec', '~> 3.5.0'
gem.add_development_dependency 'guard', '~> 2.6.1'
Expand All @@ -35,8 +35,8 @@ Gem::Specification.new do |gem|
gem.add_development_dependency 'activerecord-jdbcpostgresql-adapter'
gem.add_development_dependency 'activerecord-jdbcmysql-adapter'
else
gem.add_development_dependency 'sqlite3', '>= 1.3.3', '< 1.5'
gem.add_development_dependency 'pg', '~> 0.18.0'
gem.add_development_dependency 'mysql2', '>= 0.3.13', '< 0.6.0'
gem.add_development_dependency 'sqlite3'
gem.add_development_dependency 'pg'
gem.add_development_dependency 'mysql2'
end
end
10 changes: 0 additions & 10 deletions gemfiles/activerecord_4_2.gemfile

This file was deleted.

9 changes: 0 additions & 9 deletions gemfiles/activerecord_5_0.gemfile

This file was deleted.

8 changes: 0 additions & 8 deletions gemfiles/activerecord_5_1.gemfile

This file was deleted.

8 changes: 0 additions & 8 deletions gemfiles/activerecord_5_2.gemfile

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

source "https://rubygems.org"

gem "activerecord", "~> 6.1.0"
gem "activesupport", "~> 6.1.0"
gem "activerecord", "~> 7.1.0"
gem "activesupport", "~> 7.1.0"
gem "pg", "~> 1.1"

gemspec :path => "../"
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

source "https://rubygems.org"

gem "activerecord", "~> 6.0.0"
gem "activesupport", "~> 6.0.0"
gem "activerecord", "~> 7.2.0"
gem "activesupport", "~> 7.2.0"
gem "pg", "~> 1.1"

gemspec :path => "../"
4 changes: 4 additions & 0 deletions lib/crypt_keeper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ class << self

attr_accessor :silence_logs
alias_method :silence_logs?, :silence_logs

def active_record_7_1?
ActiveRecord::VERSION::MAJOR >= 7 && ActiveRecord::VERSION::MINOR >= 1
end
end
end

Expand Down
11 changes: 9 additions & 2 deletions spec/crypt_keeper/model_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
end
end


context "Encryption and Decryption" do
let(:plain_text) { 'plain_text' }
let(:cipher_text) { 'tooltxet_nialp' }
Expand Down Expand Up @@ -153,6 +153,13 @@

context "Initial Table Encryption" do
subject { create_encrypted_model :storage, key: 'tool', salt: 'salt', encryptor: :active_support }
let(:error_class) do
if CryptKeeper.active_record_7_1?
ActiveSupport::MessageEncryptor::InvalidMessage
else
ActiveSupport::MessageVerifier::InvalidSignature
end
end

before do
subject.delete_all
Expand All @@ -161,7 +168,7 @@
end

it "encrypts the table" do
expect { subject.first(5).map(&:storage) }.to raise_error(ActiveSupport::MessageVerifier::InvalidSignature)
expect { subject.first(5).map(&:storage) }.to raise_error(error_class)
subject.encrypt_table!
expect { subject.first(5).map(&:storage) }.not_to raise_error
end
Expand Down
6 changes: 3 additions & 3 deletions spec/crypt_keeper/provider/postgres_pgp_public_key_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
describe CryptKeeper::Provider::PostgresPgpPublicKey do
use_postgres

let(:cipher_text) { '\xc1c04c036c401ad086beb9e3010800987d6c4ccd974322190caa75a3a01aba37bc1970182c4c1d3faec98edf186780520f0586101f286e0626096a1eca91a229ed4d4058a6913a8d13cdf49f29ea44e2b96d10347f9b1b860bb3c959f000a3b1b415a95d2cd07af8c74aa6df8cd10ab06b6a6f7db69cdf3185466d68c5b66b95b813acdfb3ddfb021cac92e0967d67e90df73332f27970c1d2b9a56ac74f602d4107b163ed73ef89fca560d9a0a0d2bc7a74005f29fa27babfbaf950ac07b1c809049db4ab126be4824cf76416c278571f7064f638edf830a1ae5ee1ab544d35fce0f974f21b9dcbbea3986077d27b0de34144dc23f369f471090b57e067a056901e680493ddf2a6b29e4af3462387d235010259556079d07daa249b6703e2bc79345da556cfb46f228cad40a8a5b569ac46f08865f9176acf89129a3e0ceb2a7b1991012f65' }
let(:cipher_text) { '\xc1c24e03374ac5d225ffff71100bfe27156ec4de2509f29639db2820a08c79b54a5c35def273f57453c46bf2aa1e211437416afe62f97f350943519d7aa85498d98763118f5ddefa33632c8178eb1f4700dba97dadca79d9e369dc4d4b894f6fd8553185fd1ba8f4e997cbcdce71de376501eb162164668b1368743bd10f06d4ef3406faca262120f55baad2a156afe3953361cb25422a51d5fa82b55714d876ea11abe2e403b1634f7484c6db89d36d18161390b4e5531199b7cd3bd5b54a5702858d4e8cc9a9b67cedb7cb1ac00b1e9291b641e7e666a13a8a01e230506e553c0fab5a21c59f92548c16ba35b0eee42d3640ecbf55d7271ced731c5a3188b1608943b18f739614362bb52ceae7b8900abbae545bae26b8cdd8204da479b0b0fe9cb77c542c8ab20b2a149f0935929e885d1725e4e2d9406ea2bff5772e24c1d0f51b4ffd95d65995c8a0507f30f66e0e934310f603260d554d953bf5990a165c559e8ce6d0347a6ca136c6d666ea25ff751fff8952ef45aefd3aab1362799b8f67b9f05db612f6237153707757d30c009459859cb2a5133ab6062a10b22dca5c9476c7dbbd7c40a06259984a365cbca5b237b0cd2d9eac60c2dbb1ae41a362f2f6585d457a16ec221d3bf93e4fb2d2ed20ab8fe4954111292ebe1cd3a67bc180b4ea965832f1ddcf3c446bd6e686c564cbe9b467471c6d06074a5b97b1ec205ac1097a68db74b1ccb6f08405f91bf81b7449fd6cf1408f3a6b69ae0f9588e404c4389a941a1905322256afd207cdbf62df0f7824a8dbc84f9807c6ed618c2025ff1497d263a969d394d7426fc7ab85989b24a5e67b52f4e155499afef35ac43aa266d0c2afc69c20f04c0a0ee1bb949d210489d289b818be3fb1087d830c45a37ebfebb6dafb2702bd3f77006721d4bbb8366767cacd1471737be22123679cbe04f4a734b9865afbd76249da53f19219d90692f6cca1cac69fcd25a372fad325fc87f7ab1f3edcac65bc9a4cf3ba7da9cfbbabd67beba5319b984d7e855038edf9b3e5aaae5dfa8def1cfb9dd4ca0c1a9d5709f282cd4d9301adee0eada250c26668b126405b095c0e8dba69ca314f54d23501321b5c6c8bc0b25d693d6dc643b52c71f0c263e021b9a7c1a11b646175f95df6cbea5aba6210dadf9f35ef8afcf23c5a62db59ab' }

let(:integer_cipher_text) { '\xc1c04c036c401ad086beb9e30107ff59e674ba05958eb053c2427b44355e0f333f1726e18a0b851130130510c648f580b13b3f6a223eb26e397008596867c5a511a4f5bfbf2ecc852d8929814480d63166e525fa2b259b6a8d4474b5b1373b4e1a4fe70a491d25442e1c0046fd3d69466ad30153c8d8d920e9b4260d4e4e421ef3ead162b3aba5d85408c4ef9f9d342b5655c7568d1bdc61c27ddb419133bf091f22f42e7bc91ec6d279b7b25b87ea65119568b85ae81079dd0a6a7258b58fb219c6cc4580f33cb46de97770a1eb0880bdf87426fd0529576a1e791e521d9b3c426e393e63d83321f319b00f9dc4027ea5a81dd57c0f5ba868fb86d73179c34f2287c437266e8becc072b45a929562d2320194be54464e03854635d0f7d7fb10813adbc6efe51efa9095a9bacc2a03fb5c41d1c1896384e4f36b100c0f00e81d4cff7d' }
let(:integer_cipher_text) { '\xc1c24e03374ac5d225ffff71100c008d6566bcb0e23faab9665214c2611e9e04d37cf2dc775e834bb8ec0e5b4192927c165f3fc42e667e6b2c681ffe6b87226ff02d15907f82e72019f146347e0f00e395a2ae7c2399d2f8511b290ece078ddd4de03976aac074367b588ee79536490a30e0f24d61c9a25a543834cbcbe46e27448c5afa6e11f61368ea45758993da7e2dae9ee9b8ef365f30c18c9ef8b3dfd9b307dfc65204e0c3954e00a934536712e2374a98f87e4c2b7ec069274548f2e76ae95390b0cf996b2269e9a2d4d2fd437d117ad01628eaa86a686c00fdee98efa321e47063a90a60dee36362a96136482102d8012bc6d5d966e80d39d8548233f865429ad08590d1493f3ce8bf2a7b17a53d591975e2cb3d6b81dfb25f4ea621e1b1727c8b95cd637f539390523d2b6c3a2aba1aa94057706631d5e83124b7307f53ecd01668f83d568d094e461a8cc439859ecf9964d41c2ecf36c0b46b56cdd962c387a6ba5c2eeaa4093a2550099ab1783d9a36758be2ec8effd7498bf8c8ce1bc076d7a3535b52766709dfb9900bfe3073409e705506e006f9df051d7ce83af6a47b4b6a30e9e313db8e992a3f9600160ae8f82163567e7dee06f491c66de1837ef6493f1e791186a4c9704d9eb48c48351fc1bf62e7be0a9d940013142031ae15b3ead2c96748be35ee51157ea4748ca1e4d420974e72a8cd9c5c39606557569d3a4efc4c8ff6df8cfd243be43fc0cc1ea305fc54e2e94d7ae7487c175b0e0e784ce1816872ed57f765fe4f186b0181342d9d3c207bc69cb75ab5a063d60bb67f095a593e690b54cd37f8c1448f9af9d8be384fdb7fd281c13cb235446bc17f8a1a7a1b287fe193820d457c64e329c06d143991f0a858aaa2dd7a280ba29a86ec73b1e76f290be54abfeff60bfa5e1afa7ebb9f30bf9c1bb57bc87420c460e3cd616b47ee567e2e8a1962edc26584780626fe891b79a52ced914aff5261e7da4b6a1d4fddb3ec90e18f4ff543e237cbeb7a31f2ffd147f3e135c410463ff5a92950481889680c6f860b3548d3d7326cd9f5956d4bbfdd56e1d53f51a5abeb3ae7222a48920ca16708739e809a96f9d232014ad7f53dbe68cb1bc826d8a21e2761353199fc82d854070ca10ff11bb236221422ba17f1b8c77af3801310bacb7d23bd34' }

let(:integer_plain_text) { 1 }
let(:plain_text) { 'test' }
Expand All @@ -15,7 +15,7 @@
end

let(:private_key) do
IO.read(File.join(SPEC_ROOT, 'fixtures', 'private.asc'))
IO.read(File.join(SPEC_ROOT, 'fixtures', 'private.asc')) # Expiration date 2074-04-06
end

subject { described_class.new key: ENCRYPTION_PASSWORD, public_key: public_key, private_key: private_key }
Expand Down
110 changes: 53 additions & 57 deletions spec/fixtures/private.asc
Original file line number Diff line number Diff line change
@@ -1,60 +1,56 @@
-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: GnuPG v1.4.10 (GNU/Linux)

lQO+BFKgjPQBCADxhlfBJIauF69IyfHaSYAKDELoLRLoKCqu9GGbm/d5HV4h0Qeb
TQLb3uQ+AEL9hPf5MLc2dj3T30jbUD9wnU+mak2cVilzbYw6Okuh8MP6KyTgkQos
/8pTDZsogirB0E6vx+UGen9Eo6DLljU6oCao8wvVe1AnXBUqLxX4gEOXgtXpf72g
dPY26NV66htB0l+wkIzbovg0+GF32lu0/M5+iU7QoVa0C/2FdKigASutzBtKTyKL
NYGnI+xYgXFWO+GiuQT0St2VmROPvU6di9k1NoaMh+5wK//fqXgf27+qMU5nmgnO
f/vK3gp72NThdobiK1QqDbNJdADzUFb+7molABEBAAH+AwMC9hlrvwnXUxpgJgtF
l5vo2r3qRf3+bdPkyvRPVSorMj0a1FzY30YGlGnifFI0u6b0XFtWNPydtYxXBoII
/POECr9H2/Imi7UArZg0pfFqBJL2/+vmTrX2EAYvE+H0KRxZBX1mXhx6kkLJayG9
exXYVlOLMmJiSjuiI/SzbYr2u7mlD0xEy4vZ0CzDVH37QvUKTYpkHkp2B2G2xqSo
a6AFNKI8rALF5wtwIRe5a8+0zguUlfIOJbQjIKn4cD9h3cbc9rYJmKluzLfeTopq
gwE//gGmwmPtR+i/qwzP8U/LAa2HXBhTTLoi2MYVYzy3CeNr9vS7BVPoZ1WrjHVV
B960XIv3gdUKoQdGJmSKre1zY+lzDuPzqJmEJFIXmQkUEl4V1bd+jLJwRrVpX6aW
frwkUENOo9Fk43lhNXlZZnqoVFBsylL4FmHJCyW8bDZ5hqnkp+0sELzvSuePePhb
CGXyIf3OX4CFDbbSAvK4xdiYjaYNwvAAQFxLskw6Onjpn6TAV+ZSgRD4wyhsNG08
yDbwvhkcblEqeBX8ftLqbILAn7oHSs47xdGrTlobKDVEh/kKP1EmpY+4TGPbUM+g
A9JfWGfQg49DALMRKR2cMZpvf6ugan3ZKUvNP7OJ8zMbsYQqsK0fxlDU6fEpbNCJ
SQOxhflHpuoCoyq1lMcCFI75lVkF+AjEEcQMwfIl8ZtpfvFIJCg1gGE5FWGAIwyq
CaKl6dYk5qVNOw0d/6j+6ZRj9Fv9OF4h3VkGWtddWeWeQBOEwmksIjRglHcmcsgu
Ig9cp76XkNk0+lAgX5uxvznhTv8xaGk2TVNz5zL6lLwaQ2ug+yVgNTKQatZbOIN6
Kax0gADoRnR8aLYVhqMReG+tHSntOBHA98Um3vluk/5XnzKG/PtOXxmJrXMNN3gY
HLRJQ3J5cHQgS2VlcGVyIChwYXNzd29yZCBpcyBzdXBlcm1hZHNlY3JldHN0cmlu
ZykgPGNyeXB0a2VlcGVyQGV4YW1wbGUub3JnPokBOAQTAQIAIgUCUqCM9AIbAwYL
CQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQKbNvUJ79yP6SQQf+JBuFmA5SAMqf
97N7RizL16LgDfKCbA1kJ2mDwoCmyLlCCaMjG+dK+YuEV8gD4GfFRri6T3B03NQL
BNkMipr/palY0cG9Ni0Sy7jt8CXSa1eOuya1gX3FQcI+iwdNv27Pf8dV22WnDIsE
XY3VFtlsusOnMUivFicKE2RXlrtYy9voRLda9O7ihMLYUnRXyjEqtuMO+1YQKSRt
9AkL5PrajZb/nW/DMtK5oCIMrk2q8fQ/wQ1J14Civ3pXzL5W7ZaD0MLJtbH7Uygj
KIzN3T7DpiyPGM+bN7tqhbnLO4+TAvGOKBFM2/QRFykBGfgyDZOP4SkVz7tnGRkC
XTHcW940Y50DvgRSoIz0AQgA1E4Yb171r0aTgWzEGq7gW0gkno8B13rR4Noy6gI0
diiTwV/qBslwUfQNpc6oyV1ytb0J7M6wjlz0hBaAaYiqJLqnyMRqV7N6fWkhyVRm
ZcCIN70wPBrOuMlPdKw/+pLo9BnmimH+wuHnAl/WQArr1G6zF4/KGxKiF4SFnobj
UwNdpIo2/MqJJQE98/n6Ozrwqdaos1BA5OPwuxnHgHJe3Xy7U21SQBXR+hn8ankM
plPcnXNmicHhqd+bXq2CPQdp4rPyLM2/nxHyKi/WEgGFP1m/x2GM4ZSnTn4Q2ODI
tQ3FYt0309v1+I8iAtAqvRxuNgvmh6KggX30WfZ9mcgKqQARAQAB/gMDAvYZa78J
11MaYC+sc4/3fD8opvxxjC2vjD9+Nu49evHI53SaxwcusNSkW7Wafxx4MTUKfwxb
Q760zksn2DGyyKeih4SARNRGuOzfHSSQilyPf0nRQLTcWh9OLrXerV9i5kQjH4Y+
FMYdaM+F2p9X27UDPKRTrs7e+ofTSdn2c4B+KcKoXwK7dB33A+54B6Tg3i/Scc4z
F4jn6HorL2GOSRzo2keBfVFDL+foUi00g6N8/esa0w8JHrea7e6gMJzEQfAQCGOT
g8O8/1X4OuucITtDNJ4MpiZx+h48bFC3k59u88Esg74CI2sdETiQax5+N4xyVbgK
bvFYBmMTik/ofvG2CM+8pmov3g03Oh2AjkyAjKj3Lw3dgVTx/0DeO8pYGqgTEjCC
fHRlIcavJsavlDHQEBn2+83qmVrAynBvBr7HB8+u3KaFwTfavQzrKnRpPEDi6j06
CgIGUvas3kL8dksJvY229zXutLUMpXVZrcuLnur/psSmUBrFbEesVqiM/WjmyeBL
pWt05joHKbPx6sm7xvOwn0Wlh9YoMIRCIGZrtKbCBWVxFLVZWHKOaLQAwN3U3ExZ
XpLMo2Exg8tSC6QsYZf17VQzf9wJi1d5WJgrYgaJY4sFfts5SMCXzjPMCetfmD0s
omC4txVzMtyOkzJ/O7IkxRHF6iMY63rb68wyRcy2U2TlOrciT4yqtEcuACvEWnJ3
fm6QVLvxL9J0s9FxzXlP38ZKsv5GKl0gzcHM4zGF6HUs/b82n3/x8ae8Cm91DTWP
j/s28Sg94M1tICoy971hXt+rMOWYg0e2Ldz48LCSEyGmSheHHQYaJ3tLFCL2+DM0
qJU5eTa82ylc2CYO6e+GoyxJzqWq9sDcAqRPjMsHyQFHOF6DJ29vDJV0976nQZ+i
W2qVfTyjvWmJAR8EGAECAAkFAlKgjPQCGwwACgkQKbNvUJ79yP6PHwf/Tpu1d6NY
MPYHtj8tbSlIMW1noZzxeuV9GIEK7z3d2xBnHK9rPvCBbGbpCqpK2CB/vrTdJVpP
oAaYck5+nnDKqILMZCmJDBeOkpC+a5+pjcPPOKwTzL/6BeZlm58ABI2Z2bd517Kj
5D3VaW9TRE/guA58CBDkWcfGQSmVhufi1Scu1zY7lwDVNeznTEB5EVYMaBCGwyyu
wLgejRZCAt6fvra60gh3OahwpmQflEPwJ0IqqKAWwKhkUefo540IWtE3EShMKur+
okcexIpwXNAqa7XFrZrSsjg67SjBwrK/0BxUaVDpFimALOwieBpxxpsFfl7GN+wT
ziVkBajJpIr1ZA==
=2NOT
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
=PrME
-----END PGP PRIVATE KEY BLOCK-----
Loading

0 comments on commit a78f739

Please sign in to comment.