aboutsummaryrefslogtreecommitdiff
path: root/account.go
diff options
context:
space:
mode:
Diffstat (limited to 'account.go')
-rw-r--r--account.go25
1 files changed, 8 insertions, 17 deletions
diff --git a/account.go b/account.go
index 68dae50..0ce0643 100644
--- a/account.go
+++ b/account.go
@@ -2,7 +2,6 @@ package acme
import (
"crypto/rsa"
- "errors"
"io"
"net/mail"
"strings"
@@ -23,7 +22,11 @@ type Account struct {
// NewAccount ...
func NewAccount(key *rsa.PrivateKey) (*Account, error) {
- return &Account{PrivKey: key}, nil
+ signer, err := jose.NewSigner(jose.RS256, key)
+ if err != nil {
+ return nil, err
+ }
+ return &Account{PrivKey: key, signer: signer}, nil
}
func (a *Account) AddMail(email string) error {
@@ -44,24 +47,12 @@ func (a *Account) AddPhone(phone string) error {
// Signer describes a signing interface
type Signer interface {
- Init(jose.NonceSource) error
- Sign([]byte) (io.Reader, error)
+ Sign([]byte, jose.NonceSource) (io.Reader, error)
}
-func (a *Account) Init(n jose.NonceSource) error {
- var err error
- a.signer, err = jose.NewSigner(jose.RS256, a.PrivKey)
- if err != nil {
- return err
- }
+// Sign implements Signer interface
+func (a *Account) Sign(msg []byte, n jose.NonceSource) (io.Reader, error) {
a.signer.SetNonceSource(n)
- return nil
-}
-
-func (a *Account) Sign(msg []byte) (io.Reader, error) {
- if a.signer == nil {
- return nil, errors.New("init first")
- }
obj, err := a.signer.Sign(msg)
if err != nil {
return nil, err