MCPcopy Create free account
hub / github.com/pydio/cells / AdminExportKey

Method AdminExportKey

idm/key/grpc/handler.go:232–283  ·  view source on GitHub ↗
(ctx context.Context, req *enc.AdminExportKeyRequest)

Source from the content-addressed store, hash-verified

230}
231
232func (ukm *userKeyStore) AdminExportKey(ctx context.Context, req *enc.AdminExportKeyRequest) (*enc.AdminExportKeyResponse, error) {
233 dao, err := manager.Resolve[key.DAO](ctx)
234 if err != nil {
235 return nil, err
236 }
237
238 rsp := &enc.AdminExportKeyResponse{}
239 var version int
240 rsp.Key, version, err = dao.GetKey(ctx, common.PydioSystemUsername, req.KeyID)
241 if err != nil {
242 return rsp, err
243 }
244 log.Logger(ctx).Debug(fmt.Sprintf("Exporting key %s", rsp.Key.Content))
245
246 // We set export info
247 if rsp.Key.Info.Exports == nil {
248 rsp.Key.Info.Exports = []*enc.Export{}
249 }
250 rsp.Key.Info.Exports = append(rsp.Key.Info.Exports, &enc.Export{
251 By: common.PydioSystemUsername,
252 Date: int32(time.Now().Unix()),
253 })
254
255 // We update the key
256 err = dao.SaveKey(ctx, rsp.Key, version)
257 if err != nil {
258 return rsp, errors.WithMessagef(errors.StatusInternalServerError, "failed to update key info, cause: %s", err.Error())
259 }
260
261 pwd, err := ukm.masterFromCache(ctx)
262 if err != nil {
263 return nil, err
264 }
265
266 if version < 4 {
267 if p, e := ukm.legacyFromCache(ctx, pwd); e == nil {
268 pwd = p
269 } else {
270 return nil, e
271 }
272 }
273 err = open(rsp.Key, pwd)
274 if err != nil {
275 return rsp, errors.WithMessagef(errors.StatusInternalServerError, "unable to decrypt for %s with key %s, cause: %s", common.PydioSystemUsername, req.KeyID, err)
276 }
277
278 err = seal(rsp.Key, []byte(req.StrPassword))
279 if err != nil {
280 return rsp, errors.WithMessagef(errors.StatusInternalServerError, "unable to encrypt for %s with key %s for export, cause: %s", common.PydioSystemUsername, req.KeyID, err)
281 }
282 return rsp, nil
283}
284
285// Create a default key or create a system key with a given ID
286func (ukm *userKeyStore) createSystemKey(ctx context.Context, keyID string, keyLabel string) error {

Callers

nothing calls this directly

Calls 9

masterFromCacheMethod · 0.95
legacyFromCacheMethod · 0.95
LoggerFunction · 0.92
sealFunction · 0.85
openFunction · 0.70
GetKeyMethod · 0.65
DebugMethod · 0.65
SaveKeyMethod · 0.65
ErrorMethod · 0.65

Tested by

no test coverage detected