Skip to content

Commit f458bb4

Browse files
committed
feat: make it easy for signer/verifier to transmit keys over the network
1 parent 4c9a8d7 commit f458bb4

File tree

7 files changed

+64
-17
lines changed

7 files changed

+64
-17
lines changed

README.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,10 @@ signing_key = algorithm.generate_signing_key
3737
signature = algorithm.sign(to_be_signed)
3838

3939
# Signer sends verify key to Verifier
40-
verify_key = signing_key.verify_key
40+
verify_key_string = signing_key.verify_key.serialize
4141

4242
# Verifier
43+
verify_key = OpenSSL::SignatureAlgorithm::ECDSA::VerifyKey.deserialize(verify_key_string)
4344
algorithm = OpenSSL::SignatureAlgorithm::ECDSA.new("256")
4445
algorithm.verify_key = verify_key
4546
algorithm.verify(signature, to_be_signed)
@@ -56,9 +57,10 @@ signing_key = algorithm.generate_signing_key
5657
signature = algorithm.sign(to_be_signed)
5758

5859
# Signer sends verify key to Verifier
59-
verify_key = signing_key.verify_key
60+
verify_key_string = signing_key.verify_key.serialize
6061

6162
# Verifier
63+
verify_key = OpenSSL::SignatureAlgorithm::RSAPSS::VerifyKey.deserialize(verify_key_string)
6264
algorithm = OpenSSL::SignatureAlgorithm::RSAPSS.new("256")
6365
algorithm.verify_key = verify_key
6466
algorithm.verify(signature, to_be_signed)
@@ -75,9 +77,10 @@ signing_key = algorithm.generate_signing_key
7577
signature = algorithm.sign(to_be_signed)
7678

7779
# Signer sends verify key to Verifier
78-
verify_key = signing_key.verify_key
80+
verify_key_string = signing_key.verify_key.serialize
7981

8082
# Verifier
83+
verify_key = OpenSSL::SignatureAlgorithm::RSAPKCS1::VerifyKey.deserialize(verify_key_string)
8184
algorithm = OpenSSL::SignatureAlgorithm::RSAPKCS1.new("256")
8285
algorithm.verify_key = verify_key
8386
algorithm.verify(signature, to_be_signed)

lib/openssl/signature_algorithm/ecdsa.rb

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,25 @@ def verify_key
1919
end
2020

2121
class VerifyKey < OpenSSL::PKey::EC::Point
22-
def verify(*args)
23-
ec_key = OpenSSL::PKey::EC.new(group)
24-
ec_key.public_key = self
22+
def self.deserialize(pem_string)
23+
new(OpenSSL::PKey::EC.new(pem_string).public_key)
24+
end
25+
26+
def serialize
27+
ec_key.to_pem
28+
end
2529

30+
def ec_key
31+
@ec_key ||=
32+
begin
33+
ec_key = OpenSSL::PKey::EC.new(group)
34+
ec_key.public_key = self
35+
36+
ec_key
37+
end
38+
end
39+
40+
def verify(*args)
2641
ec_key.verify(*args)
2742
end
2843
end

lib/openssl/signature_algorithm/rsapkcs1.rb

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,17 @@ module SignatureAlgorithm
88
class RSAPKCS1 < Base
99
class SigningKey < OpenSSL::PKey::RSA
1010
def verify_key
11-
public_key
11+
VerifyKey.new(public_key.to_pem)
12+
end
13+
end
14+
15+
class VerifyKey < OpenSSL::PKey::RSA
16+
class << self
17+
alias_method :deserialize, :new
18+
end
19+
20+
def serialize
21+
to_pem
1222
end
1323
end
1424

lib/openssl/signature_algorithm/rsapss.rb

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,17 @@ module SignatureAlgorithm
88
class RSAPSS < Base
99
class SigningKey < OpenSSL::PKey::RSA
1010
def verify_key
11-
public_key
11+
VerifyKey.new(public_key.to_pem)
12+
end
13+
end
14+
15+
class VerifyKey < OpenSSL::PKey::RSA
16+
class << self
17+
alias_method :deserialize, :new
18+
end
19+
20+
def serialize
21+
to_pem
1222
end
1323
end
1424

spec/openssl/signature_algorithm/ecdsa_spec.rb

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@
1212
signature = algorithm.sign(to_be_signed)
1313

1414
# Signer sends verify key to Verifier
15-
verify_key = signing_key.verify_key
15+
verify_key_string = signing_key.verify_key.serialize
1616

1717
# Verifier
18+
verify_key = OpenSSL::SignatureAlgorithm::ECDSA::VerifyKey.deserialize(verify_key_string)
1819
algorithm = OpenSSL::SignatureAlgorithm::ECDSA.new("256")
1920
algorithm.verify_key = verify_key
2021
algorithm.verify(signature, to_be_signed)
@@ -29,9 +30,10 @@
2930
signature = algorithm.sign(to_be_signed)
3031

