Altair Cryptography

第0.43版 2016年10月23日
第0.17版 2000年 4月 2日

list al_crypt("generate_keypair", algorithm, key_spec, null);

公開鍵暗号の鍵ペアを生成して返します。
返却値の形式は、(public_key、secret_key)です。
生成に失敗するとnullが返ります。
サポートしているアルゴリズムは以下です。
    "N-RSA" RSAベースの公開鍵暗号です。
            鍵のbit数に制限はありません。
            public_keyの形式は(e, m)、e,m はintegerです。
            secret_keyの形式は(d, m)、d,m はintegerです。
            key_specの形式は(p-hint, q-hint, e-hint)で、
            2個の素数はp-hint近辺とq-hint近辺のものが選ばれます。
            eは、e-hint近辺のものが選ばれます。
            p-hint, q-hint, e-hint はintegerです。

list al_crypt("encrypt_init", algorithm, key, block);

暗号化を行うためのコンテキストを初期化して返します。
初期化に失敗するとnullが返ります。
blockは、平文をこの大きさのブロックに分割して暗号化するブロックサイズを指定するintegerです。
サポートしているアルゴリズムは以下です。
    "N-RSA"    RSAベースの公開鍵暗号です。
               keyの形式は(k, m)、k,mの形式はintegerです。
               blockはmの大きさ以下でなければなりません。

    "N-DES"    独自の共通鍵暗号です。
               鍵のbit数に制限はありません。
               keyの形式はbinaryです。
               keyのサイズは2のn乗でなければなりません。
               またblockはkeyサイズ以下の2のn乗でなければなりません。

void al_crypt("encrypt", context, src, dst);

平文を暗号化します。
srcの形式は(binary, index, size)です。

RSAベースの公開鍵暗号の場合:
sizeはencrypt_initのblockで割りきれなければなりません。
dstの形式は(binary, index)で、(size / block * mの大きさ) の余裕がなければなりません。

独自共通鍵暗号の場合:
sizeはblockと同じにします。

void al_crypt("encrypt_final", context, null, null);

コンテキストを開放し、暗号化を終了します。

void al_crypt("simple_encrypt", key, infile, outfile);

独自共通鍵暗号で暗号化したファイルを作成します。
keyはbinaryまたはstringの共通鍵、infile, outfile はstring型のファイル名です。

list al_crypt("decrypt_init", algorithm, key, block);

復号化を行うためのコンテキストを初期化して返します。
初期化に失敗するとnullが返ります。
blockは、復号化するデータのブロックの単位を指定します。
サポートしているアルゴリズムは以下です。
    "N-RSA"    RSAベースの公開鍵暗号です。
               keyの形式は(k, m)、k,mの形式はintegerです。

    "N-DES"    独自の共通鍵暗号です。
               keyはdecrypt_initの場合と同じです。

binary al_crypt("decrypt", context, src, dst);

暗号文を復号化した平文を返します。
srcの形式は(binary, index, size)です。

RSAベースの公開鍵暗号の場合:
sizeはpublic_key (pk,m), secret_key (sk,m)のmの大きさで割りきれなければなりません。
dstの形式は(binary, index)で、(size / mの大きさ * decrypt_initのblock) の余裕が
なければなりません。

独自共通鍵暗号の場合:
sizeはblockと同じにします。

void al_crypt("decrypt_final", context, null, null);

コンテキストを開放し、復号化を終了します。

void al_crypt("simple_decrypt", key, infile, outfile);

独自共通鍵暗号で暗号化されたファイルの複合化ファイルを作成します。 keyはbinaryまたはstringの共通鍵、infile, outfile はstring型のファイル名です。

list al_crypt("digest_init", algorithm, null, null);

メッセージダイジェストを計算するコンテキストを初期化して返します。
サポートしているアルゴリズムは、"MD5"、"SHA-1"です。

void al_crypt("digest_update", context, data, null);

メッセージを分割した各ブロックdataについて
メッセージダイジェストコンテキストを更新します。
dataの形式は(binary, index, size)です。

binary al_crypt("digest_final", context, null, null);

メッセージダイジェストコンテキストを開放するとともに、
計算されたメッセージダイジェストをメッセージダイジェストコンテキストから
取りだして返します。
"MD5"のダイジェストの長さは16バイト、
"SHA-1"のダイジェストの長さは20バイトです。

any al_crypt("smime_encrypt", in , out, files);

