Both are correct, and it will depend on location which form is more commonly used. (I would consider had given to be the correct answer but gave would be ok.)
kept is the imperfect form of keep, gave is the imperfect form of give and had given is the perfect form [of give].
If written with the linking word that (which then sounds like "better" English):
Rose kept the promise that she had given to Charles last year.
then in this case had given rather than gave would be the better choice (with the usual caveat of location affecting how people speak).
On the other hand, if broken down into separate sentences as in a conversation:
Rose kept the promise.
The promise [that] she gave [to] Charles last year.
then gave sounds better.