code: func (e *Engine) WithUnsealer(ctx context.Context, privKP *EncryptionKeyPair,
  	pubKey []byte, fn func(Unsealer) error) error {
  
  	privKey, err := e.Unseal(ctx, privKP.Private, privKP.PNonce)
  	if err != nil {
  		return err
  	}
  	defer privKey.Destroy()
  
  	err = ctxutil.ErrIfDone(ctx)
  	if err != nil {
  		return err
  	}
  
  	u := unsealerImpl{privkey: privKey, pubkey: pubKey, engine: e}
  	return fn(&u)
  }
docs: // WithUnsealer returns an Unsealer to unseal keypairs which can
  // subsequentently perform crypto operations through the Unsealer interface.