Класс для управления и подписания документов с использованием WIF-ключа.

Example

const wifKey = "your-wif-private-key";
const docSigner = new Document(wifKey);

const generatedDoc: IGeneratedDocument = {
full_title: "Пример документа",
html: "<p>Это пример документа</p>",
hash: "hash_of_document",
meta: { author: "Автор документа" },
binary: "binary_data"
};

const signedDoc = await docSigner.signDocument(generatedDoc);
console.log(signedDoc);

// Замена WIF-ключа
docSigner.setWif("new-wif-private-key");

Constructors

Methods

  • Подписывает документ и возвращает его в формате ISignedDocument.

    Parameters

    • document: IGeneratedDocument

      Сгенерированный документ для подписи.

    • account: string

      Имя аккаунта подписывающего (signer)

    • signatureId: number = 1

      ID подписи (обычно 1 для первой подписи)

    • Optional existingSignedDocuments: {
          doc_hash: string;
          hash: string;
          meta: any;
          meta_hash: string;
          signatures: {
              id: number;
              is_valid?: null | boolean;
              meta: any;
              public_key: string;
              signature: string;
              signed_at: string;
              signed_hash: string;
              signer: string;
              signer_certificate?: null | {
                  first_name: string;
                  inn: string;
                  last_name: string;
                  middle_name?: null | string;
                  type: AccountType;
                  username: string;
              } | {
                  first_name: string;
                  last_name: string;
                  middle_name?: null | string;
                  type: AccountType;
                  username: string;
              } | {
                  inn: string;
                  ogrn: string;
                  represented_by: {
                      first_name: string;
                      last_name: string;
                      middle_name: string;
                      position: string;
                  };
                  short_name: string;
                  type: AccountType;
                  username: string;
              };
          }[];
          version: string;
      }[]

      Массив уже подписанных документов для объединения подписей

    Returns Promise<{
        doc_hash: string;
        hash: string;
        meta: any;
        meta_hash: string;
        signatures: {
            id: number;
            is_valid?: null | boolean;
            meta: any;
            public_key: string;
            signature: string;
            signed_at: string;
            signed_hash: string;
            signer: string;
            signer_certificate?: null | {
                first_name: string;
                inn: string;
                last_name: string;
                middle_name?: null | string;
                type: AccountType;
                username: string;
            } | {
                first_name: string;
                last_name: string;
                middle_name?: null | string;
                type: AccountType;
                username: string;
            } | {
                inn: string;
                ogrn: string;
                represented_by: {
                    first_name: string;
                    last_name: string;
                    middle_name: string;
                    position: string;
                };
                short_name: string;
                type: AccountType;
                username: string;
            };
        }[];
        version: string;
    }>

    Подписанный документ.

  • Статический метод для валидации подписей документа по списку username. Проверяет наличие подписей от указанных пользователей и их валидность. Выбрасывает ошибку если валидация не прошла.

    Parameters

    • document: {
          doc_hash: string;
          hash: string;
          meta: any;
          meta_hash: string;
          signatures: {
              id: number;
              is_valid?: null | boolean;
              meta: any;
              public_key: string;
              signature: string;
              signed_at: string;
              signed_hash: string;
              signer: string;
              signer_certificate?: null | {
                  first_name: string;
                  inn: string;
                  last_name: string;
                  middle_name?: null | string;
                  type: AccountType;
                  username: string;
              } | {
                  first_name: string;
                  last_name: string;
                  middle_name?: null | string;
                  type: AccountType;
                  username: string;
              } | {
                  inn: string;
                  ogrn: string;
                  represented_by: {
                      first_name: string;
                      last_name: string;
                      middle_name: string;
                      position: string;
                  };
                  short_name: string;
                  type: AccountType;
                  username: string;
              };
          }[];
          version: string;
      }

      Подписанный документ для проверки

      • doc_hash: string
      • hash: string
      • meta: any
      • meta_hash: string
      • signatures: {
            id: number;
            is_valid?: null | boolean;
            meta: any;
            public_key: string;
            signature: string;
            signed_at: string;
            signed_hash: string;
            signer: string;
            signer_certificate?: null | {
                first_name: string;
                inn: string;
                last_name: string;
                middle_name?: null | string;
                type: AccountType;
                username: string;
            } | {
                first_name: string;
                last_name: string;
                middle_name?: null | string;
                type: AccountType;
                username: string;
            } | {
                inn: string;
                ogrn: string;
                represented_by: {
                    first_name: string;
                    last_name: string;
                    middle_name: string;
                    position: string;
                };
                short_name: string;
                type: AccountType;
                username: string;
            };
        }[]
      • version: string
    • requiredSigners: string[]

      Массив username, чьи подписи должны присутствовать и быть валидными

    Returns void

    Throws

    Error с описанием причины неудачи валидации

    Example

    try {
    Document.assertDocumentSignatures(signedDocument, ['user1', 'user2']);
    console.log('Все требуемые подписи присутствуют и валидны');
    } catch (error) {
    console.error('Ошибка валидации:', error.message);
    }
  • Статический метод для преобразования подписанного документа в формат для блокчейна. Преобразует метаданные в строки JSON.

    Parameters

    • document: {
          doc_hash: string;
          hash: string;
          meta: any;
          meta_hash: string;
          signatures: {
              id: number;
              is_valid?: null | boolean;
              meta: any;
              public_key: string;
              signature: string;
              signed_at: string;
              signed_hash: string;
              signer: string;
              signer_certificate?: null | {
                  first_name: string;
                  inn: string;
                  last_name: string;
                  middle_name?: null | string;
                  type: AccountType;
                  username: string;
              } | {
                  first_name: string;
                  last_name: string;
                  middle_name?: null | string;
                  type: AccountType;
                  username: string;
              } | {
                  inn: string;
                  ogrn: string;
                  represented_by: {
                      first_name: string;
                      last_name: string;
                      middle_name: string;
                      position: string;
                  };
                  short_name: string;
                  type: AccountType;
                  username: string;
              };
          }[];
          version: string;
      }

      Подписанный документ для финализации

      • doc_hash: string
      • hash: string
      • meta: any
      • meta_hash: string
      • signatures: {
            id: number;
            is_valid?: null | boolean;
            meta: any;
            public_key: string;
            signature: string;
            signed_at: string;
            signed_hash: string;
            signer: string;
            signer_certificate?: null | {
                first_name: string;
                inn: string;
                last_name: string;
                middle_name?: null | string;
                type: AccountType;
                username: string;
            } | {
                first_name: string;
                last_name: string;
                middle_name?: null | string;
                type: AccountType;
                username: string;
            } | {
                inn: string;
                ogrn: string;
                represented_by: {
                    first_name: string;
                    last_name: string;
                    middle_name: string;
                    position: string;
                };
                short_name: string;
                type: AccountType;
                username: string;
            };
        }[]
      • version: string

    Returns IChainDocument2

    Документ в формате для отправки в блокчейн

  • Статический метод для преобразования документа из формата блокчейна в стандартный формат. Преобразует строки JSON метаданных в объекты.

    Parameters

    • document: IChainDocument2

      Документ в формате блокчейна

    Returns {
        doc_hash: string;
        hash: string;
        meta: any;
        meta_hash: string;
        signatures: {
            id: number;
            is_valid?: null | boolean;
            meta: any;
            public_key: string;
            signature: string;
            signed_at: string;
            signed_hash: string;
            signer: string;
            signer_certificate?: null | {
                first_name: string;
                inn: string;
                last_name: string;
                middle_name?: null | string;
                type: AccountType;
                username: string;
            } | {
                first_name: string;
                last_name: string;
                middle_name?: null | string;
                type: AccountType;
                username: string;
            } | {
                inn: string;
                ogrn: string;
                represented_by: {
                    first_name: string;
                    last_name: string;
                    middle_name: string;
                    position: string;
                };
                short_name: string;
                type: AccountType;
                username: string;
            };
        }[];
        version: string;
    }

    Стандартный подписанный документ

    • doc_hash: string
    • hash: string
    • meta: any
    • meta_hash: string
    • signatures: {
          id: number;
          is_valid?: null | boolean;
          meta: any;
          public_key: string;
          signature: string;
          signed_at: string;
          signed_hash: string;
          signer: string;
          signer_certificate?: null | {
              first_name: string;
              inn: string;
              last_name: string;
              middle_name?: null | string;
              type: AccountType;
              username: string;
          } | {
              first_name: string;
              last_name: string;
              middle_name?: null | string;
              type: AccountType;
              username: string;
          } | {
              inn: string;
              ogrn: string;
              represented_by: {
                  first_name: string;
                  last_name: string;
                  middle_name: string;
                  position: string;
              };
              short_name: string;
              type: AccountType;
              username: string;
          };
      }[]
    • version: string
  • Статический метод для валидации подписанного документа. Проверяет корректность дат, подписей и их порядок.

    Parameters

    • document: {
          doc_hash: string;
          hash: string;
          meta: any;
          meta_hash: string;
          signatures: {
              id: number;
              is_valid?: null | boolean;
              meta: any;
              public_key: string;
              signature: string;
              signed_at: string;
              signed_hash: string;
              signer: string;
              signer_certificate?: null | {
                  first_name: string;
                  inn: string;
                  last_name: string;
                  middle_name?: null | string;
                  type: AccountType;
                  username: string;
              } | {
                  first_name: string;
                  last_name: string;
                  middle_name?: null | string;
                  type: AccountType;
                  username: string;
              } | {
                  inn: string;
                  ogrn: string;
                  represented_by: {
                      first_name: string;
                      last_name: string;
                      middle_name: string;
                      position: string;
                  };
                  short_name: string;
                  type: AccountType;
                  username: string;
              };
          }[];
          version: string;
      }

      Подписанный документ для проверки

      • doc_hash: string
      • hash: string
      • meta: any
      • meta_hash: string
      • signatures: {
            id: number;
            is_valid?: null | boolean;
            meta: any;
            public_key: string;
            signature: string;
            signed_at: string;
            signed_hash: string;
            signer: string;
            signer_certificate?: null | {
                first_name: string;
                inn: string;
                last_name: string;
                middle_name?: null | string;
                type: AccountType;
                username: string;
            } | {
                first_name: string;
                last_name: string;
                middle_name?: null | string;
                type: AccountType;
                username: string;
            } | {
                inn: string;
                ogrn: string;
                represented_by: {
                    first_name: string;
                    last_name: string;
                    middle_name: string;
                    position: string;
                };
                short_name: string;
                type: AccountType;
                username: string;
            };
        }[]
      • version: string

    Returns boolean

    true если документ валиден, иначе false

  • Статический метод для валидации отдельной подписи документа. Проверяет корректность даты и цифровой подписи.

    Parameters

    • signature: {
          id: number;
          is_valid?: null | boolean;
          meta: any;
          public_key: string;
          signature: string;
          signed_at: string;
          signed_hash: string;
          signer: string;
          signer_certificate?: null | {
              first_name: string;
              inn: string;
              last_name: string;
              middle_name?: null | string;
              type: AccountType;
              username: string;
          } | {
              first_name: string;
              last_name: string;
              middle_name?: null | string;
              type: AccountType;
              username: string;
          } | {
              inn: string;
              ogrn: string;
              represented_by: {
                  first_name: string;
                  last_name: string;
                  middle_name: string;
                  position: string;
              };
              short_name: string;
              type: AccountType;
              username: string;
          };
      }

      Информация о подписи для проверки

      • id: number
      • Optional is_valid?: null | boolean
      • meta: any
      • public_key: string
      • signature: string
      • signed_at: string
      • signed_hash: string
      • signer: string
      • Optional signer_certificate?: null | {
            first_name: string;
            inn: string;
            last_name: string;
            middle_name?: null | string;
            type: AccountType;
            username: string;
        } | {
            first_name: string;
            last_name: string;
            middle_name?: null | string;
            type: AccountType;
            username: string;
        } | {
            inn: string;
            ogrn: string;
            represented_by: {
                first_name: string;
                last_name: string;
                middle_name: string;
                position: string;
            };
            short_name: string;
            type: AccountType;
            username: string;
        }

        Сертификат подписанта (сокращенная информация)

    Returns boolean

    true если подпись валидна, иначе false