Luồng xử lý yêu cầu ký số của SAVIS TrustCA RS (Tuân thủ theo 769/QĐ-BTTTT ngày 27/04/2022 của Bộ TTTT)

Luồng xử lý yêu cầu ký số của SAVIS TrustCA RS (Tuân thủ theo 769/QĐ-BTTTT ngày 27/04/2022 của Bộ TTTT)

1        Luồng xử lý yêu cầu ký số

1.1       Khởi tạo yêu cầu ký số

  • Người sử dụng thực hiện yêu cầu ký số.
  • SP đóng gói dưới dạng .xml (hoặc json) yêu cầu ký số bao gồm: thông tin xác thực tài khoản của SP (sp_credentials), mã tài liệu (doc_id), mã giao dịch (transaction_id), mã định danh người ký trong hệ thống SP (user_id), số xê-ri của chứng thư số (serial_number, trường hợp người dùng có nhiều hơn 01 chứng thư số), thời gian thực hiện yêu cầu.
  • SP gửi dữ liệu đã được đóng gói theo giao thức TLS cho TrustCA RS.
  • SP gọi TrustCA RS để lấy thông tin chứng thư.
  • SP tiến hành băm tài liệu cần được ký số và nén dữ liệu.
  • SP gửi mã băm (file_hash), thông tin xác thực tài khoản của SP (sp_credentials), mã giao dịch (transaction_id) cho TrustCA RS.

1.2       Thực hiện ký số

  • TrustCA bóc tách thông tin các thông tin trong dữ liệu .xml (hoặc json).
  • TrustCA xác thực sp_credentials.
  • TrustCA tìm thuê bao từ user_id, gửi lại chứng thư số cho SP.
  • TrustCA gửi yêu cầu và nhận lại xác nhận ký đến người dùng (thông qua app của TrustCA) để thực hiện quy trình ký số.
  • TrustCA thực hiện cấp dấu thời gian cho giao dịch (nếu có).

1.3       Trả kết quả

  • TrustCA đóng gói kết quả ký số dưới dạng .xml (hoặc json), gồm: chữ ký số theo từng mã tài liệu (doc_id), chứng thư số của người ký (user_cert), dấu thời gian (nếu có), thời gian thực hiện yêu cầu, mã giao dịch (transaction_id).
  • TrustCA gửi dữ liệu đã được đóng gói theo giao thức TLS cho SP.
  • SP gắn chữ ký vào file và hoàn tất quy trình ký.
  • Hình thức trả:
  • Thông qua cơ chế webhook: Khi có kết quả ký tài liệu, TrustCA sẽ gửi kết quả cho SP theo url webhook SP đăng ký trước với TrustCA.

2        Định nghĩa giao thức

2.1       API lấy thông tin chứng thư

– Khi người dùng tạo yêu cầu ký số, SP gọi SAVIS TrustCA RS để lấy dữ liệu chứng thư người dùng.

– SAVIS TrustCA RS sẽ kiểm tra và trả về danh sách chứng thư của người dùng.

– Khi có thông tin chứng thư, SP sử dụng dữ liệu này để tính toán hash file cần ký.

Đặc tả API:

  • Phương thức: GET
  • Đường dẫn: https://x.x.x.x/get_certificate 
  • Tham số đầu vào:
STTTham sốKiểu dữ liệuBắt buộcChú thích
1sp_idStringxTên tài khoản của SP do SAVIS TrustCA RS cung cấp
2sp_passwordStringxMật khẩu do SAVIS TrustCA RS cung cấp cho SP
3user_idStringxSố CCCD/CMND/Hộ chiếu/Mã số thuế/ của cá nhân/tổ chức muốn đăng nhập
4serial_numberString Số xê-ri của chứng thư số
5transaction_idStringxMã giao dịch khởi tạo bởi SP
  • Tham số đầu ra:
STTTham sốKiểu dữ liệuChú thích
1status_codeIntMã request thành công hoặc mã lỗi tương ứng. VD: 200, 401,403, 500…
2messageStringThông điệp thành công hoặc thông điệp lỗi tương ứng với mã trạng thái ở status_code.
3cert_idStringĐịnh danh chứng thư số (còn gọi là cert alias)
4cert_dataStringRaw data chứng thư (dạng base64)
5chain_dataList<String>List chứng thư, gồm 3 phần tử. Phần tử đầu tiên là chứng thư số người ký, thứ hai là chứng thư số của SAVIS TrustCA RS, cuối cùng là chứng thư số root do NEAC cấp.
6serial_numberStringSố xê-ri của chứng thư số
7transaction_idStringMã giao dịch khởi tạo bởi SP

