// Copyright 2016 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Package iberoot defines an interface for requesting private keys for
// specific blessings in a blessings-based encryption scheme.
package iberoot

import "v.io/x/ref/lib/security/bcrypter"

// Root is an interface for requesting private keys for blessings.
//
// The keys are extracted in a blessings-based encryption scheme, which in
// turn is based on an identity-based encryption (IBE) scheme (e.g., the BB1
// IBE scheme).
type Root interface {
     // SeekPrivateKeys creates and returns private keys for blessings
     // presented by the calling principal. The blessings must be from
     // an identity provider recognized by this service.
     //
     // The extracted private keys can be used to decrypt any ciphertext
     // encrypted for a pattern matched by the presented blessings.
     SeekPrivateKeys() ([]bcrypter.WirePrivateKey | error)

     // Params returns the public encryption parameters of this service.
     Params() (bcrypter.WireParams | error)
}