3132
# Signer sends verify key to Verifier
32-
verify_key = signing_key.verify_key
33+
verify_key_string = signing_key.verify_key.serialize
3334

3435
# Verifier
36+
verify_key = OpenSSL::SignatureAlgorithm::ECDSA::VerifyKey.deserialize(verify_key_string)
3537
algorithm = OpenSSL::SignatureAlgorithm::ECDSA.new("384")
3638
algorithm.verify_key = verify_key
3739
algorithm.verify(signature, to_be_signed)
@@ -46,9 +48,10 @@
4648
signature = algorithm.sign(to_be_signed)
4749

4850
# Signer sends verify key to Verifier
49-
verify_key = signing_key.verify_key
51+
verify_key_string = signing_key.verify_key.serialize
5052

5153
# Verifier
54+
verify_key = OpenSSL::SignatureAlgorithm::ECDSA::VerifyKey.deserialize(verify_key_string)
5255
algorithm = OpenSSL::SignatureAlgorithm::ECDSA.new("512")
5356
algorithm.verify_key = verify_key
5457
algorithm.verify(signature, to_be_signed)

spec/openssl/signature_algorithm/rsapkcs1_spec.rb

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@
1212
signature = algorithm.sign(to_be_signed)
1313

1414
# Signer sends verify key to Verifier
15-
verify_key = signing_key.verify_key
15+
verify_key_string = signing_key.verify_key.serialize
1616

1717
# Verifier
18+
verify_key = OpenSSL::SignatureAlgorithm::RSAPKCS1::VerifyKey.deserialize(verify_key_string)
1819
algorithm = OpenSSL::SignatureAlgorithm::RSAPKCS1.new("256")
1920
algorithm.verify_key = verify_key
2021
algorithm.verify(signature, to_be_signed)
@@ -29,9 +30,10 @@
2930
signature = algorithm.sign(to_be_signed)
3031

3132
# Signer sends verify key to Verifier
32-
verify_key = signing_key.verify_key
33+
verify_key_string = signing_key.verify_key.serialize
3334

3435
# Verifier
36+
verify_key = OpenSSL::SignatureAlgorithm::RSAPKCS1::VerifyKey.deserialize(verify_key_string)
3537
algorithm = OpenSSL::SignatureAlgorithm::RSAPKCS1.new("384")
3638
algorithm.verify_key = verify_key
3739
algorithm.verify(signature, to_be_signed)
@@ -46,9 +48,10 @@
4648
signature = algorithm.sign(to_be_signed)
4749

4850
# Signer sends verify key to Verifier
49-
verify_key = signing_key.verify_key
51+
verify_key_string = signing_key.verify_key.serialize
5052

5153
# Verifier
54+
verify_key = OpenSSL::SignatureAlgorithm::RSAPKCS1::VerifyKey.deserialize(verify_key_string)
5255
algorithm = OpenSSL::SignatureAlgorithm::RSAPKCS1.new("512")
5356
algorithm.verify_key = verify_key
5457
algorithm.verify(signature, to_be_signed)

spec/openssl/signature_algorithm/rsapss_spec.rb

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@
1818
signature = algorithm.sign(to_be_signed)
1919

2020
# Signer sends verify key to Verifier
21-
verify_key = signing_key.verify_key
21+
verify_key_string = signing_key.verify_key.serialize
2222

2323
# Verifier
24+
verify_key = OpenSSL::SignatureAlgorithm::RSAPSS::VerifyKey.deserialize(verify_key_string)
2425
algorithm = OpenSSL::SignatureAlgorithm::RSAPSS.new("256")
2526
algorithm.verify_key = verify_key
2627
algorithm.verify(signature, to_be_signed)
@@ -35,9 +36,10 @@
3536
signature = algorithm.sign(to_be_signed)
3637

3738
# Signer sends verify key to Verifier
38-
verify_key = signing_key.verify_key
39+
verify_key_string = signing_key.verify_key.serialize
3940

4041
# Verifier
42+
verify_key = OpenSSL::SignatureAlgorithm::RSAPSS::VerifyKey.deserialize(verify_key_string)
4143
algorithm = OpenSSL::SignatureAlgorithm::RSAPSS.new("384")
4244
algorithm.verify_key = verify_key
4345
algorithm.verify(signature, to_be_signed)
@@ -52,9 +54,10 @@
5254
signature = algorithm.sign(to_be_signed)
5355

5456
# Signer sends verify key to Verifier
55-
verify_key = signing_key.verify_key
57+
verify_key_string = signing_key.verify_key.serialize
5658

5759
# Verifier
60+
verify_key = OpenSSL::SignatureAlgorithm::RSAPSS::VerifyKey.deserialize(verify_key_string)
5861
algorithm = OpenSSL::SignatureAlgorithm::RSAPSS.new("512")
5962
algorithm.verify_key = verify_key
6063
algorithm.verify(signature, to_be_signed)

0 commit comments

Comments
 (0)