2.2       API ký số tài liệu

– SP gọi SAVIS TrustCA RS, cung cấp mã giao dịch (transaction_id)

– SP dùng dữ liệu chứng thư người dùng để tính toán mã băm của tệp cần ký.

– SP gửi dữ liệu file_hash đến SAVIS TrustCA RS để thực hiện ký số tài liệu.

– SP sử dụng mã giao dịch để lấy thông tin chữ ký khi cần.

– Trong trường hợp đặc thù cần thiết, SAVIS TrustCA RS có thể trả về luôn kết quả ký tại request này (giữ và chờ request).

Đặc tả API:

  • Phương thức: POST
  • Đường dẫn: https://x.x.x.x/sign
  • Tham số đầu vào:
STTTham sốKiểu dữ liệuBắt buộcChú thích
1sp_idStringxTên tài khoản của SP do SAVIS TrustCA RS cung cấp
2sp_passwordStringxMật khẩu do SAVIS TrustCA RS cung cấp cho SP
3user_idStringxSố CCCD/CMND/Hộ chiếu/Mã số thuế/ của cá nhân/tổ chức muốn đăng nhập
4data_to_be_signedStringxChuỗi biểu diễn của tài liệu được yêu cầu ký số (base64 string với file, hex với hash)
5doc_idStringxMã tài liệu yêu cầu ký số
6file_typeStringxLoại file: xml/json/word/pdf/excel/…
7sign_typeStringxLoại ký số: hash/file
8serial_numberString Số xê-ri của chứng thư số (trong trường hợp một chủ thể có nhiều chứng thư số)
9time_stampString Thời gian người dùng gửi yêu cầu ký số. Định dạng: YYYYMMddHHmmSS
10transaction_idStringMã giao dịch khởi tạo bởi SP
  • Tham số đầu ra:
STTTham sốKiểu dữ liệuChú thích
1status_codeIntMã request thành công hoặc mã lỗi tương ứng. VD: 200, 401, 403, 500…
2messageStringThông điệp thành công hoặc thông điệp lỗi tương ứng với mã trạng thái ở status_code
3transaction_idStringMã giao dịch khởi tạo bởi SP
4doc_idStringMã tài liệu yêu cầu ký số
5signature_valueStringDữ liệu chữ ký gắn với tài liệu (dạng base64)
6timestamp_signatureStringChữ ký của SAVIS TrustCA RS lên dấu thời gian của giao dịch ký số

2.3       API webhook nhận thông tin ký tài liệu

– CA gọi SP theo url đăng ký trước.

– Sau khi CA có kết quả ký số tài liệu, CA sẽ gửi kết quả về cho SP.

– SP gắn chữ ký vào file, trả về cho người dùng, kết thúc luồng ký.

Đặc tả API:

  • Phương thức: POST
  • Đường dẫn: https://x.x.x.x/recv_signature
  • Tham số đầu vào:
STTTham sốKiểu dữ liệuBắt buộcChú thích
1sp_idStringxTên tài khoản của SP do TrustCA cung cấp
2status_codeintxMã request thành công hoặc mã lỗi tương ứng. VD: 200, 401, 403, 500…
3messageStringxThông điệp thành công hoặc thông điệp lỗi tương ứng với mã trạng thái ở status_code
4transaction_idStringxMã giao dịch khởi tạo bởi SP
5doc_idString Mã tài liệu yêu cầu ký số
6signature_valueString Dữ liệu chữ ký gắn với tài liệu (dạng base64)
7timestamp_signatureString Chữ ký của SAVIS TrustCA RS lên dấu thời gian của giao dịch ký số
  • Tham số đầu ra:
STTTham sốKiểu dữ liệuChú thích
1status_codeIntMã request thành công hoặc mã lỗi tương ứng. VD: 200, 401, 403, 500…
2messageStringThông điệp thành công hoặc thông điệp lỗi tương ứng với mã trạng thái ở status_code
Contact Me on Zalo