@@ -79,6 +79,33 @@ func ShareResource(ctx context.Context, c *api.Client, resourceID string, change
79
79
return fmt .Errorf ("Validating Secret Data: %w" , err )
80
80
}
81
81
82
+ // if Metadata has not been shared yet then we need to do that
83
+ // we assume that if MetadataKeyType is not null that this is a v5 Resource and that the other field are fine
84
+ if resource .MetadataKeyType == api .MetadataKeyTypeUserKey {
85
+ metadata , err := GetResourceMetadata (ctx , c , resource , rType )
86
+ if err != nil {
87
+ return fmt .Errorf ("Get Metadata: %w" , err )
88
+ }
89
+
90
+ metadataKeyID , metadataKeyType , publicMetadataKey , err := GetMetadataKey (ctx , c , true )
91
+ if err != nil {
92
+ return fmt .Errorf ("Get Metadata Key: %w" , err )
93
+ }
94
+ resource .MetadataKeyID = metadataKeyID
95
+ resource .MetadataKeyType = metadataKeyType
96
+
97
+ encMetadata , err := c .EncryptMessageWithKey (publicMetadataKey , string (metadata ))
98
+ if err != nil {
99
+ return fmt .Errorf ("Encrypt Metadata: %w" , err )
100
+ }
101
+ resource .Metadata = encMetadata
102
+
103
+ resource , err = c .UpdateResource (ctx , resource .ID , * resource )
104
+ if err != nil {
105
+ return fmt .Errorf ("Update Resource Metadata to Shared key: %w" , err )
106
+ }
107
+ }
108
+
82
109
simulationResult , err := c .SimulateShareResource (ctx , resourceID , shareRequest )
83
110
if err != nil {
84
111
return fmt .Errorf ("Simulate Share Resource: %w" , err )
0 commit comments