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

Method createSystemKey

idm/key/grpc/handler.go:286–317  ·  view source on GitHub ↗

Create a default key or create a system key with a given ID

(ctx context.Context, keyID string, keyLabel string)

Source from the content-addressed store, hash-verified

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 {
287 dao, err := manager.Resolve[key.DAO](ctx)
288 if err != nil {
289 return err
290 }
291
292 systemKey := &enc.Key{
293 ID: keyID,
294 Owner: common.PydioSystemUsername,
295 Label: keyLabel,
296 CreationDate: int32(time.Now().Unix()),
297 }
298
299 keyContentBytes := make([]byte, 32)
300 if _, err := rand.Read(keyContentBytes); err != nil {
301 return err
302 }
303
304 master, err := ukm.masterFromCache(ctx)
305 if err != nil {
306 return err
307 }
308
309 masterKey := crypto.KeyFromPassword(master, 32)
310 encryptedKeyContentBytes, err := crypto.Seal(masterKey, keyContentBytes)
311 if err != nil {
312 return errors.WithMessagef(errors.StatusInternalServerError, "failed to encrypt the default key. Cause: %s", err.Error())
313 }
314 systemKey.Content = base64.StdEncoding.EncodeToString(encryptedKeyContentBytes)
315 log.Logger(ctx).Debug(fmt.Sprintf("Saving default key %s", systemKey.Content))
316 return dao.SaveKey(ctx, systemKey)
317}
318
319func (ukm *userKeyStore) masterFromCache(ctx context.Context) (master []byte, err error) {
320 ka, er := cache_helper.ResolveCache(ctx, common.CacheTypeLocal, keyCacheConfig)

Callers 1

AdminCreateKeyMethod · 0.95

Calls 9

masterFromCacheMethod · 0.95
KeyFromPasswordFunction · 0.92
SealFunction · 0.92
LoggerFunction · 0.92
makeFunction · 0.85
ReadMethod · 0.65
ErrorMethod · 0.65
DebugMethod · 0.65
SaveKeyMethod · 0.65

Tested by

no test coverage detected