5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/ecdsa/ext/sign_verify.rb', line 5
def self.sign(group, private_key, digest, temporary_key)
r_point = (group.generator.to_jacobian * temporary_key).to_affine
point_field = PrimeField.new(group.order)
r = point_field.mod(r_point.x)
return nil if r.zero?
e = normalize_digest(digest, group.bit_length)
s =
point_field.mod(
point_field.inverse(temporary_key) * (e + r * private_key)
)
return nil if s.zero?
Signature.new r, s
end
|