123456789101112131415161718192021222324252627282930 |
- -module(oauth_rsa_sha1).
- -export([signature/2, verify/3]).
- -include_lib("public_key/include/public_key.hrl").
- signature(BaseString, PrivateKeyPath) ->
- {ok, Contents} = file:read_file(PrivateKeyPath),
- [Info] = public_key:pem_decode(Contents),
- PrivateKey = public_key:pem_entry_decode(Info),
- base64:encode_to_string(public_key:sign(list_to_binary(BaseString), sha, PrivateKey)).
- verify(Signature, BaseString, Cert) ->
- public_key:verify(to_binary(BaseString), sha, base64:decode(Signature), pkey(Cert)).
- to_binary(Term) when is_list(Term) ->
- list_to_binary(Term);
- to_binary(Term) when is_binary(Term) ->
- Term.
- pkey(Path) when is_list(Path) ->
- {ok, Contents} = file:read_file(Path),
- [{'Certificate', DerCert, not_encrypted}] = public_key:pem_decode(Contents),
- pkey(public_key:pkix_decode_cert(DerCert, otp));
- pkey(#'OTPCertificate'{tbsCertificate=Cert}) ->
- pkey(Cert);
- pkey(#'OTPTBSCertificate'{subjectPublicKeyInfo=Info}) ->
- pkey(Info);
- pkey(#'OTPSubjectPublicKeyInfo'{subjectPublicKey=Key}) ->
- Key.
|