import { ApiClient } from "../base"; import { CreateKmsKeyOptions, CreateKmsKeyResponse, DeleteKmsKeyOptions, DeleteKmsKeyResponse, GetKmsKeyByNameOptions, GetKmsKeyByNameResponse, KmsDecryptDataOptions, KmsDecryptDataResponse, KmsEncryptDataOptions, KmsEncryptDataResponse, KmsGetPublicKeyOptions, KmsGetPublicKeyResponse, KmsListSigningAlgorithmsOptions, KmsListSigningAlgorithmsResponse, KmsSignDataOptions, KmsSignDataResponse, KmsVerifyDataOptions, KmsVerifyDataResponse } from "../types/kms"; export class KmsApi { constructor(private apiClient: ApiClient) {} async createKmsKey(data: CreateKmsKeyOptions): Promise { return this.apiClient.post("/api/v1/kms/keys", data); } async deleteKmsKey(data: DeleteKmsKeyOptions): Promise { return this.apiClient.delete(`/api/v1/kms/keys/${data.keyId}`); } async getKmsKeyByName(data: GetKmsKeyByNameOptions): Promise { return this.apiClient.get(`/api/v1/kms/keys/key-name/${encodeURIComponent(data.name)}?projectId=${data.projectId}`); } async encryptData(data: KmsEncryptDataOptions): Promise { return this.apiClient.post(`/api/v1/kms/keys/${data.keyId}/encrypt`, data); } async decryptData(data: KmsDecryptDataOptions): Promise { return this.apiClient.post(`/api/v1/kms/keys/${data.keyId}/decrypt`, data); } async signData(data: KmsSignDataOptions): Promise { return this.apiClient.post(`/api/v1/kms/keys/${data.keyId}/sign`, data); } async verifyData(data: KmsVerifyDataOptions): Promise { return this.apiClient.post(`/api/v1/kms/keys/${data.keyId}/verify`, data); } async listSigningAlgorithms(data: KmsListSigningAlgorithmsOptions): Promise { return this.apiClient.get(`/api/v1/kms/keys/${data.keyId}/signing-algorithms`); } async getSigningPublicKey(data: KmsGetPublicKeyOptions): Promise { return this.apiClient.get(`/api/v1/kms/keys/${data.keyId}/public-key`); } }