SMIMEの暗号化を行います。
成功すると非nullが返ります。
filesの形式は、(cipher, cert, null, null) です。
cipherで有効なものは以下です。
   "des3"
   "des"
   "rc2-40" 
   "rc2-64"
   "rc2-128"
変数inの形式は、ファイル名またはbinaryまたは(binary, index, size)です。
変数outの形式は、ファイル名またはnullです。nullの場合はbinaryが返ります。

any al_crypt("smime_decyrypt", in , out, files);

SMIMEの暗号の復号化を行います。
成功すると非nullが返ります。
filesの形式は、(null, cert, key, null) です。

変数inの形式は、ファイル名またはbinaryまたは(binary, index, size)です。
変数outの形式は、ファイル名またはnullです。nullの場合はbinaryが返ります。

any al_crypt("smime_sign", in , out, files);

SMIMEの署名を行います。
成功すると非nullが返ります。
filesの形式は、(null, cert, key, null) です。

変数inの形式は、ファイル名またはbinaryまたは(binary, index, size)です。
変数outの形式は、ファイル名またはnullです。nullの場合はbinaryが返ります。

any al_crypt("smime_verify", in , null, files);

SMIMEの署名検証を行います。
成功すると非nullが返ります。
filesの形式は、(null, cert, null, caCert) です。

変数inの形式は、ファイル名またはbinaryまたは(binary, index, size)です。

list al_crypt("mime_headers_read", in, null, null);

Mimeヘッダーを読み込み内部データを作成して返します。
成功すると非nullが返ります。
戻り値の形式は、(headers, size)です。
headersの形式は、()-/header_name/=>header_value-/param_name/=>param_value で
sizeは "\r\n\r\n"までの文字数になります。

変数inの形式は、ファイル名またはbinaryまたは(binary, index, size)です。

list al_crypt("mime_headers_write", headers, out, null);

内部データdataからMimeヘッダーのテキストを作成します。
成功すると非nullが返ります。
headersの形式は、()-/header_name/=>header_value-/param_name/=>param_value です。

変数outの形式は、ファイル名またはnullです。nullの場合はbinaryが返ります。

list al_crypt("remove_header", headers, type, null);

binary型のインターネットヘッダーからタイプが文字列typeのラインをすべて除いた
binary型のインターネットヘッダーを返します。
例:
    headers = al_crypt("remove_header", headers, "Proxy-Connection", null);

list al_crypt("add_header", headers, line, null);

binary型のインターネットヘッダーに文字列lineのラインの行を追加した
binary型のインターネットヘッダーを返します。
例:
    headers = al_crypt("remove_header", headers, "Connection: Close\r\n", null);

list al_crypt("get_header", headers, type, null);

binary型のインターネットヘッダーから最初に見つかったタイプが文字列typeの値を文字列で返します。
タイプが文字列typeのラインが見つからなければnullが返ります。
例:
    length = al_crypt("remove_header", headers, "Content-Length", null);

list al_crypt("mime_multipart_read", in, headers, null);

MimeMultipartを読み込み内部データを作成します。
成功すると非nullが返ります。
headersは、 *-/"Content-Type"/->*-/"boundary"/->bounary値 を含んでいなければなりません。
戻り値の形式は、(headers)-/-/=>binary です。

変数inの形式は、ファイル名またはbinaryまたは(binary, index, size)です。

list al_crypt("mime_multipart_write", data, out, null);

Multipartの内部データを書き出します。
成功すると非nullが返ります。
dataは、 (headers)-/-/=>binary|string で、
headersは、*-/"Content-Type"/->*-/"boundary"/->bounary値 を含んでいなければなりません。
境界の値はをheadersのContent-Typeのboudaryの値になります。

変数outの形式は、ファイル名またはnullです。nullの場合はbinaryが返ります。

list al_crypt("base64_encode", in, out, null);

base64のエンコードを行います。
成功すると非nullが返ります。

変数inの形式は、ファイル名またはbinaryまたは(binary, index, size)です。
変数outの形式は、ファイル名またはnullです。nullの場合はbinaryが返ります。

list al_crypt("base64_decode", in, out, null);

base64のデコードを行います。
成功すると非nullが返ります。

変数inの形式は、ファイル名またはbinaryまたは(binary, index, size)です。
変数outの形式は、ファイル名またはnullです。nullの場合はbinaryが返ります。

string al_crypt("random", n, null, null);

0-9とA-Zの文字列だけで構成されたn桁のランダムな文字列を返します。
nはintegerです。