@coopenomics/sdk
    Preparing search index...

    Class Document

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

    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");
    Index

    Constructors

    Methods

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

      Parameters

      • document: IGeneratedDocument

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

      • account: string

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

      • signatureId: number = 1

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

      • OptionalexistingSignedDocuments: {
            doc_hash: string;
            hash: string;
            meta: any;
            meta_hash: string;
            signatures: {
                id: number;
                is_valid?: boolean | null;
                meta: any;
                public_key: string;
                signature: string;
                signed_at: string;
                signed_hash: string;
                signer: string;
                signer_certificate?:
                    | {
                        first_name: string;
                        inn: string;
                        last_name: string;
                        middle_name?: string
                        | null;
                        type: AccountType;
                        username: string;
                    }
                    | {
                        first_name: string;
                        last_name: string;
                        middle_name?: string
                        | null;
                        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;
                    }
                    | null;
            }[];
            version: string;
        }[]

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

      Returns Promise<
          {
              doc_hash: string;
              hash: string;
              meta: any;
              meta_hash: string;
              signatures: {
                  id: number;
                  is_valid?: boolean
                  | null;
                  meta: any;
                  public_key: string;
                  signature: string;
                  signed_at: string;
                  signed_hash: string;
                  signer: string;
                  signer_certificate?:
                      | {
                          first_name: string;
                          inn: string;
                          last_name: string;
                          middle_name?: string
                          | null;
                          type: AccountType;
                          username: string;
                      }
                      | {
                          first_name: string;
                          last_name: string;
                          middle_name?: string
                          | null;
                          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;
                      }
                      | null;
              }[];
              version: string;
          },
      >

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

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

      Parameters

      • document: {
            doc_hash: string;
            hash: string;
            meta: any;
            meta_hash: string;
            signatures: {
                id: number;
                is_valid?: boolean | null;
                meta: any;
                public_key: string;
                signature: string;
                signed_at: string;
                signed_hash: string;
                signer: string;
                signer_certificate?:
                    | {
                        first_name: string;
                        inn: string;
                        last_name: string;
                        middle_name?: string
                        | null;
                        type: AccountType;
                        username: string;
                    }
                    | {
                        first_name: string;
                        last_name: string;
                        middle_name?: string
                        | null;
                        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;
                    }
                    | null;
            }[];
            version: string;
        }

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

      • requiredSigners: string[]

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

      Returns void

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

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

      Parameters

      • meta: any
      • documentHash: string
      • signed_at: string
      • version: string = '1.0.0'

      Returns Promise<{ hash: string; meta_hash: string; signed_hash: string }>

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

      Parameters

      • signedDocument: {
            doc_hash: string;
            hash: string;
            meta: any;
            meta_hash: string;
            signatures: {
                id: number;
                is_valid?: boolean | null;
                meta: any;
                public_key: string;
                signature: string;
                signed_at: string;
                signed_hash: string;
                signer: string;
                signer_certificate?:
                    | {
                        first_name: string;
                        inn: string;
                        last_name: string;
                        middle_name?: string
                        | null;
                        type: AccountType;
                        username: string;
                    }
                    | {
                        first_name: string;
                        last_name: string;
                        middle_name?: string
                        | null;
                        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;
                    }
                    | null;
            }[];
            version: string;
        }

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

      • generatedDocument: IGeneratedDocument

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

      • version: string = '1.0.0'

        Версия алгоритма расчета хэшей (по умолчанию '1.0.0')

      Returns Promise<
          {
              differences: Record<string, { actual: string; expected: string }>;
              isValid: boolean;
          },
      >

      Объект с результатами сверки по хэшам

      const signedDoc: ISignedDocument = { ... };
      const generatedDoc: IGeneratedDocument = { ... };
      const comparison = await Document.compareDocuments(signedDoc, generatedDoc);
      if (comparison.isValid) {
      console.log('Документы совпадают');
      } else {
      console.log('Различия:', comparison.differences);
      }
    • Статический метод для создания не подписанной версии документа из сгенерированного документа. Вычисляет все необходимые хэши, но не добавляет подписи. Полезно для сверки и сравнения документов.

      Parameters

      • document: IGeneratedDocument

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

      • version: string = '1.0.0'

        Версия алгоритма расчета хэшей (по умолчанию '1.0.0')

      Returns Promise<
          {
              doc_hash: string;
              hash: string;
              meta: any;
              meta_hash: string;
              signatures: {
                  id: number;
                  is_valid?: boolean
                  | null;
                  meta: any;
                  public_key: string;
                  signature: string;
                  signed_at: string;
                  signed_hash: string;
                  signer: string;
                  signer_certificate?:
                      | {
                          first_name: string;
                          inn: string;
                          last_name: string;
                          middle_name?: string
                          | null;
                          type: AccountType;
                          username: string;
                      }
                      | {
                          first_name: string;
                          last_name: string;
                          middle_name?: string
                          | null;
                          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;
                      }
                      | null;
              }[];
              version: string;
          },
      >

      Документ в формате ISignedDocument без подписей

      const generatedDoc: IGeneratedDocument = { ... };
      const unsignedDoc = Document.createUnsignedDocument(generatedDoc);
      console.log(unsignedDoc); // Документ без подписей для сверки
    • Статический метод для преобразования подписанного документа в формат для блокчейна. Преобразует метаданные в строки JSON.

      Parameters

      • document: {
            doc_hash: string;
            hash: string;
            meta: any;
            meta_hash: string;
            signatures: {
                id: number;
                is_valid?: boolean | null;
                meta: any;
                public_key: string;
                signature: string;
                signed_at: string;
                signed_hash: string;
                signer: string;
                signer_certificate?:
                    | {
                        first_name: string;
                        inn: string;
                        last_name: string;
                        middle_name?: string
                        | null;
                        type: AccountType;
                        username: string;
                    }
                    | {
                        first_name: string;
                        last_name: string;
                        middle_name?: string
                        | null;
                        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;
                    }
                    | null;
            }[];
            version: string;
        }

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

      Returns IChainDocument2

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

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

      Parameters

      • document: IChainDocument2

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

      Returns {
          doc_hash: string;
          hash: string;
          meta: any;
          meta_hash: string;
          signatures: {
              id: number;
              is_valid?: boolean | null;
              meta: any;
              public_key: string;
              signature: string;
              signed_at: string;
              signed_hash: string;
              signer: string;
              signer_certificate?:
                  | {
                      first_name: string;
                      inn: string;
                      last_name: string;
                      middle_name?: string
                      | null;
                      type: AccountType;
                      username: string;
                  }
                  | {
                      first_name: string;
                      last_name: string;
                      middle_name?: string
                      | null;
                      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;
                  }
                  | null;
          }[];
          version: string;
      }

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

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

      Parameters

      • document: {
            doc_hash: string;
            hash: string;
            meta: any;
            meta_hash: string;
            signatures: {
                id: number;
                is_valid?: boolean | null;
                meta: any;
                public_key: string;
                signature: string;
                signed_at: string;
                signed_hash: string;
                signer: string;
                signer_certificate?:
                    | {
                        first_name: string;
                        inn: string;
                        last_name: string;
                        middle_name?: string
                        | null;
                        type: AccountType;
                        username: string;
                    }
                    | {
                        first_name: string;
                        last_name: string;
                        middle_name?: string
                        | null;
                        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;
                    }
                    | null;
            }[];
            version: string;
        }

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

      Returns boolean

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

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

      Parameters

      • signature: {
            id: number;
            is_valid?: boolean | null;
            meta: any;
            public_key: string;
            signature: string;
            signed_at: string;
            signed_hash: string;
            signer: string;
            signer_certificate?:
                | {
                    first_name: string;
                    inn: string;
                    last_name: string;
                    middle_name?: string
                    | null;
                    type: AccountType;
                    username: string;
                }
                | {
                    first_name: string;
                    last_name: string;
                    middle_name?: string
                    | null;
                    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;
                }
                | null;
        }

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

        • id: number
        • Optionalis_valid?: boolean | null
        • meta: any
        • public_key: string
        • signature: string
        • signed_at: string
        • signed_hash: string
        • signer: string
        • Optionalsigner_certificate?:
              | {
                  first_name: string;
                  inn: string;
                  last_name: string;
                  middle_name?: string
                  | null;
                  type: AccountType;
                  username: string;
              }
              | {
                  first_name: string;
                  last_name: string;
                  middle_name?: string
                  | null;
                  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;
              }
              | null

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

      Returns boolean

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