Skip to content

Commit 6e1cc27

Browse files
committed
Add sha256 fingerprint
1 parent c432b63 commit 6e1cc27

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

lib/easy_ssl.ex

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ defmodule EasySSL do
4646
subjectKeyIdentifier: "E6:61:14:4E:5A:4B:51:0C:4E:6C:5E:3C:79:61:65:D4:BD:64:94:BE"
4747
},
4848
fingerprint: "FA:BE:B5:9B:ED:C2:2B:42:7E:B1:45:C8:9A:8A:73:16:4A:A0:10:09",
49+
fingerprint_sha256: "FA:BE:B5:9B:ED:C2:2B:42:7E:B1:45:C8:9A:8A:73:16:4A:A0:10:09:DE:AD:BE:EF:CA:FE:BA:BE",
4950
issuer: %{
5051
C: "US",
5152
CN: "Go Daddy Secure Certification Authority",
@@ -76,7 +77,8 @@ defmodule EasySSL do
7677
cert = :public_key.pkix_decode_cert(certificate_der, :otp) |> get_field(:tbsCertificate)
7778

7879
serialized_certificate = %{}
79-
|> Map.put(:fingerprint, certificate_der |> fingerprint_cert)
80+
|> Map.put(:fingerprint, certificate_der |> fingerprint_cert(:sha))
81+
|> Map.put(:fingerprint_sha256, certificate_der |> fingerprint_cert(:sha256))
8082
|> Map.put(:serial_number, cert |> get_field(:serialNumber) |> Integer.to_string(16))
8183
|> Map.put(:signature_algorithm, cert |> parse_signature_algo)
8284
|> Map.put(:subject, cert |> parse_rdnsequence(:subject))
@@ -197,8 +199,8 @@ defmodule EasySSL do
197199
elem(record, idx + 1)
198200
end
199201

200-
defp fingerprint_cert(certificate) do
201-
:crypto.hash(:sha, certificate)
202+
defp fingerprint_cert(certificate, algorithm) do
203+
:crypto.hash(algorithm, certificate)
202204
|> Base.encode16
203205
|> String.to_charlist
204206
|> Enum.chunk_every(2, 2, :discard)

test/easy_ssl_test.exs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ defmodule EasySSLTest do
55
@pem_cert_dir "test/data/pem/"
66

77
def assert_has_normal_atom_keys(cert) do
8-
keys = [:extensions, :fingerprint, :issuer, :not_after, :not_before, :serial_number, :signature_algorithm, :subject]
8+
keys = [:extensions, :fingerprint, :fingerprint_256, :issuer, :not_after, :not_before, :serial_number, :signature_algorithm, :subject]
99
Enum.each(keys, fn key ->
1010
assert Map.has_key?(cert, key)
1111
end)
1212
end
1313

1414
def assert_has_normal_string_keys(cert) do
15-
keys = ["extensions", "fingerprint", "issuer", "not_after", "not_before", "serial_number", "signature_algorithm", "subject"]
15+
keys = ["extensions", "fingerprint", "fingerprint_256", "issuer", "not_after", "not_before", "serial_number", "signature_algorithm", "subject"]
1616
Enum.each(keys, fn key ->
1717
assert Map.has_key?(cert, key)
1818
end)

0 commit comments

Comments
 (0)