in client/client.go [122:153]
func (c *StetClient) ekmSecureSessionWrap(ctx context.Context, unwrappedShare []byte, md kekMetadata, ekmCertPool *x509.CertPool) ([]byte, error) {
addr, keyPath, err := parseEKMKeyURI(md.uri)
if err != nil {
return nil, err
}
var ekmClient secureSessionClient
if c.testSecureSessionClient != nil {
ekmClient = c.testSecureSessionClient
} else {
authToken, err := jwt.GenerateTokenWithAudience(ctx, addr)
if err != nil {
return nil, err
}
ekmClient, err = securesession.EstablishSecureSession(ctx, md.uri, authToken, securesession.HTTPCertPool(ekmCertPool), securesession.SkipTLSVerify(c.InsecureSkipVerify))
if err != nil {
return nil, fmt.Errorf("error establishing secure session: %v", err)
}
}
wrappedBlob, err := ekmClient.ConfidentialWrap(ctx, keyPath, md.resourceName, unwrappedShare)
if err != nil {
return nil, fmt.Errorf("error wrapping with secure session: %v", err)
}
if err := ekmClient.EndSession(ctx); err != nil {
return nil, fmt.Errorf("error ending secure session: %v", err)
}
return wrappedBlob, nil
}